Phonetic typing in more languages
Roman letters in, native script out, for Marathi, Gujarati, Punjabi, Odia, Assamese, Tamil, Telugu, Kannada, Malayalam, Persian and Arabic.
Bangla has Avro, Hindi has Hindi phonetic and Urdu has Urdu phonetic. Eleven more languages now have the same kind of layout: a QWERTY grid where you type a word the way you’d write it in a chat, and the keyboard writes it in the language’s own script. Type vanakkam on Tamil phonetic and you get Tamil; type el7amdulillah on Arabic phonetic and you get الحمدلله.
| Language | Layout | You type | You get |
|---|---|---|---|
| Marathi | Marathi phonetic | tumhi, tyala | तुम्ही, त्याला |
| Gujarati | Gujarati phonetic | tame, chhu | તમે, છું |
| Punjabi | Punjabi phonetic | mainu, ohda | ਮੈਨੂੰ, ਉਹਦਾ |
| Odia | Odia phonetic | tume, kemiti | ତୁମେ, କେମିତି |
| Assamese | Assamese phonetic | tumar, xokolu | তোমাৰ, সকলো |
| Tamil | Tamil phonetic | naan, neenga | நான், நீங்க |
| Telugu | Telugu phonetic | nenu, meeru | నేను, మీరు |
| Kannada | Kannada phonetic | naanu, namma | ನಾನು, ನಮ್ಮ |
| Malayalam | Malayalam phonetic | njaan, ningal | ഞാൻ, നിങ്ങൾ |
| Persian | Persian phonetic | kheili, mikonam | خیلی, میکنم |
| Arabic | Arabic phonetic | 3arabi, kayf | عربي, كيف |
Turning one on
Section titled “Turning one on”Add the language, open its screen, and turn on its phonetic card under Layouts. The layout the language already had stays the default, so adding a language still gives you the keyboard you’d expect for it; the phonetic one is a choice. Then download the language’s word list from the Dictionary row on the same screen. None of these lists ships inside the app, and the next section explains why the phonetic layout cares more than most.
Every key is where it is on the English layout. What you type shows up in the native script in the composing text straight away, and the space commits it. The keys stay left-to-right on Persian and Arabic while the text runs right to left, as on Urdu phonetic.
How a word is read
Section titled “How a word is read”Three layers, the same three Hindi and Urdu phonetic use, in this order:
- A list of known spellings, a few hundred words for each language: the commonest words whose roman spelling doesn’t carry enough to get the script right, chat shorthand, and English loanwords written in the script (
school,phone,doctor). A spelling on the list is settled there, and it shows in the composing text the moment you finish typing it. - The language’s word list, if you’ve downloaded it. What you typed and every word on the list are reduced to a loose key that forgets what roman spelling never says (vowel length, dental against retroflex, aspiration, the letters a script keeps for its loanwords) and keeps those details only to rank the candidates. With the list installed, the right word comes first for most chat spellings: Marathi 90%, Gujarati 82%, Telugu 78%, Punjabi 75%, Kannada 60%, Malayalam 56%, Odia 54%, Tamil 48% (measured on about 200 everyday chat spellings per language).
- The rules alone, for every word that’s in neither. They make the likelier guess, and the strip offers the other readings next to it, such as the same spelling with a vowel read long or with a different closing vowel, so you can tap the one you meant.
Folding a whole word list into those keys is work, and a phone that does it at every keyboard start spends tens of megabytes on it. So the data repository does it once, ahead of time, for every language here and for Hindi and Urdu, and publishes the result beside the word list (<code>_phonetic_v1r1.wmpi.gz, 1 to 5 MB). The keyboard fetches it right after the word list and reads it in place from storage, so it costs almost no memory. Only lists you imported yourself are still folded on the phone. Until the file is there (no connection, or the build with no internet), the keyboard folds the downloaded list itself, as it always did. You can import the file instead: it is in the language’s language pack, and Offline imports installs it.
The rules alone get about half of everyday words exactly right: Tamil 66%, Kannada and Malayalam 60%, Marathi 57%, Punjabi 57%, Gujarati 55%, Telugu 53%, Odia 42%, Persian 67%, Arabic 46%. The rest are lexical facts no rule can know, which is what the first two layers are for.
In the first two layers the words before count too: one spelling can stand for several words, and the one or two you typed just before move up the reading that usually follows them, on the strip and for what space writes. The evidence is your own typing (every word pair you commit is remembered) and the language’s word-pair data, which all eleven have as a 1 to 2 MB download in the language’s Dictionaries group, next to the word list. Without it, it is your own habits only, and those start empty. A known spelling only ever trades places with another known spelling of the same buffer. WM Keyboard Languages & layouts your language Spellings Use the words before turns it off.
What each language does
Section titled “What each language does”Marathi, Gujarati and Punjabi
Section titled “Marathi, Gujarati and Punjabi”These follow Hindi phonetic’s model: you write the word the way it sounds, the inherent vowel drops in speech, and a final vowel is long. Each language has its own grammatical endings the rules keep clear of a conjunct.
- Marathi reads
zandzhas झ (maza,tuza),Las ळ, and knows its own postpositions and verb endings:tyalaत्याला,karnarकरणार,karunकरून,gharachyaघराच्या,mitrannoमित्रांनो. - Gujarati reads
zas ઝ andxas ક્ષ (Axar,Laxmi), writes the neuter and infinitive endings with their nasal (huહું,karvuકરવું,kartuકરતું), and the locative too (gharmaઘરમાં). - Punjabi is written in Gurmukhi, which has almost no conjuncts: a doubled consonant is the addak (
pakkaਪੱਕਾ), a nasal is a tippi or a bindi by the vowel before it (mainuਮੈਨੂੰ,tonਤੋਂ), and a y-glide is a vowel carrier rather than ਯ (pyarਪਿਆਰ,gyaਗਿਆ,duniyaਦੁਨੀਆ).
Odia, Tamil, Telugu, Kannada and Malayalam
Section titled “Odia, Tamil, Telugu, Kannada and Malayalam”These languages pronounce every vowel, so people type every vowel: amma, nanna, avan. A consonant straight after a consonant is a conjunct, and a word-final consonant takes a virama (Tamil’s pulli, Malayalam’s chillu).
- Short and long e and o are separate letters in the four Dravidian languages. Type
EorOfor the long one if you want to be exact; otherwise each language’s rules pick the likelier one from context (nenuనేను,bekuಬೇಕು). - Tamil has no separate voiced or aspirated letters, so
g d bandk t pwrite the same Tamil letter.zhis ழ,Lள,Rorrrற,ndrன்ற (nandriநன்றி), and a single stop between vowels is doubled the way Tamil writes it (irukuஇருக்கு). - Malayalam follows the Mozhi conventions people already use:
tട,thത,dഡ,dhദ,ntന്റ (enteഎന്റെ),ngങ്ങ,njഞ,zhഴ, and a finalmis ം. - Telugu reads
thanddhas the plain dentals (thammuduతమ్ముడు), and a finalmas ం (manamమనం). - Kannada reads
thas ತ and knows its plural-galuand the long first vowels of its commonest words (bekuಬೇಕು,heluಹೇಳು). - Odia writes ଯ where a word opens and ୟ elsewhere, ୱ for
w, and spells its nasal clusters as conjuncts (rangaରଙ୍ଗ,panchaପଞ୍ଚ).
Assamese
Section titled “Assamese”Assamese uses Avro’s rules, because people romanize it the way they romanize Bangla, with three changes: every র is ৰ, an x is the Assamese স (xokolu সকলো, axom অসম), and a w gliding into a vowel is ৱ.
Persian
Section titled “Persian”kh is خ, ch چ, zh ژ, gh ق (Gh for غ). Short a, e and o aren’t written inside a word, a final e is the silent ه (khoone خونه), and i is always the long ی. The verb prefixes می and نمی are written with the zero-width non-joiner the language uses (mikonam میکنم, nemitoonam نمیتونم).
Arabic
Section titled “Arabic”Arabizi works, digits and all: 2 ق, 3 ع, 3' غ, 5 خ, 6 ط, 6' ظ, 7 ح, 8 ق, 9 ص, 9' ض. A number you type on its own stays a number. al, el and il before a consonant are the article ال (elyoum اليوم, essalam السلام), g is ج, ch is ش, and a closing a is ا with ة and ى offered beside it. 2 is ق rather than the hamza of most charts, because the people who type 2 most mean the glottal stop their dialect says for ق (2albi قلبي); the real hamza words are in the known-spellings list.
Glide typing
Section titled “Glide typing”Swiping over a phonetic layout draws a romanization, so the stroke is decoded against romanized spellings and turned into the script, as on Avro. Marathi, Gujarati, Punjabi, Tamil, Telugu, Kannada, Malayalam and Arabic each have a romanized word list in the language catalogue that widens what a swipe can find. See Glide typing.
Switching mid-word
Section titled “Switching mid-word”If you notice halfway through a word that you’re still on your Latin keyboard, switch to the phonetic layout: with Carry the word over on (the default), what you already typed is converted too. See Switching languages.
Details & edge cases
Section titled “Details & edge cases”These are new, and every table is a draft. The rules, the known-spellings lists and the loanword lists were written and measured against each language’s word list and a hand-written set of everyday chat spellings, not reviewed by native speakers. If a common word comes out wrong with the word list installed, open an issue and name the word and the spelling you typed.
Some word lists are better than others. Tamil’s has no frequencies at all, so the keyboard breaks ties by how close a candidate is to what the rules spell. Malayalam’s comes from subtitles and Gujarati’s, Marathi’s and Kannada’s from encyclopedic text, so spoken forms are thinner there, and the known-spellings lists lean on chat forms for that reason.
The phonetic machinery only loads if the layout is on. A language with just its script layout enabled builds none of it.
There are no selection-bar conversion chips for these languages yet. Bangla and Hindi have chips to convert selected text between roman and native script; these languages don’t.
