Translations

Learn how to use translations to localize your notifications.
Enterprise plan feature. Translations are only available on our Enterprise plan.

Enabling translations and setting a default locale

First you’ll have to enable translations for your account and set a default locale. This will be the “fallback” locale - if a translation for a given recipient’s locale is missing, it will look for the translation in this default locale instead.

Go to “Settings” under your account name in the left sidebar and click “Enable translations” to select your locale. (You can always change this default language later.) Now, you should see a new “Translations” page under “Developers” in the sidebar. This is where you’ll be working with your translations.

Basic usage

Translations are a JSON object that contain the text for your messages in various locales. For example, let’s say you have a customer order notification you’re building and want to localize it for French and English users.


Once you have those translations created for the en and fr locales, you can reference their translation strings in your message templates like this:

Here's how this works: the translation helper looks up the recipient of the current workflow run, finds their locale, and then looks for the "OrderReady" key within the translation file for that locale. (If a translation file isn't found for a given recipient's locale, the default locale is used instead.)

The recipient must have a locale property set for the helper to find their translations. You can add properties to any of your users when you call the user identify endpoint.

For a recipient with a locale of en, they would see “Your order is ready” while a recipient with a locale of fr would see “Votre commande est prête”. If a recipient doesn't have their locale set, because our fallback locale is en they would also see "Your order is ready."

Working with translations

Translations follow the same version control flow in Knock as workflows and layouts. You create them in development and then promote them to subsequent environments.

Keep in mind this means that to see translation updates in development you'll need to commit your latest changes to the development environment.

You can view, manage, and archive translations within the "Translations" page under the "Developers" section of the Knock sidebar.

Creating a translation

In the translations page, click “Create translation” on the top right to make a new translation. You’ll select the locale and you’ll be able to supply an optional “namespace”. The namespace helps organize translations of the same locale so you can keep similar concepts together. You can see how to reference namespaced translations in your message templates here.

Keep in mind that you cannot create two translations with the same locale and namespace and you cannot edit a namespace - this helps preserve the references used within your message templates.

Editing a translation

Once you’ve created a translation, you can begin to add to it and edit the JSON directly. Make sure to “Save” it when you’re happy with it, and then you can click “Commit” to make it available in your development environment. You must use valid JSON, but there are no restrictions on the format of the keys or on how deeply nested you decide to build your translation.

Tip: In order to see translations in your email previews and activate them for use in your notifications, you must commit them to your environment first.

Archiving a translation

From the list of translations, click the 3-dot menu next to the translation you want to archive and the option will appear if your role has the permissions to manage translations.

Using the t filter in your message templates

Knock supplies a t filter for you to reference your translations from within the message template. As shown above, you’ll reference the key of the translation you want to use followed by | t and it will supply the translation for the recipient’s locale. The t filter also allows you to use variables, other filters, and special pluralization rules as well, which we’ll cover here.

Variables and interpolation

You can and probably will often use variables inside of your translations. Let’s look at this translation example:

You can pass variables to the filter like this:

Where “actor” and “likedPhoto” are variables that get passed into your data payload and have a name and title key, respectively.

Pluralization

Translations sometimes need specialized pluralization rules. When you pass the count variable to a translation, it will know to look for a special set of keys within your translation to match it to. Those keys are zero, one, and other. You don’t need to reference these in the template, if you pass the count variable it will evaluate it and choose one for you.

For example:

And you would just need to pass your count variable for it to choose one of these based on the number:

  • If the count is 0, it will choose zero, unless zero does not exist and then it will use other.
  • 1 corresponds to one, and everything else will fall under others.

Other filters in combination

You can still use other filters in combination with t but you’ll use them *after***** you use the t filter. For example, to titlecase a translation:

Namespaced translations

You’ll use namespaced translations just as you would a translation without a namespace, but you’ll use a special way to access it in the message template. Make sure you have the same namespace across your locales if you use them so that the message template will be able to access all of the content in them. Here’s an example of using a namespaced translation in message template.

For a translation with a namespace of shipping:

To access the contents of the shipping translation in your message template you’ll reference the namespace before the key followed by a colon (”:”):

This can be helpful if you use the canceled key else where in your translations so that there isn’t a collision. For example, if you had a payments translation like this:

You would reference it with the payments namespace as well:

And if you had a translation that wasn’t namespaced, say the en translation, you would simply use the key alone. All together in a template, it would look like this:

Nested translations

You can create whatever JSON structure you need to hold your translations, sometimes those might be deeply nested. Given the following translation:

You can access the content with dot-syntax like this:

The same goes for namespaced translations. If the above translation was in a translation named services , you would do the following:

Rules for determining the translation used for a recipient

Locales have three levels of fallbacks:

  1. Language + region
  2. Language
  3. Default locale (language OR language + region)

The message template will first try to find a translation that corresponds with a recipients specific language + region, like fr-BE for French-Belgian . If it doesn’t find one, it will fall back on looking for a translation for fr, since that’s the language code for the locale. And if it still can’t find that, it will fall back on the default locale, in the case of this example en.

Automate translation management with the Knock CLI

In addition to working with translations in the Knock dashboard, you can programmatically create and update translations using the Knock CLI or our Management API.

If you manage your own translation files within your application, you can automate the creation and management of Knock translations so that they always reflect the state of the translation files you keep in your application code.

The Knock CLI can also be used to commit changes and promote them to production, which means you can automate Knock translation management as part of your CI/CD workflow.

Translation files structure

When translations are pulled from Knock, they are stored in directories named by their locale codes. Their filename will be their locale code. Any namespaced translations will prepend the namespace to the filename, with . used as a separator.

If you're migrating your local translation files into Knock, you can arrange them using the file structure above and then push them into Knock with a single command using knock translation push --all. Each <locale>.json or <namespace>.<locale>.json file should follow the structure defined here.

You can learn more about automating translation management in the Knock CLI reference. Feel free to contact us if you have questions.

Supported locales

Below is a list of the available locales to choose from for your translations. If you need one added, contact us at support@knock.app.

Locale tagLanguage name
aaAfar
aa-DJAfar, Djibouti
aa-ERAfar, Eritrea
aa-ETAfar, Ethiopia
afAfrikaans
af-NAAfrikaans, Namibia
af-ZAAfrikaans, South Africa
agqAghem
agq-CMAghem, Cameroon
akAkan
ak-GHAkan, Ghana
sqAlbanian
sq-ALAlbanian, Albania
sq-MKAlbanian, North Macedonia
gswAlsatian
gsw-FRAlsatian, France
gsw-LIAlsatian, Liechtenstein
gsw-CHAlsatian, Switzerland
amAmharic
am-ETAmharic, Ethiopia
arArabic
ar-DZArabic, Algeria
ar-BHArabic, Bahrain
ar-TDArabic, Chad
ar-KMArabic, Comoros
ar-DJArabic, Djibouti
ar-EGArabic, Egypt
ar-ERArabic, Eritrea
ar-IQArabic, Iraq
ar-ILArabic, Israel
ar-JOArabic, Jordan
ar-KWArabic, Kuwait
ar-LBArabic, Lebanon
ar-LYArabic, Libya
ar-MRArabic, Mauritania
ar-MAArabic, Morocco
ar-OMArabic, Oman
ar-PSArabic, Palestinian Authority
ar-QAArabic, Qatar
ar-SAArabic, Saudi Arabia
ar-SOArabic, Somalia
ar-SSArabic, South Sudan
ar-SDArabic, Sudan
ar-SYArabic, Syria
ar-TNArabic, Tunisia
ar-AEArabic, U.A.E.
ar-001Arabic, World
ar-YEArabic, Yemen
hyArmenian
hy-AMArmenian, Armenia
asAssamese
as-INAssamese, India
astAsturian
ast-ESAsturian, Spain
asaAsu
asa-TZAsu, Tanzania
az-CyrlAzerbaijani (Cyrillic)
az-Cyrl-AZAzerbaijani (Cyrillic), Azerbaijan
azAzerbaijani (Latin)
az-LatnAzerbaijani (Latin)
az-Latn-AZAzerbaijani (Latin), Azerbaijan
ksfBafia
ksf-CMBafia, Cameroon
bmBamanankan
bm-Latn-MLBamanankan (Latin), Mali
bnBangla
bn-BDBangla, Bangladesh
bn-INBangla, India
basBasaa
bas-CMBasaa, Cameroon
baBashkir
ba-RUBashkir, Russia
euBasque
eu-ESBasque, Spain
beBelarusian
be-BYBelarusian, Belarus
bemBemba
bem-ZMBemba, Zambia
bezBena
bez-TZBena, Tanzania
bynBlin
byn-ERBlin, Eritrea
brxBodo
brx-INBodo, India
bs-CyrlBosnian (Cyrillic)
bs-Cyrl-BABosnian (Cyrillic), Bosnia and Herzegovina
bs-LatnBosnian (Latin)
bsBosnian (Latin)
bs-Latn-BABosnian (Latin), Bosnia and Herzegovina
brBreton
br-FRBreton, France
bgBulgarian
bg-BGBulgarian, Bulgaria
myBurmese
my-MMBurmese, Myanmar
caCatalan
ca-ADCatalan, Andorra
ca-FRCatalan, France
ca-ITCatalan, Italy
ca-ESCatalan, Spain
cebCebuano
ceb-LatnCebuan (Latin)
ceb-Latn-PHCebuan (Latin), Philippines
tzm-Latn-Central Atlas Tamazight (Latin), Morocco
kuCentral Kurdish
ku-ArabCentral Kurdish
ku-Arab-IQCentral Kurdish, Iraq
ccpChakma
ccp-CakmChakma, Chakma
ccp-Cakm-Chakma, India
cd-RUChechen, Russia
chrCherokee
chr-CherCherokee
chr-Cher-USCherokee, United States
cggChiga
cgg-UGChiga, Uganda
zh-HansChinese (Simplified)
zhChinese (Simplified)
zh-CNChinese (Simplified), People's Republic of China
zh-SGChinese (Simplified), Singapore
zh-HantChinese (Traditional)
zh-HKChinese (Traditional), Hong Kong S.A.R.
zh-MOChinese (Traditional), Macao S.A.R.
zh-TWChinese (Traditional), Taiwan
cu-RUChurch Slavic, Russia
swcCongo Swahili
swc-CDCongo Swahili, Congo DRC
kwCornish
kw-GBCornish, United Kingdom
coCorsican
co-FRCorsican, France
hrCroatian
hr-HRCroatian, Croatia
hr-BACroatian (Latin), Bosnia and Herzegovina
csCzech
cs-CZCzech, Czech Republic
daDanish
da-DKDanish, Denmark
da-GLDanish, Greenland
prsDari
prs-AFDari, Afghanistan
dvDivehi
dv-MVDivehi, Maldives
duaDuala
dua-CMDuala, Cameroon
nlDutch
nl-AWDutch, Aruba
nl-BEDutch, Belgium
nl-BQDutch, Bonaire, Sint Eustatius and Saba
nl-CWDutch, Curaçao
nl-NLDutch, Netherlands
nl-SXDutch, Sint Maarten
nl-SRDutch, Suriname
dzDzongkha
dz-BTDzongkha, Bhutan
ebuEmbu
ebu-KEEmbu, Kenya
enEnglish
en-ASEnglish, American Samoa
en-AIEnglish, Anguilla
en-AGEnglish, Antigua and Barbuda
en-AUEnglish, Australia
en-ATEnglish, Austria
en-BSEnglish, Bahamas
en-BBEnglish, Barbados
en-BEEnglish, Belgium
en-BZEnglish, Belize
en-BMEnglish, Bermuda
en-BWEnglish, Botswana
en-IOEnglish, British Indian Ocean Territory
en-VGEnglish, British Virgin Islands
en-BIEnglish, Burundi
en-CMEnglish, Cameroon
en-CAEnglish, Canada
en-029English, Caribbean
en-KYEnglish, Cayman Islands
en-CXEnglish, Christmas Island
en-CCEnglish, Cocos [Keeling] Islands
en-CKEnglish, Cook Islands
en-CYEnglish, Cyprus
en-DKEnglish, Denmark
en-DMEnglish, Dominica
en-EREnglish, Eritrea
en-150English, Europe
en-FKEnglish, Falkland Islands
en-FIEnglish, Finland
en-FJEnglish, Fiji
en-GMEnglish, Gambia
en-DEEnglish, Germany
en-GHEnglish, Ghana
en-GIEnglish, Gibraltar
en-GDEnglish, Grenada
en-GUEnglish, Guam
en-GGEnglish, Guernsey
en-GYEnglish, Guyana
en-HKEnglish, Hong Kong
en-INEnglish, India
en-IEEnglish, Ireland
en-IMEnglish, Isle of Man
en-ILEnglish, Israel
en-JMEnglish, Jamaica
en-JEEnglish, Jersey
en-KEEnglish, Kenya
en-KIEnglish, Kiribati
en-LSEnglish, Lesotho
en-LREnglish, Liberia
en-MOEnglish, Macao SAR
en-MGEnglish, Madagascar
en-MWEnglish, Malawi
en-MYEnglish, Malaysia
en-MTEnglish, Malta
en-MHEnglish, Marshall Islands
en-MUEnglish, Mauritius
en-FMEnglish, Micronesia
en-MSEnglish, Montserrat
en-NAEnglish, Namibia
en-NREnglish, Nauru
en-NLEnglish, Netherlands
en-NZEnglish, New Zealand
en-NGEnglish, Nigeria
en-NUEnglish, Niue
en-NFEnglish, Norfolk Island
en-MPEnglish, Northern Mariana Islands
en-PKEnglish, Pakistan
en-PWEnglish, Palau
en-PGEnglish, Papua New Guinea
en-PNEnglish, Pitcairn Islands
en-PREnglish, Puerto Rico
en-PHEnglish, Republic of the Philippines
en-RWEnglish, Rwanda
en-KNEnglish, Saint Kitts and Nevis
en-LCEnglish, Saint Lucia
en-VCEnglish, Saint Vincent and the Grenadines
en-WSEnglish, Samoa
en-SCEnglish, Seychelles
en-SLEnglish, Sierra Leone
en-SGEnglish, Singapore
en-SXEnglish, Sint Maarten
en-SIEnglish, Slovenia
en-SBEnglish, Solomon Islands
en-ZAEnglish, South Africa
en-SSEnglish, South Sudan
en-SHEnglish, St Helena, Ascension, Tristan da Cunha
en-SDEnglish, Sudan
en-SZEnglish, Swaziland
en-SEEnglish, Sweden
en-CHEnglish, Switzerland
en-TZEnglish, Tanzania
en-TKEnglish, Tokelau
en-TOEnglish, Tonga
en-TTEnglish, Trinidad and Tobago
en-TCEnglish, Turks and Caicos Islands
en-TVEnglish, Tuvalu
en-UGEnglish, Uganda
en-AEEnglish, United Arab Emirates
en-GBEnglish, United Kingdom
en-USEnglish, United States
en-UMEnglish, US Minor Outlying Islands
en-VIEnglish, US Virgin Islands
en-VUEnglish, Vanuatu
en-001English, World
en-ZMEnglish, Zambia
en-ZWEnglish, Zimbabwe
eoEsperanto
eo-001Esperanto, World
etEstonian
et-EEEstonian, Estonia
eeEwe
ee-GHEwe, Ghana
ee-TGEwe, Togo
ewoEwondo
ewo-CMEwondo, Cameroon
foFaroese
fo-DKFaroese, Denmark
fo-FOFaroese, Faroe Islands
filFilipino
fil-PHFilipino, Philippines
fiFinnish
fi-FIFinnish, Finland
frFrench
fr-DZFrench, Algeria
fr-BEFrench, Belgium
fr-BJFrench, Benin
fr-BFFrench, Burkina Faso
fr-BIFrench, Burundi
fr-CMFrench, Cameroon
fr-CAFrench, Canada
fr-CFFrench, Central African Republic
fr-TDFrench, Chad
fr-KMFrench, Comoros
fr-CGFrench, Congo
fr-CDFrench, Congo, DRC
fr-CIFrench, Côte d'Ivoire
fr-DJFrench, Djibouti
fr-GQFrench, Equatorial Guinea
fr-FRFrench, France
fr-GFFrench, French Guiana
fr-PFFrench, French Polynesia
fr-GAFrench, Gabon
fr-GPFrench, Guadeloupe
fr-GNFrench, Guinea
fr-HTFrench, Haiti
fr-LUFrench, Luxembourg
fr-MGFrench, Madagascar
fr-MLFrench, Mali
fr-MQFrench, Martinique
fr-MRFrench, Mauritania
fr-MUFrench, Mauritius
fr-YTFrench, Mayotte
fr-MAFrench, Morocco
fr-NCFrench, New Caledonia
fr-NEFrench, Niger
fr-MCFrench, Principality of Monaco
fr-REFrench, Reunion
fr-RWFrench, Rwanda
fr-BLFrench, Saint Barthélemy
fr-MFFrench, Saint Martin
fr-PMFrench, Saint Pierre and Miquelon
fr-SNFrench, Senegal
fr-SCFrench, Seychelles
fr-CHFrench, Switzerland
fr-SYFrench, Syria
fr-TGFrench, Togo
fr-TNFrench, Tunisia
fr-VUFrench, Vanuatu
fr-WFFrench, Wallis and Futuna
fyFrisian
fy-NLFrisian, Netherlands
furFriulian
fur-ITFriulian, Italy
ffFulah
ff-LatnFulah (Latin)
ff-Latn-BFFulah (Latin), Burkina Faso
ff-CMFulah, Cameroon
ff-Latn-CMFulah (Latin), Cameroon
ff-Latn-GMFulah (Latin), Gambia
ff-Latn-GHFulah (Latin), Ghana
ff-GNFulah, Guinea
ff-Latn-GNFulah (Latin), Guinea
ff-Latn-GWFulah (Latin), Guinea-Bissau
ff-Latn-LRFulah (Latin), Liberia
ff-MRFulah, Mauritania
ff-Latn-MRFulah (Latin), Mauritania
ff-Latn-NEFulah (Latin), Niger
ff-NGFulah, Nigeria
ff-Latn-NGFulah (Latin), Nigeria
ff-Latn-SNFulah, Senegal
ff-Latn-SLFulah (Latin), Sierra Leone
glGalician
gl-ESGalician, Spain
lgGanda
lg-UGGanda, Uganda
kaGeorgian
ka-GEGeorgian, Georgia
deGerman
de-ATGerman, Austria
de-BEGerman, Belgium
de-DEGerman, Germany
de-ITGerman, Italy
de-LIGerman, Liechtenstein
de-LUGerman, Luxembourg
de-CHGerman, Switzerland
elGreek
el-CYGreek, Cyprus
el-GRGreek, Greece
klGreenlandic
kl-GLGreenlandic, Greenland
gnGuarani
gn-PYGuarani, Paraguay
guGujarati
gu-INGujarati, India
guzGusii
guz-KEGusii, Kenya
haHausa (Latin)
ha-LatnHausa (Latin)
ha-Latn-GHHausa (Latin), Ghana
ha-Latn-NEHausa (Latin), Niger
ha-Latn-NGHausa (Latin), Nigeria
hawHawaiian
haw-USHawaiian, United States
heHebrew
he-ILHebrew, Israel
hiHindi
hi-INHindi, India
huHungarian
hu-HUHungarian, Hungary
isIcelandic
is-ISIcelandic, Iceland
igIgbo
ig-NGIgbo, Nigeria
idIndonesian
id-IDIndonesian, Indonesia
iaInterlingua
ia-FRInterlingua, France
ia-001Interlingua, World
iuInuktitut (Latin)
iu-LatnInuktitut (Latin)
iu-Latn-CAInuktitut (Latin), Canada
iu-CansInuktitut (Syllabics)
iu-Cans-CAInuktitut (Syllabics), Canada
gaIrish
ga-IEIrish, Ireland
itItalian
it-ITItalian, Italy
it-SMItalian, San Marino
it-CHItalian, Switzerland
it-VAItalian, Vatican City
jaJapanese
ja-JPJapanese, Japan
jvJavanese
jv-LatnJavanese, Latin
jv-Latn-IDJavanese, Latin, Indonesia
dyoJola-Fonyi
dyo-SNJola-Fonyi, Senegal
keaKabuverdianu
kea-CVKabuverdianu, Cabo Verde
kabKabyle
kab-DZKabyle, Algeria
kkjKako
kkj-CMKako, Cameroon
klnKalenjin
kln-KEKalenjin, Kenya
kamKamba
kam-KEKamba, Kenya
knKannada
kn-INKannada, India
ksKashmiri
ks-ArabKashmiri, Perso-Arabic
ks-Arab-INKashmiri, Perso-Arabic
kkKazakh
kk-KZKazakh, Kazakhstan
kmKhmer
km-KHKhmer, Cambodia
qucK'iche
quc-Latn-GTK'iche, Guatemala
kiKikuyu
ki-KEKikuyu, Kenya
rwKinyarwanda
rw-RWKinyarwanda, Rwanda
swKiswahili
sw-KEKiswahili, Kenya
sw-TZKiswahili, Tanzania
sw-UGKiswahili, Uganda
kokKonkani
kok-INKonkani, India
koKorean
ko-KRKorean, Korea
ko-KPKorean, North Korea
khqKoyra Chiini
khq-MLKoyra Chiini, Mali
sesKoyraboro Senni
ses-MLKoyraboro Senni, Mali
nmgKwasio
nmg-CMKwasio, Cameroon
kyKyrgyz
ky-KGKyrgyz, Kyrgyzstan
ku-Arab-IRKurdish, Perso-Arabic, Iran
lktLakota
lkt-USLakota, United States
lagLangi
lag-TZLangi, Tanzania
loLao
lo-LALao, Lao P.D.R.
lvLatvian
lv-LVLatvian, Latvia
lnLingala
ln-AOLingala, Angola
ln-CFLingala, Central African Republic
ln-CGLingala, Congo
ln-CDLingala, Congo DRC
ltLithuanian
lt-LTLithuanian, Lithuania
ndsLow German
nds-DELow German, Germany
nds-NLLow German, Netherlands
dsbLower Sorbian
dsb-DELower Sorbian, Germany
luLuba-Katanga
lu-CDLuba-Katanga, Congo DRC
luoLuo
luo-KELuo, Kenya
lbLuxembourgish
lb-LULuxembourgish, Luxembourg
luyLuyia
luy-KELuyia, Kenya
mkMacedonian
mk-MKMacedonian, North Macedonia
jmcMachame
jmc-TZMachame, Tanzania
mghMakhuwa-Meetto
mgh-MZMakhuwa-Meetto, Mozambique
kdeMakonde
kde-TZMakonde, Tanzania
mgMalagasy
mg-MGMalagasy, Madagascar
msMalay
ms-BNMalay, Brunei Darussalam
ms-MYMalay, Malaysia
mlMalayalam
ml-INMalayalam, India
mtMaltese
mt-MTMaltese, Malta
gvManx
gv-IMManx, Isle of Man
miMaori
mi-NZMaori, New Zealand
arnMapudungun
arn-CLMapudungun, Chile
mrMarathi
mr-INMarathi, India
masMasai
mas-KEMasai, Kenya
mas-TZMasai, Tanzania
mzn-IRMazanderani, Iran
merMeru
mer-KEMeru, Kenya
mgoMeta'
mgo-CMMeta', Cameroon
mohMohawk
moh-CAMohawk, Canada
mnMongolian (Cyrillic)
mn-CyrlMongolian (Cyrillic)
mn-MNMongolian (Cyrillic), Mongolia
mn-MongMongolian (Traditional Mongolian)
mn-Mong-CNMongolian (Traditional Mongolian), People's Republic of China
mn-Mong-MNMongolian (Traditional Mongolian), Mongolia
mfeMorisyen
mfe-MUMorisyen, Mauritius
muaMundang
mua-CMMundang, Cameroon
nqoN'ko
nqo-GNN'ko, Guinea
naqNama
naq-NANama, Namibia
neNepali
ne-INNepali, India
ne-NPNepali, Nepal
nnhNgiemboon
nnh-CMNgiemboon, Cameroon
jgoNgomba
jgo-CMNgomba, Cameroon
lrc-IQNorthern Luri, Iraq
lrc-IRNorthern Luri, Iran
ndNorth Ndebele
nd-ZWNorth Ndebele, Zimbabwe
noNorwegian (Bokmal)
nbNorwegian (Bokmal)
nb-NONorwegian (Bokmal), Norway
nnNorwegian (Nynorsk)
nn-NONorwegian (Nynorsk), Norway
nb-SJNorwegian Bokmål, Svalbard and Jan Mayen
nusNuer
nus-SDNuer, Sudan
nus-SSNuer, South Sudan
nynNyankole
nyn-UGNyankole, Uganda
ocOccitan
oc-FROccitan, France
orOdia
or-INOdia, India
omOromo
om-ETOromo, Ethiopia
om-KEOromo, Kenya
osOssetian
os-GEOssetian, Cyrillic, Georgia
os-RUOssetian, Cyrillic, Russia
psPashto
ps-AFPashto, Afghanistan
ps-PKPashto, Pakistan
faPersian
fa-AFPersian, Afghanistan
fa-IRPersian, Iran
plPolish
pl-PLPolish, Poland
ptPortuguese
pt-AOPortuguese, Angola
pt-BRPortuguese, Brazil
pt-CVPortuguese, Cabo Verde
pt-GQPortuguese, Equatorial Guinea
pt-GWPortuguese, Guinea-Bissau
pt-LUPortuguese, Luxembourg
pt-MOPortuguese, Macao SAR
pt-MZPortuguese, Mozambique
pt-PTPortuguese, Portugal
pt-STPortuguese, São Tomé and Príncipe
pt-CHPortuguese, Switzerland
pt-TLPortuguese, Timor-Leste
prg-001Prussian
qps-plocaPseudo Language, Pseudo locale for east Asian/complex script localization testing
qps-plocPseudo Language, Pseudo locale used for localization testing
qps-plocmPseudo Language, Pseudo locale used for localization testing of mirrored locales
paPunjabi
pa-ArabPunjabi
pa-INPunjabi, India
pa-Arab-PKPunjabi, Islamic Republic of Pakistan
quzQuechua
quz-BOQuechua, Bolivia
quz-ECQuechua, Ecuador
quz-PEQuechua, Peru
kshRipuarian
ksh-DERipuarian, Germany
roRomanian
ro-MDRomanian, Moldova
ro-RORomanian, Romania
rmRomansh
rm-CHRomansh, Switzerland
rofRombo
rof-TZRombo, Tanzania
rnRundi
rn-BIRundi, Burundi
ruRussian
ru-BYRussian, Belarus
ru-KZRussian, Kazakhstan
ru-KGRussian, Kyrgyzstan
ru-MDRussian, Moldova
ru-RURussian, Russia
ru-UARussian, Ukraine
rwkRwa
rwk-TZRwa, Tanzania
ssySaho
ssy-ERSaho, Eritrea
sahSakha
sah-RUSakha, Russia
saqSamburu
saq-KESamburu, Kenya
smnSami (Inari)
smn-FISami (Inari), Finland
smjSami (Lule)
smj-NOSami (Lule), Norway
smj-SESami (Lule), Sweden
seSami (Northern)
se-FISami (Northern), Finland
se-NOSami (Northern), Norway
se-SESami (Northern), Sweden
smsSami (Skolt)
sms-FISami (Skolt), Finland
smaSami (Southern)
sma-NOSami (Southern), Norway
sma-SESami (Southern), Sweden
sgSango
sg-CFSango, Central African Republic
sbpSangu
sbp-TZSangu, Tanzania
saSanskrit
sa-INSanskrit, India
gdScottish Gaelic
gd-GBScottish Gaelic, United Kingdom
sehSena
seh-MZSena, Mozambique
sr-CyrlSerbian (Cyrillic)
sr-Cyrl-BASerbian (Cyrillic), Bosnia and Herzegovina
sr-Cyrl-MESerbian (Cyrillic), Montenegro
sr-Cyrl-RSSerbian (Cyrillic), Serbia
sr-Cyrl-CSSerbian (Cyrillic), Serbia and Montenegro (Former)
sr-LatnSerbian (Latin)
srSerbian (Latin)
sr-Latn-BASerbian (Latin), Bosnia and Herzegovina
sr-Latn-MESerbian (Latin), Montenegro
sr-Latn-RSSerbian (Latin), Serbia
sr-Latn-CSSerbian (Latin), Serbia and Montenegro (Former)
nsoSesotho sa Leboa
nso-ZASesotho sa Leboa, South Africa
tnSetswana
tn-BWSetswana, Botswana
tn-ZASetswana, South Africa
ksbShambala
ksb-TZShambala, Tanzania
snShona
sn-LatnShona, Latin
sn-Latn-ZWShona, Zimbabwe
sdSindhi
sd-ArabSindhi
sd-Arab-PKSindhi, Islamic Republic of Pakistan
siSinhala
si-LKSinhala, Sri Lanka
skSlovak
sk-SKSlovak, Slovakia
slSlovenian
sl-SISlovenian, Slovenia
xogSoga
xog-UGSoga, Uganda
soSomali
so-DJSomali, Djibouti
so-ETSomali, Ethiopia
so-KESomali, Kenya
so-SOSomali, Somalia
stSotho
st-ZASotho, South Africa
nrSouth Ndebele
nr-ZASouth Ndebele, South Africa
st-LSSouthern Sotho, Lesotho
esSpanish
es-ARSpanish, Argentina
es-BZSpanish, Belize
es-VESpanish, Bolivarian Republic of Venezuela
es-BOSpanish, Bolivia
es-BRSpanish, Brazil
es-CLSpanish, Chile
es-COSpanish, Colombia
es-CRSpanish, Costa Rica
es-CUSpanish, Cuba
es-DOSpanish, Dominican Republic
es-ECSpanish, Ecuador
es-SVSpanish, El Salvador
es-GQSpanish, Equatorial Guinea
es-GTSpanish, Guatemala
es-HNSpanish, Honduras
es-419Spanish, Latin America
es-MXSpanish, Mexico
es-NISpanish, Nicaragua
es-PASpanish, Panama
es-PYSpanish, Paraguay
es-PESpanish, Peru
es-PHSpanish, Philippines
es-PRSpanish, Puerto Rico
es-ES_tradnlSpanish, Spain
es-ESSpanish, Spain
es-USSpanish, UnitedStates
es-UYSpanish, Uruguay
zghStandard Moroccan Tamazight
zgh-Tfng-MAStandard Moroccan Tamazight, Morocco
zgh-TfngStandard Moroccan Tamazight, Tifinagh
ssSwati
ss-ZASwati, South Africa
ss-SZSwati, Swaziland
svSwedish
sv-AXSwedish, Åland Islands
sv-FISwedish, Finland
sv-SESwedish, Sweden
syrSyriac
syr-SYSyriac, Syria
shiTachelhit
shi-TfngTachelhit, Tifinagh
shi-Tfng-MATachelhit, Tifinagh, Morocco
shi-LatnTachelhit (Latin)
shi-Latn-MATachelhit (Latin), Morocco
davTaita
dav-KETaita, Kenya
tgTajik (Cyrillic)
tg-CyrlTajik (Cyrillic)
tg-Cyrl-TJTajik (Cyrillic), Tajikistan
tzmTamazight (Latin)
tzm-LatnTamazight (Latin)
tzm-Latn-DZTamazight (Latin), Algeria
taTamil
ta-INTamil, India
ta-MYTamil, Malaysia
ta-SGTamil, Singapore
ta-LKTamil, Sri Lanka
twqTasawaq
twq-NETasawaq, Niger
ttTatar
tt-RUTatar, Russia
teTelugu
te-INTelugu, India
teoTeso
teo-KETeso, Kenya
teo-UGTeso, Uganda
thThai
th-THThai, Thailand
boTibetan
bo-INTibetan, India
bo-CNTibetan, People's Republic of China
tigTigre
tig-ERTigre, Eritrea
tiTigrinya
ti-ERTigrinya, Eritrea
ti-ETTigrinya, Ethiopia
toTongan
to-TOTongan, Tonga
tsTsonga
ts-ZATsonga, South Africa
trTurkish
tr-CYTurkish, Cyprus
tr-TRTurkish, Turkey
tkTurkmen
tk-TMTurkmen, Turkmenistan
ukUkrainian
uk-UAUkrainian, Ukraine
hsbUpper Sorbian
hsb-DEUpper Sorbian, Germany
urUrdu
ur-INUrdu, India
ur-PKUrdu, Islamic Republic of Pakistan
ugUyghur
ug-CNUyghur, People's Republic of China
uz-ArabUzbek, Perso-Arabic
uz-Arab-AFUzbek, Perso-Arabic, Afghanistan
uz-CyrlUzbek (Cyrillic)
uz-Cyrl-UZUzbek (Cyrillic), Uzbekistan
uzUzbek (Latin)
uz-LatnUzbek (Latin)
uz-Latn-UZUzbek (Latin), Uzbekistan
vaiVai
vai-VaiiVai
vai-Vaii-LRVai, Liberia
vai-Latn-LRVai (Latin), Liberia
vai-LatnVai (Latin)
ca-ES-Valencian, Spain
veVenda
ve-ZAVenda, South Africa
viVietnamese
vi-VNVietnamese, Vietnam
voVolapük
vo-001Volapük, World
vunVunjo
vun-TZVunjo, Tanzania
waeWalser
wae-CHWalser, Switzerland
cyWelsh
cy-GBWelsh, United Kingdom
walWolaytta
wal-ETWolaytta, Ethiopia
woWolof
wo-SNWolof, Senegal
xhXhosa
xh-ZAXhosa, South Africa
yavYangben
yav-CMYangben, Cameroon
iiYi
ii-CNYi, People's Republic of China
yoYoruba
yo-BJYoruba, Benin
yo-NGYoruba, Nigeria
djeZarma
dje-NEZarma, Niger
zuZulu
zu-ZAZulu, South Africa