Lingohub support for language codes in localization

Post featured image

Which language codes (ISO) do we support on LingoHub? This article outlines our support for language codes and explains some important aspects regarding ISO codes, exceptions and legacy encoding.

How do we approach language codes? When importing the resource file into the lingohub project, we try to detect the language for the file

  • from the information within the file itself (for the formats where it is applicable)
  • from the file name or
  • from the file path (if the file is being imported via repository)

If the detection fails, the language can still be chosen from the list.

Language codes

The language information should be specified by the language code. We support all language codes found in the current up to date list defined in ISO 639-1 standard. Also, for all countries/territories that list official languages we support language-region combinations.

For example, for Switzerland (CH), where the official languages are German (de), French (fr), Italian (it) and Romansch (rm), these are combinations that we support: de-CH, fr-CH, it-CH, rm-CH.

Additionally, we support all Facebook codes. For migrating deprecated codes (those that were removed from the standard list at some point) to their valid alternatives, this page can be consulted.

language code

  • ISO 639-1 - covers the registration of two letter language codes. The complete list of all registered ISO 639-1 language codes can be found here.
  • language / region separators that we accept are dash and underscore ( - _ )
  • ISO 3166-1 alpha-2 codes - defines two letter country codes that represent countries, dependent territories, and special areas of geographical interest.

Some resource file formats make it possible to define the language code of the associated language within the file. If that is the case with the uploaded resource file, and the valid code is specified, that is what we use.

Examples of valid language codes:

  • en
  • de-AT
  • nl_BE

Specifying the language code in a file name

if there is no language code specified within the file, we try to detect it from the file name, here is how LingoHub will approach it:

language code2

  • base names are optional - the file name can consist of language code and extension only, for example: en.yml
  • language code separators come between the base name (if it is present) and the language code
  • valid language code separators are dot, underscore and dash ( . _ - )
  • two letter lower case language code
  • two letter upper case region code
  • extension as specified for particular resource file format

Examples of properly formatted resource file names:

  • en.yml
  • en-US.yml
  • en_US.yml
  • activerecord.en.yml
  • activerecord_en.yml
  • activerecord-en.yml

Specifying the language code in file path

If the resource file is imported via repository, and no language code was found within the file or file name, we will search for it anywhere in the path preceding the file name.

language code3

The language code can be found anywhere in the path and it needs to conform to the same rules as expected when it is in the file name.

Example of paths with valid language codes specified:

  • en/activerecord.yml
  • en/activerecord/errors.yml
  • locales/en/activerecord.yml
  • locales/activerecord.en/errors.yml

A list of all language codes supported by LingoHub

This table lits all language codes currently supported by LingoHub

language code language language code language
ab Abkhaz aa Afar
af Afrikaans af-ZA Afrikaans (South Africa)
ak Akan sq Albanian
sq-AL Albanian (Albania) sq-KS Albanian (Kosovo)
am Amharic ar Arabic
ar-DZ Arabic (Algeria) ar-AR Arabic (Arabic)
ar-BH Arabic (Bahrain) ar-TD Arabic (Chad)
ar-KM Arabic (Comoros) ar-DJ Arabic (Djibouti)
ar-EG Arabic (Egypt) ar-ER Arabic (Eritrea)
ar-IQ Arabic (Iraq) ar-IL Arabic (Israel)
ar-JO Arabic (Jordan) ar-KW Arabic (Kuwait)
ar-LB Arabic (Lebanon) ar-LY Arabic (Libya)
ar-MR Arabic (Mauritania) ar-MA Arabic (Morocco)
ar-OM Arabic (Oman) ar-QA Arabic (Qatar)
ar-SA Arabic (Saudi Arabia) ar-SO Arabic (Somalia)
ar-SD Arabic (Sudan) ar-SY Arabic (Syria)
ar-TN Arabic (Tunisia) ar-AE Arabic (United Arab Emirates)
ar-PS Arabic (West Bank and Gaza) ar-EH Arabic (Western Sahara)
ar-YE Arabic (Yemen) an Aragonese
hy Armenian hy-AM Armenian (Armenia)
as Assamese av Avaric
ay Aymara az Azerbaijani
az-AZ Azerbaijani (Azerbaijan) bm Bambara
ba Bashkir eu Basque
eu-ES Basque (Spain) be Belarusian
be-BY Belarusian (Belarus) bn Bengali
bn-IN Bengali (India) bh Bihari
bi Bislama bs Bosnian
bs-BA Bosnian (Bosnia and Herzegovina) br Breton
bg Bulgarian bg-BG Bulgarian (Bulgaria)
my Burmese ca Catalan
ca-AD Catalan (Andorra) ca-ES Catalan (Spain)
ch Chamorro ce Chechen
ny Chichewa zh Chinese
zh-CN Chinese (China) zh-HK Chinese (Hong Kong)
zh-MO Chinese (Macao) zh-SG Chinese (Singapore)
zh-TW Chinese (Taiwan) cv Chuvash
kw Cornish co Corsican
cr Cree hr Croatian
hr-BA Croatian (Bosnia and Herzegovina) hr-HR Croatian (Croatia)
cs Czech cs-CZ Czech (Czech Republic)
cs-SK Czech (Slovak Republic) da Danish
da-DK Danish (Denmark) da-FO Danish (Faeroe Islands)
da-GL Danish (Greenland) dv Divehi
nl Dutch nl-AW Dutch (Aruba)
nl-BE Dutch (Belgium) nl-CW Dutch (Curaçao)
nl-AN Dutch (Netherlands Antilles) nl-NL Dutch (Netherlands)
nl-SX Dutch (Sint Maarten (Dutch part)) nl-SR Dutch (Suriname)
dz Dzongkha en-AS English (American Samoa)
en-AI English (Anguilla) en-AG English (Antigua and Barbuda)
en-AU English (Australia) en-BD English (Bangladesh)
en-BB English (Barbados) en-BZ English (Belize)
en-BM English (Bermuda) en-BW English (Botswana)
en-VG English (British Virgin Islands) en-CM English (Cameroon)
en-CA English (Canada) en-KY English (Cayman Islands)
en-CK English (Cook Islands) en-CW English (Curaçao)
en-DM English (Dominica) en-ER English (Eritrea)
en-FK English (Falkland Islands) en-FJ English (Fiji)
en-GH English (Ghana) en-GI English (Gibraltar)
en-GD English (Grenada) en-GU English (Guam)
en-GG English (Guernsey) en-GY English (Guyana)
en-HK English (Hong Kong) en-IN English (India)
en-IE English (Ireland) en-IM English (Isle of Man)
en-JM English (Jamaica) en-JE English (Jersey)
en-KE English (Kenya) en-KI English (Kiribati)
en-LS English (Lesotho) en-LR English (Liberia)
en-MW English (Malawi) en-MY English (Malaysia)
en-MT English (Malta) en-MH English (Marshall Islands)
en-MU English (Mauritius) en-FM English (Micronesia)
en-MS English (Montserrat) en-NA English (Namibia)
en-NR English (Nauru) en-NZ English (New Zealand)
en-NG English (Nigeria) en-NU English (Niue)
en-MP English (Northern Mariana Islands) en-PK English (Pakistan)
en-PW English (Palau) en-PG English (Papua New Guinea)
en-PH English (Philippines) en-PI English (Pirate)
en-PN English (Pitcairn Islands) en-PR English (Puerto Rico)
en-RW English (Rwanda) en-SH English (Saint Helena)
en-WS English (Samoa) en-SC English (Seychelles)
en-SL English (Sierra Leone) en-SG English (Singapore)
en-SB English (Solomon Islands) en-SO English (Somalia)
en-ZA English (South Africa) en-SS English (South Sudan)
en-LK English (Sri Lanka) en-KN English (St. Kitts and Nevis)
en-LC English (St. Lucia) en-VC English (St. Vincent and the Grenadines)
en-SD English (Sudan) en-SZ English (Swaziland)
en-TZ English (Tanzania) en-BS English (The Bahamas)
en-GM English (The Gambia) en-TO English (Tonga)
en-TT English (Trinidad and Tobago) en-TC English (Turks and Caicos Islands)
en-TV English (Tuvalu) en-UG English (Uganda)
en-GB English (United Kingdom) en-VI English (United States Virgin Islands)
en-US English (United States) en-UD English (Upside Down)
en-VU English (Vanuatu) en-ZM English (Zambia)
en-ZW English (Zimbabwe) eo-EO Esperanto (Esperanto)
et Estonian et-EE Estonian (Estonia)
ee Ewe fo Faroese
fo-FO Faroese (Faeroe Islands) fj Fijian
tl-PH Filipino (Philippines) fi Finnish
fi-FI Finnish (Finland) fr French
fr-BE French (Belgium) fr-BJ French (Benin)
fr-BF French (Burkina Faso) fr-BI French (Burundi)
fr-CM French (Cameroon) fr-CA French (Canada)
fr-CF French (Central African Republic) fr-TD French (Chad)
fr-KM French (Comoros) fr-CG French (Congo)
fr-CI French (Côte d'Ivoire) fr-CD French (Dem. Rep. Congo)
fr-DJ French (Djibouti) fr-GQ French (Equatorial Guinea)
fr-FR French (France) fr-GF French (French Guianna)
fr-PF French (French Polynesia) fr-GA French (Gabon)
fr-GD French (Grenada) fr-GP French (Guadeloupe)
fr-GN French (Guinea) fr-HT French (Haiti)
fr-LU French (Luxembourg) fr-MG French (Madagascar)
fr-ML French (Mali) fr-MQ French (Martinique)
fr-MU French (Mauritius) fr-YT French (Mayotte)
fr-MC French (Monaco) fr-NC French (New Caledonia)
fr-NE French (Niger) fr-RW French (Rwanda)
fr-RE French (Réunion) fr-PM French (Saint Pierre and Miquelon)
fr-SN French (Senegal) fr-SC French (Seychelles)
fr-LC French (St. Lucia) fr-MF French (St. Martin (French part))
fr-CH French (Switzerland) fr-TG French (Togo)
fr-VU French (Vanuatu) fr-WF French (Wallis and Futuna)
fy-NL Frisian (Netherlands) ff Fula
gl Galician gl-ES Galician (Spain)
lg Ganda ka Georgian
ka-GE Georgian (Georgia) de German
de-AT German (Austria) de-BE German (Belgium)
de-DE German (Germany) de-LI German (Liechtenstein)
de-LU German (Luxembourg) de-NA German (Namibia)
de-CH German (Switzerland) el Greek
el-CY Greek (Cyprus) el-GR Greek (Greece)
gn Guaraní gu Gujarati
ht Haitian ha Hausa
he Hebrew he-IL Hebrew (Israel)
hz Herero hi Hindi
hi-FJ Hindi (Fiji) hi-IN Hindi (India)
hi-PK Hindi (Pakistan) ho Hiri Motu
hu Hungarian hu-HU Hungarian (Hungary)
is Icelandic is-IS Icelandic (Iceland)
io Ido ig Igbo
id Indonesian id-ID Indonesian (Indonesia)
iu Inuktitut ik Inupiaq
ga Irish ga-IE Irish (Ireland)
ga-GB Irish (United Kingdom) it Italian
it-IT Italian (Italy) it-SM Italian (San Marino)
it-CH Italian (Switzerland) it-VA Italian (Vatican City)
ja Japanese ja-JP Japanese (Japan)
ja-PW Japanese (Palau) jv Javanese
kl Kalaallisut kn Kannada
kr Kanuri ks Kashmiri
kk Kazakh km Khmer
km-KH Khmer (Cambodia) ki Kikuyu
rw Kinyarwanda rn Kirundi
kv Komi kg Kongo
ko Korean ko-KP Korean (DPRK)
ko-KR Korean (South Korea) ku Kurdish
ku-TR Kurdish (Turkey) kj Kwanyama
ky Kyrgyz lo Lao
la-VA Latin (Vatican City) lv Latvian
lv-LV Latvian (Latvia) fb-LT Leet Speak
li Limburgish ln Lingala
lt Lithuanian lt-LT Lithuanian (Lithuania)
lu Luba-Katanga lb Luxembourgish
mk Macedonian mk-MK Macedonian (Macedonia)
mg Malagasy ms Malay
ms-BN Malay (Brunei) ms-ID Malay (Indonesia)
ms-MY Malay (Malaysia) ms-SG Malay (Singapore)
ml Malayalam ml-IN Malayalam (India)
mt Maltese mt-MT Maltese (Malta)
gv Manx mr Marathi
mh Marshallese mn Mongolian
mi Māori na Nauru
nv Navajo ng Ndonga
ne Nepali ne-NP Nepali (Nepal)
nd North Ndebele se Northern Sami
no Norwegian no-NO Norwegian (Norway)
nb Norwegian Bokmål nb-NO Norwegian Bokmål (Norway)
nn Norwegian Nynorsk nn-NO Norwegian Nynorsk (Norway)
ii Nuosu oc Occitan
oj Ojibwe or Oriya
om Oromo os Ossetian
pa Panjabi ps Pashto
ps-AF Pashto (Afghanistan) fa Persian
fa-IR Persian (Iran) pl Polish
pl-PL Polish (Poland) pt Portuguese
pt-AO Portuguese (Angola) pt-BR Portuguese (Brazil)
pt-CV Portuguese (Cape Verde) pt-GQ Portuguese (Equatorial Guinea)
pt-GW Portuguese (Guinea-Bissau) pt-MO Portuguese (Macao)
pt-MZ Portuguese (Mozambique) pt-PT Portuguese (Portugal)
pt-ST Portuguese (São Tomé and Principe) pt-TL Portuguese (Timor-Leste)
pa-IN Punjabi (India) qu Quechua
ro Romanian ro-MD Romanian (Moldova)
ro-RO Romanian (Romania) rm Romansh
ru Russian ru-BY Russian (Belarus)
ru-KZ Russian (Kazakhstan) ru-KG Russian (Kyrgyz Republic)
ru-RU Russian (Russia) ru-TJ Russian (Tajikistan)
sm Samoan sg Sango
sa Sanskrit sc Sardinian
gd Scottish Gaelic sr Serbian
sr-BA Serbian (Bosnia and Herzegovina) sr-ME Serbian (Montenegro)
sr-RS Serbian (Serbia) sn Shona
sd Sindhi si Sinhala
sk Slovak sk-CZ Slovak (Czech Republic)
sk-SK Slovak (Slovakia) sl Slovenian
sl-SI Slovenian (Slovenia) so Somali
nr South Ndebele st Southern Sotho
es Spanish es-AR Spanish (Argentina)
es-BO Spanish (Bolivia) es-CL Spanish (Chile)
es-CO Spanish (Colombia) es-CR Spanish (Costa Rica)
es-CU Spanish (Cuba) es-DO Spanish (Dominican Republic)
es-EC Spanish (Ecuador) es-SV Spanish (El Salvador)
es-GQ Spanish (Equatorial Guinea) es-GI Spanish (Gibraltar)
es-GT Spanish (Guatemala) es-HN Spanish (Honduras)
es-MX Spanish (Mexico) es-NI Spanish (Nicaragua)
es-PA Spanish (Panama) es-PY Spanish (Paraguay)
es-PE Spanish (Peru) es-PR Spanish (Puerto Rico)
es-ES Spanish (Spain) es-LA Spanish (Spanish)
es-US Spanish (United States) es-UY Spanish (Uruguay)
es-VE Spanish (Venezuela) su Sundanese
sw Swahili sw-KE Swahili (Kenya)
ss Swati sv Swedish
sv-FI Swedish (Finland) sv-SE Swedish (Sweden)
tl Tagalog ty Tahitian
tg Tajik ta Tamil
ta-IN Tamil (India) tt Tatar
te Telugu te-IN Telugu (India)
th Thai th-TH Thai (Thailand)
bo Tibetan ti Tigrinya
to Tonga ts Tsonga
tn Tswana tr Turkish
tr-CY Turkish (Cyprus) tr-TR Turkish (Turkey)
tk Turkmen tw Twi
ug Uighur uk Ukrainian
uk-UA Ukrainian (Ukraine) ur Urdu
uz Uzbek ve Venda
vi Vietnamese vi-VN Vietnamese (Vietnam)
wa Walloon cy Welsh
cy-GB Welsh (United Kingdom) fy Western Frisian
wo Wolof xh Xhosa
yi Yiddish yo Yoruba
za Zhuang zu Zulu