Skip to content

Instantly share code, notes, and snippets.

@mirontoli
Last active November 3, 2023 15:15
Show Gist options
  • Save mirontoli/4722797 to your computer and use it in GitHub Desktop.
Save mirontoli/4722797 to your computer and use it in GitHub Desktop.
Get Language name based on iso 639-1 code
/**
* @author Anatoly Mironov (mirontoli)
* http://sharepointkunskap.wordpress.com
* http://www.bool.se
*
* http://stackoverflow.com/questions/3605495/generate-a-list-of-localized-language-names-with-links-to-google-translate/14800384#14800384
* http://stackoverflow.com/questions/10997128/language-name-from-iso-639-1-code-in-javascript/14800499#14800499
*
* using Phil Teare's answer on stackoverflow
* http://stackoverflow.com/questions/3217492/list-of-language-codes-in-yaml-or-json/4900304#4900304
* Just for testing only. Incorporate in your own javascript namespace
* Example: getLanguageName("cv-RU") --> Chuvash
*/
(function() {
'use strict';
/**
* @author Phil Teare
* using wikipedia data
*/
var isoLangs = {
"ab":{
"name":"Abkhaz",
"nativeName":"аҧсуа"
},
"aa":{
"name":"Afar",
"nativeName":"Afaraf"
},
"af":{
"name":"Afrikaans",
"nativeName":"Afrikaans"
},
"ak":{
"name":"Akan",
"nativeName":"Akan"
},
"sq":{
"name":"Albanian",
"nativeName":"Shqip"
},
"am":{
"name":"Amharic",
"nativeName":"አማርኛ"
},
"ar":{
"name":"Arabic",
"nativeName":"العربية"
},
"an":{
"name":"Aragonese",
"nativeName":"Aragonés"
},
"hy":{
"name":"Armenian",
"nativeName":"Հայերեն"
},
"as":{
"name":"Assamese",
"nativeName":"অসমীয়া"
},
"av":{
"name":"Avaric",
"nativeName":"авар мацӀ, магӀарул мацӀ"
},
"ae":{
"name":"Avestan",
"nativeName":"avesta"
},
"ay":{
"name":"Aymara",
"nativeName":"aymar aru"
},
"az":{
"name":"Azerbaijani",
"nativeName":"azərbaycan dili"
},
"bm":{
"name":"Bambara",
"nativeName":"bamanankan"
},
"ba":{
"name":"Bashkir",
"nativeName":"башҡорт теле"
},
"eu":{
"name":"Basque",
"nativeName":"euskara, euskera"
},
"be":{
"name":"Belarusian",
"nativeName":"Беларуская"
},
"bn":{
"name":"Bengali",
"nativeName":"বাংলা"
},
"bh":{
"name":"Bihari",
"nativeName":"भोजपुरी"
},
"bi":{
"name":"Bislama",
"nativeName":"Bislama"
},
"bs":{
"name":"Bosnian",
"nativeName":"bosanski jezik"
},
"br":{
"name":"Breton",
"nativeName":"brezhoneg"
},
"bg":{
"name":"Bulgarian",
"nativeName":"български език"
},
"my":{
"name":"Burmese",
"nativeName":"ဗမာစာ"
},
"ca":{
"name":"Catalan; Valencian",
"nativeName":"Català"
},
"ch":{
"name":"Chamorro",
"nativeName":"Chamoru"
},
"ce":{
"name":"Chechen",
"nativeName":"нохчийн мотт"
},
"ny":{
"name":"Chichewa; Chewa; Nyanja",
"nativeName":"chiCheŵa, chinyanja"
},
"zh":{
"name":"Chinese",
"nativeName":"中文 (Zhōngwén), 汉语, 漢語"
},
"cv":{
"name":"Chuvash",
"nativeName":"чӑваш чӗлхи"
},
"kw":{
"name":"Cornish",
"nativeName":"Kernewek"
},
"co":{
"name":"Corsican",
"nativeName":"corsu, lingua corsa"
},
"cr":{
"name":"Cree",
"nativeName":"ᓀᐦᐃᔭᐍᐏᐣ"
},
"hr":{
"name":"Croatian",
"nativeName":"hrvatski"
},
"cs":{
"name":"Czech",
"nativeName":"česky, čeština"
},
"da":{
"name":"Danish",
"nativeName":"dansk"
},
"dv":{
"name":"Divehi; Dhivehi; Maldivian;",
"nativeName":"ދިވެހި"
},
"nl":{
"name":"Dutch",
"nativeName":"Nederlands, Vlaams"
},
"en":{
"name":"English",
"nativeName":"English"
},
"eo":{
"name":"Esperanto",
"nativeName":"Esperanto"
},
"et":{
"name":"Estonian",
"nativeName":"eesti, eesti keel"
},
"ee":{
"name":"Ewe",
"nativeName":"Eʋegbe"
},
"fo":{
"name":"Faroese",
"nativeName":"føroyskt"
},
"fj":{
"name":"Fijian",
"nativeName":"vosa Vakaviti"
},
"fi":{
"name":"Finnish",
"nativeName":"suomi, suomen kieli"
},
"fr":{
"name":"French",
"nativeName":"français, langue française"
},
"ff":{
"name":"Fula; Fulah; Pulaar; Pular",
"nativeName":"Fulfulde, Pulaar, Pular"
},
"gl":{
"name":"Galician",
"nativeName":"Galego"
},
"ka":{
"name":"Georgian",
"nativeName":"ქართული"
},
"de":{
"name":"German",
"nativeName":"Deutsch"
},
"el":{
"name":"Greek, Modern",
"nativeName":"Ελληνικά"
},
"gn":{
"name":"Guaraní",
"nativeName":"Avañeẽ"
},
"gu":{
"name":"Gujarati",
"nativeName":"ગુજરાતી"
},
"ht":{
"name":"Haitian; Haitian Creole",
"nativeName":"Kreyòl ayisyen"
},
"ha":{
"name":"Hausa",
"nativeName":"Hausa, هَوُسَ"
},
"he":{
"name":"Hebrew (modern)",
"nativeName":"עברית"
},
"hz":{
"name":"Herero",
"nativeName":"Otjiherero"
},
"hi":{
"name":"Hindi",
"nativeName":"हिन्दी, हिंदी"
},
"ho":{
"name":"Hiri Motu",
"nativeName":"Hiri Motu"
},
"hu":{
"name":"Hungarian",
"nativeName":"Magyar"
},
"ia":{
"name":"Interlingua",
"nativeName":"Interlingua"
},
"id":{
"name":"Indonesian",
"nativeName":"Bahasa Indonesia"
},
"ie":{
"name":"Interlingue",
"nativeName":"Originally called Occidental; then Interlingue after WWII"
},
"ga":{
"name":"Irish",
"nativeName":"Gaeilge"
},
"ig":{
"name":"Igbo",
"nativeName":"Asụsụ Igbo"
},
"ik":{
"name":"Inupiaq",
"nativeName":"Iñupiaq, Iñupiatun"
},
"io":{
"name":"Ido",
"nativeName":"Ido"
},
"is":{
"name":"Icelandic",
"nativeName":"Íslenska"
},
"it":{
"name":"Italian",
"nativeName":"Italiano"
},
"iu":{
"name":"Inuktitut",
"nativeName":"ᐃᓄᒃᑎᑐᑦ"
},
"ja":{
"name":"Japanese",
"nativeName":"日本語 (にほんご/にっぽんご)"
},
"jv":{
"name":"Javanese",
"nativeName":"basa Jawa"
},
"kl":{
"name":"Kalaallisut, Greenlandic",
"nativeName":"kalaallisut, kalaallit oqaasii"
},
"kn":{
"name":"Kannada",
"nativeName":"ಕನ್ನಡ"
},
"kr":{
"name":"Kanuri",
"nativeName":"Kanuri"
},
"ks":{
"name":"Kashmiri",
"nativeName":"कश्मीरी, كشميري‎"
},
"kk":{
"name":"Kazakh",
"nativeName":"Қазақ тілі"
},
"km":{
"name":"Khmer",
"nativeName":"ភាសាខ្មែរ"
},
"ki":{
"name":"Kikuyu, Gikuyu",
"nativeName":"Gĩkũyũ"
},
"rw":{
"name":"Kinyarwanda",
"nativeName":"Ikinyarwanda"
},
"ky":{
"name":"Kirghiz, Kyrgyz",
"nativeName":"кыргыз тили"
},
"kv":{
"name":"Komi",
"nativeName":"коми кыв"
},
"kg":{
"name":"Kongo",
"nativeName":"KiKongo"
},
"ko":{
"name":"Korean",
"nativeName":"한국어 (韓國語), 조선말 (朝鮮語)"
},
"ku":{
"name":"Kurdish",
"nativeName":"Kurdî, كوردی‎"
},
"kj":{
"name":"Kwanyama, Kuanyama",
"nativeName":"Kuanyama"
},
"la":{
"name":"Latin",
"nativeName":"latine, lingua latina"
},
"lb":{
"name":"Luxembourgish, Letzeburgesch",
"nativeName":"Lëtzebuergesch"
},
"lg":{
"name":"Luganda",
"nativeName":"Luganda"
},
"li":{
"name":"Limburgish, Limburgan, Limburger",
"nativeName":"Limburgs"
},
"ln":{
"name":"Lingala",
"nativeName":"Lingála"
},
"lo":{
"name":"Lao",
"nativeName":"ພາສາລາວ"
},
"lt":{
"name":"Lithuanian",
"nativeName":"lietuvių kalba"
},
"lu":{
"name":"Luba-Katanga",
"nativeName":""
},
"lv":{
"name":"Latvian",
"nativeName":"latviešu valoda"
},
"gv":{
"name":"Manx",
"nativeName":"Gaelg, Gailck"
},
"mk":{
"name":"Macedonian",
"nativeName":"македонски јазик"
},
"mg":{
"name":"Malagasy",
"nativeName":"Malagasy fiteny"
},
"ms":{
"name":"Malay",
"nativeName":"bahasa Melayu, بهاس ملايو‎"
},
"ml":{
"name":"Malayalam",
"nativeName":"മലയാളം"
},
"mt":{
"name":"Maltese",
"nativeName":"Malti"
},
"mi":{
"name":"Māori",
"nativeName":"te reo Māori"
},
"mr":{
"name":"Marathi (Marāṭhī)",
"nativeName":"मराठी"
},
"mh":{
"name":"Marshallese",
"nativeName":"Kajin M̧ajeļ"
},
"mn":{
"name":"Mongolian",
"nativeName":"монгол"
},
"na":{
"name":"Nauru",
"nativeName":"Ekakairũ Naoero"
},
"nv":{
"name":"Navajo, Navaho",
"nativeName":"Diné bizaad, Dinékʼehǰí"
},
"nb":{
"name":"Norwegian Bokmål",
"nativeName":"Norsk bokmål"
},
"nd":{
"name":"North Ndebele",
"nativeName":"isiNdebele"
},
"ne":{
"name":"Nepali",
"nativeName":"नेपाली"
},
"ng":{
"name":"Ndonga",
"nativeName":"Owambo"
},
"nn":{
"name":"Norwegian Nynorsk",
"nativeName":"Norsk nynorsk"
},
"no":{
"name":"Norwegian",
"nativeName":"Norsk"
},
"ii":{
"name":"Nuosu",
"nativeName":"ꆈꌠ꒿ Nuosuhxop"
},
"nr":{
"name":"South Ndebele",
"nativeName":"isiNdebele"
},
"oc":{
"name":"Occitan",
"nativeName":"Occitan"
},
"oj":{
"name":"Ojibwe, Ojibwa",
"nativeName":"ᐊᓂᔑᓈᐯᒧᐎᓐ"
},
"cu":{
"name":"Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic",
"nativeName":"ѩзыкъ словѣньскъ"
},
"om":{
"name":"Oromo",
"nativeName":"Afaan Oromoo"
},
"or":{
"name":"Oriya",
"nativeName":"ଓଡ଼ିଆ"
},
"os":{
"name":"Ossetian, Ossetic",
"nativeName":"ирон æвзаг"
},
"pa":{
"name":"Panjabi, Punjabi",
"nativeName":"ਪੰਜਾਬੀ, پنجابی‎"
},
"pi":{
"name":"Pāli",
"nativeName":"पाऴि"
},
"fa":{
"name":"Persian",
"nativeName":"فارسی"
},
"pl":{
"name":"Polish",
"nativeName":"polski"
},
"ps":{
"name":"Pashto, Pushto",
"nativeName":"پښتو"
},
"pt":{
"name":"Portuguese",
"nativeName":"Português"
},
"qu":{
"name":"Quechua",
"nativeName":"Runa Simi, Kichwa"
},
"rm":{
"name":"Romansh",
"nativeName":"rumantsch grischun"
},
"rn":{
"name":"Kirundi",
"nativeName":"kiRundi"
},
"ro":{
"name":"Romanian, Moldavian, Moldovan",
"nativeName":"română"
},
"ru":{
"name":"Russian",
"nativeName":"русский язык"
},
"sa":{
"name":"Sanskrit (Saṁskṛta)",
"nativeName":"संस्कृतम्"
},
"sc":{
"name":"Sardinian",
"nativeName":"sardu"
},
"sd":{
"name":"Sindhi",
"nativeName":"सिन्धी, سنڌي، سندھی‎"
},
"se":{
"name":"Northern Sami",
"nativeName":"Davvisámegiella"
},
"sm":{
"name":"Samoan",
"nativeName":"gagana faa Samoa"
},
"sg":{
"name":"Sango",
"nativeName":"yângâ tî sängö"
},
"sr":{
"name":"Serbian",
"nativeName":"српски језик"
},
"gd":{
"name":"Scottish Gaelic; Gaelic",
"nativeName":"Gàidhlig"
},
"sn":{
"name":"Shona",
"nativeName":"chiShona"
},
"si":{
"name":"Sinhala, Sinhalese",
"nativeName":"සිංහල"
},
"sk":{
"name":"Slovak",
"nativeName":"slovenčina"
},
"sl":{
"name":"Slovene",
"nativeName":"slovenščina"
},
"so":{
"name":"Somali",
"nativeName":"Soomaaliga, af Soomaali"
},
"st":{
"name":"Southern Sotho",
"nativeName":"Sesotho"
},
"es":{
"name":"Spanish; Castilian",
"nativeName":"español, castellano"
},
"su":{
"name":"Sundanese",
"nativeName":"Basa Sunda"
},
"sw":{
"name":"Swahili",
"nativeName":"Kiswahili"
},
"ss":{
"name":"Swati",
"nativeName":"SiSwati"
},
"sv":{
"name":"Swedish",
"nativeName":"svenska"
},
"ta":{
"name":"Tamil",
"nativeName":"தமிழ்"
},
"te":{
"name":"Telugu",
"nativeName":"తెలుగు"
},
"tg":{
"name":"Tajik",
"nativeName":"тоҷикӣ, toğikī, تاجیکی‎"
},
"th":{
"name":"Thai",
"nativeName":"ไทย"
},
"ti":{
"name":"Tigrinya",
"nativeName":"ትግርኛ"
},
"bo":{
"name":"Tibetan Standard, Tibetan, Central",
"nativeName":"བོད་ཡིག"
},
"tk":{
"name":"Turkmen",
"nativeName":"Türkmen, Түркмен"
},
"tl":{
"name":"Tagalog",
"nativeName":"Wikang Tagalog, ᜏᜒᜃᜅ᜔ ᜆᜄᜎᜓᜄ᜔"
},
"tn":{
"name":"Tswana",
"nativeName":"Setswana"
},
"to":{
"name":"Tonga (Tonga Islands)",
"nativeName":"faka Tonga"
},
"tr":{
"name":"Turkish",
"nativeName":"Türkçe"
},
"ts":{
"name":"Tsonga",
"nativeName":"Xitsonga"
},
"tt":{
"name":"Tatar",
"nativeName":"татарча, tatarça, تاتارچا‎"
},
"tw":{
"name":"Twi",
"nativeName":"Twi"
},
"ty":{
"name":"Tahitian",
"nativeName":"Reo Tahiti"
},
"ug":{
"name":"Uighur, Uyghur",
"nativeName":"Uyƣurqə, ئۇيغۇرچە‎"
},
"uk":{
"name":"Ukrainian",
"nativeName":"українська"
},
"ur":{
"name":"Urdu",
"nativeName":"اردو"
},
"uz":{
"name":"Uzbek",
"nativeName":"zbek, Ўзбек, أۇزبېك‎"
},
"ve":{
"name":"Venda",
"nativeName":"Tshivenḓa"
},
"vi":{
"name":"Vietnamese",
"nativeName":"Tiếng Việt"
},
"vo":{
"name":"Volapük",
"nativeName":"Volapük"
},
"wa":{
"name":"Walloon",
"nativeName":"Walon"
},
"cy":{
"name":"Welsh",
"nativeName":"Cymraeg"
},
"wo":{
"name":"Wolof",
"nativeName":"Wollof"
},
"fy":{
"name":"Western Frisian",
"nativeName":"Frysk"
},
"xh":{
"name":"Xhosa",
"nativeName":"isiXhosa"
},
"yi":{
"name":"Yiddish",
"nativeName":"ייִדיש"
},
"yo":{
"name":"Yoruba",
"nativeName":"Yorùbá"
},
"za":{
"name":"Zhuang, Chuang",
"nativeName":"Saɯ cueŋƅ, Saw cuengh"
}
}
var getLanguageName = function(key) {
key = key.slice(0,2);
var lang = isoLangs[key];
return lang ? lang.name : undefined;
}
var getLanguageNativeName = function(key) {
key = key.slice(0,2);
var lang = isoLangs[key];
return lang ? lang.nativveName : undefined;
}
window.getLanguageName = getLanguageName;
window.getLanguageNativeName = getLanguageNativeName;
})();
@joonashamunen
Copy link

Line number 760 has a typo.
Should be:
return lang ? lang.nativeName : undefined;
Instead of:
return lang ? lang.nativveName : undefined;

@Buthrakaur
Copy link

looks like similar module is now available on NPM: https://npmjs.org/package/iso-639-1 / https://github.com/meikidd/iso-639-1

@alide
Copy link

alide commented Jun 30, 2019

On Android there's this language:
https://en.wikipedia.org/wiki/Yue_Chinese

"yue": {"name": "Cantonese", "nativeName": "廣東"}

@alide
Copy link

alide commented Jun 30, 2019

On Android there's this language:
https://iso639-3.sil.org/code/fil

"fil": {"name": "Filipino", "nativeName": "Pilipino"}

@ayamba-coder
Copy link

How do you deal with the case the user of your function inserts 2-letters lang codes?.
E.g getLanguageName('en-US')

@franz-josef-kaiser
Copy link

The ISO source from the source can be found here since 11 years.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment