Thirty languages, each with a frequency-ranked dictionary and a word-pair table inside the package, so there is nothing to download and no server that learns which language you speak. Prediction, autocorrect and swipe work in all of them, and you can type in two at once.
The thirty
| Language | Native name | Also known here as |
|---|---|---|
| English | English | English keyboard |
| Afrikaans | Afrikaans | Afrikaans keyboard |
| Basque | Euskara | Basque keyboard |
| Catalan | Català | Catalan keyboard |
| Croatian | Hrvatski | Croatian keyboard |
| Czech | Čeština | Czech keyboard |
| Danish | Dansk | Danish keyboard |
| Dutch | Nederlands | Dutch keyboard |
| Estonian | Eesti | Estonian keyboard |
| Filipino | Filipino | Tagalog keyboard |
| Finnish | Suomi | Finnish keyboard |
| French | Français | French keyboard |
| Galician | Galego | Galician keyboard |
| German | Deutsch | German keyboard |
| Hungarian | Magyar | Hungarian keyboard |
| Icelandic | Íslenska | Icelandic keyboard |
| Indonesian | Bahasa Indonesia | Indonesian keyboard |
| Italian | Italiano | Italian keyboard |
| Latvian | Latviešu | Latvian keyboard |
| Lithuanian | Lietuvių | Lithuanian keyboard |
| Malay | Bahasa Melayu | Malay keyboard |
| Norwegian | Norsk | Norwegian keyboard |
| Polish | Polski | Polish keyboard |
| Portuguese | Português | Portuguese keyboard |
| Romanian | Română | Romanian keyboard |
| Slovak | Slovenčina | Slovak keyboard |
| Slovenian | Slovenščina | Slovenian keyboard |
| Spanish | Español | Spanish keyboard |
| Swedish | Svenska | Swedish keyboard |
| Turkish | Türkçe | Turkish keyboard |
Each language brings its own accented letters to the long-press popups when it is your primary or your "also type in" language, and suggests the layout it naturally types on: QWERTZ for Czech and Croatian, the Spanish QWERTY variant for Catalan and Basque, the Nordic layout for Danish and Norwegian. The language key cycles through whichever of the thirty you have chosen.
What is in a dictionary
Two plain-text files: a word list ranked by frequency, and a word-pair list. Twenty-seven of the thirty carry exactly 25,000 words and 30,000 pairs. English carries 25,008 and 27,434. Tagalog carries 9,877 and 5,012, Afrikaans 17,576 and 15,494, because their source lists are shorter and were not padded. English is packed from Peter Norvig's web n-gram counts; the other twenty-nine from the MIT-licensed hermitdave/FrequencyWords lists, derived from the OpenSubtitles 2018 corpus. All thirty together are about 6.5 megabytes compressed in the package, and the engine opens only the one or two you have selected. The build log.
Two at once
Since 3.13.0 the engine ranks candidates across two active languages together, so a Spanish speaker texting in English does not have to switch to type "mañana". Learned words are kept per language, in app-private storage on the phone, and never uploaded because nothing is.
Voice in these languages
Dictation tells Android's recogniser which language you are typing in. Whether the phone has an offline model for that language is the system's business, not the keyboard's: on Android 12 and later, FrankenKeys only uses the on-device recogniser, and if it reports the language unavailable, dictation stops. The voice page.
The languages it does not have
Arabic, Vietnamese, Hindi, Chinese, Japanese, Korean, Russian, Greek, Hebrew, Thai, and every other non-Latin script. The thirty above are the Latin-script languages for which a clean public frequency corpus and a testable layout existed. Non-Latin scripts need an input method, not only a dictionary, and shipping a bad one would be worse than shipping none. If your language is on this list, FrankenKeys is not yet the keyboard for you, and this page will change before the listing does.
Languages
30
Words per language
25000 for 27 of 30
Word pairs per language
30000 for 27 of 30
Downloads required
None
The thirtieth language cost the same as the second: two text files and a layout. A thirty-first Latin-script language is a pull of a public corpus away.