Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Languages in Exponential

The one place that says which languages Exponential supports, at which level, and how to add more, with the totals of a default installation and a world map of the countries whose language the administration shows.

Download as PDF

Address: https://doc.exponential.earth/learninminutes/exphelp/viewer/languages.md

On this page

Languages in Exponential

At a glance, on 3 November 2026. A default installation (the shipped share/locale, share/translations and settings/i18n.ini, no extension) has:

WhatHow many
Languages of the administration: translations in share/translations156, 156 of them complete
Locales: share/locale/*.ini files390: 383 languages and countries, 1 test language, 6 variants
Known languages: the language codes of the locales (variants and the test language left out)171
of them shown translated by the administration (own translation, fallback or English)151
of them not translated (list)20
Countries and territories of the locales247
of them with the administration in their language (green on the map)247
Codes of ISO 3166-1 (settings/country.ini) without a locale4, all of them by design: uninhabited or withdrawn (list below the map)
Locales written right to left43
World map: 247 countries and territories in green, where a shipped locale shows the administration in its language, and 3 uninhabited territories without a locale by design; the others in grey
World map: 247 countries and territories in green, where a shipped locale shows the administration in its language, and 3 uninhabited territories without a locale by design; the others in grey

A country is green when a locale ships for it whose language the administration shows translated: with a translation of its own or the first translation of its fallback chain (i18n.ini [TranslationSettings], FallbackMode=first, see section 13). English counts as translated: it is the language of the source texts. The map as a vector image: doc/eng-us/images/languages/coverage-map.svg; outlines: Natural Earth, public domain.

The uninhabited territories without a locale by design are green too: Antarctica (AQ), Bouvet Island (BV) and Heard Island and McDonald Islands (HM). Exponential serves these territories in every language; no local conventions exist.

The 247 countries and territories in green
Country or territoryCodeLocales and the translation they show
AfghanistanAFfas-AF, pus-AF
ÅlandAXswe-AX → swe-SE
AlbaniaALsqi-AL
AlgeriaDZara-DZ → ara-SA, fre-DZ → fre-FR, kab-DZ
American SamoaASeng-AS (source texts)
AndorraADcat-AD → cat-ES
AngolaAOpor-AO → por-PT
AnguillaAIeng-AI (source texts)
Antigua and BarbudaAGeng-AG (source texts)
ArgentinaAResl-AR → esl-ES
ArmeniaAMhye-AM
ArubaAWdut-AW → dut-NL
AustraliaAUeng-AU
AustriaATger-AT → ger-DE
AzerbaijanAZaze-AZ
BahamasBSeng-BS (source texts)
BahrainBHara-BH → ara-SA
BangladeshBDben-BD
BarbadosBBeng-BB (source texts)
BelarusBYbel-BY, rus-BY → rus-RU
BelgiumBEdut-BE → dut-NL, fre-BE → fre-FR, ger-BE → ger-DE
BelizeBZeng-BZ (source texts)
BeninBJfre-BJ → fre-FR
BermudaBMeng-BM (source texts)
BhutanBTdzo-BT
BoliviaBOaym-BO (untranslated), esl-BO → esl-ES
Bonaire, Sint Eustatius and SabaBQdut-BQ → dut-NL
Bosnia and HerzegovinaBAbos-BA
BotswanaBWeng-BW (source texts)
BrazilBRpor-BR
British Indian Ocean TerritoryIOeng-IO (source texts)
Brunei DarussalamBNmsa-BN → msa-MY
BulgariaBGbul-BG
Burkina FasoBFfre-BF → fre-FR
BurundiBIfre-BI → fre-FR, run-BI
Cabo VerdeCVpor-CV → por-PT
CambodiaKHkhm-KH
CameroonCMfre-CM → fre-FR
CanadaCAcre-CA (untranslated), eng-CA (source texts), fre-CA → fre-FR, iku-CA (untranslated), moh-CA (untranslated), oji-CA (untranslated)
Cayman IslandsKYeng-KY (source texts)
Central African RepublicCFfre-CF → fre-FR
ChadTDara-TD → ara-SA, fre-TD → fre-FR
ChileCLarn-CL (untranslated), esl-CL → esl-ES
ChinaCNbod-CN, chi-CN, uig-CN
Christmas IslandCXeng-CX → eng-AU
Cocos (Keeling) IslandsCCeng-CC → eng-AU
ColombiaCOesl-CO → esl-ES
ComorosKMara-KM → ara-SA, fre-KM → fre-FR
CongoCGfre-CG → fre-FR
Congo, The Democratic Republic Of TheCDfre-CD → fre-FR, lin-CD
Cook IslandsCKeng-CK (source texts)
Costa RicaCResl-CR → esl-ES
Côte d'IvoireCIfre-CI → fre-FR
CroatiaHRcro-HR
CubaCUesl-CU → esl-ES
CuraçaoCWdut-CW → dut-NL
CyprusCYell-CY → ell-GR, tur-CY → tur-TR
CzechiaCZcze-CZ
DenmarkDKdan-DK
DjiboutiDJara-DJ → ara-SA, fre-DJ → fre-FR
DominicaDMeng-DM (source texts)
Dominican RepublicDOesl-DO → esl-ES
EcuadorECesl-EC → esl-ES
EgyptEGara-EG → ara-SA
El SalvadorSVesl-SV → esl-ES
Equatorial GuineaGQesl-GQ → esl-ES, fre-GQ → fre-FR
EritreaERara-ER → ara-SA
EstoniaEEest-EE
EswatiniSZeng-SZ (source texts)
EthiopiaETamh-ET, orm-ET, tir-ET
Falkland Islands (Malvinas)FKeng-FK (source texts)
Faroe IslandsFOdan-FO → dan-DK, fao-FO
FijiFJeng-FJ (source texts)
FinlandFIfin-FI
FranceFRbre-FR, fre-FR, oci-FR
French GuianaGFfre-GF → fre-FR
French PolynesiaPFfre-PF → fre-FR
French Southern TerritoriesTFfre-TF → fre-FR
GabonGAfre-GA → fre-FR
GambiaGMeng-GM (source texts)
GeorgiaGEkat-GE
GermanyDEdsb-DE, ger-DE, hsb-DE
GhanaGHaka-GH, eng-GH (source texts), ewe-GH
GibraltarGIeng-GI (source texts)
GreeceGRell-GR
GreenlandGLkal-GL
GrenadaGDeng-GD (source texts)
GuadeloupeGPfre-GP → fre-FR
GuamGUeng-GU (source texts)
GuatemalaGTesl-GT → esl-ES, quc-GT (untranslated)
GuernseyGGeng-GG (source texts)
GuineaGNfre-GN → fre-FR, nqo-GN
Guinea-BissauGWpor-GW → por-PT
GuyanaGYeng-GY (source texts)
HaitiHTfre-HT → fre-FR
Holy See (Vatican City State)VAlat-VA
HondurasHNesl-HN → esl-ES
Hong KongHKchi-HK → chi-TW
HungaryHUhun-HU
IcelandISisl-IS
IndiaINasm-IN, ben-IN → ben-BD, bho-IN, brx-IN, doi-IN, eng-IN (source texts), guj-IN, hin-IN, kan-IN, kas-IN, kok-IN, mai-IN, mal-IN, mar-IN, mni-IN, ori-IN, pan-IN, san-IN, sat-IN, tam-IN, tel-IN, urd-IN → urd-PK
IndonesiaIDind-ID, jav-ID, sun-ID
Iran, Islamic Republic ofIRfas-IR
IraqIQara-IQ → ara-SA, arc-IQ, ckb-IQ, syr-IQ
IrelandIEeng-IE (source texts), gle-IE
Isle of ManIMeng-IM (source texts)
IsraelILheb-IL, huy-IL
ItalyITita-IT
JamaicaJMeng-JM (source texts)
JapanJPjpn-JP
JerseyJEeng-JE (source texts)
JordanJOara-JO → ara-SA
KazakhstanKZkaz-KZ, rus-KZ → rus-RU
KenyaKEeng-KE (source texts), kik-KE, swa-KE
KiribatiKIeng-KI (source texts)
Korea, Democratic People's Republic ofKPkor-KP
Korea, Republic ofKRkor-KR
KuwaitKWara-KW → ara-SA
KyrgyzstanKGkir-KG, rus-KG → rus-RU
Lao People's Democratic RepublicLAlao-LA
LatviaLVlav-LV
LebanonLBara-LB → ara-SA
LesothoLSeng-LS (source texts)
LiberiaLReng-LR (source texts)
LibyaLYara-LY → ara-SA
LiechtensteinLIger-LI → ger-DE
LithuaniaLTlit-LT
LuxembourgLUfre-LU → fre-FR, ger-LU → ger-DE, ltz-LU
MacauMOchi-MO → chi-TW
MadagascarMGfre-MG → fre-FR, mlg-MG
MalawiMWeng-MW (source texts)
MalaysiaMYmsa-MY
MaldivesMVdiv-MV
MaliMLbam-ML, fre-ML → fre-FR
MaltaMTmlt-MT
Marshall IslandsMHeng-MH (source texts)
MartiniqueMQfre-MQ → fre-FR
MauritaniaMRara-MR → ara-SA, fre-MR → fre-FR
MauritiusMUfre-MU → fre-FR
MayotteYTfre-YT → fre-FR
MexicoMXesl-MX, nah-MX (untranslated), yua-MX (untranslated)
Micronesia, Federated States ofFMeng-FM (source texts)
Moldova, Republic ofMDron-MD → ron-RO, rus-MD → rus-RU
MonacoMCfre-MC → fre-FR
MongoliaMNmon-MN
MontenegroMEsrp-ME → srp-RS
MontserratMSeng-MS (source texts)
MoroccoMAara-MA → ara-SA, fre-MA → fre-FR, zgh-MA
MozambiqueMZpor-MZ → por-PT
MyanmarMMmya-MM
NamibiaNAeng-NA (source texts)
NauruNReng-NR (source texts)
NepalNPnep-NP
NetherlandsNLdut-NL, fry-NL
New CaledoniaNCfre-NC → fre-FR
New ZealandNZeng-NZ → eng-AU, mri-NZ
NicaraguaNIesl-NI → esl-ES
NigerNEfre-NE → fre-FR
NigeriaNGeng-NG (source texts), hau-NG, ibo-NG, pcm-NG, yor-NG
NiueNUeng-NU (source texts)
Norfolk IslandNFeng-NF → eng-AU
North MacedoniaMKmkd-MK
Northern Mariana IslandsMPeng-MP (source texts)
NorwayNOnno-NO → nor-NO, nor-NO, sme-NO
OmanOMara-OM → ara-SA
PakistanPKeng-PK (source texts), pnb-PK, snd-PK, urd-PK
PalauPWeng-PW (source texts)
Palestinian Territory, OccupiedPSara-PS → ara-SA
PanamaPAesl-PA → esl-ES
Papua New GuineaPGeng-PG (source texts)
ParaguayPYesl-PY → esl-ES, grn-PY
PeruPEesl-PE → esl-ES, que-PE
PhilippinesPHceb-PH, eng-PH (source texts), fil-PH
PitcairnPNeng-PN (source texts)
PolandPLpol-PL
PortugalPTpor-PT
Puerto RicoPResl-PR → esl-ES
QatarQAara-QA → ara-SA
ReunionREfre-RE → fre-FR
RomaniaROron-RO
Russian FederationRUche-RU, rus-RU, tat-RU
RwandaRWfre-RW → fre-FR, kin-RW
Saint BarthélemyBLfre-BL → fre-FR
Saint HelenaSHeng-SH (source texts)
Saint Kitts and NevisKNeng-KN (source texts)
Saint LuciaLCeng-LC (source texts)
Saint MartinMFfre-MF → fre-FR
Saint Pierre and MiquelonPMfre-PM → fre-FR
Saint Vincent and The GrenadinesVCeng-VC (source texts)
SamoaWSeng-WS (source texts)
San MarinoSMita-SM → ita-IT
Sao Tome and PrincipeSTpor-ST → por-PT
Saudi ArabiaSAara-SA
SenegalSNfre-SN → fre-FR, ful-SN, wol-SN
SerbiaRSser-SR, srp-RS
SeychellesSCfre-SC → fre-FR
Sierra LeoneSLeng-SL (source texts)
SingaporeSGchi-SG → chi-CN, eng-SG (source texts), msa-SG → msa-MY, tam-SG → tam-IN
Sint MaartenSXdut-SX → dut-NL
SlovakiaSKslk-SK
SloveniaSIslv-SI
Solomon IslandsSBeng-SB (source texts)
SomaliaSOara-SO → ara-SA, som-SO
South AfricaZAafr-ZA, eng-ZA (source texts), xho-ZA, zul-ZA
South Georgia and The South Sandwich IslandsGSeng-GS (source texts)
South SudanSSeng-SS (source texts)
SpainESast-ES, cat-ES, esl-ES, eus-ES, glg-ES
Sri LankaLKsin-LK, tam-LK → tam-IN
SudanSDara-SD → ara-SA
SurinameSRdut-SR → dut-NL
Svalbard and Jan MayenSJnor-SJ → nor-NO
SwedenSEswe-SE
SwitzerlandCHfre-CH → fre-FR, ger-CH → ger-DE, ita-CH → ita-IT, roh-CH
Syrian Arab RepublicSYara-SY → ara-SA, syr-SY → syr-IQ
TaiwanTWchi-TW
TajikistanTJtgk-TJ
Tanzania, United Republic ofTZswa-TZ → swa-KE
ThailandTHtha-TH
Timor-LesteTLpor-TL → por-PT
TogoTGfre-TG → fre-FR
TokelauTKeng-TK (source texts)
TongaTOeng-TO (source texts), ton-TO
Trinidad and TobagoTTeng-TT (source texts)
TunisiaTNara-TN → ara-SA, fre-TN → fre-FR
TürkiyeTRkur-TR, tur-TR
TurkmenistanTMtuk-TM
Turks and Caicos IslandsTCeng-TC (source texts)
TuvaluTVeng-TV (source texts)
UgandaUGeng-UG (source texts), lug-UG
UkraineUAukr-UA
United Arab EmiratesAEara-AE → ara-SA
United KingdomGBcym-GB, eng-GB (source texts), gla-GB
United States Minor Outlying IslandsUMeng-UM (source texts)
United States of AmericaUSale-US (untranslated), chr-US (untranslated), ems-US (untranslated), eng-US, esl-US → esl-ES, esu-US (untranslated), gwi-US (untranslated), hai-US (untranslated), haw-US, ipk-US (untranslated), lkt-US (untranslated), nav-US (untranslated), oji-US (untranslated), tli-US (untranslated), tsi-US (untranslated), yid-US
UruguayUYesl-UY → esl-ES
UzbekistanUZuzb-UZ
VanuatuVUfre-VU → fre-FR
VenezuelaVEesl-VE → esl-ES
Viet NamVNvie-VN
Virgin Islands, BritishVGeng-VG (source texts)
Virgin Islands, U.S.VIeng-VI (source texts)
Wallis and FutunaWFfre-WF → fre-FR
Western SaharaEHara-EH → ara-SA
XKXKsqi-XK → sqi-AL
YemenYEara-YE → ara-SA
ZambiaZMeng-ZM (source texts)
ZimbabweZWeng-ZW (source texts), sna-ZW
The 0 countries and territories with a locale but the administration in English
Country or territoryCodeLocales
The 4 codes of ISO 3166-1 without a locale
Country or territoryCodeWhy
Netherlands AntillesANNo locale by design: code withdrawn in 2010; its successors Bonaire, Sint Eustatius and Saba (BQ), Curaçao (CW) and Sint Maarten (SX) each have a locale of their own
AntarcticaAQNo locale by design: uninhabited, CLDR defines no locale for it (shown green: Exponential serves these territories in every language; no local conventions exist)
Bouvet IslandBVNo locale by design: uninhabited, CLDR defines no locale for it (shown green: Exponential serves these territories in every language; no local conventions exist)
Heard Island and McDonald IslandsHMNo locale by design: uninhabited, CLDR defines no locale for it (shown green: Exponential serves these territories in every language; no local conventions exist)

Made by ./console exp:i18n coverage from the shipped files; ./console exp:i18n coverage --check and the test expI18nCoverageMapTest fail when the figures or the map are out of date.

The one place that says which languages Exponential supports, at which level, and how to add more. The figures were taken on 15 October 2026, those of the administration translations on 26 October 2026 (Exponential 6.0.15).

In short: 390 locale files (383 languages and countries, the test language Lorem Ipsum and 6 variations, 43 of them written right to left) can be chosen as content languages and siteaccess locales; 156 administration translations exist, all of them complete: Afrikaans (afr-ZA), Akan (aka-GH), Albanian (sqi-AL), Amharic (amh-ET), Arabic (Saudi Arabia) (ara-SA), Armenian (hye-AM), Assamese (asm-IN), Asturian (ast-ES), Azerbaijani (aze-AZ), Bambara (bam-ML), Basque (eus-ES), Belarusian (bel-BY), Bengali (Bangladesh) (ben-BD), Bhojpuri (bho-IN), Bodo (brx-IN), Bosnian (bos-BA), Breton (bre-FR), Bulgarian (bul-BG), Burmese (mya-MM), Catalan (cat-ES), Cebuano (ceb-PH), Central Kurdish (ckb-IQ), Chechen (che-RU), Croatian (cro-HR), Czech (cze-CZ), Danish (dan-DK), Dari (Afghanistan) (fas-AF), Dhivehi (div-MV), Dogri (doi-IN), Dutch (Netherlands) (dut-NL), Dzongkha (dzo-BT), English (Australia) (eng-AU), English (United States) (eng-US), Esperanto (epo-EO), Estonian (est-EE), Ewe (ewe-GH), Faroese (fao-FO), Filipino (fil-PH), Finnish (fin-FI), French (France) (fre-FR), Fula (ful-SN), Galician (glg-ES), Ganda (lug-UG), Georgian (kat-GE), German (Germany) (ger-DE), Greek (Hellenic) (ell-GR), Greenlandic (kal-GL), Guarani (grn-PY), Gujarati (guj-IN), Hausa (hau-NG), Hawaiian (haw-US), Hebrew (heb-IL), Hindi (hin-IN), Hulaulá (huy-IL), Hungarian (hun-HU), Icelandic (isl-IS), Igbo (ibo-NG), Imperial Aramaic (arc-IQ), Indonesian (ind-ID), Irish (gle-IE), Italian (Italy) (ita-IT), Japanese (jpn-JP), Javanese (jav-ID), Kabyle (kab-DZ), Kannada (kan-IN), Kashmiri (kas-IN), Kazakh (kaz-KZ), Khmer (khm-KH), Kikuyu (kik-KE), Kinyarwanda (kin-RW), Kirundi (run-BI), Klingon (tlh-QO), Konkani (kok-IN), Korean (kor-KR), Korean (North Korea) (kor-KP), Kurdish (kur-TR), Kyrgyz (kir-KG), Lao (lao-LA), Latin (lat-VA), Latvian (lav-LV), Lingala (lin-CD), Lithuanian (lit-LT), Lower Sorbian (dsb-DE), Luxembourgish (ltz-LU), Macedonian (mkd-MK), Maithili (mai-IN), Malagasy (mlg-MG), Malay (Malaysia) (msa-MY), Malayalam (mal-IN), Maltese (mlt-MT), Manipuri (mni-IN), Māori (mri-NZ), Marathi (mar-IN), Mongolian (mon-MN), Nepali (nep-NP), Nigerian Pidgin (pcm-NG), Northern Sami (sme-NO), Norwegian Bokmål (nor-NO), N’Ko (nqo-GN), Occitan (oci-FR), Odia (ori-IN), Oromo (orm-ET), Pashto (pus-AF), Persian (fas-IR), Polish (pol-PL), Portuguese (Brazil) (por-BR), Portuguese (Portugal) (por-PT), Punjabi (pan-IN), Quechua (que-PE), Romanian (ron-RO), Romansh (roh-CH), Russian (rus-RU), Sanskrit (san-IN), Santali (sat-IN), Scottish Gaelic (gla-GB), Serbian (Srpski) (ser-SR), Serbian (Српски) (srp-RS), Shona (sna-ZW), Simplified Chinese (chi-CN), Sindhi (snd-PK), Sinhala (sin-LK), Slovak (slk-SK), Slovenian (slv-SI), Somali (som-SO), Spanish (Mexico) (esl-MX), Spanish (Spain) (esl-ES), Standard Moroccan Tamazight (zgh-MA), Sundanese (sun-ID), Swahili (Kenya) (swa-KE), Swedish (swe-SE), Syriac (Iraq) (syr-IQ), Tajik (tgk-TJ), Tamil (India) (tam-IN), Tatar (tat-RU), Telugu (tel-IN), Thai (tha-TH), Tibetan (bod-CN), Tigrinya (tir-ET), Tongan (ton-TO), Traditional Chinese (Taiwan) (chi-TW), Turkish (tur-TR), Turkmen (tuk-TM), Ukrainian (ukr-UA), Upper Sorbian (hsb-DE), Urdu (Pakistan) (urd-PK), Uyghur (uig-CN), Uzbek (uzb-UZ), Vietnamese (vie-VN), Welsh (cym-GB), Western Frisian (fry-NL), Western Punjabi (Shahmukhi) (pnb-PK), Wolof (wol-SN), Xhosa (xho-ZA), Yiddish (yid-US), Yoruba (yor-NG), Zulu (zul-ZA). The names are the English ones of the locale files.

Every locale is plain INI: nothing here needs a PHP extension at run time.

Contents

  1. Locales, translations, content languages and siteaccesses
  2. Support levels
  3. Every locale
  4. Every administration translation
  5. The world's major languages
  6. Common languages still missing
  7. Adding a locale
  8. Adding or completing an administration translation
  9. Right-to-left languages
  10. No PHP extension at run time
  11. The limit of 62 content languages
  12. Test languages: Lorem Ipsum
  13. Translation fallbacks

The languages not translated yet

Exponential knows 171 languages: that many different language codes (the three letters before the dash) are found in the shipped locales share/locale/*.ini, variants and the test language left out. The administration shows 151 of them translated: at least one of their locales has a translation of its own, falls back to the first translation of its chain (FallbackMode=first) or is English, the language of the source texts. For the other 20 it shows the source texts in English; each is a candidate for a new translation (see section 8).

The 20 languages not translated
LanguageOwn nameCodeLocales (countries)
AleutUnangam Tunuualeale-US (United States of America)
AlutiiqSugt'stunemsems-US (United States of America)
AymaraAymar aruaymaym-BO (Bolivia)
Central Yup'ikYugtunesuesu-US (United States of America)
CherokeeᏣᎳᎩchrchr-US (United States of America)
Creenêhiyawêwincrecre-CA (Canada)
Gwich'inDinjii Zhuh K'yàagwigwi-US (United States of America)
HaidaXaad Kílhaihai-US (United States of America)
Inuktitutᐃᓄᒃᑎᑐᑦikuiku-CA (Canada)
InupiaqIñupiatunipkipk-US (United States of America)
K'iche'K'iche'qucquc-GT (Guatemala)
LakotaLakȟólʼiyapilktlkt-US (United States of America)
MapudungunMapudungunarnarn-CL (Chile)
MohawkKanien'kéhamohmoh-CA (Canada)
NahuatlNawatlnahnah-MX (Mexico)
NavajoDiné Bizaadnavnav-US (United States of America)
OjibweAnishinaabemowinojioji-CA (Canada), oji-US (United States of America)
TlingitLingíttlitli-US (United States of America)
TsimshianSm'algyaxtsitsi-US (United States of America)
Yucatec MayaMaaya t'aanyuayua-MX (Mexico)

1. Locales, translations, content languages and siteaccesses

Four things are easily mixed up:

ThingWhereWhat it does
Localeshare/locale/<code>.ini, read by eZLocaleNames of the language and country, the HTTP language tag, the text direction, date and time formats, day and month names, the first day of the week, number and currency formats, translated country names.
Administration translationshare/translations/<code>/translation.ts (and an extension's translations/<code>/)The texts of the interface: the |i18n() strings of templates and ezpI18n::tr() in PHP.
Content languageSetup > Languages (ezcontent_language)A language content can be written in. It is a locale code, so only a locale with a file can be added.
Siteaccess localesite.ini [RegionalSettings] Locale of a siteaccessThe locale a siteaccess formats with and the translation its interface uses. SiteLanguageList[] says which content languages it shows.

A locale file is all a content language needs. Adding a locale file only makes the language selectable: it adds no content language, changes no siteaccess and uses none of the at most 62 content language slots (30 on 32-bit PHP; see section 11).

The details are elsewhere and not repeated here:

2. Support levels

LevelWhat worksLanguages
Full: interface and contentThe administration speaks the language completely (at least 99% of the current strings); content, dates, numbers and currency follow the locale.eng-US (and every eng-* locale, English being the language of the source texts), ger-DE, esl-ES, esl-MX, fre-FR, heb-IL, ara-SA, lat-VA, tlh-QO, ukr-UA, tur-TR, pol-PL, ita-IT, por-BR, dut-NL, swe-SE, nor-NO, dan-DK, cze-CZ, cro-HR, fas-IR (and fas-AF, Dari, which falls back to it), pus-AF, kur-TR, swa-KE (and swa-TZ, which falls back to it), hin-IN, kor-KR, jpn-JP, ell-GR, fin-FI, hun-HU, ron-RO, slk-SK, slv-SI, bos-BA, sqi-AL, est-EE, lav-LV, isl-IS, gle-IE, mlt-MT, dsb-DE, kal-GL, rus-RU, cat-ES, srp-RS, ser-SR, bul-BG, lit-LT, por-PT (and por-AO, por-CV, por-MZ, which fall back to it), chi-CN (and chi-SG, which falls back to it), chi-TW (and chi-HK, which falls back to it), afr-ZA, ben-BD (and ben-IN), urd-PK (and urd-IN), mar-IN, tel-IN, tam-IN (and tam-LK, tam-SG), hau-NG, guj-IN, kan-IN, amh-ET, yor-NG, mal-IN, pan-IN, ori-IN, ibo-NG, zul-ZA, som-SO, xho-ZA, yid-US, vie-VN, ind-ID, tha-TH, lao-LA, msa-MY (and msa-SG, msa-BN, which fall back to it), jav-ID, sun-ID, nep-NP, bho-IN, mai-IN, pcm-NG, syr-IQ (and syr-SY, which falls back to it), arc-IQ, huy-IL, kat-GE, sna-ZW, kaz-KZ, gla-GB, mri-NZ, fil-PH, che-RU, lin-CD, ful-SN, orm-ET, eng-AU (and eng-NZ, which falls back to it), hye-AM, uzb-UZ, snd-PK, pnb-PK, mya-MM, haw-US, aze-AZ, aka-GH, sin-LK, asm-IN, kin-RW, mlg-MG, uig-CN, khm-KH, ceb-PH, ckb-IQ, tir-ET, kik-KE, run-BI, tgk-TJ, bod-CN, bel-BY, mon-MN, glg-ES, kir-KG, eus-ES, tat-RU, cym-GB, tuk-TM, mkd-MK, lug-UG, ltz-LU, wol-SN, kor-KP, ast-ES, bam-ML, dzo-BT, bre-FR, ewe-GH, oci-FR, kab-DZ, div-MV, kok-IN, roh-CH, zgh-MA, hsb-DE, mni-IN, fry-NL, doi-IN, fao-FO, nqo-GN, kas-IN, sme-NO, que-PE, epo-EO, brx-IN, ton-TO, sat-IN, san-IN, grn-PY, nno-NO (falls back to nor-NO) (all but eng-US and ger-DE machine-assisted, at least in part, see section 4)
Content onlyNo administration translation: the interface stays English. Content can be written in the language, and a siteaccess with the locale formats dates, numbers and currency for it.every other locale, among them nearly all 237 added in 6.0.15

A country without a translation of its own speaks the one i18n.ini [TranslationSettings] FallbackLanguages[] names, at the same level: every German-, French- and Spanish-speaking country falls back to ger-DE, fre-FR and esl-ES (Latin America too: esl-ES is the complete one, esl-MX lacks some kernel strings and four extensions; esl-MX itself takes esl-ES for those extensions), the Arabic countries to ara-SA, and the other languages likewise (por-MZ to por-PT, ita-CH to ita-IT). The translator looks the fallback up for the kernel and for each extension on its own. expUISwitchLanguageProviderTest fails when a country of a translated language has neither. The "Translation coverage" column below counts only a locale's own translation; the interface language choice shows the fallback's. Chains, the automatic same-language fallback, rules of extensions, ./console exp:i18n and Setup > Interface languages: section 13.

3. Every locale

share/locale holds 268 files on 18 October 2026: 49 that existed before 6.0.15, 170 added in 6.0.15, the test language qlo-ZZ (section 12) and 48 added on 18 October 2026 (the remaining countries of Spanish, French, Arabic and German, generated the same way from CLDR 48). The add form of Setup > Languages offers the 280 without a variation (a variation such as ger-DE@euro only overrides a few keys of its base file and is chosen in site.ini), sorted by English name, each with its native name, its country (unless the name already gives it) and its code, and a search field that matches any of them: bengali, বাংলা, ben, bangladesh all find ben-BD. The interface language choice offers the same locales in its A–Z list, a native list box with type-ahead (typing "Kis" jumps to Kiswahili).

The columns:

  • Direction: RTL for a language written right to left (section 9).
  • Script: the ISO 15924 script the file's names are written in: ICU's likely script of the language, checked against the letters of the file's own native name and month names (the file wins: ser-SR is Serbian in Latin script).
  • Source: CLDR 44 for a file generated from Unicode CLDR 44 in 6.0.15; older, regenerated from CLDR 44 for an older file that was broken and generated again; hand-made names, CLDR 44 conventions where CLDR has no data for the language and the names were written by hand; hand-made for a file written entirely by hand; older, hand-made, fixed in 6.0.15 for an older file with single values corrected by hand; older, hand-made for the files that came with earlier releases, unchanged.
  • Translation coverage: the share of today's interface strings the locale's own administration translation translates, as the interface language choice shows it (expUISwitchLanguageCatalogue::coveragePercent(), rounded down; English is the source language and always 100%); — without a translation.

The table is generated from the locale files; do not edit it by hand.

CodeEnglish nameNative nameRegionDirectionScriptSourceTranslation coverage
afr-ZAAfrikaansAfrikaansAfricaLTRLatin (Latn)CLDR 44100%
aka-GHAkanAkanAfricaLTRLatin (Latn)CLDR 44100%
ale-USAleutUnangam TunuuAmericasLTRLatin (Latn)hand-made—
amh-ETAmharicአማርኛAfricaLTREthiopic (Ethi)CLDR 44100%
ara-AEArabic (United Arab Emirates)العربية (الإمارات العربية المتحدة)Middle EastRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-BHArabic (Bahrain)العربية (البحرين)Middle EastRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-DJArabic (Djibouti)العربية (جيبوتي)AfricaRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-DZArabic (Algeria)العربية (الجزائر)AfricaRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-EGArabic (Egypt)العربية (مصر)Middle EastRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-EHArabic (Western Sahara)العربية (الصحراء الغربية)AfricaRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-ERArabic (Eritrea)العربية (إريتريا)AfricaRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-IQArabic (Iraq)العربية (العراق)Middle EastRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-JOArabic (Jordan)العربية (الأردن)Middle EastRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-KMArabic (Comoros)العربية (جزر القمر)AfricaRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-KWArabic (Kuwait)العربية (الكويت)Middle EastRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-LBArabic (Lebanon)العربية (لبنان)Middle EastRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-LYArabic (Libya)العربية (ليبيا)AfricaRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-MAArabic (Morocco)العربية (المغرب)AfricaRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-MRArabic (Mauritania)العربية (موريتانيا)AfricaRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-OMArabic (Oman)العربية (عُمان)Middle EastRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-PSArabic (Palestinian Territories)العربية (الأراضي الفلسطينية)Middle EastRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-QAArabic (Qatar)العربية (قطر)Middle EastRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-SAArabic (Saudi Arabia)العربية (المملكة العربية السعودية)Middle EastRTLArabic (Arab)older, regenerated from CLDR 48100%
ara-SDArabic (Sudan)العربية (السودان)AfricaRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-SOArabic (Somalia)العربية (الصومال)AfricaRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-SYArabic (Syria)العربية (سوريا)Middle EastRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-TDArabic (Chad)العربية (تشاد)AfricaRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
ara-TNArabic (Tunisia)العربية (تونس)AfricaRTLArabic (Arab)CLDR 44100% (falls back to ara-SA)
ara-YEArabic (Yemen)العربية (اليمن)Middle EastRTLArabic (Arab)CLDR 48100% (falls back to ara-SA)
arc-IQImperial AramaicארמיתMiddle EastRTLHebrew (Hebr)hand-made names, CLDR 44 conventions100%
arn-CLMapudungunMapudungunAmericasLTRLatin (Latn)hand-made—
asm-INAssameseঅসমীয়াSouth AsiaLTRBengali (Beng)CLDR 44100%
ast-ESAsturianAsturianuEuropeLTRLatin (Latn)CLDR 44100%
aym-BOAymaraAymar aruAmericasLTRLatin (Latn)hand-made—
aze-AZAzerbaijaniAzərbaycanCentral Asia and CaucasusLTRLatin (Latn)CLDR 44100%
bam-MLBambaraBamanakanAfricaLTRLatin (Latn)CLDR 44100%
bel-BYBelarusianБеларускаяEuropeLTRCyrillic (Cyrl)CLDR 44100%
ben-BDBengali (Bangladesh)বাংলা (বাংলাদেশ)South AsiaLTRBengali (Beng)CLDR 44100%
ben-INBengali (India)বাংলা (ভারত)South AsiaLTRBengali (Beng)CLDR 44100% (falls back to ben-BD)
bho-INBhojpuriभोजपुरीSouth AsiaLTRDevanagari (Deva)CLDR 44100%
bod-CNTibetanབོད་སྐད་East AsiaLTRTibetan (Tibt)CLDR 44100%
bos-BABosnianBosanskiEuropeLTRLatin (Latn)CLDR 44100%
bre-FRBretonBrezhonegEuropeLTRLatin (Latn)CLDR 44100%
brx-INBodoबर’South AsiaLTRDevanagari (Deva)CLDR 44100%
bul-BGBulgarianБългарскиEuropeLTRCyrillic (Cyrl)CLDR 44100%
cat-ADCatalan (Andorra)Català (Andorra)EuropeLTRLatin (Latn)CLDR 44100% (falls back to cat-ES)
cat-ESCatalanCatalàEuropeLTRLatin (Latn)older, hand-made100%
ceb-PHCebuanoCebuanoSoutheast AsiaLTRLatin (Latn)CLDR 44100%
che-RUChechenНохчийнEuropeLTRCyrillic (Cyrl)CLDR 44100%
chi-CNSimplified Chinese简体中文East AsiaLTRHan (Simplified) (Hans)older, hand-made, fixed in 6.0.15100%
chi-HKTraditional Chinese (HongKong)繁體中文 (香港)East AsiaLTRHan (Traditional) (Hant)older, hand-made, fixed in 6.0.15100% (falls back to chi-TW)
chi-MOChinese (Macao SAR China)中文 (中國澳門特別行政區)East AsiaLTRHan (Traditional) (Hant)CLDR 44100% (falls back to chi-TW)
chi-SGSimplified Chinese (Singapore)简体中文 (新加坡)Southeast AsiaLTRHan (Simplified) (Hans)CLDR 44100% (falls back to chi-CN)
chi-TWTraditional Chinese (Taiwan)繁體中文 (臺灣)East AsiaLTRHan (Traditional) (Hant)older, hand-made100%
chr-USCherokeeᏣᎳᎩAmericasLTRCherokee (Cher)CLDR 44—
ckb-IQCentral Kurdishکوردیی ناوەندیMiddle EastRTLArabic (Arab)CLDR 44100%
cre-CACreenêhiyawêwinAmericasLTRLatin (Latn)hand-made names, CLDR 44 conventions—
cro-HRCroatianHrvatskiEuropeLTRLatin (Latn)older, hand-made100%
cym-GBWelshCymraegEuropeLTRLatin (Latn)CLDR 44100%
cze-CZCzechČeštinaEuropeLTRLatin (Latn)older, hand-made100%
dan-DKDanishDanskEuropeLTRLatin (Latn)older, hand-made100%
dan-FODanish (Faroe Islands)Dansk (Færøerne)EuropeLTRLatin (Latn)CLDR 44100% (falls back to dan-DK)
div-MVDhivehiދިވެހިSouth AsiaRTLThaana (Thaa)hand-made names, CLDR 44 conventions100%
doi-INDogriडोगरीSouth AsiaLTRDevanagari (Deva)CLDR 44100%
dsb-DELower SorbianDolnoserbšćinaEuropeLTRLatin (Latn)CLDR 44100%
dut-AWDutch (Aruba)Nederlands (Aruba)AmericasLTRLatin (Latn)CLDR 44100% (falls back to dut-NL)
dut-BEDutch (Belgium)Nederlands (België)EuropeLTRLatin (Latn)CLDR 44100% (falls back to dut-NL)
dut-BQDutch (Caribbean Netherlands)Nederlands (Caribisch Nederland)AmericasLTRLatin (Latn)CLDR 44100% (falls back to dut-NL)
dut-CWDutch (Curaçao)Nederlands (Curaçao)AmericasLTRLatin (Latn)CLDR 44100% (falls back to dut-NL)
dut-NLDutch (Netherlands)Nederlands (Nederland)EuropeLTRLatin (Latn)older, hand-made100%
dut-SRDutch (Suriname)Nederlands (Suriname)AmericasLTRLatin (Latn)CLDR 44100% (falls back to dut-NL)
dut-SXDutch (Sint Maarten)Nederlands (Sint-Maarten)AmericasLTRLatin (Latn)CLDR 44100% (falls back to dut-NL)
dzo-BTDzongkhaརྫོང་ཁSouth AsiaLTRTibetan (Tibt)CLDR 44100%
ell-CYGreek (Cyprus)Ελληνικά (Κύπρος)EuropeLTRGreek (Grek)CLDR 44100% (falls back to ell-GR)
ell-GRGreek (Hellenic)ΕλληνικάEuropeLTRGreek (Grek)older, hand-made, fixed in 6.0.15100%
ems-USAlutiiqSugt'stunAmericasLTRLatin (Latn)hand-made—
eng-AGEnglish (Antigua & Barbuda)English (Antigua & Barbuda)AmericasLTRLatin (Latn)CLDR 44100%
eng-AIEnglish (Anguilla)English (Anguilla)AmericasLTRLatin (Latn)CLDR 44100%
eng-ASEnglish (American Samoa)English (American Samoa)OceaniaLTRLatin (Latn)CLDR 44100%
eng-AUEnglish (Australia)English (Australia)OceaniaLTRLatin (Latn)older, hand-made100%
eng-BBEnglish (Barbados)English (Barbados)AmericasLTRLatin (Latn)CLDR 44100%
eng-BMEnglish (Bermuda)English (Bermuda)AmericasLTRLatin (Latn)CLDR 44100%
eng-BSEnglish (Bahamas)English (Bahamas)AmericasLTRLatin (Latn)CLDR 44100%
eng-BWEnglish (Botswana)English (Botswana)AfricaLTRLatin (Latn)CLDR 44100%
eng-BZEnglish (Belize)English (Belize)AmericasLTRLatin (Latn)CLDR 44100%
eng-CAEnglish (Canada)English (Canada)AmericasLTRLatin (Latn)older, hand-made100%
eng-CKEnglish (Cook Islands)English (Cook Islands)OceaniaLTRLatin (Latn)CLDR 44100%
eng-DMEnglish (Dominica)English (Dominica)AmericasLTRLatin (Latn)CLDR 44100%
eng-FJEnglish (Fiji)English (Fiji)OceaniaLTRLatin (Latn)CLDR 44100%
eng-FKEnglish (Falkland Islands)English (Falkland Islands)AmericasLTRLatin (Latn)CLDR 44100%
eng-FMEnglish (Micronesia)English (Micronesia)OceaniaLTRLatin (Latn)CLDR 44100%
eng-GBEnglish (United Kingdom)English (United Kingdom)EuropeLTRLatin (Latn)older, hand-made100%
eng-GB@euroVariant of eng-GB: Euro supportEuropeLTRLatin (Latn)older variation, hand-made100%
eng-GDEnglish (Grenada)English (Grenada)AmericasLTRLatin (Latn)CLDR 44100%
eng-GGEnglish (Guernsey)English (Guernsey)EuropeLTRLatin (Latn)CLDR 44100%
eng-GHEnglish (Ghana)English (Ghana)AfricaLTRLatin (Latn)CLDR 44100%
eng-GIEnglish (Gibraltar)English (Gibraltar)EuropeLTRLatin (Latn)CLDR 44100%
eng-GMEnglish (Gambia)English (Gambia)AfricaLTRLatin (Latn)CLDR 44100%
eng-GSEnglish (South Georgia & South Sandwich Islands)English (South Georgia & South Sandwich Islands)AmericasLTRLatin (Latn)CLDR 44100%
eng-GUEnglish (Guam)English (Guam)OceaniaLTRLatin (Latn)CLDR 44100%
eng-GYEnglish (Guyana)English (Guyana)AmericasLTRLatin (Latn)CLDR 44100%
eng-IEEnglish (Ireland)English (Ireland)EuropeLTRLatin (Latn)CLDR 44100%
eng-IMEnglish (Isle of Man)English (Isle of Man)EuropeLTRLatin (Latn)CLDR 44100%
eng-INEnglish (India)English (India)South AsiaLTRLatin (Latn)CLDR 44100%
eng-IOEnglish (British Indian Ocean Territory)English (British Indian Ocean Territory)South AsiaLTRLatin (Latn)CLDR 44100%
eng-JEEnglish (Jersey)English (Jersey)EuropeLTRLatin (Latn)CLDR 44100%
eng-JMEnglish (Jamaica)English (Jamaica)AmericasLTRLatin (Latn)CLDR 44100%
eng-KEEnglish (Kenya)English (Kenya)AfricaLTRLatin (Latn)CLDR 44100%
eng-KIEnglish (Kiribati)English (Kiribati)OceaniaLTRLatin (Latn)CLDR 44100%
eng-KNEnglish (St. Kitts & Nevis)English (St Kitts & Nevis)AmericasLTRLatin (Latn)CLDR 44100%
eng-KYEnglish (Cayman Islands)English (Cayman Islands)AmericasLTRLatin (Latn)CLDR 44100%
eng-LCEnglish (St. Lucia)English (St Lucia)AmericasLTRLatin (Latn)CLDR 44100%
eng-LREnglish (Liberia)English (Liberia)AfricaLTRLatin (Latn)CLDR 44100%
eng-LSEnglish (Lesotho)English (Lesotho)AfricaLTRLatin (Latn)CLDR 44100%
eng-MHEnglish (Marshall Islands)English (Marshall Islands)OceaniaLTRLatin (Latn)CLDR 44100%
eng-MPEnglish (Northern Mariana Islands)English (Northern Mariana Islands)OceaniaLTRLatin (Latn)CLDR 44100%
eng-MWEnglish (Malawi)English (Malawi)AfricaLTRLatin (Latn)CLDR 44100%
eng-NAEnglish (Namibia)English (Namibia)AfricaLTRLatin (Latn)CLDR 44100%
eng-NGEnglish (Nigeria)English (Nigeria)AfricaLTRLatin (Latn)CLDR 44100%
eng-NREnglish (Nauru)English (Nauru)OceaniaLTRLatin (Latn)CLDR 44100%
eng-NUEnglish (Niue)English (Niue)OceaniaLTRLatin (Latn)CLDR 44100%
eng-NZEnglish (New Zealand)English (New Zealand)OceaniaLTRLatin (Latn)older, hand-made100% (falls back to eng-AU)
eng-PGEnglish (Papua New Guinea)English (Papua New Guinea)OceaniaLTRLatin (Latn)CLDR 44100%
eng-PHEnglish (Philippines)English (Philippines)Southeast AsiaLTRLatin (Latn)CLDR 44100%
eng-PKEnglish (Pakistan)English (Pakistan)South AsiaLTRLatin (Latn)CLDR 44100%
eng-PNEnglish (Pitcairn Islands)English (Pitcairn Islands)OceaniaLTRLatin (Latn)CLDR 44100%
eng-PWEnglish (Palau)English (Palau)OceaniaLTRLatin (Latn)CLDR 44100%
eng-SBEnglish (Solomon Islands)English (Solomon Islands)OceaniaLTRLatin (Latn)CLDR 44100%
eng-SGEnglish (Singapore)English (Singapore)Southeast AsiaLTRLatin (Latn)CLDR 44100%
eng-SHEnglish (St. Helena)English (St Helena)AfricaLTRLatin (Latn)CLDR 44100%
eng-SLEnglish (Sierra Leone)English (Sierra Leone)AfricaLTRLatin (Latn)CLDR 44100%
eng-SSEnglish (South Sudan)English (South Sudan)AfricaLTRLatin (Latn)CLDR 44100%
eng-SZEnglish (Eswatini)English (Eswatini)AfricaLTRLatin (Latn)CLDR 44100%
eng-TCEnglish (Turks & Caicos Islands)English (Turks & Caicos Islands)AmericasLTRLatin (Latn)CLDR 44100%
eng-TKEnglish (Tokelau)English (Tokelau)OceaniaLTRLatin (Latn)CLDR 44100%
eng-TOEnglish (Tonga)English (Tonga)OceaniaLTRLatin (Latn)CLDR 44100%
eng-TTEnglish (Trinidad & Tobago)English (Trinidad & Tobago)AmericasLTRLatin (Latn)CLDR 44100%
eng-TVEnglish (Tuvalu)English (Tuvalu)OceaniaLTRLatin (Latn)CLDR 44100%
eng-UGEnglish (Uganda)English (Uganda)AfricaLTRLatin (Latn)CLDR 44100%
eng-USEnglish (United States)English (United States)AmericasLTRLatin (Latn)older, hand-made100%
eng-VCEnglish (St. Vincent & Grenadines)English (St Vincent & the Grenadines)AmericasLTRLatin (Latn)CLDR 44100%
eng-VGEnglish (British Virgin Islands)English (British Virgin Islands)AmericasLTRLatin (Latn)CLDR 44100%
eng-VIEnglish (U.S. Virgin Islands)English (U.S. Virgin Islands)AmericasLTRLatin (Latn)CLDR 44100%
eng-WSEnglish (Samoa)English (Samoa)OceaniaLTRLatin (Latn)CLDR 44100%
eng-ZAEnglish (South Africa)English (South Africa)AfricaLTRLatin (Latn)CLDR 44100%
eng-ZMEnglish (Zambia)English (Zambia)AfricaLTRLatin (Latn)CLDR 44100%
eng-ZWEnglish (Zimbabwe)English (Zimbabwe)AfricaLTRLatin (Latn)CLDR 44100%
epo-EOEsperantoEsperantoWorldwideLTRLatin (Latn)older, hand-made100%
esl-ARSpanish (Argentina)Español (Argentina)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-BOSpanish (Bolivia)Español (Bolivia)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-CLSpanish (Chile)Español (Chile)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-COSpanish (Colombia)Español (Colombia)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-CRSpanish (Costa Rica)Español (Costa Rica)AmericasLTRLatin (Latn)CLDR 48100% (falls back to esl-ES)
esl-CUSpanish (Cuba)Español (Cuba)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-DOSpanish (Dominican Republic)Español (República Dominicana)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-ECSpanish (Ecuador)Español (Ecuador)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-ESSpanish (Spain)Español (España)EuropeLTRLatin (Latn)older, hand-made100%
esl-GQSpanish (Equatorial Guinea)Español (Guinea Ecuatorial)AfricaLTRLatin (Latn)CLDR 48100% (falls back to esl-ES)
esl-GTSpanish (Guatemala)Español (Guatemala)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-HNSpanish (Honduras)Español (Honduras)AmericasLTRLatin (Latn)CLDR 48100% (falls back to esl-ES)
esl-MXSpanish (Mexico)Español (México)AmericasLTRLatin (Latn)older, hand-made100%
esl-NISpanish (Nicaragua)Español (Nicaragua)AmericasLTRLatin (Latn)CLDR 48100% (falls back to esl-ES)
esl-PASpanish (Panama)Español (Panamá)AmericasLTRLatin (Latn)CLDR 48100% (falls back to esl-ES)
esl-PESpanish (Peru)Español (Perú)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-PRSpanish (Puerto Rico)Español (Puerto Rico)AmericasLTRLatin (Latn)CLDR 48100% (falls back to esl-ES)
esl-PYSpanish (Paraguay)Español (Paraguay)AmericasLTRLatin (Latn)CLDR 48100% (falls back to esl-ES)
esl-SVSpanish (El Salvador)Español (El Salvador)AmericasLTRLatin (Latn)CLDR 48100% (falls back to esl-ES)
esl-USSpanish (United States)Español (Estados Unidos)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-UYSpanish (Uruguay)Español (Uruguay)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
esl-VESpanish (Venezuela)Español (Venezuela)AmericasLTRLatin (Latn)CLDR 44100% (falls back to esl-ES)
est-EEEstonianEestiEuropeLTRLatin (Latn)CLDR 44100%
esu-USCentral Yup'ikYugtunAmericasLTRLatin (Latn)hand-made—
eus-ESBasqueEuskaraEuropeLTRLatin (Latn)CLDR 44100%
ewe-GHEweEʋegbeAfricaLTRLatin (Latn)CLDR 44100%
fao-FOFaroeseFøroysktEuropeLTRLatin (Latn)CLDR 44100%
fas-AFDari (Afghanistan)دری (افغانستان)Central Asia and CaucasusRTLArabic (Arab)CLDR 44100%
fas-IRPersianفارسیMiddle EastRTLArabic (Arab)CLDR 44100%
fil-PHFilipinoFilipinoSoutheast AsiaLTRLatin (Latn)CLDR 44100%
fin-FIFinnishSuomiEuropeLTRLatin (Latn)older, hand-made100%
fre-BEFrench (Belgium)Français (Belgique)EuropeLTRLatin (Latn)older, hand-made100% (falls back to fre-FR)
fre-BFFrench (Burkina Faso)Français (Burkina Faso)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-BIFrench (Burundi)Français (Burundi)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-BJFrench (Benin)Français (Bénin)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-BLFrench (St. Barthélemy)Français (Saint-Barthélemy)AmericasLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-CAFrench (Canada)Français (Canada)AmericasLTRLatin (Latn)older, hand-made100% (falls back to fre-FR)
fre-CDFrench (Congo - Kinshasa)Français (Congo-Kinshasa)AfricaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-CFFrench (Central African Republic)Français (République centrafricaine)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-CGFrench (Congo - Brazzaville)Français (Congo-Brazzaville)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-CHFrench (Switzerland)Français (Suisse)EuropeLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-CIFrench (Côte d’Ivoire)Français (Côte d’Ivoire)AfricaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-CMFrench (Cameroon)Français (Cameroun)AfricaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-DJFrench (Djibouti)Français (Djibouti)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-DZFrench (Algeria)Français (Algérie)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-FRFrench (France)Français (France)EuropeLTRLatin (Latn)older, hand-made100%
fre-GAFrench (Gabon)Français (Gabon)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-GNFrench (Guinea)Français (Guinée)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-GPFrench (Guadeloupe)Français (Guadeloupe)AmericasLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-GQFrench (Equatorial Guinea)Français (Guinée équatoriale)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-HTFrench (Haiti)Français (Haïti)AmericasLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-KMFrench (Comoros)Français (Comores)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-LUFrench (Luxembourg)Français (Luxembourg)EuropeLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-MAFrench (Morocco)Français (Maroc)AfricaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-MCFrench (Monaco)Français (Monaco)EuropeLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-MFFrench (St. Martin)Français (Saint-Martin)AmericasLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-MGFrench (Madagascar)Français (Madagascar)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-MLFrench (Mali)Français (Mali)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-MQFrench (Martinique)Français (Martinique)AmericasLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-MRFrench (Mauritania)Français (Mauritanie)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-MUFrench (Mauritius)Français (Maurice)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-NCFrench (New Caledonia)Français (Nouvelle-Calédonie)OceaniaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-NEFrench (Niger)Français (Niger)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-PFFrench (French Polynesia)Français (Polynésie française)OceaniaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-PMFrench (St. Pierre & Miquelon)Français (Saint-Pierre-et-Miquelon)AmericasLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-RWFrench (Rwanda)Français (Rwanda)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-SCFrench (Seychelles)Français (Seychelles)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-SNFrench (Senegal)Français (Sénégal)AfricaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-TDFrench (Chad)Français (Tchad)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-TFFrench (French Southern Territories)Français (Terres australes françaises)AfricaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fre-TGFrench (Togo)Français (Togo)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-TNFrench (Tunisia)Français (Tunisie)AfricaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-VUFrench (Vanuatu)Français (Vanuatu)OceaniaLTRLatin (Latn)CLDR 48100% (falls back to fre-FR)
fre-WFFrench (Wallis & Futuna)Français (Wallis-et-Futuna)OceaniaLTRLatin (Latn)CLDR 44100% (falls back to fre-FR)
fry-NLWestern FrisianFryskEuropeLTRLatin (Latn)CLDR 44100%
ful-SNFulaPulaarAfricaLTRLatin (Latn)CLDR 44100%
ger-ATGerman (Austria)Deutsch (Österreich)EuropeLTRLatin (Latn)CLDR 44100% (falls back to ger-DE)
ger-BEGerman (Belgium)Deutsch (Belgien)EuropeLTRLatin (Latn)CLDR 48100% (falls back to ger-DE)
ger-CHGerman (Switzerland)Deutsch (Schweiz)EuropeLTRLatin (Latn)CLDR 44100% (falls back to ger-DE)
ger-DEGerman (Germany)Deutsch (Deutschland)EuropeLTRLatin (Latn)older, hand-made100%
ger-DE@euroVariant of ger-DE: Euro supportEuropeLTRLatin (Latn)older variation, hand-made100% (falls back to ger-DE)
ger-LIGerman (Liechtenstein)Deutsch (Liechtenstein)EuropeLTRLatin (Latn)CLDR 48100% (falls back to ger-DE)
ger-LUGerman (Luxembourg)Deutsch (Luxemburg)EuropeLTRLatin (Latn)CLDR 48100% (falls back to ger-DE)
gla-GBScottish GaelicGàidhligEuropeLTRLatin (Latn)CLDR 44100%
gle-IEIrishGaeilgeEuropeLTRLatin (Latn)CLDR 44100%
glg-ESGalicianGalegoEuropeLTRLatin (Latn)CLDR 44100%
grn-PYGuaraniAvañe'ẽAmericasLTRLatin (Latn)hand-made100%
guj-INGujaratiગુજરાતીSouth AsiaLTRGujarati (Gujr)CLDR 44100%
gwi-USGwich'inDinjii Zhuh K'yàaAmericasLTRLatin (Latn)hand-made—
hai-USHaidaXaad KílAmericasLTRLatin (Latn)hand-made—
hau-NGHausaHausaAfricaLTRLatin (Latn)CLDR 44100%
haw-USHawaiianʻŌlelo HawaiʻiOceaniaLTRLatin (Latn)CLDR 44100%
heb-ILHebrewעבריתMiddle EastRTLHebrew (Hebr)older, regenerated from CLDR 44100%
hin-INHindiहिन्दीSouth AsiaLTRDevanagari (Deva)older, regenerated from CLDR 44100%
hsb-DEUpper SorbianHornjoserbšćinaEuropeLTRLatin (Latn)CLDR 44100%
hun-HUHungarianMagyarEuropeLTRLatin (Latn)older, hand-made100%
huy-ILHulauláהולאולאMiddle EastRTLHebrew (Hebr)hand-made names, CLDR 44 conventions100%
hye-AMArmenianՀայերենCentral Asia and CaucasusLTRArmenian (Armn)CLDR 44100%
ibo-NGIgboIgboAfricaLTRLatin (Latn)CLDR 44100%
iku-CAInuktitutᐃᓄᒃᑎᑐᑦAmericasLTRUnified Canadian Aboriginal Syllabics (Cans)hand-made names, CLDR 44 conventions—
ind-IDIndonesianIndonesianSoutheast AsiaLTRLatin (Latn)older, hand-made100%
ipk-USInupiaqIñupiatunAmericasLTRLatin (Latn)hand-made—
isl-ISIcelandicÍslenskaEuropeLTRLatin (Latn)CLDR 44100%
ita-CHItalian (Switzerland)Italiano (Svizzera)EuropeLTRLatin (Latn)CLDR 44100% (falls back to ita-IT)
ita-ITItalian (Italy)Italiano (Italia)EuropeLTRLatin (Latn)older, hand-made100%
ita-SMItalian (San Marino)Italiano (San Marino)EuropeLTRLatin (Latn)CLDR 44100% (falls back to ita-IT)
jav-IDJavaneseJawaSoutheast AsiaLTRLatin (Latn)CLDR 44100%
jpn-JPJapanese日本語East AsiaLTRJapanese (Han, Hiragana, Katakana) (Jpan)older, hand-made100%
jpn-JP@internationalVariant of jpn-JP: @internationalEast AsiaLTRJapanese (Han, Hiragana, Katakana) (Jpan)older variation, hand-made100% (falls back to jpn-JP)
kab-DZKabyleTaqbaylitAfricaLTRLatin (Latn)CLDR 44100%
kal-GLGreenlandicKalaallisutAmericasLTRLatin (Latn)CLDR 44100%
kan-INKannadaಕನ್ನಡSouth AsiaLTRKannada (Knda)CLDR 44100%
kas-INKashmiriکٲشُرSouth AsiaRTLArabic (Arab)CLDR 44100%
kat-GEGeorgianქართულიCentral Asia and CaucasusLTRGeorgian (Geor)CLDR 44100%
kaz-KZKazakhҚазақ тіліCentral Asia and CaucasusLTRCyrillic (Cyrl)CLDR 44100%
khm-KHKhmerខ្មែរSoutheast AsiaLTRKhmer (Khmr)CLDR 44100%
kik-KEKikuyuGikuyuAfricaLTRLatin (Latn)CLDR 44100%
kin-RWKinyarwandaKinyarwandaAfricaLTRLatin (Latn)CLDR 44100%
kir-KGKyrgyzКыргызчаCentral Asia and CaucasusLTRCyrillic (Cyrl)CLDR 44100%
kok-INKonkaniकोंकणीSouth AsiaLTRDevanagari (Deva)CLDR 44100%
kor-KPKorean (North Korea)한국어 (조선민주주의인민공화국)East AsiaLTRKorean (Hangul, Han) (Kore)CLDR 44100%
kor-KRKorean한국어East AsiaLTRKorean (Hangul, Han) (Kore)older, regenerated from CLDR 44100%
kur-TRKurdishKurdî (kurmancî)Middle EastLTRLatin (Latn)CLDR 44100%
lao-LALaoລາວSoutheast AsiaLTRLao (Laoo)CLDR 44100%
lat-VALatinLatinaEuropeLTRLatin (Latn)hand-made names, CLDR 44 conventions100%
lav-LVLatvianLatviešuEuropeLTRLatin (Latn)CLDR 44100%
lin-CDLingalaLingálaAfricaLTRLatin (Latn)CLDR 44100%
lit-LTLithuanianLietuviųEuropeLTRLatin (Latn)CLDR 44100%
lkt-USLakotaLakȟólʼiyapiAmericasLTRLatin (Latn)CLDR 44—
ltz-LULuxembourgishLëtzebuergeschEuropeLTRLatin (Latn)CLDR 44100%
lug-UGGandaLugandaAfricaLTRLatin (Latn)CLDR 44100%
mai-INMaithiliमैथिलीSouth AsiaLTRDevanagari (Deva)CLDR 44100%
mal-INMalayalamമലയാളംSouth AsiaLTRMalayalam (Mlym)CLDR 44100%
mar-INMarathiमराठीSouth AsiaLTRDevanagari (Deva)CLDR 44100%
mkd-MKMacedonianМакедонскиEuropeLTRCyrillic (Cyrl)CLDR 44100%
mlg-MGMalagasyMalagasyAfricaLTRLatin (Latn)CLDR 44100%
mlt-MTMalteseMaltiEuropeLTRLatin (Latn)CLDR 44100%
mni-INManipuriমৈতৈলোন্South AsiaLTRBengali (Beng)CLDR 44100%
moh-CAMohawkKanien'kéhaAmericasLTRLatin (Latn)hand-made—
mon-MNMongolianМонголEast AsiaLTRCyrillic (Cyrl)CLDR 44100%
mri-NZMāoriMāoriOceaniaLTRLatin (Latn)CLDR 44100%
msa-BNMalay (Brunei)Melayu (Brunei)Southeast AsiaLTRLatin (Latn)CLDR 44100% (falls back to msa-MY)
msa-MYMalay (Malaysia)Melayu (Malaysia)Southeast AsiaLTRLatin (Latn)CLDR 44100%
msa-SGMalay (Singapore)Melayu (Singapura)Southeast AsiaLTRLatin (Latn)CLDR 44100% (falls back to msa-MY)
mya-MMBurmeseမြန်မာSoutheast AsiaLTRMyanmar (Mymr)CLDR 44100%
nah-MXNahuatlNawatlAmericasLTRLatin (Latn)hand-made—
nav-USNavajoDiné BizaadAmericasLTRLatin (Latn)hand-made names, CLDR 44 conventions—
nep-NPNepaliनेपालीSouth AsiaLTRDevanagari (Deva)CLDR 44100%
nno-NONorwegian (Nynorsk)Norsk (Nynorsk)EuropeLTRLatin (Latn)older, hand-made100% (falls back to nor-NO)
nor-NONorwegian BokmålNorsk (Bokmål)EuropeLTRLatin (Latn)older, hand-made100%
nor-NO@intlVariant of nor-NO: Internasjonalt FormatEuropeLTRLatin (Latn)older variation, hand-made100% (falls back to nor-NO)
nor-NO@spraakraadVariant of nor-NO: Norsk SpråkrådEuropeLTRLatin (Latn)older variation, hand-made100% (falls back to nor-NO)
nqo-GNN’KoߒߞߏAfricaRTLN’Ko (Nkoo)CLDR 44100%
oci-FROccitanOccitanEuropeLTRLatin (Latn)CLDR 44100%
oji-CAOjibweAnishinaabemowinAmericasLTRLatin (Latn)hand-made names, CLDR 44 conventions—
oji-USOjibweAnishinaabemowinAmericasLTRLatin (Latn)hand-made names, CLDR 44 conventions—
ori-INOdiaଓଡ଼ିଆSouth AsiaLTROriya (Odia) (Orya)CLDR 44100%
orm-ETOromoOromooAfricaLTRLatin (Latn)CLDR 44100%
pan-INPunjabiਪੰਜਾਬੀSouth AsiaLTRGurmukhi (Guru)CLDR 44100%
pcm-NGNigerian PidginNaijíriá PíjinAfricaLTRLatin (Latn)CLDR 44100%
pnb-PKWestern Punjabi (Shahmukhi)پنجابیSouth AsiaRTLArabic (Arab)CLDR 44100%
pol-PLPolishPolskiEuropeLTRLatin (Latn)older, hand-made100%
por-AOPortuguese (Angola)Português (Angola)AfricaLTRLatin (Latn)CLDR 44100% (falls back to por-PT)
por-BRPortuguese (Brazil)Português (Brasil)AmericasLTRLatin (Latn)older, hand-made100%
por-CVPortuguese (Cape Verde)Português (Cabo Verde)AfricaLTRLatin (Latn)CLDR 44100% (falls back to por-PT)
por-GWPortuguese (Guinea-Bissau)Português (Guiné-Bissau)AfricaLTRLatin (Latn)CLDR 44100% (falls back to por-PT)
por-MZPortuguese (Mozambique)PortuguêsAfricaLTRLatin (Latn)older, hand-made100% (falls back to por-PT)
por-PTPortuguese (Portugal)PortuguêsEuropeLTRLatin (Latn)older, hand-made100%
por-PT@euroVariant of por-PT: Suporte para EuroEuropeLTRLatin (Latn)older variation, hand-made100% (falls back to por-PT)
por-STPortuguese (São Tomé & Príncipe)Português (São Tomé e Príncipe)AfricaLTRLatin (Latn)CLDR 44100% (falls back to por-PT)
por-TLPortuguese (Timor-Leste)Português (Timor-Leste)Southeast AsiaLTRLatin (Latn)CLDR 44100% (falls back to por-PT)
pus-AFPashtoپښتوSouth AsiaRTLArabic (Arab)CLDR 44100%
qlo-ZZLorem IpsumLorem IpsumNone (test language)LTRLatin (Latn)hand-made, test language only—
quc-GTK'iche'K'iche'AmericasLTRLatin (Latn)hand-made—
que-PEQuechuaRunasimiAmericasLTRLatin (Latn)CLDR 44100%
roh-CHRomanshRumantschEuropeLTRLatin (Latn)CLDR 44100%
ron-MDRomanian (Moldova)Română (Republica Moldova)EuropeLTRLatin (Latn)CLDR 44100% (falls back to ron-RO)
ron-RORomanianRomânăEuropeLTRLatin (Latn)CLDR 44100%
run-BIKirundiIkirundiAfricaLTRLatin (Latn)CLDR 44100%
rus-BYRussian (Belarus)Русский (Беларусь)EuropeLTRCyrillic (Cyrl)CLDR 44100% (falls back to rus-RU)
rus-KGRussian (Kyrgyzstan)Русский (Киргизия)Central Asia and CaucasusLTRCyrillic (Cyrl)CLDR 44100% (falls back to rus-RU)
rus-KZRussian (Kazakhstan)Русский (Казахстан)Central Asia and CaucasusLTRCyrillic (Cyrl)CLDR 44100% (falls back to rus-RU)
rus-MDRussian (Moldova)Русский (Молдова)EuropeLTRCyrillic (Cyrl)CLDR 44100% (falls back to rus-RU)
rus-RURussianРусскийEuropeLTRCyrillic (Cyrl)older, hand-made100%
san-INSanskritसंस्कृत भाषाSouth AsiaLTRDevanagari (Deva)CLDR 44100%
sat-INSantaliᱥᱟᱱᱛᱟᱲᱤSouth AsiaLTROl Chiki (Olck)CLDR 44100%
ser-SRSerbian (Srpski)Serbian (Srpski)EuropeLTRLatin (Latn)older, hand-made100%
sin-LKSinhalaසිංහලSouth AsiaLTRSinhala (Sinh)CLDR 44100%
slk-SKSlovakSlovenčinaEuropeLTRLatin (Latn)older, hand-made100%
slv-SISlovenianSlovenščinaEuropeLTRLatin (Latn)CLDR 44100%
sme-NONorthern SamiDavvisámegiellaEuropeLTRLatin (Latn)CLDR 44100%
sna-ZWShonaChiShonaAfricaLTRLatin (Latn)CLDR 44100%
snd-PKSindhiسنڌيSouth AsiaRTLArabic (Arab)CLDR 44100%
som-SOSomaliSoomaaliAfricaLTRLatin (Latn)CLDR 44100%
sqi-ALAlbanianShqipEuropeLTRLatin (Latn)CLDR 44100%
sqi-XKAlbanian (Kosovo)Shqip (Kosovë)EuropeLTRLatin (Latn)CLDR 44100% (falls back to sqi-AL)
srp-MESerbian (Montenegro)Српски (Црна Гора)EuropeLTRCyrillic (Cyrl)CLDR 44100% (falls back to srp-RS)
srp-RSSerbian (Српски)Serbian (Српски)EuropeLTRCyrillic (Cyrl)older, hand-made100%
sun-IDSundaneseBasa SundaSoutheast AsiaLTRLatin (Latn)CLDR 44100%
swa-KESwahili (Kenya)Kiswahili (Kenya)AfricaLTRLatin (Latn)CLDR 44100%
swa-TZSwahili (Tanzania)Kiswahili (Tanzania)AfricaLTRLatin (Latn)CLDR 44100% (falls back to swa-KE)
swe-AXSwedish (Åland Islands)Svenska (Åland)EuropeLTRLatin (Latn)CLDR 44100% (falls back to swe-SE)
swe-SESwedishSvenskaEuropeLTRLatin (Latn)older, hand-made100%
syr-IQSyriac (Iraq)ܣܘܪܝܝܐ (ܥܝܪܩ)Middle EastRTLSyriac (Syrc)CLDR 44100%
syr-SYSyriac (Syria)ܣܘܪܝܝܐ (ܣܘܪܝܐ)Middle EastRTLSyriac (Syrc)CLDR 44100% (falls back to syr-IQ)
tam-INTamil (India)தமிழ் (இந்தியா)South AsiaLTRTamil (Taml)CLDR 44100%
tam-LKTamil (Sri Lanka)தமிழ் (இலங்கை)South AsiaLTRTamil (Taml)CLDR 44100% (falls back to tam-IN)
tam-SGTamil (Singapore)தமிழ் (சிங்கப்பூர்)Southeast AsiaLTRTamil (Taml)CLDR 44100% (falls back to tam-IN)
tat-RUTatarТатарEuropeLTRCyrillic (Cyrl)CLDR 44100%
tel-INTeluguతెలుగుSouth AsiaLTRTelugu (Telu)CLDR 44100%
tgk-TJTajikТоҷикӣCentral Asia and CaucasusLTRCyrillic (Cyrl)CLDR 44100%
tha-THThaiไทยSoutheast AsiaLTRThai (Thai)CLDR 44100%
tir-ETTigrinyaትግርኛAfricaLTREthiopic (Ethi)CLDR 44100%
tlh-QOKlingontlhIngan HolWorldwide (fictional)LTRLatin (Latn)hand-made100%
tli-USTlingitLingítAmericasLTRLatin (Latn)hand-made—
ton-TOTonganLea fakatongaOceaniaLTRLatin (Latn)CLDR 44100%
tsi-USTsimshianSm'algyaxAmericasLTRLatin (Latn)hand-made—
tuk-TMTurkmenTürkmen diliCentral Asia and CaucasusLTRLatin (Latn)CLDR 44100%
tur-CYTurkish (Cyprus)Türkçe (Kıbrıs)EuropeLTRLatin (Latn)CLDR 44100% (falls back to tur-TR)
tur-TRTurkishTürkçeMiddle EastLTRLatin (Latn)older, hand-made100%
uig-CNUyghurئۇيغۇرچەEast AsiaRTLArabic (Arab)CLDR 44100%
ukr-UAUkrainianУкраїнськаEuropeLTRCyrillic (Cyrl)older, hand-made, fixed in 6.0.15100%
urd-INUrdu (India)اردو (بھارت)South AsiaRTLArabic (Arab)CLDR 44100% (falls back to urd-PK)
urd-PKUrdu (Pakistan)اردو (پاکستان)South AsiaRTLArabic (Arab)CLDR 44100%
uzb-UZUzbekO‘zbekCentral Asia and CaucasusLTRLatin (Latn)CLDR 44100%
vie-VNVietnameseTiếng ViệtSoutheast AsiaLTRLatin (Latn)CLDR 44100%
wol-SNWolofWolofAfricaLTRLatin (Latn)CLDR 44100%
xho-ZAXhosaIsiXhosaAfricaLTRLatin (Latn)CLDR 44100%
yid-USYiddishייִדישAmericasRTLHebrew (Hebr)CLDR 44100%
yor-NGYorubaÈdè YorùbáAfricaLTRLatin (Latn)CLDR 44100%
yua-MXYucatec MayaMaaya t'aanAmericasLTRLatin (Latn)hand-made—
zgh-MAStandard Moroccan TamazightⵜⴰⵎⴰⵣⵉⵖⵜAfricaLTRTifinagh (Tfng)CLDR 44100%
zul-ZAZuluIsiZuluAfricaLTRLatin (Latn)CLDR 44100%

How the generated files were made, and where they differ from CLDR, is in section 7. Notes on single locales:

  • Latin (lat-VA) is a classical language: no country speaks it as a mother tongue, and the Holy See (Vatican City), where it is an official language, stands as its country. CLDR 44 has no Latin data, so its numbers, currency (euro) and date patterns follow the Holy See's conventions (CLDR it_VA) and its names are written by hand: Latina, nominative month names (Ianuarius), the ecclesiastical day names the Holy See uses (Dominica, Feria secunda ... Sabbatum); the long date shows the short month (Feria tertia, 14 Nov. 2023). Its country names are CLDR's English ones.
  • Hebrew (heb-IL) existed before; its file named windows-1255 and held double-encoded month and day names. It was regenerated from CLDR he_IL in 6.0.15 (UTF-8, he-IL, ₪, CLDR's Hebrew country names). hin-IN and kor-KR were regenerated as well: hin-IN had English names ("Hindi (Devnagari)", English months and days) and country names with characters lost to ?; kor-KR had an invalid long date (the year marker 년 before the year) and short day names equal to the long ones.
  • Fixed by hand in 6.0.15, the rest of the older file kept: chi-HK (its long date printed 月 twice, and it was the one file with a byte order mark), chi-CN (short Sunday 周日), ell-GR (native name Ελληνικά instead of "Greek (Hellenic)"), ukr-UA (Українська instead of "Ukrainian"; month names in the form used inside a date, 15 жовтня instead of 15 Жовтень, with the stand-alone form beside them). kat-GE lost a capital its generator had given it (Georgian has none in running text: ქართული).
  • Still to improve in older files: ser-SR and srp-RS mix English and native ("Serbian (Српски)", and srp-RS capitalizes its day names), chi-CN and chi-TW keep their old date patterns (2025年 十月 15日, readable but not CLDR's 2025年10月15日). The short month names of rus-RU (Янв, Май) are neither of CLDR's forms, and som-SO names the months in the traditional way (Bisha Tobnaad); these files have no stand-alone group for them yet.
  • Dhivehi (div-MV): ICU 74 has no Dhivehi data. Numbers, the rufiyaa (symbol Rf) and date patterns follow CLDR en_MV; the language name (ދިވެހި, English "Dhivehi", the Maldivian spelling), the currency name and the month and day names in Thaana are written by hand and need a native speaker's review. CLDR starts the week on Friday in the Maldives; eZLocale knows only Monday and Sunday, so the week starts on Sunday.
  • Yiddish (yid-US): CLDR 44 has Yiddish only as yi_UA (until CLDR 43 yi_001, "world"), and a locale code needs a two-letter country. The largest Yiddish-speaking community lives in the United States, so the file has CLDR's Yiddish names with the conventions and currency of the United States.
  • Imperial Aramaic (arc-IQ) and Hulaulá (huy-IL, Jewish Neo-Aramaic) have no CLDR data and are written in Hebrew square script. arc-IQ takes the conventions of CLDR syr_IQ (Iraqi dinar) and its Aramaic month and country names, transliterated from Syriac; the day names are the Aramaic ones (חד בשבא ... שבתא). huy-IL takes the conventions, month and country names of CLDR he_IL (new shekel) and the Jewish Aramaic day names (חד בשבא ... מעלי שבתא, שבתא). The language and currency names are written by hand; each file names the source of every value and needs a review.
  • Dari (fas-AF) is the Persian of Afghanistan, as in CLDR (fa_AF, display name "Dari", دری); fas-IR stays "Persian".
  • Central Kurdish (ckb-IQ, Sorani, Arabic script, right to left) has no ISO 639-2 code (639-2 has only kur for all of Kurdish, which kur-TR, Kurmanji in Latin script, already uses), so it takes its ISO 639-3 code.
  • Klingon (tlh-QO) is hand-made, for fun and as a test of a locale without CLDR data. tlh is the ISO 639-2 code of Klingon; QO lies in the ISO 3166 user-assigned range (QM to QZ), so the country is None (private-use region QO) and the HTTP tag is the bare tlh, which claims no real place (like eo for epo-EO). It has no currency (ISO 4217 XXX, sign ¤), numbers as eng-US, the 24-hour clock, Marc Okrand's day names (DaSjaj ... lojmItjaj) and the months as "month" plus a number (jar wa' ... jar wa'maH cha'), in the Latin transcription. It is offered in the A–Z list of the interface language choice only, in no group. The Klingon script pIqaD is not in Unicode proper (the ConScript Unicode Registry places it in the Private Use Area, U+F8D0 to U+F8FF) and is never used in interface texts or locale files; a site that wants it for decoration loads a ConScript-compatible font itself, while the text stays in the transcription.
  • Interlingua (ia_001) is not offered: CLDR has it only for the region "world" (001), and a locale code needs a two-letter country.
  • Test languages, marked [LanguageSettings] TestLanguage=true (Lorem Ipsum, qlo-ZZ), are listed last in the table, as "test language only", and counted nowhere in this document.

Scripts, fonts and line breaking

A locale file holds text only; whether a script shows depends on the fonts of the reader's system. The administration designs (admin4, admin4l and the classic admin share components.css) use system fonts only and download nothing. Their font token --a4-font keeps its Latin families first (so Latin text is unchanged) and then names, through --a4-font-intl, the common system fonts of the other scripts: Chinese, Japanese and Korean (--a4-font-cjk: PingFang, Hiragino, Microsoft YaHei and JhengHei, Yu Gothic, Meiryo, Malgun Gothic, Apple SD Gothic Neo, Noto Sans CJK), Thai (Leelawadee UI, Thonburi, Noto Sans Thai), Devanagari (Nirmala UI, Kohinoor Devanagari, Noto Sans Devanagari), Arabic and Hebrew (Segoe UI, Noto Sans Arabic, Geeza Pro, Noto Sans Hebrew, Arial Hebrew). Han characters are shared by Chinese, Japanese and Korean but drawn differently in each, so the order of --a4-font-cjk follows the interface language (:lang(ja), :lang(ko), :lang(zh-TW), :lang(zh-HK): that language's fonts first; Simplified Chinese first otherwise). The classic admin and the Admin UI add --a4-font-intl after their own Latin families. A font that also carries Latin letters (Droid Sans Fallback) is left out on purpose: on a system without the Latin families it would take over Latin text as well. Any script not covered falls back to what the system offers.

Line breaking follows the language of the page or of an element with lang:

html:lang(ja), [lang]:lang(ja) { line-break: strict; }
html:lang(ko), [lang]:lang(ko) { word-break: keep-all; overflow-wrap: break-word; }
html:lang(th|lo|km|my), [lang]:lang(th|lo|km|my) { overflow-wrap: break-word; }

Japanese avoids a break before small kana and closing punctuation; Korean breaks at the spaces between words, as it is set; Thai, Lao, Khmer and Burmese, written without spaces, break at the word boundaries of the browser's dictionary, with break-word as a safety net for a run it does not know. Chinese needs nothing: browsers break between ideographs. The Klingon script pIqaD is never used (see Klingon above).

Indigenous languages of the Americas

Since 6.0.15 the locales of 22 Indigenous languages of the Americas ship with Exponential, from the Arctic to the Andes. A locale file makes the language a content language: items, URL aliases and searches in the language, its own name in the language lists, and the dates, numbers and currency of its country. The administration shows these languages in English, or in Spanish where a siteaccess lists esl-ES as its interface language; see the help page for the setup.

LanguageOwn nameCodeWhereScript
Central Yup'ikYugtunesu-USAlaskaLatin
InupiaqIñupiatunipk-USAlaskaLatin
AleutUnangam Tunuuale-USAlaska (Aleutian and Pribilof Islands)Latin
AlutiiqSugt'stunems-USAlaska (Kodiak, Gulf coast)Latin
TlingitLingíttli-USSoutheast AlaskaLatin
HaidaXaad Kílhai-USSoutheast AlaskaLatin
Gwich'inDinjii Zhuh K'yàagwi-USInterior AlaskaLatin
TsimshianSm'algyaxtsi-USSoutheast AlaskaLatin
NavajoDiné Bizaadnav-USSouthwest United StatesLatin
CherokeeᏣᎳᎩchr-USOklahoma, North CarolinaCherokee syllabary
LakotaLakȟólʼiyapilkt-USGreat PlainsLatin
OjibweAnishinaabemowinoji-USGreat Lakes (United States)Latin
OjibweAnishinaabemowinoji-CAGreat Lakes (Canada)Latin
Cree (Plains Cree)nêhiyawêwincre-CACanadaLatin (Standard Roman Orthography)
Inuktitutᐃᓄᒃᑎᑐᑦiku-CANunavut, CanadaCanadian syllabics
MohawkKanien'kéhamoh-CAOntario and QuebecLatin
Nahuatl (Eastern Huasteca)Nawatlnah-MXMexicoLatin
Yucatec MayaMaaya t'aanyua-MXYucatán, MexicoLatin
K'iche'K'iche'quc-GTGuatemalaLatin
GuaraniAvañe'ẽgrn-PYParaguayLatin
AymaraAymar aruaym-BOBoliviaLatin
MapudungunMapudungunarn-CLChileLatin
  • Month and day names: where Unicode CLDR has data (Cherokee, Lakota) the file is generated from it. Navajo, Cherokee, Inuktitut, Cree, Ojibwe, Guarani and Mapudungun carry month and day names written by hand; the Alaska languages and Mohawk keep the English names, Aymara, Nahuatl, Yucatec Maya and K'iche' the Spanish ones, as texts in those languages commonly use them. Each file says so in its header.
  • Ojibwe has two locales, oji-CA and oji-US: the language is spoken on both sides of the border, and the two differ only in country, currency and date order.
  • Administration translations of Indigenous languages of the Americas: Quechua (que-PE), Guarani (grn-PY), Greenlandic (kal-GL) and, from the Pacific, Hawaiian (haw-US) are complete.
  • Scripts: Cherokee is written in its own syllabary (U+13A0 to U+13FF, U+AB70 to U+ABBF) and Inuktitut in Canadian syllabics (U+1400 to U+167F); every other language here uses Latin letters, some with special ones (ł, ŋ, x̱, ẽ, the glottal stop ʼ). Windows, macOS, iOS and Android ship fonts for both syllabaries; a public design that sets its own web font names a fallback such as Noto Sans Cherokee or Noto Sans Canadian Aboriginal.

4. Every administration translation

Measured on 16 October 2026 (the ten translations added on 18 October 2026 against the 17,763 strings of that day, the three added on 19 October 2026 against the 17,834 strings of that day, Swahili, added on 23 October 2026, against the 18,404 strings of that day, the eighteen added or completed on 24 October 2026 against the 18,411 strings of that day), in two ways (both rounded down). On 26 October 2026 every translation was measured again against the 18,811 current strings: all 73 translate at least 99% of them, 38 every one (Yiddish, Vietnamese and Indonesian, added the same day, against 18,812); the other 35 lack only the 22 strings of the data table module (kernel/datatable/module), and kal-GL also leaves 25 longer sentences unfinished:

  • Own file finished: finished messages of the file divided by all its messages, obsolete ones left out, each context, source and comment counted once. php bin/php/ezchecktranslation.php <code> prints a similar "Percent finished".
  • Current strings translated: how many of the 18,839 strings in share/translations/untranslated/translation.ts (every string the kernel and its designs ask for today) the file translates, same context, source and comment, finished and not empty. This is what an administrator sees, and what the interface language choice shows as coverage: the rest shows in English.

Most translations were complete for the strings of older releases; 6.0 added about 10,000 strings (admin4, the new Setup pages, audit, packages, jobs and more) that only eng-US, ger-DE and the six machine-assisted translations translate so far. English is the source language: the two strings eng-US lacks show their English source text, and the interface language choice counts English as 100%.

TranslationOwn file finishedCurrent strings translated
afr-ZA100% (18,844 of 18,844)100% (18,839 of 18,839)
amh-ET100% (18,839 of 18,839)100% (18,839 of 18,839)
ara-SA100% (18,844 of 18,844)100% (18,839 of 18,839)
ben-BD100% (18,839 of 18,839)100% (18,839 of 18,839)
bos-BA100% (18,844 of 18,844)100% (18,839 of 18,839)
bul-BG100% (18,844 of 18,844)100% (18,839 of 18,839)
cat-ES100% (18,844 of 18,844)100% (18,839 of 18,839)
chi-CN100% (18,839 of 18,839)100% (18,839 of 18,839)
chi-TW100% (18,839 of 18,839)100% (18,839 of 18,839)
cro-HR100% (18,840 of 18,840)100% (18,839 of 18,839)
cze-CZ100% (18,841 of 18,841)100% (18,839 of 18,839)
dan-DK100% (18,841 of 18,841)100% (18,839 of 18,839)
dsb-DE100% (18,844 of 18,844)100% (18,839 of 18,839)
dut-NL100% (18,840 of 18,840)100% (18,839 of 18,839)
ell-GR100% (18,844 of 18,844)100% (18,839 of 18,839)
eng-AU100% (18,844 of 18,844)100% (18,839 of 18,839)
eng-US100% (18,844 of 18,844)100% (18,839 of 18,839)
esl-ES100% (18,844 of 18,844)100% (18,839 of 18,839)
esl-MX100% (18,844 of 18,844)100% (18,839 of 18,839)
est-EE100% (18,844 of 18,844)100% (18,839 of 18,839)
fas-IR100% (18,839 of 18,839)100% (18,839 of 18,839)
fin-FI100% (18,844 of 18,844)100% (18,839 of 18,839)
fre-FR100% (18,844 of 18,844)100% (18,839 of 18,839)
ger-DE100% (18,850 of 18,850)100% (18,839 of 18,839)
gle-IE100% (18,844 of 18,844)100% (18,839 of 18,839)
guj-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
hau-NG100% (18,839 of 18,839)100% (18,839 of 18,839)
heb-IL100% (18,844 of 18,844)100% (18,839 of 18,839)
hin-IN100% (18,844 of 18,844)100% (18,839 of 18,839)
hun-HU100% (18,844 of 18,844)100% (18,839 of 18,839)
ibo-NG100% (18,839 of 18,839)100% (18,839 of 18,839)
ind-ID100% (18,839 of 18,839)100% (18,839 of 18,839)
isl-IS100% (18,844 of 18,844)100% (18,839 of 18,839)
ita-IT100% (18,840 of 18,840)100% (18,839 of 18,839)
jpn-JP100% (18,844 of 18,844)100% (18,839 of 18,839)
kal-GL100% (18,844 of 18,844)100% (18,839 of 18,839)
kan-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
kor-KR100% (18,844 of 18,844)100% (18,839 of 18,839)
kur-TR100% (18,839 of 18,839)100% (18,839 of 18,839)
lao-LA100% (18,839 of 18,839)100% (18,839 of 18,839)
lat-VA100% (18,844 of 18,844)100% (18,839 of 18,839)
lav-LV100% (18,844 of 18,844)100% (18,839 of 18,839)
lit-LT100% (18,844 of 18,844)100% (18,839 of 18,839)
mal-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
mar-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
mlt-MT100% (18,844 of 18,844)100% (18,839 of 18,839)
msa-MY100% (18,839 of 18,839)100% (18,839 of 18,839)
nor-NO100% (18,840 of 18,840)100% (18,839 of 18,839)
ori-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
pan-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
pol-PL100% (18,840 of 18,840)100% (18,839 of 18,839)
por-BR100% (18,841 of 18,841)100% (18,839 of 18,839)
por-PT100% (18,844 of 18,844)100% (18,839 of 18,839)
pus-AF100% (18,839 of 18,839)100% (18,839 of 18,839)
ron-RO100% (18,844 of 18,844)100% (18,839 of 18,839)
rus-RU100% (18,844 of 18,844)100% (18,839 of 18,839)
ser-SR100% (18,844 of 18,844)100% (18,839 of 18,839)
slk-SK100% (18,844 of 18,844)100% (18,839 of 18,839)
slv-SI100% (18,844 of 18,844)100% (18,839 of 18,839)
som-SO100% (18,839 of 18,839)100% (18,839 of 18,839)
sqi-AL100% (18,844 of 18,844)100% (18,839 of 18,839)
srp-RS100% (18,844 of 18,844)100% (18,839 of 18,839)
swa-KE100% (18,839 of 18,839)100% (18,839 of 18,839)
swe-SE100% (18,840 of 18,840)100% (18,839 of 18,839)
tam-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
tel-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
tha-TH100% (18,839 of 18,839)100% (18,839 of 18,839)
tlh-QO100% (18,844 of 18,844)100% (18,839 of 18,839)
tur-TR100% (18,840 of 18,840)100% (18,839 of 18,839)
ukr-UA100% (18,844 of 18,844)100% (18,839 of 18,839)
urd-PK100% (18,839 of 18,839)100% (18,839 of 18,839)
vie-VN100% (18,839 of 18,839)100% (18,839 of 18,839)
xho-ZA100% (18,839 of 18,839)100% (18,839 of 18,839)
yid-US100% (18,839 of 18,839)100% (18,839 of 18,839)
yor-NG100% (18,839 of 18,839)100% (18,839 of 18,839)
zul-ZA100% (18,839 of 18,839)100% (18,839 of 18,839)
jav-ID100% (18,811 of 18,811)99% (18,809 of 18,839)
eng-NZfalls back to eng-AU100% (falls back to eng-AU)
nno-NOfalls back to nor-NO100% (falls back to nor-NO)
chi-HKfalls back to chi-TW100% (falls back to chi-TW)
msa-SGfalls back to msa-MY100% (falls back to msa-MY)
msa-BNfalls back to msa-MY100% (falls back to msa-MY)
syr-IQ100% (18,812 of 18,812)100% (18,812 of 18,812)
syr-SYfalls back to syr-IQ100% (falls back to syr-IQ)
arc-IQ100% (18,812 of 18,812)100% (18,812 of 18,812)
huy-IL100% (18,812 of 18,812)100% (18,812 of 18,812)
sun-ID100% (18,812 of 18,812)100% (18,812 of 18,812)
nep-NP100% (18,812 of 18,812)100% (18,812 of 18,812)
bho-IN100% (18,812 of 18,812)100% (18,812 of 18,812)
mai-IN100% (18,812 of 18,812)100% (18,812 of 18,812)
pcm-NG100% (18,812 of 18,812)100% (18,812 of 18,812)
kat-GE100% (18,839 of 18,839)100% (18,839 of 18,839)
sna-ZW100% (18,839 of 18,839)100% (18,839 of 18,839)
kaz-KZ100% (18,839 of 18,839)100% (18,839 of 18,839)
gla-GB100% (18,839 of 18,839)100% (18,839 of 18,839)
mri-NZ100% (18,839 of 18,839)100% (18,839 of 18,839)
fil-PH100% (18,839 of 18,839)100% (18,839 of 18,839)
che-RU100% (18,839 of 18,839)100% (18,839 of 18,839)
snd-PK100% (18,839 of 18,839)100% (18,839 of 18,839)
pnb-PK100% (18,839 of 18,839)100% (18,839 of 18,839)
uzb-UZ100% (18,839 of 18,839)100% (18,839 of 18,839)
mya-MM100% (18,839 of 18,839)100% (18,839 of 18,839)
haw-US100% (18,839 of 18,839)100% (18,839 of 18,839)
hye-AM100% (18,839 of 18,839)100% (18,839 of 18,839)
lin-CD100% (18,839 of 18,839)100% (18,839 of 18,839)
ful-SN100% (18,839 of 18,839)100% (18,839 of 18,839)
orm-ET100% (18,839 of 18,839)100% (18,839 of 18,839)
aze-AZ100% (18,839 of 18,839)100% (18,839 of 18,839)
aka-GH100% (18,839 of 18,839)100% (18,839 of 18,839)
sin-LK100% (18,839 of 18,839)100% (18,839 of 18,839)
khm-KH100% (18,839 of 18,839)100% (18,839 of 18,839)
asm-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
kik-KE100% (18,839 of 18,839)100% (18,839 of 18,839)
uig-CN100% (18,839 of 18,839)100% (18,839 of 18,839)
kin-RW100% (18,839 of 18,839)100% (18,839 of 18,839)
ceb-PH100% (18,839 of 18,839)100% (18,839 of 18,839)
ckb-IQ100% (18,839 of 18,839)100% (18,839 of 18,839)
tir-ET100% (18,839 of 18,839)100% (18,839 of 18,839)
mlg-MG100% (18,839 of 18,839)100% (18,839 of 18,839)
run-BI100% (18,839 of 18,839)100% (18,839 of 18,839)
tgk-TJ100% (18,839 of 18,839)100% (18,839 of 18,839)
bod-CN100% (18,839 of 18,839)100% (18,839 of 18,839)
bel-BY100% (18,839 of 18,839)100% (18,839 of 18,839)
mon-MN100% (18,839 of 18,839)100% (18,839 of 18,839)
glg-ES100% (18,839 of 18,839)100% (18,839 of 18,839)
kir-KG100% (18,839 of 18,839)100% (18,839 of 18,839)
eus-ES100% (18,839 of 18,839)100% (18,839 of 18,839)
tat-RU100% (18,839 of 18,839)100% (18,839 of 18,839)
cym-GB100% (18,839 of 18,839)100% (18,839 of 18,839)
tuk-TM100% (18,839 of 18,839)100% (18,839 of 18,839)
mkd-MK100% (18,839 of 18,839)100% (18,839 of 18,839)
lug-UG100% (18,839 of 18,839)100% (18,839 of 18,839)
ltz-LU100% (18,839 of 18,839)100% (18,839 of 18,839)
wol-SN100% (18,839 of 18,839)100% (18,839 of 18,839)
kor-KP100% (18,839 of 18,839)100% (18,839 of 18,839)
ast-ES100% (18,839 of 18,839)100% (18,839 of 18,839)
fas-AF100% (18,839 of 18,839)100% (18,839 of 18,839)
bam-ML100% (18,839 of 18,839)100% (18,839 of 18,839)
dzo-BT100% (18,839 of 18,839)100% (18,839 of 18,839)
bre-FR100% (18,839 of 18,839)100% (18,839 of 18,839)
ewe-GH100% (18,839 of 18,839)100% (18,839 of 18,839)
oci-FR100% (18,839 of 18,839)100% (18,839 of 18,839)
kab-DZ100% (18,839 of 18,839)100% (18,839 of 18,839)
div-MV100% (18,839 of 18,839)100% (18,839 of 18,839)
kok-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
roh-CH100% (18,839 of 18,839)100% (18,839 of 18,839)
zgh-MA100% (18,839 of 18,839)100% (18,839 of 18,839)
hsb-DE100% (18,839 of 18,839)100% (18,839 of 18,839)
mni-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
fry-NL100% (18,839 of 18,839)100% (18,839 of 18,839)
doi-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
fao-FO100% (18,839 of 18,839)100% (18,839 of 18,839)
nqo-GN100% (18,839 of 18,839)100% (18,839 of 18,839)
kas-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
sme-NO100% (18,839 of 18,839)100% (18,839 of 18,839)
que-PE100% (18,839 of 18,839)100% (18,839 of 18,839)
epo-EO100% (18,839 of 18,839)100% (18,839 of 18,839)
brx-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
ton-TO100% (18,839 of 18,839)100% (18,839 of 18,839)
sat-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
san-IN100% (18,839 of 18,839)100% (18,839 of 18,839)
grn-PY100% (18,839 of 18,839)100% (18,839 of 18,839)

Notes:

  • Sanskrit (san-IN, संस्कृत भाषा) was added on 28 October 2026, machine-assisted, in modern standard Sanskrit in Devanagari as used in Sanskrit software localisation, with action nouns on buttons (संरक्षणम्, रद्दीकरणम्, निरसनम्, सम्पादनम्), the polite imperative with कृपया in instructions, the danda as sentence end and sandhi applied so that placeholders and Latin words stay free, Hindi (hin-IN) serving only to check modern terms, with a glossary (share/translations/san-IN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Santali (sat-IN, ᱥᱟᱱᱛᱟᱲᱤ) was added on 28 October 2026, machine-assisted, in standard written Santali in the Ol Chiki script with ᱾ as sentence end and Latin digits, Santali grammar, the bare verb on buttons (ᱨᱟᱠᱷᱟᱣ, ᱵᱟᱛᱟᱞ, ᱢᱮᱴᱟᱣ, ᱥᱟᱯᱲᱟᱣ) and placeholders that stand free, Bengali (ben-BD) and Hindi (hin-IN) serving only to check terminology, with a glossary (share/translations/sat-IN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Tongan (ton-TO, lea fakatonga) was added on 28 October 2026, machine-assisted, in the official Tongan alphabet with the fakauʻa ʻ and the macron vowels ā, ē, ī, ō and ū, the polite common register, the address koe, the bare verb on buttons (Tauhi, Tamateʻi, Fakatonutonu) and computing loan words from English in Tongan spelling (faile, sēva, kēsi), with a glossary (share/translations/ton-TO/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Bodo (brx-IN, बर’) was added on 28 October 2026, machine-assisted, in standard written Bodo in Devanagari with Bodo grammar rather than Assamese or Hindi, the bare verb stem on buttons (रैखा, बन्द, मेटा, सोलोंथाय), the polite request with नाजा and the full stop as sentence end, Assamese (asm-IN) and Hindi (hin-IN) serving only to check terminology, with a glossary (share/translations/brx-IN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Esperanto (epo-EO) was added on 28 October 2026, machine-assisted, following the Fundamento with the established computing vocabulary of the Esperanto localisations, the address vi, the infinitive on buttons (Konservi, Nuligi, Forigi, Redakti), the letters ĉ ĝ ĥ ĵ ŝ ŭ and placeholders that never take an ending, with a glossary (share/translations/epo-EO/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Guarani (grn-PY, Avañe'ẽ) was added on 3 November 2026, machine-assisted, in Paraguayan Guarani and the official alphabet of the Academia de la Lengua Guaraní (nasal vowels with the tilde, the puso as a straight apostrophe), the address nde, the imperative on buttons (Eñongatu, Embogue, Embosako'i), the Academia's terms where it has one and the established Paraguayan Spanish loan where Guarani has none (marked in the glossary), and suffixes joined to placeholders with a hyphen, with a glossary (share/translations/grn-PY/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete.
  • Quechua (que-PE, Runasimi) was added on 28 October 2026, machine-assisted, in Southern Quechua and the official three-vowel alphabet of Peru, the address qam with the possessive -yki, the imperative on buttons (Waqaychay, Chinkachiy, Hukchay), Spanish loan words in Quechua spelling where Quechua has none, and suffixes joined to placeholders with a hyphen, with a glossary (share/translations/que-PE/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Northern Sami (sme-NO, davvisámegiella) was added on 28 October 2026, machine-assisted, in the common written standard with the computing terms of the Sami localisations, the address don, the infinitive on buttons (Vurket, Gaskkalduhttit, Sihkkut, Rievdadit), Sami rather than Norwegian or Finnish words and placeholders that never take a case ending, with a glossary (share/translations/sme-NO/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Kashmiri (kas-IN, کٲشُر) was added on 28 October 2026, machine-assisted, in standard written Kashmiri in the Perso-Arabic script, right to left, with the Kashmiri vowel letters of the standard orthography, Kashmiri grammar rather than Urdu, the polite imperative on buttons (محفوظ کٔرِو, منسوٗخ کٔرِو, مٹٲوِو, تَرمیم کٔرِو) and placeholders that stand free, Urdu (urd-PK) serving only to check terminology, with a glossary (share/translations/kas-IN/GUIDE.md); "Login" in the user, session and audit lists is the login name. The kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • N’Ko (nqo-GN, ߒߞߏ) was added on 28 October 2026, machine-assisted: the common Manding language in the N’Ko script, right to left, without tone marks, with the terms of the Bambara glossary written in N’Ko letters, the address ߌ and the bare verb on buttons (ߡߊߙߊ, ߘߊߓߌߟߊ, ߖߐߛߌ), with a guide (share/translations/nqo-GN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Faroese (fao-FO, føroyskt) was added on 28 October 2026, machine-assisted, in standard written Faroese with the computing terms of the Faroese term work, the address tú, the infinitive on buttons (Goyma, Ógilda, Strika, Rætta), Faroese rather than Danish or Icelandic forms and placeholders that never take a case ending, with a glossary (share/translations/fao-FO/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Dogri (doi-IN, डोगरी) was added on 28 October 2026, machine-assisted, in standard written Dogri in Devanagari with Dogri grammar and postpositions rather than Hindi ones, the polite address tus, the polite imperative on buttons (सहेजो, रद्द करो, मेटो, संपादन करो) and the danda as sentence end, Hindi (hin-IN) and Western Punjabi (pnb-PK) serving only to check terminology, with a glossary (share/translations/doi-IN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Western Frisian (fry-NL, Frysk) was added on 28 October 2026, machine-assisted, in the official spelling of 2015 with the computing terms of the Frisian localisations, the polite address jo, the infinitive on buttons (Bewarje, Annulearje, Fuortsmite, Bewurkje) and Frisian words rather than Dutch ones, with a glossary (share/translations/fry-NL/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Manipuri (mni-IN, মৈতৈলোন্) was added on 28 October 2026, machine-assisted, in standard written Meiteilon in the Bengali script as the locale has it, with Meitei grammar and suffixes, the polite request on instructions, the verbal noun on buttons (থম্বা, কেন্সেল তৌবা, ফাহনবা, এডিট তৌবা) and placeholders that never take a suffix, Bengali (ben-BD) and Assamese (asm-IN) serving only to check terminology, with a glossary (share/translations/mni-IN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Upper Sorbian (hsb-DE, hornjoserbšćina) was added on 28 October 2026, machine-assisted, in standard Upper Sorbian with the vocabulary of the Upper Sorbian dictionaries and localisations, the courtesy form Wy with its capital, the infinitive on buttons (Składować, Přetorhnyć, Zhašeć, Wobdźěłać), Upper Sorbian rather than Lower Sorbian forms and placeholders that are never declined, with a glossary (share/translations/hsb-DE/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Standard Moroccan Tamazight (zgh-MA, ⵜⴰⵎⴰⵣⵉⵖⵜ) was added on 28 October 2026, machine-assisted, in the Tifinagh alphabet of IRCAM and its standard vocabulary, the address in the second person singular, the imperative on buttons (ⵃⴹⵓ, ⵙⵔ, ⵙⵙⴼⴹ, ⵙⵏⴼⵍ) and product names, codes and acronyms in Latin letters, with a glossary (share/translations/zgh-MA/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Konkani (kok-IN, कोंकणी) was added on 28 October 2026, machine-assisted, in standard written Konkani in Devanagari, the official script of Goa, with the polite address tumi, the polite imperative on buttons (जतन करात, रद्द करात, मेटयात, संपादन करात) and Konkani forms rather than Marathi ones, Marathi (mar-IN) serving only to check terminology, with a glossary (share/translations/kok-IN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Dhivehi (div-MV, ދިވެހި) was added on 28 October 2026, machine-assisted, in standard written Dhivehi in the Thaana script, right to left, in the polite register of Maldivian government texts, with buttons in the polite imperative (ރައްކާކުރޭ, ކެންސަލްކުރޭ, ފޮހެލާ, އެޑިޓްކުރޭ), Arabic loans where Dhivehi uses them and placeholders that stand free, with a glossary (share/translations/div-MV/GUIDE.md); "Login" in the user, session and audit lists is the login name. The kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Kabyle (kab-DZ, Taqbaylit) was added on 28 October 2026, machine-assisted, in the Berber Latin alphabet of Kabyle with the letters č, ḍ, ǧ, ḥ, ɣ, ṛ, ṣ, ṭ, ẓ and ɛ, the address in the second person singular, the imperative on buttons (Sekles, Sefsex, Kkes, Ẓreg) and the computing terms of the Kabyle localisations of Mozilla and LibreOffice (afaylu, aqeddac, tazarkatut), with a glossary (share/translations/kab-DZ/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Romansh (roh-CH, rumantsch) was added on 28 October 2026, machine-assisted, in the common written standard Rumantsch Grischun with the terms of the Pledari Grond and the Romansh localisations, the polite address Vus, the infinitive on buttons (Memorisar, Interrumper, Stizzar, Modifitgar) and Romansh words rather than German or Italian ones, with a glossary (share/translations/roh-CH/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Occitan (oci-FR, occitan) was added on 28 October 2026, machine-assisted, in its Languedocien form and the classical spelling of the Conselh de la Lenga Occitana, with the computing terms of the Occitan localisations, the polite address vos, the infinitive on buttons (Enregistrar, Anullar, Suprimir, Modificar) and Occitan words rather than French or Catalan ones, with a glossary (share/translations/oci-FR/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Ewe (ewe-GH, Eʋegbe) was added on 28 October 2026, machine-assisted, in the Ewe alphabet with the letters ɖ, ɛ, ƒ, ɣ, ŋ, ɔ and ʋ, the address wò, the bare verb on buttons (Dzra ɖo, Tutu ɖa, Trɔ asi le eŋu) and computing loan words from English in Ewe spelling (faɛl, sɛva, kase), with a glossary (share/translations/ewe-GH/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Breton (bre-FR, brezhoneg) was added on 27 October 2026, machine-assisted, in the unified spelling (peurunvan) with the computing terms of the Ofis Publik ar Brezhoneg and of the Breton localisations, the polite address c'hwi, the verb-noun on buttons (Enrollañ, Nullañ, Dilemel, Kemmañ), the mutations of the grammar and placeholders that never mutate, with a glossary (share/translations/bre-FR/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Dzongkha (dzo-BT, རྫོང་ཁ) was added on 27 October 2026, machine-assisted, in standard written Dzongkha in the Tibetan script with tsheg and shad, the polite neutral register of Bhutanese government texts, the bare verb on buttons (སྲུང་བཞག, ཆ་མེད་གཏང་།, བཏོན་གཏང་།, ཞུན་དག) and Dzongkha computing terms, Tibetan (bod-CN) serving only to check terminology, with a glossary (share/translations/dzo-BT/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Bambara (bam-ML, Bamanankan) was added on 28 October 2026, machine-assisted, in the official Latin alphabet of Mali with the letters ɛ, ɔ, ɲ and ŋ, the address i, the bare verb on buttons (Mara, Dabila, Jɔsi, Yɛlɛma) and computing loan words from French in Bambara spelling (fisiye, dosiye, sɛriwɛri), with a glossary (share/translations/bam-ML/GUIDE.md) that the N'Ko translation shares; the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Dari (fas-AF, دری) has had its own catalogue since 27 October 2026, machine-assisted, adapted row by row from the complete Iranian Persian catalogue to Afghan usage: معلومات for information, بلی and نخیر, the Afghan spelling of loanwords (ویب، انترنت، کمپیوتر، تیلفون) and the words Afghan writing uses where Iranian Persian has its own (فولدر، لینک، آدرس، رمز عبور، فرمایش for a shop order, تخلص, ولایت), in Arabic script, right to left, with a glossary (share/translations/fas-AF/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete, and the locale no longer falls back to fas-IR. A review by native speakers is welcome.
  • Asturian (ast-ES, asturianu) was added on 27 October 2026, machine-assisted, in the standard of the Academia de la Llingua Asturiana with the computing terms of the Asturian localisations, the address tu, the infinitive on buttons (Guardar, Encaboxar, Desaniciar, Editar) and Asturian words rather than Spanish ones, with a glossary (share/translations/ast-ES/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Korean (North) (kor-KP, 조선말) was added on 27 October 2026, machine-assisted, adapted row by row from the complete South Korean catalogue to the cultured language of the DPRK (문화어): the initial ㄹ and ㄴ of Sino-Korean words kept (리용, 련결, 렬), ‑였‑ after ㅣ and ㅐ (되였습니다), no sai-siot (수자), dependent nouns and auxiliary verbs attached (할수 있습니다, 확인해주십시오), 《》 quotation marks and the North Korean terms where they differ (화일, 클라스, 그루빠, 페지, 자료기지, 차림표, 봉사기, 오유, 찰칵), with a glossary (share/translations/kor-KP/GUIDE.md) that lists the computing terms kept from kor-KR where North Korean usage is uncertain; the kernel, ezoe and ezjscore catalogues are complete, and the locale is generated from CLDR (ko_KP). kor-KP does not fall back to kor-KR. A review by native speakers is welcome.
  • Wolof (wol-SN) was added on 27 October 2026, machine-assisted, in the official Latin orthography of Senegal with the letters à, é, ë, ó, ñ and ŋ, the address yow, the short imperative on buttons (Denc, Neenal, Far, Soppi) and computing loan words from French in Wolof spelling (fisie, dosie, serwëer), with a glossary (share/translations/wol-SN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Luxembourgish (ltz-LU, Lëtzebuergesch) was added on 27 October 2026, machine-assisted, in the official orthography of 2019 with the n-rule, capitalised nouns, the polite address Dir, the infinitive on buttons (Späicheren, Ofbriechen, Läschen, Änneren) and Luxembourgish words, many of them from French, rather than the German ones of ger-DE, with a glossary (share/translations/ltz-LU/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Ganda (lug-UG, Luganda) was added on 27 October 2026, machine-assisted, in the standard Luganda orthography with double vowels and consonants and the letter ŋ, the address ggwe, the short imperative on buttons (Tereka, Sazaamu, Sangula, Longoosa) and computing loan words in Luganda spelling (seeva, fayiro, kiraasi), with a glossary (share/translations/lug-UG/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Macedonian (mkd-MK, македонски) was added on 27 October 2026, machine-assisted, in the standard literary language in the Macedonian Cyrillic alphabet (ѓ, ќ, ѕ, џ, љ, њ, ј), the polite address Вие, the imperative on buttons (Зачувај, Откажи, Избриши, Уреди) and Macedonian words rather than the Bulgarian or Serbian ones of bul-BG and srp-RS, with a glossary (share/translations/mkd-MK/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Turkmen (tuk-TM, Türkmen dili) was added on 27 October 2026, machine-assisted, in literary Turkmen in the Latin alphabet of Turkmenistan with the letters ç, ä, ž, ň, ö, ş, ü and ý, the polite address Siz, the short imperative on buttons (Ýatda sakla, Ýatyr, Poz, Redaktirle) and the polite imperative in -yň/-iň in instructions, with a glossary (share/translations/tuk-TM/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Welsh (cym-GB, Cymraeg) was added on 27 October 2026, machine-assisted, in standard written Welsh with the computing terms of the Welsh Government's term bank, the polite address chi, verb-nouns on buttons (Cadw, Canslo, Dileu, Golygu), the mutations of the grammar and placeholders that never mutate, with a glossary (share/translations/cym-GB/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Tatar (tat-RU, Татар теле) was added on 27 October 2026, machine-assisted, in literary Tatar in the Cyrillic script with the letters ә, ө, ү, җ, ң and һ, the polite address Сез, the verbal noun on buttons (Саклау, Баш тарту, Бетерү, Төзәтү) and the polite imperative in -гыз/-гез in instructions, with a glossary (share/translations/tat-RU/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Basque (eus-ES, euskara) was added on 27 October 2026, machine-assisted, in the unified standard (euskara batua) with the computing terms of the Basque localisations, the address zu, the dictionary form of the verb on buttons (Gorde, Utzi, Ezabatu, Editatu), placeholders kept free of case suffixes and Basque words rather than the Spanish ones of esl-ES, with a glossary (share/translations/eus-ES/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Kyrgyz (kir-KG, Кыргызча) was added on 27 October 2026, machine-assisted, in literary Kyrgyz in the Cyrillic script with the letters ң, ө and ү, the polite address Сиз, the verbal noun on buttons (Сактоо, Жокко чыгаруу, Жок кылуу, Түзөтүү) and the polite imperative in -ңыз in instructions, with a glossary (share/translations/kir-KG/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Galician (glg-ES, galego) was added on 27 October 2026, machine-assisted, in the norm of the Real Academia Galega with the computing terms of the Galician free-software localisations (ficheiro, contrasinal, cartafol, ligazón), the address vostede, the infinitive on buttons (Gardar, Cancelar, Eliminar, Editar) and Galician words rather than the Spanish or Portuguese ones of esl-ES and por-PT, with a glossary (share/translations/glg-ES/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Mongolian (mon-MN, Монгол хэл) was added on 27 October 2026, machine-assisted, in Khalkha Mongolian in the Cyrillic script with the letters ө and ү, the polite address Та, the verb in -х on buttons (Хадгалах, Цуцлах, Устгах, Засах) and the request in -на уу / -нэ үү, with a glossary (share/translations/mon-MN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Belarusian (bel-BY, беларуская) was added on 27 October 2026, machine-assisted, in the official orthography of 2008 with і, ў and the apostrophe, the polite address вы, the infinitive on buttons (Захаваць, Скасаваць, Выдаліць, Рэдагаваць) and Belarusian words rather than the Russian ones of rus-RU, with a glossary (share/translations/bel-BY/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Tibetan (bod-CN, བོད་སྐད་) was added on 27 October 2026, machine-assisted, in modern standard written Tibetan close to the Lhasa standard, in the Tibetan script with the tsheg between syllables and the shad as the sentence end, the established Tibetan computing terms and bare verbs on buttons, with a glossary (share/translations/bod-CN/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Kikuyu (kik-KE, Gĩkũyũ) was added on 27 October 2026, machine-assisted, in the standard orthography with the letters ĩ and ũ, the address wee, the short imperative on buttons (Iga, Tiga, Thiria, Cenjia) and loan words in Kikuyu spelling, mostly through Swahili (swa-KE), with a glossary (share/translations/kik-KE/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Hawaiian (haw-US) was added on 26 October 2026, machine-assisted, in the modern orthography with the ʻokina and the kahakō, with the computing words of the Hawaiian Lexicon Committee where they exist (terms without one were coined from Hawaiian roots and are marked "coined" in the glossary), the address ʻoe, bare verbs on buttons and a glossary (share/translations/haw-US/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome, above all of the coined terms.
  • Uzbek (uzb-UZ) was added on 26 October 2026, machine-assisted, in standard literary Uzbek in the Latin alphabet of 1995 with the polite address Siz, verbal nouns in -sh on buttons and Uzbek words rather than the Turkish ones of its relative tur-TR, with a glossary (share/translations/uzb-UZ/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Sindhi (snd-PK) was added on 26 October 2026, machine-assisted, in standard Sindhi in the Perso-Arabic script (right to left) with the polite address توهان, adapted from the Urdu catalogue (urd-PK) only for shared terms and written in Sindhi grammar, with a glossary (share/translations/snd-PK/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Western Punjabi (pnb-PK) was added on 26 October 2026, machine-assisted, in Punjabi as written in Pakistan in the Shahmukhi script (right to left): the Gurmukhi catalogue (pan-IN) transliterated and then adapted to Pakistani vocabulary, with the Urdu catalogue (urd-PK) as the reference for Perso-Arabic terms, and a glossary (share/translations/pnb-PK/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Burmese (mya-MM) was added on 26 October 2026, machine-assisted, in the formal written style (sentence endings သည် and ပါသည်, not the spoken တယ်), the address သင်, verbs in -ရန် on buttons and a glossary (share/translations/mya-MM/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Fula (ful-SN, Pulaar of Senegal), Lingala (lin-CD) and Oromo (orm-ET) were added on 26 October 2026, machine-assisted, each with a glossary (share/translations/ful-SN/GUIDE.md, lin-CD/GUIDE.md, orm-ET/GUIDE.md): Pulaar in the official Latin orthography of Senegal, with French loan words in French spelling for technical terms that have no Pulaar word; Lingala of Kinshasa, with the same rule for French terms; Oromo in the Qubee Latin alphabet. The kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is especially welcome, above all for Pulaar, which has little software vocabulary in common use.
  • Bhojpuri (bho-IN), Maithili (mai-IN) and Nepali (nep-NP) were added on 26 October 2026, machine-assisted, in Devanagari script, each with a glossary (share/translations/bho-IN/GUIDE.md, mai-IN/GUIDE.md, nep-NP/GUIDE.md). Bhojpuri and Maithili were adapted from the Hindi catalogue (hin-IN) for shared technical terms and are written in their own grammar; Nepali takes Nepali forms, not Hindi ones. A review by native speakers is welcome.
  • Nigerian Pidgin (pcm-NG) was added on 26 October 2026, machine-assisted, in the English-based spelling of the BBC News Pidgin service with Pidgin grammar (dey, don, go, na) rather than English with a few words changed, with a glossary (share/translations/pcm-NG/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Javanese (jav-ID) and Sundanese (sun-ID) were added on 26 October 2026, machine-assisted and adapted from the Indonesian catalogue (ind-ID) for shared technical terms, each with a glossary (share/translations/jav-ID/GUIDE.md, sun-ID/GUIDE.md): Javanese in ngoko alus (the everyday forms with respectful words for the user), Sundanese in the loma register with polite forms for the user's own actions. The kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Armenian (hye-AM) was added on 26 October 2026, machine-assisted, in Eastern Armenian with the formal address (Դուք), infinitives on buttons, the Armenian full stop ։ and question mark ՞, guillemets and placeholders standing free, with a glossary (share/translations/hye-AM/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is welcome.
  • Kazakh (kaz-KZ) was added on 26 October 2026, machine-assisted, in Cyrillic script (the script of the locale and of Kazakh software today; the move to the Latin alphabet decided in 2017 is planned up to about 2031) with the polite address (Сіз), verbal nouns on buttons and placeholders standing free, with a glossary (share/translations/kaz-KZ/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is welcome.
  • Shona (sna-ZW) was added on 26 October 2026, machine-assisted, in standard Shona with the respectful plural address (imi), verb stems on buttons, Shona loanwords for technical terms and placeholders standing free, with a glossary (share/translations/sna-ZW/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is especially welcome.
  • Georgian (kat-GE) was added on 26 October 2026, machine-assisted, in Mkhedruli script with the formal address (თქვენ), verbal nouns on buttons and placeholders standing free, with a glossary (share/translations/kat-GE/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is welcome.
  • Malay (msa-MY) was added on 26 October 2026, machine-assisted, in standard Malaysian Malay (Rumi script) with the polite address anda, the computing terms of Dewan Bahasa dan Pustaka and a glossary that marks where Malaysian usage differs from Indonesian (share/translations/msa-MY/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. msa-SG and msa-BN fall back to it. A review by a native speaker is welcome.
  • Thai (tha-TH) and Lao (lao-LA) were added on 26 October 2026, machine-assisted, in the polite, neutral register of current software without sentence-final particles, words written without spaces and placeholders standing free, each with a glossary (share/translations/tha-TH/GUIDE.md, share/translations/lao-LA/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by native speakers is welcome.
  • Aramaic was added on 26 October 2026, machine-assisted. syr-IQ is Modern Aramaic in Syriac script (Assyrian/Syriac), unvocalized and right to left, with the polite plural address and a glossary (share/translations/syr-IQ/GUIDE.md); syr-SY falls back to it. arc-IQ (Imperial Aramaic) and huy-IL (Hulaulá, Jewish Neo-Aramaic) are written in Hebrew square script and are no translations of their own: their catalogues are the syr-IQ text transliterated letter for letter (their GUIDE.md gives the mapping). The kernel, ezoe and ezjscore catalogues of all three are complete. A review by native speakers is welcome.
  • Yiddish (yid-US) was added on 26 October 2026, machine-assisted, in the YIVO orthography and right to left, with the formal address and a glossary (share/translations/yid-US/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is welcome.
  • Vietnamese (vie-VN) and Indonesian (ind-ID) were added on 26 October 2026, machine-assisted, each with a style guide and glossary (share/translations/vie-VN/GUIDE.md, share/translations/ind-ID/GUIDE.md): Vietnamese in a neutral register with "bạn" where a pronoun is needed, Indonesian in standard spelling (EYD) with the formal "Anda". The kernel, ezoe and ezjscore catalogues are complete; ind-ID no longer falls back to the source texts. A review by native speakers is welcome.
  • Scottish Gaelic (gla-GB) was added on 26 October 2026, machine-assisted, in the Gaelic Orthographic Conventions (grave accents only) with the formal "sibh" and a glossary in the Akerbeltz terminology (share/translations/gla-GB/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is welcome.
  • Māori (mri-NZ) was added on 26 October 2026, machine-assisted, in te reo Māori with macrons in the conventions of Te Taura Whiri i te Reo Māori and the register of New Zealand government software, with a glossary (share/translations/mri-NZ/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is welcome.
  • Filipino (fil-PH) was added on 26 October 2026, machine-assisted, in the KWF spelling with the address "mo" and the English loanwords Filipino software uses, with a glossary (share/translations/fil-PH/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is welcome.
  • Chechen (che-RU) was added on 26 October 2026, machine-assisted, in Cyrillic with the palochka (Ӏ, U+04C0) and the formal "шу", with a glossary (share/translations/che-RU/GUIDE.md); the kernel, ezoe and ezjscore catalogues are complete. A review by a native speaker is welcome.
  • Chinese (chi-CN, chi-TW) is complete since 24 October 2026, machine-assisted with a style guide and glossary per language (mainland: 帐户, 单击; Taiwan: 帳戶, 按一下, 垃圾桶). chi-HK has no catalogue of its own any more and falls back to chi-TW, chi-SG to chi-CN. A review by native speakers is welcome.
  • Bengali, Urdu, Marathi, Telugu, Tamil, Gujarati, Kannada, Malayalam, Punjabi (Gurmukhi), Odia, Hausa, Amharic, Yoruba, Igbo, isiZulu, Somali, isiXhosa were added on 26 October 2026, machine-assisted with a style guide and glossary per language. Ambiguous words have no per-context translations yet, and a few strings without a reliable term stay in English until a native speaker review (the allowlist says so). A review by native speakers is especially welcome for the African languages.
  • Russian, Catalan, Serbian, Bulgarian, Lithuanian, Portuguese (Portugal), Afrikaans were completed or added on 25 October 2026, machine-assisted with a style guide and glossary per language (share/translations/<code>/GUIDE.md) and checked by the same tests as every other language. ser-SR is not translated on its own: it is srp-RS transliterated letter for letter into Latin script. eng-AU is generated from the source texts with a reviewed word list (Australian spelling, GST instead of VAT). nno-NO (Nynorsk) and eng-NZ have no catalogue of their own any more and fall back to nor-NO and eng-AU. A review by native speakers is welcome.
  • Spanish (esl-ES, esl-MX) was complete for an older release; the strings added since were translated for 6.0.15, machine-assisted, in each country's own usage. A review by a native speaker is welcome.
  • Arabic (ara-SA) is new: Modern Standard Arabic for every Arab country, machine-assisted and checked against a glossary in a second pass; product names, file names and settings stay in Latin letters. A review by a native speaker is welcome.
  • Hebrew (heb-IL), Latin (lat-VA) and Klingon (tlh-QO) are complete since 6.0.15. They are machine-assisted and should get a review before a site relies on them: Hebrew by a native speaker, Latin by a Latinist (new terms follow the conventions of modern Latin software translations), Klingon in the style of the Klingon Language Institute. Klingon is written in the Latin transcription of Marc Okrand's The Klingon Dictionary (nej Search, mej Logout, pegh mu' Password, SeHlaw Setup, veQ Trash), with descriptive compounds for newer concepts.
  • French (fre-FR) is complete since 17 October 2026, measured against the 17,295 strings of the untranslated file of that day. Its older hand-made translations stay; the strings added since, and about ninety older ones that had lost a placeholder, a tag or a line break or had stayed English, were translated machine-assisted. A review by a native speaker is welcome. The catalogues of ezoe and ezjscore are complete too.
  • Ukrainian (ukr-UA) is new and complete since 17 October 2026, measured against the 17,295 strings of the untranslated file of that day, machine-assisted throughout; the catalogues of ezoe and ezjscore are complete too. A review by a native speaker is welcome. Ukrainian has three plural forms and the source texts only two (%count item(s)), so a few counts read awkwardly for 2 to 4; most such texts are phrased as "label: %count".
  • Turkish (tur-TR, new), Polish (pol-PL), Italian (ita-IT), Portuguese (Brazil) (por-BR), Dutch (dut-NL), Swedish (swe-SE), Norwegian Bokmål (nor-NO), Danish (dan-DK), Czech (cze-CZ) and Croatian (cro-HR) are complete since 18 October 2026 for the kernel's 17,287 strings, machine-assisted with a glossary per language; the catalogues of ezoe and ezjscore are complete too. The 478 messages added to the untranslated file while the work was under way were translated the same way when it was merged, so each covers all 17,763 strings of 18 October 2026. Forms of address: Polish imperative on buttons and actions ("Zapisz", "Otwórz"; questions keep the infinitive) and impersonal sentences, Turkish siz, Italian tu, Brazilian Portuguese você, Dutch je, Czech and Croatian formal vy / vi, Swedish, Norwegian and Danish du. The older translations of these languages that had broken placeholders, tags, line breaks, English leftovers, wrong terms or mixed forms of address were redone; obsolete entries stay as they were. A review by a native speaker is welcome.
  • Persian (fas-IR, new), Pashto (pus-AF, new) and Kurdish (kur-TR, new, Kurmanji in Latin script) are complete since 19 October 2026 for all 17,834 strings of that day, machine-assisted with a glossary per language, its terms settled after the first pass, and reviewed in a second pass; the catalogues of ezoe and ezjscore are complete too, those of the other bundled extensions come with their own releases. All three address the user formally (Persian shomā, Pashto tāso, Kurmanji hûn); buttons and menu items are nouns or verbal nouns. Persian is standard written Persian with the Persian letters ی and ک and the zero-width non-joiner; Dari (fas-AF) has had its own catalogue since 27 October 2026, see above. Kurmanji has no catalogue for other countries yet. A review by a native speaker is welcome.
  • Swahili (swa-KE, new) is complete since 23 October 2026 for all 18,404 strings of that day, made the same way; the catalogues of ezoe and ezjscore are complete too, those of the other bundled extensions come with their own releases. It is standard Swahili (Kiswahili sanifu) with the terms used in Kenya; Tanzania (swa-TZ) falls back to it. Swahili has no formal pronoun of address: sentences speak to the user in the singular and ask with tafadhali (please), buttons and menu items are short imperatives (Hifadhi, Futa), as in other Swahili software. A review by a native speaker is welcome.
  • Hindi (hin-IN), Korean (kor-KR), Hungarian (hun-HU), Romanian (ron-RO), Slovak (slk-SK), Slovenian (slv-SI), Bosnian (bos-BA), Albanian (sqi-AL), Estonian (est-EE), Latvian (lav-LV), Icelandic (isl-IS), Irish (gle-IE), Maltese (mlt-MT), Lower Sorbian (dsb-DE) and Greenlandic (kal-GL), all new, and Japanese (jpn-JP), Greek (ell-GR) and Finnish (fin-FI), whose older translations covered about a third, are complete since 24 October 2026 for all 18,411 strings of that day, made the same way; the catalogues of ezoe and ezjscore are complete too, those of the other bundled extensions come with their own releases. The older Japanese, Greek and Finnish translations were kept where they were right and fit the glossary, and redone otherwise. Strings that need a different word in different places ("Store" as the shop tab or as Save, "Order" as a shop order or a sort order, "State", "Login", "View") are translated per context. Forms of address: formal in Hindi (āp), Korean (hamnida style), Japanese (desu/masu), Greek, Hungarian (Ön), Romanian (dumneavoastră), Slovak, Slovenian, Bosnian, Albanian, Latvian and Lower Sorbian (Wy); the singular, as usual in their software, in Estonian, Finnish, Icelandic, Irish, Maltese and Greenlandic. Buttons are infinitives in Slovak and Latvian (as in Czech), nouns in Korean, Japanese, Greek and Hungarian. Each language's GUIDE.md has the details. A review by native speakers is welcome, above all for Greenlandic, Lower Sorbian, Maltese and Irish.
  • Each extension releases its own catalogues. Of the ten languages above, ezoe, ezjscore and explayouts_ui (the Layouts tab) carry complete ones; the other extensions show their texts in English in these languages until they get one.
  • Two directories have no locale file of the same meaning: ser-SR and srp-RS are both Serbian (ser-SR in Latin script, srp-RS in Cyrillic; both locale files exist).
  • Translations of extensions live in each extension's translations/ directory and are not counted here.

5. The world's major languages

The languages with 50 million or more speakers (first and second language together), as listed by Wikipedia's "List of languages by total number of speakers", which takes its figures from Ethnologue (2026 edition); read on 15 October 2026. Speakers are rounded millions.

#LanguageSpeakers (M)LocalesAdministration translation
1English1,493eng-US, eng-GB, eng-CA, eng-AU, eng-NZ, eng-IE, eng-IN, eng-SG, eng-ZA, eng-NG, eng-KE, eng-GH, eng-PK, eng-PHeng-US full; eng-AU complete, eng-NZ falls back to it
2Mandarin Chinese1,183chi-CN, chi-SG (Simplified), chi-TW, chi-HK (Traditional)chi-CN, chi-TW complete; chi-SG falls back to chi-CN, chi-HK to chi-TW
3Hindi611hin-INhin-IN complete
4Spanish561esl-ES, esl-MX, esl-AR, esl-CO, esl-CL, esl-PE, esl-US, esl-VE, esl-EC, esl-GT, esl-CU, esl-DO, esl-BO, esl-UY, esl-PY, esl-CR, esl-PA, esl-HN, esl-SV, esl-NI, esl-PR, esl-GQesl-ES, esl-MX full
5Modern Standard Arabic335ara-SA, ara-EG, ara-AE, ara-MA, ara-DZ, ara-TN, ara-IQ, ara-JO, ara-LB, ara-SY, ara-KW, ara-QA, ara-BH, ara-OM, ara-LY, ara-PS, ara-YE, ara-SD, ara-MR, ara-DJ, ara-KM, ara-SO, ara-TD, ara-ERara-SA complete; the other ara-* locales fall back to it
6French334fre-FR, fre-BE, fre-CA, fre-CH, fre-SN, fre-CI, fre-CM, fre-MA, fre-CD, fre-LU, fre-MC, fre-HT, fre-BJ, fre-BF, fre-BI, fre-CF, fre-TD, fre-KM, fre-CG, fre-DJ, fre-GQ, fre-GA, fre-GN, fre-MG, fre-ML, fre-NE, fre-RW, fre-SC, fre-TG, fre-VU, fre-DZ, fre-TN, fre-MR, fre-MUfre-FR full
7Bengali274ben-BD, ben-INben-BD complete; ben-IN falls back to it
8Portuguese269por-PT, por-BR, por-MZ, por-AO, por-CVpor-BR, por-PT complete; por-MZ, por-AO, por-CV fall back to por-PT
9Indonesian255ind-IDind-ID complete
10Urdu246urd-PK, urd-INurd-PK complete; urd-IN falls back to it
11Russian210rus-RUrus-RU complete
12German133ger-DE, ger-AT, ger-CH, ger-LU, ger-LI, ger-BEger-DE full
13Japanese126jpn-JPjpn-JP complete
14Nigerian Pidgin121pcm-NGpcm-NG complete
15Egyptian Arabic118ara-EG (written Arabic)ara-EG falls back to ara-SA
16Marathi99mar-INmar-IN complete
17Vietnamese97vie-VNvie-VN complete
18Telugu96tel-INtel-IN complete
19Swahili95swa-KE, swa-TZswa-KE complete, swa-TZ falls back to it
20Hausa94hau-NGhau-NG complete
21Turkish94tur-TRtur-TR complete
22Western Punjabi90pnb-PK (Shahmukhi script; pan-IN is Punjabi in Gurmukhi script)pnb-PK complete (and pan-IN for the Gurmukhi script)
23Tagalog87fil-PH (Filipino, the standard form of Tagalog)fil-PH complete
24Tamil86tam-IN, tam-LK, tam-SGtam-IN complete; tam-LK, tam-SG fall back to it
25Yue Chinese (Cantonese)86chi-HK (written Traditional Chinese)chi-HK falls back to chi-TW
26Wu Chinese83written as Simplified Chinese: chi-CNchi-CN complete
27Persian82fas-IR, fas-AF (Dari)fas-IR, fas-AF complete
28Korean82kor-KR, kor-KPkor-KR, kor-KP complete
29Amharic78amh-ETamh-ET complete
30Thai71tha-THtha-TH complete
31Javanese69jav-IDjav-ID complete
32Italian66ita-IT, ita-CHita-IT complete
33Gujarati62guj-INguj-IN complete
34Kannada59kan-INkan-IN complete
35Levantine Arabic58written Arabic: ara-JO, ara-LB, ara-SYara-JO, ara-LB, ara-SY fall back to ara-SA
36Sudanese Arabic54written Arabic: ara-*ara-* fall back to ara-SA
37Yoruba53yor-NGyor-NG complete
38Bhojpuri53bho-INbho-IN complete

Before 6.0.15, 18 of these 38 languages had a locale (counting a spoken variety by its written language); now all 38 do. All 38 have a complete administration translation, their own or, for the Arabic varieties, that of ara-SA.

Beyond them, the A–Z list now covers nearly every language with a written standard and CLDR data: the official languages of India (all 22 scheduled languages, among them Maithili, Konkani, Manipuri, Santali, Dogri, Bodo and Sanskrit), the large languages of Africa (Fula, Akan, Ewe, Wolof, Bambara, Lingala, Kirundi, Ganda, Kikuyu, Kabyle, Tamazight, N'Ko), Central Asia (Turkmen, Kyrgyz, Tatar, Chechen) and the Himalaya (Tibetan, Dzongkha), the Celtic and other regional languages of Europe (Breton, Scottish Gaelic, Faroese, Romansh, Western Frisian, Occitan, Asturian, Northern Sami, Upper and Lower Sorbian), and Maori, Hawaiian, Tongan, Greenlandic, Sundanese and Cebuano.

6. Common languages still missing

Every language of the table above has a locale. Languages with a million or more speakers that still have none:

  • No data in ICU 74 (CLDR 44): Haitian Creole (hat), Tswana (tsn), Sesotho (sot), Northern Sotho (nso), Tsonga (tso), Swati (ssw), Venda (ven) and Southern Ndebele (nbl) (official languages of South Africa), Chichewa (nya), Bashkir (bak), Iloko (ilo), Hmong (hmn), Samoan (smo), Corsican (cos), Tok Pisin (tpi), Fijian (fij) and Balochi (bal). Each needs a hand-made file (as Latin and Dhivehi have), best written or checked by a speaker; CLDR 45 and later add some of them, and a newer ICU on the build machine would generate those.
  • With CLDR data, left out for now (small, or a second script of a language that has a locale): Manx (glv), Cornish (cor), Swiss German (gsw, written in Standard German), Friulian (fur), Sardinian (srd), Ligurian, Venetian, Silesian, Nheengatu, Ossetic (oss), Yakut (sah), Chuvash (chv), Central Atlas Tamazight, Sango (sag), Mazanderani and Northern Luri (CLDR has English day names for both), Fula in Adlam script, Uzbek in Arabic script, Interlingua (only for the region "world", see section 3).
  • Guarani, Aymara, Inuktitut and Cherokee have locales since 6.0.15, with the other Indigenous languages of the Americas (section 3).
  • More regional variants: Portuguese of Guinea-Bissau; English of Hong Kong and Malaysia; Swedish of Finland; Russian of Kazakhstan and Belarus; Traditional Chinese of Macao. (The remaining countries of Spanish, French, Arabic and German were added on 18 October 2026.)
  • Spoken varieties written in a standard language (Arabic dialects, Wu and Yue Chinese) need no locale of their own.

Each one with CLDR data is a line in the generator away; see the next section.

7. Adding a locale

The file

share/locale/<language>-<COUNTRY>.ini, UTF-8, first line #?ini charset="utf-8"?. eZLocale reads these groups and keys (lib/ezlocale/classes/ezlocale.php, initCountry() and initLanguage()):

GroupKeyMeaning
[RegionalSettings]CountryCountry name (in English in most files).
LanguageNameName of the language in the language itself; with the country in brackets where a language has several locales: Deutsch (Österreich). Shown as the native name.
InternationalLanguageNameEnglish name, likewise: German (Austria). The name a content language gets when added.
LanguageComment, CountryCommentOptional; a variation's description (Euro support).
[LanguageSettings]TextDirectionrtl for a language written right to left, read by eZLocale::textDirection(). Only the right-to-left files have it; a file without it is left to right. See section 9.
[Charset]Preferred, Allowed[]Character set. New files use utf-8; older files name legacy sets that a UTF-8 site ignores.
[HTTP]ContentLanguageThe BCP 47 tag printed as the page's lang: ISO 639-1 language (or the three-letter code where there is none), ISO 3166 country (de-AT).
[Currency]Symbol, Name, ShortNameSymbol, name and ISO 4217 code of the country's currency.
DecimalSymbol, ThousandsSeparator, FractDigitsNumber format of amounts; FractDigits=0 for currencies without minor unit (JPY, KRW, VND, IRR).
PositiveSymbol, NegativeSymbol, PositiveFormat, NegativeFormatSign and layout: %c symbol, %p sign, %q number. %c %p%q gives € 1.234,50, %p%q %c gives 1.234,50 €.
[Numbers]DecimalSymbol, ThousandsSeparator, FractDigits, PositiveSymbol, NegativeSymbolNumber format. Each separator must be a single byte (a plain space, not a no-break space), because eZLocale::internalNumber() uses it in a regular expression.
[DateTime]TimeFormat, ShortTimeFormat, DateFormat, ShortDateFormat, DateTimeFormat, ShortDateTimeFormatFormats in PHP date() letters behind %: %d/%j day, %m/%n month, %Y/%y year, %H/%G 24-hour, %h/%g 12-hour, %i minutes, %s seconds, %a/%A am/pm; and the locale's names: %l long day, %D short day, %F long month, %M short month. Other letters are literal text.
MondayFirstyes when the week starts on Monday, else it starts on Sunday (eZLocale knows no Saturday or Friday start).
[ShortMonthNames], [LongMonthNames]jan ... decMonth names, in the form used inside a date (genitive in Slavic languages: января).
[ShortMonthNamesStandalone], [LongMonthNamesStandalone]jan ... decOptional. Month names as they read on their own, in a calendar heading or a month list (январь). eZLocale::longMonthNameStandalone(), shortMonthNameStandalone() and the template attribute month_name_standalone_list read them and fall back, month by month, to the group above.
[ShortDayNames], [LongDayNames]mon ... sunDay names.
[CountryNames]Countries[XX]Country names in the language, for the country datatype. Optional.

CLDR names a month in two forms: the format form (pattern MMMM), used inside a date, and the stand-alone form (LLLL), used where the month stands alone. In English they are the same; in languages that inflect the month name they are not (Polish 15 października 2025, but październik 2025 above a calendar), and some abbreviations differ as well (Austrian German März in a date, Mär alone). A file then needs the stand-alone groups. Catalan puts the preposition into the format form (d’octubre, de març), so a custom format that prints %F alone shows it there too; the stand-alone name has no % letter, use month_name_standalone_list or longMonthNameStandalone().

The code

Three letters for the language, a dash, the two-letter ISO 3166 country: ben-BD. The country must be two letters: eZLocale::localeRegexp() allows only letters there, so CLDR's numeric regions (001 "world", 419 "Latin America") cannot be used, and a language CLDR has only for the world takes the country of its largest community (yid-US) or a user-assigned ISO 3166 code (tlh-QO).

The language part follows the codes Exponential has always used: eng, ger (German), fre (French), esl (Spanish), chi (Chinese), dut (Dutch), cze, cro, ita, jpn, por, rus, ara and the rest of the older files; a regional variant reuses that code (ger-AT, esl-AR, chi-SG, ara-EG, fre-SN). A language without an existing code gets its ISO 639-2/T code (the terminological one, not the bibliographic one): ben Bengali, urd Urdu, vie Vietnamese, fas Persian, ron Romanian, msa Malay, hye Armenian, kat Georgian, sqi Albanian, mkd Macedonian, isl Icelandic, cym Welsh, eus Basque, bod Tibetan, mri Maori, fry Western Frisian. fil (Filipino) has no 639-2/T code other than this one; a language without any ISO 639-2 code takes its ISO 639-3 code (ckb Central Kurdish, pcm Nigerian Pidgin, pnb Western Punjabi, brx Bodo). A variation of a locale is <code>@<name>.ini and holds only the keys it changes.

How the 6.0.15 files were made

They were generated, at build time only, from Unicode CLDR 44 through PHP's intl extension (ICU 74.2), with the Gregorian calendar and Latin digits, by a generator that takes a list of Exponential code, ICU locale and region:

  • names from CLDR's display names (English and native), the HTTP tag from the ICU locale;
  • the currency of the country, its symbol, name and decimals; separators reduced to one byte (a no-break space becomes a space, ’ becomes '); a symbol that is invisible in CLDR (the Cape Verdean escudo, whose cifrão is the decimal separator) becomes the ISO code (CVE);
  • the full date pattern for DateFormat, the short one for ShortDateFormat with a four-digit year, the medium and short time patterns; DateTimeFormat is date and time joined by a space; eras, time zones and quarters, which eZLocale cannot print, are left out;
  • a 12-hour clock where CLDR uses one and its marker is AM/am; where the marker is another word (ص, 上午, a.m.) the file uses the 24-hour clock, because eZLocale only prints am/pm, and says so in a comment;
  • day and month names in the format context, the first day of the week, and the country names;
  • later, from ICU 78 (CLDR 48), the stand-alone month groups, in every file whose month names are CLDR's format names and where CLDR's stand-alone names differ: Slavic (pol-PL, cze-CZ, slk-SK, cro-HR, rus-RU, ukr-UA, bel-BY, dsb-DE, hsb-DE), Baltic (lit-LT), Greek, Finnish, Armenian, Catalan, Asturian, Romansh, Scottish Gaelic, Greenlandic and others (51 files: grep -l MonthNamesStandalone share/locale/*.ini). A file whose month names are not CLDR's format names keeps a single form until it is corrected;
  • English names chosen over CLDR's where readers search for another one: Bengali (CLDR: Bangla), Kirundi (Rundi), Greenlandic (Kalaallisut), Simplified Chinese (Singapore) (to match chi-CN), Western Punjabi (Shahmukhi) and Dari;
  • the country in brackets as soon as a language has two locales: adding msa-SG and tam-LK renamed msa-MY to Malay (Malaysia) and tam-IN to Tamil (India) (an existing content language keeps the name it was given);
  • [LanguageSettings] TextDirection=rtl where ICU writes the locale right to left (and the right-to-left comment);
  • for languages ICU 74 lacks, a hand-made part: Latin (conventions of it_VA) and Dhivehi (conventions of en_MV) get their names written by hand in the generator and say so in the file header (see section 3).

Each generated file names its source and license in its first lines: CLDR is Copyright © Unicode, Inc., under the Unicode License v3.

Hand-made files are never overwritten by the generator. Besides the older files, Klingon (tlh-QO) is entirely hand-made: its header names its sources (The Klingon Dictionary, the Klingon Language Institute) and every choice. An older file is regenerated only when it is broken, one by one (heb-IL, hin-IN, kor-KR, and ara-SA, which named Morocco as its country, the Moroccan dirham as its currency, ISO-8859-1 as its character set and a 12-hour clock with Latin am/pm).

To add another locale with CLDR data, generate it the same way with intl; without CLDR data, copy a similar file and change it by hand. Then check it as below.

The check

tests/tests/lib/ezlocale/expLocaleFilesTest.php (DB-less, in the lib suite) loads every share/locale/*.ini through eZINI and eZLocale and fails when a file is not valid UTF-8, lacks a key from the table above, has an empty day or month name, cannot format a date, time, number or currency, or cannot read its own number back. For the generated files it also checks the code form, utf-8, the HTTP tag, twelve distinct months, seven distinct days, one-byte separators, the license line and the right-to-left note. For every file it checks that TextDirection=rtl is there exactly when the language is written right to left, and that no file holds double-encoded UTF-8; the Latin, Hebrew and Klingon files are checked value by value, and every right-to-left locale and every world language added in 6.0.15 must be offered as a content language. expLocaleTextDirectionTest covers eZLocale::textDirection(), isRightToLeft(), textDirectionOf(), normalizeTextDirection() and the template attributes. eZLocaleFormattingTest checks every file as well. expLocaleStandaloneMonthNamesTest checks that dates use the format form and longMonthNameStandalone() the stand-alone form, the fallback to the format form, and that every stand-alone group has twelve names and differs from its format group.

vendor/bin/phpunit tests/tests/lib/ezlocale
vendor/bin/phpunit tests/tests/kernel/classes/uiswitch/expUISwitchLanguageProviderTest.php

A new locale is offered on Setup > Languages > Add a language and in the interface language choice at once; no cache needs clearing (the choice's catalogue is keyed by the names, sizes and times of the files).

8. Adding or completing an administration translation

  1. Strings. share/translations/untranslated/translation.ts holds every source string. It is made by ezlupdate, built from support/ezlupdate-qt4.5 (Qt 4.5, qmake ezlupdate.pro && make, binary in bin/linux): bin/linux/ezlupdate -u refreshes the untranslated file, bin/linux/ezlupdate <code> adds the new strings to a translation and marks the vanished ones obsolete. Extensions: ezlupdate -e extension/<name> <code>.
  2. A new translation. Create share/translations/<code>/ with the locale's code and copy the untranslated translation.ts into it. Change the language attribute of <TS> to the code.
  3. Translate with Qt Linguist or any XML editor. A message counts when its <translation> has text and no type="unfinished". Keep placeholders (%1, %name), HTML entities and keyboard hints exactly as in the source; write American English in eng-US (license, color, behavior).
  4. Measure. php bin/php/ezchecktranslation.php <code> --allow-root-user prints the finished share of the file. Comparing with the untranslated file, as in section 4, shows what is missing for the current release.
  5. Review. A second speaker reads the result in the running administration: a siteaccess (or a user's preference) with Locale=<code>, after clearing the translation cache (php bin/php/ezcache.php --clear-tag=i18n --allow-root-user).

Translation guides. share/translations/TRANSLATING.md holds the rules every language shares (placeholders, markup, words that need their context, checking); each complete language has a GUIDE.md next to its catalogue (share/translations/<code>/GUIDE.md) with its form of address, script and typography and a glossary that binds the kernel and every extension. Read both before changing a catalogue, and change a term in the guide first.

Quality test. tests/tests/lib/ezi18n/expTranslationQualityTest.php (no database needed) checks the machine-assisted catalogues and those of ezoe and ezjscore: a finished translation keeps the placeholders, HTML tags and entities, leading and trailing whitespace and line breaks of its source, and is neither empty nor the English text itself. Where the English text is right (a product name, a code, a word spelled the same), add it with its reason to tests/tests/lib/ezi18n/translation-identical-allowlist.json; never weaken the test. A newly completed language joins the test's list of languages; every complete machine-assisted translation is on it. German (ger-DE) is on it since 6.0.15, with the kernel's, ezoe's and ezjscore's catalogues; the words German keeps from English (Cache, Layout, Login, Siteaccess, Extension ...) are in the allowlist's ger-DE list.

The strings added since 6.0 (about 10,000) are translated in all 101 translations, so the most useful work now is a review of the machine-assisted ones by native speakers, which is every translation except eng-US and ger-DE.

Translation waves. The work that remains for each language (the administration catalogue, the extensions and the help) is measured and cut into small, independent waves, ordered by the priority group of refugee children's home languages, then by speakers and difficulty, in Translation waves.

9. Right-to-left languages

43 locale files are written right to left:

LanguageLocalesScript
Arabicara-SA, ara-EG, ara-AE, ara-EH, ara-MA, ara-DZ, ara-TN, ara-IQ, ara-JO, ara-LB, ara-SY, ara-KW, ara-QA, ara-BH, ara-DJ, ara-ER, ara-KM, ara-LY, ara-MR, ara-OM, ara-PS, ara-SD, ara-SO, ara-TD, ara-YEArabic
Hebrewheb-ILHebrew
Yiddishyid-USHebrew
Imperial Aramaicarc-IQHebrew
Hulaulá (Jewish Neo-Aramaic)huy-ILHebrew
Persian, Darifas-IR, fas-AFArabic
Urduurd-PK, urd-INArabic
Pashtopus-AFArabic
Western Punjabipnb-PKArabic (Shahmukhi)
Sindhisnd-PKArabic
Kashmirikas-INArabic
Uyghuruig-CNArabic
Central Kurdish (Sorani)ckb-IQArabic
Syriac (Aramaic)syr-IQ, syr-SYSyriac
N’Konqo-GNN’Ko
Dhivehidiv-MVThaana

The direction is decided by ICU's character order of the locale (and checked against the generator's list of right-to-left languages), so Kurdish (kur-TR, Kurmanji) and Uzbek (uzb-UZ), which use the Latin script, are left to right, as are Fula (ful-SN) and Tamazight (zgh-MA, Tifinagh).

The locale says so. Each of these files has

# Text direction: right-to-left ([LanguageSettings] TextDirection, see "Right-to-left languages" in doc/eng-us/languages.md).
[LanguageSettings]
TextDirection=rtl

and no other file has the key (see section 7). A file without it is left to right.

eZLocale reads it. eZLocale::textDirection() returns rtl or ltr, isRightToLeft() the same as a boolean, and the static eZLocale::textDirectionOf( 'heb-IL' ) gives the direction of any locale code (ltr for an unknown one). Templates reach them as $locale.text_direction and $locale.is_right_to_left, for example on the locale_object of a content language. Only rtl and right-to-left (any case) count as right to left; eZLocale::normalizeTextDirection() turns every other value into ltr.

Pages and content. The page layout gets $site.text_direction (rtl or ltr), the direction of the siteaccess locale, for the dir attribute of <html>. Content in a right-to-left language is shown with dir="rtl", also on a left-to-right page, so a Hebrew translation reads correctly inside an English site.

Addresses. The shipped URL alias transformation urlalias has no transliteration table for Arabic script, so an Arabic, Persian, Pashto or Urdu title is converted with urlalias_iri instead (دليل المستخدم becomes دليل-المستخدم, not node_<id>); Hebrew is transliterated as before. The rule and the setting [URLTranslator] ScriptFallbackTransformationGroup are in Titles in scripts without a transliteration table.

The administration. The admin page layouts set dir="rtl" when the interface language is right to left, and their layout skeleton (header, left menu, content, right toolbar) is direction-safe: the browser mirrors it instead of it being placed by left and right. The details, the CSS rules and what still needs checking are in Right-to-left languages.

Interface translations. Twelve right-to-left translations of the administration are complete: Hebrew (heb-IL), Arabic (ara-SA, Modern Standard Arabic, so every Arabic country falls back to it), Persian (fas-IR), Dari (fas-AF), Pashto (pus-AF), Urdu (urd-PK), Sindhi (snd-PK), Western Punjabi (pnb-PK, Shahmukhi script) and Yiddish (yid-US); Aramaic has one in Syriac script (syr-IQ, syr-SY falls back to it) and two in Hebrew script (arc-IQ, huy-IL, transliterated from it). All cover the kernel and the bundled ezoe and ezjscore catalogues, and all are machine-assisted: they need a review by a native speaker before a site relies on them (section 8). Choosing either as the interface language turns the whole administration (admin4l, admin4 and the classic admin) right to left. Their placeholders (%name, %1) stay as they are inside the right-to-left text; the browser's bidirectional algorithm places them, so a translation needs no direction marks of its own. The translator has no plural forms (no numerus messages), so a count is best written with a neutral wording rather than a plural. expTranslationQualityTest checks placeholders, markup and untranslated English (with the reasons in tests/tests/lib/ezi18n/translation-identical-allowlist.json), and expAdminTranslationsRegisteredTest that each catalogue is complete, registered and written in its script, and that a word with two senses ("Store" the shop tab, "Login" the user name) takes the right one.

10. No PHP extension at run time

Locales are plain INI files read by eZINI and eZLocale in PHP: no intl, no mbstring-only path, no ICU, and nothing that depends on 64-bit PHP. intl was used only to generate the 6.0.15 files (the interface language choice uses it, when present, for names in the reader's language and for sorting). The administration translations are XML read by eZTSTranslator and cached as PHP. (The number of content languages is a different limit: 62 on 64-bit PHP, 30 on 32-bit, see section 11.)

11. The limit of 62 content languages

An installation holds at most 62 content languages on 64-bit PHP (30 on 32-bit PHP; eZContentLanguage::maxCount() is 8 * PHP_INT_SIZE - 2). Setup > Languages shows how many are in use and how many more can be added; the add form says it in its introduction, and refuses a language beyond the limit with a message that says how to free a place.

Why. Each content language is one bit. Its ID is a power of two (2, 4, 8, 16 ...), and an object, a version, a class and an object state record all their languages in one integer, language_mask; an attribute or a name row carries the single bit of its language in language_id. Bit 0 (value 1) is reserved: it is the "always available" flag in the same mask. PHP's integer and the database's BIGINT are 64-bit signed numbers, so the sign bit and bit 0 leave 62 bits for languages. "Which objects exist in German?" is then one bit test per row (language_mask & 8 > 0), which is what makes language filtering cheap in every query of the kernel.

What counts. Only the content languages added on Setup > Languages, the ones in ezcontent_language. The locales in share/locale do not count: 286 of them can be offered while an installation uses two languages. A language added and never used still takes its bit.

Freeing a place. Remove a content language that no object and no class has a translation in (Setup > Languages, the language's page; section 9 of Content languages explains what blocks a removal and how to move content out of a language first). Its bit becomes free, and the next language added gets the lowest free one.

Why it is not raised. More than 62 languages would need another storage for the language set: a join table (object, version, language), or extra mask columns (language_mask_2 ...) in every table that has one, with every query that tests a mask rewritten to match. Both change the database schema and the SQL that custom code, extensions and reports run against language_mask and language_id today, a break of backward compatibility for every installation, to serve a case no known site has reached. So it is not done; a site that needs more than 62 languages would be a project of its own.

12. Test languages: Lorem Ipsum

share/locale/qlo-ZZ.ini is Lorem Ipsum, a language for testing content translations and nothing else. It is not counted among the languages above, and no installation adds it: not the clean data, the installer's seeds, the packages or the kickstart. Setup > Languages > Add a language offers it like any other locale, under its plain name Lorem Ipsum; add it for a test and remove it afterwards. How: The test language Lorem Ipsum.

The code. qlo is in the ISO 639-2 range qaa-qtz, which ISO reserves for local use, so it can never collide with a real language; ZZ is the ISO 3166 / CLDR code for an unknown region, and the HTTP tag qlo-ZZ is a valid private-use BCP 47 tag. The code has the usual form (three letters, a dash, two letters), so eZLocale, the add form and ezcontent_language.locale accept it unchanged.

The file. English number and date formats (1,234.50, ISO short dates, Monday first), lorem-style month and day names (Ipsumdies 14 Temporember 2023), currency ¤ with the ISO 4217 code XXX (no currency), no country names, UTF-8. It is written by hand.

The marker. [LanguageSettings] TestLanguage=true makes a locale a test language (expTestLanguage::isTestLocale()). It changes two things:

  • the interface language choice (uiswitch.ini [UISwitch_language]) never puts a test language in a ranked group or in the A-Z list of AllLanguages=enabled; only naming it in AllowedValues[] offers it, and then A-Z;
  • exp:loremipsum (bin/php/exploremipsumfill.php) fills only test languages with lorem ipsum text.

A locale of your own in the range qaa-qtz must carry the marker, and only those do; tests/tests/kernel/classes/expTestLanguageTest.php checks both, the file itself, that no default installation names qlo-ZZ, and the text exp:loremipsum writes per datatype. expUISwitchTestLanguageTest checks the interface language choice.

13. Translation fallbacks

A locale without a translation of its own is not left in English: the translator (eZTSTranslator) tries the translations it falls back to, in order, for each translation root on its own (the kernel's share/translations, then the translations directory of every extension in site.ini [RegionalSettings] TranslationExtensions[]). The one source of truth for that order is expI18nFallbackResolver (lib/ezi18n/classes/); the interface language choice, ./console exp:i18n and Setup > Interface languages use the same class, so what they show is what the translator loads.

The chain

Each step is decided by the first rule that answers:

  1. i18n.ini [TranslationSettings] FallbackLanguages[]: what is configured always wins.
  2. The classes of FallbackRules[], in their order: rules that extensions add (see Writing a fallback rule).
  3. With AutomaticLanguageFallback=enabled (the default), the automatic same-language fallback: a locale with no kernel translation of its own and no configured fallback takes the most complete translation of its language (the three letters before the dash): fre-NC to fre-FR, ger-IT to ger-DE. So a new country locale of a translated language needs no ini line. AutomaticFallbackExclude[] names languages (eng, the default: English is the language of the source texts) or locales that never fall back automatically. Every country of a translated language that ships has its FallbackLanguages[] line, so the automatic fallback changes nothing for them (expI18nFallbackResolverTest checks it); it is for locales added later.

The resolver then asks again for the answer, which makes a chain:

FallbackLanguages[esl-AR]=esl-MX
FallbackLanguages[esl-MX]=esl-ES

gives esl-AR -> esl-MX -> esl-ES. A chain ends at a locale no rule answers for, at the source texts (untranslated, also written eng-GB, as it always was), before a locale that is already in it (a cycle, reported) or after FallbackMaxDepth steps (default 4, at most 16; a longer chain is cut and reported). A variant (ger-AT@euro) first loads its locale (ger-AT) and that one's chain, as before.

First or merge

FallbackMode=first (the default, the behavior before 6.0.15) loads, in each root, the first file of the chain that root has: esl-MX has a kernel translation of its own, so the kernel shows esl-MX; an extension without an esl-MX file shows its esl-ES. FallbackMode=merge loads every file of the chain in a root, the most general first, so a message the specific translation lacks or leaves empty comes from the next one: esl-MX with esl-ES behind it shows no English at all. An empty translation never replaces one loaded before it.

The translation cache follows the settings: its directory name includes the resolver's signature, and with site.ini [RegionalSettings] TranslationCheckMTime=enabled a changed file of any step of the chain renews the cache of the locales that fall back to it.

Seeing and checking the fallbacks

./console exp:i18n fallbacks                         # every locale: kernel coverage, extensions, chain
./console exp:i18n fallbacks --only=fallback         # only those translated through a fallback (own, untranslated)
./console exp:i18n fallbacks --locale=esl-AR,ger-AT  # each step with its rule, and every extension
./console exp:i18n fallbacks --format=json
./console exp:i18n check [--strict]                  # exit 1 on a problem: for CI
./console exp:i18n coverage [--check]                # the totals and the map at the top of this page

check reports as errors a cycle, a chain longer than FallbackMaxDepth, a target that is no locale code or has neither a locale file nor a translation, and a FallbackRules[] entry that is no class implementing expI18nFallbackRuleInterface; as warnings (errors with --strict) a configured locale without a locale file and a chain whose last step has no translation (it shows the English source texts; the Arabic countries fall back to ara-SA this way on purpose, waiting for that translation, and end in untranslated, so they are not reported). The extension coverage is cached in var/<site>/cache/i18n/fallback-report.json and rebuilt when a file or a setting changes; the first run reads every extension catalogue and takes a few seconds.

Setup > Interface languages (setup/languages, policy setup/system_info, next to Languages in the Setup menu) shows the same list in the administration: every locale with the translation it shows, the coverage of the kernel and of the extensions, the chain (a step of the automatic fallback is highlighted), the problems, and the settings in effect. A locale's code opens its chain step by step with the rule of each step and every extension. The page is read only.

Settings

i18n.ini [TranslationSettings]DefaultMeaning
FallbackLanguages[<locale>]100 entriesThe translation a locale falls back to; eng-GB or untranslated for the source texts.
FallbackRules[]emptyClasses implementing expI18nFallbackRuleInterface, asked after FallbackLanguages[].
AutomaticLanguageFallbackenabledThe same-language fallback for locales without translation and configuration.
AutomaticFallbackExclude[]engLanguages or locales the automatic fallback leaves alone.
FallbackMaxDepth4The most steps of a chain (1 to 16).
FallbackModefirstfirst or merge, see above.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x