Documentation for this module may be created at Module:Lang/data/doc
--[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their associated language tags all of these data come from separate modules that are derived from the IANA language-subtag-registry file key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches the first name. TODO: instead of returning: ["key"] = {"name"} where each table has only one name, return ["key"] = "name" requires changes in Module:Lang. ]] local function key_to_lower (module, src_type) local out = {}; local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data if 'var_sup' == src_type then for k, v in pairs (source) do out[k:lower()] = v; -- for variant, everything is needed end elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active) for k, v in pairs (source.active) do out[k:lower()] = {v[1]}; -- ignore multiple names; take first name only end elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated) for k, v in pairs (source.deprecated) do out[k:lower()] = {v[1]}; -- ignore multiple names; take first name only end else -- here for all other sources for k, v in pairs (source) do out[k:lower()] = {v[1]}; -- ignore multiple names; take first name only end end return out; end local lang_name_table = { lang = key_to_lower ('Module:Language/data/iana languages', 'lang'), lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'), script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'), suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower } --[[--------------------------< O V E R R I D E >-------------------------------------------------------------- Language codes and names in this table override the BCP47 names in lang_name_table. indexes in this table shall always be lower case ]] local override = { ------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------ ["ca-valencia"] = {"Valencian"}, ["cu"] = {"Church Slavonic"}, -- 2nd IANA name; ["de-at"] = {"Austrian German"}, -- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = {"Swiss Standard German"}, ["en-au"] = {"Australian English"}, ["en-ca"] = {"Canadian English"}, ["en-emodeng"] = {"Early Modern English"}, ["en-gb"] = {"British English"}, ["en-ie"] = {"Irish English"}, ["en-in"] = {"Indian English"}, ["en-nz"] = {"New Zealand English"}, ["en-us"] = {"American English"}, ["en-za"] = {"South African English"}, ["fy"] = {"West Frisian"}, -- Western Frisian ["mo"] = {"Moldovan"}, -- Moldavian (deprecated code); to match en.wiki article title ["oc-provenc"] = {"Provençal"}, ["ps"] = {"Pashto"}, -- Pushto ["tw-asante"] = {"Asante Twi"}, -- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["av"] = {"Avar"}, -- Avaric ["bo"] = {"Standard Tibetan"}, -- Tibetan ["el"] = {"Greek"}, -- Modern Greek -- ["en-SA"] = {"South African English"}, -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = {"Fula"}, -- Fulah ["ht"] = {"Haitian Creole"}, -- Haitian ["hz"] = {"Otjiherero"}, -- Herero ["ii"] = {"Yi"}, -- Sichuan Yi ["ki"] = {"Gikuyu"}, -- Kikuyu ["kl"] = {"Greenlandic"}, -- Kalaallisut ["ky"] = {"Kyrgyz"}, -- Kirghiz ["lg"] = {"Luganda"}, -- Ganda ["li"] = {"Limburgish"}, -- Limburgan ["mi"] = {"Māori"}, -- Maori ["na"] = {"Nauruan"}, -- Nauru ["nb"] = {"Bokmål"}, -- Norwegian Bokmål ["nd"] = {"Northern Ndebele"}, -- North Ndebele ["nn"] = {"Nynorsk"}, -- Norwegian Nynorsk ["nr"] = {"Southern Ndebele"}, -- South Ndebele ["ny"] = {"Chichewa"}, -- Nyanja ["oj"] = {"Ojibwe"}, -- Ojibwa ["or"] = {"Odia"}, -- Oriya ["pa"] = {"Punjabi"}, -- Panjabi ["rn"] = {"Kirundi"}, -- Rundi ["sl"] = {"Slovene"}, -- Slovenian ["ss"] = {"Swazi"}, -- Swati ["st"] = {"Sotho"}, -- Southern Sotho ["to"] = {"Tongan"}, -- Tonga --<end do-not-edit except to comment out>-- ------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >---------------------------------------------- ["arc"] = {"Aramaic"}, -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); ["art"] = {"constructed"}, -- to match en.wiki article; lowercase for category name ["bhd"] = {"Bhadarwahi"}, -- Bhadrawahi; to match en.wiki article title ["bla"] = {"Blackfoot"}, -- Siksika; to match en.wiki article title ["bua"] = {"Buryat"}, -- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = {"Mongolian Buryat"}, -- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = {"Russian Buryat"}, -- Russia Buriat; ["bxu"] = {"Chinese Buryat"}, -- China Buriat; ["byr"] = {"Yipma"}, -- Baruya, Yipma ["egy"] = {"Ancient Egyptian"}, -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = {"Alutiiq"}, -- Pacific Gulf Yupik; to match en.wiki article title ["frr"] = {"North Frisian"}, -- Northern Frisian ["frs"] = {"East Frisian Low Saxon"}, -- Eastern Frisian ["ilo"] = {"Ilocano"}, -- Iloko; to match en.wiki article title ["jam"] = {"Jamaican Patois"}, -- Jamaican Creole English ["luo"] = {"Dholuo"}, -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = {"Meadow Mari"}, -- Eastern Mari ["mid"] = {"Modern Mandaic"}, -- Mandaic ["mla"] = {"Tamambo"}, -- Malo ['mte'] = {"Mono-Alu"}, -- Mono (Solomon Islands) ["nan-tw"] = {"Taiwanese Hokkien"}, -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["new"] = {"Newar"}, -- Newari, Nepal Bhasa; to match en,wiki article title ["nrf"] = {"Norman"}, -- not quite a collective - IANA name: Jèrriais; categorizes to Norman-language text ["nzi"] = {"Nzema"}, -- Nzima; to match en.wiki article title ["orv"] = {"Old East Slavic"}, -- Old Russian ["pfl"] = {"Palatine German"}, -- Pfaelzisch; to match en.wiki article ["pms"] = {"Piedmontese"}, -- Piemontese; to match en.wiki article title ["pnb"] = {"Punjabi (Western)"}, -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name() ["stq"] = {"Saterland Frisian"}, -- Saterfriesisch ["und"] = {"undetermined"}, -- capitalization to match existing category ["wrg"] = {"Warrongo"}, -- Warungu ["xal-ru"] = {"Kalmyk"}, -- to match en.wiki article title ["xgf"] = {"Tongva"}, -- ISO 639-3 is Gabrielino-Fernandeño -- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["ace"] = {"Acehnese"}, -- Achinese ["aec"] = {"Sa'idi Arabic"}, -- Saidi Arabic ["akl"] = {"Aklan"}, -- Aklanon ["alt"] = {"Altay"}, -- Southern Altai ["apm"] = {"Mescalero-Chiricahua"}, -- Mescalero-Chiricahua Apache ["bal"] = {"Balochi"}, -- Baluchi -- ["bcl"] = {"Central Bicolano"}, -- Central Bikol ["bin"] = {"Edo"}, -- Bini ["bpy"] = {"Bishnupriya Manipuri"}, -- Bishnupriya ["chg"] = {"Chagatay"}, -- Chagatai ["ckb"] = {"Sorani Kurdish"}, -- Central Kurdish ["cnu"] = {"Shenwa"}, -- Chenoua ["coc"] = {"Cocopah"}, -- Cocopa ["diq"] = {"Zazaki"}, -- Dimli ["fit"] = {"Meänkieli"}, -- Tornedalen Finnish ["fkv"] = {"Kven"}, -- Kven Finnish ["frk"] = {"Old Frankish"}, -- Frankish ["gez"] = {"Ge'ez"}, -- Geez ["gju"] = {"Gujari"}, -- Gujari ["gsw"] = {"Alemannic German"}, -- Swiss German ["gul"] = {"Gullah"}, -- Sea Island Creole English ["hak"] = {"Hakka"}, -- Hakka Chinese ["hbo"] = {"Biblical Hebrew"}, -- Ancient Hebrew ["hnd"] = {"Hindko"}, -- Southern Hindko -- ["ikt"] = {"Inuvialuk"}, -- Inuinnaqtun ["kaa"] = {"Karakalpak"}, -- Kara-Kalpak ["khb"] = {"Tai Lü"}, -- Lü ["kmr"] = {"Kurmanji Kurdish"}, -- Northern Kurdish ["kpo"] = {"Kposo"}, -- Ikposo ["krj"] = {"Kinaray-a"}, -- Kinaray-A ["ktz"] = {"Juǀ'hoan"}, -- Juǀʼhoan ["lez"] = {"Lezgian"}, -- Lezghian ["liv"] = {"Livonian"}, -- Liv ["lng"] = {"Lombardic"}, -- Langobardic ["mia"] = {"Miami-Illinois"}, -- Miami ["miq"] = {"Miskito"}, -- Mískito ["mix"] = {"Mixtec"}, -- Mixtepec Mixtec ["mni"] = {"Meitei"}, -- Manipuri ["mrj"] = {"Hill Mari"}, -- Western Mari ["mww"] = {"White Hmong"}, -- Hmong Daw ["nds-nl"] = {"Dutch Low Saxon"}, -- Low German -- ["new"] = {"Nepal Bhasa"}, -- Newari ["nso"] = {"Northern Sotho"}, -- Pedi -- ["nwc"] = {"Classical Nepal Bhasa"}, -- Classical Newari, Classical Nepal Bhasa, Old Newari ["ood"] = {"O'odham"}, -- Tohono O'odham ["otk"] = {"Old Turkic"}, -- Old Turkish ["pal"] = {"Middle Persian"}, -- Pahlavi ["pam"] = {"Kapampangan"}, -- Pampanga ["phr"] = {"Potwari"}, -- Pahari-Potwari ["pka"] = {"Jain Prakrit"}, -- Ardhamāgadhī Prākrit -- ["pnb"] = {"Punjabi"}, -- Western Panjabi ["psu"] = {"Shauraseni"}, -- Sauraseni Prākrit ["rap"] = {"Rapa Nui"}, -- Rapanui ["rar"] = {"Cook Islands Māori"}, -- Rarotongan ["rmu"] = {"Scandoromani"}, -- Tavringer Romani ["rom"] = {"Romani"}, -- Romany ["rup"] = {"Aromanian"}, -- Macedo-Romanian ["ryu"] = {"Okinawan"}, -- Central Okinawan ["sdc"] = {"Sassarese"}, -- Sassarese Sardinian ["sdn"] = {"Gallurese"}, -- Gallurese Sardinian ["shp"] = {"Shipibo"}, -- Shipibo-Conibo ["src"] = {"Logudorese"}, -- Logudorese Sardinian ["sro"] = {"Campidanese"}, -- Campidanese Sardinian ["tkl"] = {"Tokelauan"}, -- Tokelau ["tvl"] = {"Tuvaluan"}, -- Tuvalu ["tyv"] = {"Tuvan"}, -- Tuvinian ["vls"] = {"West Flemish"}, -- Vlaams ["wep"] = {"Westphalian"}, -- Westphalien ["xal"] = {"Oirat"}, -- Kalmyk ["xcl"] = {"Old Armenian"}, -- Classical Armenian ["yua"] = {"Yucatec Maya"}, -- Yucateco --<end do-not-edit except to comment out>-- ------------------------------< P R I V A T E _ U S E _ T A G S >---------------------------------------------- ["cel-x-proto"] = {"Proto-Celtic"}, -- cel in IANA is Celtic languages ["gem-x-proto"] = {"Proto-Germanic"}, -- gem in IANA is Germanic languages ["gmw-x-ecg"] = {"East Central German"}, ["grc-x-aeolic"] = {"Aeolic Greek"}, -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = {"Attic Greek"}, ["grc-x-biblical"] = {"Biblical Greek"}, ["grc-x-byzant"] = {"Byzantine Greek"}, ["grc-x-classic"] = {"Classical Greek"}, ["grc-x-doric"] = {"Doric Greek"}, ["grc-x-hellen"] = {"Hellenistic Greek"}, ["grc-x-ionic"] = {"Ionic Greek"}, ["grc-x-koine"] = {"Koinē Greek"}, ["grc-x-medieval"] = {"Medieval Greek"}, ["grc-x-patris"] = {"Patristic Greek"}, ["grk-x-proto"] = {"Proto-Greek"}, -- grk in IANA is Greek languages ["iir-x-proto"] = {"Proto-Indo-Iranian"}, -- iir in IANA is Indo-Iranian Languages ["ine-x-proto"] = {"Proto-Indo-European"}, ["ira-x-proto"] = {"Proto-Iranian"}, -- ira in IANA is Iranian languages ["itc-x-proto"] = {"Proto-Italic"}, -- itc in IANA is Italic languages ["ksh-x-colog"] = {"Colognian"}, -- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = {"Medieval Latin"}, ["mis-x-ripuar"] = {"Ripuarian"}, -- replaces improper use of ksh in wp_languages ["sem-x-proto"] = {"Proto-Semitic"}, ["sla-x-proto"] = {"Proto-Slavic"}, -- sla in IANA is Slavic languages ["yuf-x-hav"] = {"Havasupai"}, -- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = {"Walapai"}, ["yuf-x-yav"] = {"Yavapai"}, } --[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------ for those rare occasions when article titles don't fit with the normal '<language name>-language', this table maps language code to article title. Use of this table should be avoided and the use of redirects preferred as that is the long-standing method of handling article names that don't fit with the normal pattern ]] local article_name = { ["lij"] = {"Ligurian (Romance language)"}, -- Ligurian; see Template_talk:Lang#Ligurian_dab ['mnh'] = {"Mono language (Congo)"}, -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages ['mnr'] = {"Mono language (California)"}, -- Mono (USA) ['mru'] = {"Mono language (Cameroon)"}, -- Mono (Cameroon) ["xlg"] = {"Ligurian (ancient language)"}, -- see Template_talk:Lang#Ligurian_dab } --[=[-------------------------< R T L _ S C R I P T S >-------------------------------------------------------- ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]] last update to this list: 2017-12-24 ]=] local rtl_scripts = { 'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr', 'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole', }; --[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------ This is a table of tables of transliteration standards and the language codes or language scripts that apply to those standards. This table is used to create the tool-tip text associated with the transliterated text displayed by some of the {{lang-??}} templates. These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for the cases when no |std= parameter value is provided. ]] local translit_title_table = { ['ahl'] = { ['default'] = 'Academy of the Hebrew Language transliteration', }, ['ala'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['ala-lc'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['batr'] = { ['default'] = 'Bikdash Arabic Transliteration Rules', }, ['bgn/pcgn'] = { ['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration', }, ['din'] = { ['ar'] = 'DIN 31635 Arabic', ['fa'] = 'DIN 31635 Arabic', ['ku'] = 'DIN 31635 Arabic', ['ps'] = 'DIN 31635 Arabic', ['tg'] = 'DIN 31635 Arabic', ['ug'] = 'DIN 31635 Arabic', ['ur'] = 'DIN 31635 Arabic', ['arab'] = 'DIN 31635 Arabic', ['default'] = 'DIN transliteration', }, ['eae'] = { ['default'] = 'Encyclopaedia Aethiopica transliteration', }, ['hepburn'] = { ['default'] = 'Hepburn transliteration', }, ['hunterian'] = { ['default'] = 'Hunterian transliteration', }, ['iast'] = { ['default'] = 'International Alphabet of Sanskrit transliteration', }, ['iso'] = { -- when a transliteration standard is supplied ['ab'] = 'ISO 9 Cyrillic', ['ba'] = 'ISO 9 Cyrillic', ['be'] = 'ISO 9 Cyrillic', ['bg'] = 'ISO 9 Cyrillic', ['kk'] = 'ISO 9 Cyrillic', ['ky'] = 'ISO 9 Cyrillic', ['mn'] = 'ISO 9 Cyrillic', ['ru'] = 'ISO 9 Cyrillic', ['tg'] = 'ISO 9 Cyrillic', ['uk'] = 'ISO 9 Cyrillic', ['bua'] = 'ISO 9 Cyrillic', ['sah'] = 'ISO 9 Cyrillic', ['tut'] = 'ISO 9 Cyrillic', ['xal'] = 'ISO 9 Cyrillic', ['cyrl'] = 'ISO 9 Cyrillic', ['ar'] = 'ISO 233 Arabic', ['ku'] = 'ISO 233 Arabic', ['ps'] = 'ISO 233 Arabic', ['ug'] = 'ISO 233 Arabic', ['ur'] = 'ISO 233 Arabic', ['arab'] = 'ISO 233 Arabic', ['he'] = 'ISO 259 Hebrew', ['yi'] = 'ISO 259 Hebrew', ['hebr'] = 'ISO 259 Hebrew', ['el'] = 'ISO 843 Greek', ['grc'] = 'ISO 843 Greek', ['ja'] = 'ISO 3602 Japanese', ['hira'] = 'ISO 3602 Japanese', ['hrkt'] = 'ISO 3602 Japanese', ['jpan'] = 'ISO 3602 Japanese', ['kana'] = 'ISO 3602 Japanese', ['zh'] = 'ISO 7098 Chinese', ['chi'] = 'ISO 7098 Chinese', ['pny'] = 'ISO 7098 Chinese', ['zho'] = 'ISO 7098 Chinese', -- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani? ['hans'] = 'ISO 7098 Chinese', ['hant'] = 'ISO 7098 Chinese', ['ka'] = 'ISO 9984 Georgian', ['kat'] = 'ISO 9984 Georgian', ['arm'] = 'ISO 9985 Armenian', ['hy'] = 'ISO 9985 Armenian', ['th'] = 'ISO 11940 Thai', ['tha'] = 'ISO 11940 Thai', ['ko'] = 'ISO 11941 Korean', ['kor'] = 'ISO 11941 Korean', ['awa'] = 'ISO 15919 Indic', ['bho'] = 'ISO 15919 Indic', ['bn'] = 'ISO 15919 Indic', ['bra'] = 'ISO 15919 Indic', ['doi'] = 'ISO 15919 Indic', ['dra'] = 'ISO 15919 Indic', ['gon'] = 'ISO 15919 Indic', ['gu'] = 'ISO 15919 Indic', ['hi'] = 'ISO 15919 Indic', ['inc'] = 'ISO 15919 Indic', ['kn'] = 'ISO 15919 Indic', ['kok'] = 'ISO 15919 Indic', ['ks'] = 'ISO 15919 Indic', ['mag'] = 'ISO 15919 Indic', ['mai'] = 'ISO 15919 Indic', ['ml'] = 'ISO 15919 Indic', ['mr'] = 'ISO 15919 Indic', ['ne'] = 'ISO 15919 Indic', ['new'] = 'ISO 15919 Indic', ['or'] = 'ISO 15919 Indic', ['pa'] = 'ISO 15919 Indic', ['raj'] = 'ISO 15919 Indic', ['sa'] = 'ISO 15919 Indic', ['sat'] = 'ISO 15919 Indic', ['sd'] = 'ISO 15919 Indic', ['si'] = 'ISO 15919 Indic', ['ta'] = 'ISO 15919 Indic', ['tcy'] = 'ISO 15919 Indic', ['te'] = 'ISO 15919 Indic', ['beng'] = 'ISO 15919 Indic', ['brah'] = 'ISO 15919 Indic', ['deva'] = 'ISO 15919 Indic', ['gujr'] = 'ISO 15919 Indic', ['guru'] = 'ISO 15919 Indic', ['knda'] = 'ISO 15919 Indic', ['mlym'] = 'ISO 15919 Indic', ['orya'] = 'ISO 15919 Indic', ['sinh'] = 'ISO 15919 Indic', ['taml'] = 'ISO 15919 Indic', ['telu'] = 'ISO 15919 Indic', ['default'] = 'ISO transliteration', }, ['jyutping'] = { ['default'] = 'Jyutping transliteration', }, ['mr'] = { ['default'] = 'McCune–Reischauer transliteration', }, ['nihon-shiki'] = { ['default'] = 'Nihon-shiki transliteration', }, ['no_std'] = { -- when no transliteration standard is supplied ['akk'] = 'Semitic transliteration', ['sem'] = 'Semitic transliteration', ['phnx'] = 'Semitic transliteration', ['xsux'] = 'Cuneiform transliteration', }, ['pinyin'] = { ['default'] = 'Pinyin transliteration', }, ['rr'] = { ['default'] = 'Revised Romanization of Korean transliteration', }, ['rtgs'] = { ['default'] = 'Royal Thai General System of Transcription', }, ['satts'] = { ['default'] = 'Standard Arabic Technical Transliteration System transliteration', }, ['scientific'] = { ['default'] = 'scientific transliteration', }, ['ukrainian'] = { ['default'] = 'Ukrainian National system of romanization', }, ['ungegn'] = { ['default'] = 'United Nations Group of Experts on Geographical Names transliteration', }, ['wadegile'] = { ['default'] = 'Wade–Giles transliteration', }, ['wehr'] = { ['default'] = 'Hans Wehr transliteration', }, }; return { article_name = article_name, lang_name_table = lang_name_table, override = override, rtl_scripts = rtl_scripts, translit_title_table = translit_title_table, };