
Understanding locales in what3words
what3words addresses exist in over 60 languages, enabling people around the world to use what3words in their native tongue. Some languages, however,
can be written in more than one writing script. For example, Chinese has both Simplified and Traditional character sets that are generally used depending on where the individual learned to read and write, while Serbian speakers can choose between the Cyrillic and Latin scripts – both are taught at school, and it is more down to personal choice as to which one is used in which context. To ensure that speakers of these languages have the most user-friendly experience, what3words offers ‘locales’.
What is a what3words ‘locale’?
A locale, in the context of what3words, refers to when a what3words language is available in more than one script. The addresses assigned to each 3 metre square remain the same across the two locales, but the script they’re written in is different.
For example, the Serbian word for “strawberries” is written as “јагоде” in the Cyrillic script and “jagode” in the Latin script. They are pronounced identically and are, to all intents and purposes, the same word . Typing “///јагоде.јагоде.јагоде” or “///jagode.jagode.jagode” into the what3words search bar will bring up the same 3 metre square in southern Brazil.
Current what3words languages that offer locales are:
- Chinese (Simplified and Traditional characters) – both scripts are in regular use, depending on the region
- Mongolian (Cyrillic and Latin script) – only the Cyrillic script is official in Mongolia, but many Mongolian speakers type using the Latin script, which is why what3words offers this
- Kazakh (Cyrillic and Latin script) – the Cyrillic script is currently prevalent in Kazakhstan, but there are government-level plans to switch the language’s official writing script to Latin, which is why what3words offers this
- Serbian (Latin and Cyrillic script) – Historically and to the present day, both scripts are in regular use
- Bosnian (Latin and Cyrillic script) – for the same reasons as Serbian
- Montenegrin (Latin and Cyrillic script) – for the same reasons as Serbian
Within Unicode, Latin and Cyrillic scripts are entirely separate: even though some letters look identical to each other (e.g. the initial letter of ‘jagode’/’јагоде’), they have different Unicode code points (Latin script: U+006A, Cyrillic script: U+0458).
In Chinese, however, the Simplified and Traditional character sets do overlap. In short, when the sometimes complicated traditional characters were simplified by the Chinese government in the 1950s (to improve literacy), some did not change. These unchanged characters – including ‘ 人’ (‘ren’, meaning ‘person’) – are shared by both writing scripts and there is only one Unicode code point: U+4EBA.
This means that some words in the what3words Simplified Chinese wordlist are identical to their counterpart in the Traditional Chinese wordlist – both to the naked eye and according to their Unicode code points, e.g. ‘鼓舞’ (gǔwǔ, meaning ‘to inspire’).
Locales vs secondary words
It’s easy to confuse locales with another concept in what3words: secondary words. However, they are not the same. A locale is an alternative writing script for the same set of words . In contrast, secondary words are alternate forms of a word within the same script . Secondary words are usually there to account for different methods of typing letters that may not be easily accessible on all keyboards.
For example, a German keyboard has a separate key for the letter “ö”, which is common in that language (found in words such as “hören” – to listen). If a German speaker is using a British computer, for example, they may not have such easy access to the “ö”, and may decide to write this as “oe” instead – “hoeren”. The extra “e” represents the pronunciation difference between “o” and “ö”. In this case, “hoeren” is accepted by what3words as interchangeable with “hören”. As a secondary word, it is never displayed in a what3words address, but is allowed as an alternative input.
So, while locales let you switch the alphabet or character set (e.g. Cyrillic vs Latin), secondary words allow an alternative way to input a word, in the same writing script. Locales ensure a user can read the address in a familiar script, whereas secondary words ensure a user can successfully enter an address in the way that they prefer.
Why do locales matter?
Locales provide what3words users with familiarity and comfort, enabling them to see and share what3words addresses in a script that feels natural to them. This is important for both user experience and inclusivity. Ideally, nobody has to struggle with an unfamiliar alphabet when using a what3words address – they can simply switch to the locale that suits them.
Supported locales (as of July 2025)
Most what3words languages – English, French or Korean, for example – use a single writing system. However, a handful of what3words languages do have locale variants. Below is the complete list of supported locale codes and their language, and script, current as of July 2025.
zh_si
– Chinese (Simplified characters)zh_tr
– Chinese (Traditional characters)kk_cy
– Kazakh (Cyrillic script)kk_la
– Kazakh (Latin script)mn_cy
– Mongolian (Cyrillic script)mn_la
– Mongolian (Latin script)oo_cy
– Bosnian / Croatian / Montenegrin / Serbian (combined) (Cyrillic script)oo_la
– Bosnian / Croatian / Montenegrin / Serbian (combined) (Latin script)
Each code above represents a locale. For example, if a developer requests a what3words address with the locale
zh_tr
, they’ll get the Chinese address in Traditional characters, whereas
zh_si
would yield Simplified characters. As mentioned before, both correspond to the same 3 metre square.
The list also reveals an unrelated what3words language fact: because Bosnian, Croatian, Montenegrin and Serbian are extremely similar languages, we have created a single wordlist with the language code “oo” that covers all four. While users can select the four languages individually within our language menu, the what3words addresses in each one are identical.
This is made slightly more complicated by the fact that while Bosnian, Montenegrin and Serbian can all be written in Cyrillic or Latin scripts, Croatian is only realistically ever written in the Latin script.
(Note: This locales list is up-to-date as of July 2025. Always check the latest what3words documentation for new additions, as more languages or scripts could be added in future.)
The “is_default_display_locale” flag – what does it mean?
You might come across the term “is_default_display_locale” in our documentation. This marks which script is the default for a language. Every language that has multiple locales will have one designated as the default. For languages with only one locale, that is the default by definition.
For developers, this is important when you’re not explicitly specifying a locale in an API request. If you request an address in a certain language without specifying the locale, the what3words API will return it in the default script for that language. For instance, Chinese defaults to Simplified
(zh_si)
unless you ask for Traditional. Mongolian and Kazakh default to Cyrillic (
mn_cy, kk_cy
) unless you request the Latin version. In the Bosnian/Croatian/Montenegrin/Serbian group (
oo
code), the default display locale is the Latin script (
oo_la
).
If you want to show the Cyrillic version, you’d need to specify that locale in your request.
Japanese: a special case
One special case is the what3words Japanese language version. Japanese is commonly written in a mixture of three different writing scripts: kanji (adapted Chinese characters that are used to represent core vocabulary and concepts with specific meanings), hiragana (a phonetic syllabary used for native words and grammatical particles), and katakana (used to transcribe foreign words). Because these three scripts in tandem can create a multitude of homophones (which what3words avoids where possible), our Japanese language team made the decision to only use the hiragana script in our wordlist. Because hiragana is phonetic, any word can be written using this script.
Due to hiragana’s unique construction, it could be difficult to see Latin script full stops within a what3words address – leading to confusion over word boundaries. For this reason, we use the ideographic full stop
。
(U+3002) between the words of Japanese addresses; this is the same width as hiragana characters and makes it much clearer to see where one word ends and the next begins. It is also easier to access on many Japanese keyboards!
Japanese is the only language where the delimiter shown in what3words products is anything other than the Latin script full stop (although other delimiters are supported for input). For further discussion of this last point, please see Understanding the what3words RegEx: A human-friendly guide .
Summary
Locales in what3words allow multiple writing systems for the same what3words address. This makes the system flexible and user-friendly across different regions and preferences. The key things to remember are:
- A locale is not a different address or translation – it’s the same address represented in another script. The location doesn’t change when you switch locales
- Only certain languages offer locales. For those that do, you can specify the locale in the API, or via your app settings
- If you don’t specify a locale, the address will come back in the default script for that language
- Locales are different from secondary words; locales change the script, whereas secondary words are alternative ways to input a word within one script
- The what3words API and SDKs handle locales for you – as a developer you just need to request the one you want (see the API docs for details and the latest locale list)
By understanding locales, developers can ensure they present what3words addresses in the most user-friendly way. Whether your users read 汉字, кириллица, اللغة العربية, or the Latin alphabet, what3words can display addresses in a form that feels natural to them. This ultimately helps more people comfortably use what3words addresses in their everyday lives, no matter what language they use.
Language Name | ISO code | what3words API language code | what3words Locale code | Script | Default Display Locale | Locale notes |
Afrikaans | af | af | Latin | TRUE | ||
Amharic | am | am | Ethiopic | TRUE | ||
Arabic | ar | ar | Arabic | TRUE | ||
Bahasa Indonesia | id | id | Latin | TRUE | ||
Bahasa Malaysia | ms | ms | Latin | TRUE | ||
Bengali | bn | bn | Bengali | TRUE | ||
Bosnian | bs | oo | oo_cy | Cyrillic | FALSE | |
Bosnian | bs | oo | oo_la | Latin | TRUE | |
Bulgarian | bg | bg | Cyrillic | TRUE | ||
Catalan | ca | ca | Latin | TRUE | ||
Chinese | zh | zh | zh_si | Han (Simplified) | TRUE |
Some zh_si words are identical to their zh_tr equivalent – this is because the Simplified and Traditional characters for these words are the same.
|
Chinese | zh | zh | zh_tr | Han (Traditional) | FALSE |
Some zh_si words are identical to their zh_tr equivalent – this is because the Simplified and Traditional characters for these words are the same.
|
Croatian | hr | oo | oo_cy | Cyrillic | FALSE | |
Croatian | hr | oo | oo_la | Latin | TRUE | |
Czech | cs | cs | Latin | TRUE | ||
Danish | da | da | Latin | TRUE | ||
Dutch | nl | nl | Latin | TRUE | ||
English | en | en | Latin | TRUE | ||
Estonian | et | et | Latin | TRUE | ||
Finnish | fi | fi | Latin | TRUE | ||
French | fr | fr | Latin | TRUE | ||
German | de | de | Latin | TRUE | ||
Greek | el | el | Greek | TRUE | ||
Gujarati | gu | gu | Gujarati | TRUE | ||
Hebrew | he | he | Hebrew | TRUE | ||
Hindi | hi | hi | Devanagari | TRUE | ||
Hungarian | hu | hu | Latin | TRUE | ||
isiXhosa | xh | xh | Latin | TRUE | ||
isiZulu | zu | zu | Latin | TRUE | ||
Italian | it | it | Latin | TRUE | ||
Japanese | ja | ja | Hiragana | TRUE | ||
Kannada | kn | kn | Kannada | TRUE | ||
Kazakh | kk | kk | kk_cy | Cyrillic | TRUE | |
Kazakh | kk | kk | kk_la | Latin | FALSE | |
Khmer | km | km | Khmer | TRUE | ||
Korean | ko | ko | Hangul | TRUE | ||
Lao | lo | lo | Lao | TRUE | ||
Malayalam | ml | ml | Malayalam | TRUE | ||
Marathi | mr | mr | Devanagari | TRUE | ||
Mongolian | mn | mn | mn_cy | Cyrillic | TRUE | |
Mongolian | mn | mn | mn_la | Latin | FALSE | |
Montenegrin | me | oo | oo_cy | Cyrillic | FALSE | |
Montenegrin | me | oo | oo_la | Latin | TRUE | |
Nepali | ne | ne | Devanagari | TRUE | ||
Norwegian | no | no | Latin | TRUE | ||
Odia | or | or | Oriya (Odia) | TRUE | ||
Persian | fa | fa | Arabic | TRUE | ||
Polish | pl | pl | Latin | TRUE | ||
Portuguese | pt | pt | Latin | TRUE | ||
Punjabi | pa | pa | Gurmukhi | TRUE | ||
Romanian | ro | ro | Latin | TRUE | ||
Russian | ru | ru | Cyrillic | TRUE | ||
Serbian | sr | oo | oo_cy | Cyrillic | FALSE | |
Serbian | sr | oo | oo_la | Latin | TRUE | |
Sinhala | si | si | Sinhala | TRUE | ||
Slovak | sk | sk | Latin | TRUE | ||
Slovene | sl | sl | Latin | TRUE | ||
Spanish | es | es | Latin | TRUE | ||
Swahili | sw | sw | Latin | TRUE | ||
Swedish | sv | sv | Latin | TRUE | ||
Tamil | ta | ta | Tamil | TRUE | ||
Telugu | te | te | Telugu | TRUE | ||
Thai | th | th | Thai | TRUE | ||
Turkish | tr | tr | Latin | TRUE | ||
Ukrainian | uk | uk | Cyrillic | TRUE | ||
Urdu | ur | ur | Arabic | TRUE | ||
Vietnamese | vi | vi | Latin | TRUE | ||
Welsh | cy | cy | Latin | TRUE |