simple Thai typing and transliteration

Goals of TypeThai

Click a goal for more details.

Basic Conversion

Status: Complete

The main goal is, obviously, to convert between romanized Thai and Thai alphabet. So converting 'k' to '', '', '', or '', regardless of context. This basic task has been completed, but it's not as pleasant an experience as it could be. That's why we have more goals, below.

List of Candidates

Status: Complete

In the cases where there are multiple correct Thai words that all correspond to a single (or multiple) English words, we want to provide a list of options. For example when you type 'krap' you might want 'กรับ' or 'ครับ' or maybe something else. Who am I to dictate what you are trying to type? When you type, you are given the option to choose which Thai spelling is appropriate for what you've typed.


Status: Complete

Tones are currently supported. If the word can be found in the program's internal dictionary you do not need to write with tones.

However, if you want a more accurate result, we encourage using tones. To write tones you can use ',' for 'mai eek' (อ่), '>' for 'mai too' (อ้), "'" for 'mai dtrii' (อ๊), and '<' for 'mai jat-da-wa' (อ๋). A variety of other special symbols and characters are also supported, check the documentation page for more details!

Automatic Reduplication Recognition

Status: Partially Complete / In Development

Reduplication is a process where a word or part of a word (eg: syllable) is repeated to add some grammatical meaning. In Thai the character '' is used to avoid re-writing reduplicated syllables for words like 'สิ่งใดๆ' (singdaidai - 'anything') where the syllable 'dai' is repeated.

Currently, you can type an upper-case 'R' to tell TypeThai that you want to use the reduplication character, but it would be easier for the program to recognize it automatically so you can just type what you hear.

Vowel Circumfixation

Status: Complete

In Thai, vowels can go before a consonant, above, below or after despite being pronounced after that consonant. For example, 'ไป' ('bpai' - 'to go') is spelled in Thai with the vowel () before the consonant. In english, on the other hand, the vowel comes after.

Solving this problem is non-trivial, but, we've done it!

Intelligent Guessing and Sorting

Status: Planned

Currently your choices are picked from the dictionary, based upon what you typed, and based on a very loose guess by the program about what it thinks you are trying to say. Then, all the results are ordered randomly and shown to your as options.

Not so helpful, eh?

The plan is to switch over to weighted FSTs (WFST) rather than the current simple FSTs which should provide more options for the ranking of candidates. We're just looking for a good WFST framework that will mesh well with the current work

Word Parsing

Status: Planned

At the moment, you need to type one word at a time, and then transliterate it to Thai. It would be nice to be able to type a whole sentence and then hit enter and see it all separated into words and transliterated.

This depends on the quality of the guessing that the program can do as well as on the ability to split up a sentence into words (since Thai doesn't use spaces to mark the ends of words).

This one might take a while.

Dictionary Integration

Status: Planned

I think it would be cool to have a dictionary included that showed you the definitions of different words you are typing to help make sure you aren't making silly mistakes.

Windows and UNIX Compatibility

Status: Planned

I haven't finished writing this for Mac OS yet, but would like help from experienced UNIX or Windows developers. If you're interested contact me. Otherwise, this may take some time.

Preference Pane

Status: Planned

I want to have a preference pane to configure options such as transliteration scheme (what letter combinations convert to what Thai letters), dictionary options, update options, etc...


Status: Partially Complete / In Development

Auto-update has been tentatively added. Please let me know if you have any trouble with it.

User Dictionary

Status: Planned

The program should save your past choices and use them to help rank future typing. It would also be very helpful if words that weren't in the base dictionary were sent to a central server to be added to the main program in future updates. This option could be enabled/disabled in the preferences.

Copyright © 2019 by Dougal Graham. All Rights Reserved.