Languages
Every group and row on the Languages screen: enabled languages, Add language, and each language's own screen.
The Languages screen is where you enable languages and layouts, reorder the switch ring, and open each language’s own screen for its numeral system, secondary suggestions, dictionary, and (for a few) CJK options. This page walks every group and row on it in order. For how switching and adding actually feel to use, see Languages overview and Switching languages; this page cross-links to both throughout instead of repeating them.
Your languages and adding one
Section titled “Your languages and adding one”The Your languages group lists each enabled language once, in switch order, one row per entry in enabledLanguages. A row’s subtitle is a comma-joined list of that language’s currently-enabled layout names (Bengali, for example, reads “Avro phonetic, প্রভাত (Probhat), জাতীয় (National)” once all three are on); if only one layout is enabled the subtitle is just that layout’s name, and tapping any row opens that language’s own screen (below).
A trailing Add language row always closes the group, subtitled “Type in any of 352 languages” (that’s the size of the whole catalogue, not just what’s installed).
Immediately below it, a Suggested for you group offers up to four languages worked out from the device: every language in your phone’s own language list first, then languages widely typed in your region. Four things can say what your region is, and only the first of them with anything to offer is read: the SIM’s country, the network’s country, your phone’s time zone, and last the region attached to your locale. Each row’s subtitle is the reason (“One of your phone’s languages”, or “Widely typed in (country)”), and tapping one asks about its data (below), then enables its first layout and opens its detail screen, exactly as the search results do. Languages already enabled never appear, so the group empties out as you add them and disappears when nothing is left to suggest. The narrative version, including what is deliberately not read, is on Languages overview.
Below that sits a Language data group with one toggle, Download data automatically (WM KeyboardLanguagesLanguage dataDownload data automatically, default on). It’s the master switch over every download the keyboard would otherwise start by itself: emoji keyword packs, so emoji search answers in your own language, and word-pair data, which sharpens predictions. Both are small, in the hundreds of kilobytes to about a megabyte. Word lists are never in that set, whichever way the toggle is set, because those run to megabytes and stay a deliberate tap. Turn it off and nothing at all is fetched until you ask for it, either on the prompt below or from a language’s own screen.
Adding a language, from anywhere (the search list, Suggested for you, or the setup wizard), first asks Download language data?, naming the language and roughly what the download costs. Three answers: Download fetches its word list, emoji keywords and word-pair data and adds the language; Not now adds the language and downloads nothing; Cancel backs out of the whole thing, so a mis-tap on a long list costs nothing. A language with nothing to download skips the question entirely.
Tapping Add language opens a full-screen search:
- The search box matches (case-insensitively, as a substring) against a language’s endonym, English name, id, and locale tag, so “german”, “deutsch”, “de”, and “de-DE” all find German.
- An empty query lists the catalogue in registry order, not alphabetically: English first, then Bengali, then French, and so on. Don’t assume the unfiltered list is A-to-Z; search to jump to a specific language instead of scrolling. The same Suggested for you group appears here too, above the catalogue, and only while the query is empty, so it gets out of the way as soon as you start typing.
- Each row’s subtitle is the language’s script name (for example “Latin” or “Bengali”) plus ” · dictionary included” for the two languages that bundle one (English and Bengali are the only ones). A row already added shows “Added” next to its chevron, which stays put either way.
- Tapping an unadded language asks the Download language data? question first, then (on Download or Not now) enables its first layout and opens that language’s detail screen. Tapping an already-added one just opens its detail screen; it doesn’t re-enable anything.
Further down the screen (after Switch order, covered next, if it’s showing) sits a Your layouts group, listing toggles for your own custom key layouts specifically: layouts you’ve built or copied on the Key layouts screen, not an edited copy of a shipped layout (those stay attached to their original language instead of appearing twice). On a fresh install this group has no toggles at all, since no custom layouts exist yet. It’s left with just its trailing Key layouts row, which opens WM KeyboardSettingsKey layouts, documented in full on Custom layouts & the layout editor. Its subtitle changes once you’ve built something: “Design your own key grid, or start from a built-in one” before, “Edit, add and remove layouts” after.
Reordering, per-app memory, and the system switcher
Section titled “Reordering, per-app memory, and the system switcher”A Switch order group appears only once more than one layout is enabled, which is true on most fresh installs, since the starting set is seeded from your phone’s language list plus English, but not on a phone set to English only, which starts with QWERTY alone and no Switch order group at all. Drag to reorder the raw layout list; it reorders every enabled layout, not language, so two English layouts keep independent slots in the ring even though they’re both “English.” This is the same list the 🌐 key and spacebar swipe cycle through; full behavior is on Switching languages.
Two more groups sit below Your layouts:
- Per-app language, one toggle: Remember language per app (WM KeyboardLanguagesPer-app languageRemember language per app, default off). Reopening a text field in an app you’ve explicitly switched languages in restores that layout; apps you haven’t switched in follow your last-used one globally. A field that forces Latin input (a password box) or advertises its own language still overrides this.
- System language switcher, whose first toggle is List languages in the Android switcher (WM KeyboardLanguagesSystem language switcherList languages in the Android switcher, default off). On, it registers every enabled layout as an Android input-method subtype, so the system’s “Choose input method” sheet lists and can switch each one. It ships off because that sheet draws a subtype’s label exactly where it draws the name of a keyboard with no subtypes, so one language name in that row just reads as the keyboard’s name. Turn it on and two more rows appear: Show app name first (default off), which puts “WM Keyboard” ahead of the language in the switcher’s label instead of after it, and Select languages in the system settings, which opens Android’s own tick-list of this keyboard’s languages. On Android 14 and newer the keyboard enables every registered subtype itself and that row is only a way to check Android’s view of things; on Android 13 and older there is no API for it, so ticking them there by hand is the only way the switcher lists more than one.
Conjunct-aware backspace used to sit here too, as a single Complex scripts switch across every cluster-forming script at once. It is per language now, on each language’s own screen (below). An install that had the old switch on keeps cluster deletion in whichever cluster-forming languages it had enabled at the time.
Each language’s own screen
Section titled “Each language’s own screen”Tapping a language (from Your languages or straight after adding one) opens a screen titled with that language’s own name, built from up to ten groups depending on what it supports. They’re listed below in the order the screen draws them.
Layouts: one toggle per layout the language ships, no subtitle. Turning off the last enabled layout anywhere is a no-op rather than an error, so you can never empty the switch ring from here.
Style: Fancy Text only, and no other language gets it. One choice, Fancy style (WM KeyboardLanguagesFancy TextStyleFancy style), subtitled “The lettering the fancy keyboard types. Also switchable from the strip over the keys.” Each option draws itself in its own lettering, so you pick 𝔉𝔯𝔞𝔨𝔱𝔲𝔯 by reading it rather than by name. The strip over the keys writes the same value; this row exists so it’s findable from Settings and readable as a plain list. Full detail on Fancy text.
Clusters: shown only for a language whose script forms conjunct clusters (Bengali, Devanagari, Gurmukhi, Gujarati, Odia, Tamil, Telugu, Kannada, Malayalam, Sinhala, Khmer, Myanmar, Tibetan and others). One toggle, Conjunct-aware backspace (WM KeyboardLanguages(a language)ClustersConjunct-aware backspace, default off), deletes a whole cluster in a single press instead of one code point at a time. The subtitle shows a cluster from that language’s own script, so the Bengali row reads ক্ষ and the Hindi one क्ष. Set per language: turning it on for one leaves the others alone.
Spellings: Bengali only, since it’s the one language that ships the lists. One toggle, Use known spellings (WM KeyboardLanguagesBanglaSpellingsUse known spellings, default on), subtitled Type "tmr" to get তোমার, and "table" to get টেবিল. On, a curated list of spellings people actually write outranks the letter-for-letter phonetic reading, so table commits টেবিল rather than তাবলে. Turn it off if you want the literal reading and can’t otherwise get it. Kept per language, so a second language that ships a list later keeps its own answer. Full detail on Bengali.
Numerals: a single choice, Numeral system (WM KeyboardLanguages(a language)NumeralsNumeral system), shown as two short segmented options: the language’s own digits, or 0-9. The language’s own digits is the default. So Arabic offers ٠-٩ or 0-9, Hindi offers ०-९ or 0-9, Bengali offers ০-৯ or 0-9, and so on:
| Language’s script | The two options |
|---|---|
| Arabic | ٠-٩ (default) or 0-9 |
| Persian, Urdu | ۰-۹ (default) or 0-9 |
| Bengali, Assamese, Sylheti | ০-৯ (default) or 0-9 |
| Hindi, Marathi, Nepali and the other Devanagari languages | ०-९ (default) or 0-9 |
A language whose own digits are already 0-9 (English, and every other Latin-script language) has nothing to choose here, so it gets no Numerals group at all.
This only changes which glyphs the number row and keypad draw and (depending on the field) commit; it never touches the layout, script, or dictionary. Where a non-Latin choice actually gets typed into text fields versus kept as ASCII is a separate, global setting: WM KeyboardLayout & sizeNumerals, not per-language.
Also suggest from: appears once at least one other language is enabled, which on a fresh install depends on whether your phone’s languages seeded more than English. One toggle per other enabled language (WM KeyboardLanguages(a language)Also suggest from). Turning one on blends that language’s words into suggestions while you type this one, and words pulled in this way are never autocorrected away.
Most of these start off, but not all: adding a romanized language (Banglish, Hinglish, Arabizi, any of the _rom entries) cross-wires it with the other enabled languages on the same script, in both directions, the moment it’s added. Add Banglish next to English and both toggles are already on, with a toast saying so. The pairing is by script, not by language family, so Banglish links to English (both Latin) and not to Bengali, which is on its own script and its own keyboard. The reason is that nobody switches layouts to type Banglish: it lives on the same QWERTY as your English, and unpaired, English autocorrect treats every Banglish word as a typo. Plain multilingual pairs (English and French) are left alone. A link you switch off by hand stays off until the next time you add a language, since adding is the one moment the pairing runs. (Installs that already had a romanized pair before this existed get one silent catch-up pass, once.)
Language data: shown whenever the language has anything to download at all. One button, Download all data (about n MB), which fetches its word list, its emoji keywords and its word-pair data in one tap, skipping anything already on the device. Pressing the button is the consent, so there’s no confirmation after it. It’s the way back for a language added before this prompt existed, or added with Download data automatically off. The two groups below still do the same files one at a time.
Dictionary: a status caption, then one row per downloadable wordlist for the language (a language can have more than one), then a Custom dictionaries row to WM KeyboardTypingSuggestionsCustom dictionaries. Each wordlist row defaults to the Large size tier (300,000 words, out of Small/50,000, Medium/150,000 and Everything/the whole list) and isn’t downloaded until you tap it. Every count is an upper bound, since the transfer also stops at the words that occur only once in the source text, so a finished download is often smaller than the tier promised. Full detail, including how downloaded and imported lists combine, is on Downloadable dictionaries.
Emoji: a status caption, an emoji-keyword pack row if one exists for the language, and an Emoji keywords row to WM KeyboardEmojiEmoji keywords. Whether the pack row auto-downloads depends on two toggles, both default on and both of which have to be on: Download data automatically on the Languages screen, and the narrower Download automatically under Emoji keywords.
{Language} options (Chinese, Japanese, and Cantonese only). See below.
Remove {language}: a button at the very bottom, shown only once more than one language is enabled, so the last one can never be removed from here. Removing takes every layout belonging to that language out of the switch ring in one step.
Chinese, Japanese, and Cantonese options
Section titled “Chinese, Japanese, and Cantonese options”Three languages, zh, ja, and yue, get an extra group named after themselves (for example “Chinese options”), holding a downloadable conversion dictionary plus, for Chinese and Cantonese, extra input-scheme settings. It’s the only part of a language’s screen that isn’t identical in shape across every language, so it’s covered separately here and in full on Chinese, Japanese & Korean.
- One download/delete row per conversion-dictionary pack for that language: Chinese gets Pinyin, Stroke, and Cangjie tables; Japanese gets a kana→kanji table; Cantonese gets a Jyutping table. All five packs are hosted and available to download today.
- Traditional characters (WM KeyboardLanguages(a CJK language)(language) optionsTraditional characters, default off) converts candidates to Traditional script. This toggle renders on all three languages’ screens, including Japanese’s, even though it only has an effect on Chinese and Cantonese.
- With Traditional on, a Standard / Taiwan (臺灣) / Hong Kong (香港) region choice appears, defaulting to Standard; it adjusts regional wording, not just characters.
- Cantonese only: Lazy pronunciation (懶音), default off, matches common sound mergers (n↔l, ng↔∅, and others) when spelling out a reading.
- Chinese only: Fuzzy Pinyin (default off) matches confusable sounds (zh↔z, ch↔c, an↔ang, and others), and there’s also a Double Pinyin scheme list: Off (the default, full Pinyin) plus five two-key schemes (Microsoft, Sogou, Xiaohe, Ziranma, and Pinyin++). All five ship their key tables, so all five are selectable.
Options
Section titled “Options”| Setting | Where | Default |
|---|---|---|
| Your languages / Switch order | Languages | Seeded from your phone’s language list, plus QWERTY (max 4 layouts) |
| Suggested for you | Languages, Languages → Add language | Up to 4, from your phone’s languages then your region |
| Your layouts (custom layout toggles) | Languages | None (no custom layouts on a fresh install) |
| Remember language per app | Languages → Per-app language | Off |
| List languages in the Android switcher | Languages → System language switcher | Off |
| Show app name first | Languages → System language switcher | Off (row shown only while the toggle above is on) |
| Select languages in the system settings | Languages → System language switcher | Opens Android’s settings (no stored value; row shown only while the toggle above is on) |
| Conjunct-aware backspace | Languages → (a language) → Clusters | Off, per language |
| Layouts (per layout) | Languages → (a language) → Layouts | On for the one layout that language was added with (its first); off for the rest |
| Fancy style | Languages → Fancy Text → Style | Bold (𝐁𝐨𝐥𝐝); the same value the strip over the keys writes |
| Use known spellings | Languages → Bangla → Spellings | On (Bengali is the only language with the group) |
| Numeral system | Languages → (a language) → Numerals | The language’s own digits |
| Also suggest from (per other language) | Languages → (a language) → Also suggest from | Off, except romanized pairs on the same script, which are linked both ways when you add one |
| Download data automatically | Languages → Language data | On |
| Download all data | Languages → (a language) → Language data | A button (no stored value) |
| Dictionary size tier (per download) | Languages → (a language) → Dictionary | Large (up to 300,000 words) |
| Download automatically (emoji keywords) | Emoji → Emoji keywords | On |
| Traditional characters | Languages → (zh/ja/yue) → (language) options | Off |
| Region (Standard / Taiwan / Hong Kong) | Languages → (zh/ja/yue) → (language) options | Standard |
| Lazy pronunciation (懶音) | Languages → yue → Cantonese options | Off |
| Fuzzy Pinyin | Languages → zh → Chinese options | Off |
| Double Pinyin scheme | Languages → zh → Chinese options | Off (full Pinyin) |
Two related settings live outside this screen entirely: where a numeral choice gets typed, not just drawn, is WM KeyboardLayout & sizeNumerals; custom word-list import is WM KeyboardTypingSuggestionsCustom dictionaries (also reachable from a language’s own Dictionary group above).
Details & edge cases
Section titled “Details & edge cases”- Settings search barely covers this screen. Only two rows here are indexed by name: the top-level “Languages” entry itself and “Conjunct-aware backspace” (which now lands you on the language list, since the row itself lives one screen deeper). Everything else (Add language, Suggested for you, Switch order, Per-app language, the system switcher toggles, and everything on a per-language detail screen) has to be found by browsing, not by typing into Settings search.
- Registering a subtype does not enable it. Android decides which subtypes are enabled, and with nothing explicitly enabled it derives the set from your phone’s system languages, which is usually one. Android 14 and newer let the keyboard enable them all itself; below that, use Select languages in the system settings or the switcher will keep showing a single entry.
- 352 is the catalogue size, not the enabled count. A fresh install enables at most four layouts, seeded from your phone’s language list; everything else in the catalogue sits inactive, loaded on demand, until you add it.
- Your region suggests, it never enables. The SIM, the network, the time zone and your locale’s region feed the Suggested for you list and nothing else. Seeding a fresh install uses only your phone’s language list, so landing in a country doesn’t rearrange your keyboard.
- Seeding runs once, and only over an untouched set. It happens when the setup wizard opens, and only if the enabled layouts are still exactly the built-in fallback. If you enabled the keyboard from Android’s settings and typed for a while before ever opening the app, whatever you set up there is kept.
- Only English and Bengali bundle a dictionary. Every other language starts with zero built-in suggestions until you download or import a wordlist on its Dictionary group.
- Removing a language removes every layout that belongs to it, not just the one you last used. If you’ve enabled two English layouts (QWERTY and AZERTY, say), removing English takes both out of the switch ring at once.
- Nothing here waits for Wi-Fi. Every download on this screen, and every automatic one behind Download data automatically, starts on whatever connection you have. See Downloads & mobile data for what that actually costs and which downloads do ask first.
- Any row here you’ve changed grows a restore button. Same as everywhere else in Settings; see Putting one setting back.
- Add language’s list order is registry order, not alphabetical, and it never re-sorts based on your search term either. It’s a filter over a fixed order, so identical prefixes stay in the same relative order regardless of what you typed.
