Wikipedia
gvwiki
https://gv.wikipedia.org/wiki/Ard-ghuillag
MediaWiki 1.47.0-wmf.24
first-letter
Meanyn
Er lheh
Resooney
Ymmydeyr
Resooney ymmydeyr
Wikipedia
Resooney Wikipedia
Coadan
Resooney coadan
MediaWiki
Resooney MediaWiki
Clowan
Resooney clowan
Cooney
Resooney cooney
Ronney
Resooney ronney
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Yn Egypt
0
1876
394599
394447
2026-10-17T02:10:11Z
MacTire02
219
--
394599
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght Arabagh yn Egypt
|ennym_foddey_cadjincliaghtagh= {{Lang|ar|جمهورية مصر العربية}} {{small|([[Arabish]])}}<br/>{{small|{{transliteration|ar|{{not a typo|G}}<!--DON'T CHANGE G TO J, SEE [[MOS:AR]] -->umhūriyyat Miṣr al-ʻArabiyyah}}}}
|ennym_gienneydagh = yn Egypt
|jalloo_brattagh = Flag of Egypt.svg
|jalloo_cleinney = Coat of arms of Egypt.svg
|jalloo_caslys = EGY_orthographic.svg
|jarroo-raa = none
|arrane_ashoonagh = [[Biladi, Biladi, Biladi|بلادي، بلادي، بلادي]]
|tessen-lettyraghey_arrane_ashoonagh = Biladi, Biladi, Biladi
|çhyndaa_arrane_ashoonagh = My heer, my heer, my heer
|çhengey_arrane_ashoonagh = Arabish
|arrane_reeoil =
|çhengaghyn_oikoil = [[Arabish]]
|sorçh_çhengaghyn = [[Çhengey ashoonagh]]
|çhengaghyn = [[Arabish yn Egypt]]
|preeu-valley = [[Cairo]]
|latd=30 |latm=02 |latNS=N |longd=31 |longm=13 |longEW=E
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] unnaneagh fo reiltys [[smaghtys|smaghtagh]]<ref name="Truex & Tavana 2019">{{cite journal |last1=Truex |first1=Rory |last2=Tavana |first2=Daniel L. |title=Implicit Attitudes toward an Authoritarian Regime |journal=The Journal of Politics |date=Jerrey Souree 2019 |volume=81 |issue=3 |pages=1014–1027 |doi=10.1086/703209 }}</ref><ref name="foreignpolicy">{{Cite web |url=https://foreignpolicy.com/2015/05/22/egypts-sisi-is-getting-pretty-good-at-being-a-dictator/ |title=Egypt's Sisi Is Getting Pretty Good ... at Being a Dictator |last1=Cambanis |first1=Thanassis |date=22 Boaldyn 2015 |website=Foreign Policy |access-date=25 Jerrey Souree 2017 |archive-date=10 Toshiaght Arree 2021 |archive-url=https://web.archive.org/web/20210210231855/https://foreignpolicy.com/2015/05/22/egypts-sisi-is-getting-pretty-good-at-being-a-dictator/ |url-status=live }}</ref><ref name=":1">{{Cite web|title=Egypt: A Move to Enhance Authoritarian Rule|url=https://www.hrw.org/news/2019/02/12/egypt-move-enhance-authoritarian-rule|date=2019|website=Human Rights Watch|access-date=4 Jerrey Geuree 2024|archive-date=13 Jerrey Souree 2019|archive-url=https://web.archive.org/web/20190713152806/https://www.hrw.org/news/2019/02/12/egypt-move-enhance-authoritarian-rule|url-status=live}}</ref><ref>{{Cite news|date=9 Jerrey Souree 2020|access-date=22 Mee Houney 2022|title=Egypt tries to silence its critics in the United States by jailing their relatives|newspaper=The Washington Post|first=Sudarsan|last=Raghavan|url=https://www.washingtonpost.com/world/middle_east/egypt-tries-to-silence-its-critics-in-the-united-states-by-jailing-their-relatives/2020/07/08/c93a809e-c053-11ea-864a-0dd31b9d6917_story.html|archive-date=9 Jerrey Geuree 2021|archive-url=https://web.archive.org/web/20210109023939/https://www.washingtonpost.com/world/middle_east/egypt-tries-to-silence-its-critics-in-the-united-states-by-jailing-their-relatives/2020/07/08/c93a809e-c053-11ea-864a-0dd31b9d6917_story.html|url-status=live}}</ref><ref>{{Cite web|last=Al-Arian|first=Abdullah|date=27 Toshiaght Arree 2020|title=Hosni Mubarak's legacy is Abdel Fattah el-Sisi|url=https://www.aljazeera.com/opinions/2020/2/27/hosni-mubaraks-legacy-is-abdel-fattah-el-sisi|url-status=live|access-date=2 Mee Houney 2021|website=Al Jazeera|language=en|archive-url = https://web.archive.org/web/20201019213139/https://www.aljazeera.com/opinions/2020/2/27/hosni-mubaraks-legacy-is-abdel-fattah-el-sisi/ |archive-date = 19 Jerrey Fouyir 2020 }}</ref>
|ushtey_sy_cheead = 0.632
|blein_LTS_CCK = 2007
|LTS_CCK = $403.961 billoon
|LTS_CCK_yn_dooinney = $5,491
|sorçh_kiondeeaght = [[Shennaghys yn Egypt|Bunneeaght]]
|note_kiondeeaght =
|taghyrt_bunneeaght1 = [[Fogrey Magh Un-heuagh er Neuchrogheydys yn Egypt|Neuchrogheydys fogrit]]
|date_bunneeaght1 = 28 Toshiaght Arree 1922
|taghyrt_bunneeaght2 = [[Bun-chaghlaa yn Egypt, 1952|Bun-chaghlaa 1952]]
|date_bunneeaght2 = 23 Jerrey Souree 1952
|taghyrt_bunneeaght3 = [[Fogrey Magh y Phobblaght]]
|date_bunneeaght3 = 18 Mean Souree 1953
|taghyrt_bunneeaght4 = [[Bunraght yn Egypt|Bunraght roie]]
|date_bunneeaght4 = 18 Jerrey Geuree 2014
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Hiar|EET]]
|ashchur_utc = +02:00
|traa_ynnydagh_TTLS = [[Traa souree yn Oarpey Hiar|EEST]]
|ashchur_utc_TTLS = +03:00
|cctld = [[.eg]]
|coad_çhellvane = 20
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Egypt''' ny '''Eajipt'''. T'ee çhemmit liorish [[Yn Leeb|y Leeb]] da'n sheear, [[Yn Toodaan|y Toodaan]] da'n jiass, [[Israel]] as [[Yn Vooir Ruy|y Vooir Ruy]] da'n shiar, as [[Yn Veanvooir|y Veanvooir]] da'n twoaie. She [[Cairo]] [[preeu-valley]] ny çheerey. T'ee nane jeh bun-olteynyn [[Yn Commeeys Arabagh|y Chommeeys Arabagh]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Yn Aishey}}
{{Yn Commeeys Arabagh}}
{{gurneil eaghtyrys}}
{{bun}}
{{DEFAULTSORT:Egypt, Yn}}
[[Ronney:Yn Egypt| ]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Aishey]]
[[Ronney:Çheeraghyn yn Affrick Hwoaie]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn yn Aishey Heear]]
[[Ronney:Ard hiar y Veanvooir]]
[[Ronney:Çheeraghyn Saharagh]]
[[Ronney:Pobblaghtyn Arabagh]]
[[Ronney:Ashoonyn BRICS]]
[[Ronney:Çheeraghyn-oltey D-8]]
[[Ronney:Çheeraghyn y G15]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey yn Chommeeys Arabagh]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1922]]
[[Ronney:Bunneeaghtyn 'syn Egypt 'sy vlein 1922|*]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1922]]
[[Ronney:Bunneeaghtyn 'syn Aishey 'sy vlein 1922]]
{{Coord|26|N|30|E|dim:1000km_type:country_region:EG|format=dms|display=title}}
tfkot30ffkqrhm4f5gyxvfqwszcxeml
Yn Toodaan
0
2830
394585
358044
2026-10-17T01:21:51Z
MacTire02
219
++
394585
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Toodaan
|ennym_foddey_cadjincliaghtagh= {{lang|ar|جمهورية السودان}} {{small|([[Arabish]])}}<br />{{small|{{transliteration|ar|Jumhūriyyat as-Sūdān}}}}
|ennym_gienneydagh = y Toodaan
|jalloo_brattagh = Flag of Sudan.svg
|jalloo_cleinney = Emblem of Sudan.svg
|sorçh_cowrey = Cowrey
|jalloo_caslys = Sudan (orthographic projection) highlighted.svg
|jarroo-raa = {{lang|ar|النصر لنا}}
|tessen-lettyraghey_jarroo-raa= {{transliteration|ar|an-Naṣr lanā}}
|çhyndaa_jarroo-raa = Ta'n Varriaght Lhien
|çhengey_jarroo-raa = Arabish
|arrane_ashoonagh = {{lang|ar|[[Nahnu Jund Allah Jund Al-watan|نحن جند اللّٰه، جند الوطن]]}}
|tessen-lettyraghey_arrane_ashoonagh={{transliteration|ar|Naḥnu jund Allah, jund al-waṭan}}
|çhyndaa_arrane_ashoonagh = She Sidooryn Jee Shinyn, Sidooryn y Çheer Ghooie
|coadan_arrane_ashoonagh = Sudanese national anthem, performed by the U.S. Navy Band (instrumental).oga
|çhengey_arrane_ashoonagh = Arabish
"Shinyn Sidooryn [[Jee 'syn Islam|Jee]], Sidooryn y Çheer Dooie"
|arrane_reeoil =
|çhengaghyn_oikoil = {{hlist|[[Arabish Chadjinit Noa-emshiragh|Arabish]]|[[Baarle]]}}
|preeu-valley = [[Khartoum]]
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght chonastagh]] fo[[hoontey caggee]]<ref>{{cite news |last1=Gavin |first1=Michelle |title=Junta and Public at Odds in Sudan |url=https://www.cfr.org/blog/junta-and-public-odds-sudan |access-date=20 Mayrnt 2023 |work=[[Council on Foreign Relations]] |date=8 Averil 2022}}</ref><ref>{{cite news |last1=Jeffrey |first1=Jack |title=Analysis: Year post-coup, cracks in Sudan's military junta |url=https://apnews.com/article/middle-east-africa-cairo-sudan-democracy-2b87ee19685ec2667ac05acff8b4ed9e |access-date=20 Mayrnt 2023 |work=[[Associated Press]] |date=23 Jerrey Fouyir 2022 |location=[[Cairo|Cairo, yn Egypt]]}}</ref>
|sorçh_kiondeeaght = [[Shennaghys y Toodaan|Crooaght]]
|taghyrt_bunneeaght1 = [[Cultoor Kerma|Reeriaght Kerma]]
|date_bunneeaght1 = 2500 BC
|taghyrt_bunneeaght2 = [[Reeriaght Kush]]
|date_bunneeaght2 = 780 BC
|taghyrt_bunneeaght3 = [[Yn Toodaan Turk-Egyptagh|Y Toodaan Turk-Egyptagh]]
|date_bunneeaght3 = 1820
|taghyrt_bunneeaght4 = [[Yn Steat Mahdiyagh|Y Steat Mahdiyagh]]
|date_bunneeaght4 = 1885
|taghyrt_bunneeaght5 = [[Yn Toodaan Anglo-Egyptagh|Y Co-hiarnys Anglo-Egyptagh]]
|date_bunneeaght5 = 1899
|taghyrt_bunneeaght6 = [[Pobblaght y Toodaan (1956–1969)|Neuchrogheydys]]
|date_bunneeaght6 = 1 Jerrey Geuree 1956
|taghyrt_bunneeaght7 = [[Pobblaght Gheynlagh y Toodaan]]
|date_bunneeaght7 = 25 Boaldyn 1969
|taghyrt_bunneeaght8 = [[Pobblaght y Toodaan (1985–2019)]]
|date_bunneeaght8 = 6 April 1985
|taghyrt_bunneeaght9 = Scarrey yn [[Yn Toodaan Yiass|Toodaan Yiass]]
|date_bunneeaght9 = 9 Jerrey Souree 2011
|traa_ynnydagh = [[Traa yn Affrick Hiar]]
|ashchur_utc = +03:00
|cctld = [[.sd]]
|coad_çhellvane = 249
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Toodaan'''. T'ee çhemmit liorish [[yn Egypt]] da'n twoaie, liorish [[yn Leeb|y Leeb]] da'n sheear hwoaie, liorish [[Shad]] da'n sheear, liorish [[Pobblaght yn Affrick Veanagh]] da'n sheear yiass, liorish [[Yn Toodaan Yiass|y Toodaan Yiass]] da'n jiass, liorish [[yn Eetoip]] da'n shiar yiass as liorish [[Eritrea]] da'n shiar. She [[Khartoum]] y [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Yn Commeeys Arabagh}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Toodaan, Yn}}
{{bun}}
[[Ronney:Yn Toodaan| ]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1956]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick Hwoaie]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn Saharagh]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey yn Chommeeys Arabagh]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Jaghteyraghtyn caggee]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1956]]
{{coord|15|N|032|E|region:SD_type:country|display=title}}
82asnq5iewy8lybkc2c846szcied28p
394586
394585
2026-10-17T01:25:06Z
MacTire02
219
baarney
394586
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Toodaan
|ennym_foddey_cadjincliaghtagh= {{lang|ar|جمهورية السودان}} {{small|([[Arabish]])}}<br />{{small|{{transliteration|ar|Jumhūriyyat as-Sūdān}}}}
|ennym_gienneydagh = y Toodaan
|jalloo_brattagh = Flag of Sudan.svg
|jalloo_cleinney = Emblem of Sudan.svg
|sorçh_cowrey = Cowrey
|jalloo_caslys = Sudan (orthographic projection) highlighted.svg
|jarroo-raa = {{lang|ar|النصر لنا}}
|tessen-lettyraghey_jarroo-raa= {{transliteration|ar|an-Naṣr lanā}}
|çhyndaa_jarroo-raa = Ta'n Varriaght Lhien
|çhengey_jarroo-raa = Arabish
|arrane_ashoonagh = {{lang|ar|[[Nahnu Jund Allah Jund Al-watan|نحن جند اللّٰه، جند الوطن]]}}
|tessen-lettyraghey_arrane_ashoonagh={{transliteration|ar|Naḥnu jund Allah, jund al-waṭan}}
|çhyndaa_arrane_ashoonagh = She Sidooryn Jee Shinyn, Sidooryn y Çheer Ghooie
|coadan_arrane_ashoonagh = Sudanese national anthem, performed by the U.S. Navy Band (instrumental).oga
|çhengey_arrane_ashoonagh = Arabish
"Shinyn Sidooryn [[Jee 'syn Islam|Jee]], Sidooryn y Çheer Dooie"
|arrane_reeoil =
|çhengaghyn_oikoil = {{hlist|[[Arabish Chadjinit Noa-emshiragh|Arabish]]|[[Baarle]]}}
|preeu-valley = [[Khartoum]]
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght chonastagh]] fo [[hoontey caggee]]<ref>{{cite news |last1=Gavin |first1=Michelle |title=Junta and Public at Odds in Sudan |url=https://www.cfr.org/blog/junta-and-public-odds-sudan |access-date=20 Mayrnt 2023 |work=[[Council on Foreign Relations]] |date=8 Averil 2022}}</ref><ref>{{cite news |last1=Jeffrey |first1=Jack |title=Analysis: Year post-coup, cracks in Sudan's military junta |url=https://apnews.com/article/middle-east-africa-cairo-sudan-democracy-2b87ee19685ec2667ac05acff8b4ed9e |access-date=20 Mayrnt 2023 |work=[[Associated Press]] |date=23 Jerrey Fouyir 2022 |location=[[Cairo|Cairo, yn Egypt]]}}</ref>
|sorçh_kiondeeaght = [[Shennaghys y Toodaan|Crooaght]]
|taghyrt_bunneeaght1 = [[Cultoor Kerma|Reeriaght Kerma]]
|date_bunneeaght1 = 2500 BC
|taghyrt_bunneeaght2 = [[Reeriaght Kush]]
|date_bunneeaght2 = 780 BC
|taghyrt_bunneeaght3 = [[Yn Toodaan Turk-Egyptagh|Y Toodaan Turk-Egyptagh]]
|date_bunneeaght3 = 1820
|taghyrt_bunneeaght4 = [[Yn Steat Mahdiyagh|Y Steat Mahdiyagh]]
|date_bunneeaght4 = 1885
|taghyrt_bunneeaght5 = [[Yn Toodaan Anglo-Egyptagh|Y Co-hiarnys Anglo-Egyptagh]]
|date_bunneeaght5 = 1899
|taghyrt_bunneeaght6 = [[Pobblaght y Toodaan (1956–1969)|Neuchrogheydys]]
|date_bunneeaght6 = 1 Jerrey Geuree 1956
|taghyrt_bunneeaght7 = [[Pobblaght Gheynlagh y Toodaan]]
|date_bunneeaght7 = 25 Boaldyn 1969
|taghyrt_bunneeaght8 = [[Pobblaght y Toodaan (1985–2019)]]
|date_bunneeaght8 = 6 April 1985
|taghyrt_bunneeaght9 = Scarrey yn [[Yn Toodaan Yiass|Toodaan Yiass]]
|date_bunneeaght9 = 9 Jerrey Souree 2011
|traa_ynnydagh = [[Traa yn Affrick Hiar]]
|ashchur_utc = +03:00
|cctld = [[.sd]]
|coad_çhellvane = 249
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Toodaan'''. T'ee çhemmit liorish [[yn Egypt]] da'n twoaie, liorish [[yn Leeb|y Leeb]] da'n sheear hwoaie, liorish [[Shad]] da'n sheear, liorish [[Pobblaght yn Affrick Veanagh]] da'n sheear yiass, liorish [[Yn Toodaan Yiass|y Toodaan Yiass]] da'n jiass, liorish [[yn Eetoip]] da'n shiar yiass as liorish [[Eritrea]] da'n shiar. She [[Khartoum]] y [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Yn Commeeys Arabagh}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Toodaan, Yn}}
{{bun}}
[[Ronney:Yn Toodaan| ]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1956]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick Hwoaie]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn Saharagh]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey yn Chommeeys Arabagh]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Jaghteyraghtyn caggee]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1956]]
{{coord|15|N|032|E|region:SD_type:country|display=title}}
ra0a3d55t6huaa78zfdemcxridgdtma
394587
394586
2026-10-17T01:25:40Z
MacTire02
219
lettyryn
394587
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Toodaan
|ennym_foddey_cadjincliaghtagh= {{lang|ar|جمهورية السودان}} {{small|([[Arabish]])}}<br />{{small|{{transliteration|ar|Jumhūriyyat as-Sūdān}}}}
|ennym_gienneydagh = y Toodaan
|jalloo_brattagh = Flag of Sudan.svg
|jalloo_cleinney = Emblem of Sudan.svg
|sorçh_cowrey = Cowrey
|jalloo_caslys = Sudan (orthographic projection) highlighted.svg
|jarroo-raa = {{lang|ar|النصر لنا}}
|tessen-lettyraghey_jarroo-raa= {{transliteration|ar|an-Naṣr lanā}}
|çhyndaa_jarroo-raa = Ta'n Varriaght Lhien
|çhengey_jarroo-raa = Arabish
|arrane_ashoonagh = {{lang|ar|[[Nahnu Jund Allah Jund Al-watan|نحن جند اللّٰه، جند الوطن]]}}
|tessen-lettyraghey_arrane_ashoonagh={{transliteration|ar|Naḥnu jund Allah, jund al-waṭan}}
|çhyndaa_arrane_ashoonagh = She Sidooryn Jee Shinyn, Sidooryn y Çheer Ghooie
|coadan_arrane_ashoonagh = Sudanese national anthem, performed by the U.S. Navy Band (instrumental).oga
|çhengey_arrane_ashoonagh = Arabish
"Shinyn Sidooryn [[Jee 'syn Islam|Jee]], Sidooryn y Çheer Dooie"
|arrane_reeoil =
|çhengaghyn_oikoil = {{hlist|[[Arabish Chadjinit Noa-emshiragh|Arabish]]|[[Baarle]]}}
|preeu-valley = [[Khartoum]]
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght chonastagh]] fo [[hoontey caggee]]<ref>{{cite news |last1=Gavin |first1=Michelle |title=Junta and Public at Odds in Sudan |url=https://www.cfr.org/blog/junta-and-public-odds-sudan |access-date=20 Mayrnt 2023 |work=[[Council on Foreign Relations]] |date=8 Averil 2022}}</ref><ref>{{cite news |last1=Jeffrey |first1=Jack |title=Analysis: Year post-coup, cracks in Sudan's military junta |url=https://apnews.com/article/middle-east-africa-cairo-sudan-democracy-2b87ee19685ec2667ac05acff8b4ed9e |access-date=20 Mayrnt 2023 |work=[[Associated Press]] |date=23 Jerrey Fouyir 2022 |location=[[Cairo|Cairo, yn Egypt]]}}</ref>
|sorçh_kiondeeaght = [[Shennaghys y Toodaan|Crooaght]]
|taghyrt_bunneeaght1 = [[Cultoor Kerma|Reeriaght Kerma]]
|date_bunneeaght1 = 2500 BC
|taghyrt_bunneeaght2 = [[Reeriaght Kush]]
|date_bunneeaght2 = 780 BC
|taghyrt_bunneeaght3 = [[Yn Toodaan Turk-Egyptagh|Y Toodaan Turk-Egyptagh]]
|date_bunneeaght3 = 1820
|taghyrt_bunneeaght4 = [[Yn Steat Mahdiyagh|Y Steat Mahdiyagh]]
|date_bunneeaght4 = 1885
|taghyrt_bunneeaght5 = [[Yn Toodaan Anglo-Egyptagh|Y Co-hiarnys Anglo-Egyptagh]]
|date_bunneeaght5 = 1899
|taghyrt_bunneeaght6 = [[Pobblaght y Toodaan (1956–1969)|Neuchrogheydys]]
|date_bunneeaght6 = 1 Jerrey Geuree 1956
|taghyrt_bunneeaght7 = [[Pobblaght Gheynlagh y Toodaan]]
|date_bunneeaght7 = 25 Boaldyn 1969
|taghyrt_bunneeaght8 = [[Pobblaght y Toodaan (1985–2019)]]
|date_bunneeaght8 = 6 April 1985
|taghyrt_bunneeaght9 = Scarrey yn [[Yn Toodaan Yiass|Toodaan Yiass]]
|date_bunneeaght9 = 9 Jerrey Souree 2011
|traa_ynnydagh = [[Traa yn Affrick Hiar|EAT]]
|ashchur_utc = +03:00
|cctld = [[.sd]]
|coad_çhellvane = 249
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Toodaan'''. T'ee çhemmit liorish [[yn Egypt]] da'n twoaie, liorish [[yn Leeb|y Leeb]] da'n sheear hwoaie, liorish [[Shad]] da'n sheear, liorish [[Pobblaght yn Affrick Veanagh]] da'n sheear yiass, liorish [[Yn Toodaan Yiass|y Toodaan Yiass]] da'n jiass, liorish [[yn Eetoip]] da'n shiar yiass as liorish [[Eritrea]] da'n shiar. She [[Khartoum]] y [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Yn Commeeys Arabagh}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Toodaan, Yn}}
{{bun}}
[[Ronney:Yn Toodaan| ]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1956]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick Hwoaie]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn Saharagh]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey yn Chommeeys Arabagh]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Jaghteyraghtyn caggee]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1956]]
{{coord|15|N|032|E|region:SD_type:country|display=title}}
9z9zl8gkozmw74fmq961grybar58cm5
Yn Tomaal
0
2837
394578
358053
2026-10-16T18:18:25Z
MacTire02
219
++
394578
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght Chonastagh y Tomaal
|ennym_foddey_cadjincliaghtagh= {{lang|so|Jamhuuriyadda Federaalka Soomaaliya|italics=no}} {{small|([[Somaalish]])}}<br />{{lang|ar|جمهورية الصومال الفيدرالية}} {{small|([[Arabish]])}}<br />{{small|{{tessen-lettyraghey|ar|Jumhūriyah aṣ-Ṣūmāl al-Fīdirāliyah}}}}
|ennym_gienneydagh = y Tomaal
|jalloo_brattagh = Flag of Somalia.svg
|jalloo_cleinney = Coat of arms of Somalia.svg
|jalloo_caslys = Somalia (orthographic projection)2.svg
|jarroo-raa = none
|arrane_ashoonagh = {{lang|so|[[Qolobaa Calankeed]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Ta Brattagh ec Dagh Ashoon
|coadan_arrane_ashoonagh = Somalian national anthem, performed by the United States Navy Band.oga
|çhengey_arrane_ashoonagh = Somaalish
|çhengaghyn_oikoil = [[Somaalish]]
|çhengaghyn = [[Arabish]]
|sorçh_çhengaghyn = Nah hengey
|craueeaght = [[Yn Islam Sunni]] ([[Craueeaght steat|oikoil]])<ref name="factbook">{{cite web |title=Somalia |url=https://www.cia.gov/the-world-factbook/countries/somalia |website=The World Factbook |publisher=Central Intelligence Agency |language=en |date=10 Mee Houney 2021 |access-date=24 Jerrey Geuree 2021 |archive-date=25 Jerrey Geuree 2021 |archive-url=https://web.archive.org/web/20210125103534/https://www.cia.gov/the-world-factbook/countries/somalia/ }}</ref>{{efn|Rere tuarastyl lesh y [[Pew Research Center]] 'sy vlein 2010 ({{harvnb|Pew Research Center|2012|p=49}}), she lhiantee yn [[Yn Islam 'sy Tomaal|Islam]] 99.8% jeh pobble y çheer.<ref name="Pew">{{cite web |last=Pew Research Center |year=2012 |title=The Global Religious Landscape |url=http://www.pewforum.org/files/2012/12/globalReligion-full.pdf |archive-url=https://web.archive.org/web/20130806002044/http://www.pewforum.org/files/2012/12/globalReligion-full.pdf |archive-date=6 Luanistyn 2013 |publisher=[[Pew Research Center]] |access-date=27 Mee ny Nollick 2013 |page=49}}</ref>}}
|preeu-valley = [[Mogadishu]]
|latd=2 |latm=02 |latNS=N |longd=45 |longm=21 |longEW=E |latNSgael=Hwoaie |longEWgael=Hiar
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] [[steat conastagh|chonastagh]] fo [[Bunraght y Tomaal|bunraght shallidagh]]
|ushtey_sy_cheead = 1.6
|blein_LTS_CCK = 2007
|LTS_CCK = $5.575 billoon
|LTS_CCK_yn_dooinney = $600
|sorçh_kiondeeaght =
|note_kiondeeaght =
|taghyrt_bunneeaght1 = [[Thalloo Punt]]
|date_bunneeaght1 = 2350 RC
|taghyrt_bunneeaght2 = [[Macrobia]]
|date_bunneeaght2 = 980 RC
|taghyrt_bunneeaght3 = [[Barbaria (ard)|Barbaria]]
|date_bunneeaght3 = 100 RC
|taghyrt_bunneeaght4 = [[Sultanaght Adal]]
|date_bunneeaght4 = 9oo eash<ref name="Encyamer">{{cite book|title=Encyclopedia Americana|volume =25 |year=1965|publisher=Americana Corporation|page=255|url=https://books.google.com/books?id=OP5LAAAAMAAJ|access-date=20 Mean Souree 2015|archive-date=23 Jerrey Geuree 2023|archive-url=https://web.archive.org/web/20230123104929/https://books.google.com/books?id=OP5LAAAAMAAJ|url-status=live}}</ref><ref>{{Cite book |last=Lewis |first=I. M. |url=https://books.google.com/books?id=Cd0mAQAAMAAJ |title=Peoples of the Horn of Africa: Somali, Afar and Saho |date=1969 |publisher=International African Institute |page=140 |language=en}}</ref>
|taghyrt_bunneeaght5 = [[Sultanaght Mogadishu]]
|date_bunneeaght5 = 10oo eash
|taghyrt_bunneeaght6 = [[Sultanaght Ifat]]
|date_bunneeaght6 = 13oo eash
|taghyrt_bunneeaght7 = [[Sultanaght Ajuran]]
|date_bunneeaght7 = 13oo eash
|taghyrt_bunneeaght8 = [[Yn Tomaalee Ghoaldagh|Y Tomaalee Ghoaldagh]]
|date_bunneeaght8 = 1884–1960
|taghyrt_bunneeaght9 = [[Yn Tomaalee Iddaalagh|Y Tomaalee Ghoaldagh]]
|date_bunneeaght9 = 1889–1941
|taghyrt_bunneeaght10 = [[Laa yn Neuchrogheydys (Steat y Tomaalee)|Neuchrogheydys]] y [[Steat y Tomaalee|Tomaalee Ghoaldagh]]
|date_bunneeaght10 = 26 Mean Souree 1960
|taghyrt_bunneeaght11 = [[Laa yn Neuchrogheydys (y Tomaal)|Neuchrogheydys]] y [[Treisht-halloo yn Tomaalee|Tomaalee Iddaalagh]]
|date_bunneeaght11 = 1 Jerrey Souree 1960
|taghyrt_bunneeaght12 = Co-unnaneyssey [[Pobblaght y Tomaal|Phobblaght y Tomaal]]
|date_bunneeaght12 = 1 Jerrey Souree 1960
|taghyrt_bunneeaght13 = [[Bunraght y Tomaal|Bunraght roie]]
|date_bunneeaght13 = 1 Luanistyn 2012
|traa_ynnydagh = [[Traa yn Affrick Hiar|EAT]]
|ashchur_utc = +03:00
|cctld = [[.so]]
|coad_çhellvane = 252
}}
She çheer ayns [[yn Affrick]] ee '''yn Tomaal'''. T'ee çhemmit liorish [[yn Eetoip]] da'n sheear, [[Djibouti]] da'n sheear hwoaie, as [[Yn Cheinney|y Cheinney]] da'n sheear yiass. She [[Mogadishu]] yn [[preeu-valley]].
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Yn Commeeys Arabagh}}
{{gurneil eaghtyrys}}
{{bun}}
{{DEFAULTSORT:Tomaal, Yn}}
[[Ronney:Yn Tomaal| ]]
[[Ronney:Bunneeaghtyn 'sy Tomaal 'sy vlein 1960]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Çheeraghyn Chayrn yn Affrick]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Chommeeys Arabagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
[[Ronney:Ardjyn rheynnit]]
{{Coord|10|N|49|E|display=title}}
bi59fjl5nxo4re7yx1njew5ykmrxup9
Yn Tenegaal
0
2843
394544
389493
2026-10-16T14:03:04Z
MacTire02
219
++
394544
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Tenegaal
|ennym_foddey_cadjincliaghtagh= {{lang|fr|République du Sénégal|italics=no}} {{small|([[Frangish]])}}
|ennym_gienneydagh = y Tenegaal
|jalloo_brattagh = Flag of Senegal.svg
|jalloo_cleinney = Coat of arms of Senegal.svg
|jalloo_caslys = Senegal_(orthographic_projection).svg
|jarroo-raa = {{lang|fr|Un peuple, un but, une foi}}
|jarroo-raa2 = {{lang|wo|Benn Askan, Benn Jubluwaay, Benn Pas-Pas}}<ref>{{cite web |title=Raaya ak bàkku Senegaal |trans-title=The flag and motto of Senegal |url=https://www.presidence.sn/wo/presidence/le-drapeau-et-la-devise-du-senegal |lang=wo |publisher=[[Eaghtyrane y Tenegaal|Eaghtyraneys y Tenegaal]]}}</ref>
|imraa_jarroo-raa =
|çhyndaa_jarroo-raa = Un Phobble, Un Dean, Un Chredjue
|arrane_ashoonagh = {{lang|fr|[[Le Lion rouge]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Y Leion Ruy
|coadan_arrane_ashoonagh = National Anthem of Senegal.ogg
|çhengey_arrane_ashoonagh = Frangish
|çhengaghyn_oikoil = [[Frangish]]
|çhengaghyn = {{hlist|[[Wolofish]]{{Efn|name=WolofStatus|Ta fysseree veih Laare ny Studeyryssyn Affrickagh lesh Ollooscoill Pennsylvania gooley dy vel mysh 90% jeh pobble y Tenegaal toiggal ny loayrt y Wolofish myr y chied ny yn nah hengey oc.<ref>{{Cite web |title=African Studies Center{{!}} African Languages at Penn |url=https://www.africa.upenn.edu/afl/alwolof.htm |access-date=20 Mayrnt 2023 |website=Laare ny Studeyryssyn Affrickagh ec [[Ollooscoill Pennsylvania]] |archive-date=29 Jerrey Geuree 2023 |archive-url=https://web.archive.org/web/20230129152750/https://www.africa.upenn.edu/afl/alwolof.htm |url-status=live }}</ref>}}|[[Sererish]]|[[Diolish]]<ref>{{Cite book |last=Falola |first=Toyin |url=https://books.google.com/books?id=3fhADwAAQBAJ&dq=Arabic+Status+in+Senegal&pg=PT190 |title=Africanizing Knowledge: African Studies Across the Disciplines |date=30 Mee Houney 2017 |publisher=Routledge |isbn=978-1-351-32438-0 |pages=190 |language=en}}</ref>|[[Pulaarish]]|[[Soninkish]]|[[Mandinkish]]{{Efn|name=SenegalNationalLangs|Olt 1 jeh Bunraght y Tenegaal, ta genmyssey Diolish, Malinkish, Pulaarish, Sererish, Soninkish, as Wolofish myr ny çhengaghyn ashoonagh.<ref name="Languages">{{Cite web |title=Senegal's Constitution of 2001 with Amendments through 2016 |url=https://www.constituteproject.org/constitution/Senegal_2016.pdf?lang=en |website=Constitute Project |language=en |access-date=20 Mayrnt 2023 |archive-date=10 Averil 2023 |archive-url=https://web.archive.org/web/20230410075501/https://www.constituteproject.org/constitution/Senegal_2016.pdf?lang=en |url-status=live }}</ref>}}}}
|sorçh_çhengaghyn = [[Çhengey ashoonagh|Çhengaghyn ashoonagh]]
|possanyn_kynneeagh =
|preeu-valley = [[Dakar]]
|latd=14 |latm=40 |lats=21|latNS=N |longd=17 |longm=25 |longs=55 |longEW=W
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] [[steat unnaneagh|unnaneagh]]
|ushtey_sy_cheead = 2.1
|blein_LTS_CCK = 2005
|LTS_CCK = $20.504 billoon
|LTS_CCK_yn_dooinney = $1,759
|sorçh_kiondeeaght = [[Shennaghys y Tenegaal|Neuchrogheydys]]
|taghyrt_bunneeaght1 = Fogrey yn phobblaght
|date_bunneeaght1 = 25 Mee Houney 1958
|taghyrt_bunneeaght2 = Beuchrogheydys veih'n Rank{{efn|Marish y [[Yn Toodaan Rangagh|Toodaan Rangagh]] myr [[Conastey Valee]].}}
|date_bunneeaght2 = 20 June 1960
|taghyrt_bunneeaght3 = Dimmee magh ass [[Conastey Valee]]
|date_bunneeaght3 = 20 Luanistyn 1960
|taghyrt4 = Scryssey [[Conastey yn Teneghambia|Chonastey yn Teneghambia
|date_bunneeaght4 = 30 Mean Fouyir 1989
|traa_ynnydagh = [[Traa Mean Greenwich|GMT]]
|ashchur_utc = +00:00
|cctld = [[.sn]]
|coad_çhellvane = 221
}}
She çheer ayns [[yn Affrick]] ee '''yn Tenegaal'''. T'ee çhemmit liorish [[Yn Varitaan|y Varitaan]] da'n twoaie, [[Malee]] da'n shiar, [[Yn Ghuinea|y Ghuinea]] as [[Yn Ghuinea-Bissau|y Ghuinea-Bissau]] da'n jiass, as [[Yn Ghambia|y Ghambia]] da'n laaragh. She [[Dakar]] y [[preeu-valley]].
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Tenegaal, Yn}}
{{bun}}
[[Ronney:Yn Tenegaal| ]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1960]]
[[Ronney:Bunneeaghtyn 'sy Tenegaal 'sy vlein 1960|*]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Boodeeys Tarmaynagh Steatyn yn Affrick Heear]]
[[Ronney:Eear-choloinyn Portiugagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn y G15]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
[[Ronney:Çheeraghyn yn Affrick Heear]]
{{Coord|14|N|14|W|type:country|display=title}}
gf4drku1tv4k9slljkq26o0oq6565dy
394545
394544
2026-10-16T14:03:53Z
MacTire02
219
+]]
394545
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Tenegaal
|ennym_foddey_cadjincliaghtagh= {{lang|fr|République du Sénégal|italics=no}} {{small|([[Frangish]])}}
|ennym_gienneydagh = y Tenegaal
|jalloo_brattagh = Flag of Senegal.svg
|jalloo_cleinney = Coat of arms of Senegal.svg
|jalloo_caslys = Senegal_(orthographic_projection).svg
|jarroo-raa = {{lang|fr|Un peuple, un but, une foi}}
|jarroo-raa2 = {{lang|wo|Benn Askan, Benn Jubluwaay, Benn Pas-Pas}}<ref>{{cite web |title=Raaya ak bàkku Senegaal |trans-title=The flag and motto of Senegal |url=https://www.presidence.sn/wo/presidence/le-drapeau-et-la-devise-du-senegal |lang=wo |publisher=[[Eaghtyrane y Tenegaal|Eaghtyraneys y Tenegaal]]}}</ref>
|imraa_jarroo-raa =
|çhyndaa_jarroo-raa = Un Phobble, Un Dean, Un Chredjue
|arrane_ashoonagh = {{lang|fr|[[Le Lion rouge]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Y Leion Ruy
|coadan_arrane_ashoonagh = National Anthem of Senegal.ogg
|çhengey_arrane_ashoonagh = Frangish
|çhengaghyn_oikoil = [[Frangish]]
|çhengaghyn = {{hlist|[[Wolofish]]{{Efn|name=WolofStatus|Ta fysseree veih Laare ny Studeyryssyn Affrickagh lesh Ollooscoill Pennsylvania gooley dy vel mysh 90% jeh pobble y Tenegaal toiggal ny loayrt y Wolofish myr y chied ny yn nah hengey oc.<ref>{{Cite web |title=African Studies Center{{!}} African Languages at Penn |url=https://www.africa.upenn.edu/afl/alwolof.htm |access-date=20 Mayrnt 2023 |website=Laare ny Studeyryssyn Affrickagh ec [[Ollooscoill Pennsylvania]] |archive-date=29 Jerrey Geuree 2023 |archive-url=https://web.archive.org/web/20230129152750/https://www.africa.upenn.edu/afl/alwolof.htm |url-status=live }}</ref>}}|[[Sererish]]|[[Diolish]]<ref>{{Cite book |last=Falola |first=Toyin |url=https://books.google.com/books?id=3fhADwAAQBAJ&dq=Arabic+Status+in+Senegal&pg=PT190 |title=Africanizing Knowledge: African Studies Across the Disciplines |date=30 Mee Houney 2017 |publisher=Routledge |isbn=978-1-351-32438-0 |pages=190 |language=en}}</ref>|[[Pulaarish]]|[[Soninkish]]|[[Mandinkish]]{{Efn|name=SenegalNationalLangs|Olt 1 jeh Bunraght y Tenegaal, ta genmyssey Diolish, Malinkish, Pulaarish, Sererish, Soninkish, as Wolofish myr ny çhengaghyn ashoonagh.<ref name="Languages">{{Cite web |title=Senegal's Constitution of 2001 with Amendments through 2016 |url=https://www.constituteproject.org/constitution/Senegal_2016.pdf?lang=en |website=Constitute Project |language=en |access-date=20 Mayrnt 2023 |archive-date=10 Averil 2023 |archive-url=https://web.archive.org/web/20230410075501/https://www.constituteproject.org/constitution/Senegal_2016.pdf?lang=en |url-status=live }}</ref>}}}}
|sorçh_çhengaghyn = [[Çhengey ashoonagh|Çhengaghyn ashoonagh]]
|possanyn_kynneeagh =
|preeu-valley = [[Dakar]]
|latd=14 |latm=40 |lats=21|latNS=N |longd=17 |longm=25 |longs=55 |longEW=W
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] [[steat unnaneagh|unnaneagh]]
|ushtey_sy_cheead = 2.1
|blein_LTS_CCK = 2005
|LTS_CCK = $20.504 billoon
|LTS_CCK_yn_dooinney = $1,759
|sorçh_kiondeeaght = [[Shennaghys y Tenegaal|Neuchrogheydys]]
|taghyrt_bunneeaght1 = Fogrey yn phobblaght
|date_bunneeaght1 = 25 Mee Houney 1958
|taghyrt_bunneeaght2 = Beuchrogheydys veih'n Rank{{efn|Marish y [[Yn Toodaan Rangagh|Toodaan Rangagh]] myr [[Conastey Valee]].}}
|date_bunneeaght2 = 20 June 1960
|taghyrt_bunneeaght3 = Dimmee magh ass [[Conastey Valee]]
|date_bunneeaght3 = 20 Luanistyn 1960
|taghyrt4 = Scryssey [[Conastey yn Teneghambia|Chonastey yn Teneghambia]]
|date_bunneeaght4 = 30 Mean Fouyir 1989
|traa_ynnydagh = [[Traa Mean Greenwich|GMT]]
|ashchur_utc = +00:00
|cctld = [[.sn]]
|coad_çhellvane = 221
}}
She çheer ayns [[yn Affrick]] ee '''yn Tenegaal'''. T'ee çhemmit liorish [[Yn Varitaan|y Varitaan]] da'n twoaie, [[Malee]] da'n shiar, [[Yn Ghuinea|y Ghuinea]] as [[Yn Ghuinea-Bissau|y Ghuinea-Bissau]] da'n jiass, as [[Yn Ghambia|y Ghambia]] da'n laaragh. She [[Dakar]] y [[preeu-valley]].
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Tenegaal, Yn}}
{{bun}}
[[Ronney:Yn Tenegaal| ]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1960]]
[[Ronney:Bunneeaghtyn 'sy Tenegaal 'sy vlein 1960|*]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Boodeeys Tarmaynagh Steatyn yn Affrick Heear]]
[[Ronney:Eear-choloinyn Portiugagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn y G15]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
[[Ronney:Çheeraghyn yn Affrick Heear]]
{{Coord|14|N|14|W|type:country|display=title}}
p41e4iwllcetx4fh7b0eps1lt2y9b44
Clowan:Yn Affrick
10
2844
394603
394477
2026-10-17T02:34:07Z
MacTire02
219
--
394603
wikitext
text/x-wiki
{{Navbox
| name = Yn Affrick
| title = [[Rolley çheeraghyn as croghaneyn 'syn Affrick|Çheeraghyn as croghaneyn yn Affrick]]
| state = {{{state<includeonly>|autocollapse</includeonly>}}}
|bodyclass = hlist
| group1 = Çheeraghyn
| list1 =
* [[Yn Affrick Yiass]]
* [[yn Algear]]
* [[Angoley]]
* [[Benin]]
* [[Burkina Faso]]
* [[Burundee]]
* [[Cameroon]]
* [[Yn Çheer Swassee|y Çheer Swassee]]
* [[Yn Cheinney|y Cheinney]]
* [[Yn Çhimbabwe|y Çhimbabwe]]
* [[Ellanyn Chomoro]]
* [[Pobblaght y Chongo]]
* [[Pobblaght Gheynlagh y Chongo]]
* [[Yn Clyst Iuaagagh|y Clyst Iuaagagh]]
* [[Djibouti]]
* [[yn Eetoip]]
* [[yn Egypt]]<sup>1</sup>
* [[Eritrea]]
* [[Gabon]]
* [[Yn Ghambia|y Ghambia]]
* [[Yn Ghaney|y Ghaney]]
* [[Yn Ghuinea|y Ghuinea]]
* [[Yn Ghuinea-Bissau|y Ghuinea-Bissau]]
* [[Guinea Chryss ny Cruinney]]
* [[Yn Laibeer|y Laibeer]]
* [[Lesoto]]
* [[Yn Leeb|y Leeb]]
* [[Madagascar]]
* [[Malawi]]
* [[Malee]]
* [[Yn Naigeer|y Naigeer]]
* [[Yn Nameeb|y Nameeb]]
* [[Yn Neegeyr|y Neegeyr]]
* [[Ooganda]]
* [[Pobblaght yn Affrick Veanagh]]
* [[Yn Rheynn Ghlass|y Rheynn Ghlass]]
* [[Rooandey]]
* [[São Tomé as Príncipe]]
* [[Shad]]
* [[ny h-Ellanyn Sheshell]]
* [[Sierra Leone]]
* [[Yn Tambia|y Tambia]]
* [[Tanzania]]
* [[Yn Tenegaal|y Tenegaal]]
* [[Yn Togo|y Togo]]
* [[Yn Tomaal|y Tomaal]]
* [[Yn Toodaan|y Toodaan]]
* [[Yn Toodaan Yiass|y Toodaan Yiass]]
* [[Yn Tooneesh|y Tooneesh]]
* [[Yn Varitaan|y Varitaan]]
* [[Yn Varoc|y Varoc]]
* [[Yn Vosambeeck|y Vosambeeck]]
* [[Yn Votswaan|y Votswaan]]
* [[Ellan Wirrish]]
| group2 = {{longitem|[[Rolley çheeraghyn as lieh-enney oc|Çheeraghyn as lieh-enney oc]]}}
| list2 =
* [[Pobblaght Gheynlagh Arabagh y Tahara]] (kionedeeaght neu-leayr)
* [[Yn Tomaalee|y Tomaalee]]
| group3 = Croghaneyn
| list3 =
{{Navbox|child
| group1 = Y Rank
| list1 =
* [[Ellanyn Skeaylt 'sy Cheayn Injinagh|Îles Éparses]]
| group2 = Y Reeriaght Unnaneysit
| list2 =
[[Ellan Helena Noo, Ellan ny Frastyl, as Tristan da Cunha]]
}}
| group4 = {{longitem|Thallooyn Affrickagh myr ayrn<br/>jeh çheeraghyn neu-Affrickagh}}
| list4 =
{{Navbox|child
| group1 = Yn Iddaal
| list1 =
* [[Pantelleria]]
* [[Ellanyn Pelagie]]
| group2 = Y Phortiugal
| list2 =
* [[Yn Vadeirey|Y Vadeirey]]
* [[Ellanyn Selvagens]]
| group3 = Y Rank
| list3 =
* [[Mayotte]]
* [[Réunion]]
| group4 = Y Spaainey
| list4 =
* [[Ny h-Ellanyn Canaaragh]]
* [[Ceuta]]
* [[Melilla]]
* [[Plazas de soberanía]]
|group5 = Yn Yeaman
|list5 =
* [[Socotra]]
}}
|below = <sup>1</sup>Ta ayrn jeh'n çheer shoh soit 'syn [[Yn Aishey|Aishey]].
}}
10jrhkduy9qkzrn1jivgtu8g6lewp2o
Yn Vosambeeck
0
2848
394607
389494
2026-10-17T03:14:04Z
MacTire02
219
++
394607
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Vosambeeck
|ennym_foddey_cadjincliaghtagh= {{lang|pt|República de Moçambique|italics=no}} {{small|([[Portiugish]])}}
|ennym_gienneydagh = y Vosambeeck
|jalloo_brattagh = Flag of Mozambique.svg
|jalloo_cleinney = Emblem of Mozambique.svg
|jalloo_caslys = Mozambique_(orthographic_projection).svg
|jarroo-raa = none
|arrane_ashoonagh = {{lang|pt|[[Pátria Amada]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Heer Ghooie Ghraihagh
|coadan_arrane_ashoonagh = Mozambican national anthem, performed by the United States Navy Band.wav
|çhengey_arrane_ashoonagh = Portiugish
|çhengaghyn_oikoil = [[Portiugish]]
|çhengaghyn_ardjynagh = {{hlist|[[Lomweish]]|[[Makhuwish]]|[[Senish]]|[[Swahilish]]|[[Tsongish]]}}
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] [[steat unnaneagh|unnaneagh]] marish [[corys partee kioneysagh]] reiltys [[smaghtaght|smaghtagh]]
|enmys1_fer-toshee = [[Rolley eaghtyraneyn y Vosambeeck|Eaghtyrane]]
|ushtey_sy_cheead = 2.2
|blein_LTS_CCK = 2005
|LTS_CCK = $27.013 billoon
|LTS_CCK_yn_dooinney = $1,389
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Hoontey Saultys Ashoonagh|Phortiugal]]
|taghyrt_bunneeaght1 = [[Yn Vosambeeck Phortiugagh|Y Vosambeeck Phortiugagh
|date_bunneeaght1 = 1505–1975
|taghyrt_bunneeaght2 = [[Caggey Neuchrogheydys y Vosambeeck]]
|date_bunneeaght2 = 25 Mean Fouyir 1964 – 8 Mean Fouyir 1974
|taghyrt_bunneeaght3 = [[Coardailys Lusaka|Neuchrogheydys bronnit]]
|date_bunneeaght3 = 25 Mean Souree 1975
|taghyrt_bunneeaght4 = [[Deynphobblaght y Vosambeeck]]
|date_bunneeaght4 = 25 Mean Souree 1975 – 30 Mee Houney 1990
|taghyrt_bunneeaght5 = [[Caggey Theayagh y Vosambeeck|Caggey Theayagh]]
|date_bunneeaght5 = 1977–1992
|taghyrt_bunneeaght6 = [[Bunraght y Vosambeeck|Bunraght roie]]
|date_bunneeaght6 = 21 Mee ny Nollick 2004
|traa_ynnydagh = [[Traa yn Affrick Veanagh|CAT]]
|ashchur_utc = +02:00
|cctld = [[.mz]]
|coad_çhellvane = 258
}}
She çheer ayns [[yn Affrick]] ee '''yn Vosambeeck'''. T'ee çhemmit liorish [[Tanzania]] da'n twoaie, [[Malawi]] as [[Yn Tambia|y Tambia]] da'n sheear hwoaie, [[Yn Çhimbabwe|y Çhimbabwe]] da'n sheear, as [[yn Affrick Yiass]] as [[Yn Çheer Swassee|y Çheer Swassee]] da'n sheear yiass. She [[Maputo]] yn [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Vosambeeck, Yn}}
{{bun}}
[[Ronney:Yn Vosambeeck| ]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1975]]
[[Ronney:Bunneeaghtyn 'sy Vosambeeck 'sy vlein 1975|*]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Eear-choloinyn Portiugagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey Voodeeys Çheeraghyn y Phortiugish]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn yn Affrick Hiar Yiass]]
[[Ronney:Çheeraghyn Affrick y Jiass]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1975]]
{{Coord|18|15|S|35|00|E|type:country_region:MZ|display=title}}
599gonqsz99pgitsaxeg00u5zfwx1kh
394608
394607
2026-10-17T03:14:25Z
MacTire02
219
+]]
394608
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Vosambeeck
|ennym_foddey_cadjincliaghtagh= {{lang|pt|República de Moçambique|italics=no}} {{small|([[Portiugish]])}}
|ennym_gienneydagh = y Vosambeeck
|jalloo_brattagh = Flag of Mozambique.svg
|jalloo_cleinney = Emblem of Mozambique.svg
|jalloo_caslys = Mozambique_(orthographic_projection).svg
|jarroo-raa = none
|arrane_ashoonagh = {{lang|pt|[[Pátria Amada]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Heer Ghooie Ghraihagh
|coadan_arrane_ashoonagh = Mozambican national anthem, performed by the United States Navy Band.wav
|çhengey_arrane_ashoonagh = Portiugish
|çhengaghyn_oikoil = [[Portiugish]]
|çhengaghyn_ardjynagh = {{hlist|[[Lomweish]]|[[Makhuwish]]|[[Senish]]|[[Swahilish]]|[[Tsongish]]}}
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] [[steat unnaneagh|unnaneagh]] marish [[corys partee kioneysagh]] reiltys [[smaghtaght|smaghtagh]]
|enmys1_fer-toshee = [[Rolley eaghtyraneyn y Vosambeeck|Eaghtyrane]]
|ushtey_sy_cheead = 2.2
|blein_LTS_CCK = 2005
|LTS_CCK = $27.013 billoon
|LTS_CCK_yn_dooinney = $1,389
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Hoontey Saultys Ashoonagh|Phortiugal]]
|taghyrt_bunneeaght1 = [[Yn Vosambeeck Phortiugagh|Y Vosambeeck Phortiugagh]]
|date_bunneeaght1 = 1505–1975
|taghyrt_bunneeaght2 = [[Caggey Neuchrogheydys y Vosambeeck]]
|date_bunneeaght2 = 25 Mean Fouyir 1964 – 8 Mean Fouyir 1974
|taghyrt_bunneeaght3 = [[Coardailys Lusaka|Neuchrogheydys bronnit]]
|date_bunneeaght3 = 25 Mean Souree 1975
|taghyrt_bunneeaght4 = [[Deynphobblaght y Vosambeeck]]
|date_bunneeaght4 = 25 Mean Souree 1975 – 30 Mee Houney 1990
|taghyrt_bunneeaght5 = [[Caggey Theayagh y Vosambeeck|Caggey Theayagh]]
|date_bunneeaght5 = 1977–1992
|taghyrt_bunneeaght6 = [[Bunraght y Vosambeeck|Bunraght roie]]
|date_bunneeaght6 = 21 Mee ny Nollick 2004
|traa_ynnydagh = [[Traa yn Affrick Veanagh|CAT]]
|ashchur_utc = +02:00
|cctld = [[.mz]]
|coad_çhellvane = 258
}}
She çheer ayns [[yn Affrick]] ee '''yn Vosambeeck'''. T'ee çhemmit liorish [[Tanzania]] da'n twoaie, [[Malawi]] as [[Yn Tambia|y Tambia]] da'n sheear hwoaie, [[Yn Çhimbabwe|y Çhimbabwe]] da'n sheear, as [[yn Affrick Yiass]] as [[Yn Çheer Swassee|y Çheer Swassee]] da'n sheear yiass. She [[Maputo]] yn [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Vosambeeck, Yn}}
{{bun}}
[[Ronney:Yn Vosambeeck| ]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1975]]
[[Ronney:Bunneeaghtyn 'sy Vosambeeck 'sy vlein 1975|*]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Eear-choloinyn Portiugagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey Voodeeys Çheeraghyn y Phortiugish]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn yn Affrick Hiar Yiass]]
[[Ronney:Çheeraghyn Affrick y Jiass]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1975]]
{{Coord|18|15|S|35|00|E|type:country_region:MZ|display=title}}
nzwv9r0s1w770ezpf15mutzb6wv8odw
394609
394608
2026-10-17T03:15:11Z
MacTire02
219
-parameadar nagh lhisagh ve ayn
394609
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Vosambeeck
|ennym_foddey_cadjincliaghtagh= {{lang|pt|República de Moçambique|italics=no}} {{small|([[Portiugish]])}}
|ennym_gienneydagh = y Vosambeeck
|jalloo_brattagh = Flag of Mozambique.svg
|jalloo_cleinney = Emblem of Mozambique.svg
|jalloo_caslys = Mozambique_(orthographic_projection).svg
|jarroo-raa = none
|arrane_ashoonagh = {{lang|pt|[[Pátria Amada]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Heer Ghooie Ghraihagh
|coadan_arrane_ashoonagh = Mozambican national anthem, performed by the United States Navy Band.wav
|çhengey_arrane_ashoonagh = Portiugish
|çhengaghyn_oikoil = [[Portiugish]]
|çhengaghyn_ardjynagh = {{hlist|[[Lomweish]]|[[Makhuwish]]|[[Senish]]|[[Swahilish]]|[[Tsongish]]}}
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] [[steat unnaneagh|unnaneagh]] marish [[corys partee kioneysagh]] reiltys [[smaghtaght|smaghtagh]]
|ushtey_sy_cheead = 2.2
|blein_LTS_CCK = 2005
|LTS_CCK = $27.013 billoon
|LTS_CCK_yn_dooinney = $1,389
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Hoontey Saultys Ashoonagh|Phortiugal]]
|taghyrt_bunneeaght1 = [[Yn Vosambeeck Phortiugagh|Y Vosambeeck Phortiugagh]]
|date_bunneeaght1 = 1505–1975
|taghyrt_bunneeaght2 = [[Caggey Neuchrogheydys y Vosambeeck]]
|date_bunneeaght2 = 25 Mean Fouyir 1964 – 8 Mean Fouyir 1974
|taghyrt_bunneeaght3 = [[Coardailys Lusaka|Neuchrogheydys bronnit]]
|date_bunneeaght3 = 25 Mean Souree 1975
|taghyrt_bunneeaght4 = [[Deynphobblaght y Vosambeeck]]
|date_bunneeaght4 = 25 Mean Souree 1975 – 30 Mee Houney 1990
|taghyrt_bunneeaght5 = [[Caggey Theayagh y Vosambeeck|Caggey Theayagh]]
|date_bunneeaght5 = 1977–1992
|taghyrt_bunneeaght6 = [[Bunraght y Vosambeeck|Bunraght roie]]
|date_bunneeaght6 = 21 Mee ny Nollick 2004
|traa_ynnydagh = [[Traa yn Affrick Veanagh|CAT]]
|ashchur_utc = +02:00
|cctld = [[.mz]]
|coad_çhellvane = 258
}}
She çheer ayns [[yn Affrick]] ee '''yn Vosambeeck'''. T'ee çhemmit liorish [[Tanzania]] da'n twoaie, [[Malawi]] as [[Yn Tambia|y Tambia]] da'n sheear hwoaie, [[Yn Çhimbabwe|y Çhimbabwe]] da'n sheear, as [[yn Affrick Yiass]] as [[Yn Çheer Swassee|y Çheer Swassee]] da'n sheear yiass. She [[Maputo]] yn [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Vosambeeck, Yn}}
{{bun}}
[[Ronney:Yn Vosambeeck| ]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1975]]
[[Ronney:Bunneeaghtyn 'sy Vosambeeck 'sy vlein 1975|*]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Eear-choloinyn Portiugagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey Voodeeys Çheeraghyn y Phortiugish]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn yn Affrick Hiar Yiass]]
[[Ronney:Çheeraghyn Affrick y Jiass]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1975]]
{{Coord|18|15|S|35|00|E|type:country_region:MZ|display=title}}
kwxg8lbkrya3w11gq4rajm697q3a26q
Yn Tooneesh
0
2858
394604
358846
2026-10-17T02:42:37Z
MacTire02
219
++
394604
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Tooneesh
|ennym_foddey_cadjincliaghtagh= {{lang|ar|الجمهورية التونسية}} {{small|([[Arabish]]}})<br />{{small|{{tessen-lettyraghey|ar|al-Jumhūriyyah at-Tūnisiyyah}}}}
|ennym_gienneydagh = y Tooneesh
|jalloo_brattagh = Flag of Tunisia.svg
|jalloo_cleinney = Coat of arms of Tunisia.svg
|jalloo_caslys = Tunisia (orthographic projection).svg
|jarroo-raa = {{lang|ar|حرية، نظام، عدالة|rtl=yes}}
|çhengey_jarroo-raa = Arabish
|tessen-lettyraghey_jarroo-raa= {{tessen-lettyraghey|ar|Ḥurrīyah, Niẓām, 'Adālah}}
|çhyndaa_jarroo-raa = Seyrsnys, Oardagh, Cairys
|arrane_ashoonagh = {{lang|ar|[[Humat al-Hima|حماة الحمى]]|rtl=yes}}
|tessen-lettyraghey_arrane_ashoonagh={{tessen-lettyraghey|ar|Humat al-Him}}
|çhyndaa_arrane_ashoonagh = Coadeyderyn y Çheer Ghooie
|coadan_arrane_ashoonagh = Humat al-Hima.ogg
|çhengey_arrane_ashoonagh = Arabish
|çhengaghyn_oikoil = [[Arabish Chadjinit Noa-emshiragh|Arabish]]<ref name="art1">{{cite web|title=Tunisian Constitution, Article 1 |url=http://www.anc.tn/site/main/AR/docs/constit_proj_26012014.pdf |date=26 Jerrey Geuree 2014 |access-date=10 Toshiaght Arree 2014 |archive-url=https://web.archive.org/web/20140209234154/http://www.anc.tn/site/main/AR/docs/constit_proj_26012014.pdf |archive-date=9 Toshiaght Arree 2014 }}</ref>
|sorçh_çhengaghyn = Çhengaghyn loayrit
|çhengaghyn = [[Arabish y Tooneesh]]<ref>[http://www.ethnologue.com/language/aeb Arabic, Tunisian Spoken]. Ethnologue (19 Toshiaght Arree 1999). Feddynit er 5 Mean Fouyir 2015.</ref> Myn-abbyrtyn: [[Berberish Jerba]] (Chelha) [[Berberish Matmata]]
[[Arabish Hooneeshagh Ewagh]] (UNESCO CR)<ref>{{cite web|url=https://unesdoc.unesco.org/ark:/48223/pf0000212023|title=Atlas of the world's languages in danger : North Africa and the Middle East}}</ref><ref>{{cite web|url=https://www.theguardian.com/news/datablog/2011/apr/15/language-extinct-endangered|title=Endangered Languages}}</ref><ref>{{cite web|url=https://www.ethnologue.com/country/TN/languages|title=Tunisia Language Status}}</ref><ref>{{cite web|url=http://www.language-archives.org/language/jbn|title=OLAC resources in and about the Nafusi language}}</ref><ref>{{cite web|url=https://glottolog.org/resource/languoid/id/nafu1238|title=Language Classification}}</ref><ref>{{cite web|url=https://www.britannica.com/place/Tunisia/Languages|title=Languages of Tunisia}}</ref><ref>{{cite web|url=https://www.worldatlas.com/articles/what-languages-are-spoken-in-tunisia.html|title=What Languages Are Spoken In Tunisia?}}</ref><ref>{{Cite book|url=https://books.google.com/books?id=QDq4YV0VT00C&q=Berber-speaking+migrant+communities&pg=PA109|title=Change in Tunisia: Studies in the Social Sciences|last1=Stone|first1=Russell A.|last2=Simmons|first2=John|date=1976|publisher=SUNY Press|isbn=9780873953115|language=en}}</ref><ref>{{cite book|url=http://researchdirect.uws.edu.au/islandora/object/uws:573|title=An outline of the Shilha (Berber) vernacular of Douiret (Southern Tunisia)|publisher=PhD Thesis, Western Sydney University |last=Gabsi |first= Z. |year=2003}}</ref>
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght eaghtyraneagh]] [[steat unnaneagh|unnaneagh]]
|ushtey_sy_cheead = 5.0
|blein_LTS_CCK = 2007
|LTS_CCK = $97.74 billoon
|LTS_CCK_yn_dooinney = $9,630
|sorçh_kiondeeaght = [[Shennaghys y Tooneesh|Bunneeaght]]
|taghyrt_bunneeaght1 = [[Yn Çhenn-Chairtaig|Y Çhenn-Chairtaig]]
|date_bunneeaght1 = 814 RC
|taghyrt_bunneeaght2 = [[Yn Affrick (queiggey Raueagh)|Affrick y Raue]]
|date_bunneeaght2 = 146 RC
|taghyrt_bunneeaght3 = [[Yn Reeriaght Vandalagh|Y Reeriaght Vandalagh]]
|date_bunneeaght3 = 439
|taghyrt_bunneeaght4 = [[Ecsarcaght yn Affrick]]
|date_bunneeaght4 = 591
|taghyrt_bunneeaght5 = [[Aghlabidee|Yn Emmiraid Aghlabidagh]]
|date_bunneeaght5 = 800
|taghyrt_bunneeaght6 = [[Yn Chaylifaght Fatimidagh]]
|date_bunneeaght6 = 909
|taghyrt_bunneeaght7 = [[Yn Emmiraid Ziridagh]]
|date_bunneeaght7 = 972
|taghyrt_bunneeaght8 = [[Hafsidee|Y Tultanaght Hafsidagh]]
|date_bunneeaght8 = 1229
|taghyrt_bunneeaght9 = [[Beylik Hoonis]]
|date_bunneeaght9 = 15 Jerrey Souree 1705
|taghyrt_bunneeaght10 = [[Coadanys Frangagh y Tooneesh|Coadanys Frangagh]]
|date_bunneeaght10 = 12 Boaldyn 1881
|taghyrt_bunneeaght11 = [[Neuchrogheydys y Tooneesh|Neuchrogheydys]] as [[Reeriaght y Tooneesh|Reeriaght]]
|date_bunneeaght11 = 20 Mayrnt 1956
|taghyrt_bunneeaght12 = [[Shennaghys y Tooneesh noa-emshiragh|Fogrey magh y phobblaght]]
|date_bunneeaght12 = 25 Jerrey Souree 1957
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|cctld = [[.tn]]
|coad_çhellvane = 216
}}
She çheer ayns [[yn Affrick]] ee '''yn Tooneesh'''. T'ee çhemmit liorish [[yn Algear]] da'n sheear as [[Yn Leeb|y Leeb]] da'n shiar yiass. She [[Toonis]] [[preeu-valley]] ny çheerey.
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Yn Commeeys Arabagh}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Tooneesh, Yn}}
{{bun}}
[[Ronney:Yn Tooneesh| ]]
[[Ronney:Bunneeaghtyn 'sy Tooneesh 'sy vlein 1956]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn Maghrebagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey yn Chommeeys Arabagh]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn yn Affrick Hwoaie]]
[[Ronney:Çheeraghyn Saharagh]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1956]]
{{coord|34|N|9|E|scale:5000000|display=title}}
rz4smai4tpul5hd8kdepwl5mnpfgkws
Yn Votswaan
0
2864
394610
358068
2026-10-17T03:36:10Z
MacTire02
219
++
394610
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght y Votswaan
|ennym_foddey_cadjincliaghtagh= {{lang|en|Republic of Botswana|italics=no}} {{small|([[Baarle]])}}<br/>{{lang|tn|Lefatshe la Botswana|italics=no}} {{small|([[Tswaanish]])}}
|ennym_gienneydagh = y Votswaan
|jalloo_brattagh = Flag of Botswana.svg
|jalloo_cleinney = Coat_of_arms_of_Botswana.svg
|jalloo_caslys = Botswana_(centered_orthographic_projection).svg
|jarroo-raa = {{lang|tn|Pula}}
|çhyndaa_jarroo-raa = Fliaghey
|çhengey_jarroo-raa = Tswaanish
|arrane_ashoonagh = {{lang|tn|[[Fatshe leno la rona]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Y Thalloo Shoh Ain
|coadan_arrane_ashoonagh = United States Navy Band - Fatshe leno la rona.ogg
|çhengey_arrane_ashoonagh = Tswaanish
|çhengaghyn_oikoil = [[Baarle]]<ref name="gov.bw languages">{{Cite web |title=About Our Country |url=https://www.gov.bw/about-our-country |access-date=2022-04-17 |website=Gov.bw |archive-date=22 Jerrey Fouyir 2023 |archive-url=https://web.archive.org/web/20231022105828/https://www.gov.bw/about-our-country |url-status=live}}</ref>
|sorçh_çhengaghyn = [[Çhengey ashoonagh]]
|çhengaghyn = [[Tswaanish]]<ref name="gov.bw languages" />
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] [[steat unnaneagh|unnaneagh]] fo [[Pobblaght fo eaghtyraneys kiannoortagh|eaghtyraneys kiannoortagh]]<ref>{{Cite CIA World Factbook|country=Botswana|access-date=17 Mee ny Nollick 2019|year=2019}}</ref>
|ushtey_sy_cheead = 2.5
|blein_LTS_CCK = 2007
|LTS_CCK = $25.676 billoon
|LTS_CCK_yn_dooinney = $16,450
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = Veih'n [[Yn Reeriaght Unnaneysit|Reeriaght Unnaneysit]]
|taghyrt1_bunnit = Bunnit ([[Bunraght y Votswaan|Bunraght]])
|date1_bunnit = 30 Mean Fouyir 1966
|traa_ynnydagh = [[Traa yn Affrick Meanagh|CAT]]
|ashchur_utc = +02:00
|cctld = [[.bw]]
|coad_çhellvane = 267
}}
She çheer ayns jiass [[yn Affrick]] ee '''yn Votswaan'''. T'ee çhemmit liorish [[Yn Tambia|y Tambia]] da'n twoaie, [[Yn Çhimbabwe|y Çhimbabwe]] da'n shiar hwoaie, [[yn Affrick Yiass]] da'n shiar yiass as y jiass, as [[Yn Nameeb|y Nameeb]] da'n sheear. She [[Gabarone]] y [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Votswaan, Yn}}
{{bun}}
[[Ronney:Yn Votswaan| ]]
[[Ronney:Çheeraghyn Affrick y Jiass]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1966]]
[[Ronney:Bunneeaghtyn 'sy Votswaan 'sy vlein 1966|*]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn sloo lhiasit hannah hene]]
{{Coord|24|39.5|S|25|54.5|E|display=title}}
dv1jfhlawvd15rttxtfl2zmiunklozo
394611
394610
2026-10-17T03:36:45Z
MacTire02
219
lettyr beg
394611
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght y Votswaan
|ennym_foddey_cadjincliaghtagh= {{lang|en|Republic of Botswana|italics=no}} {{small|([[Baarle]])}}<br/>{{lang|tn|Lefatshe la Botswana|italics=no}} {{small|([[Tswaanish]])}}
|ennym_gienneydagh = y Votswaan
|jalloo_brattagh = Flag of Botswana.svg
|jalloo_cleinney = Coat_of_arms_of_Botswana.svg
|jalloo_caslys = Botswana_(centered_orthographic_projection).svg
|jarroo-raa = {{lang|tn|Pula}}
|çhyndaa_jarroo-raa = Fliaghey
|çhengey_jarroo-raa = Tswaanish
|arrane_ashoonagh = {{lang|tn|[[Fatshe leno la rona]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Y Thalloo Shoh Ain
|coadan_arrane_ashoonagh = United States Navy Band - Fatshe leno la rona.ogg
|çhengey_arrane_ashoonagh = Tswaanish
|çhengaghyn_oikoil = [[Baarle]]<ref name="gov.bw languages">{{Cite web |title=About Our Country |url=https://www.gov.bw/about-our-country |access-date=2022-04-17 |website=Gov.bw |archive-date=22 Jerrey Fouyir 2023 |archive-url=https://web.archive.org/web/20231022105828/https://www.gov.bw/about-our-country |url-status=live}}</ref>
|sorçh_çhengaghyn = [[Çhengey ashoonagh]]
|çhengaghyn = [[Tswaanish]]<ref name="gov.bw languages" />
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] [[steat unnaneagh|unnaneagh]] fo [[Pobblaght fo eaghtyraneys kiannoortagh|eaghtyraneys kiannoortagh]]<ref>{{Cite CIA World Factbook|country=Botswana|access-date=17 Mee ny Nollick 2019|year=2019}}</ref>
|ushtey_sy_cheead = 2.5
|blein_LTS_CCK = 2007
|LTS_CCK = $25.676 billoon
|LTS_CCK_yn_dooinney = $16,450
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Yn Reeriaght Unnaneysit|Reeriaght Unnaneysit]]
|taghyrt1_bunnit = Bunnit ([[Bunraght y Votswaan|Bunraght]])
|date1_bunnit = 30 Mean Fouyir 1966
|traa_ynnydagh = [[Traa yn Affrick Meanagh|CAT]]
|ashchur_utc = +02:00
|cctld = [[.bw]]
|coad_çhellvane = 267
}}
She çheer ayns jiass [[yn Affrick]] ee '''yn Votswaan'''. T'ee çhemmit liorish [[Yn Tambia|y Tambia]] da'n twoaie, [[Yn Çhimbabwe|y Çhimbabwe]] da'n shiar hwoaie, [[yn Affrick Yiass]] da'n shiar yiass as y jiass, as [[Yn Nameeb|y Nameeb]] da'n sheear. She [[Gabarone]] y [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Votswaan, Yn}}
{{bun}}
[[Ronney:Yn Votswaan| ]]
[[Ronney:Çheeraghyn Affrick y Jiass]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1966]]
[[Ronney:Bunneeaghtyn 'sy Votswaan 'sy vlein 1966|*]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn sloo lhiasit hannah hene]]
{{Coord|24|39.5|S|25|54.5|E|display=title}}
2i5615vpf9fg7v8tc6p6dnumklifnfz
Yn Togo
0
2866
394561
360691
2026-10-16T17:12:06Z
MacTire02
219
++
394561
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Togo
|ennym_foddey_cadjincliaghtagh= {{lang|fr|République togolaise}} {{small|([[Frangish]])}}
|ennym_gienneydagh = y Togo
|jalloo_brattagh = Flag of Togo.svg
|jalloo_cleinney = Armoiries_du_Togo.svg
|jalloo_caslys = Togo on the globe (Africa centered).svg
|jarroo-raa = {{lang|fr|Travail, Liberté, Patrie}}
|imraa_jarroo-raa = <ref>{{cite web|url=http://www.africanlegislaturesproject.org/content/constitution-togo|title=Constitution of Togo|year=2002|access-date=20 Mee Houney 2011|url-status=dead|archive-url=https://web.archive.org/web/20120214090412/http://www.africanlegislaturesproject.org/content/constitution-togo|archive-date=14 Toshiaght Arree 2012}}</ref>
|çhyndaa_jarroo-raa = Obbyr, Seyrsnys, Çheer Ghooie
|çhengey_jarroo-raa = Frangish
|arrane_ashoonagh = [[Salut à toi, pays de nos aïeux|Terre de nos aïeux]]
|çhyndaa_arrane_ashoonagh = Çheer ny Shennayryn Ain
|coadan_arrane_ashoonagh =
|çhengey_arrane_ashoonagh = Frangish
|çhengaghyn_oikoil = [[Frangish]]
|sorçh_çhengaghyn = [[Çhengey ashoonagh|Çhengaghyn ashoonagh]]
|çhengaghyn = {{hlist|[[Kabiyish]]|[[Eweish]]}}
|possanyn_kynneeagh =
|preeu-valley = [[Lomé]]
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh unnaneagh]] fo jaghteyraght [[smaghtys|smaghtagh]]
|ushtey_sy_cheead = 4.2
|blein_LTS_CCK = 2005
|LTS_CCK = $8.945 billoon
|LTS_CCK_yn_dooinney = $1,700
|sorçh_kiondeeaght = [[Shennaghys y Togo|Bunneeaght]]
|note_kiondeeaght =
|taghyrt_bunneeaght1 = [[Yn Çheer Togo|Y Çheer Togo Ghermaanagh]]
|date_bunneeaght1 = 5 Jerrey Souree 1884
|taghyrt_bunneeaght2 = [[Yn Çheer Togo Rangagh|Y Çheer Togo Rangagh]]
|date_bunneeaght2 = 27 Luanistyn 1914
|taghyrt_bunneeaght3 = Neuchrogheydys veih'n [[Yn Rank|Rank]]
|date_bunneeaght3 = 27 Averil 1960
|taghyrt_bunneeaght4 = [[Reaghys 136 Choonseil Shickyrys ny h-Ashoonyn Unnaneysit|Lhiggit stiagh]] ayns ny [[Ny h-Ashoonyn Unnaneysit|h-Ashoonyn Unnaneysit]]
|date_bunneeaght4 = 20 Mean Fouyir 1960
|taghyrt_bunneeaght5 = [[Bunraght y Togo|Bunraght roie]]
|date_bunneeaght5 = 6 Boaldyn 2024
|traa_ynnydagh = [[Traa Mean Greenwich|GMT]]
|ashchur_utc = +00:00
|cctld = [[.tg]]
|coad_çhellvane = 228
}}
She çheer ayns [[yn Affrick]] ee '''yn Togo'''. T'ee çhemmit liorish [[Burkina Faso]] da'n twoaie, [[Benin]] da'n shiar, as [[Yn Ghaney|y Ghaney]] da'n sheear. She [[Lomé]] yn [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Togo, Yn}}
{{bun}}
[[Ronney:Yn Togo| ]]
[[Ronney:Bunneeaghtyn 'syn Africk vlein 1960]]
[[Ronney:Bunneeaghtyn 'sy Togo 'sy vlein 1960]]
[[Ronney:Boodeeys Tarmaynagh Steatyn yn Affrick Heear]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn yn Affrick Heear]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Eear-choloinyn Germaanagh]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1960]]
{{Coord|8|N|1|E|type:country|display=title}}
jefwk09uarirujgdgfknlw9att7p9wg
394600
394561
2026-10-17T02:10:51Z
MacTire02
219
coordnaidyn
394600
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Togo
|ennym_foddey_cadjincliaghtagh= {{lang|fr|République togolaise}} {{small|([[Frangish]])}}
|ennym_gienneydagh = y Togo
|jalloo_brattagh = Flag of Togo.svg
|jalloo_cleinney = Armoiries_du_Togo.svg
|jalloo_caslys = Togo on the globe (Africa centered).svg
|jarroo-raa = {{lang|fr|Travail, Liberté, Patrie}}
|imraa_jarroo-raa = <ref>{{cite web|url=http://www.africanlegislaturesproject.org/content/constitution-togo|title=Constitution of Togo|year=2002|access-date=20 Mee Houney 2011|url-status=dead|archive-url=https://web.archive.org/web/20120214090412/http://www.africanlegislaturesproject.org/content/constitution-togo|archive-date=14 Toshiaght Arree 2012}}</ref>
|çhyndaa_jarroo-raa = Obbyr, Seyrsnys, Çheer Ghooie
|çhengey_jarroo-raa = Frangish
|arrane_ashoonagh = [[Salut à toi, pays de nos aïeux|Terre de nos aïeux]]
|çhyndaa_arrane_ashoonagh = Çheer ny Shennayryn Ain
|coadan_arrane_ashoonagh =
|çhengey_arrane_ashoonagh = Frangish
|çhengaghyn_oikoil = [[Frangish]]
|sorçh_çhengaghyn = [[Çhengey ashoonagh|Çhengaghyn ashoonagh]]
|çhengaghyn = {{hlist|[[Kabiyish]]|[[Eweish]]}}
|possanyn_kynneeagh =
|preeu-valley = [[Lomé]]
|latd=6 |latm=8 |latNS=N |longd=1 |longm=13 |longEW=E
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh unnaneagh]] fo jaghteyraght [[smaghtys|smaghtagh]]
|ushtey_sy_cheead = 4.2
|blein_LTS_CCK = 2005
|LTS_CCK = $8.945 billoon
|LTS_CCK_yn_dooinney = $1,700
|sorçh_kiondeeaght = [[Shennaghys y Togo|Bunneeaght]]
|note_kiondeeaght =
|taghyrt_bunneeaght1 = [[Yn Çheer Togo|Y Çheer Togo Ghermaanagh]]
|date_bunneeaght1 = 5 Jerrey Souree 1884
|taghyrt_bunneeaght2 = [[Yn Çheer Togo Rangagh|Y Çheer Togo Rangagh]]
|date_bunneeaght2 = 27 Luanistyn 1914
|taghyrt_bunneeaght3 = Neuchrogheydys veih'n [[Yn Rank|Rank]]
|date_bunneeaght3 = 27 Averil 1960
|taghyrt_bunneeaght4 = [[Reaghys 136 Choonseil Shickyrys ny h-Ashoonyn Unnaneysit|Lhiggit stiagh]] ayns ny [[Ny h-Ashoonyn Unnaneysit|h-Ashoonyn Unnaneysit]]
|date_bunneeaght4 = 20 Mean Fouyir 1960
|taghyrt_bunneeaght5 = [[Bunraght y Togo|Bunraght roie]]
|date_bunneeaght5 = 6 Boaldyn 2024
|traa_ynnydagh = [[Traa Mean Greenwich|GMT]]
|ashchur_utc = +00:00
|cctld = [[.tg]]
|coad_çhellvane = 228
}}
She çheer ayns [[yn Affrick]] ee '''yn Togo'''. T'ee çhemmit liorish [[Burkina Faso]] da'n twoaie, [[Benin]] da'n shiar, as [[Yn Ghaney|y Ghaney]] da'n sheear. She [[Lomé]] yn [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Togo, Yn}}
{{bun}}
[[Ronney:Yn Togo| ]]
[[Ronney:Bunneeaghtyn 'syn Africk vlein 1960]]
[[Ronney:Bunneeaghtyn 'sy Togo 'sy vlein 1960]]
[[Ronney:Boodeeys Tarmaynagh Steatyn yn Affrick Heear]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn yn Affrick Heear]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Eear-choloinyn Germaanagh]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1960]]
{{Coord|8|N|1|E|type:country|display=title}}
55xkwy6rn1g8swx475x69wr7ded1hs0
Yn Varitaan
0
2892
394605
358080
2026-10-17T02:53:00Z
MacTire02
219
++
394605
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght Islamagh y Varitaan
|ennym_foddey_cadjincliaghtagh= {{lang|ar|الجمهورية الإسلامية الموريتانية}} {{small|([[Arabish]])}}<br/>{{small|{{tessen-lettyraghey|ar|al-Jumhūriyyah al-Islāmiyyah al-Mūrītāniyyah}}}}
|ennym_gienneydagh = y Varitaan
|jalloo_brattagh = Flag of Mauritania.svg
|jalloo_cleinney = National_Seal_of_Mauritania.svg
|sorçh_cowrey = Seal
|jalloo_caslys = Mauritania_(orthographic_projection).svg
|jarroo-raa = {{Lang|ar|شرف، إخاء، عدل}}
|çhengey_jarroo-raa = Arabish
|çhyndaa_jarroo-raa = Onnor, Co-vraaraghys, Cairys
|arrane_ashoonagh = {{Lang|ar|[[Arrane ashoonagh y Varitaan|النشيد الوطني الموريتاني]]}}
|çhyndaa_arrane_ashoonagh = Arrane Ashoonagh y Varitaan
|coadan_arrane_ashoonagh = United States Navy Band - Bilāda l-ʾubāti l-hudāti l-kirām.ogg
|çhengey_arrane_ashoonagh = Arabish
|çhengaghyn_oikoil = [[Arabish]]
|çhengaghyn = {{hlist|[[Arabish]]|[[Pulaarish]]|[[Soninkish]]|[[Wolofish]]}}
|sorçh_çhengaghyn = Çhengaghyn ashoonagh er enney
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght Islamagh]] [[pobblaght lieh-eaghtyraneagh|lieh-eaghtyraneagh]] [[steat unnaneagh|unnaneagh]]
|ushtey_sy_cheead = 0.03
|blein_LTS_CCK = 2005
|LTS_CCK = $7.159 billoon
|LTS_CCK_yn_dooinney = $2,402
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Impiraght choloinagh y Rank|Rank]]
|taghyrt_bunneeaght1 = Bunneeaght y phobblaght
|date_bunneeaght1 = 28 Mee Houney 1958
|taghyrt_bunneeaght2 = Neuchrogheydys veih'n Rank
|date_bunneeaght2 = 28 Mee Houney 1960
|taghyrt_bunneeaght3 = [[Bunraght y Varitaan|Bunraght roie]]
|date_bunneeaght3 = 12 Jerrey Souree 1991
|traa_ynnydagh = [[Traa Mean Greenwich|GMT]]
|ashchur_utc = +00:00
|cctld = [[.mr]]
|coad_çhellvane = 222
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Varitaan'''. T'ee çhemmit liorish [[Yn Keayn Sheear|y Cheayn Sheear]] da'n sheear, [[Yn Tenegaal|y Tenegaal]] da'n sheear yiass, [[Malee]] da'n jiass as y shiar, [[yn Algear]] da'n shiar hwoaie, as [[Yn Sahara Heear|y Sahara Heear]] da'n sheear hwoaie. She [[Nouakchott]] y [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Yn Commeeys Arabagh}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Varitaan, Yn}}
{{bun}}
[[Ronney:Yn Varitaan| ]]
[[Ronney:Bunneeaghtyn 'sy Varitaan 'sy vlein 1960|*]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Pobblaghtyn Islamagh]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn Maghrebagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey yn Chommeeys Arabagh]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Yn Ghleashaght Neu-heuit]]
[[Ronney:Çheeraghyn Saharagh]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
[[Ronney:Çheeraghyn yn Affrick Heear]]
{{Coord|20|N|12|W|type:country_region:MR|display=title}}
bb2bb9cbqiv71j995cbi0tl6f249gr0
Pobblaght yn Affrick Veanagh
0
2897
394615
360878
2026-10-17T03:59:50Z
MacTire02
219
++
394615
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght yn Affrick Veanagh
|ennym_foddey_cadjincliaghtagh= {{lang|sg|Ködörösêse tî Bêafrîka|italics=no}} {{small|([[Sangoish]])}}<br/>{{lang|fr|République centrafricaine|italics=no}} {{small|([[Frangish]])}}
|ennym_gienneydagh = Phobblaght yn Affrick Veanagh
|jalloo_brattagh = Flag of the Central African Republic.svg
|jalloo_cleinney = Coat_of_arms_of_the_Central_African_Republic.svg
|jalloo_caslys = Central_African_Republic_(centered_orthographic_projection).svg
|jarroo-raa = {{lang|sg|Zo Kwe Zo}}
|çhengey_jarroo-raa = Sangoish
|çhyndaa_jarroo-raa = She sleih dagh peiagh
|jarroo-raa2 = {{lang|fr|Unité, Dignité, Travail}}
|çhengey_jarroo-raa2 = Frangish
|çhyndaa_jarroo-raa2 = Unnaneaght, Mooaralys, Obbyr
|arrane_ashoonagh = {{lang|sg|E Zingo|italics=no}}
|arrane_ashoonagh2 = {{lang|fr|[[La Renaissance]]|italics=no}}
|çhengey_arrane_ashoonagh = Sangoish
|çhengey_arrane_ashoonagh2 = Frangish
|çhyndaa_arrane_ashoonagh = Yn Aaruggyr
|coadan_arrane_ashoonagh = Central African Republic Anthem played by the US Navy Band.ogg
|çhengaghyn_oikoil = {{hlist|[[Sangoish]]|[[Frangish]]<ref name="Samarin 2000 301–334">{{cite book |last=Samarin |first=William J. |chapter=The Status of Sango in Fact and Fiction: On the One-Hundredth Anniversary of its Conception |chapter-url=https://books.google.com/books?id=jSByTfudlIcC&pg=PA301 |editor-last=McWhorter |editor-first=John H. |editor-link=John McWhorter |title=Language Change and Language Contact in Pidgins and Creoles |publisher=John Benjamins |series=Creole language library |volume=21 |year=2000 |pages=301–334 |isbn=9789027252432}}</ref>}}
|sorçh_çhengaghyn = [[Çhengey ashoonagh]]
|çhengaghyn = [[Sangoish]]
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght eaghtyraneagh]] [[steat unnaneagh|unnaneagh]]
|blein_LTS_CCK = 2006
|LTS_CCK = $5.015 billoon
|LTS_CCK_yn_dooinney = $1,198
|sorçh_kiondeeaght = Neuchrogheydys
|taghyrt_bunneeaght1 = Pobblaght bunnit
|date_bunneeaght1 = 1 Mee ny Nollick 1958
|taghyrt_bunneeaght2 = veih'n [[Yn Rank|Rank]]
|date_bunneeaght2 = 13 Luanistyn 1960
|taghyrt_bunneeaght3 = Bunneeaght [[Impiraght yn Affrick Veanagh]]
|date_bunneeaght3 = 4 Mee ny Nollick 1976
|taghyrt_bunneeaght4 = [[Crooinaghey Bokassa I as Catherine|Crooinaghey Bokassa I]]
|date_bunneeaght4 = 4 Mee ny Nollick 1977
|taghyrt_bunneeaght5 = [[Obbreeaght Caban|Toyrt-mow Bokassa I as aachroo yn phobblaght]]
|date_bunneeaght5 = 21 Mean Fouyir 1979
|traa_ynnydagh = [[Traa yn Affrick Heear|WAT]]
|ashchur_utc = +01:00
|cctld = [[.cf]]
|coad_çhellvane = 236
}}
She çheer tallooinit 'syn [[yn Affrick|Affrick]] ee '''Pobblaght yn Affrick Veanagh''' ({{langx|fr|République Centrafricaine}}, {{langx|sg|Ködörösêse tî Bêafrîka}}). T'ee çhemmit liorish [[Shad]] da'n twoaie, [[Yn Toodaan Yiass|y Toodaan Yiass]] da'n shiar, [[Pobblaght y Chongo]] as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Cameroon]] da'n sheear. She [[Bangui]] [[preeu-valley]] ny çheerey.
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Affrick Veanagh, Pobblaght}}
{{bun}}
[[Ronney:Pobblaght yn Affrick Veanagh| ]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Bunneeaghtyn ayns Pobblaght yn Affrick Veanagh 'sy vlein 1960|*]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
{{Coord|7|N|21|E|type:country_region:CF|display=title}}
r2q4x48l3ffwgx2dhxp1efupzeqbrw0
394616
394615
2026-10-17T04:00:26Z
MacTire02
219
+imraaghyn
394616
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght yn Affrick Veanagh
|ennym_foddey_cadjincliaghtagh= {{lang|sg|Ködörösêse tî Bêafrîka|italics=no}} {{small|([[Sangoish]])}}<br/>{{lang|fr|République centrafricaine|italics=no}} {{small|([[Frangish]])}}
|ennym_gienneydagh = Phobblaght yn Affrick Veanagh
|jalloo_brattagh = Flag of the Central African Republic.svg
|jalloo_cleinney = Coat_of_arms_of_the_Central_African_Republic.svg
|jalloo_caslys = Central_African_Republic_(centered_orthographic_projection).svg
|jarroo-raa = {{lang|sg|Zo Kwe Zo}}
|çhengey_jarroo-raa = Sangoish
|çhyndaa_jarroo-raa = She sleih dagh peiagh
|jarroo-raa2 = {{lang|fr|Unité, Dignité, Travail}}
|çhengey_jarroo-raa2 = Frangish
|çhyndaa_jarroo-raa2 = Unnaneaght, Mooaralys, Obbyr
|arrane_ashoonagh = {{lang|sg|E Zingo|italics=no}}
|arrane_ashoonagh2 = {{lang|fr|[[La Renaissance]]|italics=no}}
|çhengey_arrane_ashoonagh = Sangoish
|çhengey_arrane_ashoonagh2 = Frangish
|çhyndaa_arrane_ashoonagh = Yn Aaruggyr
|coadan_arrane_ashoonagh = Central African Republic Anthem played by the US Navy Band.ogg
|çhengaghyn_oikoil = {{hlist|[[Sangoish]]|[[Frangish]]<ref name="Samarin 2000 301–334">{{cite book |last=Samarin |first=William J. |chapter=The Status of Sango in Fact and Fiction: On the One-Hundredth Anniversary of its Conception |chapter-url=https://books.google.com/books?id=jSByTfudlIcC&pg=PA301 |editor-last=McWhorter |editor-first=John H. |editor-link=John McWhorter |title=Language Change and Language Contact in Pidgins and Creoles |publisher=John Benjamins |series=Creole language library |volume=21 |year=2000 |pages=301–334 |isbn=9789027252432}}</ref>}}
|sorçh_çhengaghyn = [[Çhengey ashoonagh]]
|çhengaghyn = [[Sangoish]]
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght eaghtyraneagh]] [[steat unnaneagh|unnaneagh]]
|blein_LTS_CCK = 2006
|LTS_CCK = $5.015 billoon
|LTS_CCK_yn_dooinney = $1,198
|sorçh_kiondeeaght = Neuchrogheydys
|taghyrt_bunneeaght1 = Pobblaght bunnit
|date_bunneeaght1 = 1 Mee ny Nollick 1958
|taghyrt_bunneeaght2 = veih'n [[Yn Rank|Rank]]
|date_bunneeaght2 = 13 Luanistyn 1960
|taghyrt_bunneeaght3 = Bunneeaght [[Impiraght yn Affrick Veanagh]]
|date_bunneeaght3 = 4 Mee ny Nollick 1976
|taghyrt_bunneeaght4 = [[Crooinaghey Bokassa I as Catherine|Crooinaghey Bokassa I]]
|date_bunneeaght4 = 4 Mee ny Nollick 1977
|taghyrt_bunneeaght5 = [[Obbreeaght Caban|Toyrt-mow Bokassa I as aachroo yn phobblaght]]
|date_bunneeaght5 = 21 Mean Fouyir 1979
|traa_ynnydagh = [[Traa yn Affrick Heear|WAT]]
|ashchur_utc = +01:00
|cctld = [[.cf]]
|coad_çhellvane = 236
}}
She çheer tallooinit 'syn [[yn Affrick|Affrick]] ee '''Pobblaght yn Affrick Veanagh''' ({{langx|fr|République Centrafricaine}}, {{langx|sg|Ködörösêse tî Bêafrîka}}). T'ee çhemmit liorish [[Shad]] da'n twoaie, [[Yn Toodaan Yiass|y Toodaan Yiass]] da'n shiar, [[Pobblaght y Chongo]] as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Cameroon]] da'n sheear. She [[Bangui]] [[preeu-valley]] ny çheerey.
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Affrick Veanagh, Pobblaght}}
{{bun}}
[[Ronney:Pobblaght yn Affrick Veanagh| ]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Bunneeaghtyn ayns Pobblaght yn Affrick Veanagh 'sy vlein 1960|*]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
{{Coord|7|N|21|E|type:country_region:CF|display=title}}
diie8j0pmhd5e0uaaaq3okx6smeyz8f
394617
394616
2026-10-17T04:02:08Z
MacTire02
219
++
394617
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght yn Affrick Veanagh
|ennym_foddey_cadjincliaghtagh= {{lang|sg|Ködörösêse tî Bêafrîka|italics=no}} {{small|([[Sangoish]])}}<br/>{{lang|fr|République centrafricaine|italics=no}} {{small|([[Frangish]])}}
|ennym_gienneydagh = Phobblaght yn Affrick Veanagh
|jalloo_brattagh = Flag of the Central African Republic.svg
|jalloo_cleinney = Coat_of_arms_of_the_Central_African_Republic.svg
|jalloo_caslys = Central_African_Republic_(centered_orthographic_projection).svg
|jarroo-raa = {{lang|sg|Zo Kwe Zo}}
|çhengey_jarroo-raa = Sangoish
|çhyndaa_jarroo-raa = She sleih dagh peiagh
|jarroo-raa2 = {{lang|fr|Unité, Dignité, Travail}}
|çhengey_jarroo-raa2 = Frangish
|çhyndaa_jarroo-raa2 = Unnaneaght, Mooaralys, Obbyr
|arrane_ashoonagh = {{lang|sg|E Zingo|italics=no}}
|arrane_ashoonagh2 = {{lang|fr|[[La Renaissance]]|italics=no}}
|çhengey_arrane_ashoonagh = Sangoish
|çhengey_arrane_ashoonagh2 = Frangish
|çhyndaa_arrane_ashoonagh = Yn Aaruggyr
|coadan_arrane_ashoonagh = Central African Republic Anthem played by the US Navy Band.ogg
|çhengaghyn_oikoil = {{hlist|[[Sangoish]]|[[Frangish]]<ref name="Samarin 2000 301–334">{{cite book |last=Samarin |first=William J. |chapter=The Status of Sango in Fact and Fiction: On the One-Hundredth Anniversary of its Conception |chapter-url=https://books.google.com/books?id=jSByTfudlIcC&pg=PA301 |editor-last=McWhorter |editor-first=John H. |editor-link=John McWhorter |title=Language Change and Language Contact in Pidgins and Creoles |publisher=John Benjamins |series=Creole language library |volume=21 |year=2000 |pages=301–334 |isbn=9789027252432}}</ref>}}
|sorçh_çhengaghyn = [[Çhengey ashoonagh]]
|çhengaghyn = [[Sangoish]]
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght eaghtyraneagh]] [[steat unnaneagh|unnaneagh]]
|blein_LTS_CCK = 2006
|LTS_CCK = $5.015 billoon
|LTS_CCK_yn_dooinney = $1,198
|sorçh_kiondeeaght = Neuchrogheydys
|taghyrt_bunneeaght1 = Pobblaght bunnit
|date_bunneeaght1 = 1 Mee ny Nollick 1958
|taghyrt_bunneeaght2 = veih'n [[Yn Rank|Rank]]
|date_bunneeaght2 = 13 Luanistyn 1960
|taghyrt_bunneeaght3 = Bunneeaght [[Impiraght yn Affrick Veanagh]]
|date_bunneeaght3 = 4 Mee ny Nollick 1976
|taghyrt_bunneeaght4 = [[Crooinaghey Bokassa I as Catherine|Crooinaghey Bokassa I]]
|date_bunneeaght4 = 4 Mee ny Nollick 1977
|taghyrt_bunneeaght5 = [[Obbreeaght Caban|Toyrt-mow Bokassa I as aachroo yn phobblaght]]
|date_bunneeaght5 = 21 Mean Fouyir 1979
|traa_ynnydagh = [[Traa yn Affrick Heear|WAT]]
|ashchur_utc = +01:00
|cctld = [[.cf]]
|coad_çhellvane = 236
}}
She çheer tallooinit 'syn [[yn Affrick|Affrick]] ee '''Pobblaght yn Affrick Veanagh''' ({{langx|fr|République Centrafricaine}}, {{langx|sg|Ködörösêse tî Bêafrîka}}). T'ee çhemmit liorish [[Shad]] da'n twoaie, [[Yn Toodaan Yiass|y Toodaan Yiass]] da'n shiar, [[Pobblaght y Chongo]] as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Cameroon]] da'n sheear. She [[Bangui]] [[preeu-valley]] ny çheerey.
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Affrick Veanagh, Pobblaght}}
{{bun}}
[[Ronney:Pobblaght yn Affrick Veanagh| ]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Bunneeaghtyn ayns Pobblaght yn Affrick Veanagh 'sy vlein 1960|*]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
{{Coord|7|N|21|E|type:country_region:CF|display=title}}
i2wdmwi5bph2bzsgp7rb5hv3m18qx4c
394619
394617
2026-10-17T04:03:04Z
MacTire02
219
catsort
394619
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght yn Affrick Veanagh
|ennym_foddey_cadjincliaghtagh= {{lang|sg|Ködörösêse tî Bêafrîka|italics=no}} {{small|([[Sangoish]])}}<br/>{{lang|fr|République centrafricaine|italics=no}} {{small|([[Frangish]])}}
|ennym_gienneydagh = Phobblaght yn Affrick Veanagh
|jalloo_brattagh = Flag of the Central African Republic.svg
|jalloo_cleinney = Coat_of_arms_of_the_Central_African_Republic.svg
|jalloo_caslys = Central_African_Republic_(centered_orthographic_projection).svg
|jarroo-raa = {{lang|sg|Zo Kwe Zo}}
|çhengey_jarroo-raa = Sangoish
|çhyndaa_jarroo-raa = She sleih dagh peiagh
|jarroo-raa2 = {{lang|fr|Unité, Dignité, Travail}}
|çhengey_jarroo-raa2 = Frangish
|çhyndaa_jarroo-raa2 = Unnaneaght, Mooaralys, Obbyr
|arrane_ashoonagh = {{lang|sg|E Zingo|italics=no}}
|arrane_ashoonagh2 = {{lang|fr|[[La Renaissance]]|italics=no}}
|çhengey_arrane_ashoonagh = Sangoish
|çhengey_arrane_ashoonagh2 = Frangish
|çhyndaa_arrane_ashoonagh = Yn Aaruggyr
|coadan_arrane_ashoonagh = Central African Republic Anthem played by the US Navy Band.ogg
|çhengaghyn_oikoil = {{hlist|[[Sangoish]]|[[Frangish]]<ref name="Samarin 2000 301–334">{{cite book |last=Samarin |first=William J. |chapter=The Status of Sango in Fact and Fiction: On the One-Hundredth Anniversary of its Conception |chapter-url=https://books.google.com/books?id=jSByTfudlIcC&pg=PA301 |editor-last=McWhorter |editor-first=John H. |editor-link=John McWhorter |title=Language Change and Language Contact in Pidgins and Creoles |publisher=John Benjamins |series=Creole language library |volume=21 |year=2000 |pages=301–334 |isbn=9789027252432}}</ref>}}
|sorçh_çhengaghyn = [[Çhengey ashoonagh]]
|çhengaghyn = [[Sangoish]]
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght eaghtyraneagh]] [[steat unnaneagh|unnaneagh]]
|blein_LTS_CCK = 2006
|LTS_CCK = $5.015 billoon
|LTS_CCK_yn_dooinney = $1,198
|sorçh_kiondeeaght = Neuchrogheydys
|taghyrt_bunneeaght1 = Pobblaght bunnit
|date_bunneeaght1 = 1 Mee ny Nollick 1958
|taghyrt_bunneeaght2 = veih'n [[Yn Rank|Rank]]
|date_bunneeaght2 = 13 Luanistyn 1960
|taghyrt_bunneeaght3 = Bunneeaght [[Impiraght yn Affrick Veanagh]]
|date_bunneeaght3 = 4 Mee ny Nollick 1976
|taghyrt_bunneeaght4 = [[Crooinaghey Bokassa I as Catherine|Crooinaghey Bokassa I]]
|date_bunneeaght4 = 4 Mee ny Nollick 1977
|taghyrt_bunneeaght5 = [[Obbreeaght Caban|Toyrt-mow Bokassa I as aachroo yn phobblaght]]
|date_bunneeaght5 = 21 Mean Fouyir 1979
|traa_ynnydagh = [[Traa yn Affrick Heear|WAT]]
|ashchur_utc = +01:00
|cctld = [[.cf]]
|coad_çhellvane = 236
}}
She çheer tallooinit 'syn [[yn Affrick|Affrick]] ee '''Pobblaght yn Affrick Veanagh''' ({{langx|fr|République Centrafricaine}}, {{langx|sg|Ködörösêse tî Bêafrîka}}). T'ee çhemmit liorish [[Shad]] da'n twoaie, [[Yn Toodaan Yiass|y Toodaan Yiass]] da'n shiar, [[Pobblaght y Chongo]] as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Cameroon]] da'n sheear. She [[Bangui]] [[preeu-valley]] ny çheerey.
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{bun}}
[[Ronney:Pobblaght yn Affrick Veanagh| ]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Bunneeaghtyn ayns Pobblaght yn Affrick Veanagh 'sy vlein 1960|*]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
{{Coord|7|N|21|E|type:country_region:CF|display=title}}
lyhhxy869oegz8osaytyky0bve4c1d8
Ellan Wirrish
0
2920
394612
357903
2026-10-17T03:45:43Z
MacTire02
219
++
394612
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Pobblaght Ellan Wirrish
|ennym_foddey_cadjincliaghtagh= {{lang|en|Republic of Mauritius|italics=no}} {{small|[[Baarle]])}}<br/>{{lang|fr|République de Maurice|italics=no}} {{small|([[Frangish]])}}<br/>{{lang|mfe|Repiblik Moris|italics=no}} {{small|([[Creeole Mwirrishagh|Morisien]])}}
|ennym_gienneydagh = Ellan Wirrish
|jalloo_brattagh = Flag of Mauritius.svg
|jalloo_cleinney = Coat of arms of Mauritius.svg
|jalloo_caslys = Mauritius (orthographic projection).svg
|jarroo-raa = {{lang|la|Stella Clavisque Maris Indici}}
|imraa_jarroo-raa = <ref>{{Cite web|title=Government Information Service – Coat of Arms|url=http://gis.govmu.org/English/About%20Mauritius/Pages/Coats-of-Arms.aspx|archive-url=https://web.archive.org/web/20200612094501/http://gis.govmu.org/English/About%20Mauritius/Pages/Coats-of-Arms.aspx|archive-date=12 Mean Souree 2020|access-date=29 Jerrey Souree 2019|publisher=govmu.org}}</ref>
|çhyndaa_jarroo-raa = Rollage as Ogher y Cheayn Injinagh
|çhengey_jarroo-raa = Ladjyn
|arrane_ashoonagh = {{lang|en|[[Motherland (anthym)|Motherland]]|italics=no}}
|coadan_arrane_ashoonagh = Motherland_(instrumental).ogg
|çhengey_arrane_ashoonagh = Baarle
|çhengaghyn_oikoil = Çhengey oikoil erbee (''de jure'')<br />{{nowrap|{{hlist|[[Baarle]]|[[Frangish]]}} (''de facto''){{efn|Cha nel [[bunraght Ellan Wirrish]] cur sheese er [[çhengey oikoil]]. Ta'n Bunraght gra dy nee Baarle çhengey oikoil y Çhionnal Ashoonagh; ansherbee, foddee oltey yn çhionnal loayrt rish y chaairliagh 'sy Rangish.}}}}
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] unnaneagh<ref>{{cite web |title=Country Profile: Mauritius |url=https://www.sng-wofi.org/country_profiles/mauritius.html |website=World Observatory on Subnational Government Finance and Investment (SNG-WOFI) |publisher=OECD / UCLG |access-date=2026-09-18}}</ref>
|ushtey_sy_cheead = 0.05
|blein_LTS_CCK = 2006
|LTS_CCK = $16.0 billoon
|LTS_CCK_yn_dooinney = $13,703
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Yn Reeriaght Unnaneysit|Reeriaght Unnaneysit]]
|taghyrt1_bunnit = [[Bunraght Ellan Wirrish]]
|date1_bunnit = 12 Mayrnt 1968
|taghyrt2_bunnit = Pobblaght
|date2_bunnit = 12 Mart 1992
|traa_ynnydagh = [[Traa Ellan Wirrish|MUT]]
|ashchur_utc = +04:00
|cctld = [[.mu]]
|coad_çhellvane = 230
}}
She çheer ayns [[yn Affrick]] ee '''Ellan Wirrish'''. T'ee soit ayns [[Yn Keayn Injinagh|y Cheayn Injinagh]]. She [[Port Louis]] y [[preeu-valley]].
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{commonscat}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Wirrish, Ellan}}
{{bun}}
[[Ronney:Ellan Wirrish| ]]
[[Ronney:Bunneeaghtyn 'syn Impiraght Ollanagh 'sy vlein 1638]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1968]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn ellanagh 'sy Cheayn Injinagh]]
[[Ronney:Çheeraghyn ellanagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Ny h-Ellanyn Mascareenagh]]
[[Ronney:Yn Affrick Vioseenagh]]
[[Ronney:Buill chummaltit bunnit liorish Colught Ollanagh yn Injey Hiar]]
[[Ronney:Buill chummaltit bunnit 'sy vlein 1638]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Steatyn Beggey Ellanagh er Lhiasaghey]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1968]]
m389w4xiykzstf2qc6kqypq924zjbj8
Clowan:Yn Commeeys Arabagh
10
5394
394602
394311
2026-10-17T02:33:41Z
MacTire02
219
++
394602
wikitext
text/x-wiki
{{Navbox
|name = Yn Commeeys Arabagh
|state = {{{state|autocollapse}}}
|title = Olteynyn y [[Yn Commeeys Arabagh|Chommeeys Arabagh]]
|image = [[Coadan:Flag of the Arab League.svg|60px|right|border|Brattagh y Chommeeys Arabagh]]
|bodyclass = hlist
|group1 = Olteynyn
|list1 =
* [[Yn Algear]]
* [[Yn Araab Saudi|yn Araab Saudi]]
* [[Bahrain]]
* [[Yn Chatar|y Chatar]]
* [[Ellanyn Chomoro]]
* [[Yn Choowait|y Choowait]]
* [[Djibouti]]
* [[yn Earack]]
* [[yn Egypt]]
* [[ny h-Emmiraidyn Arabagh Unnaneysit]]
* [[Yn Jordaan|y Jordaan]]
* [[Yn Leeb|y Leeb]]
* [[Yn Livaan|y Livaan]]
* [[yn Omaan]]
* [[Yn Phalasteen|y Phalasteen]]
* [[Yn Teer|y Teer]]
* [[Yn Tomaal|y Tomaal]]
* [[Yn Toodaan|y Toodaan]]
* [[Yn Tooneesh|y Tooneesh]]
* [[Yn Varitaan|y Varitaan]]
* [[Yn Varoc|y Varoc]]
* [[Yn Yeaman|yn Yeaman]]
|group2 = Baghtallee
|list2 =
* [[Eritrea]]
* [[yn Injey]]
* [[Yn Veneswaaley|y Veneswaaley]]
}}
f1s39jbs40v9tv5v88lovtu6w747a9n
Pobblaght Gheynlagh Arabagh y Tahara
0
6203
394632
394312
2026-10-17T05:34:46Z
MacTire02
219
++
394632
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght Gheynlagh Arabagh y Tahara
|ennym_foddey_cadjincliaghtagh= {{small|{{Name in various languages
| name = {{nobold|''(ayns ny çhengaghyn oikoil)''}}
| ar = {{lang|ar|الجمهورية العربية الصحراوية الديمقراطية}}<br/>{{small|{{tessen-lettyraghey|ar|al-Jumhūriyyah al-‘Arabiyyah aṣ-Ṣaḥrāwiyyah ad-Dīmuqrāṭiyyah}}}}
| es = {{lang|es|República Árabe Saharaui Democrática|italics=no}}
}}}}
|ennym_gienneydagh = Phobblaght Gheynlagh Arabagh y Sahara
|jalloo_brattagh = Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg
|jalloo_cleinney =
|jalloo_caslys = Edmund_WS.PNG
|fo-heidyl_caslys = Ta'n caslys shoh taishbyney yn thalloo ta fo aggyrt PGAS, viz. [[Yn Sahara Heear]] (daahit liorish striggyn). Ta'n chooid smoo jh'n thalloo shoh fo stiurey ny [[Yn Varoc|Maroc]]. She [[Cryss Seyr]] yn ennym ta currit er ny thallooyn ta fo stiurey PGAS, as t'ee daahit ayns buigh.
|jarroo-raa = {{lang|ar|حرية، ديمقراطية، وحدة}}
|jarroo-raa2 = {{lang|es|Libertad, Democracia, Unidad}}
|çhyndaa_jarroo-raa = Seyrsnys, Deynlaghys, Unnaneaght
|çhengey_jarroo-raa = Arabish
|çhengey_jarroo-raa2 = Spaainish
|arrane_ashoonagh = {{lang|ar|[[Yā Banī aṣ-Ṣaḥrāʾ|يا بني الصحراء]]}}
|tessen-lettyraghey_arrane_ashoonagh = Yā Banī aṣ-Ṣaḥrāʾ
|arrane_ashoonagh2 = ¡Oh, hijos del Sahara!
|çhyndaa_arrane_ashoonagh = O, Mec y Tahara!
|coadan_arrane_ashoonagh = Yabaniy es-sahara SADR anthem.mid
|çhengey_arrane_ashoonagh = Arabish
|çhengey_arrane_ashoonagh2 = Spaainish
|çhengaghyn_oikoil = {{hlist|[[Arabish]]<ref>{{cite web |last=SADR |title=Constitution of the SADR |url=http://www.rasd-state.ws/babtani.htm |language=es|access-date=10 Mee Houney 2020 |archive-url=https://web.archive.org/web/20071111161544/http://www.rasd-state.ws/babtani.htm |archive-date=11 Mee Houney 2007}}</ref>|[[Spaainish y Tahara|Spaainish]]{{efn|Ta'n Spaainish soilshit myr nah hengey oikoil y PGAT<ref name="sps">{{cite web |url=https://archive.spsrasd.info/ar/articles/2018/11/29/18612.html |title=الوفد الصحراوي سيحضر لقاء جنيف بإرادة صادقة للتقدم نحو الحل الذي يضمن حق الشعب الصحراوي في تقرير المصير والاستقلال |date=29 Mee Houney 2018 |website=[[Shirveish Chlouderys y Tahara]] |archive-url=https://web.archive.org/web/20231125125900/https://archive.spsrasd.info/ar/articles/2018/11/29/18612.html |archive-date=25 Mee Houney 2023 |lang=ar |url-status=live}}</ref><ref name="János Besenyő">{{cite book |author1=Besenyő |first=János |author-link=János Besenyő |title=Conflict and Peace in Western Sahara The Role of the UN's Peacekeeping Mission (MINURSO) |author2=R. Joseph Huddleston |author3=Yahia H. Zoubir |publisher=Taylor & Francis |year=2022 |isbn=978-10-0080733-2 |page=51}}</ref><ref name="Dawn Chatty">{{cite book|author=Dawn Chatty|title=Deterritorialized Youth Sahrawi and Afghan Refugees at the Margins of the Middle East|year=2010|publisher=Berghahn Books |isbn=978-1-84545-653-5|pages=114}}</ref><ref name="Elena Fiddian-Qasmiyeh">{{cite book|author=Elena Fiddian-Qasmiyeh|title=South-South Educational Migration, Humanitarianism and Development Views from the Caribbean, North Africa and the Middle East|year=2015|publisher=Routledge |isbn=978-1-135-07667-2|pages=48}}</ref><ref>{{cite conference |last1=Martos |first1=Isabel |title=Linguistic Policy in the Camps of Sahrawi Refugees |url=https://www.researchgate.net/publication/273993698 |conference=ECAS 2013, 5th European Conference on African Studies |date=2014 |publisher=Universidad de Alcalá |access-date=19 Luanistyn 2018 |archive-date=22 Boaldyn 2021 |archive-url=https://web.archive.org/web/20210522172107/https://www.researchgate.net/publication/273993698_Linguistic_Policy_in_the_Camps_of_Sahrawi_Refugees_2014 |url-status=live }}</ref>}}
}}
|sorçh_çhengaghyn = Çhengaghyn loayrit
|çhengaghyn = {{unbulleted list|
* [[Arabish Hassaniya]]
* [[Spaainish y Tahara]]<ref>{{cite web |url=http://cvc.cervantes.es/lengua/anuario/anuario_06-07/pdf/paises_3.pdf |title=El Español en los Campamentos de Refugiados Saharauis (Tinduf, yn Algear) |publisher=Cvc.cervantes.es |access-date=20 Boaldyn 2015 |archive-date=26 Mee ny Nollick 2016 |archive-url=https://web.archive.org/web/20161226150735/http://cvc.cervantes.es/lengua/anuario/anuario_06-07/pdf/paises_3.pdf |url-status=live }}</ref>
}}
|craueeaght = [[Yn Islam]] ([[craueeaght steat|oikoil]])
|preeu-valley = [[Laayoune]] (''de jure'')
|preeu-valley_ayns_eebyrtys = {{unbulleted list
| [[Camp kemmyrkee Rabouni|Rabuni]], [[Tindouf]] (''de facto'')
| [[Tifariti]] (''fogrit magh myr [[preeu-valley shallidagh]]'')
}}
|balley_smoo =
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] unnaneagh un-phartee<ref>{{cite web |date=1999-09-04 |title=Constitution of the SADR |url=https://www.arso.org/03-const.99.htm |website=arso.org |publisher=Association de soutien à un référendum libre et régulier au Sahara Occidental |access-date=2025-05-13|lang=es}}</ref><ref>{{cite web |last=SADR |title=Constitution of the SADR |url=http://www.rasd-state.ws/babtani.htm |language=ar|access-date=10 Mee Houney 2020 |archive-url=https://web.archive.org/web/20071111161544/http://www.rasd-state.ws/babtani.htm |archive-date=11 Mee Houney 2007}}</ref>
|sorçh_kiondeeaght = [[Pobblaght Gheynlagh Arabagh y Tahara#Shennaghys|Crooaght]]
|note_kiondeeaght =
|taghyrt_bunneeaght1 = [[Coardailyssyn Madrid|Lhiggit ass]] lesh y [[Yn Spaainey fo Franco|Spaainey]]
|date_bunneeaght1 = 14 Mee Houney 1975
|taghyrt_bunneeaght2 = Fogrey magh y phobblaght
|date_bunneeaght2 = 27 Toshiaght Arree 1976
|taghyrt_bunneeaght3 = Kionedeeaght fo arganeys lesh y [[Yn Varoc|Varoc]]
|date_bunneeaght3 = [[Streeu yn Tahara Heear|Foast ayn]]
|argid =[[Peseta Saharagh]] (''de jure'') ([[ISO 4217|EHP]])<br> {{Collapsible list
|framestyle=border:none; padding:0;
|titlestyle=font-weight:normal;
|title=''De facto''
|1=[[Dirham Marocagh]] ([[ISO 4217|MAD]]){{efn|Ayns ny [[Yn Sahara Heear fo cummaltys y Varoc|thallooyn fo cummaltys y Varoc]].}}
|2=[[Dinar Algearagh]] ([[ISO 4217|DZD]])
|3=[[Ouguiya Maritaanagh]] ([[ISO 4217|MRU]])
|4=[[Euro]] ([[ISO 4217|EUR]])}}
|traa_ynnydagh = [[Traa Mean Greenwich|GMT]]
|ashchur_utc = +00:00
|cctld = [[.eh]] tashtit
}}
Ta '''Pobblaght Gheynlagh Arabagh y Tahara''' ({{langx|ar|الجمهورية العربية الصحراوية الديمقراطية}}), ny '''PGAT''', ny çheer 'syn [[Yn Affrick|Affrick]] nagh vel enney currit urree. Ta reiltys ny çheerey sursmooinaghey dy vel [[Yn Sahara Heear|y Sahara Heear]] yn clane cooid jeh'n steat oc. Va'n PGAS fogrit magh liorish [[Polisario]] er 27 Toshiaght Arree 1976, as ta 20% jeh'n çheer fo nyn stiurey lesh yn ennym "[[Cryss Heyr]]". Ta'n ayrn elley jeh'n çheer fo stiurey reiltys y [[Yn Varoc|Varoc]].
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Tahara, Pobblaght Gheynlagh Arabagh}}
{{stub}}
[[Ronney:Pobblaght Gheynlagh Arabagh y Tahara| ]]
[[Ronney:Çheeraghyn yn Affrick Hwoaie]]
[[Ronney:Çheeraghyn Maghrebagh]]
[[Ronney:Çheeraghyn Saharagh]]
[[Ronney:Pobblaghtyn Arabagh]]
[[Ronney:Thallooyn arganeyssityn Affrick]]
[[Ronney:Arganeyssyn thallooin y Varoc]]
[[Ronney:Reiltyssyn 'syn eebyrtys]]
[[Ronney:Eear-choloinyn Spaainagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Steatyn un-phartee]]
[[Ronney:Polisario]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1976]]
[[Ronney:Bunneeaghtyn 'sy Tahara Heear 'sy vlein 1976]]
[[Ronney:Çheer-oaylleeaght y Tahara Heear]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Steatyn as lieh-enney oc]]
renr9ykwwhckinidijomxs66oy9m3lq
394635
394632
2026-10-17T05:39:26Z
MacTire02
219
++
394635
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght Gheynlagh Arabagh y Tahara
|ennym_foddey_cadjincliaghtagh= {{small|{{Name in various languages
| name = {{nobold|''(ayns ny çhengaghyn oikoil)''}}
| ar = {{lang|ar|الجمهورية العربية الصحراوية الديمقراطية}}<br/>{{small|{{tessen-lettyraghey|ar|al-Jumhūriyyah al-‘Arabiyyah aṣ-Ṣaḥrāwiyyah ad-Dīmuqrāṭiyyah}}}}
| es = {{lang|es|República Árabe Saharaui Democrática|italics=no}}
}}}}
|ennym_gienneydagh = Phobblaght Gheynlagh Arabagh y Sahara
|jalloo_brattagh = Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg
|jalloo_cleinney =
|jalloo_caslys = Edmund_WS.PNG
|fo-heidyl_caslys = Ta'n caslys shoh taishbyney yn thalloo ta fo aggyrt PGAS, viz. [[Yn Sahara Heear]] (daahit liorish striggyn). Ta'n chooid smoo jh'n thalloo shoh fo stiurey ny [[Yn Varoc|Maroc]]. She [[Cryss Seyr]] yn ennym ta currit er ny thallooyn ta fo stiurey PGAS, as t'ee daahit ayns buigh.
|jarroo-raa = {{lang|ar|حرية، ديمقراطية، وحدة}}
|jarroo-raa2 = {{lang|es|Libertad, Democracia, Unidad}}
|çhyndaa_jarroo-raa = Seyrsnys, Deynlaghys, Unnaneaght
|çhengey_jarroo-raa = Arabish
|çhengey_jarroo-raa2 = Spaainish
|arrane_ashoonagh = {{lang|ar|[[Yā Banī aṣ-Ṣaḥrāʾ|يا بني الصحراء]]}}
|tessen-lettyraghey_arrane_ashoonagh = Yā Banī aṣ-Ṣaḥrāʾ
|arrane_ashoonagh2 = ¡Oh, hijos del Sahara!
|çhyndaa_arrane_ashoonagh = O, Mec y Tahara!
|coadan_arrane_ashoonagh = Yabaniy es-sahara SADR anthem.mid
|çhengey_arrane_ashoonagh = Arabish
|çhengey_arrane_ashoonagh2 = Spaainish
|çhengaghyn_oikoil = {{hlist|[[Arabish]]<ref>{{cite web |last=SADR |title=Constitution of the SADR |url=http://www.rasd-state.ws/babtani.htm |language=es|access-date=10 Mee Houney 2020 |archive-url=https://web.archive.org/web/20071111161544/http://www.rasd-state.ws/babtani.htm |archive-date=11 Mee Houney 2007}}</ref>|[[Spaainish y Tahara|Spaainish]]{{efn|Ta'n Spaainish soilshit myr nah hengey oikoil y PGAT<ref name="sps">{{cite web |url=https://archive.spsrasd.info/ar/articles/2018/11/29/18612.html |title=الوفد الصحراوي سيحضر لقاء جنيف بإرادة صادقة للتقدم نحو الحل الذي يضمن حق الشعب الصحراوي في تقرير المصير والاستقلال |date=29 Mee Houney 2018 |website=[[Shirveish Chlouderys y Tahara]] |archive-url=https://web.archive.org/web/20231125125900/https://archive.spsrasd.info/ar/articles/2018/11/29/18612.html |archive-date=25 Mee Houney 2023 |lang=ar |url-status=live}}</ref><ref name="János Besenyő">{{cite book |author1=Besenyő |first=János |author-link=János Besenyő |title=Conflict and Peace in Western Sahara The Role of the UN's Peacekeeping Mission (MINURSO) |author2=R. Joseph Huddleston |author3=Yahia H. Zoubir |publisher=Taylor & Francis |year=2022 |isbn=978-10-0080733-2 |page=51}}</ref><ref name="Dawn Chatty">{{cite book|author=Dawn Chatty|title=Deterritorialized Youth Sahrawi and Afghan Refugees at the Margins of the Middle East|year=2010|publisher=Berghahn Books |isbn=978-1-84545-653-5|pages=114}}</ref><ref name="Elena Fiddian-Qasmiyeh">{{cite book|author=Elena Fiddian-Qasmiyeh|title=South-South Educational Migration, Humanitarianism and Development Views from the Caribbean, North Africa and the Middle East|year=2015|publisher=Routledge |isbn=978-1-135-07667-2|pages=48}}</ref><ref>{{cite conference |last1=Martos |first1=Isabel |title=Linguistic Policy in the Camps of Sahrawi Refugees |url=https://www.researchgate.net/publication/273993698 |conference=ECAS 2013, 5th European Conference on African Studies |date=2014 |publisher=Universidad de Alcalá |access-date=19 Luanistyn 2018 |archive-date=22 Boaldyn 2021 |archive-url=https://web.archive.org/web/20210522172107/https://www.researchgate.net/publication/273993698_Linguistic_Policy_in_the_Camps_of_Sahrawi_Refugees_2014 |url-status=live }}</ref>}}
}}
|sorçh_çhengaghyn = Çhengaghyn loayrit
|çhengaghyn = {{unbulleted list|
* [[Arabish Hassaniya]]
* [[Spaainish y Tahara]]<ref>{{cite web |url=http://cvc.cervantes.es/lengua/anuario/anuario_06-07/pdf/paises_3.pdf |title=El Español en los Campamentos de Refugiados Saharauis (Tinduf, yn Algear) |publisher=Cvc.cervantes.es |access-date=20 Boaldyn 2015 |archive-date=26 Mee ny Nollick 2016 |archive-url=https://web.archive.org/web/20161226150735/http://cvc.cervantes.es/lengua/anuario/anuario_06-07/pdf/paises_3.pdf |url-status=live }}</ref>
}}
|craueeaght = [[Yn Islam]] ([[craueeaght steat|oikoil]])
|preeu-valley = [[Laayoune]] (''de jure'')
|preeu-valley_ayns_eebyrtys = {{unbulleted list
| [[Camp kemmyrkee Rabouni|Rabuni]], [[Tindouf]] (''de facto'')
| [[Tifariti]] (''fogrit magh myr [[preeu-valley shallidagh]]'')
}}
|balley_smoo =
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] unnaneagh un-phartee<ref>{{cite web |date=1999-09-04 |title=Constitution of the SADR |url=https://www.arso.org/03-const.99.htm |website=arso.org |publisher=Association de soutien à un référendum libre et régulier au Sahara Occidental |access-date=2025-05-13|lang=es}}</ref><ref>{{cite web |last=SADR |title=Constitution of the SADR |url=http://www.rasd-state.ws/babtani.htm |language=ar|access-date=10 Mee Houney 2020 |archive-url=https://web.archive.org/web/20071111161544/http://www.rasd-state.ws/babtani.htm |archive-date=11 Mee Houney 2007}}</ref>
|sorçh_kiondeeaght = [[Pobblaght Gheynlagh Arabagh y Tahara#Shennaghys|Crooaght]]
|note_kiondeeaght =
|taghyrt_bunneeaght1 = [[Coardailyssyn Madrid|Lhiggit ass]] lesh y [[Yn Spaainey fo Franco|Spaainey]]
|date_bunneeaght1 = 14 Mee Houney 1975
|taghyrt_bunneeaght2 = Fogrey magh y phobblaght
|date_bunneeaght2 = 27 Toshiaght Arree 1976
|taghyrt_bunneeaght3 = Kionedeeaght fo arganeys lesh y [[Yn Varoc|Varoc]]
|date_bunneeaght3 = [[Streeu yn Tahara Heear|Foast ayn]]
|argid =[[Peseta Saharagh]] (''de jure'') ([[ISO 4217|EHP]])<br> {{Collapsible list
|framestyle=border:none; padding:0;
|titlestyle=font-weight:normal;
|title=''De facto''
|1=[[Dirham Marocagh]] ([[ISO 4217|MAD]]){{efn|Ayns ny [[Yn Sahara Heear fo cummaltys y Varoc|thallooyn fo cummaltys y Varoc]].}}
|2=[[Dinar Algearagh]] ([[ISO 4217|DZD]])
|3=[[Ouguiya Maritaanagh]] ([[ISO 4217|MRU]])
|4=[[Euro]] ([[ISO 4217|EUR]])}}
|traa_ynnydagh = [[Traa Mean Greenwich|GMT]]
|ashchur_utc = +00:00
|cctld = [[.eh]] tashtit
}}
Ta '''Pobblaght Gheynlagh Arabagh y Tahara''' ({{langx|ar|الجمهورية العربية الصحراوية الديمقراطية}}), ny '''PGAT''', ny çheer 'syn [[Yn Affrick|Affrick]] nagh vel enney currit urree. Ta reiltys ny çheerey sursmooinaghey dy vel [[Yn Sahara Heear|y Sahara Heear]] yn clane cooid jeh'n steat oc. Va'n PGAS fogrit magh liorish [[Polisario]] er 27 Toshiaght Arree 1976, as ta 20% jeh'n çheer fo nyn stiurey lesh yn ennym "[[Cryss Heyr]]". Ta'n ayrn elley jeh'n çheer fo stiurey reiltys y [[Yn Varoc|Varoc]].
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Tahara, Pobblaght Gheynlagh Arabagh}}
{{stub}}
[[Ronney:Pobblaght Gheynlagh Arabagh y Tahara| ]]
[[Ronney:Çheeraghyn yn Affrick Hwoaie]]
[[Ronney:Çheeraghyn Maghrebagh]]
[[Ronney:Çheeraghyn Saharagh]]
[[Ronney:Pobblaghtyn Arabagh]]
[[Ronney:Thallooyn arganeyssit yn Affrick]]
[[Ronney:Arganeyssyn thallooin y Varoc]]
[[Ronney:Reiltyssyn 'syn eebyrtys]]
[[Ronney:Eear-choloinyn Spaainagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Steatyn un-phartee]]
[[Ronney:Polisario]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1976]]
[[Ronney:Bunneeaghtyn 'sy Tahara Heear 'sy vlein 1976]]
[[Ronney:Çheer-oaylleeaght y Tahara Heear]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Steatyn as lieh-enney oc]]
s0tuzgozys52c3maqdx8e57ouy676d0
Yn Tomaalee
0
10902
394620
331921
2026-10-17T04:35:38Z
MacTire02
219
++
394620
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Tomaalee
|ennym_foddey_cadjincliaghtagh= {{lang|so|Jamhuuriyadda Soomaaliland|italics=no}} {{small|([[Somaalish]])}}<br />{{lang|ar|جمهورية أرض الصومال}} {{small|([[Arabish]])}}<br />{{small|{{tessen-lettyraghey|ar|Jumhūriyat Arḍ aṣ-Ṣūmāl}}}}
|ennym_gienneydagh = Ellan Wirrish
|jalloo_brattagh = Flag of Somaliland.svg
|jalloo_cleinney = Emblem of Somaliland.svg
|sorçh_cowrey = Cowrey
|jalloo_caslys = Somaliland (orthographic projection).svg
|fo-heidyl_caslys = {{Legend|#31672F|Thalloo fo stiurey}}<br />{{Legend|#47CA44|[[Steat Hiar Hwoaie yn Tomaal|Thalloo aggyrtit agh nagh vel fo stiurey]]}}
|jarroo-raa = {{lang|ar|لا إله إلا الله محمد رسول الله}}
|tessen-lettyraghey_jarroo-raa= {{tessen-lettyraghey|ar|Lā ilāhā illā-llāhu; muḥammadun rasūlu-llāh}}
|çhyndaa_jarroo-raa = [[Shahada|Cha nel Jee ayn agh Allah; she Mahommad Çhaghter Jee]]
|çhengey_jarroo-raa = Arabish
|arrane_ashoonagh = {{lang|so|[[Samo ku waar]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Beaghey ayns Shee Beayn
|coadan_arrane_ashoonagh = Samo ku waar - Anthem of Somaliland (Instrumental).ogg
|çhengey_arrane_ashoonagh = Somaalish
|çhengaghyn_oikoil = [[Somaalish]]
|sorçh_çhengaghyn = Nah hengey
|çhengaghyn = {{hlist|[[Arabic]]<ref name="Y0P0l">{{cite web|url=http://www.somalilandlaw.com/body_somaliland_constitution.htm|title=Somaliland Constitution|last=website|first=Somallilandlaw.com – an independent non-for-profit|website=www.somalilandlaw.com|access-date=2 Jerrey Souree 2017|archive-date=28 Boaldyn 2025|archive-url=https://web.archive.org/web/20250528203913/http://www.somalilandlaw.com/body_somaliland_constitution.htm|url-status=live}}</ref>|[[Baarle]]}}
|craueeaght = [[Yn Islam]] ([[craueeaght steat|oikoil]])
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] unnaneagh
|blein_LTS_CCK = 2006
|LTS_CCK = $16.0 billoon
|LTS_CCK_yn_dooinney = $13,703
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Yn Tomaal|Tomaal]]{{efn|Cha nel agh [[Israel]] cur enney oikoil da'n Tomaalee.<ref name="NYT">{{cite news |title = The Signs Say Somaliland, but the World Says Somalia |newspaper = The New York Times |date = 5 Mean Souree 2006 |url = https://www.nytimes.com/2006/06/05/world/africa/05somaliland.html |access-date = 2 Toshiaght Arree 2010 |first = Marc |last = Lacey |archive-date = 29 Averil 2025 |archive-url = https://web.archive.org/web/20250429003755/https://www.nytimes.com/2006/06/05/world/africa/05somaliland.html |url-status = live }}</ref>}}
|taghyrt_bunneeaght1 = [[Sultanaght Isaaq]]
|date_bunneeaght1 = 1750–1884
|taghyrt_bunneeaght2 = Bunneeaght y [[Yn Tomaalee Ghoaldagh|choadanys Goaldagh]]
|date_bunneeaght2 = 1884
|taghyrt_bunneeaght3 = [[Laa yn Neuchrogheydys (Steat y Tomaalee)|Neuchrogheydys]] [[Steat y Tomaalee]] veih'n [[Yn Reeriaght Unnaneysit|Reeriaght Unnaneysit]]
|date_bunneeaght3 = 26 Mean Souree 1960
|taghyrt_bunneeaght4 = Co-unnaneys rish [[Treisht-halloo yn Tomaalee]] myr y [[Pobblaght y Tomaal]]
|date_bunneeaght4 = 1 Jerrey Souree 1960
|taghyrt_bunneeaght5 = [[Caggey Neuchrogheydys y Tomaalee]]
|date_bunneeaght5 = 6 Averil 1981
|taghyrt_bunneeaght6 = [[Fogrey Neuchrogheydys y Tomaalee|Fogrey neuchrogheydys]]
|date_bunneeaght6 = 18 Boaldyn 1991
|traa_ynnydagh = [[Traa yn Affrick Hiar|EAT]]
|ashchur_utc = +03:00
|coad_çhellvane = 230
}}
She çheer lieh-ennit ayns [[Cayrn yn Affrick]] ee '''yn Tomaalee''' ny '''yn Çheer Homaalagh''' ({{langx|so|Soomaaliland}}, {{langx|ar|أرض الصومال}} ''Arḍ aṣ-Ṣūmāl'').
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneilys ynnydagh}}
{{DEFAULTSORT:Tomaalee, Yn}}
{{bun}}
{{Coord|9|45|N|45|58|E|display=title}}
[[Ronney:Yn Tomaalee| ]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Eear-choadanyssyn Goaldagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn Chayrn yn Affrick]]
[[Ronney:Scarreydys 'sy Tomaal]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1991]]
[[Ronney:Olteynyn Reagheydys ny h-Ashoonyn as Sleih gyn Tuarystallys]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1991]]
[[Ronney:Scarreydys 'syn Affrick]]
[[Ronney:Steatyn as lieh-enney oc]]
nk8769q3kg16tqhqmnch2areyy9820u
394621
394620
2026-10-17T04:36:00Z
MacTire02
219
Gaelg Arabic > Arabish
394621
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Tomaalee
|ennym_foddey_cadjincliaghtagh= {{lang|so|Jamhuuriyadda Soomaaliland|italics=no}} {{small|([[Somaalish]])}}<br />{{lang|ar|جمهورية أرض الصومال}} {{small|([[Arabish]])}}<br />{{small|{{tessen-lettyraghey|ar|Jumhūriyat Arḍ aṣ-Ṣūmāl}}}}
|ennym_gienneydagh = Ellan Wirrish
|jalloo_brattagh = Flag of Somaliland.svg
|jalloo_cleinney = Emblem of Somaliland.svg
|sorçh_cowrey = Cowrey
|jalloo_caslys = Somaliland (orthographic projection).svg
|fo-heidyl_caslys = {{Legend|#31672F|Thalloo fo stiurey}}<br />{{Legend|#47CA44|[[Steat Hiar Hwoaie yn Tomaal|Thalloo aggyrtit agh nagh vel fo stiurey]]}}
|jarroo-raa = {{lang|ar|لا إله إلا الله محمد رسول الله}}
|tessen-lettyraghey_jarroo-raa= {{tessen-lettyraghey|ar|Lā ilāhā illā-llāhu; muḥammadun rasūlu-llāh}}
|çhyndaa_jarroo-raa = [[Shahada|Cha nel Jee ayn agh Allah; she Mahommad Çhaghter Jee]]
|çhengey_jarroo-raa = Arabish
|arrane_ashoonagh = {{lang|so|[[Samo ku waar]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Beaghey ayns Shee Beayn
|coadan_arrane_ashoonagh = Samo ku waar - Anthem of Somaliland (Instrumental).ogg
|çhengey_arrane_ashoonagh = Somaalish
|çhengaghyn_oikoil = [[Somaalish]]
|sorçh_çhengaghyn = Nah hengey
|çhengaghyn = {{hlist|[[Arabish]]<ref name="Y0P0l">{{cite web|url=http://www.somalilandlaw.com/body_somaliland_constitution.htm|title=Somaliland Constitution|last=website|first=Somallilandlaw.com – an independent non-for-profit|website=www.somalilandlaw.com|access-date=2 Jerrey Souree 2017|archive-date=28 Boaldyn 2025|archive-url=https://web.archive.org/web/20250528203913/http://www.somalilandlaw.com/body_somaliland_constitution.htm|url-status=live}}</ref>|[[Baarle]]}}
|craueeaght = [[Yn Islam]] ([[craueeaght steat|oikoil]])
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] unnaneagh
|blein_LTS_CCK = 2006
|LTS_CCK = $16.0 billoon
|LTS_CCK_yn_dooinney = $13,703
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Yn Tomaal|Tomaal]]{{efn|Cha nel agh [[Israel]] cur enney oikoil da'n Tomaalee.<ref name="NYT">{{cite news |title = The Signs Say Somaliland, but the World Says Somalia |newspaper = The New York Times |date = 5 Mean Souree 2006 |url = https://www.nytimes.com/2006/06/05/world/africa/05somaliland.html |access-date = 2 Toshiaght Arree 2010 |first = Marc |last = Lacey |archive-date = 29 Averil 2025 |archive-url = https://web.archive.org/web/20250429003755/https://www.nytimes.com/2006/06/05/world/africa/05somaliland.html |url-status = live }}</ref>}}
|taghyrt_bunneeaght1 = [[Sultanaght Isaaq]]
|date_bunneeaght1 = 1750–1884
|taghyrt_bunneeaght2 = Bunneeaght y [[Yn Tomaalee Ghoaldagh|choadanys Goaldagh]]
|date_bunneeaght2 = 1884
|taghyrt_bunneeaght3 = [[Laa yn Neuchrogheydys (Steat y Tomaalee)|Neuchrogheydys]] [[Steat y Tomaalee]] veih'n [[Yn Reeriaght Unnaneysit|Reeriaght Unnaneysit]]
|date_bunneeaght3 = 26 Mean Souree 1960
|taghyrt_bunneeaght4 = Co-unnaneys rish [[Treisht-halloo yn Tomaalee]] myr y [[Pobblaght y Tomaal]]
|date_bunneeaght4 = 1 Jerrey Souree 1960
|taghyrt_bunneeaght5 = [[Caggey Neuchrogheydys y Tomaalee]]
|date_bunneeaght5 = 6 Averil 1981
|taghyrt_bunneeaght6 = [[Fogrey Neuchrogheydys y Tomaalee|Fogrey neuchrogheydys]]
|date_bunneeaght6 = 18 Boaldyn 1991
|traa_ynnydagh = [[Traa yn Affrick Hiar|EAT]]
|ashchur_utc = +03:00
|coad_çhellvane = 230
}}
She çheer lieh-ennit ayns [[Cayrn yn Affrick]] ee '''yn Tomaalee''' ny '''yn Çheer Homaalagh''' ({{langx|so|Soomaaliland}}, {{langx|ar|أرض الصومال}} ''Arḍ aṣ-Ṣūmāl'').
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneilys ynnydagh}}
{{DEFAULTSORT:Tomaalee, Yn}}
{{bun}}
{{Coord|9|45|N|45|58|E|display=title}}
[[Ronney:Yn Tomaalee| ]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Eear-choadanyssyn Goaldagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn Chayrn yn Affrick]]
[[Ronney:Scarreydys 'sy Tomaal]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1991]]
[[Ronney:Olteynyn Reagheydys ny h-Ashoonyn as Sleih gyn Tuarystallys]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1991]]
[[Ronney:Scarreydys 'syn Affrick]]
[[Ronney:Steatyn as lieh-enney oc]]
gfft66nrb6ic5hf6ofu6i3xcr1ho5iy
394622
394621
2026-10-17T04:36:57Z
MacTire02
219
clowan kiartit
394622
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Tomaalee
|ennym_foddey_cadjincliaghtagh= {{lang|so|Jamhuuriyadda Soomaaliland|italics=no}} {{small|([[Somaalish]])}}<br />{{lang|ar|جمهورية أرض الصومال}} {{small|([[Arabish]])}}<br />{{small|{{tessen-lettyraghey|ar|Jumhūriyat Arḍ aṣ-Ṣūmāl}}}}
|ennym_gienneydagh = Ellan Wirrish
|jalloo_brattagh = Flag of Somaliland.svg
|jalloo_cleinney = Emblem of Somaliland.svg
|sorçh_cowrey = Cowrey
|jalloo_caslys = Somaliland (orthographic projection).svg
|fo-heidyl_caslys = {{Legend|#31672F|Thalloo fo stiurey}}<br />{{Legend|#47CA44|[[Steat Hiar Hwoaie yn Tomaal|Thalloo aggyrtit agh nagh vel fo stiurey]]}}
|jarroo-raa = {{lang|ar|لا إله إلا الله محمد رسول الله}}
|tessen-lettyraghey_jarroo-raa= {{tessen-lettyraghey|ar|Lā ilāhā illā-llāhu; muḥammadun rasūlu-llāh}}
|çhyndaa_jarroo-raa = [[Shahada|Cha nel Jee ayn agh Allah; she Mahommad Çhaghter Jee]]
|çhengey_jarroo-raa = Arabish
|arrane_ashoonagh = {{lang|so|[[Samo ku waar]]|italics=no}}
|çhyndaa_arrane_ashoonagh = Beaghey ayns Shee Beayn
|coadan_arrane_ashoonagh = Samo ku waar - Anthem of Somaliland (Instrumental).ogg
|çhengey_arrane_ashoonagh = Somaalish
|çhengaghyn_oikoil = [[Somaalish]]
|sorçh_çhengaghyn = Nah hengey
|çhengaghyn = {{hlist|[[Arabish]]<ref name="Y0P0l">{{cite web|url=http://www.somalilandlaw.com/body_somaliland_constitution.htm|title=Somaliland Constitution|last=website|first=Somallilandlaw.com – an independent non-for-profit|website=www.somalilandlaw.com|access-date=2 Jerrey Souree 2017|archive-date=28 Boaldyn 2025|archive-url=https://web.archive.org/web/20250528203913/http://www.somalilandlaw.com/body_somaliland_constitution.htm|url-status=live}}</ref>|[[Baarle]]}}
|craueeaght = [[Yn Islam]] ([[craueeaght steat|oikoil]])
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] unnaneagh
|blein_LTS_CCK = 2006
|LTS_CCK = $16.0 billoon
|LTS_CCK_yn_dooinney = $13,703
|sorçh_kiondeeaght = Neuchrogheydys
|note_kiondeeaght = veih'n [[Yn Tomaal|Tomaal]]{{efn|Cha nel agh [[Israel]] cur enney oikoil da'n Tomaalee.<ref name="NYT">{{cite news |title = The Signs Say Somaliland, but the World Says Somalia |newspaper = The New York Times |date = 5 Mean Souree 2006 |url = https://www.nytimes.com/2006/06/05/world/africa/05somaliland.html |access-date = 2 Toshiaght Arree 2010 |first = Marc |last = Lacey |archive-date = 29 Averil 2025 |archive-url = https://web.archive.org/web/20250429003755/https://www.nytimes.com/2006/06/05/world/africa/05somaliland.html |url-status = live }}</ref>}}
|taghyrt_bunneeaght1 = [[Sultanaght Isaaq]]
|date_bunneeaght1 = 1750–1884
|taghyrt_bunneeaght2 = Bunneeaght y [[Yn Tomaalee Ghoaldagh|choadanys Goaldagh]]
|date_bunneeaght2 = 1884
|taghyrt_bunneeaght3 = [[Laa yn Neuchrogheydys (Steat y Tomaalee)|Neuchrogheydys]] [[Steat y Tomaalee]] veih'n [[Yn Reeriaght Unnaneysit|Reeriaght Unnaneysit]]
|date_bunneeaght3 = 26 Mean Souree 1960
|taghyrt_bunneeaght4 = Co-unnaneys rish [[Treisht-halloo yn Tomaalee]] myr y [[Pobblaght y Tomaal]]
|date_bunneeaght4 = 1 Jerrey Souree 1960
|taghyrt_bunneeaght5 = [[Caggey Neuchrogheydys y Tomaalee]]
|date_bunneeaght5 = 6 Averil 1981
|taghyrt_bunneeaght6 = [[Fogrey Neuchrogheydys y Tomaalee|Fogrey neuchrogheydys]]
|date_bunneeaght6 = 18 Boaldyn 1991
|traa_ynnydagh = [[Traa yn Affrick Hiar|EAT]]
|ashchur_utc = +03:00
|coad_çhellvane = 230
}}
She çheer lieh-ennit ayns [[Cayrn yn Affrick]] ee '''yn Tomaalee''' ny '''yn Çheer Homaalagh''' ({{langx|so|Soomaaliland}}, {{langx|ar|أرض الصومال}} ''Arḍ aṣ-Ṣūmāl'').
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Tomaalee, Yn}}
{{bun}}
{{Coord|9|45|N|45|58|E|display=title}}
[[Ronney:Yn Tomaalee| ]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Eear-choadanyssyn Goaldagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Çheeraghyn Chayrn yn Affrick]]
[[Ronney:Scarreydys 'sy Tomaal]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1991]]
[[Ronney:Olteynyn Reagheydys ny h-Ashoonyn as Sleih gyn Tuarystallys]]
[[Ronney:Bunneeaghtyn 'syn Affrick 'sy vlein 1991]]
[[Ronney:Scarreydys 'syn Affrick]]
[[Ronney:Steatyn as lieh-enney oc]]
5bvyjwjghl4oatufh81794cmf9bz5gx
Forse
0
11978
394637
296773
2026-10-17T06:35:35Z
MacTire02
219
gaelg
394637
wikitext
text/x-wiki
[[Coadan:Force_examples.svg|right|300 px|thumb|Dy cadjin, t'ad soilshaghey forseyn myr seiy ny tayrn. Foddee ad gobbraghey liorish [[trimmid]], [[magnaidys]] as [[phenomenon|phenomena]] elley ta cur er nhee siyraghey.]]
She parameadar vaghtooragh eh '''forse''', as ta paart mooar echey ayns [[obbrinaght chlassicagh]]. Foddee eh [[bieauaghey]] ny [[aachummey]] nheeghyn, as trooid eiyrtys 'orse, foddee oo jannoo [[obbyr (fishag)|obbyr]] ny caghlaa [[bree]] nhee ennagh. Ta [[mooadys (maddaght)|mooadys]] as [[troa (maddaght)|troa]] ec forse, as myr shen, she [[vaghtoor]] t'ayn.
Ta [[leighyn gleashaght Newton]] meenaghey forse myr cormid caghlaa momentum nhee ennagh, dy ghraa myr shen:
:<math>~ F = m.a </math>
raad ta:<br />
'''F''' çheet er Forse (N)<br />
'''m''' çheet er [[Glout]] (Kg)<br />
'''a''' çheet er [[bieauaghey]]
Ren ny shenn [[fallsoonys|'allsoonee]] ymmyd jeh'n eie dy row forse ayn er son studeyrys er nheeghyn [[obbrinaght staddagh|staddagh]] as [[dynamickyn|gleashagh]]. Ren [[Aristotle]] ymmyd yn eie shen y veenaghey, agh va'n eie echey goaill stiagh far-hoiggalyn bunneydagh v'ayn foast rish ymmodee keeadyn. Haink [[Archimedes]] dy hoiggal eh ny share liorish cooilleeiney [[jeshaght bunneydagh|jeshaghtyn bunneydagh]], agh ec y traa shen, shimmey peiagh va credjue eieyn Aristotle foast.<ref name="Archimedes">{{enmyseddyrvoggyl
| screeudeyr = T.L. Heath
| kiangley = http://www.archive.org/details/worksofarchimede029517mbp
| ennym = ''The Works of Archimedes'' (1897). The unabridged work in PDF form (19 MB)
| soilsheyder = [[Archive.org]]
| datefeddyn = 2007-10-14
| çhengey = Baarle
}}</ref> Rish toshiaght [[Lhing ny Soilsheyraght]], chiartee [[Isaac Newton]] ny far-hoiggalyn shoh lesh fys maddaghtoil va cummal magh rish tree keeadyn, faggys.<ref name=uniphysics_ch2>{{enmyslioar
| ennym = University Physics
| screeudeyr = Sears
| coscreeudeyryn = Young & Zemansky
| duillag = 18–38
| çhengey = Baarle
}}</ref> Leah 'sy 19oo eash, doshil [[Einstein]] sheiltynys ny [[conastaght er lheh]] er son dy 'aaishnaghey dy kiart cre'n aght vees forseyn ardjaghey dy [[easponaantagh]]<!-- fys aym nagh vel y fockle shoh ayn, agh cha s'aym cre vees share! shen rere Yernish ''easpónantúil'' --> tra ta breneen çheet tayrn er-gerrey da [[bieauid hollys]].
== Imraaghyn ==
{{rolleyimraaghyn}}
{{bun}}
<!--
With modern insights into [[quantum mechanics]] and technology that can accelerate particles close to the speed of light, [[particle physics]] has devised a [[Standard Model]] to describe forces between particles smaller than atoms. The [[Standard Model]] predicts that exchange particles called [[gauge boson]]s are the fundamental means by which forces are emitted and absorbed. Only four main interactions are known: in order of decreasing strength, they are: [[strong force|strong]], [[electromagnetic force|electromagnetic]], [[weak force|weak]], and [[gravitational force|gravitational]].<ref name="texts" /> [[High energy physics|High-energy particle physics]] [[observation]]s made during the 1970s and 1980s confirmed that the weak and electromagnetic forces are expressions of a more fundamental [[electroweak]] interaction.<ref name="final theory" />
== Pre-Newtonian concepts ==
[[Image:Aristoteles Louvre2.jpg|thumb|150 px|right|[[Aristotle]] famously described a force as anything which causes an object to undergo "unnatural motion"]]
Since antiquity, the concept of force has been recognized as integral to the functioning of each of the [[simple machine]]s. The [[mechanical advantage]] given by a simple machine allowed for less force to be used in exchange for that force acting over a greater distance. Analysis of the characteristics of forces ultimately culminated in the work of [[Archimedes]] who was especially famous for formulating a treatment of [[buoyant force]]s inherent in [[fluid]]s.<ref name="Archimedes" />
[[Aristotle]] provided a [[philosophy|philosophical]] discussion of the concept of a force as an integral part of [[Physics (Aristotle)|Aristotelian cosmology]]. In Aristotle's view, the [[nature|natural world]] held [[Classical element|four elements]] that existed in "natural states". Aristotle believed that it was the natural state of objects with mass on [[Earth]], such as the elements water and earth, to be motionless on the ground and that they tended towards that state if left alone. He distinguished between the innate tendency of objects to find their "natural place" (e.g., for heavy bodies to fall), which led to "natural motion", and unnatural or forced motion, which required continued application of a force.<ref>Land, Helen ''The Order of Nature in Aristotle's Physics: Place and the Elements'' (1998)</ref> This theory, based on the everyday experience of how objects move, such as the constant application of a force needed to keep a cart moving, had conceptual trouble accounting for the behavior of [[projectile]]s, such as the flight of arrows. The place where forces were applied to projectiles was only at the start of the flight, and while the projectile sailed through the air, no discernible force acts on it. Aristotle was aware of this problem and proposed that the air displaced through the projectile's path provided the needed force to continue the projectile moving. This explanation demands that air is needed for projectiles and that, for example, in a [[vacuum]], no projectile would move after the initial push. Additional problems with the explanation include the fact that [[air resistance|air resists]] the motion of the projectiles.<ref name="Hetherington">{{cite book|first = Norriss S.|last = Hetherington|title=Cosmology: Historical, Literary, Philosophical, Religious, and Scientific Perspectives|page=100|publisher=Garland Reference Library of the Humanities|date=1993|isbn=0815310854}}</ref>
These shortcomings would not be fully explained and corrected until the seventeenth century work of [[Galileo Galilei]], who was influenced by the late medieval idea that objects in forced motion carried an innate force of [[impetus theory|impetus]]. Galileo constructed an experiment in which stones and cannonballs were both rolled down an incline to disprove the [[Aristotelian theory of gravity|Aristotelian theory of motion]] early in the seventeenth century. He showed that the bodies were accelerated by gravity to an extent which was independent of their mass and argued that objects retain their [[velocity]] unless acted on by a force, for example [[friction]].<ref name="Galileo">Drake, Stillman (1978). Galileo At Work. Chicago: University of Chicago Press. ISBN 0-226-16226-5</ref>
==Newtonian mechanics==
{{main|Newton's laws of motion}}
Sir Isaac Newton sought to describe the motion of all objects using the concepts of [[inertia]] and force, and in doing so, he found that they obey certain [[conservation laws]]. In 1687, Newton went on to publish his thesis ''[[Philosophiae Naturalis Principia Mathematica]]''.<ref name=uniphysics_ch2/><ref name="Principia">{{Cite book
| last = Newton
| first = Isaac
| author-link = Isaac Newton
| title = The Principia Mathematical Principles of Natural Philosophy
| publisher = University of California Press | year = 1999 | location = Berkeley
| isbn = 0-520-08817-4}} This is a recent translation into English by I. Bernard Cohen and Anne Whitman, with help from Julia Budenz.</ref> In this work, Newton set out three laws of motion that to this day are the way forces are described in physics.<ref name="Principia" />
===Newton's first law===
{{main|Newton's laws of motion#Newton's first law}}
Newton's first law of motion states that objects continue to move in a state of constant velocity unless acted upon by an external [[net force]] or ''resultant force''.<ref name="Principia" /> This law is an extension of Galileo's insight that constant velocity was associated with a lack of net force (see [[#Dynamical equilibrium|a more detailed description of this below]]). Newton proposed that every object with mass has an innate [[inertia]] that functions as the fundamental equilibrium "natural state" in place of the Aristotelian idea of the "natural state of rest". That is, the first law contradicts the intuitive Aristotelian belief that a net force is required to keep an object moving with constant velocity. By making ''rest'' physically indistinguishable from ''non-zero constant velocity'', Newton's first law directly connects inertia with the concept of [[Galilean relativity|relative velocities]]. Specifically, in systems where objects are moving with different velocities, it is impossible to determine which object is "in motion" and which object is "at rest". In other words, to phrase matters more technically, the laws of physics are the same in every [[inertial frame of reference]], that is, in all frames related by a [[Galilean transformation]].
For example, while traveling in a moving vehicle at a [[wiktionary:Constant|constant]] [[velocity]], the laws of physics do not change from being at rest. A person can throw a ball straight up in the air and catch it as it falls down without worrying about applying a force in the direction the vehicle is moving. This is true even though another person who is observing the moving vehicle pass by also observes the ball follow a curving [[parabola|parabolic path]] in the same direction as the motion of the vehicle. It is the inertia of the ball associated with its constant velocity in the direction of the vehicle's motion that ensures the ball continues to move forward even as it is thrown up and falls back down. From the perspective of the person in the car, the vehicle and every thing inside of it is at rest: It is the outside world that is moving with a constant speed in the opposite direction. Since there is no experiment that can distinguish whether it is the vehicle that is at rest or the outside world that is at rest, the two situations are considered to be [[Galilean equivalence|physically indistinguishable]]. Inertia therefore applies equally well to constant velocity motion as it does to rest.
The concept of inertia can be further generalized to explain the tendency of objects to continue in many different forms of constant motion, even those that are not strictly constant velocity. The [[rotational inertia]] of planet Earth is what fixes the constancy of the length of a [[day]] and the length of a [[year]]. Albert Einstein extended the principle of inertia further when he explained that reference frames subject to constant acceleration, such as those free-falling toward a gravitating object, were physically equivalent to inertial reference frames. This is why, for example, astronauts experience [[weightlessness]] when in free-fall orbit around the Earth, and why Newton's Laws of Motion are more easily discernible in such environments. If an astronaut places an object with mass in mid-air next to herself, it will remain stationary with respect to the astronaut due to its inertia. This is the same thing that would occur if the astronaut and the object were in intergalactic space with no net force of gravity acting on their shared reference frame. This [[principle of equivalence]] was one of the foundational underpinnings for the development of the [[general theory of relativity]].<ref>{{cite web|first= Robert|last=DiSalle|url=http://plato.stanford.edu/entries/spacetime-iframes/|accessdate=2008-03-24|title=Space and Time: Inertial Frames|date=2002-03-30|work=[[Stanford Encyclopedia of Philosophy]]}}</ref>
[[Image:GodfreyKneller-IsaacNewton-1689.jpg|right|150 px|thumb| Though [[Sir Isaac Newton]]'s most famous equation is
<math>\scriptstyle{\vec{F}=m\vec{a}}</math>, he actually wrote down a different form for his second law of motion that did not use [[differential calculus]].]]
===Newton's second law===
{{main|Newton's laws of motion#Newton's second law}}
A modern statement of Newton's second law is a vector [[differential equation]]:<ref>Newton's ''Principia Mathematica'' actually used a finite difference version of this equation based upon ''impulse''. See [[Newton%27s_laws_of_motion#Impulse|''Impulse'']].</ref>
:<math>\vec{F} = \frac{\mathrm{d}\vec{p}}{\mathrm{d}t},</math>
where <math>\scriptstyle \vec{p}</math> is the [[momentum]] of the system, and <math>\scriptstyle \vec{F}</math> is the net ([[Vector (geometric)#Vector addition and subtraction|vector sum]]) force. In equilibrium, there is zero ''net'' force by definition, but (balanced) forces may be present nevertheless. In contrast, the second law states an ''unbalanced'' force acting on an object will result in the object's momentum changing over time.<ref name="Principia" />
By the definition of [[Momentum#Linear_momentum_of_a_particle|momentum]],
:<math>\vec{F} = \frac{\mathrm{d}\vec{p}}{\mathrm{d}t} = \frac{\mathrm{d}\left(m\vec{v}\right)}{\mathrm{d}t},</math>
where ''m'' is the [[mass]] and <math>\scriptstyle \vec{v}</math> is the [[velocity]].
The [[product rule]] shows that
:<math>\vec{F} = m\frac{\mathrm{d}\vec{v}}{\mathrm{d}t} + \vec{v}\frac{\mathrm{d}m}{\mathrm{d}t}</math>.
For [[Newton's_laws_of_motion#Open_systems|closed systems]] (systems of constant total mass), the time derivative of mass is zero and the equation becomes
:<math>\vec{F} = m\frac{\mathrm{d}\vec{v}}{\mathrm{d}t}</math>.
By substituting the definition of [[acceleration]], the algebraic version of this common simplification of [[Newton's second law]] is derived:
<br>
:<math>\vec{F} =m\vec{a}.</math>
It is sometimes called the "second most famous formula in physics".<ref>For example, by Rob Knop PhD in his Galactic Interactions [[blog]] on February 26, 2007 at 9:29 a.m. [http://scienceblogs.com/interactions/2007/02/the_greatest_mystery_in_all_of.php]</ref> Newton never explicitly stated the formula in the reduced form above.
Newton's second law asserts the proportionality of acceleration and mass to force. Accelerations can be defined through [[kinematics|kinematic]] measurements. However, while kinematics are well-described through [[frame of reference|reference frame]] analysis in advanced physics, there are still deep questions that remain as to what is the proper definition of mass. [[General relativity]] offers an equivalence between [[space-time]] and mass, but lacking a coherent theory of [[quantum gravity]], it is unclear as to how or whether this connection is relevant on microscales. With some justification, Newton's second law can be taken as a quantitative definition of ''mass'' by writing the law as an equality; the relative units of force and mass then are fixed.
The use of Newton's second law as a <em>definition</em> of force has been disparaged in some of the more rigorous textbooks,<ref name="texts" /><ref>One exception to this rule is:
{{Cite book | last = Landau | first = L. D. | author-link = Lev Landau
| last2 = Akhiezer | first2 = A. I.
|last3 = Lifshitz |first3 = A. M. |author3-link = Evgeny Lifshitz
| title = General Physics; mechanics and molecular physics
| place=Oxford | publisher = Pergamon Press | year = 1967 | location = Oxford
| edition = First English | isbn = 0080033040 }}
Translated by: J. B. Sykes, A. D. Petford, and C. L. Petford. Library of Congress Catalog Number 67-30260. In section 7, pages 12–14, this book defines force as ''dp/dt''.</ref>
because it is essentially a mathematical [[truism]]. The equality between the abstract idea of a "force" and the abstract idea of a "changing momentum vector" ultimately has no observational significance because one cannot be defined without simultaneously defining the other. What a "force" or "changing momentum" is must either be referred to an intuitive understanding of our direct perception, or be defined implicitly through a set of self-consistent mathematical formulas. Notable physicists, philosophers and mathematicians who have sought a more explicit definition of the concept of "force" include [[Ernst Mach]], [[Clifford Truesdell]] and [[Walter Noll]].<ref>e.g. W. Noll, “On the Concept of Force”, in part B of [http://www.math.cmu.edu/~wn0g/noll Walter Noll's website.].</ref>
Newton's second law can be used to measure the strength of forces. For instance, knowledge of the masses of [[planet]]s along with the accelerations of their [[orbit]]s allows scientists to calculate the gravitational forces on planets.
===Newton's third law===
{{main|Newton's laws of motion#Newton's third law: law of reciprocal actions}}
Newton's third law is a result of applying [[symmetry]] to situations where forces can be attributed to the presence of different objects. For any two objects (call them 1 and 2), Newton's third law states that any force that is applied to object 1 due to the action of object 2 is automatically accompanied by a force applied to object 2 due to the action of object 1<ref>{{cite web |last=Henderson |first=Tom |title=Lesson 4: Newton's Third Law of Motion |work=The Physics Classroom |date=1996-2007 |url=http://www.glenbrook.k12.il.us/gbssci/phys/Class/newtlaws/u2l4a.html |accessdate=2008-01-04}}</ref>
:<math>\vec{F}_{1,2}=-\vec{F}_{2,1}.</math>
This law implies that forces always occur in action-and-reaction pairs.<ref name="Principia" /> If object 1 and object 2 are considered to be in the same system, then the net force on the system due to the interactions between objects 1 and 2 is zero since
:<math>\vec{F}_{1,2}+\vec{F}_{\mathrm{2,1}}=0</math>
:<math>\vec{F}_{net}=0.</math>
This means that in a [[closed system]] of particles, there are no [[internal force]]s that are unbalanced. That is, action-and-reaction pairs of forces shared between any two objects in a closed system will not cause the [[center of mass]] of the system to accelerate. The constituent objects only accelerate with respect to each other, the system itself remains unaccelerated. Alternatively, if an [[external force]] acts on the system, then the center of mass will experience an acceleration proportional to the magnitude of the external force divided by the mass of the system.<ref name="texts" />
Combining Newton's second and third laws, it is possible to show that the [[momentum#conservation of linear momentum|linear momentum of a system is conserved]]. Using
:<math>\vec{F}_{1,2} = \frac{\mathrm{d}\vec{p}_{1,2}}{\mathrm{d}t} = -\vec{F}_{2,1} = -\frac{\mathrm{d}\vec{p}_{2,1}}{\mathrm{d}t}</math>
and [[integral|integrating]] with respect to time, the equation:
:<math>\Delta{\vec{p}_{1,2}} = - \Delta{\vec{p}_{2,1}}</math>
is obtained. For a system which includes objects 1 and 2,
:<math>\sum{\Delta{\vec{p}}}=\Delta{\vec{p}_{1,2}} + \Delta{\vec{p}_{2,1}} = 0</math>
which is the conservation of linear momentum.<ref>{{cite web |last=Dr. Nikitin |title=Dynamics of translational motion |date=2007 |url=http://physics-help.info/physicsguide/mechanics/translational_dynamics.shtml |accessdate=2008-01-04 }}</ref> Using the similar arguments, it is possible to generalizing this to a system of an arbitrary number of particles. This shows that exchanging momentum between constituent objects will not affect the net momentum of a system. In general, as long as all forces are due to the interaction of objects with mass, it is possible to define a system such that net momentum is never lost nor gained.<ref name="texts" />
==Descriptions==
[[Image:Freebodydiagram3 pn.svg|thumb|right|270 px|[[Free-body diagram]]s of an object on a flat surface and an [[inclined plane]]. Forces are resolved and added together to determine their magnitudes and the resultant.]]
Since forces are perceived as pushes or pulls, this can provide an intuitive understanding for describing forces.<ref name=uniphysics_ch2/> As with other physical concepts (e.g. [[temperature]]), the intuitive understanding of forces is quantified using precise [[operational definition]]s that are consistent with direct [[sensory perception|observations]] and [[measurement|compared to a standard measurement scale]]. Through experimentation, it is determined that laboratory measurements of forces are fully consistent with the [[conceptual definition]] of force offered by [[#Newtonian mechanics|Newtonian mechanics]].
Forces act in a particular [[direction (geometry)|direction]] and have [[Magnitude (mathematics)|sizes]] dependent upon how strong the push or pull is. Because of these characteristics, forces are classified as "[[Euclidean vector|vector quantities]]". This means that forces follow a different set of mathematical rules than physical quantities that do not have direction (denoted [[scalar (physics)|scalar]] quantities). For example, when determining what happens when two forces act on the same object, it is necessary to know both the magnitude and the direction of both forces to calculate the [[resultant|result]]. If both of these pieces of information are not known for each force, the situation is ambiguous. For example, if you know that two people are pulling on the same rope with known magnitudes of force but you do not know which direction either person is pulling, it is impossible to determine what the acceleration of the rope will be. The two people could be pulling against each other as in [[tug of war]] or the two people could be pulling in the same direction. In this simple [[one-dimensional]] example, without knowing the direction of the forces it is impossible to decide whether the net force is the result of adding the two force magnitudes or subtracting one from the other. Associating forces with vectors avoids such problems.
Historically, forces were first quantitatively investigated in conditions of [[static equilibrium]] where several forces canceled each other out. Such experiments demonstrate the crucial properties that forces are additive [[Vector (geometric)|vector quantities]]: they have [[magnitude (mathematics)|magnitude]] and direction.<ref name=uniphysics_ch2/> When two forces act on an object, the resulting force, the ''resultant'', can be determined by following the [[parallelogram rule]] of [[Vector sum|vector addition]]: the addition of two vectors represented by sides of a parallelogram, gives an equivalent resultant vector which is equal in magnitude and direction to the transversal of the parallelogram.<ref name="texts" />. The magnitude of the resultant varies from the difference of the magnitudes of the two forces to their sum, depending on the angle between their lines of action.
[[Free-body diagram]]s can be used as a convenient way to keep track of forces acting on a system. Ideally, these diagrams are drawn with the angles and relative magnitudes of the force vectors preserved so that [[Vector (geometric)|graphical vector addition]] can be done to determine the resultant.<ref>{{cite web
| title =Introduction to Free Body Diagrams
| work =Physics Tutorial Menu
| publisher =[[University of Guelph]]
| url =http://eta.physics.uoguelph.ca/tutorials/fbd/intro.html
| accessdate =2008-01-02}}</ref>
As well as being added, forces can also be resolved into independent components at [[right angle]]s to each other. A horizontal force pointing northeast can therefore be split into two forces, one pointing north, and one pointing east. Summing these component forces using vector addition yields the original force. Resolving force vectors into components of a set of [[basis vector]]s is often a more mathematically clean way to describe forces than using magnitudes and directions.<ref>{{cite web
| first = Tom
| last = Henderson
| title =The Physics Classroom
| work =The Physics Classroom and Mathsoft Engineering & Education, Inc.
| date =2004
| url =http://www.glenbrook.k12.il.us/GBSSCI/PHYS/Class/vectors/u3l1b.html
| accessdate = 2008-01-02 }}</ref> This is because, for [[orthogonal]] components, the components of the vector sum are uniquely determined by the scalar addition of the components of the individual vectors. Orthogonal components are independent of each other because forces acting at ninety degrees to each other have no effect on the magnitude or direction of the other. Choosing a set of orthogonal basis vectors is often done by considering what set of basis vectors will make the mathematics most convenient. Choosing a basis vector that is in the same direction as one of the forces is desirable, since that force would then have only one non-zero component. Orthogonal force vectors can be three-dimensional with the third component being at right-angles to the other two.<ref name="texts" />
===Equilibria===
[[Mechanical equilibrium|Equilibrium]] occurs when the resultant force acting on a point particle is zero (that is, the vector sum of all forces is zero). When dealing with an extense body, it is also necessary that the net torque in it is 0.
There are two kinds of equilibrium: [[static equilibrium]] and [[dynamic equilibrium]].
====Static equilibrium====
{{main|statics}}
Static equilibrium was understood well before the invention of classical mechanics. Objects which are at rest have zero net force acting on them.<ref>{{cite web
| title =Static Equilibrium
| work =Physics Static Equilibrium (forces and torques)
| publisher = [[University of the Virgin Islands]]
| url =http://www.uvi.edu/Physics/SCI3xxWeb/Structure/StaticEq.html
| accessdate = 2008-01-02 }}</ref>
The simplest case of static equilibrium occurs when two forces are equal in magnitude but opposite in direction. For example, an object on a level surface is pulled (attracted) downward toward the center of the Earth by the force of gravity. At the same time, surface forces resist the downward force with equal upward force (called the [[normal force]]). The situation is one of zero net force and no acceleration.<ref name=uniphysics_ch2/>
Pushing against an object on a frictional surface can result in a situation where the object does not move because the applied force is opposed by [[static friction]], generated between the object and the table surface. For a situation with no movement, the static friction force ''exactly'' balances the applied force resulting in no acceleration. The static friction increases or decreases in response to the applied force up to an upper limit determined by the characteristics of the contact between the surface and the object.<ref name=uniphysics_ch2/>
A static equilibrium between two forces is the most usual way of measuring forces, using simple devices such as [[weighing scale]]s and [[spring balance]]s. For example, an object suspended on a vertical [[spring scale]] experiences the force of gravity acting on the object balanced by a force applied by the "spring reaction force" which equals object's weight. Using such tools, some quantitative force laws were discovered: that the force of gravity is proportional to volume for objects of constant [[density]] (widely exploited for millennia to define standard weights); [[Archimedes' principle]] for buoyancy; Archimedes' analysis of the [[lever]]; [[Boyle's law]] for gas pressure; and [[Hooke's law]] for springs. These were all formulated and experimentally verified before Isaac Newton expounded his [[Newton's laws of motion|three laws of motion]].<ref name="texts" /><ref name=uniphysics_ch2/>
====Dynamical equilibrium====
{{main|Dynamics (physics)}}
[[Image:Galileo.arp.300pix.jpg|thumb|150 px|[[Galileo Galilei]] was the first to point out the inherent contradictions contained in Aristotle's description of forces.]]
Dynamical equilibrium was first described by [[Galileo]] who noticed that certain assumptions of Aristotelian physics were contradicted by observations and [[logic]]. Galileo realized that [[Galilean relativity|simple velocity addition]] demands that the concept of an "absolute [[rest frame]]" did not exist. Galileo concluded that motion in a constant [[velocity]] was completely equivalent to rest. This was contrary to Aristotle's notion of a "natural state" of rest that objects with mass naturally approached. Simple experiments showed that Galileo's understanding of the equivalence of constant velocity and rest to be correct. For example, if a mariner dropped a cannonball from the crow's nest of a ship moving at a constant velocity, Aristotelian physics would have the cannonball fall straight down while the ship moved beneath it. Thus, in an Aristotelian universe, the falling cannonball would land behind the foot of the mast of a moving ship. However, when this experiment is actually conducted, the cannonball always falls at the foot of the mast, as if the cannonball knows to travel with the ship despite being separated from it. Since there is no forward horizontal force being applied on the cannonball as it falls, the only conclusion left is that the cannonball continues to move with the same velocity as the boat as it falls. Thus, no force is required to keep the cannonball moving at the constant forward velocity.<ref name="Galileo" />
Moreover, any object traveling at a constant velocity must be subject to zero net force (resultant force). This is the definition of dynamical equilibrium: when all the forces on an object balance but it still moves at a constant velocity.
A simple case of dynamical equilibrium occurs in constant velocity motion across a surface with [[kinetic friction]]. In such a situation, a force is applied in the direction of motion while the kinetic friction force exactly opposes the applied force. This results in a net zero force, but since the object started with a non-zero velocity, it continues to move with a non-zero velocity. Aristotle misinterpreted this motion as being caused by the applied force. However, when kinetic friction is taken into consideration it is clear that there is no net force causing constant velocity motion.<ref name="texts" />
=== Special relativity===
In the [[special theory of relativity]] mass and [[energy]] are equivalent (as can be seen by calculating the work required to accelerate an object). When an object's velocity increases so does its energy and hence its mass equivalent (inertia). It thus requires more force to accelerate it the same amount than it did at a lower velocity. Newton's second law
:<math>\vec{F} = \mathrm{d}\vec{p}/\mathrm{d}t </math>
remains valid due to the fact that it is a mathematical definition.<ref name="Cutnell_p855-876">{{cite book| last =Cutnell| title =Physics, Sixth Edition| pages =855–876| isbn =047123124X| author =Cutnell,| publisher =John Wiley & Sons Inc}}</ref> But in order to be conserved, relativistic momentum must be redefined as:
:<math> \vec{p} = \frac{m\vec{v}}{\sqrt{1 - v^2/c^2}}</math>
where
:<math>v</math> is the velocity and
:<math>c</math> is the [[speed of light]].
The relativistic expression relating force and acceleration for a particle with constant non-zero [[rest mass]] <math>m\,</math> moving in the <math>x\,</math> direction is:
:<math>F_x = \gamma^3 m a_x \,</math>
:<math>F_y = \gamma m a_y \,</math>
:<math>F_z = \gamma m a_z \,</math>
where the [[Lorentz factor]]
:<math> \gamma = \frac{1}{\sqrt{1 - v^2/c^2}}.</math><ref>{{cite web
| title =Seminar: Visualizing Special Relativity
| work =THE RELATIVISTIC RAYTRACER
| url =http://www.anu.edu.au/Physics/Searle/Obsolete/Seminar.html
| accessdate = 2008-01-04}}</ref>
Relativistic force does not produce a constant acceleration, but an ever decreasing acceleration as the object approaches the speed of light. Note that <math> \gamma</math> is [[Division by zero|undefined]] for an object with a non zero [[Invariant mass|rest mass]] at the speed of light, and the theory yields no prediction at that speed.
One can however restore the form of
:<math>F^\mu = mA^\mu \,</math>
for use in relativity through the use of [[four-vectors]]. This relation is correct in relativity when <math>F^\mu</math> is the [[four-force]], m is the [[invariant mass]], and <math>A^\mu</math> is the [[four-acceleration]].<ref>{{cite web
| first =John B.
| last= Wilson
| title =Four-Vectors (4-Vectors) of Special Relativity: A Study of Elegant Physics
| work = The Science Realm: John's Virtual Sci-Tech Universe
| url =http://SciRealm.com/4Vectors.html
| accessdate = 2008-01-04}}</ref>
===Feynman diagrams===
{{main|Feynman diagrams}}
[[Image:Beta Negative Decay.svg|250px|thumb|right|A Feynman diagram for the decay of a neutron into a proton. The [[W boson]] is between two vertices indicating a repulsion.]]
In modern [[particle physics]], forces and the acceleration of particles are explained as the exchange of momentum-carrying [[gauge boson]]s.
With the development of [[quantum field theory]] and [[general relativity]], it was realized that "force" is a redundant concept arising from [[conservation of momentum]] ([[4-momentum]] in relativity and momentum of [[virtual particle]]s in [[quantum electrodynamics]]). The conservation of momentum, from [[Noether's theorem]], can be directly derived from the [[Symmetry in physics|symmetry]] of [[space]] and so is usually considered more fundamental than the concept of a force. Thus the currently known [[fundamental forces]] are considered more accurately to be "[[fundamental interactions]]".<ref name="final theory">Weinberg, S. (1994). Dreams of a Final Theory. Vintage Books USA. ISBN 0-679-74408-8</ref> When particle A emits (creates) or absorbs (annihilates) particle B, a force accelerates particle A in response to the momentum of particle B, thereby conserving momentum as a whole. This description applies for all forces arising from fundamental interactions. While sophisticated mathematical descriptions are needed to predict, in full detail, the nature of such interactions, there is a conceptually simple way to describe such interactions through the use of Feynman diagrams. In a Feynman diagram, each matter particle is represented as a straight line (see [[world line]]) traveling through time which normally increases up or to the right in the diagram. Matter and anti-matter particles are identical except for their direction of propagation through the Feynman diagram. World lines of particles intersect at [[interaction vertex|interaction vertices]], and the Feynman diagram represents any force arising from an interaction as occurring at the vertex with an associated instantaneous change in the direction of the particle world lines. Gauge bosons are emitted away from the vertex as wavy lines (similar to waves) and, in the case of virtual particle exchange, are absorbed at an adjacent vertex.<ref name=Shifman>{{cite book|first=Mikhail|last=Shifman|title=ITEP LECTURES ON PARTICLE PHYSICS AND FIELD THEORY|publisher=World Scientific|isbn=981-02-2639-X|year=1999}}</ref>
The utility of Feynman diagrams is that other types of physical phenomena that are part of the general picture of [[fundamental interaction]]s but are conceptually separate from forces can also be described using the same rules. For example, a Feynman diagram can describe in succinct detail how a [[neutron]] [[beta decay|decays]] into an [[electron]], [[proton]], and [[neutrino]], an interaction mediated by the same gauge boson that is responsible for the [[weak nuclear force]].<ref name="Shifman" />
==Fundamental models==
{{main|Fundamental interaction}}
All the forces in the universe are based on four fundamental forces. The strong and weak forces act only at very short distances, and are responsible for the interactions between [[subatomic particle]]s including [[nucleons]] and compound [[Atomic nucleus|nuclei]]. The electromagnetic force acts between [[electric charge]]s and the gravitational force acts between masses. All other forces are based on the existence of the four fundamental interactions. For example, friction is a manifestation of the [[electromagnetic force]] acting between the [[atom]]s of two [[surface]]s, and the [[Pauli Exclusion Principle]],<ref>{{cite web
| last =Nave
| first =R
| title =Pauli Exclusion Principle
| work = HyperPhysics***** Quantum Physics
| url =http://hyperphysics.phy-astr.gsu.edu/hbase/pauli.html
| accessdate = 2008-01-02}}</ref> which does not allow atoms to pass through each other. The forces in [[spring (device)|springs]], modeled by [[Hooke's law]], are also the result of electromagnetic forces and the Exclusion Principle acting together to return the object to its equilibrium position. [[Centrifugal force (fictitious)|Centrifugal force]]s are acceleration forces which arise simply from the acceleration of rotating [[frames of reference]].<ref name="texts" />
The development of fundamental theories for forces proceeded along the lines of [[Unified field theory|unification]] of disparate ideas. For example, Isaac Newton unified the force responsible for objects falling at the surface of the Earth with the force responsible for the orbits of celestial mechanics in his universal theory of gravitation. [[Michael Faraday]] and [[James Clerk Maxwell]] demonstrated that electric and magnetic forces were unified through one consistent theory of electromagnetism. In the twentieth century, the development of [[quantum mechanics]] led to a modern understanding that the first three fundamental forces (all except gravity) are manifestations of matter ([[fermions]]) interacting by exchanging [[virtual particles]] called [[gauge boson]]s.<ref>{{cite web
| title =Fermions & Bosons
| work =The Particle Adventure
| url =http://particleadventure.org/frameless/fermibos.html
| accessdate =2008-01-04 }}</ref>
This [[standard model]] of particle physics posits a similarity between the forces and led scientists to predict the unification of the weak and electromagnetic forces in [[electroweak]] theory subsequently confirmed by observation. The complete formulation of the standard model predicts an as yet unobserved [[Higgs mechanism]], but observations such as [[neutrino oscillation]]s indicate that the standard model is incomplete. A [[grand unified theory]] allowing for the combination of the electroweak interaction with the strong force is held out as a possibility with candidate theories such as [[supersymmetry]] proposed to accommodate some of the outstanding [[unsolved problems in physics]]. Physicists are still attempting to develop self-consistent unification models that would combine all four fundamental interactions into a [[theory of everything]]. Einstein tried and failed at this endeavor, but currently the most popular approach to answering this question is [[string theory]].<ref name="final theory" />
===Gravity===
{{main|Gravity}}
[[Image:Falling ball.jpg|right|thumb|An initially stationary object which is allowed to fall freely under gravity drops a distance which is proportional to the square of the elapsed time. An image was taken 20 flashes per second. During the first 1/20th of a second the ball drops one unit of distance (here, a unit is about 12 mm); by 2/20ths it has dropped a total of 4 units; by 3/20ths, 9 units and so on.]]
What we now call gravity was not identified as a universal force until the work of Isaac Newton. Before Newton, the tendency for objects to fall towards the Earth was not understood to be related to the motions of celestial objects. Galileo was instrumental in describing the characteristics of falling objects by determining that the [[acceleration]] of every object in [[free-fall]] was constant and independent of the mass of the object. Today, this [[Gravitational acceleration|acceleration due to gravity]] towards the surface of the Earth is usually designated as <math>\vec{g}</math> and has a magnitude of about 9.81 [[meter]]s per [[second]] squared (this measurement is taken from sea level and may vary depending on location), and points toward the center of the Earth.<ref>{{cite journal
| last = Cook
| first = A. H.
| journal = Nature
| title = A New Absolute Determination of the Acceleration due to Gravity at the National Physical Laboratory
| date = 16-160-1965
| url = http://www.nature.com/nature/journal/v208/n5007/abs/208279a0.html
| doi = 10.1038/208279a0
| accessdate = 2008-01-04
| pages = 279
| volume = 208 }}</ref> This observation means that the force of gravity on an object at the Earth's surface is directly proportional to the object's mass. Thus an object that has a mass of <math>m</math> will experience a force:
:<math>\vec{F} = m\vec{g}</math>
In free-fall, this force is unopposed and therefore the net force on the object is its weight. For objects not in free-fall, the force of gravity is opposed by the reactions of their supports. For example, a person standing on the ground experiences zero net force, since his weight is balanced by a [[normal force]] exerted by the ground.<ref name="texts" />
Newton's contribution to gravitational theory was to unify the motions of heavenly bodies, which Aristotle had assumed were in a natural state of constant motion, with falling motion observed on the Earth. He proposed a [[Newton's Law of Gravity|law of gravity]] that could account for the celestial motions that had been described earlier using [[Kepler's Laws of Planetary Motion]].<ref name=uniphysics_ch4>''University Physics'', Sears, Young & Zemansky, pp59–82</ref>
Newton came to realize that the effects of gravity might be observed in different ways at larger distances. In particular, Newton determined that the acceleration of the Moon around the Earth could be ascribed to the same force of gravity if the acceleration due to gravity decreased as an [[inverse square law]]. Further, Newton realized that the acceleration due to gravity is proportional to the mass of the attracting body.<ref name=uniphysics_ch4/> Combining these ideas gives a formula that relates the mass (<math>M_\oplus</math>) and the radius (<math>R_\oplus</math>) of the Earth to the gravitational acceleration:
:<math>\vec{g}=-\frac{GM_\oplus}{{R_\oplus}^2} \hat{r}</math>
where the vector direction is given by <math>\hat{r}</math>, the [[unit vector]] directed outward from the center of the Earth.<ref name="Principia" />
In this equation, a dimensional constant <math>G</math> is used to describe the relative strength of gravity. This constant has come to be known as [[Gravitational constant|Newton's Universal Gravitation Constant]],<ref>{{cite web
| title =Sir Isaac Newton: The Universal Law of Gravitation
| work =Astronomy 161 The Solar System
| url =http://csep10.phys.utk.edu/astr161/lect/history/newtongrav.html
| accessdate = 2008-01-04}}</ref> though its value was unknown in Newton's lifetime. Not until 1798 was [[Henry Cavendish]] able to make the first measurement of <math>G</math> using a [[torsion balance]]; this was widely reported in the press as a measurement of the mass of the Earth since knowing the <math>G</math> could allow one to solve for the Earth's mass given the above equation. Newton, however, realized that since all celestial bodies followed the same [[Kepler's laws|laws of motion]], his law of gravity had to be universal. Succinctly stated, [[Newton's Law of Gravitation]] states that the force on a spherical object of mass <math>m_{1}</math> due to the gravitational pull of mass <math>m_2</math> is
:<math>\vec{F}=-\frac{Gm_{1}m_{2}}{r^2} \hat{r}</math>
where <math>r</math> is the distance between the two objects' centers of mass and <math>\hat{r}</math> is the unit vector pointed in the direction away from the center of the first object toward the center of the second object.<ref name="Principia" />
This formula was powerful enough to stand as the basis for all subsequent descriptions of motion within the solar system until the twentieth century. During that time, sophisticated methods of [[perturbation analysis]]<ref>{{cite web
| last = Watkins
| first =Thayer
| title =Perturbation Analysis, Regular and Singular
| work =Department of Economics
| publisher =San José State University
| url =http://www.sjsu.edu/faculty/watkins/perturb.htm
}}</ref> were invented to calculate the deviations of [[orbit]]s due to the influence of multiple bodies on a [[planet]], [[moon]], [[comet]], or [[asteroid]]. The formalism was exact enough to allow mathematicians to predict the existence of the planet [[Neptune]] before it was observed.<ref name='Neptdisc'>{{cite web|url=http://www.ucl.ac.uk/sts/nk/neptune/index.htm |title=Neptune's Discovery. The British Case for Co-Prediction. |accessdate=2007-03-19 |last=Kollerstrom |first=Nick |date=2001 |publisher=University College London |archiveurl=http://web.archive.org/web/20051111190351/http://www.ucl.ac.uk/sts/nk/neptune/index.htm |archivedate=2005-11-11 }}</ref>
It was only the orbit of the planet [[Mercury (planet)|Mercury]] that Newton's Law of Gravitation seemed not to fully explain. Some astrophysicists predicted the existence of another planet ([[Vulcan (hypothetical planet)|Vulcan]]) that would explain the discrepancies; however, despite some early indications, no such planet could be found. When [[Albert Einstein]] finally formulated his theory of [[general relativity]] (GR) he turned his attention to the problem of Mercury's orbit and found that his theory added [[Tests of general relativity#Perihelion_precession_of_Mercury|a correction which could account for the discrepancy]]. This was the first time that Newton's Theory of Gravity had been shown to be less correct than an alternative.<ref name = Ein1916>{{cite journal| last = Einstein| first = Albert| authorlink = Albert Einstein| title = The Foundation of the General Theory of Relativity| journal = Annalen der Physik| volume = 49 | pages = 769–822| date = 1916| url = http://www.alberteinstein.info/gallery/gtext3.html| format = [[PDF]]| accessdate = 2006-09-03 }}</ref>
Since then, and so far, general relativity has been acknowledged as the theory which best explains gravity. In GR, gravitation is not viewed as a force, but rather, objects moving freely in gravitational fields travel under their own inertia in [[geodesic|straight lines]] through [[curved space-time]] – defined as the shortest space-time path between two space-time events. From the perspective of the object, all motion occurs as if there were no gravitation whatsoever. It is only when observing the motion in a global sense that the curvature of space-time can be observed and the force is inferred from the object's curved path. Thus, the straight line path in space-time is seen as a curved line in space, and it is called the ''[[external ballistics|ballistic]] [[trajectory]]'' of the object. For example, a [[basketball]] thrown from the ground moves in a [[parabola]], as it is in a uniform gravitational field. Its space-time trajectory (when the extra ct dimension is added) is almost a straight line, slightly curved (with the [[radius of curvature (applications)|radius of curvature]] of the order of few [[light-year]]s). The time derivative of the changing momentum of the object is what we label as "gravitational force".<ref name="texts" />
===Electromagnetic forces===
{{main|Electromagnetic force}}
The [[electrostatic force]] was first described in 1784 by Coulomb as a force which existed intrinsically between two [[electric charge|charges]].<ref name="Cutnell_p519">{{cite book| last =Cutnell| title =Physics, Sixth Edition| page =519| isbn =047123124X| author =Cutnell,| publisher =John Wiley & Sons Inc}}</ref> The properties of the electrostatic force were that it varied as an [[inverse square law]] directed in the [[polar coordinates|radial direction]], was both attractive and repulsive (there was intrinsic [[Electrical polarity|polarity]]), was independent of the mass of the charged objects, and followed the [[law of superposition]]. [[Coulomb's Law]] unifies all these observations into one succinct statement.<ref name="Coulomb">{{cite journal|first=Charles|last=Coulomb|journal=Histoire de l’Académie Royale des Sciences|date=1784|title= Recherches théoriques et expérimentales sur la force de torsion et sur l'élasticité des fils de metal|pages= 229–269}}</ref>
Subsequent mathematicians and physicists found the construct of the ''[[electric field]]'' to be useful for determining the electrostatic force on an electric charge at any point in space. The electric field was based on using a hypothetical "[[test charge]]" anywhere in space and then using Coulomb's Law to determine the electrostatic force.<ref name="EM text">{{cite book | author=Feynman, Leighton and Sands | title= The Feynman Lectures on Physics The Definitive Edition Volume II | publisher =Pearson Addison Wesley | year=2006 | isbn=0-8053-9047-2 }}</ref> Thus the electric field anywhere in space is defined as
:<math>\vec{E} = {\vec{F} \over{q}}</math>
where <math>q</math> is the magnitude of the hypothetical test charge.
Meanwhile, the [[Lorentz force]] of [[magnetism]] was discovered to exist between two [[electric current]]s. It has the same mathematical character as Coulomb's Law with the proviso that like currents attract and unlike currents repel. Similar to the electric field, the [[magnetic field]] can be used to determine the magnetic force on an electric current at any point in space. In this case, the magnitude of the magnetic field was determined to be
:<math>B = {F \over{I \ell}}</math>
where <math>I</math> is the magnitude of the hypothetical test current and <math>\ell</math> is the length of hypothetical wire through which the test current flows. The magnetic field exerts a force on all [[magnet]]s including, for example, those used in [[compass]]es. The fact that the [[geomagnetism|Earth's magnetic field]] is aligned closely with the orientation of the Earth's [[rotation|axis]] causes compass magnets to [[orientation|become oriented]] because of the magnetic force pulling on the needle.
Through combining the definition of electric current as the time rate of change of electric charge, a rule of [[Cross product|vector multiplication]] called [[Lorentz force|Lorentz's Law]] describes the force on a charge moving in an magnetic field.<ref name="EM text" /> The connection between electricity and magnetism allows for the description of a unified ''electromagnetic force'' that acts on a charge. This force can be written as a sum of the electrostatic force (due to the electric field) and the magnetic force (due to the magnetic field). Fully stated, this is the law:
:<math>\vec{F} = q(\vec{E} + \vec{v} \times \vec{B})</math>
where <math>\vec{F}</math> is the electromagnetic force, <math>q</math> is the magnitude of the charge of the particle, <math>\vec{E}</math> is the electric field, <math>\vec{v}</math> is the [[velocity]] of the particle which is [[cross product|crossed]] with the magnetic field (<math>\vec{B}</math>).
The origin of electric and magnetic fields would not be fully explained until 1864 when [[James Clerk Maxwell]] unified a number of earlier theories into a succinct set of four equations. These "[[Maxwell Equations]]" fully described the sources of the fields as being stationary and moving charges, and the interactions of the fields themselves. This led Maxwell to discover that electric and magnetic fields could be "self-generating" through a [[wave mechanics|wave]] that traveled at a speed which he calculated to be the [[speed of light]]. This insight united the nascent fields of electromagnetic theory with [[optics]] and led directly to a complete description of the [[electromagnetic spectrum]].<ref>
{{cite book
|first=William|last=Duffin
|title=Electricity and Magnetism, 3rd Ed.
|publisher=McGraw-Hill
|pages=364–383
|year=1980
|isbn=0-07-084111-X}}</ref>
However, attempting to reconcile electromagnetic theory with two observations, the [[photoelectric effect]], and the nonexistence of the [[ultraviolet catastrophe]], proved troublesome. Through the work of leading theoretical physicists, a new theory of electromagnetism was developed using quantum mechanics. This final modification to electromagnetic theory ultimately led to [[quantum electrodynamics]] (or QED), which fully describes all electromagnetic phenomena as being mediated by wave particles known as [[photon]]s. In QED, photons are the fundamental exchange particle which described all interactions relating to electromagnetism including the electromagnetic force.<ref name="QM library">For a complete library on quantum mechanics see [[Quantum_mechanics#References]]</ref>
It is a common misconception to ascribe the stiffness and rigidity of [[solid state physics|solid matter]] to the repulsion of like charges under the influence of the electromagnetic force. However, these characteristics actually result from the [[Pauli Exclusion Principle]]. Since electrons are [[fermion]]s, they cannot occupy the same [[wavefunction|quantum mechanical state]] as other electrons. When the electrons in a material are densely packed together, there are not enough lower energy quantum mechanical states for them all, so some of them must be in higher energy states. This means that it takes energy to pack them together. While this effect is manifested macroscopically as a structural "force", it is technically only the result of the existence of a finite set of electron states.
===Nuclear forces===
{{main|Nuclear force}}
{{seealso|Strong force|Weak force}}
There are two "nuclear forces" which today are usually described as interactions that take place in quantum theories of particle physics. The [[strong nuclear force]]<ref name="Cutnell_p940">{{cite book| last =Cutnell| title =Physics, Sixth Edition| page =940| isbn =047123124X| author =Cutnell,| publisher =John Wiley & Sons Inc}}</ref> is the force responsible for the structural integrity of [[atomic nucleus|atomic nuclei]] while the [[weak nuclear force]]<ref name="Cutnell_p951">{{cite book| last =Cutnell| title =Physics, Sixth Edition| page =951| isbn =047123124X| author =Cutnell,| publisher =John Wiley & Sons Inc}}</ref> is responsible for the decay of certain [[nucleon]]s into [[lepton]]s and other types of [[hadron]]s.<ref name="texts" />
The strong force is today understood to represent the [[interaction]]s between [[quark]]s and [[gluon]]s as detailed by the theory of [[quantum chromodynamics]] (QCD).<ref>{{cite web
| last = Stevens
| first =Tab
| title =Quantum-Chromodynamics: A Definition - Science Articles
| date =10/07/2003
| url =http://www.physicspost.com/science-article-168.html
| accessdate = 2008-01-04 }}</ref> The strong force is the [[fundamental force]] mediated by [[gluons]], acting upon quarks, [[antiparticle|antiquarks]], and the [[gluon]]s themselves. The strong interaction is the most powerful of the four fundamental forces.
The strong force only acts ''directly'' upon elementary particles. However, a residual of the force is observed between [[hadron]]s (the best known example being the force that acts between [[nucleon]]s in atomic nuclei) as the [[nuclear force]]. Here the strong force acts indirectly, transmitted as gluons which form part of the virtual pi and rho [[mesons]] which classically transmit the nuclear force (see this topic for more). The failure of many searches for [[free quark]]s has shown that the elementary particles affected are not directly observable. This phenomenon is called [[colour confinement]].
The weak force is due to the exchange of the heavy [[W and Z bosons]]. Its most familiar effect is [[beta decay]] (of neutrons in atomic nuclei) and the associated [[radioactivity]]. The word "weak" derives from the fact that the field strength is some 10<sup>13</sup> times less than that of the [[strong force]]. Still, it is stronger than gravity over short distances. A consistent electroweak theory has also been developed which shows that electromagnetic forces and the weak force are indistinguishable at a temperatures in excess of approximately 10<sup>15</sup> [[Kelvin]]. Such temperatures have been probed in modern [[particle accelerator]]s and show the conditions of the [[universe]] in the early moments of the [[Big Bang]].
==Non-fundamental forces==
Some forces are consequences of fundamental. In such situations, idealized models can be utilized to gain physical insight.
===Normal force===
[[Image:Incline.svg|right|thumb|100px|''F<sub>N</sub>'' represents the [[normal force]] exerted on the object.]]
{{main|Normal force}}
The normal force is the repulsive force of interaction between atoms at close contact. When their electron clouds overlap, Pauli repulsion (due to [[fermion]]ic nature of [[electron]]s) follows resulting in the force which acts [[normal vector|normal]] to the surface interface between two objects.<ref name="Cutnell_p93">{{cite book| last =Cutnell| title =Physics, Sixth Edition| page=93| isbn =047123124X| author =Cutnell,| publisher =John Wiley & Sons Inc}}</ref> The normal force, for example, is responsible for the structural integrity of tables and floors as well as being the force that responds whenever an external force pushes on a solid object. An example of the normal force in action is the impact force on an object crashing into an immobile surface.<ref name="texts" />
===Friction===
{{main|Friction}}
Friction is a surface force that opposes motion. The frictional force is directly related to the normal force which acts to keep two solid objects separated at the point of contact. There are two broad classifications of frictional forces: [[static friction]] and [[kinetic friction]].
The static friction force (<math>F_{\mathrm{sf}}</math>) will exactly oppose forces applied to an object parallel to a surface contact up to the limit specified by the [[coefficient of static friction]] (<math>\mu_{\mathrm{sf}}</math>) multiplied by the normal force (<math>F_N</math>). In other words the magnitude of the static friction force satisfies the inequality:
:<math>0 \le F_{\mathrm{sf}} \le \mu_{\mathrm{sf}} F_\mathrm{N}</math>.
The kinetic friction force (<math>F_{\mathrm{kf}}</math>) is independent of both the forces applied and the movement of the object. Thus, the magnitude of the force equals:
:<math>F_{\mathrm{kf}} = \mu_{\mathrm{kf}} F_\mathrm{N}</math>,
where <math>\mu_{\mathrm{kf}}</math> is the [[coefficient of kinetic friction]]. For most surface interfaces, the coefficient of kinetic friction is less than the coefficient of static friction.<ref name="texts" />
===Tension===
{{main|Tension (physics)}}
Tension forces can be modeled using [[ideal string]]s which are massless, frictionless, unbreakable, and unstretchable. They can be combined with ideal [[pulley]]s which allow ideal strings to switch physical direction. Ideal strings transmit tension forces instantaneously in action-reaction pairs so that if two objects are connected by an ideal string, any force directed along the string by the first object is accompanied by a force directed along the string in the opposite direction by the second object.<ref>{{cite web
| title =Tension Force
| work =Non-Calculus Based Physics I
| url =http://www.mtsu.edu/~phys2010/Lectures/Part_2__L6_-_L11/Lecture_9/Tension_Force/tension_force.html
| accessdate = 2008-01-04 }}</ref> By connecting the same string multiple times to the same object through the use of a set-up that uses movable pulleys, the tension force on a load can be multiplied. For every string that acts on a load, another factor of the tension force in the string acts on the load. However, even though such machines allow for an [[mechanical advantage|increase in force]], there is a corresponding increase in the length of string that must be displaced in order to move the load. These tandem effects result ultimately in the [[energy conservation|conservation of mechanical energy]] since the [[#Kinematic integrals|work done on the load]] is the same no matter how complicated the machine.<ref name="texts" /><ref>{{cite web
| last = Fitzpatrick
| first =Richard
| title =Strings, pulleys, and inclines
| date =2006-02-02
| url =http://farside.ph.utexas.edu/teaching/301/lectures/node48.html
| accessdate = 2008-01-04 }}</ref>
===Elastic force===
{{main|Elasticity (physics)|Hooke's law}}
[[Image:Spring-mass2.svg|right|thumb|150px|F<sub>k</sub> is the force that responds to the load on the spring.]]
An elastic force acts to return a [[Spring (device)|spring]] to its natural length. An [[ideal spring]] is taken to be massless, frictionless, unbreakable, and infinitely stretchable. Such springs exert forces that push when contracted, or pull when extended, in proportion to the [[displacement field (mechanics)|displacement]] of the spring from its equilibrium position.<ref>
{{cite web
| work =HyperPhysics
| title = Elasticity, Periodic Motion
| publisher = Georgia State University
| url =http://hyperphysics.phy-astr.gsu.edu/hbase/permot2.html
| accessdate = 2008-01-04}}</ref> This linear relationship was described by [[Robert Hooke]] in 1676, for whom [[Hooke's law]] is named. If <math>\Delta x</math> is the displacement, the force exerted by an ideal spring equals:
:<math>\vec{F}=-k \Delta \vec{x}</math>
where <math>k</math> is the spring constant (or force constant), which is particular to the spring. The minus sign accounts for the tendency of the elastic force to act in opposition to the applied load.<ref name="texts" />
===Continuum mechanics===
[[Image:Stokes sphere.svg|thumb|150 px|When the drag force (<math>F_d</math>) associated with air resistance becomes equal in magnitude to the force of gravity on a falling object (<math>F_g</math>), the object reaches a state of [[#Dynamical equilibrium|dynamical equilibrium]] at [[terminal velocity]].]]
{{main|Pressure|Drag (physics)|Stress (mechanics)}}
Newton's laws and Newtonian mechanics in general were first developed to describe how forces affect idealized [[point particle]]s rather than three-dimensional objects. However, in real life, matter has extended structure and forces that act on one part of an object might affect other parts of an object. For situations where lattice holding together the atoms in an object is able to flow, contract, expand, or otherwise change shape, the theories of [[continuum mechanics]] describe the way forces affect the material. For example, in extended [[fluid mechanics|fluids]], differences in [[pressure]] result in forces being directed along the pressure [[gradient]]s as follows:
:<math>\frac{\vec{F}}{V} = - \vec{\nabla} P</math>
where <math>V</math> is the volume of the object in the fluid and <math>P</math> is the [[scalar function]] that describes the pressure at all locations in space. Pressure gradients and differentials result in the [[buoyancy|buoyant force]] for fluids suspended in gravitational fields, [[wind]]s in [[atmospheric science]], and the [[lift (physics)|lift]] associated with [[aerodynamics]] and [[flight]].<ref name="texts" />
A specific instance of such a force that is associated with [[dynamic pressure]] is fluid resistance: a body force that resists the motion of an object through a fluid due to [[viscosity]]. For so-called "[[drag (physics)#Stokes' drag|Stokes' drag]]" the force is approximately proportional to the velocity, but opposite in direction:
:<math>\vec{F}_\mathrm{d} = - b \vec{v} \,</math>
where:
:<math>b</math> is a constant that depends on the properties of the fluid and the dimensions of the object (usually the [[Cross section (geometry)|cross-sectional area]]), and
:<math>\vec{v}</math> is the velocity of the object.<ref name="texts" />
More formally, forces in [[continuum mechanics]] are fully described by a [[Stress (mechanics)|stress]] [[tensor]] with terms that are roughly defined as
:<math>\sigma = \frac{F}{A}</math>
where <math>A</math> is the relevant cross-sectional area for the volume for which the stress-tensor is being calculated. This formalism includes pressure terms associated with forces that act normal to the cross-sectional area (the [[Diagonal matrix|matrix diagonals]] of the tensor) as well as [[Shear stress|shear]] terms associated with forces that act [[Parallel (geometry)|parallel]] to the cross-sectional area (the off-diagonal elements). The stress tensor accounts for forces that cause all [[strain (physics)|deformations]] including also [[tensile stress]]es and [[compression]]s.
===Fictitious forces===
{{main|Fictitious forces}}
There are forces which are [[frame dependent]], meaning that they appear due to the adoption of non-Newtonian (that is, [[non-inertial frame|non-inertial]]) [[Frame of reference|reference frames]]. Such forces include the [[Centrifugal force (rotating reference frame)|centrifugal force]] and the [[Coriolis force]].<ref>{{cite web
| last =Mallette
| first =Vincent
| title =Inwit Publishing, Inc. and Inwit, LLC -- Writings, Links and Software Distributions - The Coriolis Force
| work =Publications in Science and Mathematics, Computing and the Humanities
| publisher = Inwit Publishing, Inc.
| date =1982-2008
| url =http://www.algorithm.com/inwit/writings/coriolisforce.html
| accessdate = 2008-01-04 }}</ref> These forces are considered fictitious because they do not exist in frames of reference that are not accelerating.<ref name="texts" />
In [[general relativity]], [[gravity]] becomes a fictitious force that arises in situations where spacetime deviates from a flat geometry. As an extension, [[Kaluza-Klein]] theory and [[string theory]] ascribe electromagnetism and the other [[Fundamental interaction|fundamental forces]] respectively to the curvature of differently scaled dimensions, which would ultimately imply that all forces are fictitious.
==Rotations and torque==
[[Image:Torque animation.gif|frame|right|Relationship between force (F), torque (τ), and [[angular momentum|momentum]] vectors (p and L) in a rotating system.]]
{{main|Torque}}
Forces that cause extended objects to rotate are associated with [[torque]]s. Mathematically, the torque on a particle is defined as the [[cross-product]]:
:<math>\vec{\tau} = \vec{r} \times \vec{F}</math>
where
:<math>\vec{r}</math> is the particle's [[position vector]] relative to a [[pivot]]
:<math>\vec{F}</math> is the force acting on the particle.
Torque is the rotation equivalent of force in the same way that [[angle]] is the rotational equivalent for [[position (vector)|position]], [[angular velocity]] for [[velocity]], and [[angular momentum]] for [[momentum]]. All the formal treatments of Newton's Laws that applied to forces equivalently apply to torques. Thus, as a consequence of Newton's First Law of Motion, there exists [[rotational inertia]] that ensures that all bodies maintain their angular momentum unless acted upon by an unbalanced torque. Likewise, Newton's Second Law of Motion can be used to derive an alternative definition of torque:
:<math>\vec{\tau} = I\vec{\alpha}</math>
where
:<math>I</math> is the [[moment of inertia]] of the particle
:<math>\vec{\alpha}</math> is the angular acceleration of the particle.
This provides a definition for the moment of inertia which is the rotational equivalent for mass. In more advanced treatments of mechanics, the moment of inertia acts as a [[moment of inertia#Moment of inertia tensor|tensor]] that, when properly analyzed, fully determines the characteristics of rotations including [[precession]] and [[nutation]].
Equivalently, the differential form of Newton's Second Law provides an alternative definition of torque:
:<math>\vec{\tau} = \frac{\mathrm{d}\vec{L}}{\mathrm{dt}},</math><ref>{{cite web |title=Newton's Second Law for Rotation |publisher=HyperPhysics***** Mechanics ***** Rotation |url=http://hyperphysics.phy-astr.gsu.edu/HBASE/n2r.html |accessdate=2008-01-04}}</ref>
where <math>\vec{L}</math> is the angular momentum of the particle.
Newton's Third Law of Motion requires that all objects exerting torques themselves experience equal and opposite torques,<ref>{{cite web |last=Fitzpatrick |first=Richard |title=Newton's third law of motion |date=2007-01-07 |url=http://farside.ph.utexas.edu/teaching/336k/lectures/node26.html |accessdate=2008-01-04}}</ref> and therefore also directly implies the [[conservation of angular momentum]] for closed systems that experience rotations and [[revolution]]s through the action of internal torques.
===Centripetal force===
{{main|Centripetal force}}
For an object accelerating in circular motion, the unbalanced force acting on the object equals:<ref>{{cite web
| last = Nave
| first =R
| title =Centripetal Force
| work = HyperPhysics***** Mechanics ***** Rotation
| url =http://hyperphysics.phy-astr.gsu.edu/hbase/cf.html}}</ref>
:<math>\vec{F} = - \frac{mv^2 \hat{r}}{r}</math>
where <math>m</math> is the mass of the object, <math>v</math> is the velocity of the object and <math>r</math> is the distance to the center of the circular path and <math>\hat{r}</math> is the [[unit vector]] pointing in the radial direction outwards from the center. This means that the unbalanced centripetal force felt by any object is always directed toward the center of the curving path. Such forces act perpendicular to the velocity vector associated with the motion of an object, and therefore do not change the [[speed]] of the object (magnitude of the velocity), but only the direction of the velocity vector. The unbalanced force that accelerates an object can be resolved into a component that is perpendicular to the path, and one that is tangential to the path. This yields both the tangential force which accelerates the object by either slowing it down or speeding it up and the radial (centripetal) force which changes its direction.<ref name="texts" />
==Kinematic integrals==
{{main|Impulse|Mechanical work|Power (physics)}}
Forces can be used to define a number of physical concepts by [[integration (calculus)|integrating]] with respect to [[kinematics|kinematic variables]]. For example, integrating with respect to time gives the definition of [[impulse]]:
:<math>\vec{I}=\int_{t_1}^{t_2}{\vec{F} \mathrm{d}t}</math>
which, by Newton's Second Law, must be equivalent to the change in momentum (yielding the [[Impulse momentum theorem]]).
Similarly, integrating with respect to position gives a definition for the [[work (physics)|work done]] by a force:<ref name=Feynman13_3>Feynman, Leighton & Sands (1963), vol. 1, p. 13-3.</ref>
:<math>W=\int_{\vec{x}_1}^{\vec{x}_2}{\vec{F} \cdot{\mathrm{d}\vec{x}}}</math>
which is equivalent to changes in [[kinetic energy]] (yielding the [[work energy theorem]]).<ref name=Feynman13_3/>
[[power (physics)|Power]] ''P'' is the rate of change d''W''/d''t'' of the work ''W'', as the [[trajectory]] is extended by a position change <math>\text{d}\vec{x}\,</math> in a time interval d''t'':<ref name=Feynman13_2>Feynman, Leighton & Sands (1963), vol. 1, p. 13-2.</ref>
:<math>
\text{d}W\, =\, \frac{\text{d}W}{\text{d}\vec{x}}\, \cdot\, \text{d}\vec{x}\, =\, \vec{F}\, \cdot\, \text{d}\vec{x},
\qquad \text{ so } \quad
P\, =\, \frac{\text{d}W}{\text{d}\vec{x}}\, \cdot\, \frac{\text{d}\vec{x}}{\text{d}t}\, =\, \vec{F}\, \cdot\, \vec{v},
</math>
with <math>\vec{v} = \text{d}\vec{x}/\text{d}t</math> the [[velocity]].
== Potential energy==
{{main|Potential energy}}
Instead of a force, often the mathematically related concept of a [[potential energy]] field can be used for convenience. For instance, the gravitational force acting upon an object can be seen as the action of the [[gravitational field]] that is present at the object's location. Restating mathematically the definition of energy (via the definition of [[Mechanical work|work]]), a potential [[scalar field]] <math>U(\vec{r})</math> is defined as that field whose [[gradient]] is equal and opposite to the force produced at every point:
:<math>\vec{F}=-\vec{\nabla} U.</math>
Forces can be classified as [[Conservative force|conservative]] or nonconservative. Conservative forces are equivalent to the gradient of a [[potential]] while non-conservative forces are not.<ref name="texts" />
===Conservative forces===
{{main|Conservative force}}
A conservative force that acts on a [[closed system]] has an associated mechanical work that allows energy to convert only between [[kinetic energy|kinetic]] or [[potential energy|potential]] forms. This means that for a closed system, the net [[mechanical energy]] is conserved whenever a conservative force acts on the system. The force, therefore, is related directly to the difference in potential energy between two different locations in space,<ref>{{cite web
| last = Singh
| first =Sunil Kumar
| title =Conservative force
| work =Connexions
| date =2007-08-25
| url =http://cnx.org/content/m14104/latest/
| accessdate = 2008-01-04}}</ref> and can be considered to be an artifact of the potential field in the same way that the direction and amount of a flow of water can be considered to be an artifact of the [[contour map]] of the elevation of an area.<ref name="texts" />
Conservative forces include [[gravity]], the [[Electromagnetism|electromagnetic]] force, and the [[Hooke's law|spring]] force. Each of these forces has models which are dependent on a position often given as a [[radius|radial vector]] <math>\vec{r}</math> emanating from [[spherical symmetry|spherically symmetric]] potentials.<ref>{{cite web
| last = Davis
| first =Doug
| title =Conservation of Energy
| work =General physics
| url =http://www.ux1.eiu.edu/~cfadd/1350/08PotEng/ConsF.html
| accessdate = 2008-01-04}}</ref> Examples of this follow:
For gravity:
:<math>\vec{F} = - \frac{G m_1 m_2 \vec{r}}{r^3}</math>
where <math>G</math> is the [[gravitational constant]], and <math>m_n</math> is the mass of object ''n''.
For electrostatic forces:
:<math>\vec{F} = \frac{q_{1} q_{2} \vec{r}}{4 \pi \epsilon_{0} r^3}</math>
where <math>\epsilon_{0}</math> is [[Permittivity|electric permittivity of free space]], and <math>q_n</math> is the [[electric charge]] of object ''n''.
For spring forces:
:<math>\vec{F} = - k \vec{r}</math>
where <math>k</math> is the [[spring constant]].<ref name="texts" />
===Nonconservative forces===
For certain physical scenarios, it is impossible to model forces as being due to gradient of potentials. This is often due to macrophysical considerations which yield forces as arising from a macroscopic statistical average of [[Microstate (statistical mechanics)|microstates]]. For example, friction is caused by the gradients of numerous electrostatic potentials between the [[atoms]], but manifests as a force model which is independent of any macroscale position vector. Nonconservative forces other than friction include other [[contact force]]s, [[Tension (physics)|tension]], [[Physical compression|compression]], and [[drag (physics)|drag]]. However, for any sufficiently detailed description, all these forces are the results of conservative ones since each of these macroscopic forces are the net results of the gradients of microscopic potentials.<ref name="texts" />
The connection between macroscopic non-conservative forces and microscopic conservative forces is described by detailed treatment with [[statistical mechanics]]. In macroscopic closed systems, nonconservative forces act to change the [[internal energy|internal energies]] of the system, and are often associated with the transfer of [[heat]]. According to the [[Second Law of Thermodynamics]], nonconservative forces necessarily result in energy transformations within closed systems from ordered to more random conditions as [[entropy]] increases.<ref name="texts" />
== Units of measurement ==
The [[SI]] unit of force is the [[Newton (unit)|newton]] (symbol N), which is the force required to accelerate a one kilogram mass at a rate of one meter per second squared, or kg·m·s<sup>−2</sup>.<ref name=metric_units>
{{cite book |first=Cornelius |last=Wandmacher |first2=Arnold |last2=Johnson |title=Metric Units in Engineering |page=15 |year=1995 |publisher=ASCE Publications |isbn=0784400709}}</ref> The corresponding [[CGS]] unit is the [[dyne]], the force required to accelerate a one gram mass by one centimeter per second squared, or g·cm·s<sup>−2</sup>. A newton is thus equal to 100,000 dyne.
The gravitational [[foot-pound-second]] [[English unit]] of force is the [[pound-force]] (lbf), defined as the force exerted by gravity on a [[pound-mass]] in the [[Standard gravity|standard gravitational]] field of 9.80665 m·s<sup>−2</sup>.<ref name=metric_units/> The pound-force provides an alternative unit of mass: one [[slug (mass)|slug]] is the mass that will accelerate by one foot per second squared when acted on by one pound-force.<ref name=metric_units/>
An alternative unit of force in a different foot-pound-second system, the absolute fps system, is the [[poundal]], defined as the force required to accelerate a one pound mass at a rate of one foot per second squared.<ref name=metric_units/> The units of [[slug (mass)|slug]] and [[poundal]] are designed to avoid a constant of proportionality in [[Newton's laws of motion#Newton's second law|Newton's second law]].
The pound-force has a metric counterpart, less commonly used than the newton: the [[kilogram-force]] (kgf) (sometimes [[kilopond]]), is the force exerted by standard gravity on one kilogram of mass.<ref name=metric_units/> The kilogram-force leads to an alternate, but rarely used unit of mass: the [[metric slug]] (sometimes [[mug]] or [[hyl]]) is that mass which accelerates at 1 m·s<sup>−2</sup> when subjected to a force of 1 kgf. The kilogram-force is not a part of the modern SI system, and is generally deprecated; however it still sees use for some purposes as expressing jet thrust, bicycle spoke tension, torque wrench settings and engine output torque. Other arcane units of force include the [[sthène]] which is equivalent to 1000 N and the [[kip (force)|kip]] which is equivalent to 1000 lbf.
{{units of force|center=yes}}
==Notes==
{{reflist|2}}
== References ==
* {{cite book
| last = Corbell | first = H.C.
| coauthors = Philip Stehle
| title = Classical Mechanics p 28,
| location = New York
| publisher = Dover publications
| year = 1994
| isbn = 0-486-68063-0
}}
* {{cite book
| last =Cutnell
| first =John d.
| coauthors =Johnson, Kenneth W.
| title =Physics, Sixth Edition
| publisher =John Wiley & Sons Inc.
| date =2004
| location =Hoboken, NJ
| isbn =041-44895-8
| ISBN-status =May be invalid - please double check }}
*{{cite book | author = Feynman, R. P., Leighton, R. B., Sands, M. | title = Lectures on Physics, Vol 1 |publisher = Addison-Wesley| year=1963 | isbn = 0-201-02116-1}}
* {{cite book
| last = Halliday | first = David
| coauthors = Robert Resnick; Kenneth S. Krane
| title = Physics v. 1
| location = New York
| publisher = John Wiley & Sons
| year = 2001
| isbn = 0-471-32057-9
}}
* {{cite book
| last = Parker | first = Sybil
| title = Encyclopedia of Physics, p 443,
| location = Ohio
| publisher = McGraw-Hill
| year = 1993
| isbn = 0-07-051400-3
}}
* {{cite book
| last = Sears F., Zemansky M. & Young H.
| title = University Physics
| publisher = Addison-Wesley
| location = Reading, MA
| year = 1982
| isbn = 0-201-07199-1
| author = Francis W. Sears, Mark W. Zemansky, Hugh D. Young.
}}
* {{cite book
| last = Serway | first = Raymond A.
| title = Physics for Scientists and Engineers
| location = Philadelphia
| publisher = Saunders College Publishing
| year = 2003
| isbn = 0-534-40842-7
}}
* {{cite book
| last = Tipler | first = Paul
| title = Physics for Scientists and Engineers: Mechanics, Oscillations and Waves, Thermodynamics
| edition = 5th
| publisher = W. H. Freeman
| year = 2004
| isbn = 0-7167-0809-4
}}
* {{cite book
| last = Verma | first = H.C.
| title = Concepts of Physics Vol 1.
| edition = 2004 Reprint
| publisher = Bharti Bhavan
| year = 2004
| isbn = 81-7709-187-5
| ISBN-status = May be invalid - please double check
}}
==External links==
*[http://ocw.mit.edu/OcwWeb/Physics/8-01Physics-IFall1999/VideoLectures/detail/Video-Segment-Index-for-L-6.htm Video lecture on Newton's three laws] by [[Walter Lewin]] from [[MIT OpenCourseWare]]
*[http://phy.hk/wiki/englishhtm/Vector.htm A Java simulation on vector addition of forces]
*[http://www.lorenz-messtechnik.de/english/company/force_unit_calculation.php Force Unit Converter]
-->
[[Ronney:Obbrinaght chlassicagh]]
[[Ronney:Eieyn fishag bunneydagh]]
[[Ronney:Forse|*]]
6kvao3gz5s5xnt9uko9ciuhk8or78jd
Bossan pibbyragh
0
15538
394579
363850
2026-10-16T19:58:07Z
InternetArchiveBot
16702
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6
394579
wikitext
text/x-wiki
{{Kishtey fys baagh
| daah = #90EE90
| ennym = Bossan pibbyragh
| jalloo = Lepidium campestre2 W.jpg
| reeriaght = [[Plantae]]
| rheynn_neurheynnit = [[Angiospermae]]
| rang_neurheynnit = [[Eudicot|Eudicotyn]]
| oardagh_neurheynnit = [[Rosid|Rosidyn]]
| oardagh = [[Brassicales]]
| kynney = [[Brassicaceae]]
| genus = ''[[Lepidium]]''
| dooie = '''''L. campestre'''''
| daaennymagh = ''Lepidium campestre''
| imraa_daaennymagh = ([[Carolus Linnaeus|L.]]) [[William Townsend Aiton|W.T.Aiton]]
|}}
She [[lus]] [[bleintag|vleeanagh]] eh '''bossan pibbyragh''' ('''''Lepidium campestre'''''). T'eh dooghyssagh da'n [[yn Europey|Oarpey]], as t'eh ry-akin ayns [[America Hwoaie]] myr [[lus ruegyssagh]] as [[sarkyl]].
==Jalloo-oaylleeaght==
Ta bossan pibbyragh gaase wheesh as 60cm er yrjid. Ta [[crouw-vlaaghey]] echey. Ta [[blaa|blaaghyn]] baney beggey ayn, as t'ad jannoo [[fynneig|fynneigyn]] glassey rea oohchrooagh jeu hene, mysh 6mm er lhiurid as 4km er lheead.<ref name=uva>{{enmyslioar
| screeudeyr = Richard H. Uva
| coscreeudeyryn = Joseph C. Neal & Joseph M. Ditomaso
| ennym = Weeds of The Northeast
| boayl = Ithaca, York Noa
| soilsheyder = Cornell University Press
| blein = 1997
| duillag = 176-177
| çhengey = Baarle
}}</ref> Ta daa rass dhone ayns dagh fynneig. Ta [[duillag|duillagyn]] [[cummey duillag#maylartey|maylartey]] [[cummey duillag#sideagh|sideagh]] gyn chass echey, as ta'n [[gass|ghass]] gaase jeh [[cummey duillag#roseagh|cummey rose]] dy ghuillagyn [[cummey duillag#feeacklagh|feeacklagh]]. Ta'n ghass renaigagh.
== Troarey as Ymmyd ==
Ta bossan pibbyragh gaase ayns reeastyn as msatey troaryn.<ref name=uva/> S'cummey lesh y thalloo.
T'eh yn-ee myr [[glassan]] ny broit.<ref name=peterson>{{enmyslioar
| screeudeyr = Lee Allen Peterson
| ennym = Edible Wild Plants
| boayl = New York City
| soilsheyder = Houghton Mifflin Company
| blein = 1977
| duillag = 26
}}</ref> T'ad jannoo ymmyd jeh [[mess|messyn]] as [[rass|rassinyn]] aegey myr [[spios|spiossyn]], as blass [[pibbyr doo]] ny [[mustart]] oc.
== Imraaghyn ==
{{rolleyimraaghyn}}
==Kianglaghyn magh==
*[https://web.archive.org/web/20121009215446/http://ucjeps.berkeley.edu/cgi-bin/get_JM_treatment.pl?2240,2504,2505 Jepson Manual Treatment]
*[http://plants.usda.gov/java/profile?symbol=LECA5 USDA Plants Profile]
*[http://calphotos.berkeley.edu/cgi/img_query?query_src=photos_index&where-taxon=Lepidium+campestre Caslyssyn-soilshey]
{{gurneil eaghtyrys}}
[[Ronney:Lepidium|campestre]]
[[Ronney:Lossreeyn yn-ee]]
[[Ronney:Lossreeyn soilshit 'sy vlein 1753]]
[[Ronney:Tacsyn lus-oaylleeagh enmyssit lesh Carl Linnaeus]]
ibwuvv313c17kkr3wcbp7eq6c3kk5sp
Burleek ushtey
0
15728
394580
322335
2026-10-16T20:04:46Z
InternetArchiveBot
16702
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6
394580
wikitext
text/x-wiki
{{Kishtey fys baagh
| daah = #90EE90
| ennym = Burleek ushtey
| jalloo = Veronica anagallis-aquatica 5.jpg
| fo-heidyl_jalloo = Blaa burleek ushtey
| jalloo2 = Veronica anagallis-aquatica 8.jpg
| fo-heidyl_jalloo2 = Burleek ushtey gaase ayns ushtey thanney
| reeriaght = [[Plantae]]
| rheynn_neurheynnit = [[Angiospermae]]
| rang_neurheynnit = [[Eudicot|Eudicotyn]]
| oardagh_neurheynnit = [[Asterid|Asteridyn]]
| oardagh = [[Lamiales]]
| kynney = [[Plantaginaceae]]
| genus = ''[[Veronica (plant)|Veronica]]''
| dooie = '''''V. anagallis-aquatica'''''
| daaennymagh = ''Veronica anagallis-aquatica''
| imraa_daaennymagh = [[Carolus Linnaeus|L.]]
|}}
She lus [[lus lussagh|lussagh]] [[lus sheer-vio|sheer-vio]] eh '''burleek ushtey''' ('''''Veronica anagallis-aquatica'''''). T'eh gaase ayns thalloo fliugh as ushtey thanney.
==Jalloo-oaylleeaght==
She lus [[raisoam|raisoamagh]] t'ayn. Ta ny [[gass|gish]] echey 10cm-1m er lhiurid; ta kuse jeu snaueagh, as fir elley jeeragh. Ta [[duillag|duillagyn]] [[cummey duillag#maylartey|maylartey]] [[cummey duillag#rea|rea ny feeacklagh]] echey. Ta [[crouw-vlaaghey]] cur magh [[blaa|blaaghyn]] gorrym ny gorrym-jiargey er [[frauaig]]. Ta daa [[staimyn]] ec dagh blaa.
{{Commons|Veronica anagallis-aquatica|burleek ushtey}}
==Imraaghyn==
{{rolleyimraaghyn}}
==Kianglaghyn mooie==
*[https://web.archive.org/web/20100719114954/http://ucjeps.berkeley.edu/cgi-bin/get_JM_treatment.pl?7177,7600,7602 Jepson Manual Treatment]
*[https://web.archive.org/web/20101120033927/http://plants.usda.gov/java/profile?symbol=VEAN2 USDA Plants Profile]
[[Ronney:Veronica]]
5nrobjzdfi0gjcb986buc5huxw9ym0n
Burley garroo
0
15763
394581
377437
2026-10-16T20:07:55Z
InternetArchiveBot
16702
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6
394581
wikitext
text/x-wiki
{{Kishtey fys baagh
| daah = #90EE90
| ennym = Burley garroo
| jalloo = Arabis hirsuta - Keila.jpg
| fo-heidyl_jalloo = Burley garroo
| reeriaght = [[Plantae]]
| rheynn_neurheynnit = [[Angiospermae]]
| rang_neurheynnit = [[Eudicot|Eudicotyn]]
| oardagh_neurheynnit = [[Rosid|Rosidyn]]
| oardagh = [[Brassicales]]
| kynney = [[Brassicaceae]]
| genus = ''[[Arabis]]''
| dooie = '''''A. hirsuta'''''
| daaennymagh = ''Arabis hirsuta''
| imraa_daaennymagh = ([[Carolus Linnaeus|L.]]) [[Giovanni Antonio Scopoli|Scop.]]
|}}
She [[lus]] [[lus blaagh|blaagh]] eh '''burley garroo'''. T'eh dooghyssagh da'n [[yn Europey|Oarpey]], [[yn Aishey]], as [[America Hwoaie]] hwoaie.
==Kianglaghyn magh==
*[https://web.archive.org/web/20110608191432/http://ucjeps.berkeley.edu/cgi-bin/get_JM_treatment.pl?2240,2250,2269 Jepson Manual Treatment]
*[https://web.archive.org/web/20111021085032/http://plants.usda.gov/java/profile?symbol=ARHI USDA Plants Profile]
*[http://www.ars-grin.gov/cgi-bin/npgs/html/taxon.pl?414101 GRIN Species Profile]
*[http://calphotos.berkeley.edu/cgi/img_query?query_src=photos_index&where-taxon=Arabis+hirsuta Caslyssyn-soilshey]
{{commons|Arabis hirsuta}}
{{wikispecies|Arabis hirsuta|burley garroo}}
{{gurneil eaghtyrys}}
{{bun}}
[[Ronney:Arabis|Hirsuta]]
[[Ronney:Blaanid America Hwoaie]]
[[Ronney:Blaanid yn Aishey hempreilagh]]
[[Ronney:Blaanid yn Oarpey]]
[[Ronney:Blaanid yn Algear]]
[[Ronney:Blaanid y Varoc]]
[[Ronney:Tacsyn lus-oaylleeagh enmyssit lesh Carl Linnaeus]]
[[Ronney:Lossreeyn soilshit 'sy vlein 1753]]
slfbvtwybf22ib7kdv1w3pvhulgj0fo
Yn Toodaan Yiass
0
15929
394595
358051
2026-10-17T01:50:52Z
MacTire02
219
ennym
394595
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Toodaan Yiass
|ennym_foddey_cadjincliaghtagh= {{lang|en|Republic of South Sudan}} {{small|([[Baarle]])}}
|ennym_gienneydagh = y Toodaan Yiass
|jalloo_brattagh = Flag of South Sudan.svg
|jalloo_cleinney =Coat_of_arms_of_South_Sudan.svg
|jalloo_caslys =South_Sudan_(orthographic_projection)_highlighted.svg
|jarroo-raa = "Justice, Liberty, Prosperity" <small>([[Baarle]])</small><br />''Cairys, Seyrsnys, Berçhys''
|arrane_ashoonagh = "[[South Sudan Oyee!]]"
|arrane_reeoil =
|çhengaghyn_oikoil = [[Baarle]]
|preeu-valley = [[Juba]]
|latd=04 |latm=51 |latNS=N |longd=31 |longm=36 |longEW=E |latNSgael=Hwoaie |longEWgael=Hiar
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght]] [[deynlaghys reihdagh|gheynlagh]] [[corys eaghtyraneagh|eaghtyraneagh]] [[pobblaght chonastagh|chonastagh]]
|enmys1_fer-toshee = [[Rolley eaghtyraneyn y Toodaan Yiass|Eaghtyrane]]
|ennym1_fer-toshee = [[Salva Kiir Mayardit]]
|enmys2_fer-toshee = [[Rolley Lhiass-eaghtyraneyn y Toodaan Yiass|Lhiass-eaghtyrane]]
|ennym2_fer-toshee = [[Riek Machar]]
|eaghtyr_km2 = 619,745
|eaghtyr_mi_ker = 239,285
|eaghtyr_rhenk = 45-oo
|ushtey_sy_cheead =
|pobble_ooley =
|blein_ooley_pobble =
|rhenk_ooley_pobble =
|pobble_coontey = 8,260,490
|blein_coontey_pobble = 2008
|rhenk_coontey_pobble = 94
|glooaght_pobble_km2 = 13.3
|glooaght_pobble_mi_ker = 34.5
|rhenk_glooaght_pobble =
|possanyn_kynneeagh =
|blein_LTS_CCK =
|LTS_CCK =
|rhenk_LTS_CCK =
|LTS_CCK_yn_dooinney =
|rhenk_LTS_CCK_yn_dooinney =
|LTS_ennymagh = $13.227 billioon
|rhenk_LTS_ennymagh =
|blein_LTS_ennymagh = 2011
|LTS_ennymagh_yn_dooinney = $1,546
|rhenk_LTS_ennymagh_yn_dooinney =
|Gini =
|blein_Gini =
|rhenk_Gini =
|ronney_Gini =
|blein_ALD =
|ALD =
|rhenk_ALD =
|ronney_ALD =
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[Yn Toodaan|Toodaan]]
|taghyrt1_bunnit = Conaant Shee Ooilley-Ghoaillys
|date1_bunnit = 6 Jerrey Geuree 2005
|taghyrt2_bunnit = Hene-reiltys
|date2_bunnit = 9 Jerrey Souree 2005
|taghyrt3_bunnit = Seyrsnys
|date3_bunnit = 9 Jerrey Souree 2011
|argid = [[Punt y Toodaan Yiass]]
|coad_argid = SDG
|traa_ynnydagh = [[Traa yn Affrick Hiar]]
|ashchur_utc = +3
|traa_ynnydagh_TTLS =
|ashchur_utc_TTLS =
|cctld = [[.ss]] (recortyssit)
|coad_çhellvane = 211
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Toodaan Yiass'''. T'ee çhemmit liorish [[Yn Toodaan|y Toodaan]] da'n twoaie, liorish [[yn Eetoip]] da'n shiar, liorish [[Yn Cheinney|y Cheinney]], [[Ooganda]], as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Pobblaght yn Affrick Veanagh]] da'n sheear. She [[Juba]] yn preeu-valley.
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Toodaan Yiass, Yn}}
{{bun}}
[[Ronney:Yn Toodaan Yiass| ]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Boodeeys yn Affrick Hiar]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn conastagh]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 2011]]
564b29fxxdik81k402zr3pso1buwgpv
394596
394595
2026-10-17T01:51:04Z
MacTire02
219
++
394596
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Toodaan Yiass
|ennym_foddey_cadjincliaghtagh= {{lang|en|Republic of South Sudan|italics=no}} {{small|([[Baarle]])}}
|ennym_gienneydagh = y Toodaan Yiass
|jalloo_brattagh = Flag of South Sudan.svg
|jalloo_cleinney =Coat_of_arms_of_South_Sudan.svg
|jalloo_caslys =South_Sudan_(orthographic_projection)_highlighted.svg
|jarroo-raa = "Justice, Liberty, Prosperity" <small>([[Baarle]])</small><br />''Cairys, Seyrsnys, Berçhys''
|arrane_ashoonagh = "[[South Sudan Oyee!]]"
|arrane_reeoil =
|çhengaghyn_oikoil = [[Baarle]]
|preeu-valley = [[Juba]]
|latd=04 |latm=51 |latNS=N |longd=31 |longm=36 |longEW=E |latNSgael=Hwoaie |longEWgael=Hiar
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght]] [[deynlaghys reihdagh|gheynlagh]] [[corys eaghtyraneagh|eaghtyraneagh]] [[pobblaght chonastagh|chonastagh]]
|enmys1_fer-toshee = [[Rolley eaghtyraneyn y Toodaan Yiass|Eaghtyrane]]
|ennym1_fer-toshee = [[Salva Kiir Mayardit]]
|enmys2_fer-toshee = [[Rolley Lhiass-eaghtyraneyn y Toodaan Yiass|Lhiass-eaghtyrane]]
|ennym2_fer-toshee = [[Riek Machar]]
|eaghtyr_km2 = 619,745
|eaghtyr_mi_ker = 239,285
|eaghtyr_rhenk = 45-oo
|ushtey_sy_cheead =
|pobble_ooley =
|blein_ooley_pobble =
|rhenk_ooley_pobble =
|pobble_coontey = 8,260,490
|blein_coontey_pobble = 2008
|rhenk_coontey_pobble = 94
|glooaght_pobble_km2 = 13.3
|glooaght_pobble_mi_ker = 34.5
|rhenk_glooaght_pobble =
|possanyn_kynneeagh =
|blein_LTS_CCK =
|LTS_CCK =
|rhenk_LTS_CCK =
|LTS_CCK_yn_dooinney =
|rhenk_LTS_CCK_yn_dooinney =
|LTS_ennymagh = $13.227 billioon
|rhenk_LTS_ennymagh =
|blein_LTS_ennymagh = 2011
|LTS_ennymagh_yn_dooinney = $1,546
|rhenk_LTS_ennymagh_yn_dooinney =
|Gini =
|blein_Gini =
|rhenk_Gini =
|ronney_Gini =
|blein_ALD =
|ALD =
|rhenk_ALD =
|ronney_ALD =
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[Yn Toodaan|Toodaan]]
|taghyrt1_bunnit = Conaant Shee Ooilley-Ghoaillys
|date1_bunnit = 6 Jerrey Geuree 2005
|taghyrt2_bunnit = Hene-reiltys
|date2_bunnit = 9 Jerrey Souree 2005
|taghyrt3_bunnit = Seyrsnys
|date3_bunnit = 9 Jerrey Souree 2011
|argid = [[Punt y Toodaan Yiass]]
|coad_argid = SDG
|traa_ynnydagh = [[Traa yn Affrick Hiar]]
|ashchur_utc = +3
|traa_ynnydagh_TTLS =
|ashchur_utc_TTLS =
|cctld = [[.ss]] (recortyssit)
|coad_çhellvane = 211
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Toodaan Yiass'''. T'ee çhemmit liorish [[Yn Toodaan|y Toodaan]] da'n twoaie, liorish [[yn Eetoip]] da'n shiar, liorish [[Yn Cheinney|y Cheinney]], [[Ooganda]], as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Pobblaght yn Affrick Veanagh]] da'n sheear. She [[Juba]] yn preeu-valley.
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Toodaan Yiass, Yn}}
{{bun}}
[[Ronney:Yn Toodaan Yiass| ]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Boodeeys yn Affrick Hiar]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn conastagh]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 2011]]
hu8tbymrjj703erpqbuqcwus6r4do79
394597
394596
2026-10-17T01:51:55Z
MacTire02
219
++
394597
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Toodaan Yiass
|ennym_foddey_cadjincliaghtagh= {{lang|en|Republic of South Sudan|italics=no}} {{small|([[Baarle]])}}
|ennym_gienneydagh = y Toodaan Yiass
|jalloo_brattagh = Flag of South Sudan.svg
|jalloo_cleinney =Coat_of_arms_of_South_Sudan.svg
|jalloo_caslys =South_Sudan_(orthographic_projection)_highlighted.svg
|jarroo-raa = "Justice, Liberty, Prosperity" <small>([[Baarle]])</small><br />''Cairys, Seyrsnys, Berçhys''
|arrane_ashoonagh = "[[South Sudan Oyee!]]"
|arrane_reeoil =
|çhengaghyn_oikoil = [[Baarle]]
|preeu-valley = [[Juba]]
|latd=04 |latm=51 |latNS=N |longd=31 |longm=36 |longEW=E |latNSgael=Hwoaie |longEWgael=Hiar
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght]] [[deynlaghys reihdagh|gheynlagh]] [[corys eaghtyraneagh|eaghtyraneagh]] [[pobblaght chonastagh|chonastagh]]
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[Yn Toodaan|Toodaan]]
|taghyrt1_bunnit = Conaant Shee Ooilley-Ghoaillys
|date1_bunnit = 6 Jerrey Geuree 2005
|taghyrt2_bunnit = Hene-reiltys
|date2_bunnit = 9 Jerrey Souree 2005
|taghyrt3_bunnit = Seyrsnys
|date3_bunnit = 9 Jerrey Souree 2011
|traa_ynnydagh = [[Traa yn Affrick Hiar|EAT]]
|ashchur_utc = +03:00
|cctld = [[.ss]] (recortyssit)
|coad_çhellvane = 211
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Toodaan Yiass'''. T'ee çhemmit liorish [[Yn Toodaan|y Toodaan]] da'n twoaie, liorish [[yn Eetoip]] da'n shiar, liorish [[Yn Cheinney|y Cheinney]], [[Ooganda]], as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Pobblaght yn Affrick Veanagh]] da'n sheear. She [[Juba]] yn preeu-valley.
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Toodaan Yiass, Yn}}
{{bun}}
[[Ronney:Yn Toodaan Yiass| ]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Boodeeys yn Affrick Hiar]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn conastagh]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 2011]]
kij754p7gqbd8avtv88iwofyp4h7x8e
394598
394597
2026-10-17T01:52:48Z
MacTire02
219
-recortyssit; t'eh gobbraghey veih 2019
394598
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Toodaan Yiass
|ennym_foddey_cadjincliaghtagh= {{lang|en|Republic of South Sudan|italics=no}} {{small|([[Baarle]])}}
|ennym_gienneydagh = y Toodaan Yiass
|jalloo_brattagh = Flag of South Sudan.svg
|jalloo_cleinney =Coat_of_arms_of_South_Sudan.svg
|jalloo_caslys =South_Sudan_(orthographic_projection)_highlighted.svg
|jarroo-raa = "Justice, Liberty, Prosperity" <small>([[Baarle]])</small><br />''Cairys, Seyrsnys, Berçhys''
|arrane_ashoonagh = "[[South Sudan Oyee!]]"
|arrane_reeoil =
|çhengaghyn_oikoil = [[Baarle]]
|preeu-valley = [[Juba]]
|latd=04 |latm=51 |latNS=N |longd=31 |longm=36 |longEW=E |latNSgael=Hwoaie |longEWgael=Hiar
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght]] [[deynlaghys reihdagh|gheynlagh]] [[corys eaghtyraneagh|eaghtyraneagh]] [[pobblaght chonastagh|chonastagh]]
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[Yn Toodaan|Toodaan]]
|taghyrt1_bunnit = Conaant Shee Ooilley-Ghoaillys
|date1_bunnit = 6 Jerrey Geuree 2005
|taghyrt2_bunnit = Hene-reiltys
|date2_bunnit = 9 Jerrey Souree 2005
|taghyrt3_bunnit = Seyrsnys
|date3_bunnit = 9 Jerrey Souree 2011
|traa_ynnydagh = [[Traa yn Affrick Hiar|EAT]]
|ashchur_utc = +03:00
|cctld = [[.ss]]
|coad_çhellvane = 211
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Toodaan Yiass'''. T'ee çhemmit liorish [[Yn Toodaan|y Toodaan]] da'n twoaie, liorish [[yn Eetoip]] da'n shiar, liorish [[Yn Cheinney|y Cheinney]], [[Ooganda]], as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Pobblaght yn Affrick Veanagh]] da'n sheear. She [[Juba]] yn preeu-valley.
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Toodaan Yiass, Yn}}
{{bun}}
[[Ronney:Yn Toodaan Yiass| ]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Boodeeys yn Affrick Hiar]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn conastagh]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 2011]]
5agbr3q7sc9q936251x5p3vxbe5in70
394601
394598
2026-10-17T02:19:38Z
MacTire02
219
++
394601
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Toodaan Yiass
|ennym_foddey_cadjincliaghtagh= {{lang|en|Republic of South Sudan|italics=no}} {{small|([[Baarle]])}}
|ennym_gienneydagh = y Toodaan Yiass
|jalloo_brattagh = Flag of South Sudan.svg
|jalloo_cleinney =Coat_of_arms_of_South_Sudan.svg
|jalloo_caslys =South_Sudan_(orthographic_projection)_highlighted.svg
|jarroo-raa = {{lang|en|Justice, Liberty, Prosperity}}
|çhengey_jarroo-raa = Baarle
|çhyndaa_jarroo-raa = Cairys, Seyrsnys, Berçys
|arrane_ashoonagh = {{lang|en|[[South Sudan, Oyee!]]|italics=no}}
|coadan_arrane_ashoonagh = South_Sudan_Oyee!_(instrumental).ogg
|çhengey_arrane_ashoonagh = Baarle
|çhyndaa_arrane_ashoonagh = Y Toodaan Yiass Aboo!
|çhengaghyn_oikoil = [[Baarle]]<ref name="engwork">{{cite web |title=The Transitional Constitution of the Republic of South Sudan, 2011 |url=http://www.goss-online.org/magnoliaPublic/en/home/mainColumnParagraphs/0/content_files/file/FINAL%20TCRSS.doc |url-status=dead |archive-url=https://swap.stanford.edu/20110721121619/http://www.goss-online.org/magnoliaPublic/en/home/mainColumnParagraphs/0/content_files/file/FINAL%20TCRSS.doc |archive-date=21 Jerrey Souree 2011 |access-date=12 Jerrey Souree 2011 |publisher=Reiltys y Toodaan Yiass |at=Ayrn Nane, 6(2) |quote=English shall be the official working language in the Republic of South Sudan, as well as the language of instruction at all levels of education. |trans-quote=She Baarle vees y çhengey obbree oikoil ayns Pobblaght y Toodaan, chammah as çhengey ynsee ec dagh keim yn ynsee.}}</ref>
|çhengaghyn = {{hlist|[[Dinkish]]|[[Nuerish]]|[[Barish]]|[[Murleyish]]|[[Çhengaghyn Luo|Luoish (Anyuakish, Acholish, Shillukish, Parish, Jur-Luoish, elley)]]||[[Ma'dish]]|[[Otuhoish]]|[[Zandeyish]]}} as mysh 60 çhengey elley{{#tag:ref|The Transitional Constitution of the Republic of South Sudan, Part One, 6(1): "All indigenous languages of South Sudan are national languages and shall be respected, developed and promoted." [She çhengaghyn ashoonagh dagh çhengey vun-dooghyssagh y Toodaan Yiass as lhisagh ad ve ammyssit, lhiasit, as cummit seose.]<ref>{{cite web|url=http://www.sudantribune.com/IMG/pdf/The_Draft_Transitional_Constitution_of_the_ROSS2-2.pdf|title=The Transitional Constitution of the Republic of South Sudan, 2011|access-date=18 Mee Houney 2016|publisher=Reiltys y Toodaan Yiass|archive-url=https://web.archive.org/web/20110629170732/http://www.sudantribune.com/IMG/pdf/The_Draft_Transitional_Constitution_of_the_ROSS2-2.pdf|archive-date=29 Mean Souree 2011|url-status=live}}</ref>|group=note}}
|sorçh_çhengaghyn = [[Çhengey ashoonagh|Çhengaghyn ashoonagh]]
|preeu-valley = [[Juba]]
|latd=04|latm=51|latNS=N |longd=31 |longm=34|longEW=E
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght]] [[deynlaghys reihdagh|gheynlagh]] [[corys eaghtyraneagh|eaghtyraneagh]] [[pobblaght chonastagh|chonastagh]]
|sorçh_kiondeeaght = [[Shennaghys y Toodaan Yiass|Neuchrogheydys]]
|note_kiondeeaght = veih'n [[Yn Toodaan|Toodaan]]
|taghyrt_bunneeaght1 = [[Ard Hene-reiltagh y Toodaan Yiass (1972–1983)|1d ard hene-reiltagh]]
|date_bunneeaght1 = 28 Toshiaght Arree 1972
|taghyrt_bunneeaght2 = [[Ard Hene-reiltagh y Toodaan Yiass (2005–2011)|2h ard hene-reiltagh]]
|date_bunneeaght2 = 9 Jerrey Souree 2005
|taghyrt_bunneeaght3 = [[Refrane neuchrogheydys y Toodaan Yiass, 2011#Eiyrtyssyn|Fogrit as ennit]]
|date_bunneeaght3 = 9 Jerrey Souree 2011
|traa_ynnydagh = [[Traa yn Affrick Hiar|EAT]]
|ashchur_utc = +03:00
|cctld = [[.ss]]
|coad_çhellvane = 211
}}
She çheer 'syn [[yn Affrick|Affrick]] ee '''yn Toodaan Yiass'''. T'ee çhemmit liorish [[Yn Toodaan|y Toodaan]] da'n twoaie, liorish [[yn Eetoip]] da'n shiar, liorish [[Yn Cheinney|y Cheinney]], [[Ooganda]], as [[Pobblaght Gheynlagh y Chongo]] da'n jiass, as liorish [[Pobblaght yn Affrick Veanagh]] da'n sheear. She [[Juba]] yn preeu-valley.
==Noteyn==
{{reflist|group=note}}
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Affrick}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Toodaan Yiass, Yn}}
{{bun}}
[[Ronney:Yn Toodaan Yiass| ]]
[[Ronney:Çheeraghyn yn Affrick Veanagh]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Boodeeys yn Affrick Hiar]]
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn conastagh]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn sloo lhiasit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 2011]]
n0z9zgpnltnk6oejs5pjqnzsvtqlb6a
Rishon LeZion
0
17767
394582
363520
2026-10-16T21:40:06Z
InternetArchiveBot
16702
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6
394582
wikitext
text/x-wiki
{{Kishtey fys boayl
| ennym_gienneydagh = Rishon LeZion
| ennym = Rishon LeZion
| ennym_elley = <br /> ראשון לציון
| ennym_dooghyssagh =
| sorçh_balley = Ard-valley
| jalloo_armys = Rishon leZion Coat of Arms.svg
| mooadys_armys = 80px
| jalloo_brattagh = Flag of Rishon LeZion.svg
| mooadys_brattagh = 150px
| jarroo-raa =
| far-ennym =
| jalloo_bun_speyrey = PikiWiki Israel 8057 The lake in Rishon-Lezion Israel.jpg
| mooadys_jalloo = 250px
| fo-heidyl_jalloo = Reayrt speyrey er Rishon LeZion as y logh
| caslys-çheerey_broo-freeney = Israel
| soiaghey_lipaid_broo-freeney =
| fo-heidyl_caslys-çheerey_broo-freeney = Soiaghey Rishon LeZion ayns Israel
| mooadys_caslys-çheerey_broo-freeney =
| ard_coordnaidyn = IL
| taishbyney_coordnaidyn = inline, title
| sorçh_aarheynn = [[Rolley çheeraghyn y theihill|Çheer]]
| ennym_aarheynn = {{brattagh|Israel|Israel}}
| sorçh_aarheynn1 = [[Slystyn Israel|Slyst]]
| ennym_aarheynn1 = [[Slyst Veanagh, Israel|Meanagh]]
| enmys_bunneeaght= Bunnit
| date_bunneeaght = 1882
| sorçh_slane = Ard-valley
| enmys_fer-toshee = Meoir
| ennym_fer-toshee = [[Dov Tzur]]
| slane_earroo_yn_phobble = 232410
| earroo_yn_phobble_moir =
| earroo_yn_phobble_er = 2011
| fo-noteyn_earroo_yn_phobble =
| glooaght_y_phobble_km2 = 3965
| slane_eaghtyr_km2 = 58.6
| fo-noteyn_eaghtyr =
| cryss_hraa = [[Traa ynnydagh Israel|IST]]
| ashchur_utc = +2
| cryss_hraa_TTSL = [[Traa Houree Israel|IDT]]
| ashchur_utc_TTSL = +3
| yrjid_m = 40
| latd = 31 |latm = 57 |lats = 40 |latNS = N
| longd = 34 |longm = 48 |longs = 38 |longEW = E
| coad_ardjynagh = 03
| ynnyd-eggey = {{URL|www.rishonlezion.muni.il}}
| fo-noteyn =
}}
She '''Rishon LeZion''' ({{lang-he-n|רִאשׁוֹן לְצִיּוֹן}}, "Y Chied gys Seion") y kiarroo ard-valley smoo ayns [[Israel]]. T'eh soit rish [[thalloo rea slystagh Israel]] 12 km çheu yiass veih [[Tel Aviv]]. T'eh soit ayns ard moirvaljagh [[Gush Dan]].
'Sy vlein 2011 va 232,410 deiney cummal 'syn ard-valley. Va'n ard-valley bunnit 'sy vlein 1882 ec arreyderyn stiagh Ewagh veih'n Oarpey, as by ayn va'n nah valley gowaltagh ayns [[Eretz Israel]] currit er bun, lurg [[Petah Tikva]].
==Mooinjerys eddyr-ashoonagh==
{{jeeagh|Rolley baljyn as ard-valjyn lannoonit ayns Israel}}
===Baljyn as ard-valjyn lannoonit===
{| class="wikitable"
|- valign="top"
|
*{{brattagh|Romania}} [[Braşov]], [[Yn Romaan|y Romaan]]
*{{brattagh|Hungary}} [[Debrecen]], [[yn Ungaar]]
*{{brattagh|Ethiopia}} [[Gondar]], [[yn Eetoip]]
*{{brattagh|Ukraine}} [[Kharkiv]], [[yn Ookraan]]
*{{brattagh|Israel}} [[Kiryat Shmona]], Israel
*{{brattagh|the Netherlands}} [[Heerenveen]], [[Yn Çheer Injil|y Çheer Injil]]
||
*{{brattagh|Poland}} [[Lublin]], [[Yn Pholynn|y Pholynn]]
*{{brattagh|Ukraine}} [[Lviv]], yn Ookraan
*{{brattagh|the United States}} [[Essex County, New Jersey|Essex County]], [[ny Steatyn Unnaneysit]]
*{{brattagh|Germany}} [[Münster]], [[Yn Ghermaan|y Ghermaan]]
*{{brattagh|France}} [[Nîmes]], [[Yn Rank|y Rank]]
||
*{{brattagh|the United States}} [[Prince George's County]], ny Steatyn Unnaneysit
*{{brattagh|Slovakia}} [[Prešov]], [[Yn Clovack|y Clovack]]
*{{brattagh|Russia}} [[Caayr Pheddyr]], [[Yn Roosh|y Roosh]]
*{{brattagh|Italy}} [[Teramo]], [[yn Iddaal]]
*{{brattagh|the People's Republic of China}} [[Tianjin]], [[Deynphobblaght ny Sheen|y Çheen]]
|}
==Kianglaghyn magh==
{{Commonscat}}
* [https://web.archive.org/web/20061028164950/http://www.rishonlezion.muni.il/ Baljaght Rishon LeZion] {{he jalloo}}
* [https://web.archive.org/web/20131005015808/http://www.govisitisrael.com/articlenav.php?id=119 Buill hurryssagh ayns Rishon LeZion] {{en jalloo}}
{{Gurneil eaghtyrys}}
[[Ronney:Rishon LeZion| ]]
[[Ronney:Ard-valjyn 'sy Clyst Veanagh (Israel)]]
[[Ronney:Baljyn beggey Ewagh 'syn Impiraght Ottomanagh]]
[[Ronney:Buill chummaltit bunnit 'sy vlein 1882]]
[[Ronney:Bunneeaghtyn 'syn Impiraght Ottomanagh 'sy vlein 1882]]
[[Ronney:Yn Teer Ottomanagh 'sy vlein 1882]]
[[Ronney:Ard-valjyn ayns Israel]]
3w710zmbpnz83gkjqywoh8dd5oiei3g
Mike Pollitt
0
20211
394638
347025
2026-10-17T06:36:18Z
MacTire02
219
chiarrymeeaght
394638
wikitext
text/x-wiki
{{WD Kishtey Fys Dooinney
|ennym_ruggyr = Michael Pollitt
|boayl_ruggyr = [[Farnworth]], Sostyn
}}
She [[soccer|eear-vluckaneyr]] keirdey Sostynagh eh '''Michael Francis Pollitt''' (ruggit er 29 Toshiaght Arree 1972).
==Kianglaghyn magh==
* {{Soccerbase}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Pollitt, Mike}}
[[Ronney:Ruggyryn 'sy vlein 1972]]
[[Ronney:Feallee vio]]
[[Ronney:Feallee ass Farnworth]]
[[Ronney:Bluckaneyryn soccer firryn Sostynagh]]
[[Ronney:Bluckaneyryn Manchester United F.C.]]
[[Ronney:Bluckaneyryn Oldham Athletic A.F.C.]]
[[Ronney:Bluckaneyryn Macclesfield Town F.C.]]
[[Ronney:Bluckaneyryn Bury F.C.]]
[[Ronney:Bluckaneyryn Lincoln City F.C.]]
[[Ronney:Bluckaneyryn Altrincham F.C.]]
[[Ronney:Bluckaneyryn Darlington F.C.]]
[[Ronney:Bluckaneyryn Notts County F.C.]]
[[Ronney:Bluckaneyryn Gillingham F.C.]]
[[Ronney:Bluckaneyryn Brentford F.C.]]
[[Ronney:Bluckaneyryn Sunderland A.F.C.]]
[[Ronney:Bluckaneyryn Rotherham United F.C.]]
[[Ronney:Bluckaneyryn Chesterfield F.C.]]
[[Ronney:Bluckaneyryn Wigan Athletic F.C.]]
[[Ronney:Bluckaneyryn Ipswich Town F.C.]]
[[Ronney:Bluckaneyryn Burnley F.C.]]
[[Ronney:Bluckaneyryn Barnsley F.C.]]
[[Ronney:Bluckaneyryn Premier League Hostyn]]
[[Ronney:Bluckaneyryn Football League Hostyn]]
[[Ronney:Fwirran neu-chloie Wigan Athletic F.C.]]
[[Ronney:Fwirran neu-chloie Rotherham United F.C.]]
[[Ronney:Fwirran neu-chloie Bolton Wanderers F.C.]]
[[Ronney:Fwirran neu-chloie Preston North End F.C.]]
majhbkbikgv9qr0p42be4hgn5mwqwxt
Module:Citation/CS1/Configuration
828
26975
394558
394336
2026-10-16T16:37:01Z
MacTire02
219
++
394558
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates
--[[--------------------------< S E T T I N G S >--------------------------------------------------------------
boolean settings used to control various things. these setting located here to make them easy to find
]]
-- these settings local to this module only
local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki
local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki;
-- manual translation required else; ; always false at en.wiki
-- these settings exported to other modules
local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki
local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki
local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki
local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki
local enable_sort_keys = true; -- when true module adds namespace sort keys to error and maintenance category links
local suppress_archive_today_urls = true; -- when true module suppresses all parameters with an archive.today url and any deprendent parameters
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
List of namespaces identifiers for namespaces that will not be included in citation error categories.
Same as setting notracking = true by default.
For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered
list of namespace names and their associated identifiers:
{{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}}
]]
local uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id
for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids
uncategorized_namespaces_t[k] = true;
end
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize
--[[
at en.wiki Greek characters are used as sort keys for certain items in a category so that those items are
placed at the end of a category page. See Wikipedia:Categorization#Sort_keys. That works well for en.wiki
because English is written using the Latn script. This may not work well for other languages. At en.wiki it
is desireable to place content from certain namespaces at the end of a category listing so the module adds sort
keys to error and maintenance category links when rendering a cs1|2 template on a page in that namespace.
i18n: if this does not work well for your language, set <enable_sort_keys> to false.
]]
local name_space_sort_keys = { -- sort keys to be used with these namespaces:
[4] = 'ω', -- wikipedia; omega
[10] = 'τ', -- template; tau
[118] = 'Δ', -- draft; delta
['other'] = 'ο', -- all other non-talk namespaces except main (article); omicron
}
--[[--------------------------< M E S S A G E S >--------------------------------------------------------------
Translation table
The following contains fixed text that may be output as part of a citation.
This is separated from the main body to aid in future translations of this
module.
]]
local messages = {
['agency'] = '$1 $2', -- $1 is sepc, $2 is agency
['archived-dead'] = 'Er ny hashtey veih $1 er $2',
['archived-live'] = '$1 veih’n lhieggan bunneydagh er $2',
['archived-unfit'] = 'Er ny hashtey veih’n lhieggan bunneydagh er $1',
['archived'] = 'Tashtit',
['by'] = 'Lesh', -- contributions to authored works: introduction, foreword, afterword
['cartography'] = 'Cartography by $1',
['editor'] = 'ln.',
['editors'] = 'ln.',
['edition'] = '($1 ln.)',
['episode'] = 'Episode $1',
['et al'] = 'et al.',
['in'] = 'Ayns', -- edited works
['inactive'] = ' (inactive $1)', -- $1 is date which the doi was found to be broken in
['inset'] = '$1 inset',
['interview'] = 'Interviewed by $1',
invisible_1 = '$1 $2', -- $1 stripmarker name; $2 is text from <invisible_chars[1]>
invisible_2 = '$1 character', -- $1 character name from <invisible_chars[1]>
['mismatch'] = '<code class="cs1-code">|$1=</code> / <code class="cs1-code">|$2=</code> mismatch', -- $1 is year param name; $2 is date param name
['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]: $1',
['notitle'] = 'Enmys erbee', -- for |title=(()) and (in the future) |title=none
['original'] = 'y lhieggan bunneydagh',
['origdate'] = ' [$1]',
['published'] = ' (published $1)',
['retrieved'] = 'Feddynit er $1',
['season'] = 'Season $1',
['section'] = '§ $1',
['sections'] = '§§ $1',
['series'] = '$1 $2', -- $1 is sepc, $2 is series
['seriesnum'] = 'Series $1',
['translated'] = 'Er ny hyndaa lesh $1',
['type'] = ' ($1)', -- for titletype
wikidata = 'Wikidata', -- these used for interwikilinked author/editor/... names
wikipedia = 'Wikipedia',
wikisource = 'Wikisource',
['written'] = 'Screeuit ec $1',
['vol'] = '$1 Vol. $2', -- $1 is sepc; bold journal style volume is in presentation{}
['vol-no'] = '$1 Vol. $2, no. $3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization)
['issue'] = '$1 No. $2', -- $1 is sepc
['art'] = '$1 Art. $2', -- $1 is sepc; for {{cite conference}} only
['vol-art'] = '$1 Vol. $2, art. $3', -- sepc, volume, article-number; for {{cite conference}} only
['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{}
['j-issue'] = ' ($1)',
['j-article-num'] = ' $1', -- TODO: any punctuation here? static text?
['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc
['p-prefix'] = "$1 dg. $2", -- $1 is sepc
['pp-prefix'] = "$1 dgn. $2", -- $1 is sepc
['j-page(s)'] = ': $1', -- same for page and pages
['sheet'] = '$1 Sheet $2', -- $1 is sepc
['sheets'] = '$1 Sheets $2', -- $1 is sepc
['j-sheet'] = ': Sheet $1',
['j-sheets'] = ': Sheets $1',
['language'] = '(ayns $1)',
['via'] = " – via $1",
['event'] = 'Event occurs at',
['minutes'] = ' $1 minutes in', -- $1 is the number of minutes
-- Determines the location of the help page
['help page link'] = 'Help:CS1 errors',
['help page label'] = 'help',
-- categories
['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name
['cat wikilink sk'] = '[[Category:$1|$2]]', -- $1 is the category name; $2 is namespace sort key
[':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name
-- Internal errors (should only occur if configuration is bad)
['undefined_error'] = 'Called with an undefined error condition',
['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{}
['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{}
['unknown_argument_map'] = 'Argument map not defined for this variable',
['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty',
['warning_msg_e'] = '<span style="color:#d33"><code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code>: this [[#$2|reference]] has errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link; $2 is anchor ID
['warning_msg_m'] = '<span style="color:#085"><code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code>: this [[#$2|reference]] has maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link; $2 is anchor ID
}
--[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------
this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when
the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are
used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while
the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the
template's documentation when an article is displayed in preview mode.
]]
local citation_class_map_t = { -- TODO: in Module:Cite/config write a function to use this table
arxiv = 'cite arXiv', -- as the source for known_templates_t and citation_classes_t
['audio-visual'] = 'cite AV media',
['AV-media-notes'] = 'cite AV media notes',
biorxiv = 'cite bioRxiv',
book = 'cite book',
citation = 'citation',
citeseerx = 'cite CiteSeerX',
conference = 'cite conference',
document = 'cite document',
encyclopaedia = 'cite encyclopedia',
episode = 'cite episode',
interview = 'cite interview',
journal = 'cite journal',
magazine = 'cite magazine',
mailinglist = 'cite mailing list',
map = 'cite map',
medrxiv = 'cite medRxiv',
news = 'cite news',
newsgroup = 'cite newsgroup',
podcast = 'cite podcast',
pressrelease = 'cite press release',
report = 'cite report',
serial = 'cite serial',
sign = 'cite sign',
speech = 'cite speech',
ssrn = 'cite SSRN',
techreport = 'cite tech report',
thesis = 'cite thesis',
web = 'cite web',
}
--[=[-------------------------< E T _ A L _ P A T T E R N S >--------------------------------------------------
This table provides Lua patterns for the phrase "et al" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.
]=]
local et_al_patterns = {
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match)
"[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al.
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form
"%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax)
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form
}
--[[--------------------------< P R E S E N T A T I O N >------------------------
Fixed presentation markup. Originally part of citation_config.messages it has
been moved into its own, more semantically correct place.
]]
local presentation =
{
-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>',
['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>',
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like
['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc.
['interwiki'] = ' <span class="cs1-format">[ayns $1]</span>', -- for interwiki-language-linked author, editor, etc
['interproj'] = ' <span class="cs1-format">[ec $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored)
-- various access levels, for |access=, |doi-access=, |arxiv=, ...
-- narrow no-break space   may work better than nowrap CSS. Or not? Browser support?
['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon
['free'] = {class='id-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
['registration'] = {class='id-lock-registration', title='Free registration required'},
['limited'] = {class='id-lock-limited', title='Free access subject to limited trial, subscription normally required'},
['subscription'] = {class='id-lock-subscription', title='Paid subscription required'},
['interwiki-icon'] = '<span class="$1" title="$2">$3</span>',
['class-wikisource'] = 'cs1-ws-icon',
['italic-title'] = "''$1''",
['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark
['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark
['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span>
['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
['ocins'] = '<span title="$1" class="Z3988"></span>',
['parameter'] = '<code class="cs1-code">|$1=</code>',
['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character
['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string)
['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content
['quoted-title'] = '"$1"',
['sep_cs1'] = '.', -- CS1 element separator
['sep_cs2'] = ',', -- CS2 separator
['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon
['sep_nl_and'] = ' as ', -- used as last nl sep when |name-list-style=and and list has 2 items
['sep_nl_end'] = '; as ', -- used as last nl sep when |name-list-style=and and list has 3+ names
['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space>
['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma
['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space
['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end
['sep_list_pair'] = ' as ', -- used for |language= when list has 2 items
['sep_list_end'] = ', as ', -- used as last list sep for |language= when list has 3+ items
['trans-italic-title'] = "[''$1'']",
['trans-quoted-title'] = "[$1]", -- for |trans-title= and |trans-quote=
['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{}
}
--[[--------------------------< A L I A S E S >---------------------------------
Aliases table for commonly passed parameters.
Parameter names on the right side in the assignments in this table must have been
defined in the Whitelist before they will be recognized as valid parameter names
]]
local aliases = {
['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot
['Agency'] = 'agency',
['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot
['ArchiveFormat'] = 'archive-format',
['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot
['ArticleNumber'] = 'article-number',
['ASINTLD'] = 'asin-tld',
['At'] = 'at', -- Used by InternetArchiveBot
['Authors'] = {'people', 'credits', 'ughtaryn'},
['BookTitle'] = {'book-title', 'booktitle'},
['Cartography'] = 'cartography',
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'},
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format',
'article-format', 'section-format'};
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url'}, -- Used by InternetArchiveBot
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access',
'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot
['Class'] = 'class', -- cite arxiv and arxiv identifier
['Collaboration'] = 'collaboration',
['Conference'] = {'conference', 'event'},
['ConferenceFormat'] = 'conference-format',
['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot
['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only
['Degree'] = 'degree',
['DF'] = 'df',
['DisplayAuthors'] = {'display-authors', 'display-subjects'},
['DisplayContributors'] = 'display-contributors',
['DisplayEditors'] = 'display-editors',
['DisplayInterviewers'] = 'display-interviewers',
['DisplayTranslators'] = 'display-translators',
['Docket'] = 'docket',
['DoiBroken'] = 'doi-broken-date',
['Edition'] = {'edition', 'lhieggan'},
['Embargo'] = 'pmc-embargo-date',
['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary', 'kicklipaid', 'fockleyr'}, -- cite encyclopedia only
['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode?
['Format'] = 'format',
['ID'] = {'id', 'ID'},
['Inset'] = 'inset',
['Issue'] = {'issue', 'number', 'cur magh'},
['Language'] = {'language', 'lang', 'çhengey'},
['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only
['Map'] = 'map', -- cite map only
['MapFormat'] = 'map-format', -- cite map only
['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot
['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot
['Minutes'] = 'minutes',
['Mode'] = 'mode',
['NameListStyle'] = 'name-list-style',
['Network'] = 'network',
['Newsgroup'] = 'newsgroup', -- cite newsgroup only
['NoPP'] = {'no-pp', 'nopp'},
['NoTracking'] = {'no-tracking', 'template-doc-demo'},
['Number'] = 'number', -- this case only for cite techreport
['OrigDate'] = {'orig-date', 'orig-year', 'origyear'},
['Others'] = 'others',
['Page'] = {'page', 'p', 'duillag', 'dg', 'dg.'}, -- Used by InternetArchiveBot
['Pages'] = {'pages', 'pp', 'duillagyn', 'dgn', 'dgn.'}, -- Used by InternetArchiveBot
['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work', 'earishlioar', 'jurnyl', 'pabyr-naight', 'pabyr naight', 'ynnyd-eggey', 'obbyr'},
['Place'] = {'place', 'location'},
['PostScript'] = 'postscript',
['PublicationDate'] = {'publication-date', 'publicationdate'},
['PublicationPlace'] = {'publication-place', 'publicationplace'},
['PublisherName'] = {'publisher', 'institution', 'soilsheyder'},
['Quote'] = {'quote', 'quotation'},
['QuotePage'] = 'quote-page',
['QuotePages'] = 'quote-pages',
['Ref'] = 'ref',
['Scale'] = 'scale',
['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry',
'script-article', 'script-section'},
['ScriptEncyclopedia'] = {'script-encyclopedia', 'script-encyclopaedia'}, -- cite encyclopedia only
['ScriptMap'] = 'script-map',
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper',
'script-periodical', 'script-website', 'script-work'},
['ScriptQuote'] = 'script-quote',
['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot
['Season'] = 'season',
['Sections'] = 'sections', -- cite map only
['Series'] = {'series', 'version'},
['SeriesLink'] = {'series-link', 'serieslink'},
['SeriesNumber'] = {'series-number', 'series-no'},
['Sheet'] = 'sheet', -- cite map only
['Sheets'] = 'sheets', -- cite map only
['Station'] = 'station',
['Time'] = 'time',
['TimeCaption'] = 'time-caption',
['Title'] = {'title', 'enmys'}, -- Used by InternetArchiveBot
['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot
['TitleNote'] = {'title-note', 'department'},
['TitleType'] = {'type', 'medium'},
['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution',
'trans-entry', 'trans-section'},
['Transcript'] = 'transcript',
['TranscriptFormat'] = 'transcript-format',
['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot
['TransEncyclopedia'] = {'trans-encyclopedia', 'trans-encyclopaedia'}, -- cite encyclopedia only
['TransMap'] = 'trans-map', -- cite map only
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper',
'trans-periodical', 'trans-website', 'trans-work'},
['TransQuote'] = 'trans-quote',
['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot
['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot
['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot
['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot
['Vauthors'] = 'vauthors',
['Veditors'] = 'veditors',
['Via'] = 'via',
['Volume'] = 'volume',
['Year'] = 'year',
['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given",
"subject-first#", "subject#-first", "subject-given#", "subject#-given",
"given#"},
['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname",
"subject-last#", "subject#-last", "subject-surname#", "subject#-surname",
"author#", 'host#', "subject#", "surname#", 'ughtar#'},
['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#",
"subject#-link", "authorlink#", "author#link"},
['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"},
['ContributorList-First'] = {'contributor-first#', 'contributor#-first',
'contributor-given#', 'contributor#-given'},
['ContributorList-Last'] = {'contributor-last#', 'contributor#-last',
'contributor-surname#', 'contributor#-surname', 'contributor#'},
['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'},
['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'},
['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"},
['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#",
"editor#-surname", "editor#"},
['EditorList-Link'] = {"editor-link#", "editor#-link"},
['EditorList-Mask'] = {"editor-mask#", "editor#-mask"},
['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first',
'interviewer-given#', 'interviewer#-given'},
['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last',
'interviewer-surname#', 'interviewer#-surname', 'interviewer#'},
['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'},
['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'},
['TranslatorList-First'] = {'translator-first#', 'translator#-first',
'translator-given#', 'translator#-given'},
['TranslatorList-Last'] = {'translator-last#', 'translator#-last',
'translator-surname#', 'translator#-surname', 'translator#'},
['TranslatorList-Link'] = {'translator-link#', 'translator#-link'},
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'},
}
--[[--------------------------< D E P E N D E N C I E S _ T >--------------------------------------------------
a table of url-holding parameters upon which other parameters are dependent.
this table is used by has_archive_today_url() to suppress parameters that are dependant upon a url-holding parameter
that has as a value an archive.today (or alternate tld) url.
archive.today is deprecated at en.wiki; see Wikipedia:Requests_for_comment/Archive.is_RFC_5
]]
local url_dependency_map_t = { -- table of url-holding parameters and the meta-parameters that are dependent on them
['url'] = {'AccessDate', 'ArchiveURL', 'Format', 'UrlAccess'},
['archive-url'] = {'ArchiveDate', 'ArchiveFormat', 'UrlStatus'},
['archiveurl'] = {'ArchiveDate', 'ArchiveFormat', 'UrlStatus'},
['article-url'] = {'ChapterFormat', 'ChapterUrlAccess'},
['chapter-url'] = {'ChapterFormat', 'ChapterUrlAccess'},
['conference-url'] = {'ConferenceFormat'},
['contribution-url'] = {'ChapterFormat', 'ChapterUrlAccess'},
['entry-url'] = {'ChapterFormat', 'ChapterUrlAccess'},
['map-url'] = {'MapFormat', 'MapUrlAccess'},
['section-url'] = {'ChapterFormat', 'ChapterUrlAccess'},
['transcript-url'] = {'TranscriptFormat'},
};
local dependencies_t = {}; -- the table of url-holding parameters and their dependent parameters
for url_param, meta_parameters_t in pairs (url_dependency_map_t) do -- sequence of meta-parameters (indexes) into <aliases> table
local dependant_params_t = {}; -- collection of parameters that are dependent on this <url_param>
for _, meta_parameter in ipairs (meta_parameters_t) do -- for each <aliases> meta-parameter (index)
if 'string' == type (aliases[meta_parameter]) then -- for single parameter names (no aliases), <aliases[meta_parameter]> will be a string
table.insert (dependant_params_t, aliases[meta_parameter]); -- add to this <url_param>'s dependency sequence
else
for _, alias in ipairs (aliases[meta_parameter]) do -- for each alias in aliases[meta_parameter] (aliases['AccessDate'] for example)
table.insert (dependant_params_t, alias); -- add to this <url_param>'s dependency sequence
end
end
end
dependencies_t[url_param] = dependant_params_t; -- add the <url_param> and its dependent parameters
end
--[[--------------------------< P U N C T _ S K I P >---------------------------
builds a table of parameter names that the extraneous terminal punctuation check should not check.
]]
local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters
'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators
'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters
}
local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls
'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls
}
local function build_skip_table (skip_t, meta_params)
for _, meta_param in ipairs (meta_params) do -- for each meta parameter key
local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name
if 'string' == type (params) then
skip_t[params] = 1; -- just a single parameter
else
for _, param in ipairs (params) do -- get the parameter name
skip_t[param] = 1; -- add the parameter name to the skip table
local count;
param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters
if 0 ~= count then -- if removed
skip_t[param] = 1; -- add param name without enumerator marker
end
end
end
end
return skip_t;
end
local punct_skip = {};
local url_skip = {};
--[[--------------------------< U R L _ A C C E S S _ M A P >--------------------------------------------------
this table used by the wikipedia library url test, has_twl_url(), which automatically sets a url-access parameter
to 'subscription' when it discovers a wikipedia library url in any of the url-holding paramters used as keys in
this table.
translators: if your wiki uses parameter names for these url-holding parameters and their matching -access parameters,
add your wiki's parameters to this list. Leave the English parameters in place.
TODO: is there a better way to do this?
]]
local url_access_map_t = {
['chapter-url'] = 'chapter-url-access',
['contribution-url'] = 'contribution-url-access',
['entry-url'] = 'entry-url-access',
['article-url'] = 'article-url-access',
['section-url'] = 'section-url-access',
['map-url'] = 'map-url-access',
['mapurl'] = 'map-url-access',
['url'] = 'url-access',
['URL'] = 'url-access'
}
--[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >----------
this is a list of tlds that are known to have single-letter second-level domain names. This list does not include
ccTLDs which are accepted in is_domain_name().
]]
local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'media', 'org', 'today'};
--[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------
This table is primarily here to support internationalization. Translations in
this table are used, for example, when an error message, category name, etc.,
is extracted from the English alias key. There may be other cases where
this translation table may be useful.
]]
local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143\225\184\128-\225\187\191';
local special_case_translation = {
author = {'author', 'ughtar'},
editor = 'editor',
name_list_params = '$1-name-list parameters', -- $1 is 'author' or 'editor'; used with err_redundant_parameters
['AuthorList'] = 'authors list', -- used to assemble maintenance category names
['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below
['EditorList'] = 'editors list', -- must match the names of the actual categories
['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names()
['TranslatorList'] = 'translators list',
-- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value
['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title
['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki
['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
},
-- Lua patterns to match generic titles; usually created by bots or reference filling tools
-- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
-- generic titles and patterns in this table should be lowercase only
-- leave ['local'] nil except when there is a matching generic title in your language
-- boolean 'true' for plain-text searches; 'false' for pattern searches
['generic_titles'] = {
['accept'] = {
},
['reject'] = {
{['en'] = {'^wayback%s+machine$', false}, ['local'] = nil},
{['en'] = {'are you a robot', true}, ['local'] = nil},
{['en'] = {'hugedomains', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'page not found', true}, ['local'] = nil},
{['en'] = {'subscribe to read', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'website is for sale', true}, ['local'] = nil},
{['en'] = {'^404', false}, ['local'] = nil},
{['en'] = {'error[ %-]404', false}, ['local'] = nil},
{['en'] = {'internet archive wayback machine', true}, ['local'] = nil},
{['en'] = {'log into facebook', true}, ['local'] = nil},
{['en'] = {'login • instagram', true}, ['local'] = nil},
{['en'] = {'redirecting...', true}, ['local'] = nil},
{['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot
{['en'] = {'wayback machine', true}, ['local'] = nil},
{['en'] = {'webcite query result', true}, ['local'] = nil},
{['en'] = {'wikiwix\'s cache', true}, ['local'] = nil},
{['en'] = {'bot verification', true}, ['local'] = nil},
}
},
-- boolean 'true' for plain-text searches, search string must be lowercase only
-- boolean 'false' for pattern searches
-- leave ['local'] nil except when there is a matching generic name in your language
['generic_names'] = {
['accept'] = {
{['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil},
},
['reject'] = {
{['en'] = {'about us', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil},
{['en'] = {'allmusic', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil},
{['en'] = {'^[Bb]ureau$', false}, ['local'] = nil},
{['en'] = {'business', true}, ['local'] = nil},
{['en'] = {'cnn', true}, ['local'] = nil},
{['en'] = {'collaborator', true}, ['local'] = nil},
{['en'] = {'^[Cc]ompany$', false}, ['local'] = nil},
{['en'] = {'contributor', true}, ['local'] = nil},
{['en'] = {'contact us', true}, ['local'] = nil},
{['en'] = {'correspondent', true}, ['local'] = nil},
{['en'] = {'^[Dd]esk$', false}, ['local'] = nil},
{['en'] = {'directory', true}, ['local'] = nil},
{['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil},
{['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil},
{['en'] = {'^eds?[%.,;]', false}, ['local'] = nil},
{['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]mail%f[%A]', false}, ['local'] = nil},
{['en'] = {'facebook', true}, ['local'] = nil},
{['en'] = {'google', true}, ['local'] = nil},
{['en'] = {'^[Gg]roup$', false}, ['local'] = nil},
{['en'] = {'home page', true}, ['local'] = nil},
{['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil},
{['en'] = {'instagram', true}, ['local'] = nil},
{['en'] = {'interviewer', true}, ['local'] = nil},
{['en'] = {'^[Ll]imited$', false}, ['local'] = nil},
{['en'] = {'linkedIn', true}, ['local'] = nil},
{['en'] = {'^[Nn]ews$', false}, ['local'] = nil},
{['en'] = {'[Nn]ews[ %-]?[Rr]oom', false}, ['local'] = nil},
{['en'] = {'pinterest', true}, ['local'] = nil},
{['en'] = {'policy', true}, ['local'] = nil},
{['en'] = {'privacy', true}, ['local'] = nil},
{['en'] = {'reuters', true}, ['local'] = nil},
{['en'] = {'translator', true}, ['local'] = nil},
{['en'] = {'tumblr', true}, ['local'] = nil},
{['en'] = {'twitter', true}, ['local'] = nil},
{['en'] = {'site name', true}, ['local'] = nil},
{['en'] = {'statement', true}, ['local'] = nil},
{['en'] = {'submitted', true}, ['local'] = nil},
{['en'] = {'super.?user', false}, ['local'] = nil},
{['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil},
{['en'] = {'updated', true}, ['local'] = nil},
{['en'] = {'verfasser', true}, ['local'] = nil},
}
}
}
--[[--------------------------< D A T E _ N A M E S >----------------------------------------------------------
This table of tables lists local language date names and fallback English date names.
The code in Date_validation will look first in the local table for valid date names.
If date names are not found in the local table, the code will look in the English table.
Because citations can be copied to the local wiki from en.wiki, the English is
required when the date-name translation function date_name_xlate() is used.
In these tables, season numbering is defined by
Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard
defines various divisions using numbers 21-41. CS1|2 only supports generic seasons.
EDTF does support the distinction between north and south hemisphere seasons
but CS1|2 has no way to make that distinction.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
The standard does not address 'named' dates so, for the purposes of CS1|2,
Easter and Christmas are defined here as 98 and 99, which should be out of the
ISO 8601 (EDTF) range of uses for a while.
local_date_names_from_mediawiki is a boolean. When set to:
true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short']; this will unconditionally overwrite manual translations
false – module will *not* fetch local month names from MediaWiki
Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test
the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted):
=mw.dumpObject (p.date_names['local'])
While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names
from MediaWiki. Those must be translated manually.
]]
local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short']; overwrites manual translations
-- when true, module fetches long and short month names from MediaWiki
local date_names = {
['en'] = { -- English
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
-- when local_date_names_from_mediawiki = false
['local'] = { -- replace these English date names with the local language equivalents
['long'] = {['Jerrey Geuree'] = 1, ['Toshiaght Arree'] = 2, ['Mayrnt'] = 3, ['Averil'] = 4, ['Boaldyn'] = 5, ['Mean Souree'] = 6, ['Jerrey Souree'] = 7, ['Luanistyn'] = 8, ['Mean Fouyir'] = 9, ['Jerrey Fouyir'] = 10, ['Mee Houney'] = 11, ['Mee ny Nollick'] = 12},
['short'] = {['J Geu'] = 1, ['T Arr'] = 2, ['Mayr'] = 3, ['Ave'] = 4, ['Boal'] = 5, ['M Sou'] = 6, ['J Sou'] = 7, ['Luan'] = 8, ['M Fou'] = 9, ['J Fou'] = 10, ['M Hou'] = 11, ['Nol'] = 12},
['quarter'] = {['Y Chied Cherroo'] = 33, ['Y Nah Cherroo'] = 34, ['Y Trass Kerroo'] = 35, ['Y Kiarroo Kerroo'] = 36},
['season'] = {['Geurey'] = 24, ['Arragh'] = 21, ['Sourey'] = 22, ['Fouyr'] = 23},
['named'] = {['Caisht'] = 98, ['Nollick'] = 99},
},
['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc.
['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc.
['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc.
['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc.
['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc.
['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9
['xlate_digits'] = {},
}
if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled
local long_t = {};
local short_t = {};
for i=1, 12 do -- loop 12x and
local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i
long_t[name] = i; -- save it
name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i
short_t[name] = i; -- save it
end
date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation
date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation
end
-- create inverted date-name tables for reformatting and/or translation
for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do
for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i
date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd
end
end
if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled
local digits_t = {};
for i=0, 9 do -- loop 10x and
digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value
end
date_names['local_digits'] = digits_t;
end
for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table
date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value
end
local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}}
'{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count
'{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k
'{{ *[Uu]se +(MDY) +dates *[|}]', -- 788
'{{ *[Uu]se +(DMY) +dates *[|}]', -- 343
'{{ *([Mm]dy) *[|}]', -- 176
'{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18
'{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11
'{{ *([Dd]my) *[|}]', -- 56
'{{ *[Uu]se +(MDY) *[|}]', -- 5
'{{ *([Dd]MY) *[|}]', -- 3
'{{ *[Uu]se(mdy)dates *[|}]', -- 1
'{{ *[Uu]se +(DMY) *[|}]', -- 0
'{{ *([Mm]DY) *[|}]', -- 0
}
local title_object = mw.title.getCurrentTitle();
local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used
if 10 ~= title_object.namespace then -- all namespaces except Template
content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625
end
local function get_date_format ()
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects
local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format
if match then
local use_dates_template = content:match ('%b{}', start); -- get the whole template
if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length
return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)');
else
return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df=
end
end
end
end
local global_df; -- TODO: add this to <global_cs1_config_t>?
--[[-----------------< V O L U M E , I S S U E , P A G E S >------------------
These tables hold cite class values (from the template invocation) and identify those templates that support
|volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which
is handled in the main module.
]]
local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'}
local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'}
local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'}
--[[
These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter
names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1
templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must
not support |volume=.
]]
local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used
'website', 'mailinglist', 'script-website',
}
local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used
'journal', 'magazine', 'newspaper', 'periodical', 'work',
'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work',
}
--[[
Patterns for finding extra text in |volume=, |issue=, |page=, |pages=
]]
local vol_iss_pg_patterns = {
good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not
bad_ppatterns = { -- patterns for |page= and |pages=
'^[Pp][PpGg]?%.?[ %d]',
'^[Pp][Pp]?%. ', -- from {{p.}} and {{pp.}} templates
'^[Pp]ages?',
'^[Pp]gs.?',
},
vi_patterns_t = { -- combined to catch volume-like text in |issue= and issue-like text in |volume=
'^volumes?', -- volume-like text
'^vols?[%.:=]?',
'^issues?', --issue-like text
'^iss[%.:=]?',
'^numbers?',
'^nos?%A', -- don't match 'november' or 'nostradamus'
'^nr[%.:=]?',
'^n[%.:= ]', -- might be a valid issue without separator (space char is sep char here)
'^n°', -- 'n' with degree sign (U+00B0)
'^№', -- precomposed unicode numero character (U+2116)
},
}
--[[--------------------------< K E Y W O R D S >-------------------------------
These tables hold keywords for those parameters that have defined sets of acceptable keywords.
]]
--[[-------------------< K E Y W O R D S T A B L E >--------------------------
this is a list of keywords; each key in the list is associated with a table of
synonymous keywords possibly from different languages.
for I18N: add local-language keywords to value table; do not change the key.
For example, adding the German keyword 'ja':
['affirmative'] = {'yes', 'true', 'y', 'ja'},
Because CS1|2 templates from en.wiki articles are often copied to other local wikis,
it is recommended that the English keywords remain in these tables.
]]
local keywords = {
['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style=
['and'] = {'and', 'serial'}, -- |name-list-style=
['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot
['afterword'] = {'afterword'}, -- |contribution=
['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot
['cs1'] = {'cs1'}, -- |mode=
['cs2'] = {'cs2'}, -- |mode=
['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot
['dmy'] = {'dmy'}, -- |df=
['dmy-all'] = {'dmy-all'}, -- |df=
['foreword'] = {'foreword'}, -- |contribution=
['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot
['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true
['introduction'] = {'introduction'}, -- |contribution=
['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot
['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot
['mdy'] = {'mdy'}, -- |df=
['mdy-all'] = {'mdy-all'}, -- |df=
['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot
['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=)
['preface'] = {'preface'}, -- |contribution=
['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot
['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot
['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot
['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot
['vanc'] = {'vanc'}, -- |name-list-style=
['ymd'] = {'ymd'}, -- |df=
['ymd-all'] = {'ymd-all'}, -- |df=
-- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki
-- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki
}
--[[------------------------< X L A T E _ K E Y W O R D S >---------------------
this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{}
become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}:
['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{}
becomes
['yes'] = 'affirmative', -- in keywords_xlate{}
['true'] = 'affirmative',
['y'] = 'affirmative',
the purpose of this function is to act as a translator between a non-English keyword and its English equivalent
that may be used in other modules of this suite
]]
local function xlate_keywords ()
local out_table = {}; -- output goes here
for k, keywords_t in pairs (keywords) do -- spin through the keywords table
for _, keyword in ipairs (keywords_t) do -- for each keyword
out_table[keyword] = k; -- create an entry in the output table where keyword is the key
end
end
return out_table;
end
local keywords_xlate = xlate_keywords (); -- the list of translated keywords
--[[----------------< M A K E _ K E Y W O R D S _ L I S T >---------------------
this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter.
keywords_lists{}, is a table of tables from keywords{}
]]
local function make_keywords_list (keywords_lists)
local out_table = {}; -- output goes here
for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords
for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ...
table.insert (out_table, keyword); -- ... as plain text, to the output list
end
end
return out_table;
end
--[[----------------< K E Y W O R D S _ L I S T S >-----------------------------
this is a list of lists of valid keywords for the various parameters in [key].
Generally the keys in this table are the canonical en.wiki parameter names though
some are contrived because of use in multiple differently named parameters:
['yes_true_y'], ['id-access'].
The function make_keywords_list() extracts the individual keywords from the
appropriate list in keywords{}.
The lists in this table are used to validate the keyword assignment for the
parameters named in this table's keys.
]]
local keywords_lists = {
['yes_true_y'] = make_keywords_list ({keywords.affirmative}),
['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}),
['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}),
-- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki
['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}),
['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}),
['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported
['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}),
['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}),
['id-access'] = make_keywords_list ({keywords.free}),
}
--[[--------------------------< C S 1 _ C O N F I G _ G E T >--------------------------------------------------
fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t>
no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked.
Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors,
DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters
accept numeric values only (|display-authors=etal and the like is not supported).
]]
local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table?
local function get_cs1_config ()
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else
if start then
local cs1_config_template = content:match ('%b{}', start); -- get the whole template
if not cs1_config_template then
return nil;
end
local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe)
table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair
local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'};
local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here
for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents
if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence,
for _, param in ipairs (aliases[meta_param]) do -- extract its contents
meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t>
end
else
meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t>
end
end
local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters
for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs
for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords
keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map
end
end
for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t>
local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value
if k then
if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters
if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal'
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table
end
else
if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table
end
end
end
end
end
end
get_cs1_config (); -- fill <global_cs1_config_t>
--[[---------------------< S T R I P M A R K E R S >----------------------------
Common pattern definition location for stripmarkers so that we don't have to go
hunting for them if (when) MediaWiki changes their form.
]]
local stripmarkers = {
['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker
['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker()
}
--[[------------< I N V I S I B L E _ C H A R A C T E R S >---------------------
This table holds non-printing or invisible characters indexed either by name or
by Unicode group. Values are decimal representations of UTF-8 codes. The table
is organized as a table of tables because the Lua pairs keyword returns table
data in an arbitrary order. Here, we want to process the table from top to bottom
because the entries at the top of the table are also found in the ranges specified
by the entries at the bottom of the table.
Also here is a pattern that recognizes stripmarkers that begin and end with the
delete characters. The nowiki stripmarker is not an error but some others are
because the parameter values that include them become part of the template's
metadata before stripmarker replacement.
]]
local invisible_defs = {
del = '\127', -- used to distinguish between stripmarker and del char
zwj = '\226\128\141', -- used with capture because zwj may be allowed
}
local invisible_chars = {
{'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD
{'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed
{'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B
{'hair space', '\226\128\138'}, -- U+200A, E2 80 8A
{'soft hyphen', '\194\173'}, -- U+00AD, C2 AD
{'horizontal tab', '\009'}, -- U+0009 (HT), 09
{'line feed', '\010'}, -- U+000A (LF), 0A
{'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0
{'carriage return', '\013'}, -- U+000D (CR), 0D
{'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type
{'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker
{'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))
{'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F
-- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF
-- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF
-- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD
-- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD
}
--[[
Indic script makes use of zero width joiner as a character modifier so zwj
characters must be left in. This pattern covers all of the unicode characters
for these languages:
Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf
Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf
Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
plus the not-necessarily Indic scripts for Sinhala and Burmese:
Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
the pattern is used by has_invisible_chars() and coins_cleanup()
]]
local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
-- list of emoji that use a zwj character (U+200D) to combine with another emoji
-- from: https://unicode.org/Public/emoji/17.0/emoji-zwj-sequences.txt; version: 17.0; 2025-01-08
-- table created by: [[:en:Module:Make emoji zwj table]]
local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx
[8596] = true, -- U+2194 ↔ left right arrow
[8597] = true, -- U+2195 ↕ up down arrow
[9760] = true, -- U+2620 ☠ skull and crossbones
[9792] = true, -- U+2640 ♀ female sign
[9794] = true, -- U+2642 ♂ male sign
[9877] = true, -- U+2695 ⚕ staff of aesculapius
[9878] = true, -- U+2696 ⚖ scales
[9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign
[9992] = true, -- U+2708 ✈ airplane
[10052] = true, -- U+2744 ❄ snowflake
[10084] = true, -- U+2764 ❤ heavy black heart
[10145] = true, -- U+27A1 ➡ black rightwards arrow
[11035] = true, -- U+2B1B ⬛ black large square
[127752] = true, -- U+1F308 🌈 rainbow
[127787] = true, -- U+1F32B 🌫 fog
[127806] = true, -- U+1F33E 🌾 ear of rice
[127859] = true, -- U+1F373 🍳 cooking
[127868] = true, -- U+1F37C 🍼 baby bottle
[127876] = true, -- U+1F384 🎄 christmas tree
[127891] = true, -- U+1F393 🎓 graduation cap
[127908] = true, -- U+1F3A4 🎤 microphone
[127912] = true, -- U+1F3A8 🎨 artist palette
[127979] = true, -- U+1F3EB 🏫 school
[127981] = true, -- U+1F3ED 🏭 factory
[128048] = true, -- U+1F430 🐰 rabbit face
[128102] = true, -- U+1F466 👦 boy
[128103] = true, -- U+1F467 👧 girl
[128104] = true, -- U+1F468 👨 man
[128105] = true, -- U+1F469 👩 woman
[128139] = true, -- U+1F48B 💋 kiss mark
[128165] = true, -- U+1F4A5 💥 collision symbol
[128168] = true, -- U+1F4A8 💨 dash symbol
[128171] = true, -- U+1F4AB 💫 dizzy symbol
[128187] = true, -- U+1F4BB 💻 personal computer
[128188] = true, -- U+1F4BC 💼 brief case
[128293] = true, -- U+1F525 🔥 fire
[128295] = true, -- U+1F527 🔧 wrench
[128300] = true, -- U+1F52C 🔬 microscope
[128488] = true, -- U+1F5E8 🗨 left speech bubble
[128640] = true, -- U+1F680 🚀 rocket
[128658] = true, -- U+1F692 🚒 fire engine
[129001] = true, -- U+1F7E9 🟩 large green square
[129003] = true, -- U+1F7EB 🟫 large brown square
[129309] = true, -- U+1F91D 🤝 handshake
[129455] = true, -- U+1F9AF 🦯 probing cane
[129456] = true, -- U+1F9B0 🦰 emoji component red hair
[129457] = true, -- U+1F9B1 🦱 emoji component curly hair
[129458] = true, -- U+1F9B2 🦲 emoji component bald
[129459] = true, -- U+1F9B3 🦳 emoji component white hair
[129466] = true, -- U+1F9BA 🦺 safety vest
[129468] = true, -- U+1F9BC 🦼 motorized wheelchair
[129469] = true, -- U+1F9BD 🦽 manual wheelchair
[129489] = true, -- U+1F9D1 🧑 adult
[129490] = true, -- U+1F9D2 🧒 child
[129648] = true, -- U+1FA70 🩰 ballet shoes
[129657] = true, -- U+1FA79 🩹 adhesive bandage
[129775] = true, -- U+1FAEF fight cloud
[129778] = true, -- U+1FAF2 🫲 leftwards hand
}
--[[----------------------< L A N G U A G E S U P P O R T >-------------------
These tables and constants support various language-specific functionality.
]]
--local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code
local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code
if string.match (mw.site.server, 'wikidata') then
this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead
end
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests
local mw_languages_by_name_t = {};
for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language=
v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>]
if mw_languages_by_name_t[v] then -- when name already in the table
if 2 == #k or 3 == #k then -- if tag does not have subtags
mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name
end
else -- here when name not in the table
mw_languages_by_name_t[v] = k; -- so add name and matching tag
end
end
local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes
for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local)
if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag
inter_wiki_map[v["prefix"]] = true; -- add it to our local map
end
end
--[[--------------------< S C R I P T _ L A N G _ C O D E S >-------------------
This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character
language codes that apply only to |script-title= and |script-chapter=
]]
local script_lang_codes = {
'ab', 'am', 'ar', 'as', 'az', 'be', 'bg', 'bn', 'bo', 'bs', 'ce', 'chr',
'cu', 'dv', 'dz', 'el', 'fa', 'grc', 'gu', 'he', 'hi', 'hy', 'ja', 'ka',
'kaa', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn', 'mni',
'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc',
'ta', 'te', 'tg', 'th', 'ti', 'tkr', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi',
'yue', 'zh', 'zgh'
};
--[[---------------< L A N G U A G E R E M A P P I N G >----------------------
These tables hold language information that is different (correct) from MediaWiki's definitions
For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{}
lang_tag_remap{}:
key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag
value is properly spelled and capitalized language name associated with <tag>
only one language name per <tag>;
key/value pair must have matching entry in lang_name_remap{}
lang_name_remap{}:
key is always lowercase language name
value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{})
may have multiple keys referring to a common preferred name and tag; For example:
['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh'
]]
local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter=
['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch
['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['bn'] = 'Bengali', -- MediaWiki returns Bangla
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
['fkv'] = 'Kven', -- MediaWiki returns Kvensk
['gsw'] = 'Swiss German',
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data
['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data
['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name
['sr-ec'] = 'Serbian (Cyrillic script)', -- MediaWiki returns српски (ћирилица)
['sr-el'] = 'Serbian (Latin script)', -- MediaWiki returns srpski (latinica)
-- gv.wiki: Manx-language names for |language=, replacing MediaWiki's English default
['en'] = 'Baarle',
['en-us'] = 'Baarle Americaanagh',
['en-gb'] = 'Baarle Ghoaldagh',
['en-in'] = 'Baarle Injinagh',
['hy'] = 'Armeainish',
['hr'] = 'Croitish',
['cs'] = 'Sheckish',
['da'] = 'Danvargish',
['nl'] = 'Ollanish',
['fo'] = 'Faaroish',
['fi'] = 'Finnlynnish',
['fr'] = 'Frangish',
['de'] = 'Germaanish',
['el'] = 'Greagish',
['he'] = 'Ewnish',
['hu'] = 'Ungaarish',
['is'] = 'Eeslynnish',
['ga'] = 'Yernish',
['it'] = 'Idaalish',
['ko'] = 'Koreeish',
['la'] = 'Ladjyn',
['no'] = 'Norlynnish',
['pl'] = 'Polynnish',
['pt'] = 'Portiugish',
['ro'] = 'Romaanish',
['ru'] = 'Rooshish',
['sk'] = 'Slovackish',
['es'] = 'Spaainish',
['sv'] = 'Soolynnish',
['ta'] = 'Tamilish',
['tn'] = 'Tswaanish',
['tr'] = 'Turkish',
['uk'] = 'Ookraanish',
['ca'] = 'Catalaanish',
['et'] = 'Estaanish',
['lt'] = 'Litaanish',
['lv'] = 'Latvish',
['be'] = 'Belarooshish',
['bg'] = 'Bulgeyrish',
['zh'] = 'Sheenish',
['ja'] = 'Shapaanish',
['ar'] = 'Arabish',
['gd'] = 'Gaelg ny h-Albey',
['cy'] = 'Bretnish',
['kw'] = 'Cornish',
['br'] = 'Britaanish',
['gv'] = 'Gaelg',
['kl'] = 'Greenlynnish',
['hi'] = 'Hindish',
['ur'] = 'Oordooish',
['yi'] = 'Ewdish',
['mt'] = 'Maltish',
['gl'] = 'Galeeshish',
['eu'] = 'Bascish',
['lb'] = 'Lucsemburgish',
['sl'] = 'Sloveanish',
['sr'] = 'Serbish',
['sq'] = 'Albaanish',
['mk'] = 'Massadoanish',
['ku'] = 'Kurdish',
['az'] = 'Asserbajaanish',
['kk'] = 'Kassaghish',
['mn'] = 'Mongoilish',
['wo'] = 'Wolofish',
}
local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase
['alemannic'] = {'Swiss German', 'gsw'}, -- ISO 639-2, -3 alternate for Swiss German; MediaWiki mediawiki returns Alemannic for gsw; en.wiki preferred name
['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name
['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two...
['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names
['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639
['serbian (cyrillic script)'] = {'Serbian (Cyrillic script)', 'sr-cyrl'}, -- special case to get correct tag when |language=sr-ec
['serbian (latin script)'] = {'Serbian (Latin script)', 'sr-latn'}, -- special case to get correct tag when |language=sr-el
['swiss german'] = {'Swiss German', 'gsw'},
['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian
-- gv.wiki: Manx-language names for |language=
['baarle'] = {'Baarle', 'en'},
['baarle americaanagh'] = {'Baarle Americaanagh', 'en-us'},
['baarle ghoaldagh'] = {'Baarle Ghoaldagh', 'en-gb'},
['baarle injinagh'] = {'Baarle Injinagh', 'en-in'},
['armeainish'] = {'Armeainish', 'hy'},
['croitish'] = {'Croitish', 'hr'},
['sheckish'] = {'Sheckish', 'cs'},
['danvargish'] = {'Danvargish', 'da'},
['ollanish'] = {'Ollanish', 'nl'},
['faaroish'] = {'Faaroish', 'fo'},
['finnlynnish'] = {'Finnlynnish', 'fi'},
['frangish'] = {'Frangish', 'fr'},
['germaanish'] = {'Germaanish', 'de'},
['greagish'] = {'Greagish', 'el'},
['ewnish'] = {'Ewnish', 'he'},
['ungaarish'] = {'Ungaarish', 'hu'},
['eeslynnish'] = {'Eeslynnish', 'is'},
['yernish'] = {'Yernish', 'ga'},
['idaalish'] = {'Idaalish', 'it'},
['koreeish'] = {'Koreeish', 'ko'},
['ladjyn'] = {'Ladjyn', 'la'},
['norlynnish'] = {'Norlynnish', 'no'},
['polynnish'] = {'Polynnish', 'pl'},
['portiugish'] = {'Portiugish', 'pt'},
['romaanish'] = {'Romaanish', 'ro'},
['rooshish'] = {'Rooshish', 'ru'},
['slovackish'] = {'Slovackish', 'sk'},
['spaainish'] = {'Spaainish', 'es'},
['soolynnish'] = {'Soolynnish', 'sv'},
['tamilish'] = {'Tamilish', 'ta'},
['tswaanish'] = {'Tswaanish', 'tn'},
['turkish'] = {'Turkish', 'tr'},
['ookraanish'] = {'Ookraanish', 'uk'},
['catalaanish'] = {'Catalaanish', 'ca'},
['estaanish'] = {'Estaanish', 'et'},
['litaanish'] = {'Litaanish', 'lt'},
['latvish'] = {'Latvish', 'lv'},
['belarooshish'] = {'Belarooshish', 'be'},
['bulgeyrish'] = {'Bulgeyrish', 'bg'},
['sheenish'] = {'Sheenish', 'zh'},
['shapaanish'] = {'Shapaanish', 'ja'},
['arabish'] = {'Arabish', 'ar'},
['gaelg ny h-albey'] = {'Gaelg ny h-Albey', 'gd'},
['bretnish'] = {'Bretnish', 'cy'},
['cornish'] = {'Cornish', 'kw'},
['britaanish'] = {'Britaanish', 'br'},
['gaelg'] = {'Gaelg', 'gv'},
['greenlynnish'] = {'Greenlynnish', 'kl'},
['hindish'] = {'Hindish', 'hi'},
['oordooish'] = {'Oordooish', 'ur'},
['ewdish'] = {'Ewdish', 'yi'},
['maltish'] = {'Maltish', 'mt'},
['galeeshish'] = {'Galeeshish', 'gl'},
['bascish'] = {'Bascish', 'eu'},
['lucsemburgish'] = {'Lucsemburgish', 'lb'},
['sloveanish'] = {'Sloveanish', 'sl'},
['serbish'] = {'Serbish', 'sr'},
['albaanish'] = {'Albaanish', 'sq'},
['massadoanish'] = {'Massadoanish', 'mk'},
['kurdish'] = {'Kurdish', 'ku'},
['asserbajaanish'] = {'Asserbajaanish', 'az'},
['kassaghish'] = {'Kassaghish', 'kk'},
['mongoilish'] = {'Mongoilish', 'mn'},
['wolofish'] = {'Wolofish', 'wo'},
}
local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase
['alemannic'] = {'Swiss German', 'gsw'}, -- ISO 639-2, -3 alternate for Swiss German; MediaWiki mediawiki returns Alemannic for gsw; en.wiki preferred name
['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name
['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two...
['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names
['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639
['serbian (cyrillic script)'] = {'Serbian (Cyrillic script)', 'sr-cyrl'}, -- special case to get correct tag when |language=sr-ec
['serbian (latin script)'] = {'Serbian (Latin script)', 'sr-latn'}, -- special case to get correct tag when |language=sr-el
['swiss german'] = {'Swiss German', 'gsw'},
['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian
-- gv.wiki: Manx-language names for |language=
['baarle'] = {'Baarle', 'en'},
['baarle americaanagh'] = {'Baarle Americaanagh', 'en-us'},
['baarle ghoaldagh'] = {'Baarle Ghoaldagh', 'en-gb'},
['baarle injinagh'] = {'Baarle Injinagh', 'en-in'},
['armeainish'] = {'Armeainish', 'hy'},
['croitish'] = {'Croitish', 'hr'},
['sheckish'] = {'Sheckish', 'cs'},
['danvargish'] = {'Danvargish', 'da'},
['ollanish'] = {'Ollanish', 'nl'},
['faaroish'] = {'Faaroish', 'fo'},
['finnlynnish'] = {'Finnlynnish', 'fi'},
['frangish'] = {'Frangish', 'fr'},
['germaanish'] = {'Germaanish', 'de'},
['greagish'] = {'Greagish', 'el'},
['ewnish'] = {'Ewnish', 'he'},
['ungaarish'] = {'Ungaarish', 'hu'},
['eeslynnish'] = {'Eeslynnish', 'is'},
['yernish'] = {'Yernish', 'ga'},
['idaalish'] = {'Idaalish', 'it'},
['koreeish'] = {'Koreeish', 'ko'},
['ladjyn'] = {'Ladjyn', 'la'},
['norlynnish'] = {'Norlynnish', 'no'},
['polynnish'] = {'Polynnish', 'pl'},
['portiugish'] = {'Portiugish', 'pt'},
['romaanish'] = {'Romaanish', 'ro'},
['rooshish'] = {'Rooshish', 'ru'},
['slovackish'] = {'Slovackish', 'sk'},
['spaainish'] = {'Spaainish', 'es'},
['soolynnish'] = {'Soolynnish', 'sv'},
['tamilish'] = {'Tamilish', 'ta'},
['tswaanish'] = {'Tswaanish', 'tn'},
['turkish'] = {'Turkish', 'tr'},
['ookraanish'] = {'Ookraanish', 'uk'},
['catalaanish'] = {'Catalaanish', 'ca'},
['estaanish'] = {'Estaanish', 'et'},
['litaanish'] = {'Litaanish', 'lt'},
['latvish'] = {'Latvish', 'lv'},
['belarooshish'] = {'Belarooshish', 'be'},
['bulgeyrish'] = {'Bulgeyrish', 'bg'},
['sheenish'] = {'Sheenish', 'zh'},
['shapaanish'] = {'Shapaanish', 'ja'},
['arabish'] = {'Arabish', 'ar'},
['gaelg ny h-albey'] = {'Gaelg ny h-Albey', 'gd'},
['bretnish'] = {'Bretnish', 'cy'},
['cornish'] = {'Cornish', 'kw'},
['britaanish'] = {'Britaanish', 'br'},
['gaelg'] = {'Gaelg', 'gv'},
['greenlynnish'] = {'Greenlynnish', 'kl'},
['hindish'] = {'Hindish', 'hi'},
['oordooish'] = {'Oordooish', 'ur'},
['ewdish'] = {'Ewdish', 'yi'},
['maltish'] = {'Maltish', 'mt'},
['galeeshish'] = {'Galeeshish', 'gl'},
['bascish'] = {'Bascish', 'eu'},
['lucsemburgish'] = {'Lucsemburgish', 'lb'},
['sloveanish'] = {'Sloveanish', 'sl'},
['serbish'] = {'Serbish', 'sr'},
['albaanish'] = {'Albaanish', 'sq'},
['massadoanish'] = {'Massadoanish', 'mk'},
['kurdish'] = {'Kurdish', 'ku'},
['asserbajaanish'] = {'Asserbajaanish', 'az'},
['kassaghish'] = {'Kassaghish', 'kk'},
['mongoilish'] = {'Mongoilish', 'mn'},
['wolofish'] = {'Wolofish', 'wo'},
}
--[[---------------< P R O P E R T I E S _ C A T E G O R I E S >----------------
Properties categories. These are used for investigating qualities of citations.
]]
local prop_cats = {
['foreign-lang-source'] = 'Geillyn CS1 ayns $1 ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code
['foreign-lang-source-2'] = 'Geillyn CS1 ayns çhengaghyn joarree (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key
['interproj-linked-name'] = 'CS1 interproject-linked names|$1', -- any author, editor, etc that has an interproject link; $1 is interproject tag used as a sort key
['interwiki-linked-name'] = 'CS1 interwiki-linked names|$1', -- any author, editor, etc that has an interwiki link; $1 is interwiki tag used as a sort key; yeilds to interproject
['local-lang-source'] = 'Geillyn CS1 ayns $1 ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
['location-test'] = 'CS1 location test',
['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters
['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is language tag
['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name
['unfit'] = 'CS1: unfit URL', -- |url-status=unfit or |url-status=usurped; used to be a maint cat
['vanc-accept'] = 'CS1:Vancouver names with accept markup', -- for |vauthors=/|veditors= with accept-as-written markup
['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form
}
--[[-------------------< T I T L E _ T Y P E S >--------------------------------
Here we map a template's CitationClass to TitleType (default values for |type= parameter)
]]
local title_types = {
['AV-media-notes'] = 'Media notes',
['document'] = 'Document',
['interview'] = 'Interview',
['mailinglist'] = 'Mailing list',
['map'] = 'Map',
['podcast'] = 'Podcast',
['pressrelease'] = 'Press release',
['report'] = 'Report',
['speech'] = 'Speech',
['techreport'] = 'Technical report',
['thesis'] = 'Thesis',
}
--[[--------------------------< B U I L D _ K N O W N _ F R E E _ D O I _ R E G I S T R A N T S _ T A B L E >--
build a table of doi registrants known to be free-to-read In a doi, the registrant ID is the series of digits
between the '10.' and the first '/': in doi 10.1100/sommat, 1100 is the registrant ID
see §3.2.2 DOI prefix of the Doi Handbook p. 43
https://www.doi.org/doi-handbook/DOI_Handbook_Final.pdf#page=43
]]
local function build_free_doi_registrants_table()
local registrants_t = {};
for _, v in ipairs ({
'1045', '1074', '1096', '1100', '1155', '1186', '1194', '1371', '1613', '1629', '1989', '1999', '2147', '2196', '3285', '3389', '3390', '3906',
'3748', '3814', '3847', '3897', '4061', '4089', '4103', '4172', '4175', '4230', '4236', '4239', '4240', '4249', '4251',
'4252', '4253', '4254', '4291', '4292', '4329', '4330', '4331', '5086', '5194', '5210', '5306', '5312', '5313', '5314',
'5315', '5316', '5317', '5318', '5319', '5320', '5321', '5334', '5402', '5409', '5410', '5411', '5412',
'5492', '5493', '5494', '5495', '5496', '5497', '5498', '5499', '5500', '5501', '5527', '5528', '5662',
'6064', '6219', '7167', '7217', '7287', '7482', '7490', '7554', '7717', '7759', '7766', '9778', '11131', '11569', '11647',
'11648', '12688', '12703', '12715', '12942', '12998', '13105', '14256', '14293', '14303', '15215', '15347', '15412', '15560', '16995',
'17645', '18637', '19080', '19173', '20944', '21037', '21105', '21468', '21767', '21425', '22261', '22323', '22459', '24105', '24196', '24966',
'26775', '30845', '32545', '35711', '35712', '35713', '35995', '36648', '37126', '37532', '37871', '47128',
'47622', '47959', '52437', '52975', '53288', '53347', '54081', '54947', '55667', '55914', '57009', '58647', '59081',
}) do
registrants_t[v] = true; -- build a k/v table of known free-to-read doi registrants
end
return registrants_t;
end
-- known free registrants identifiable by the doi suffix incipit
local extended_registrants_t = { -- doi suffix incipits are evaluated as lua patterns
['1002'] = {'aelm', 'leap', 'loe2%.', 'lol2%.'}, -- Advanced Electronic Materials, Learned Publishing, L&O e-Lectures, L&O Letters
['1016'] = {'j%.aace', 'j%.aed', 'j%.aiopen', 'j%.animal', 'j%.apsb', 'j%.addicn', -- AACE Endocrinology and Diabetes, AACE Endocrinology and Diabetes, AI Open, Animal, Acta Pharmaceutica Sinica B, Addiction Neuroscience
'j%.abrep', 'j%.gpb', 'j%.heliyon', 'j%.nlp', 'j%.patter', 'j%.proche', -- Addictive Behaviors Reports, Genomics, Proteomics & Bioinformatics after 2015, Heliyon, Natural Language Processing, Patterns, Procedia Chemistry
'j%.vgie', 'S1672-0229'}, -- VideoGIE, Genomics, Proteomics & Bioinformatics before 2015
['1017'] = {'apj%.', 'nlp', 'mdh', 'S15574660'}, -- Natural Language Processing Journal, Medical History, Asia Pacific Journal
['1046'] = {'j%.1365-8711', 'j%.1365-246x'}, -- MNRAS, GJI
['1021'] = {'acscentsci', 'acsomega'}, -- ACS Central Science, ACS Omega
['1093'] = {'mnras', 'mnrasl', 'gji', 'pnasnexus', 'rasti'}, -- MNRAS, MNRAS Letters, GJI, PNAS Nexus, RASTI
['1098'] = {'rsbm', 'rsob', 'rsos'}, -- Biographical Memoirs of Fellows of the Royal Society, Open Biology, Royal Society Open Science
['1099'] = {'acmi', 'mic', '00221287', 'mgen'}, -- Access Microbiology, Microbiology, Journal of General Microbiology, Microbial Genomics
['1107'] = {'S20569890', 'S20522525', 'S16005775', 'S24143146'}, -- Acta Crystallographica E, IUCrJ, Journal of Synchrotron Radiation, IUCrData
['1109'] = {'oa', 'oj'}, -- IEEE Open Access..., IEEE Open Journal...
['1111'] = {'aogs', 'j%.1365-2966', 'j%.1745-3933', 'j%.1365-246X'}, -- Acta Obstetricia et Gynecologica Scandinavica, MNRAS, MNRAS Letters, GJI
['1128'] = {'asmcr', 'jmbe', 'mbio', 'mra', 'spectrum', 'msphere', 'msystems'}, --ASM Case Reports, Journal of Microbiology & Biology Education, mBio, Microbiology Resource Announcements, Microbiology Spectrum, mSphere, mSystems
['1136'] = {'bmjopen'}, -- BMJ Open
['1140'] = {'epjc'}, -- European Physical Journal C
['1192'] = {'bjo'}, -- BJPsych Open
['1210'] = {'jendso','jcemcr'}, -- Journal of the Endocrine Society, JCEM Case Reports
['1215'] = {'21573689', '21573698'}, -- L&O Fluids
['1590'] = {'0102-3306'}, -- Acta Botanica Brasilica
['4171'] = {'dm','mag'}, -- Documenta Mathematica, EMS Magazine
['4319'] = {'lo%.', 'lol%.', 'lom%.'}, -- L&O, L&O e-Lectures, L&O Methods
['5852'] = {'ejt'}, -- European Journal of Taxonomy
['7155'] = {'jgaa'}, -- Journal of Graph Algorithms and Applications
['11158'] = {'saasp'}, -- Systematic and Applied Acarology Special Publications
['11646'] = {'megataxa', 'mesozoic'}, -- Megataxa, Mesozoic
['14231'] = {'ag'}, -- Algebraic Geometry
['15446'] = {'abc'}, -- Acta Biológica Colombiana
['17239'] = {'jowr'}, -- Journal of Writing Research
['22073'] = {'pja'}, -- Persian Journal of Acarology
['24310'] = {'abm'}, -- Acta Botanica Malacitana
['24425'] = {'agp'}, -- Acta Geologica Polonica
['35249'] = {'rche'}, -- Revista Chilena de Entomología
['37520'] = {'fi'}, -- Fossil Imprint
['53562'] = {'ajcb'} -- Asian Journal of Conservation Biology
}
--[[===================<< E R R O R M E S S A G I N G >>======================
]]
--[[----------< E R R O R M E S S A G E S U P P L E M E N T S >-------------
I18N for those messages that are supplemented with additional specific text that
describes the reason for the error
TODO: merge this with special_case_translations{}?
]]
local err_msg_supl = {
['char'] = 'invalid character', -- |isbn=, |sbn=
['check'] = 'checksum', -- |isbn=, |sbn=
empty_str = '(empty string)', -- empty unknown parameter check when cite has |=
['flag'] = 'flag', -- |archive-url=
['form'] = 'invalid form', -- |isbn=, |sbn=
['group'] = 'invalid group id', -- |isbn=
['initials'] = 'initials', -- Vancouver
['invalid language code'] = 'invalid language code', -- |script-<param>=
['journal'] = 'journal', -- |bibcode=
['length'] = 'length', -- |isbn=, |bibcode=, |sbn=
['liveweb'] = 'liveweb', -- |archive-url=
['missing comma'] = 'missing comma', -- Vancouver
['missing prefix'] = 'missing prefix', -- |script-<param>=
['missing title part'] = 'missing title part', -- |script-<param>=
['name'] = 'name', -- Vancouver
['non-Latin char'] = 'non-Latin character', -- Vancouver
['path'] = 'path', -- |archive-url=
['prefix'] = 'invalid prefix', -- |isbn=
['punctuation'] = 'punctuation', -- Vancouver
['save'] = 'save command', -- |archive-url=
['suffix'] = 'suffix', -- Vancouver
['timestamp'] = 'timestamp', -- |archive-url=
['unknown language code'] = 'unknown language code', -- |script-<param>=
['value'] = 'value', -- |bibcode=
['year'] = 'year', -- |bibcode=
}
--[[--------------< E R R O R _ C O N D I T I O N S >---------------------------
Error condition table. This table has two sections: errors at the top, maintenance
at the bottom. Maint 'messaging' does not have a 'message' (message=nil)
The following contains a list of IDs for various error conditions defined in the
code. For each ID, we specify a text message to display, an error category to
include, and whether the error message should be wrapped as a hidden comment.
Anchor changes require identical changes to matching anchor in Help:CS1 errors
TODO: rename error_conditions{} to something more generic; create separate error
and maint tables inside that?
]]
local error_conditions = {
err_accessdate_missing_url = {
message = '<code class="cs1-code">|access-date=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'accessdate_missing_url',
category = 'CS1 errors: access-date without URL',
hidden = false
},
err_apostrophe_markup = {
message = 'Italic or bold markup not allowed in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'apostrophe_markup',
category = 'CS1 errors: markup',
hidden = false
},
err_archive_date_missing_url = {
message = '<code class="cs1-code">|archive-date=</code> requires <code class="cs1-code">|archive-url=</code>',
anchor = 'archive_date_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_date_url_ts_mismatch = {
message = '<code class="cs1-code">|archive-date=</code> / <code class="cs1-code">|archive-url=</code> timestamp mismatch; $1 suggested',
anchor = 'archive_date_url_ts_mismatch',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_date = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|archive-date=</code>',
anchor = 'archive_missing_date',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_url = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'archive_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_url = {
message = '<code class="cs1-code">|archive-url=</code> is malformed: $1', -- $1 is error message detail
anchor = 'archive_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_arxiv_missing = {
message = '<code class="cs1-code">|arxiv=</code> required',
anchor = 'arxiv_missing',
category = 'CS1 errors: arXiv', -- same as bad arxiv
hidden = false
},
err_asintld_missing_asin = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|asin=</code>', -- $1 is parameter name
anchor = 'asintld_missing_asin',
category = 'CS1 errors: ASIN TLD',
hidden = false
},
err_bad_arxiv = {
message = 'Check <code class="cs1-code">|arxiv=</code> value',
anchor = 'bad_arxiv',
category = 'CS1 errors: arXiv',
hidden = false
},
err_bad_asin = {
message = 'Check <code class="cs1-code">|asin=</code> value',
anchor = 'bad_asin',
category ='CS1 errors: ASIN',
hidden = false
},
err_bad_asin_tld = {
message = 'Check <code class="cs1-code">|asin-tld=</code> value',
anchor = 'bad_asin_tld',
category ='CS1 errors: ASIN TLD',
hidden = false
},
err_bad_bibcode = {
message = 'Check <code class="cs1-code">|bibcode=</code> $1', -- $1 is error message detail
anchor = 'bad_bibcode',
category = 'CS1 errors: bibcode',
hidden = false
},
err_bad_biorxiv = {
message = 'Check <code class="cs1-code">|biorxiv=</code> value',
anchor = 'bad_biorxiv',
category = 'CS1 errors: bioRxiv',
hidden = false
},
err_bad_citeseerx = {
message = 'Check <code class="cs1-code">|citeseerx=</code> value',
anchor = 'bad_citeseerx',
category = 'CS1 errors: citeseerx',
hidden = false
},
err_bad_date = {
message = 'Check date values in: $1', -- $1 is a parameter name list
anchor = 'bad_date',
category = 'CS1 errors: dates',
hidden = false
},
err_bad_doi = {
message = 'Check <code class="cs1-code">|doi=</code> value',
anchor = 'bad_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_bad_hdl = {
message = 'Check <code class="cs1-code">|hdl=</code> value',
anchor = 'bad_hdl',
category = 'CS1 errors: HDL',
hidden = false
},
err_bad_isbn = {
message = 'Check <code class="cs1-code">|isbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_isbn',
category = 'CS1 errors: ISBN',
hidden = false
},
err_bad_ismn = {
message = 'Check <code class="cs1-code">|ismn=</code> value',
anchor = 'bad_ismn',
category = 'CS1 errors: ISMN',
hidden = false
},
err_bad_issn = {
message = 'Check <code class="cs1-code">|$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn
anchor = 'bad_issn',
category = 'CS1 errors: ISSN',
hidden = false
},
err_bad_jfm = {
message = 'Check <code class="cs1-code">|jfm=</code> value',
anchor = 'bad_jfm',
category = 'CS1 errors: JFM',
hidden = false
},
err_bad_jstor = {
message = 'Check <code class="cs1-code">|jstor=</code> value',
anchor = 'bad_jstor',
category = 'CS1 errors: JSTOR',
hidden = false
},
err_bad_lccn = {
message = 'Check <code class="cs1-code">|lccn=</code> value',
anchor = 'bad_lccn',
category = 'CS1 errors: LCCN',
hidden = false
},
err_bad_medrxiv = {
message = 'Check <code class="cs1-code">|medrxiv=</code> value',
anchor = 'bad_medrxiv',
category = 'CS1 errors: medRxiv',
hidden = false
},
err_bad_mr = {
message = 'Check <code class="cs1-code">|mr=</code> value',
anchor = 'bad_mr',
category = 'CS1 errors: MR',
hidden = false
},
err_bad_oclc = {
message = 'Check <code class="cs1-code">|oclc=</code> value',
anchor = 'bad_oclc',
category = 'CS1 errors: OCLC',
hidden = false
},
err_bad_ol = {
message = 'Check <code class="cs1-code">|ol=</code> value',
anchor = 'bad_ol',
category = 'CS1 errors: OL',
hidden = false
},
err_bad_osti = {
message = 'Check <code class="cs1-code">|osti=</code> value',
anchor = 'bad_osti',
category = 'CS1 errors: OSTI',
hidden = false
},
err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
message = 'Check <code class="cs1-code">|$1=</code> value', -- $1 is parameter name
anchor = 'bad_paramlink',
category = 'CS1 errors: parameter link',
hidden = false
},
err_bad_pmc = {
message = 'Check <code class="cs1-code">|pmc=</code> value',
anchor = 'bad_pmc',
category = 'CS1 errors: PMC',
hidden = false
},
err_bad_pmid = {
message = 'Check <code class="cs1-code">|pmid=</code> value',
anchor = 'bad_pmid',
category = 'CS1 errors: PMID',
hidden = false
},
err_bad_rfc = {
message = 'Check <code class="cs1-code">|rfc=</code> value',
anchor = 'bad_rfc',
category = 'CS1 errors: RFC',
hidden = false
},
err_bad_s2cid = {
message = 'Check <code class="cs1-code">|s2cid=</code> value',
anchor = 'bad_s2cid',
category = 'CS1 errors: S2CID',
hidden = false
},
err_bad_sbn = {
message = 'Check <code class="cs1-code">|sbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_sbn',
category = 'CS1 errors: SBN',
hidden = false
},
err_bad_ssrn = {
message = 'Check <code class="cs1-code">|ssrn=</code> value',
anchor = 'bad_ssrn',
category = 'CS1 errors: SSRN',
hidden = false
},
err_bad_url = {
message = 'Check $1 value', -- $1 is parameter name
anchor = 'bad_url',
category = 'CS1 errors: URL',
hidden = false
},
err_bad_usenet_id = {
message = 'Check <code class="cs1-code">|message-id=</code> value',
anchor = 'bad_message_id',
category = 'CS1 errors: message-id',
hidden = false
},
err_bad_zbl = {
message = 'Check <code class="cs1-code">|zbl=</code> value',
anchor = 'bad_zbl',
category = 'CS1 errors: Zbl',
hidden = false
},
err_bare_url_missing_title = {
message = '$1 missing title', -- $1 is parameter name
anchor = 'bare_url_missing_title',
category = 'CS1 errors: bare URL',
hidden = false
},
err_biorxiv_missing = {
message = '<code class="cs1-code">|biorxiv=</code> required',
anchor = 'biorxiv_missing',
category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
hidden = false
},
err_chapter_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'chapter_ignored',
category = 'CS1 errors: chapter ignored',
hidden = false
},
err_citation_missing_title = {
message = 'Missing or empty <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'citation_missing_title',
category = 'CS1 errors: missing title',
hidden = false
},
err_citeseerx_missing = {
message = '<code class="cs1-code">|citeseerx=</code> required',
anchor = 'citeseerx_missing',
category = 'CS1 errors: citeseerx', -- same as bad citeseerx
hidden = false
},
err_cite_web_url = { -- this error applies to cite web and to cite podcast
message = 'Missing or empty <code class="cs1-code">|url=</code>',
anchor = 'cite_web_url',
category = 'CS1 errors: requires URL',
hidden = false
},
err_class_ignored = {
message = '<code class="cs1-code">|class=</code> ignored',
anchor = 'class_ignored',
category = 'CS1 errors: class',
hidden = false
},
err_contributor_ignored = {
message = '<code class="cs1-code">|contributor=</code> ignored',
anchor = 'contributor_ignored',
category = 'CS1 errors: contributor',
hidden = false
},
err_contributor_missing_required_param = {
message = '<code class="cs1-code">|contributor=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'contributor_missing_required_param',
category = 'CS1 errors: contributor',
hidden = false
},
err_deprecated_params = {
message = 'Cite uses deprecated parameter <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'deprecated_params',
category = 'CS1 errors: deprecated parameters',
hidden = false
},
err_disp_name = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name; $2 is the assigned value
anchor = 'disp_name',
category = 'CS1 errors: display-names',
hidden = false,
},
err_doibroken_missing_doi = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|doi=</code>', -- $1 is parameter name
anchor = 'doibroken_missing_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_embargo_missing_pmc = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|pmc=</code>', -- $1 is parameter name
anchor = 'embargo_missing_pmc',
category = 'CS1 errors: PMC embargo',
hidden = false
},
err_empty_citation = {
message = 'Empty citation',
anchor = 'empty_citation',
category = 'CS1 errors: empty citation',
hidden = false
},
err_etal = {
message = 'Explicit use of et al. in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'explicit_et_al',
category = 'CS1 errors: explicit use of et al.',
hidden = false
},
err_extra_text_edition = {
message = '<code class="cs1-code">|edition=</code> has extra text',
anchor = 'extra_text_edition',
category = 'CS1 errors: extra text: edition',
hidden = false,
},
err_extra_text_issue = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_issue',
category = 'CS1 errors: extra text: issue',
hidden = false,
},
err_extra_text_pages = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_pages',
category = 'CS1 errors: extra text: pages',
hidden = false,
},
err_extra_text_volume = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_volume',
category = 'CS1 errors: extra text: volume',
hidden = false,
},
err_first_missing_last = {
message = '<code class="cs1-code">|$1=</code> missing <code class="cs1-code">|$2=</code>', -- $1 is first alias, $2 is matching last alias
anchor = 'first_missing_last',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_format_missing_url = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|$2=</code>', -- $1 is format parameter $2 is url parameter
anchor = 'format_missing_url',
category = 'CS1 errors: format without URL',
hidden = false
},
err_generic_name = {
message = '<code class="cs1-code">|$1=</code> has generic name', -- $1 is parameter name
anchor = 'generic_name',
category = 'CS1 errors: generic name',
hidden = false,
},
err_generic_title = {
message = 'Cite uses generic title',
anchor = 'generic_title',
category = 'CS1 errors: generic title',
hidden = false,
},
err_invalid_isbn_date = {
message = 'ISBN / Date incompatibility',
anchor = 'invalid_isbn_date',
category = 'CS1 errors: ISBN date',
hidden = true
},
err_invalid_param_val = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name $2 is parameter value
anchor = 'invalid_param_val',
category = 'CS1 errors: invalid parameter value',
hidden = false
},
err_invisible_char = {
message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number
anchor = 'invisible_char',
category = 'CS1 errors: invisible characters',
hidden = false
},
err_medrxiv_missing = {
message = '<code class="cs1-code">|medrxiv=</code> required',
anchor = 'medrxiv_missing',
category = 'CS1 errors: medRxiv', -- same as bad medRxiv
hidden = false
},
err_missing_name = {
message = 'Missing <code class="cs1-code">|$1$2=</code>', -- $1 is modified NameList; $2 is enumerator
anchor = 'missing_name',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_missing_periodical = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1
anchor = 'missing_periodical',
category = 'CS1 errors: missing periodical',
hidden = false
},
err_missing_pipe = {
message = 'Missing pipe in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'missing_pipe',
category = 'CS1 errors: missing pipe',
hidden = false
},
err_missing_publisher = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1
anchor = 'missing_publisher',
category = 'CS1 errors: missing publisher',
hidden = false
},
err_numeric_names = {
message = '<code class="cs1-code">|$1=</code> has numeric name', -- $1 is parameter name',
anchor = 'numeric_names',
category = 'CS1 errors: numeric name',
hidden = false,
},
err_param_access_requires_param = {
message = '<code class="cs1-code">|$1-access=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'param_access_requires_param',
category = 'CS1 errors: param-access',
hidden = false
},
err_param_has_ext_link = {
message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name
anchor = 'param_has_ext_link',
category = 'CS1 errors: external links',
hidden = false
},
err_param_has_twl_url = {
message = 'Wikipedia Library link in <code class="cs1-code">$1</code>', -- $1 is parameter name
anchor = 'param_has_twl_url',
category = 'CS1 errors: URL',
hidden = false
},
err_parameter_ignored = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'parameter_ignored',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_parameter_ignored_suggest = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored (<code class="cs1-code">|$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name
anchor = 'parameter_ignored_suggest',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_periodical_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'periodical_ignored',
category = 'CS1 errors: periodical ignored',
hidden = false
},
err_redundant_parameters = {
message = 'More than one of $1 specified', -- $1 is error message detail
anchor = 'redundant_parameters',
category = 'CS1 errors: redundant parameter',
hidden = false
},
err_script_parameter = {
message = 'Invalid <code class="cs1-code">|$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail
anchor = 'script_parameter',
category = 'CS1 errors: script parameters',
hidden = false
},
err_ssrn_missing = {
message = '<code class="cs1-code">|ssrn=</code> required',
anchor = 'ssrn_missing',
category = 'CS1 errors: SSRN',
hidden = false
},
err_text_ignored = {
message = 'Text "$1" ignored', -- $1 is ignored text
anchor = 'text_ignored',
category = 'CS1 errors: unrecognized parameter',
hidden = false
},
err_trans_missing_title = {
message = '<code class="cs1-code">|trans-$1=</code> requires <code class="cs1-code">|$1=</code> or <code class="cs1-code">|script-$1=</code>', -- $1 is base parameter name
anchor = 'trans_missing_title',
category = 'CS1 errors: translated title',
hidden = false
},
err_param_unknown_empty = {
message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list
anchor = 'param_unknown_empty',
category = 'CS1 errors: empty unknown parameters',
hidden = false
},
err_vancouver = {
message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name
anchor = 'vancouver',
category = 'CS1 errors: Vancouver style',
hidden = false
},
err_wikilink_in_url = {
message = 'URL–wikilink conflict', -- uses ndash
anchor = 'wikilink_in_url',
category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
hidden = false
},
--[[--------------------------< M A I N T >-------------------------------------
maint messages do not have a message (message = nil); otherwise the structure
is the same as error messages
]]
maint_archive_origin = {
message = nil,
anchor = 'archive_origin',
category = 'CS1 maint: archive origin',
hidden = true,
},
maint_archived_copy = {
message = nil,
anchor = 'archived_copy',
category = 'CS1 maint: archived copy as title',
hidden = true,
},
maint_bibcode = {
message = nil,
anchor = 'bibcode',
category = 'CS1 maint: bibcode',
hidden = true,
},
maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite
message = nil,
anchor = 'location_no_publisher',
category = 'CS1 maint: location missing publisher',
hidden = true,
},
maint_bot_unknown = {
message = nil,
anchor = 'bot:_unknown',
category = 'CS1 maint: bot: original URL status unknown',
hidden = true,
},
maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki
message = nil,
anchor = 'date_auto_xlated',
category = 'CS1 maint: date auto-translated',
hidden = true,
},
maint_date_format = {
message = nil,
anchor = 'date_format',
category = 'CS1 maint: date format',
hidden = true,
},
maint_date_year = {
message = nil,
anchor = 'date_year',
category = 'CS1 maint: date and year',
hidden = true,
},
maint_deprecated_archive = {
message = nil,
anchor = 'deprecated_archive',
category = 'CS1 maint: deprecated archival service',
hidden = true,
},
maint_doi_ignore = {
message = nil,
anchor = 'doi_ignore',
category = 'CS1 maint: ignored DOI errors',
hidden = true,
},
maint_doi_inactive = {
message = nil,
anchor = 'doi_inactive',
category = 'CS1 maint: DOI neuvioyr',
hidden = true,
},
maint_doi_inactive_dated = {
message = nil,
anchor = 'doi_inactive_dated',
category = 'CS1 maint: DOI neuvioyr ec $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string
hidden = true,
},
maint_doi_unflagged_free = {
message = nil,
anchor = 'doi_unflagged_free',
category = 'CS1 maint: DOI seyr neu-chowrit',
hidden = true,
},
maint_extra_punct = {
message = nil,
anchor = 'extra_punct',
category = 'CS1 maint: extra punctuation',
hidden = true,
},
maint_id_limit_load_fail = { -- applies to all cs1|2 templates on a page;
message = nil, -- maint message (category link) never emitted
anchor = 'id_limit_load_fail',
category = 'CS1 maint: ID limit load fail',
hidden = true,
},
maint_isbn_ignore = {
message = nil,
anchor = 'ignore_isbn_err',
category = 'CS1 maint: ignored ISBN errors',
hidden = true,
},
maint_issn_ignore = {
message = nil,
anchor = 'ignore_issn',
category = 'CS1 maint: ignored ISSN errors',
hidden = true,
},
maint_jfm_format = {
message = nil,
anchor = 'jfm_format',
category = 'CS1 maint: JFM format',
hidden = true,
},
maint_location = {
message = nil,
anchor = 'location',
category = 'CS1 maint: location',
hidden = true,
},
maint_missing_class = {
message = nil,
anchor = 'missing_class',
category = 'CS1 maint: missing class',
hidden = true,
},
maint_mr_format = {
message = nil,
anchor = 'mr_format',
category = 'CS1 maint: MR format',
hidden = true,
},
maint_mult_names = {
message = nil,
anchor = 'mult_names',
category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_numeric_names = {
message = nil,
anchor = 'numeric_names',
category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_others = {
message = nil,
anchor = 'others',
category = 'CS1 maint: others',
hidden = true,
},
maint_others_avm = {
message = nil,
anchor = 'others_avm',
category = 'CS1 maint: others in cite AV media (notes)',
hidden = true,
},
maint_overridden_setting = {
message = nil,
anchor = 'overridden',
category = 'CS1 maint: overridden setting',
hidden = true,
},
maint_page_art_num = {
message = nil,
anchor = 'page_art_num',
category = 'CS1 maint: article number as page number',
hidden = true,
},
maint_pmc_embargo = {
message = nil,
anchor = 'embargo',
category = 'CS1 maint: PMC embargo expired',
hidden = true,
},
maint_pmc_format = {
message = nil,
anchor = 'pmc_format',
category = 'CS1 maint: PMC format',
hidden = true,
},
maint_postscript = {
message = nil,
anchor = 'postscript',
category = 'CS1 maint: postscript',
hidden = true,
},
maint_publisher_location = {
message = nil,
anchor = 'publisher_location',
category = 'CS1 maint: publisher location',
hidden = true,
},
maint_ref_duplicates_default = {
message = nil,
anchor = 'ref_default',
category = 'CS1 maint: ref duplicates default',
hidden = true,
},
maint_shortened_archive_url = {
message = nil,
anchor = 'shortened_archive_url',
category = 'CS1 maint: shortened archive url',
hidden = true,
},
maint_unknown_lang = {
message = nil,
anchor = 'unknown_lang',
category = 'CS1 maint: çhengey gyn enney',
hidden = true,
},
maint_untitled = {
message = nil,
anchor = 'untitled',
category = 'CS1 maint: untitled periodical',
hidden = true,
},
maint_url_status = {
message = nil,
anchor = 'url_status',
category = 'CS1 maint: url-status',
hidden = true,
},
maint_work_isbn = {
message = nil,
anchor = 'work_isbn',
category = 'CS1 maint: work parameter with ISBN',
hidden = true,
},
maint_year= {
message = nil,
anchor = 'year',
category = 'CS1 maint: year',
hidden = true,
},
maint_zbl = {
message = nil,
anchor = 'zbl',
category = 'CS1 maint: Zbl',
hidden = true,
},
}
--[[--------------------------< I D _ L I M I T S _ D A T A _ T >----------------------------------------------
fetch id limits for certain identifiers from c:Data:CS1/Identifier limits.tab. This source is a json tabular
data file maintained at wikipedia commons. Convert the json format to a table of k/v pairs.
The values from <id_limits_data_t> are used to set handle.id_limit.
From 2025-02-21, MediaWiki is broken. Use this link to edit the tablular data file:
https://commons.wikimedia.org/w/index.php?title=Data:CS1/Identifier_limits.tab&action=edit
See Phab:T389105
]]
local id_limits_data_t = {};
local use_commons_data = true; -- set to false if your wiki does not have access to mediawiki commons; then,
if false == use_commons_data then -- update this table from https://commons.wikimedia.org/wiki/Data:CS1/Identifier_limits.tab; last update: 2025-02-21
id_limits_data_t = {['OCLC'] = 10450000000, ['OSTI'] = 23010000, ['PMC'] = 11900000, ['PMID'] = 40400000, ['RFC'] = 9300, ['SSRN'] = 5200000, ['S2CID'] = 276000000}; -- this table must be maintained locally
else -- here for wikis that do have access to mediawiki commons
local load_fail_limit = 99999999999; -- very high number to avoid error messages on load failure
id_limits_data_t = {['OCLC'] = load_fail_limit, ['OSTI'] = load_fail_limit, ['PMC'] = load_fail_limit, ['PMID'] = load_fail_limit, ['RFC'] = load_fail_limit, ['SSRN'] = load_fail_limit, ['S2CID'] = load_fail_limit};
local id_limits_data_load_fail = false; -- flag; assume that we will be successful when loading json id limit tabular data
if mw.ext.data == nil then
id_limits_data_load_fail = true; -- safeguard against Lua errors if mw.ext.data is not available for some reason
else
local tab_data_t = mw.ext.data.get ('CS1/Identifier limits.tab'); -- attempt to load the tabular data from commons into <tab_data_t>
if false == tab_data_t then -- undocumented 'feature': mw.ext.data.get() sometimes returns false
id_limits_data_load_fail = true; -- set the flag so that Module:Citation/CS1 can create an unannotated maint category
else
for _, limit_t in ipairs (tab_data_t.data) do -- overwrite default <load_fail_limit> values from the data table in the tabular data
id_limits_data_t[limit_t[1]] = limit_t[2]; -- <limit[1]> is identifier; <limit[2]> is upper limit for that identifier
end
end
end
end
--[[--------------------------< I D _ H A N D L E R S >--------------------------------------------------------
The following contains a list of values for various defined identifiers. For each
identifier we specify a variety of information necessary to properly render the
identifier in the citation.
parameters: a list of parameter aliases for this identifier; first in the list is the canonical form
link: Wikipedia article name
redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number'
q: Wikidata q number for the identifier
label: the label preceding the identifier; label is linked to a Wikipedia article (in this order):
redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true
Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q
local article name from id_handlers['<id>'].link
prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier
suffix: optional third part to be added after the identifier
encode: true if URI should be percent-encoded; otherwise false
COinS: identifier link or keyword for use in COinS:
for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label
for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn
for |asin= and |ol=, which require assembly, use the keyword: url
for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here)
set to nil to leave the identifier out of the COinS
separator: character or text between label and the identifier in the rendered citation
id_limit: for those identifiers with established limits, this property holds the upper limit
access: use this parameter to set the access level for all instances of this identifier.
the value must be a valid access level for an identifier (see ['id-access'] in this file).
custom_access: to enable custom access level for an identifier, set this parameter
to the parameter that should control it (normally 'id-access')
]]
local id_handlers = {
['ARXIV'] = {
parameters = {'arxiv', 'eprint'},
link = 'arXiv',
redirect = 'arXiv (identifier)',
q = 'Q118398',
label = 'arXiv',
prefix = 'https://arxiv.org/abs/',
encode = false,
COinS = 'info:arxiv',
separator = ':',
access = 'free', -- free to read
},
['ASIN'] = {
parameters = { 'asin', 'ASIN' },
link = 'Amazon Standard Identification Number',
redirect = 'ASIN (identifier)',
q = 'Q1753278',
label = 'ASIN',
prefix = 'https://www.amazon.',
COinS = 'url',
separator = ' ',
encode = false;
},
['BIBCODE'] = {
parameters = {'bibcode'},
link = 'Bibcode',
redirect = 'Bibcode (identifier)',
q = 'Q25754',
label = 'Bibcode',
prefix = 'https://ui.adsabs.harvard.edu/abs/',
encode = false,
COinS = 'info:bibcode',
separator = ':',
custom_access = 'bibcode-access',
},
['BIORXIV'] = {
parameters = {'biorxiv'},
link = 'bioRxiv',
redirect = 'bioRxiv (identifier)',
q = 'Q19835482',
label = 'bioRxiv',
prefix = 'https://doi.org/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['CITESEERX'] = {
parameters = {'citeseerx'},
link = 'CiteSeerX',
redirect = 'CiteSeerX (identifier)',
q = 'Q2715061',
label = 'CiteSeerX',
prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['DOI'] = { -- Used by InternetArchiveBot
parameters = { 'doi', 'DOI'},
link = 'Digital object identifier',
redirect = 'doi (identifier)',
q = 'Q25670',
label = 'doi',
prefix = 'https://doi.org/',
COinS = 'info:doi',
separator = ':',
encode = true,
custom_access = 'doi-access',
},
['EISSN'] = {
parameters = {'eissn', 'EISSN'},
link = 'International Standard Serial Number#Electronic ISSN',
redirect = 'eISSN (identifier)',
q = 'Q46339674',
label = 'eISSN',
prefix = 'https://search.worldcat.org/issn/',
COinS = 'rft.eissn',
encode = false,
separator = ' ',
},
['HDL'] = {
parameters = { 'hdl', 'HDL' },
link = 'Handle System',
redirect = 'hdl (identifier)',
q = 'Q3126718',
label = 'hdl',
prefix = 'https://hdl.handle.net/',
COinS = 'info:hdl',
separator = ':',
encode = true,
custom_access = 'hdl-access',
},
['ISBN'] = { -- Used by InternetArchiveBot
parameters = {'isbn', 'ISBN'},
link = 'International Standard Book Number',
redirect = 'ISBN (identifier)',
q = 'Q33057',
label = 'ISBN',
prefix = 'Special:BookSources/',
COinS = 'rft.isbn',
separator = ' ',
},
['ISMN'] = {
parameters = {'ismn', 'ISMN'},
link = 'International Standard Music Number',
redirect = 'ISMN (identifier)',
q = 'Q1666938',
label = 'ISMN',
prefix = '', -- not currently used;
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['ISSN'] = {
parameters = {'issn', 'ISSN'},
link = 'International Standard Serial Number',
redirect = 'ISSN (identifier)',
q = 'Q131276',
label = 'ISSN',
prefix = 'https://search.worldcat.org/issn/',
COinS = 'rft.issn',
encode = false,
separator = ' ',
},
['JFM'] = {
parameters = {'jfm', 'JFM'},
link = 'Jahrbuch über die Fortschritte der Mathematik',
redirect = 'JFM (identifier)',
q = '',
label = 'JFM',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['JSTOR'] = {
parameters = {'jstor', 'JSTOR'},
link = 'JSTOR',
redirect = 'JSTOR (identifier)',
q = 'Q1420342',
label = 'JSTOR',
prefix = 'https://www.jstor.org/stable/',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
custom_access = 'jstor-access',
},
['LCCN'] = {
parameters = {'lccn', 'LCCN'},
link = 'Library of Congress Control Number',
redirect = 'LCCN (identifier)',
q = 'Q620946',
label = 'LCCN',
prefix = 'https://lccn.loc.gov/',
COinS = 'info:lccn',
encode = false,
separator = ' ',
},
['MEDRXIV'] = {
parameters = {'medrxiv'},
link = 'medRxiv',
redirect = 'medRxiv (identifier)',
q = 'Q58465838',
label = 'medRxiv',
prefix = 'https://www.medrxiv.org/content/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = false,
separator = ' ',
},
['MR'] = {
parameters = {'mr', 'MR'},
link = 'Mathematical Reviews',
redirect = 'MR (identifier)',
q = 'Q211172',
label = 'MR',
prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['OCLC'] = {
parameters = {'oclc', 'OCLC'},
link = 'OCLC',
redirect = 'OCLC (identifier)',
q = 'Q190593',
label = 'OCLC',
prefix = 'https://search.worldcat.org/oclc/',
COinS = 'info:oclcnum',
encode = true,
separator = ' ',
id_limit = id_limits_data_t.OCLC or 0,
},
['OL'] = {
parameters = { 'ol', 'OL' },
link = 'Open Library',
redirect = 'OL (identifier)',
q = 'Q1201876',
label = 'OL',
prefix = 'https://openlibrary.org/',
COinS = 'url',
separator = ' ',
encode = true,
custom_access = 'ol-access',
},
['OSTI'] = {
parameters = {'osti', 'OSTI'},
link = 'Office of Scientific and Technical Information',
redirect = 'OSTI (identifier)',
q = 'Q2015776',
label = 'OSTI',
prefix = 'https://www.osti.gov/biblio/',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = id_limits_data_t.OSTI or 0,
custom_access = 'osti-access',
},
['PMC'] = {
parameters = {'pmc', 'PMC'},
link = 'PubMed Central',
redirect = 'PMC (identifier)',
q = 'Q229883',
label = 'PMC',
prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC',
suffix = '',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = id_limits_data_t.PMC or 0,
access = 'free', -- free to read
},
['PMID'] = {
parameters = {'pmid', 'PMID'},
link = 'PubMed Identifier',
redirect = 'PMID (identifier)',
q = 'Q2082879',
label = 'PMID',
prefix = 'https://pubmed.ncbi.nlm.nih.gov/',
COinS = 'info:pmid',
encode = false,
separator = ' ',
id_limit = id_limits_data_t.PMID or 0,
},
['RFC'] = {
parameters = {'rfc', 'RFC'},
link = 'Request for Comments',
redirect = 'RFC (identifier)',
q = 'Q212971',
label = 'RFC',
prefix = 'https://tools.ietf.org/html/rfc',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = id_limits_data_t.RFC or 0,
access = 'free', -- free to read
},
['SBN'] = {
parameters = {'sbn', 'SBN'},
link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History
redirect = 'SBN (identifier)',
label = 'SBN',
prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['SSRN'] = {
parameters = {'ssrn', 'SSRN'},
link = 'Social Science Research Network',
redirect = 'SSRN (identifier)',
q = 'Q7550801',
label = 'SSRN',
prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = id_limits_data_t.SSRN or 0,
custom_access = 'ssrn-access',
},
['S2CID'] = {
parameters = {'s2cid', 'S2CID'},
link = 'Semantic Scholar',
redirect = 'S2CID (identifier)',
q = 'Q22908627',
label = 'S2CID',
prefix = 'https://api.semanticscholar.org/CorpusID:',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = id_limits_data_t.S2CID or 0,
custom_access = 's2cid-access',
},
['USENETID'] = {
parameters = {'message-id'},
link = 'Usenet',
redirect = 'Usenet (identifier)',
q = 'Q193162',
label = 'Usenet:',
prefix = 'news:',
encode = false,
COinS = 'pre', -- use prefix value
separator = ' ',
},
['ZBL'] = {
parameters = {'zbl', 'ZBL' },
link = 'Zentralblatt MATH',
redirect = 'Zbl (identifier)',
q = 'Q190269',
label = 'Zbl',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
}
--[[--------------------------< E X P O R T S >---------------------------------
]]
return {
use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module
local_lang_cat_enable = local_lang_cat_enable,
date_name_auto_xlate_enable = date_name_auto_xlate_enable,
date_digit_auto_xlate_enable = date_digit_auto_xlate_enable,
enable_sort_keys = enable_sort_keys,
suppress_archive_today_urls = suppress_archive_today_urls,
-- tables and variables created when this module is loaded
dependencies_t = dependencies_t, -- used to suppress parameters dependent on url-holding parameters holding archive.today urls
enum_needs_xlation = '1' ~= date_names.xlate_digits['1'], -- to avoid unnecessary enumerator translation
global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format.
global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}}
id_limits_data_load_fail = id_limits_data_load_fail, -- true when commons tabular identifier-limit data fails to load
known_free_doi_registrants_t = build_free_doi_registrants_table(),
punct_skip = build_skip_table (punct_skip, punct_meta_params),
url_skip = build_skip_table (url_skip, url_meta_params),
archive_today_tlds_t = {['today'] = true, ['ph'] = true, ['is'] = true, ['md'] = true, ['li'] = true, ['fo'] = true, ['vn'] = true}; -- used by is_archive_today_url()
name_space_sort_keys = name_space_sort_keys,
aliases = aliases,
special_case_translation = special_case_translation,
date_names = date_names,
err_msg_supl = err_msg_supl,
error_conditions = error_conditions,
editor_markup_patterns = editor_markup_patterns,
et_al_patterns = et_al_patterns,
extended_registrants_t = extended_registrants_t,
id_handlers = id_handlers,
keywords_lists = keywords_lists,
keywords_xlate = keywords_xlate,
stripmarkers = stripmarkers,
invisible_chars = invisible_chars,
invisible_defs = invisible_defs,
indic_script = indic_script,
emoji_t = emoji_t,
maint_cats = maint_cats,
messages = messages,
presentation = presentation,
prop_cats = prop_cats,
script_lang_codes = script_lang_codes,
lang_tag_remap = lang_tag_remap,
lang_name_remap = lang_name_remap,
this_wiki_code = this_wiki_code,
title_types = title_types,
uncategorized_namespaces = uncategorized_namespaces_t,
uncategorized_subpages = uncategorized_subpages,
templates_using_volume = templates_using_volume,
templates_using_issue = templates_using_issue,
templates_not_using_page = templates_not_using_page,
vol_iss_pg_patterns = vol_iss_pg_patterns,
single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t,
url_access_map_t = url_access_map_t,
inter_wiki_map = inter_wiki_map,
mw_languages_by_tag_t = mw_languages_by_tag_t,
mw_languages_by_name_t = mw_languages_by_name_t,
citation_class_map_t = citation_class_map_t,
citation_issue_t = citation_issue_t,
citation_no_volume_t = citation_no_volume_t,
}
i3bte5pk8vod8hnvo2c27oaaa2r0sc7
Ymmydeyr:Ansony89
2
29943
394639
389105
2026-10-17T09:50:44Z
Ansony89
19983
394639
wikitext
text/x-wiki
{{#Babel:en-4|fr-3|ja-3|no-1|gv-0}}
Come see me on [http://en.wikipedia.org/wiki/User:Ansony89 English Wikipedia].
a257euyucpj0y8xhz609fxutjzrsym8
Module:ISO 639 name/ISO 639-1
828
30251
394547
394406
2026-10-16T14:19:28Z
MacTire02
219
wolofish
394547
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["aa"] = {"Afarish"},
["ab"] = {"Abcaashish"},
["ae"] = {"Avestan"},
["af"] = {"Affrickaanish"},
["ak"] = {"Akanish"},
["am"] = {"Amharish"},
["an"] = {"Aragonish"},
["ar"] = {"Arabish"},
["as"] = {"Assamish"},
["av"] = {"Avarish"},
["ay"] = {"Aymarish"},
["az"] = {"Asserbajaanish"},
["ba"] = {"Bashkeerish"},
["be"] = {"Belarooshish"},
["bg"] = {"Bulgeyrish"},
["bh"] = {"Çhengaghyn Biharagh"},
["bi"] = {"Bislama"},
["bm"] = {"Bambara"},
["bn"] = {"Bengaalish", "Bangla"},
["bo"] = {"Tibetish"},
["br"] = {"Britaanish"},
["bs"] = {"Bosnish"},
["ca"] = {"Cataloanish", "Valensish"},
["ce"] = {"Sheshnish"},
["ch"] = {"Chamorro"},
["co"] = {"Corsickish"},
["cr"] = {"Creeish"},
["cs"] = {"Sheckish"},
["cu"] = {"Slavish Agglish", "Slavonish Agglish", "Slavish yn Agglish", "Slavonish yn Agglish", "Shenn Vulgeyrish", "Shenn Slavonish Agglish", "Shenn Slavish Agglish"},
["cv"] = {"Çhuvashish"},
["cy"] = {"Bretnish"},
["da"] = {"Danvargish"},
["de"] = {"Germaanish"},
["dv"] = {"Dhivehi", "Divehi", "Maldeevish"},
["dz"] = {"Dzongkha"},
["ee"] = {"Ewe"},
["el"] = {"Greagish Noa-emshyragh (1453-)"},
["en"] = {"Baarle"},
["eo"] = {"Esperanto"},
["es"] = {"Spaainish", "Casteelish"},
["et"] = {"Estoinish", "Esthoinish", "Estaanish"},
["eu"] = {"Bascish"},
["fa"] = {"Pershish"},
["ff"] = {"Fulah"},
["fi"] = {"Finnish"},
["fj"] = {"Fijian"},
["fo"] = {"Faaroish"},
["fr"] = {"Frangish"},
["fy"] = {"Freeshlannish Heear"},
["ga"] = {"Yernish", "Gaelg Nerin", "Gaelg ny h-Erin", "Gaelg Yernagh"},
["gd"] = {"Gaelg ny h-Albey", "Gaelg Albinagh"},
["gl"] = {"Galeeshish"},
["gn"] = {"Guaranish"},
["gu"] = {"Gujaratish"},
["gv"] = {"Gaelg", "Gailck"},
["ha"] = {"Hausa"},
["he"] = {"Ewnish"},
["hi"] = {"Hindish"},
["ho"] = {"Hiri Motu"},
["hr"] = {"Croitish"},
["ht"] = {"Haitish", "Creeole Haiti"},
["hu"] = {"Ungaarish"},
["hy"] = {"Armeanish"},
["hz"] = {"Herero"},
["ia"] = {"Interlingua (International Auxiliary Language Association)"},
["id"] = {"Indoneeshish"},
["ie"] = {"Interlingue", "Occidental"},
["ig"] = {"Igbo"},
["ii"] = {"Sichuan Yi", "Nuosu"},
["ik"] = {"Inupiaq"},
["io"] = {"Ido"},
["is"] = {"Eeslynnish"},
["it"] = {"Iddaalish"},
["iu"] = {"Inuktitut"},
["ja"] = {"Shapaanish"},
["jv"] = {"basa Jawa"},
["ka"] = {"Shorshish"},
["kg"] = {"Kongoish"},
["ki"] = {"Kikuyu", "Gikuyu"},
["kj"] = {"Kuanyama", "Kwanyama"},
["kk"] = {"Kassaghish"},
["kl"] = {"Kalaallisut", "Greenlynnish"},
["km"] = {"Khmerish", "Khmerish Veanagh"},
["kn"] = {"Kannada"},
["ko"] = {"Koreeish"},
["kr"] = {"Kanurish"},
["ks"] = {"Kashmirish"},
["ku"] = {"Kurdish"},
["kv"] = {"Komish"},
["kw"] = {"Cornish"},
["ky"] = {"Kyrgish"},
["la"] = {"Ladjyn"},
["lb"] = {"Lucsemburgish", "Letzeburgesch"},
["lg"] = {"Ganda", "Luganda"},
["li"] = {"Limburgish"},
["ln"] = {"Lingalish"},
["lo"] = {"Laoish"},
["lt"] = {"Litaanish"},
["lu"] = {"Luba-Katanga"},
["lv"] = {"Latvish"},
["mg"] = {"Malagasish"},
["mh"] = {"Marshylish"},
["mi"] = {"Maorish"},
["mk"] = {"Massadoanish"},
["ml"] = {"Malayalamish"},
["mn"] = {"Mongoilish"},
["mr"] = {"Marathish"},
["ms"] = {"Malayish (mooar-hengey)"},
["mt"] = {"Maltish"},
["my"] = {"Burmish"},
["na"] = {"Nauru"},
["nb"] = {"Bokmål Norlynnagh"},
["nd"] = {"Ndebele Hwoaie"},
["ne"] = {"Nepaalish (mooar-hengey)"},
["ng"] = {"Ndonga"},
["nl"] = {"Ollanish", "Flandrynish"},
["nn"] = {"Nynorsk Norlynnagh"},
["no"] = {"Norlynnish"},
["nr"] = {"Ndebele Yiass"},
["nv"] = {"Navajo", "Navaho"},
["ny"] = {"Chewish", "Nyanja", "Chewa", "Chichewa"},
["oc"] = {"Ocsitaanish (lurg 1500)"},
["oj"] = {"Ojibwa"},
["om"] = {"Oromoish"},
["or"] = {"Oriyish (mooar-hengey)", "Odish (mooar-hengey)"},
["os"] = {"Ossetish"},
["pa"] = {"Panjabish", "Punjabish"},
["pi"] = {"Palish"},
["pl"] = {"Polynnish"},
["ps"] = {"Pushtish", "Pashtish"},
["pt"] = {"Portiugish"},
["qu"] = {"Quechua"},
["rm"] = {"Romanshish"},
["rn"] = {"Rundish"},
["ro"] = {"Romaanish", "Romaainish", "Moldaavish", "Moldovish"},
["ru"] = {"Rooshish"},
["rw"] = {"Kinyarwanda"},
["sa"] = {"Sanskrit"},
["sc"] = {"Sardeenish"},
["sd"] = {"Sindhish"},
["se"] = {"Samish Hwoaie"},
["sg"] = {"Sango"},
["sh"] = {"Serbo-Chroitish"},
["si"] = {"Sinhala", "Sinhalish"},
["sk"] = {"Slovackish"},
["sl"] = {"Sloveanish"},
["sm"] = {"Samoish"},
["sn"] = {"Shonish"},
["so"] = {"Somaalish"},
["sq"] = {"Albaanish"},
["sr"] = {"Serbish"},
["ss"] = {"Swassish"},
["st"] = {"Sothoish Yiass"},
["su"] = {"Sundanish"},
["sv"] = {"Soolynnish"},
["sw"] = {"Swahilish (mooar-hengey)"},
["ta"] = {"Tamilish"},
["te"] = {"Teloogooish"},
["tg"] = {"Tajikish"},
["th"] = {"Thai"},
["ti"] = {"Tigrinyish"},
["tk"] = {"Turkmenish"},
["tl"] = {"Tagalogish"},
["tn"] = {"Tswaanish"},
["to"] = {"Tonga (Ellanyn y Tongey)"},
["tr"] = {"Turkish"},
["ts"] = {"Tsongish"},
["tt"] = {"Tatarish"},
["tw"] = {"Twi"},
["ty"] = {"Tahitish"},
["ug"] = {"Uighurish", "Uyghurish"},
["uk"] = {"Ukraanish"},
["ur"] = {"Oordooish"},
["uz"] = {"Oosbeckish"},
["ve"] = {"Vendish"},
["vi"] = {"Vietnamish"},
["vo"] = {"Volapük"},
["wa"] = {"Walloonish"},
["wo"] = {"Wolofish"},
["xh"] = {"Xhosa"},
["yi"] = {"Ewdish"},
["yo"] = {"Yorubish"},
["za"] = {"Zhuang", "Chuang"},
["zh"] = {"Sheenish"},
["zu"] = {"Soolooish"}
}
tqnymye0i01f2ofstase4jirh6e32si
Module:Language/data/iana languages
828
30253
394546
394513
2026-10-16T14:18:59Z
MacTire02
219
wolofish
394546
Scribunto
text/plain
-- File-Date: 2023-10-16
local active = {
["aa"] = {"Afarish"},
["ab"] = {"Abcaashish"},
["ae"] = {"Avestan"},
["af"] = {"Affrickaanish"},
["ak"] = {"Akanish"},
["am"] = {"Amharish"},
["an"] = {"Aragonish"},
["ar"] = {"Arabish"},
["as"] = {"Assamish"},
["av"] = {"Avarish"},
["ay"] = {"Aymarish"},
["az"] = {"Asserbajaanish"},
["ba"] = {"Bashkeerish"},
["be"] = {"Belarooshish"},
["bg"] = {"Bulgeyrish"},
["bh"] = {"çhengaghyn Bihari"},
["bi"] = {"Bislama"},
["bm"] = {"Bambarish"},
["bn"] = {"Bengaalish", "Bangla"},
["bo"] = {"Tibetish"},
["br"] = {"Britaanish"},
["bs"] = {"Bosnish"},
["ca"] = {"Catalaanish", "Cataloanish", "Valensianish", "Valenciano"},
["ce"] = {"Sheshnish"},
["ch"] = {"Chamorro"},
["co"] = {"Corsickish"},
["cr"] = {"Creeish"},
["cs"] = {"Sheckish"},
["cu"] = {"Slavish Agglish", "Slavonish Agglish", "Slavish yn Agglish", "Slavonish yn Agglish", "Shenn Vulgeyrish", "Shenn Slavonish Agglish", "Shenn Slavish Agglish"},
["cv"] = {"Shuvashish"},
["cy"] = {"Bretnish"},
["da"] = {"Danvargish"},
["de"] = {"Germaanish"},
["dv"] = {"Dhivehi", "Divehi", "Maldeevish"},
["dz"] = {"Dzongkha"},
["ee"] = {"Ewe"},
["el"] = {"Greagish Noa-emshyragh (1453-)"},
["en"] = {"Baarle"},
["eo"] = {"Esperanto"},
["es"] = {"Spaainish", "Cashteelish"},
["et"] = {"Estaanish", "Estoinish", "Esthoinish"},
["eu"] = {"Bascish"},
["fa"] = {"Pershish"},
["ff"] = {"Fulah"},
["fi"] = {"Finnlynnish"},
["fj"] = {"Fijian"},
["fo"] = {"Faaroish"},
["fr"] = {"Frangish"},
["fy"] = {"Freeshlannish Heear"},
["ga"] = {"Yernish", "Gaelg Nerin", "Gaelg ny h-Erin", "Gaelg Yernagh"},
["gd"] = {"Gaelg ny h-Albey", "Gaelg Albinagh"},
["gl"] = {"Galeeshish"},
["gn"] = {"Guaranish"},
["gu"] = {"Gujaratish"},
["gv"] = {"Gaelg", "Gailck"},
["ha"] = {"Hausish"},
["he"] = {"Ewnish"},
["hi"] = {"Hindish"},
["ho"] = {"Hiri Motu"},
["hr"] = {"Croitish"},
["ht"] = {"Haitish", "Creeole Haiti"},
["hu"] = {"Ungaarish"},
["hy"] = {"Armeanish"},
["hz"] = {"Hereroish"},
["ia"] = {"Interlingua (International Auxiliary Language Association)"},
["id"] = {"Indoneeshish"},
["ie"] = {"Interlingue", "Occidental"},
["ig"] = {"Igbo"},
["ii"] = {"Sichuan Yi", "Nuosu"},
["ik"] = {"Inupiaq"},
["io"] = {"Idoish"},
["is"] = {"Eeslynnish"},
["it"] = {"Iddaalish"},
["iu"] = {"Inuktitut"},
["ja"] = {"Shapaanish"},
["jv"] = {"Javish", "basa Jawa"},
["ka"] = {"Shorshish"},
["kg"] = {"Kongoish"},
["ki"] = {"Kikuyuish", "Gikuyu"},
["kj"] = {"Kuanyamish", "Kwanyama"},
["kk"] = {"Kassaghish"},
["kl"] = {"Kalaallisut", "Greenlynnish"},
["km"] = {"Khmerish", "Khmerish Veanagh"},
["kn"] = {"Kannada"},
["ko"] = {"Koreeish"},
["kr"] = {"Kanurish"},
["ks"] = {"Kashmirish"},
["ku"] = {"Kurdish"},
["kv"] = {"Komish"},
["kw"] = {"Cornish"},
["ky"] = {"Kyrgish"},
["la"] = {"Ladjyn"},
["lb"] = {"Lucsemburgish", "Letzeburgesch"},
["lg"] = {"Ganda", "Luganda"},
["li"] = {"Limburgish"},
["ln"] = {"Lingalish"},
["lo"] = {"Laoish"},
["lt"] = {"Litaanish"},
["lu"] = {"Luba-Katanga"},
["lv"] = {"Latvish"},
["mg"] = {"Malagasish"},
["mh"] = {"Marshylish"},
["mi"] = {"Maorish"},
["mk"] = {"Massadoanish"},
["ml"] = {"Malayalamish"},
["mn"] = {"Mongoilish"},
["mr"] = {"Marathish"},
["ms"] = {"Malayish (mooar-hengey)"},
["mt"] = {"Maltish"},
["my"] = {"Burmish"},
["na"] = {"Nauru"},
["nb"] = {"Bokmål Norlynnagh"},
["nd"] = {"Ndebele Hwoaie"},
["ne"] = {"Nepaalish"},
["ng"] = {"Ndonga"},
["nl"] = {"Ollanish", "Flandrynish"},
["nn"] = {"Nynorsk Norlynnagh"},
["no"] = {"Norlynnish"},
["nr"] = {"Ndebele Yiass"},
["nv"] = {"Navahoish", "Navajo", "Navaho"},
["ny"] = {"Chewish", "Nyanja", "Chewa", "Chichewa"},
["oc"] = {"Ocsitaanish (lurg 1500)"},
["oj"] = {"Ojibwa"},
["om"] = {"Oromoish"},
["or"] = {"Oriyish (mooar-hengey)", "Odish (mooar-hengey)"},
["os"] = {"Ossetish"},
["pa"] = {"Panjabish", "Punjabish"},
["pi"] = {"Palish"},
["pl"] = {"Polynnish"},
["ps"] = {"Pushtish", "Pashtish"},
["pt"] = {"Portiugish"},
["qu"] = {"Quechua"},
["rm"] = {"Romansh", "Romanshish"},
["rn"] = {"Rundish"},
["ro"] = {"Romaanish", "Romaainish", "Moldaavish", "Moldovish"},
["ru"] = {"Rooshish"},
["rw"] = {"Kinyarooandish"},
["sa"] = {"Sanskrit"},
["sc"] = {"Sardeenish"},
["sd"] = {"Sindhish"},
["se"] = {"Saamish Hwoaie"},
["sg"] = {"Sangoish"},
["sh"] = {"Serbo-Chroitish"},
["si"] = {"Sinhalish"},
["sk"] = {"Slovackish"},
["sl"] = {"Sloveanish"},
["sm"] = {"Samoish"},
["sn"] = {"Shonish"},
["so"] = {"Somaalish"},
["sq"] = {"Albaanish"},
["sr"] = {"Serbish"},
["ss"] = {"Swassish"},
["st"] = {"Sotoish Yiass"},
["su"] = {"Sundanish"},
["sv"] = {"Soolynnish"},
["sw"] = {"Swahilish (mooar-hengey)"},
["ta"] = {"Tamilish"},
["te"] = {"Teloogooish"},
["tg"] = {"Tajikish"},
["th"] = {"Thai"},
["ti"] = {"Tigrinyish"},
["tk"] = {"Turkmenish"},
["tl"] = {"Tagalogish"},
["tn"] = {"Tswaanish"},
["to"] = {"Tonga (Ellanyn y Tongey)"},
["tr"] = {"Turkish"},
["ts"] = {"Tsongish"},
["tt"] = {"Tatarish"},
["tw"] = {"Twi"},
["ty"] = {"Tahitish"},
["ug"] = {"Uighurish", "Uyghurish"},
["uk"] = {"Ookraanish"},
["ur"] = {"Oordooish"},
["uz"] = {"Oosbeckish"},
["ve"] = {"Vendish"},
["vi"] = {"Vietnamish"},
["vo"] = {"Volapük"},
["wa"] = {"Walloonish"},
["wo"] = {"Wolofish"},
["xh"] = {"Xhosa"},
["yi"] = {"Ewdish"},
["yo"] = {"Yorubish"},
["za"] = {"Zhuang", "Chuang"},
["zh"] = {"Sheenish"},
["zu"] = {"Soolooish"},
["aaa"] = {"Ghotuo"},
["aab"] = {"Alumu-Tesu"},
["aac"] = {"Ari"},
["aad"] = {"Amal"},
["aae"] = {"Albaanish Arbëreshë"},
["aaf"] = {"Aranadanish"},
["aag"] = {"Ambrakish"},
["aah"] = {"Abu' Arapesh"},
["aai"] = {"Arifama-Miniafia"},
["aak"] = {"Ankave"},
["aal"] = {"Afade"},
["aan"] = {"Anambé"},
["aao"] = {"Arabish Algearagh y Tahara"},
["aap"] = {"Pará Arára"},
["aaq"] = {"Abnakish Hiar"},
["aas"] = {"Aasáx"},
["aat"] = {"Albaanish Arvanitika"},
["aau"] = {"Abau"},
["aav"] = {"çhengaghyn Austro-Aishanagh"},
["aaw"] = {"Solong"},
["aax"] = {"Mandobo Atas"},
["aaz"] = {"Amarasish"},
["aba"] = {"Abé"},
["abb"] = {"Bankonish"},
["abc"] = {"Ambala Ayta"},
["abd"] = {"Manide"},
["abe"] = {"Abnakish Heear"},
["abf"] = {"Abai Sungai"},
["abg"] = {"Abaga"},
["abh"] = {"Arabish Hajikagh"},
["abi"] = {"Abidji"},
["abj"] = {"Aka-Bea"},
["abl"] = {"Lampung Nyo"},
["abm"] = {"Abanyom"},
["abn"] = {"Abua"},
["abo"] = {"Abon"},
["abp"] = {"Abellen Ayta"},
["abq"] = {"Abaza"},
["abr"] = {"Abron"},
["abs"] = {"Ambonese Malay"},
["abt"] = {"Ambulas"},
["abu"] = {"Abure"},
["abv"] = {"Baharna Arabic"},
["abw"] = {"Pal"},
["abx"] = {"Inabaknon"},
["aby"] = {"Aneme Wake"},
["abz"] = {"Abui"},
["aca"] = {"Achagua"},
["acb"] = {"Áncá"},
["acd"] = {"Gikyode"},
["ace"] = {"Achinish"},
["acf"] = {"Creeole Frangish Noo Lucia"},
["ach"] = {"Acoli"},
["aci"] = {"Aka-Cari"},
["ack"] = {"Aka-Kora"},
["acl"] = {"Akar-Bale"},
["acm"] = {"Arabish Vesopotaamagh"},
["acn"] = {"Achang"},
["acp"] = {"Acipa Hiar"},
["acq"] = {"Ta'izzi-Adeni Arabic"},
["acr"] = {"Achi"},
["acs"] = {"Acroá"},
["act"] = {"Achterhoeks"},
["acu"] = {"Achuar-Shiwiar"},
["acv"] = {"Achumawi"},
["acw"] = {"Arabish Hijaz"},
["acx"] = {"Arabish Omaanagh"},
["acy"] = {"Arabish Cheepragh"},
["acz"] = {"Acheron"},
["ada"] = {"Adangme"},
["adb"] = {"Atauran"},
["add"] = {"Lidzonka", "Dzodinka"},
["ade"] = {"Adele"},
["adf"] = {"Arabish Dhofari"},
["adg"] = {"Andegerebinha"},
["adh"] = {"Adhola"},
["adi"] = {"Adi"},
["adj"] = {"Adioukrou"},
["adl"] = {"Galo"},
["adn"] = {"Adang"},
["ado"] = {"Abu"},
["adq"] = {"Adangbe"},
["adr"] = {"Adonara"},
["ads"] = {"Çhengey Chowree Adamorobe"},
["adt"] = {"Adnyamathanha"},
["adu"] = {"Aduge"},
["adw"] = {"Amundava"},
["adx"] = {"Tibetish Amdo"},
["ady"] = {"Adyghe", "Adygei"},
["adz"] = {"Adzera"},
["aea"] = {"Areba"},
["aeb"] = {"arabish Hooneeshagh"},
["aec"] = {"Arabish Saidi"},
["aed"] = {"Çhengey Chowree Argenteenagh"},
["aee"] = {"Pashai Hiar Hwoaie", "Pashayi Hiar Hwoaie"},
["aek"] = {"Haeke"},
["ael"] = {"Ambele"},
["aem"] = {"Arem"},
["aen"] = {"Çhengey Chowree Armeanagh"},
["aeq"] = {"Aer"},
["aer"] = {"Arrernte Hiar"},
["aes"] = {"Alsea"},
["aeu"] = {"Akeu"},
["aew"] = {"Ambakich"},
["aey"] = {"Amele"},
["aez"] = {"Aeka"},
["afa"] = {"çhengaghyn Affro-Aishanagh"},
["afb"] = {"Arabish Cheayn yn Arabaght"},
["afd"] = {"Andai"},
["afe"] = {"Putukwam"},
["afg"] = {"Çhengey Chowree Afghaanagh"},
["afh"] = {"Afrihili"},
["afi"] = {"Akrukay", "Chini"},
["afk"] = {"Nanubae"},
["afn"] = {"Defaka"},
["afo"] = {"Eloyi"},
["afp"] = {"Tapei"},
["afs"] = {"Creeole Affro-Seminolagh"},
["aft"] = {"Afitti"},
["afu"] = {"Awutu"},
["afz"] = {"Obokuitai"},
["aga"] = {"Aguano"},
["agb"] = {"Legbo"},
["agc"] = {"Agatu"},
["agd"] = {"Agarabi"},
["age"] = {"Angal"},
["agf"] = {"Arguni"},
["agg"] = {"Angor"},
["agh"] = {"Ngelima"},
["agi"] = {"Agariya"},
["agj"] = {"Argobba"},
["agk"] = {"Isarog Agta"},
["agl"] = {"Fembe"},
["agm"] = {"Angaataha"},
["agn"] = {"Agutaynen"},
["ago"] = {"Tainae"},
["agq"] = {"Aghem"},
["agr"] = {"Aguaruna"},
["ags"] = {"Esimbi"},
["agt"] = {"Cagayan Agta Meanagh"},
["agu"] = {"Aguacateco"},
["agv"] = {"Remontado Dumagat"},
["agw"] = {"Kahua"},
["agx"] = {"Aghul"},
["agy"] = {"Alta Yiass"},
["agz"] = {"Mt. Iriga Agta"},
["aha"] = {"Ahanta"},
["ahb"] = {"Axamb"},
["ahg"] = {"Qimant"},
["ahh"] = {"Aghu"},
["ahi"] = {"Tiagbamrin Aizi"},
["ahk"] = {"Akha"},
["ahl"] = {"Igo"},
["ahm"] = {"Mobumrin Aizi"},
["ahn"] = {"Àhàn"},
["aho"] = {"Ahom"},
["ahp"] = {"Aproumu Aizi"},
["ahr"] = {"Ahirani"},
["ahs"] = {"Ashe"},
["aht"] = {"Ahtena"},
["aia"] = {"Arosi"},
["aib"] = {"Ainu (y Çheen)"},
["aic"] = {"Ainbai"},
["aid"] = {"Alngith"},
["aie"] = {"Amara"},
["aif"] = {"Agi"},
["aig"] = {"Creeole Baarle Antigua as Barbuda"},
["aih"] = {"Ai-Cham"},
["aii"] = {"Noa-Aramaaish Assyriagh"},
["aij"] = {"Lishanid Noshan"},
["aik"] = {"Ake"},
["ail"] = {"Aimele"},
["aim"] = {"Aimol"},
["ain"] = {"Ainu (y Çhapaan)"},
["aio"] = {"Aiton"},
["aip"] = {"Burumakok"},
["aiq"] = {"Aimaq"},
["air"] = {"Airoran"},
["ait"] = {"Arikem"},
["aiw"] = {"Aari"},
["aix"] = {"Aighon"},
["aiy"] = {"Ali"},
["aja"] = {"Aja (y Toodaan Yiass)"},
["ajg"] = {"Aja (Benin)"},
["aji"] = {"Ajië"},
["ajn"] = {"Andajin"},
["ajs"] = {"Algerian Jewish Sign Language"},
["aju"] = {"Judeo-Moroccan Arabic"},
["ajw"] = {"Ajawa"},
["ajz"] = {"Amri Karbi"},
["akb"] = {"Batak Angkola"},
["akc"] = {"Mpur"},
["akd"] = {"Ukpet-Ehom"},
["ake"] = {"Akawaio"},
["akf"] = {"Akpa"},
["akg"] = {"Anakalangu"},
["akh"] = {"Angal Heneng"},
["aki"] = {"Aiome"},
["akj"] = {"Aka-Jeru"},
["akk"] = {"Akkadian"},
["akl"] = {"Aklanon"},
["akm"] = {"Aka-Bo"},
["ako"] = {"Akurio"},
["akp"] = {"Siwu"},
["akq"] = {"Ak"},
["akr"] = {"Araki"},
["aks"] = {"Akaselem"},
["akt"] = {"Akolet"},
["aku"] = {"Akum"},
["akv"] = {"Akhvakh"},
["akw"] = {"Akwa"},
["akx"] = {"Aka-Kede"},
["aky"] = {"Aka-Kol"},
["akz"] = {"Alabama"},
["ala"] = {"Alago"},
["alc"] = {"Qawasqar"},
["ald"] = {"Alladian"},
["ale"] = {"Aleutagh"},
["alf"] = {"Alege"},
["alg"] = {"çhengaghyn Algonquiagh"},
["alh"] = {"Alawa"},
["ali"] = {"Amaimon"},
["alj"] = {"Alangan"},
["alk"] = {"Alak"},
["all"] = {"Allar"},
["alm"] = {"Amblong"},
["aln"] = {"Albaanish Gheg"},
["alo"] = {"Larike-Wakasihu"},
["alp"] = {"Alune"},
["alq"] = {"Algonquin"},
["alr"] = {"Alutorish"},
["als"] = {"Albaanish Tosk"},
["alt"] = {"Altayish Yiass"},
["alu"] = {"'Are'are"},
["alv"] = {"çhengaghyn Atlantagh-Congo"},
["alw"] = {"Alaba-K’abeena", "Wanbasana"},
["alx"] = {"Amol"},
["aly"] = {"Alyawarr"},
["alz"] = {"Alur"},
["ama"] = {"Amanayé"},
["amb"] = {"Ambo"},
["amc"] = {"Amahuaca"},
["ame"] = {"Yanesha'"},
["amf"] = {"Hamer-Banna"},
["amg"] = {"Amurdak"},
["ami"] = {"Amis"},
["amj"] = {"Amdang"},
["amk"] = {"Ambai"},
["aml"] = {"War-Jaintia"},
["amm"] = {"Ama (Papooey Guinea Noa)"},
["amn"] = {"Amanab"},
["amo"] = {"Amo"},
["amp"] = {"Alamblak"},
["amq"] = {"Amahai"},
["amr"] = {"Amarakaeri"},
["ams"] = {"Amami-Oshima Yiass"},
["amt"] = {"Amto"},
["amu"] = {"Guerrero Amuzgo"},
["amv"] = {"Ambelau"},
["amw"] = {"Noa-Aramaaish Heear"},
["amx"] = {"Anmatyerre"},
["amy"] = {"Ami"},
["amz"] = {"Atampaya"},
["ana"] = {"Andaqui"},
["anb"] = {"Andoa"},
["anc"] = {"Ngas"},
["and"] = {"Ansus"},
["ane"] = {"Xârâcùù"},
["anf"] = {"Animere"},
["ang"] = {"Shenn Vaarle (ca. 450-1100)"},
["anh"] = {"Nend"},
["ani"] = {"Andi"},
["anj"] = {"Anor"},
["ank"] = {"Goemai"},
["anl"] = {"Anu-Hkongso Chin"},
["anm"] = {"Anal"},
["ann"] = {"Obolo"},
["ano"] = {"Andoque"},
["anp"] = {"Angika"},
["anq"] = {"Jarawa (yn Injey)"},
["anr"] = {"Andh"},
["ans"] = {"Anserma"},
["ant"] = {"Antakarinya", "Antikarinya"},
["anu"] = {"Anuak"},
["anv"] = {"Denya"},
["anw"] = {"Anaang"},
["anx"] = {"Andra-Hus"},
["any"] = {"Anyin"},
["anz"] = {"Anem"},
["aoa"] = {"Angolar"},
["aob"] = {"Abom"},
["aoc"] = {"Pemon"},
["aod"] = {"Andarum"},
["aoe"] = {"Angal Enen"},
["aof"] = {"Bragat"},
["aog"] = {"Angoram"},
["aoi"] = {"Anindilyakwa"},
["aoj"] = {"Mufian"},
["aok"] = {"Arhö"},
["aol"] = {"Alor"},
["aom"] = {"Ömie"},
["aon"] = {"Bumbita Arapesh"},
["aor"] = {"Aore"},
["aos"] = {"Taikat"},
["aot"] = {"Atong (yn Injey)", "A'tong"},
["aou"] = {"A'ou"},
["aox"] = {"Atorada"},
["aoz"] = {"Uab Meto"},
["apa"] = {"çhengaghyn Apaçheeagh"},
["apb"] = {"Sa'a"},
["apc"] = {"Arabish Levaantagh"},
["apd"] = {"Arabish Hoodaanagh"},
["ape"] = {"Bukiyip"},
["apf"] = {"Pahanan Agta"},
["apg"] = {"Ampanang"},
["aph"] = {"Athpariya"},
["api"] = {"Apiaká"},
["apj"] = {"Apaçheeish Jicarilla"},
["apk"] = {"Apaçheeish Kiowa"},
["apl"] = {"Apaçheeish Lipan"},
["apm"] = {"Apaçheeish Mescalero-Chiricahua"},
["apn"] = {"Apinayé"},
["apo"] = {"Ambul"},
["app"] = {"Apma"},
["apq"] = {"A-Pucikwar"},
["apr"] = {"Arop-Lokep"},
["aps"] = {"Arop-Sissano"},
["apt"] = {"Apatanish"},
["apu"] = {"Apurinã"},
["apv"] = {"Alapmunte"},
["apw"] = {"Apaçheeish Heear"},
["apx"] = {"Aputai"},
["apy"] = {"Apalaí"},
["apz"] = {"Safeyoka"},
["aqa"] = {"çhengaghyn Alacalufan"},
["aqc"] = {"Archi"},
["aqd"] = {"Ampari Dogon"},
["aqg"] = {"Arigidi"},
["aqk"] = {"Aninka"},
["aql"] = {"çhengaghyn Algagh"},
["aqm"] = {"Atohwaim"},
["aqn"] = {"Alta Hwoaie"},
["aqp"] = {"Atakapa"},
["aqr"] = {"Arhâ"},
["aqt"] = {"Angaité"},
["aqz"] = {"Akuntsu"},
["arb"] = {"Arabish Stundayrtit"},
["arc"] = {"Aramaaish Oikoil (700-300 RC)", "Aramaaish Impiroil (700-300 RC)"},
["ard"] = {"Arabana"},
["are"] = {"Arrarnta Heear"},
["arh"] = {"Arhuaco"},
["ari"] = {"Arikara"},
["arj"] = {"Arapaso"},
["ark"] = {"Arikapú"},
["arl"] = {"Arabela"},
["arn"] = {"Mapudungunish", "Mapuçhish"},
["aro"] = {"Araona"},
["arp"] = {"Arapahoish"},
["arq"] = {"Arabish Algearagh"},
["arr"] = {"Karo (y Vrasseel)"},
["ars"] = {"Arabish Najdi"},
["art"] = {"Çhengaghyn ellynagh"},
["aru"] = {"Aruá (Steat Amazonas)", "Arawá"},
["arv"] = {"Arbore"},
["arw"] = {"Arawak"},
["arx"] = {"Aruá (Steat Rodonia)"},
["ary"] = {"Arabish Varocagh"},
["arz"] = {"Arabish Egyptagh"},
["asa"] = {"Asu (Tanzania)"},
["asb"] = {"Assiniboine"},
["asc"] = {"Casuarina Coast Asmat"},
["ase"] = {"Çhengey Chowree Americaanagh"},
["asf"] = {"Auslan", "Çhengey Chowree Austrailagh"},
["asg"] = {"Cishingini"},
["ash"] = {"Abishira"},
["asi"] = {"Buruwai"},
["asj"] = {"Sari"},
["ask"] = {"Ashkun"},
["asl"] = {"Asilulu"},
["asn"] = {"Xingú Asuriní"},
["aso"] = {"Dano"},
["asp"] = {"Çhengey Chowree Algearagh"},
["asq"] = {"Çhengey Chowree Austrailagh"},
["asr"] = {"Asuri"},
["ass"] = {"Ipulo"},
["ast"] = {"Astoorish", "Astoorleonish", "Bable", "Leonish"},
["asu"] = {"Tocantins Asurini"},
["asv"] = {"Asoa"},
["asw"] = {"Çhengey Chowree Vun-dooghyssee yn Austrail"},
["asx"] = {"Muratayak"},
["asy"] = {"Yaosakor Asmat"},
["asz"] = {"As"},
["ata"] = {"Pele-Ata"},
["atb"] = {"Zaiwa"},
["atc"] = {"Atsahuaca"},
["atd"] = {"Ata Manobo"},
["ate"] = {"Atemble"},
["atg"] = {"Ivbie North-Okpela-Arhe"},
["ath"] = {"çhengaghyn Athapascagh"},
["ati"] = {"Attié"},
["atj"] = {"Atikamekw"},
["atk"] = {"Ati"},
["atl"] = {"Mt. Iraya Agta"},
["atm"] = {"Ata"},
["atn"] = {"Ashtiani"},
["ato"] = {"Atong (Cameroon)"},
["atp"] = {"Pudtol Atta"},
["atq"] = {"Aralle-Tabulahan"},
["atr"] = {"Waimiri-Atroari"},
["ats"] = {"Gros Ventre"},
["att"] = {"Pamplona Atta"},
["atu"] = {"Reel"},
["atv"] = {"Altayish Hwoaie"},
["atw"] = {"Atsugewi"},
["atx"] = {"Arutani"},
["aty"] = {"Aneityum"},
["atz"] = {"Arta"},
["aua"] = {"Asumboa"},
["aub"] = {"Alugu"},
["auc"] = {"Waorani"},
["aud"] = {"Anuta"},
["auf"] = {"çhengaghyn Arauagh"},
["aug"] = {"Aguna"},
["auh"] = {"Aushi"},
["aui"] = {"Anuki"},
["auj"] = {"Awjilah"},
["auk"] = {"Heyo"},
["aul"] = {"Aulua"},
["aum"] = {"Asu (y Naigeer)"},
["aun"] = {"Molmo One"},
["auo"] = {"Auyokawa"},
["aup"] = {"Makayam"},
["auq"] = {"Anus", "Korur"},
["aur"] = {"Aruek"},
["aus"] = {"çhengaghyn Austrailagh"},
["aut"] = {"Austral"},
["auu"] = {"Auye"},
["auw"] = {"Awyi"},
["aux"] = {"Aurá"},
["auy"] = {"Awiyaana"},
["auz"] = {"Arabish Oosbeckagh"},
["avb"] = {"Avau"},
["avd"] = {"Alviri-Vidari"},
["avi"] = {"Avikam"},
["avk"] = {"Kotava"},
["avl"] = {"Arabish Bedawi Egyptagh Hiar"},
["avm"] = {"Angkamuthi"},
["avn"] = {"Avatime"},
["avo"] = {"Agavotaguerra"},
["avs"] = {"Aushiri"},
["avt"] = {"Au"},
["avu"] = {"Avokaya"},
["avv"] = {"Avá-Canoeiro"},
["awa"] = {"Awadhi"},
["awb"] = {"Awa (Papooey Guinea Noa)"},
["awc"] = {"Cicipu"},
["awd"] = {"çhengaghyn Arawakagh"},
["awe"] = {"Awetí"},
["awg"] = {"Anguthimri"},
["awh"] = {"Awbono"},
["awi"] = {"Aekyom"},
["awk"] = {"Awabakal"},
["awm"] = {"Arawum"},
["awn"] = {"Awngi"},
["awo"] = {"Awak"},
["awr"] = {"Awera"},
["aws"] = {"Awyu Yiass"},
["awt"] = {"Araweté"},
["awu"] = {"Awyu Meanagh"},
["awv"] = {"Jair Awyu"},
["aww"] = {"Awun"},
["awx"] = {"Awara"},
["awy"] = {"Edera Awyu"},
["axb"] = {"Abipon"},
["axe"] = {"Ayerrerenge"},
["axg"] = {"Mato Grosso Arára"},
["axk"] = {"Yaka (Pobblaght yn Affrick Veanagh)"},
["axl"] = {"Arandish Yiass Injil"},
["axm"] = {"Armeanish Veanagh"},
["axx"] = {"Xârâgurè"},
["aya"] = {"Awar"},
["ayb"] = {"Ayizo Gbe"},
["ayc"] = {"Aymarish Yiass"},
["ayd"] = {"Ayabadhu"},
["aye"] = {"Ayere"},
["ayg"] = {"Ginyanga"},
["ayh"] = {"Arabish Hadram"},
["ayi"] = {"Leyigha"},
["ayk"] = {"Akuku"},
["ayl"] = {"Arabish Leebagh"},
["ayn"] = {"Arabish Sanaanagh"},
["ayo"] = {"Ayoreo"},
["ayp"] = {"Arabish Vesopotaamagh Hwoaie"},
["ayq"] = {"Ayi (Papooey Guinea Noa)"},
["ayr"] = {"Aymarish Veanagh"},
["ays"] = {"Sorsogon Ayta"},
["ayt"] = {"Magbukun Ayta"},
["ayu"] = {"Ayu"},
["ayz"] = {"Mai Brat"},
["aza"] = {"Azha"},
["azb"] = {"Asserbajaanish Yiass"},
["azc"] = {"çhengaghyn Uto-Asteckagh"},
["azd"] = {"Nahuatl Durango Hiar"},
["azg"] = {"San Pedro Amuzgos Amuzgo"},
["azj"] = {"Asserbajaanish Hwoaie"},
["azm"] = {"Ipalapa Amuzgo"},
["azn"] = {"Nahuatl Durango Heear"},
["azo"] = {"Awing"},
["azt"] = {"Faire Atta"},
["azz"] = {"Nahuatl Puebla Sleitoil"},
["baa"] = {"Babatana"},
["bab"] = {"Bainouk-Gunyuño"},
["bac"] = {"Badui"},
["bad"] = {"çhengaghyn Banda"},
["bae"] = {"Baré"},
["baf"] = {"Nubaca"},
["bag"] = {"Tuki"},
["bah"] = {"Creeole Baarle ny Bahamaghyn"},
["bai"] = {"çhengaghyn Bamileke"},
["baj"] = {"Barakai"},
["bal"] = {"Balooçhish"},
["ban"] = {"Balinish"},
["bao"] = {"Waimaha"},
["bap"] = {"Bantawa"},
["bar"] = {"Baveyrish"},
["bas"] = {"Basa (Cameroon)"},
["bat"] = {"çhengaghyn Baltagh"},
["bau"] = {"Bada (y Naigeer)"},
["bav"] = {"Vengo"},
["baw"] = {"Bambili-Bambui"},
["bax"] = {"Bamun"},
["bay"] = {"Batuley"},
["bba"] = {"Baatonum"},
["bbb"] = {"Barai"},
["bbc"] = {"Batak Toba"},
["bbd"] = {"Bau"},
["bbe"] = {"Bangba"},
["bbf"] = {"Baibai"},
["bbg"] = {"Barama"},
["bbh"] = {"Bugan"},
["bbi"] = {"Barombi"},
["bbj"] = {"Ghomálá'"},
["bbk"] = {"Babanki"},
["bbl"] = {"Bats"},
["bbm"] = {"Babango"},
["bbn"] = {"Uneapa"},
["bbo"] = {"Bobo Madaré Hwoaie", "Konabéré"},
["bbp"] = {"Banda Veanagh Heear"},
["bbq"] = {"Bamali"},
["bbr"] = {"Girawa"},
["bbs"] = {"Bakpinka"},
["bbt"] = {"Mburku"},
["bbu"] = {"Kulung (y Naigeer)"},
["bbv"] = {"Karnai"},
["bbw"] = {"Baba"},
["bbx"] = {"Bubia"},
["bby"] = {"Befang"},
["bca"] = {"Bai Meanagh"},
["bcb"] = {"Bainouk-Samik"},
["bcc"] = {"Balooçhish Yiass"},
["bcd"] = {"Babar Hwoaie"},
["bce"] = {"Bamenyam"},
["bcf"] = {"Bamu"},
["bcg"] = {"Baga Pokur"},
["bch"] = {"Bariai"},
["bci"] = {"Baoulé"},
["bcj"] = {"Bardi"},
["bck"] = {"Bunuba"},
["bcl"] = {"Bikolish Veanagh"},
["bcm"] = {"Bannoni"},
["bcn"] = {"Bali (y Naigeer)"},
["bco"] = {"Kaluli"},
["bcp"] = {"Bali (Pobblaght Gheynlagh y Chongo)"},
["bcq"] = {"Bench"},
["bcr"] = {"Babine"},
["bcs"] = {"Kohumono"},
["bct"] = {"Bendi"},
["bcu"] = {"Awad Bing"},
["bcv"] = {"Shoo-Minda-Nye"},
["bcw"] = {"Bana"},
["bcy"] = {"Bacama"},
["bcz"] = {"Bainouk-Gunyaamolo"},
["bda"] = {"Bayot"},
["bdb"] = {"Basap"},
["bdc"] = {"Emberá-Baudó"},
["bdd"] = {"Bunama"},
["bde"] = {"Bade"},
["bdf"] = {"Biage"},
["bdg"] = {"Bonggi"},
["bdh"] = {"Baka (y Toodaan Yiass)"},
["bdi"] = {"Burun"},
["bdj"] = {"Bai (y Toodaan Yiass)", "Bai"},
["bdk"] = {"Budukh"},
["bdl"] = {"Bajau Indoneeshagh"},
["bdm"] = {"Buduma"},
["bdn"] = {"Baldemu"},
["bdo"] = {"Morom"},
["bdp"] = {"Bende"},
["bdq"] = {"Bahnar"},
["bdr"] = {"Bajau y Choose Heear"},
["bds"] = {"Burunge"},
["bdt"] = {"Bokoto"},
["bdu"] = {"Oroko"},
["bdv"] = {"Bodo Parja"},
["bdw"] = {"Baham"},
["bdx"] = {"Budong-Budong"},
["bdy"] = {"Bandjalang"},
["bdz"] = {"Badeshi"},
["bea"] = {"Beaver"},
["beb"] = {"Bebele"},
["bec"] = {"Iceve-Maci"},
["bed"] = {"Bedoanas"},
["bee"] = {"Byangsi"},
["bef"] = {"Benabena"},
["beg"] = {"Belait"},
["beh"] = {"Biali"},
["bei"] = {"Bekati'"},
["bej"] = {"Beja", "Bedawiyet"},
["bek"] = {"Bebeli"},
["bem"] = {"Bemba (y Tambia)"},
["beo"] = {"Beami"},
["bep"] = {"Besoa"},
["beq"] = {"Beembe"},
["ber"] = {"çhengaghyn Berberagh"},
["bes"] = {"Besme"},
["bet"] = {"Guiberoua Béte"},
["beu"] = {"Blagar"},
["bev"] = {"Daloa Bété"},
["bew"] = {"Betawi"},
["bex"] = {"Jur Modo"},
["bey"] = {"Beli (Papooey Guinea Noa)"},
["bez"] = {"Bena (Tanzania)"},
["bfa"] = {"Bari"},
["bfb"] = {"Pauri Bareli"},
["bfc"] = {"Panyi Bai", "Bai Hwoaie"},
["bfd"] = {"Bafut"},
["bfe"] = {"Betaf", "Tena"},
["bff"] = {"Bofi"},
["bfg"] = {"Busang Kayan"},
["bfh"] = {"Blafe"},
["bfi"] = {"Çhengey Chowree Ghoaldagh"},
["bfj"] = {"Bafanji"},
["bfk"] = {"Çhengey Chowree Ban Khor"},
["bfl"] = {"Banda-Ndélé"},
["bfm"] = {"Mmen"},
["bfn"] = {"Bunak"},
["bfo"] = {"Malba Birifor"},
["bfp"] = {"Beba"},
["bfq"] = {"Badaga"},
["bfr"] = {"Bazigar"},
["bfs"] = {"Bai Yiass"},
["bft"] = {"Balti"},
["bfu"] = {"Gahri"},
["bfw"] = {"Bondo"},
["bfx"] = {"Bantayanon"},
["bfy"] = {"Bagheli"},
["bfz"] = {"Mahasu Pahari"},
["bga"] = {"Gwamhi-Wuri"},
["bgb"] = {"Bobongko"},
["bgc"] = {"Haryanvi"},
["bgd"] = {"Rathwi Bareli"},
["bge"] = {"Bauria"},
["bgf"] = {"Bangandu"},
["bgg"] = {"Bugun"},
["bgi"] = {"Giangan"},
["bgj"] = {"Bangolan"},
["bgk"] = {"Bit", "Buxinhua"},
["bgl"] = {"Bo (y Laos)"},
["bgn"] = {"Balooçhish"},
["bgo"] = {"Baga Koga"},
["bgp"] = {"Balooçhish Hiar"},
["bgq"] = {"Bagri"},
["bgr"] = {"Bawm Chin"},
["bgs"] = {"Tagabawa"},
["bgt"] = {"Bughotu"},
["bgu"] = {"Mbongno"},
["bgv"] = {"Warkay-Bipim"},
["bgw"] = {"Bhatri"},
["bgx"] = {"Turkish Ghaugaussagh Balkanagh"},
["bgy"] = {"Benggoi"},
["bgz"] = {"Banggai"},
["bha"] = {"Bharia"},
["bhb"] = {"Bhili"},
["bhc"] = {"Biga"},
["bhd"] = {"Bhadrawahi"},
["bhe"] = {"Bhaya"},
["bhf"] = {"Odiai"},
["bhg"] = {"Binandere"},
["bhh"] = {"Bukharic"},
["bhi"] = {"Bhilali"},
["bhj"] = {"Bahing"},
["bhl"] = {"Bimin"},
["bhm"] = {"Bathari"},
["bhn"] = {"Noa-Aramaaish Bohtan"},
["bho"] = {"Bhojpuri"},
["bhp"] = {"Bima"},
["bhq"] = {"Tukang Besi South"},
["bhr"] = {"Bara Malagasy"},
["bhs"] = {"Buwal"},
["bht"] = {"Bhattiyali"},
["bhu"] = {"Bhunjia"},
["bhv"] = {"Bahau"},
["bhw"] = {"Biak"},
["bhx"] = {"Bhalay"},
["bhy"] = {"Bhele"},
["bhz"] = {"Bada (yn Indoneesh)"},
["bia"] = {"Badimaya"},
["bib"] = {"Bissa", "Bisa"},
["bid"] = {"Bidiyo"},
["bie"] = {"Bepour"},
["bif"] = {"Biafada"},
["big"] = {"Biangai"},
["bik"] = {"Bikol"},
["bil"] = {"Bile"},
["bim"] = {"Bimoba"},
["bin"] = {"Bini", "Edo"},
["bio"] = {"Nai"},
["bip"] = {"Bila"},
["biq"] = {"Bipi"},
["bir"] = {"Bisorio"},
["bit"] = {"Berinomo"},
["biu"] = {"Biete"},
["biv"] = {"Birifor Yiass"},
["biw"] = {"Kol (Cameroon)"},
["bix"] = {"Bijori"},
["biy"] = {"Birhor"},
["biz"] = {"Baloi"},
["bja"] = {"Budza"},
["bjb"] = {"Banggarla"},
["bjc"] = {"Bariji"},
["bje"] = {"Biao-Jiao Mien"},
["bjf"] = {"Barzani Jewish Neo-Aramaic"},
["bjg"] = {"Bidyogo"},
["bjh"] = {"Bahinemo"},
["bji"] = {"Burji"},
["bjj"] = {"Kanauji"},
["bjk"] = {"Barok"},
["bjl"] = {"Bulu (Papooey Guinea Noa)"},
["bjm"] = {"Bajelani"},
["bjn"] = {"Banjar"},
["bjo"] = {"Banda Jiass Veanagh"},
["bjp"] = {"Fanamaket"},
["bjr"] = {"Binumarien"},
["bjs"] = {"Bajan"},
["bjt"] = {"Balanta-Ganja"},
["bju"] = {"Busuu"},
["bjv"] = {"Bedjond"},
["bjw"] = {"Bakwé"},
["bjx"] = {"Banao Itneg"},
["bjy"] = {"Bayali"},
["bjz"] = {"Baruga"},
["bka"] = {"Kyak"},
["bkc"] = {"Baka (Cameroon)"},
["bkd"] = {"Binukid", "Talaandig"},
["bkf"] = {"Beeke"},
["bkg"] = {"Buraka"},
["bkh"] = {"Bakoko"},
["bki"] = {"Baki"},
["bkj"] = {"Pande"},
["bkk"] = {"Brokskat"},
["bkl"] = {"Berik"},
["bkm"] = {"Kom (Cameroon)"},
["bkn"] = {"Bukitan"},
["bko"] = {"Kwa'"},
["bkp"] = {"Boko (Pobblaght Gheynlagh y Chongo)"},
["bkq"] = {"Bakairí"},
["bkr"] = {"Bakumpai"},
["bks"] = {"Sorsoganon Hwoaie"},
["bkt"] = {"Boloki"},
["bku"] = {"Buhid"},
["bkv"] = {"Bekwarra"},
["bkw"] = {"Bekwel"},
["bkx"] = {"Baikeno"},
["bky"] = {"Bokyi"},
["bkz"] = {"Bungku"},
["bla"] = {"Siksika"},
["blb"] = {"Bilua"},
["blc"] = {"Bella Coola"},
["bld"] = {"Bolango"},
["ble"] = {"Balanta-Kentohe"},
["blf"] = {"Buol"},
["blh"] = {"Kuwaa"},
["bli"] = {"Bolia"},
["blj"] = {"Bolongan"},
["blk"] = {"Pa'o Karen", "Pa'O"},
["bll"] = {"Biloxi"},
["blm"] = {"Beli (y Toodaan Yiass)"},
["bln"] = {"Bikol Catanduanes Yiass"},
["blo"] = {"Anii"},
["blp"] = {"Blablanga"},
["blq"] = {"Baluan-Pam"},
["blr"] = {"Blang"},
["bls"] = {"Balaesang"},
["blt"] = {"Tai Dam"},
["blv"] = {"Kibala", "Bolo"},
["blw"] = {"Balangao"},
["blx"] = {"Mag-Indi Ayta"},
["bly"] = {"Notre"},
["blz"] = {"Balantak"},
["bma"] = {"Lame"},
["bmb"] = {"Bembe"},
["bmc"] = {"Biem"},
["bmd"] = {"Baga Manduri"},
["bme"] = {"Limassa"},
["bmf"] = {"Bom-Kim"},
["bmg"] = {"Bamwe"},
["bmh"] = {"Kein"},
["bmi"] = {"Bagirmi"},
["bmj"] = {"Bote-Majhi"},
["bmk"] = {"Ghayavi"},
["bml"] = {"Bomboli"},
["bmm"] = {"Malagasish Betsimisaraka Hwoaie"},
["bmn"] = {"Bina (Papooey Guinea Noa)"},
["bmo"] = {"Bambalang"},
["bmp"] = {"Bulgebi"},
["bmq"] = {"Bomu"},
["bmr"] = {"Muinane"},
["bms"] = {"Bilma Kanuri"},
["bmt"] = {"Biao Mon"},
["bmu"] = {"Somba-Siawari"},
["bmv"] = {"Bum"},
["bmw"] = {"Bomwali"},
["bmx"] = {"Baimak"},
["bmz"] = {"Baramu"},
["bna"] = {"Bonerate"},
["bnb"] = {"Bookan"},
["bnc"] = {"Bontok"},
["bnd"] = {"Banda (yn Indoneesh)"},
["bne"] = {"Bintauna"},
["bnf"] = {"Masiwang"},
["bng"] = {"Benga"},
["bni"] = {"Bangi"},
["bnj"] = {"Tawbuid Hiar"},
["bnk"] = {"Bierebo"},
["bnl"] = {"Boon"},
["bnm"] = {"Batanga"},
["bnn"] = {"Bunun"},
["bno"] = {"Bantoanon"},
["bnp"] = {"Bola"},
["bnq"] = {"Bantik"},
["bnr"] = {"Butmas-Tur"},
["bns"] = {"Bundeli"},
["bnt"] = {"çhengaghyn Bantu"},
["bnu"] = {"Bentong"},
["bnv"] = {"Bonerif", "Beneraf", "Edwas"},
["bnw"] = {"Bisis"},
["bnx"] = {"Bangubangu"},
["bny"] = {"Bintulu"},
["bnz"] = {"Beezen"},
["boa"] = {"Bora"},
["bob"] = {"Aweer"},
["boe"] = {"Mundabli"},
["bof"] = {"Bolon"},
["bog"] = {"Çhengey Chowree Bamako"},
["boh"] = {"Boma"},
["boi"] = {"Barbareño"},
["boj"] = {"Anjam"},
["bok"] = {"Bonjo"},
["bol"] = {"Bole"},
["bom"] = {"Berom"},
["bon"] = {"Bine"},
["boo"] = {"Tiemacèwè Bozo"},
["bop"] = {"Bonkiman"},
["boq"] = {"Bogaya"},
["bor"] = {"Borôro"},
["bot"] = {"Bongo"},
["bou"] = {"Bondei"},
["bov"] = {"Tuwuli"},
["bow"] = {"Rema"},
["box"] = {"Buamu"},
["boy"] = {"Bodo (Pobblaght yn Affrick Veanagh)"},
["boz"] = {"Tiéyaxo Bozo"},
["bpa"] = {"Daakaka"},
["bpc"] = {"Mbuk"},
["bpd"] = {"Banda-Banda"},
["bpe"] = {"Bauni"},
["bpg"] = {"Bonggo"},
["bph"] = {"Botlikh"},
["bpi"] = {"Bagupi"},
["bpj"] = {"Binji"},
["bpk"] = {"Orowe", "'Ôrôê"},
["bpl"] = {"Broome Pearling Lugger Pidgin"},
["bpm"] = {"Biyom"},
["bpn"] = {"Dzao Min"},
["bpo"] = {"Anasi"},
["bpp"] = {"Kaure"},
["bpq"] = {"Malayish Banda"},
["bpr"] = {"Koronadal Blaan"},
["bps"] = {"Sarangani Blaan"},
["bpt"] = {"Barrow Point"},
["bpu"] = {"Bongu"},
["bpv"] = {"Bian Marind"},
["bpw"] = {"Bo (Papooey Guinea Noa)"},
["bpx"] = {"Palya Bareli"},
["bpy"] = {"Bishnupriya"},
["bpz"] = {"Bilba"},
["bqa"] = {"Tchumbuli"},
["bqb"] = {"Bagusa"},
["bqc"] = {"Boko (Benin)", "Boo"},
["bqd"] = {"Bung"},
["bqf"] = {"Baga Kaloum"},
["bqg"] = {"Bago-Kusuntu"},
["bqh"] = {"Baima"},
["bqi"] = {"Bakhtiari"},
["bqj"] = {"Bandial"},
["bqk"] = {"Banda-Mbrès"},
["bql"] = {"Bilakura"},
["bqm"] = {"Wumboko"},
["bqn"] = {"Çhengey Chowree Vulgeyragh"},
["bqo"] = {"Balo"},
["bqp"] = {"Busa"},
["bqq"] = {"Biritai"},
["bqr"] = {"Burusu"},
["bqs"] = {"Bosngun"},
["bqt"] = {"Bamukumbit"},
["bqu"] = {"Boguru"},
["bqv"] = {"Koro Wachi", "Begbere-Ejar"},
["bqw"] = {"Buru (y Naigeer)"},
["bqx"] = {"Baangi"},
["bqy"] = {"Çhengey Chowree Bengkala"},
["bqz"] = {"Bakaka"},
["bra"] = {"Braj"},
["brb"] = {"Brao", "Lave"},
["brc"] = {"Creeole Ollanish Berbice"},
["brd"] = {"Baraamu"},
["brf"] = {"Bira"},
["brg"] = {"Baure"},
["brh"] = {"Brahui"},
["bri"] = {"Mokpwe"},
["brj"] = {"Bieria"},
["brk"] = {"Birked"},
["brl"] = {"Birwa"},
["brm"] = {"Barambu"},
["brn"] = {"Boruca"},
["bro"] = {"Brokkat"},
["brp"] = {"Barapasi"},
["brq"] = {"Breri"},
["brr"] = {"Birao"},
["brs"] = {"Baras"},
["brt"] = {"Bitare"},
["bru"] = {"Bru Hiar"},
["brv"] = {"Bru Heear"},
["brw"] = {"Bellari"},
["brx"] = {"Bodo (yn Injey)"},
["bry"] = {"Burui"},
["brz"] = {"Bilbil"},
["bsa"] = {"Abinomn"},
["bsb"] = {"Brunei Bisaya"},
["bsc"] = {"Bassari", "Oniyan"},
["bse"] = {"Wushi"},
["bsf"] = {"Bauchi"},
["bsg"] = {"Bashkardish"},
["bsh"] = {"Kati"},
["bsi"] = {"Bassossi"},
["bsj"] = {"Bangwinji"},
["bsk"] = {"Burushaski"},
["bsl"] = {"Basa-Gumna"},
["bsm"] = {"Busami"},
["bsn"] = {"Barasana-Eduria"},
["bso"] = {"Buso"},
["bsp"] = {"Baga Sitemu"},
["bsq"] = {"Bassa"},
["bsr"] = {"Bassa-Kontagora"},
["bss"] = {"Akoose"},
["bst"] = {"Basketo"},
["bsu"] = {"Bahonsuai"},
["bsv"] = {"Baga Sobané"},
["bsw"] = {"Baiso"},
["bsx"] = {"Yangkam"},
["bsy"] = {"Sabah Bisaya"},
["bta"] = {"Bata"},
["btc"] = {"Bati (Cameroon)"},
["btd"] = {"Batak Dairi"},
["bte"] = {"Gamo-Ningi"},
["btf"] = {"Birgit"},
["btg"] = {"Gagnoa Bété"},
["bth"] = {"Biatah Bidayuh"},
["bti"] = {"Burate"},
["btj"] = {"Malayish Vacanagh"},
["btk"] = {"çhengaghyn Batak"},
["btm"] = {"Batak Mandailing"},
["btn"] = {"Ratagnon"},
["bto"] = {"Rinconada Bikol"},
["btp"] = {"Budibud"},
["btq"] = {"Batek"},
["btr"] = {"Baetora"},
["bts"] = {"Batak Simalungun"},
["btt"] = {"Bete-Bendi"},
["btu"] = {"Batu"},
["btv"] = {"Bateri"},
["btw"] = {"Butuanon"},
["btx"] = {"Batak Karo"},
["bty"] = {"Bobot"},
["btz"] = {"Batak Alas-Kluet"},
["bua"] = {"Buryatish"},
["bub"] = {"Bua"},
["buc"] = {"Bushi"},
["bud"] = {"Ntcham"},
["bue"] = {"Beothuk"},
["buf"] = {"Bushoong"},
["bug"] = {"Buginish"},
["buh"] = {"Younuo Bunu"},
["bui"] = {"Bongili"},
["buj"] = {"Basa-Gurmana"},
["buk"] = {"Bugawac"},
["bum"] = {"Bulu (Cameroon)"},
["bun"] = {"Sherbro"},
["buo"] = {"Terei"},
["bup"] = {"Busoa"},
["buq"] = {"Brem"},
["bus"] = {"Bokobaru"},
["but"] = {"Bungain"},
["buu"] = {"Budu"},
["buv"] = {"Bun"},
["buw"] = {"Bubi"},
["bux"] = {"Boghom"},
["buy"] = {"Bullom So"},
["buz"] = {"Bukwen"},
["bva"] = {"Barein"},
["bvb"] = {"Bube"},
["bvc"] = {"Baelelea"},
["bvd"] = {"Baeggu"},
["bve"] = {"Malayish Berau"},
["bvf"] = {"Boor"},
["bvg"] = {"Bonkeng"},
["bvh"] = {"Bure"},
["bvi"] = {"Belanda Viri"},
["bvj"] = {"Baan"},
["bvk"] = {"Bukat"},
["bvl"] = {"Çh Chowree Voliviagh"},
["bvm"] = {"Bamunka"},
["bvn"] = {"Buna"},
["bvo"] = {"Bolgo"},
["bvp"] = {"Bumang"},
["bvq"] = {"Birri"},
["bvr"] = {"Burarra"},
["bvt"] = {"Bati (yn Indoneesh)"},
["bvu"] = {"Malayish Bukit"},
["bvv"] = {"Baniva"},
["bvw"] = {"Boga"},
["bvx"] = {"Dibole"},
["bvy"] = {"Baybayanon"},
["bvz"] = {"Bauzi"},
["bwa"] = {"Bwatoo"},
["bwb"] = {"Namosi-Naitasiri-Serua"},
["bwc"] = {"Bwile"},
["bwd"] = {"Bwaidoka"},
["bwe"] = {"Bwe Karen"},
["bwf"] = {"Boselewa"},
["bwg"] = {"Barwe"},
["bwh"] = {"Bishuo"},
["bwi"] = {"Baniwa"},
["bwj"] = {"Láá Láá Bwamu"},
["bwk"] = {"Bauwaki"},
["bwl"] = {"Bwela"},
["bwm"] = {"Biwat"},
["bwn"] = {"Wunai Bunu"},
["bwo"] = {"Boro (yn Eetoip)", "Borna (yn Eetoip)"},
["bwp"] = {"Mandobo Bawah"},
["bwq"] = {"Bobo Madaré Yiass"},
["bwr"] = {"Bura-Pabir"},
["bws"] = {"Bomboma"},
["bwt"] = {"Bafaw-Balong"},
["bwu"] = {"Buli (y Ghaney)"},
["bww"] = {"Bwa"},
["bwx"] = {"Bu-Nao Bunu"},
["bwy"] = {"Cwi Bwamu"},
["bwz"] = {"Bwisi"},
["bxa"] = {"Tairaha"},
["bxb"] = {"Belanda Bor"},
["bxc"] = {"Molengue"},
["bxd"] = {"Pela"},
["bxe"] = {"Birale"},
["bxf"] = {"Bilur", "Minigir"},
["bxg"] = {"Bangala"},
["bxh"] = {"Buhutu"},
["bxi"] = {"Pirlatapa"},
["bxj"] = {"Bayungu"},
["bxk"] = {"Bukusu", "Lubukusu"},
["bxl"] = {"Jalkunan"},
["bxm"] = {"Buryatish Vongoilagh"},
["bxn"] = {"Burduna"},
["bxo"] = {"Barikanchi"},
["bxp"] = {"Bebil"},
["bxq"] = {"Beele"},
["bxr"] = {"Buryatish Rooshagh"},
["bxs"] = {"Busam"},
["bxu"] = {"Buryatish Heenagh"},
["bxv"] = {"Berakou"},
["bxw"] = {"Bankagooma"},
["bxz"] = {"Binahari"},
["bya"] = {"Batak"},
["byb"] = {"Bikya"},
["byc"] = {"Ubaghara"},
["byd"] = {"Benyadu'"},
["bye"] = {"Pouye"},
["byf"] = {"Bete"},
["byg"] = {"Baygo"},
["byh"] = {"Bhujel"},
["byi"] = {"Buyu"},
["byj"] = {"Bina (y Naigeer)"},
["byk"] = {"Biao"},
["byl"] = {"Bayono"},
["bym"] = {"Bidjara"},
["byn"] = {"Bilin", "Blin"},
["byo"] = {"Biyo"},
["byp"] = {"Bumaji"},
["byq"] = {"Basay"},
["byr"] = {"Baruya", "Yipma"},
["bys"] = {"Burak"},
["byt"] = {"Berti"},
["byv"] = {"Medumba"},
["byw"] = {"Belhariya"},
["byx"] = {"Qaqet"},
["byz"] = {"Banaro"},
["bza"] = {"Bandi"},
["bzb"] = {"Andio"},
["bzc"] = {"Malagasish Betsimisaraka Yiass"},
["bzd"] = {"Bribri"},
["bze"] = {"Jenaama Bozo"},
["bzf"] = {"Boikin"},
["bzg"] = {"Babuza"},
["bzh"] = {"Mapos Buang"},
["bzi"] = {"Bisu"},
["bzj"] = {"Creeole Baarle Beleeshagh"},
["bzk"] = {"Creeole Baarle Nickeraagagh"},
["bzl"] = {"Boano (Sulawesi)"},
["bzm"] = {"Bolondo"},
["bzn"] = {"Boano (Maluku)"},
["bzo"] = {"Bozaba"},
["bzp"] = {"Kemberano"},
["bzq"] = {"Buli (yn Indoneesh)"},
["bzr"] = {"Biri"},
["bzs"] = {"Çhengey Chowree Vrasseelagh"},
["bzt"] = {"Brithenig"},
["bzu"] = {"Burmeso"},
["bzv"] = {"Naami"},
["bzw"] = {"Basa (y Naigeer)"},
["bzx"] = {"Kɛlɛngaxo Bozo"},
["bzy"] = {"Obanliku"},
["bzz"] = {"Evant"},
["caa"] = {"Chortí"},
["cab"] = {"Garifunish"},
["cac"] = {"Chuj"},
["cad"] = {"Caddo"},
["cae"] = {"Lehar", "Laalaa"},
["caf"] = {"Carrier Yiass"},
["cag"] = {"Nivaclé"},
["cah"] = {"Cahuarano"},
["cai"] = {"çhengaghyn Injinagh Americaanagh Meanagh"},
["caj"] = {"Chané"},
["cak"] = {"Kaqchikel", "Cakchiquel"},
["cal"] = {"Carolinish"},
["cam"] = {"Cemuhî"},
["can"] = {"Chambri"},
["cao"] = {"Chácobo"},
["cap"] = {"Chipaya"},
["caq"] = {"Car Nicobarese"},
["car"] = {"Caribish Galibi"},
["cas"] = {"Tsimané"},
["cau"] = {"çhengaghyn Coagaashagh"},
["cav"] = {"Cavineña"},
["caw"] = {"Callawalla"},
["cax"] = {"Chiquitano"},
["cay"] = {"Cayuga"},
["caz"] = {"Canichana"},
["cba"] = {"çhengaghyn Çhibçhagh"},
["cbb"] = {"Cabiyarí"},
["cbc"] = {"Carapana"},
["cbd"] = {"Carijona"},
["cbg"] = {"Chimila"},
["cbi"] = {"Chachi"},
["cbj"] = {"Ede Cabe"},
["cbk"] = {"Chavacano"},
["cbl"] = {"Bualkhaw Chin"},
["cbn"] = {"Nyahkur"},
["cbo"] = {"Izora"},
["cbq"] = {"Tsucuba", "Cuba"},
["cbr"] = {"Cashibo-Cacataibo"},
["cbs"] = {"Cashinahua"},
["cbt"] = {"Chayahuita"},
["cbu"] = {"Candoshi-Shapra"},
["cbv"] = {"Cacua"},
["cbw"] = {"Kinabalish"},
["cby"] = {"Carabayo"},
["ccc"] = {"Chamicuro"},
["ccd"] = {"Creeole Cafundo"},
["cce"] = {"Chopi"},
["ccg"] = {"Samba Daka"},
["cch"] = {"Atsam"},
["ccj"] = {"Kasanga"},
["ccl"] = {"Cutchi-Swahili"},
["ccm"] = {"Creeole Malayish Malacca"},
["ccn"] = {"çhengaghyn Coagaashagh Hwoaie"},
["cco"] = {"Comaltepec Chinantec"},
["ccp"] = {"Chakma"},
["ccr"] = {"Cacaopera"},
["ccs"] = {"çhengaghyn Coagaashagh Yiass"},
["cda"] = {"Choni"},
["cdc"] = {"çhengaghyn Shadagh"},
["cdd"] = {"çhengaghyn Caddoagh"},
["cde"] = {"Chenchu"},
["cdf"] = {"Chiru"},
["cdh"] = {"Chambeali"},
["cdi"] = {"Chodri"},
["cdj"] = {"Churahi"},
["cdm"] = {"Chepang"},
["cdn"] = {"Chaudangsi"},
["cdo"] = {"Sheenish Min Dong"},
["cdr"] = {"Cinda-Regi-Tiyal"},
["cds"] = {"Çhengey Chowree Hadagh"},
["cdy"] = {"Chadong"},
["cdz"] = {"Koda"},
["cea"] = {"Chehalis Injil"},
["ceb"] = {"Cebuano"},
["ceg"] = {"Chamacoco"},
["cek"] = {"Khumi Chin Hiar"},
["cel"] = {"çhengaghyn Celtiagh"},
["cen"] = {"Cen"},
["cet"] = {"Centúúm"},
["cey"] = {"Ekai Chin"},
["cfa"] = {"Dijim-Bwilim"},
["cfd"] = {"Cara"},
["cfg"] = {"Como Karim"},
["cfm"] = {"Falam Chin"},
["cga"] = {"Changriwa"},
["cgc"] = {"Kagayanen"},
["cgg"] = {"Chiga"},
["cgk"] = {"Chocangacakha"},
["chb"] = {"Chibcha"},
["chc"] = {"Catawba"},
["chd"] = {"Chontal Oaxaca Sleitoil"},
["chf"] = {"Chontal Tabasco"},
["chg"] = {"Chagatai"},
["chh"] = {"Chinook"},
["chj"] = {"Ojitlán Chinantec"},
["chk"] = {"Chuukese"},
["chl"] = {"Cahuilla"},
["chm"] = {"Marish (y Roosh)"},
["chn"] = {"Chinookish"},
["cho"] = {"Shoctawish"},
["chp"] = {"Chipewyish", "Dene Suline"},
["chq"] = {"Chinantec Quiotepec"},
["chr"] = {"Sherokeeish"},
["cht"] = {"Cholón"},
["chw"] = {"Chuwabu"},
["chx"] = {"Chantyal"},
["chy"] = {"Cheyenne"},
["chz"] = {"Chinantec Ozumacín"},
["cia"] = {"Cia-Cia"},
["cib"] = {"Ci Gbe"},
["cic"] = {"Chickasawish"},
["cid"] = {"Chimariko"},
["cie"] = {"Cineni"},
["cih"] = {"Chinali"},
["cik"] = {"Chitkuli Kinnauri"},
["cim"] = {"Cimbrish"},
["cin"] = {"Cinta Larga"},
["cip"] = {"Chiapanec"},
["cir"] = {"Tiri", "Haméa", "Méa"},
["ciw"] = {"Chippewa"},
["ciy"] = {"Chaima"},
["cja"] = {"Chamish Heear"},
["cje"] = {"Chru"},
["cjh"] = {"Chehalis Heose"},
["cji"] = {"Chamalal"},
["cjk"] = {"Chokwe"},
["cjm"] = {"Chamish Hiar"},
["cjn"] = {"Chenapish"},
["cjo"] = {"Ashéninka Pajonal"},
["cjp"] = {"Cabécar"},
["cjs"] = {"Shor"},
["cjv"] = {"Chuave"},
["cjy"] = {"Sheenish Jinyu"},
["ckb"] = {"Kurdish Veanagh"},
["ckh"] = {"Chak"},
["ckl"] = {"Cibak"},
["ckm"] = {"Chakavish"},
["ckn"] = {"Kaang Chin"},
["cko"] = {"Anufo"},
["ckq"] = {"Kajakse"},
["ckr"] = {"Kairak"},
["cks"] = {"Tayo"},
["ckt"] = {"Shukçheeish"},
["cku"] = {"Koasati"},
["ckv"] = {"Kavalan"},
["ckx"] = {"Caka"},
["cky"] = {"Cakfem-Mushere"},
["ckz"] = {"Çhengey Vestit Cakchiquel-Quiché"},
["cla"] = {"Ron"},
["clc"] = {"Chilcotin"},
["cld"] = {"Noa-Aramaaish Haldeanagh"},
["cle"] = {"Chinantec Lealao"},
["clh"] = {"Chilisso"},
["cli"] = {"Chakali"},
["clj"] = {"Laitu Chin"},
["clk"] = {"Idu-Mishmi"},
["cll"] = {"Chala"},
["clm"] = {"Clallam"},
["clo"] = {"Chontal Oaxaca Injil"},
["clt"] = {"Lautu Chin"},
["clu"] = {"Caluyanun"},
["clw"] = {"Chulym"},
["cly"] = {"Chatino Sleitoil Hiar"},
["cma"] = {"Maa"},
["cmc"] = {"çhengaghyn Shamagh"},
["cme"] = {"Cerma"},
["cmg"] = {"Mongoilish Chlassicagh"},
["cmi"] = {"Emberá-Chamí"},
["cml"] = {"Campalagian"},
["cmm"] = {"Michigamea"},
["cmn"] = {"Sheenish Mandarin"},
["cmo"] = {"Mnong Meanagh"},
["cmr"] = {"Mro-Khimi Chin"},
["cms"] = {"Messapic"},
["cmt"] = {"Camtho"},
["cna"] = {"Changthang"},
["cnb"] = {"Chinbon Chin"},
["cnc"] = {"Côông"},
["cng"] = {"Qiang Hwoaie"},
["cnh"] = {"Hakha Chin", "Haka Chin"},
["cni"] = {"Asháninka"},
["cnk"] = {"Khumi Chin"},
["cnl"] = {"Lalana Chinantec"},
["cno"] = {"Con"},
["cnp"] = {"Sheenish Ping Hwoaie", "Pinghua Hwoaie"},
["cnq"] = {"Chung"},
["cnr"] = {"Montenegrish"},
["cns"] = {"Asmatish Veanagh"},
["cnt"] = {"Chinantec Tepetotutla"},
["cnu"] = {"Chenoua"},
["cnw"] = {"Ngawn Chin"},
["cnx"] = {"Cornish Veanagh"},
["coa"] = {"Malayish Ellanyn Cocos"},
["cob"] = {"Chicomuceltec"},
["coc"] = {"Cocopa"},
["cod"] = {"Cocama-Cocamilla"},
["coe"] = {"Koreguaje"},
["cof"] = {"Colorado"},
["cog"] = {"Chong"},
["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"},
["coj"] = {"Cochimi"},
["cok"] = {"Santa Teresa Cora"},
["col"] = {"Columbia-Wenatchi"},
["com"] = {"Comançheeish"},
["con"] = {"Cofán"},
["coo"] = {"Comox"},
["cop"] = {"Coptish"},
["coq"] = {"Coquille"},
["cot"] = {"Caquinte"},
["cou"] = {"Wamey"},
["cov"] = {"Cao Miao"},
["cow"] = {"Cowlitz"},
["cox"] = {"Nanti"},
["coz"] = {"Chochotec"},
["cpa"] = {"Palantla Chinantec"},
["cpb"] = {"Ucayali-Yurúa Ashéninka"},
["cpc"] = {"Ajyíninka Apurucayali"},
["cpe"] = {"creeoleyn as baarlaghyn brisht bunnit er y Vaarle"},
["cpf"] = {"creeoleyn as baarlaghyn brisht bunnit er y Rangish"},
["cpg"] = {"Greagish Cappadocia"},
["cpi"] = {"Baarle Vrisht Heenagh"},
["cpn"] = {"Cherepon"},
["cpo"] = {"Kpeego"},
["cpp"] = {"creeoleyn as baarlaghyn brisht bunnit er y Phortiugish"},
["cps"] = {"Capiznon"},
["cpu"] = {"Pichis Ashéninka"},
["cpx"] = {"Sheenish Pu-Xian"},
["cpy"] = {"Ashéninka Ucayali Yiass"},
["cqd"] = {"Chuanqiandian Cluster Miao"},
["cra"] = {"Chara"},
["crb"] = {"Caribish Ellanagh"},
["crc"] = {"Lonwolwol"},
["crd"] = {"Coeur d'Alene"},
["crf"] = {"Caramanta"},
["crg"] = {"Michif"},
["crh"] = {"Tatarish Chrimeeagh", "Turkish Chrimeeagh"},
["cri"] = {"Sãotomense"},
["crj"] = {"Creeish Hiar Yiass"},
["crk"] = {"Creeish ny Strahyn"},
["crl"] = {"Creeish Hiar Hwoaie"},
["crm"] = {"Creeish Moose"},
["crn"] = {"El Nayar Cora"},
["cro"] = {"Crowish"},
["crp"] = {"Creeoleyn as baarlaghyn brisht"},
["crq"] = {"Iyo'wujwa Chorote"},
["crr"] = {"Algonquiagh Carolina"},
["crs"] = {"Creeole Frangish Seselwa"},
["crt"] = {"Iyojwa'ja Chorote"},
["crv"] = {"Chaura"},
["crw"] = {"Chrau"},
["crx"] = {"Carrier"},
["cry"] = {"Cori"},
["crz"] = {"Cruzeño"},
["csa"] = {"Chinantec Chiltepec"},
["csb"] = {"Kashoobish"},
["csc"] = {"Çhengey Chowree Chataloanagh", "Lengua de señas catalana", "Llengua de Signes Catalana"},
["csd"] = {"Çhengey Chowree Chiangmai"},
["cse"] = {"Çhengey Chowree Heckagh"},
["csf"] = {"Çhengey Chowree Choobagh"},
["csg"] = {"Çhengey Chowree Hilleeagh"},
["csh"] = {"Chin Asho"},
["csi"] = {"Miwok Coose"},
["csj"] = {"Chin Songlai"},
["csk"] = {"Jola-Kasa"},
["csl"] = {"Çhengey Chowree Heenagh"},
["csm"] = {"Miwokish Sierra Veanagh"},
["csn"] = {"Çhengey Chowree Cholombagh"},
["cso"] = {"Chinantec Sochiapam", "Chinantec Sochiapan"},
["csp"] = {"Sheenish Pink Yiass", "Pinghua Yiass"},
["csq"] = {"Çhengey Chowree Chroitagh"},
["csr"] = {"Çhengey Chowree Choose-verçhagh"},
["css"] = {"Ohlone Yiass"},
["cst"] = {"Ohlone Hwoaie"},
["csu"] = {"çhengaghyn Soodaanagh Meanagh"},
["csv"] = {"Chin Sumtu"},
["csw"] = {"Creeish Ushlagh"},
["csx"] = {"Çhengey Chowree Chamboydagh"},
["csy"] = {"Siyin Chin"},
["csz"] = {"Coos"},
["cta"] = {"Tataltepec Chatino"},
["ctc"] = {"Chetco"},
["ctd"] = {"Chin Tedim"},
["cte"] = {"Chinantec Tepinapa"},
["ctg"] = {"Chittagonish"},
["cth"] = {"Chin Thaiphum"},
["ctl"] = {"Chinantec Tlacoatzintepec"},
["ctm"] = {"Chitimacha"},
["ctn"] = {"Chhintange"},
["cto"] = {"Emberá-Catío"},
["ctp"] = {"Chatino Sleitoil Heear"},
["cts"] = {"Bikol Catanduanes Heear"},
["ctt"] = {"Wayanad Chetti"},
["ctu"] = {"Chol"},
["cty"] = {"Moundadan Chetty"},
["ctz"] = {"Chatino Zacatepec"},
["cua"] = {"Cua"},
["cub"] = {"Cubeo"},
["cuc"] = {"Usila Chinantec"},
["cuh"] = {"Chuka", "Gichuka"},
["cui"] = {"Cuiba"},
["cuj"] = {"Mashco Piro"},
["cuk"] = {"San Blas Kuna"},
["cul"] = {"Culina", "Kulina"},
["cuo"] = {"Cumanagoto"},
["cup"] = {"Cupeño"},
["cuq"] = {"Cun"},
["cur"] = {"Chhulung"},
["cus"] = {"çhengaghyn Cushitagh"},
["cut"] = {"Teutila Cuicatec"},
["cuu"] = {"Tai Ya"},
["cuv"] = {"Cuvok"},
["cuw"] = {"Chukwa"},
["cux"] = {"Tepeuxila Cuicatec"},
["cuy"] = {"Cuitlatec"},
["cvg"] = {"Chug"},
["cvn"] = {"Valle Nacional Chinantec"},
["cwa"] = {"Kabwa"},
["cwb"] = {"Maindo"},
["cwd"] = {"Creeish ny Keylljyn"},
["cwe"] = {"Kwere"},
["cwg"] = {"Chewong", "Cheq Wong"},
["cwt"] = {"Kuwaataay"},
["cxh"] = {"Cha'ari"},
["cya"] = {"Nopala Chatino"},
["cyb"] = {"Cayubaba"},
["cyo"] = {"Cuyonon"},
["czh"] = {"Sheenish Huizhou"},
["czk"] = {"Knaanic"},
["czn"] = {"Zenzontepec Chatino"},
["czo"] = {"Sheenish Min Zhong"},
["czt"] = {"Zotung Chin"},
["daa"] = {"Dangaléat"},
["dac"] = {"Dambi"},
["dad"] = {"Marik"},
["dae"] = {"Duupa"},
["dag"] = {"Dagbani"},
["dah"] = {"Gwahatike"},
["dai"] = {"Day"},
["daj"] = {"Dar Fur Daju"},
["dak"] = {"Dakota"},
["dal"] = {"Dahalo"},
["dam"] = {"Damakawa"},
["dao"] = {"Daai Chin"},
["daq"] = {"Dandami Maria"},
["dar"] = {"Dargwa"},
["das"] = {"Daho-Doo"},
["dau"] = {"Dar Sila Daju"},
["dav"] = {"Taita", "Dawida"},
["daw"] = {"Davawenyo"},
["dax"] = {"Dayi"},
["day"] = {"çhengaghyn Land Dayak"},
["daz"] = {"Dao"},
["dba"] = {"Bangime"},
["dbb"] = {"Deno"},
["dbd"] = {"Dadiya"},
["dbe"] = {"Dabe"},
["dbf"] = {"Edopi"},
["dbg"] = {"Dogul Dom Dogon"},
["dbi"] = {"Doka"},
["dbj"] = {"Ida'an"},
["dbl"] = {"Dyirbal"},
["dbm"] = {"Duguri"},
["dbn"] = {"Duriankere"},
["dbo"] = {"Dulbu"},
["dbp"] = {"Duwai"},
["dbq"] = {"Daba"},
["dbr"] = {"Dabarre"},
["dbt"] = {"Ben Tey Dogon"},
["dbu"] = {"Bondum Dom Dogon"},
["dbv"] = {"Dungu"},
["dbw"] = {"Bankan Tey Dogon"},
["dby"] = {"Dibiyaso"},
["dcc"] = {"Deccan"},
["dcr"] = {"Negerhollands"},
["dda"] = {"Dadi Dadi"},
["ddd"] = {"Dongotono"},
["dde"] = {"Doondo"},
["ddg"] = {"Fataluku"},
["ddi"] = {"West Goodenough"},
["ddj"] = {"Jaru"},
["ddn"] = {"Dendi (Benin)"},
["ddo"] = {"Dido"},
["ddr"] = {"Dhudhuroa"},
["dds"] = {"Donno So Dogon"},
["ddw"] = {"Dawera-Daweloor"},
["dec"] = {"Dagik"},
["ded"] = {"Dedua"},
["dee"] = {"Dewoin"},
["def"] = {"Dezfuli"},
["deg"] = {"Degema"},
["deh"] = {"Dehwari"},
["dei"] = {"Demisa"},
["dek"] = {"Dek"},
["del"] = {"Delaware"},
["dem"] = {"Dem"},
["den"] = {"Slavish (Athapascagh)"},
["dep"] = {"Pidgin Delaware"},
["deq"] = {"Dendi (Pobblaght yn Affrick Veanagh)"},
["der"] = {"Deori"},
["des"] = {"Desano"},
["dev"] = {"Domung"},
["dez"] = {"Dengese"},
["dga"] = {"Dagaare Yiass"},
["dgb"] = {"Bunoge Dogon"},
["dgc"] = {"Casiguran Dumagat Agta"},
["dgd"] = {"Dagaari Dioula"},
["dge"] = {"Degenan"},
["dgg"] = {"Doga"},
["dgh"] = {"Dghwede"},
["dgi"] = {"Dagara Hwoaie"},
["dgk"] = {"Dagba"},
["dgl"] = {"Andaandi", "Dongolawi"},
["dgn"] = {"Dagoman"},
["dgo"] = {"Dogri (çhengey er lheh)"},
["dgr"] = {"Dogrib", "Tłı̨chǫ"},
["dgs"] = {"Dogoso"},
["dgt"] = {"Ndra'ngith"},
["dgw"] = {"Daungwurrung"},
["dgx"] = {"Doghoro"},
["dgz"] = {"Daga"},
["dhd"] = {"Dhundari"},
["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"},
["dhi"] = {"Dhimal"},
["dhl"] = {"Dhalandji"},
["dhm"] = {"Zemba"},
["dhn"] = {"Dhanki"},
["dho"] = {"Dhodia"},
["dhr"] = {"Dhargari"},
["dhs"] = {"Dhaiso"},
["dhu"] = {"Dhurga"},
["dhv"] = {"Dehu", "Drehu"},
["dhw"] = {"Dhanwar (Nepaal)"},
["dhx"] = {"Dhungaloo"},
["dia"] = {"Dia"},
["dib"] = {"Dinka Yiass Veanagh"},
["dic"] = {"Lakota Dida"},
["did"] = {"Didinga"},
["dif"] = {"Dieri", "Diyari"},
["dig"] = {"Digo", "Chidigo"},
["dih"] = {"Kumiai"},
["dii"] = {"Dimbong"},
["dij"] = {"Dai"},
["dik"] = {"Dinka Heear Yiass"},
["dil"] = {"Dilling"},
["dim"] = {"Dime"},
["din"] = {"Dinka"},
["dio"] = {"Dibo"},
["dip"] = {"Dinka Hiar Yiass"},
["diq"] = {"Dimli (çhengey er lheh)"},
["dir"] = {"Dirim"},
["dis"] = {"Dimasa"},
["diu"] = {"Diriku"},
["diw"] = {"Dinka Heear Hwoaie"},
["dix"] = {"Dixon Reef"},
["diy"] = {"Diuwe"},
["diz"] = {"Ding"},
["dja"] = {"Djadjawurrung"},
["djb"] = {"Djinba"},
["djc"] = {"Dar Daju Daju"},
["djd"] = {"Djamindjung", "Ngaliwurru"},
["dje"] = {"Zarma"},
["djf"] = {"Djangun"},
["dji"] = {"Djinang"},
["djj"] = {"Djeebbana"},
["djk"] = {"Creeole Maroon Hiar", "Businenge Tongo", "Nenge"},
["djm"] = {"Jamsay Dogon"},
["djn"] = {"Jawoyn", "Djauan"},
["djo"] = {"Jangkang"},
["djr"] = {"Djambarrpuyngu"},
["dju"] = {"Kapriman"},
["djw"] = {"Djawi"},
["dka"] = {"Dakpakha"},
["dkg"] = {"Kadung"},
["dkk"] = {"Dakka"},
["dkr"] = {"Kuijau"},
["dks"] = {"Dinka Hiar Yiass"},
["dkx"] = {"Mazagway"},
["dlg"] = {"Dolgan"},
["dlk"] = {"Dahalik"},
["dlm"] = {"Dalmaatish"},
["dln"] = {"Darlong"},
["dma"] = {"Duma"},
["dmb"] = {"Mombo Dogon"},
["dmc"] = {"Gavak"},
["dmd"] = {"Madhi Madhi"},
["dme"] = {"Dugwor"},
["dmf"] = {"Medefaidrin"},
["dmg"] = {"Kinabatangan Heose"},
["dmk"] = {"Domaaki"},
["dml"] = {"Dameli"},
["dmm"] = {"Dama"},
["dmn"] = {"çhengaghyn Mande"},
["dmo"] = {"Kemedzung"},
["dmr"] = {"Damar Hiar"},
["dms"] = {"Dampelas"},
["dmu"] = {"Dubu", "Tebi"},
["dmv"] = {"Dumpas"},
["dmw"] = {"Mudburra"},
["dmx"] = {"Dema"},
["dmy"] = {"Demta", "Sowari"},
["dna"] = {"Dani yn Upper Grand Valley"},
["dnd"] = {"Daonda"},
["dne"] = {"Ndendeule"},
["dng"] = {"Dungan"},
["dni"] = {"Dani yn Lower Grand Valley"},
["dnj"] = {"Dan"},
["dnk"] = {"Dengka"},
["dnn"] = {"Dzùùngoo"},
["dno"] = {"Ndrulo", "Lendu Hwoaie"},
["dnr"] = {"Danaru"},
["dnt"] = {"Dani yn Mid Grand Valley"},
["dnu"] = {"Danau"},
["dnv"] = {"Danu"},
["dnw"] = {"Dani Heear"},
["dny"] = {"Dení"},
["doa"] = {"Dom"},
["dob"] = {"Dobu"},
["doc"] = {"Dong Hwoaie"},
["doe"] = {"Doe"},
["dof"] = {"Domu"},
["doh"] = {"Dong"},
["doi"] = {"Dogri (mooar-hengey)"},
["dok"] = {"Dondo"},
["dol"] = {"Doso"},
["don"] = {"Toura (Papooey Guinea Noa)"},
["doo"] = {"Dongo"},
["dop"] = {"Lukpa"},
["doq"] = {"Çhengey Chowree Ghominicagh"},
["dor"] = {"Dori'o"},
["dos"] = {"Dogosé"},
["dot"] = {"Dass"},
["dov"] = {"Dombe"},
["dow"] = {"Doyayo"},
["dox"] = {"Bussa"},
["doy"] = {"Dompo"},
["doz"] = {"Dorze"},
["dpp"] = {"Papar"},
["dra"] = {"çhengaghyn Dravidagh"},
["drb"] = {"Dair"},
["drc"] = {"Minderico"},
["drd"] = {"Darmiya"},
["dre"] = {"Dolpo"},
["drg"] = {"Rungus"},
["dri"] = {"C'Lela"},
["drl"] = {"Paakantyi"},
["drn"] = {"Damar Heear"},
["dro"] = {"Daro-Matu Melanau"},
["drq"] = {"Dura"},
["drs"] = {"Gedeo"},
["drt"] = {"Drents"},
["dru"] = {"Rukai"},
["dry"] = {"Darai"},
["dsb"] = {"Sorbish Eeghtyragh"},
["dse"] = {"Çhengey Chowree Ollanagh"},
["dsh"] = {"Daasanach"},
["dsi"] = {"Disa"},
["dsk"] = {"Dokshi"},
["dsl"] = {"Çhengey Chowree Ghanvargagh"},
["dsn"] = {"Dusner"},
["dso"] = {"Desiya"},
["dsq"] = {"Tadaksahak"},
["dsz"] = {"Çh Chowree Mardin"},
["dta"] = {"Daur"},
["dtb"] = {"Labuk-Kinabatangan Kadazan"},
["dtd"] = {"Ditidaht"},
["dth"] = {"Adithinngithigh"},
["dti"] = {"Ana Tinga Dogon"},
["dtk"] = {"Tene Kan Dogon"},
["dtm"] = {"Tomo Kan Dogon"},
["dtn"] = {"Daatsʼíin"},
["dto"] = {"Tommo So Dogon"},
["dtp"] = {"Kadazan Dusun", "Dusun Veanagh"},
["dtr"] = {"Lotud"},
["dts"] = {"Toro So Dogon"},
["dtt"] = {"Toro Tegu Dogon"},
["dtu"] = {"Tebul Ure Dogon"},
["dty"] = {"Dotyali"},
["dua"] = {"Duala"},
["dub"] = {"Dubli"},
["duc"] = {"Duna"},
["due"] = {"Umiray Dumaget Agta"},
["duf"] = {"Dumbea", "Drubea"},
["dug"] = {"Duruma", "Chiduruma"},
["duh"] = {"Dungra Bhil"},
["dui"] = {"Dumun"},
["duk"] = {"Uyajitaya"},
["dul"] = {"Alabat Island Agta"},
["dum"] = {"Ollanish Veanagh (ca. 1050-1350)"},
["dun"] = {"Dusun Deyah"},
["duo"] = {"Dupaninan Agta"},
["dup"] = {"Duano"},
["duq"] = {"Dusun Malang"},
["dur"] = {"Dii"},
["dus"] = {"Dumi"},
["duu"] = {"Drung"},
["duv"] = {"Duvle"},
["duw"] = {"Dusun Witu"},
["dux"] = {"Duungooma"},
["duy"] = {"Dicamay Agta"},
["duz"] = {"Duli-Gey"},
["dva"] = {"Duau"},
["dwa"] = {"Diri"},
["dwk"] = {"Dawik Kui"},
["dwr"] = {"Dawro"},
["dws"] = {"Dutton World Speedwords"},
["dwu"] = {"Dhuwal"},
["dww"] = {"Dawawa"},
["dwy"] = {"Dhuwaya"},
["dwz"] = {"Dewas Rai"},
["dya"] = {"Dyan"},
["dyb"] = {"Dyaberdyaber"},
["dyd"] = {"Dyugun"},
["dyg"] = {"Villa Viciosa Agta"},
["dyi"] = {"Djimini Senoufo"},
["dym"] = {"Yanda Dom Dogon"},
["dyn"] = {"Dyangadi", "Dhanggatti"},
["dyo"] = {"Jola-Fonyi"},
["dyr"] = {"Dyarim"},
["dyu"] = {"Dyulish"},
["dyy"] = {"Djabugay", "Dyaabugay"},
["dza"] = {"Tunzu"},
["dzd"] = {"Daza"},
["dze"] = {"Djiwarli"},
["dzg"] = {"Dazaga"},
["dzl"] = {"Dzalakha"},
["dzn"] = {"Dzando"},
["eaa"] = {"Karenggapa"},
["ebc"] = {"Beginci"},
["ebg"] = {"Ebughu"},
["ebk"] = {"Bontok Hiar"},
["ebo"] = {"Teke-Ebo"},
["ebr"] = {"Ebrié"},
["ebu"] = {"Embu", "Kiembu"},
["ecr"] = {"Eteocretan"},
["ecs"] = {"Çhengey Chowree Ecuadoragh"},
["ecy"] = {"Eteocheeprish"},
["eee"] = {"E"},
["efa"] = {"Efai"},
["efe"] = {"Efe"},
["efi"] = {"Efik"},
["ega"] = {"Ega"},
["egl"] = {"Emilianish"},
["egm"] = {"Benamanga"},
["ego"] = {"Eggon"},
["egx"] = {"çhengaghyn Egyptagh"},
["egy"] = {"Egyptish (Shenn)"},
["ehs"] = {"Çhengey Chowree Miyakubo"},
["ehu"] = {"Ehueun"},
["eip"] = {"Eipomek"},
["eit"] = {"Eitiep"},
["eiv"] = {"Askopan"},
["eja"] = {"Ejamat"},
["eka"] = {"Ekajuk"},
["eke"] = {"Ekit"},
["ekg"] = {"Ekari"},
["eki"] = {"Eki"},
["ekk"] = {"Estoinish"},
["ekl"] = {"Kol (y Vangladesh)", "Kol"},
["ekm"] = {"Elip"},
["eko"] = {"Koti"},
["ekp"] = {"Ekpeye"},
["ekr"] = {"Yace"},
["eky"] = {"Kayah Hiar"},
["ele"] = {"Elepi"},
["elh"] = {"El Hugeirat"},
["eli"] = {"Nding"},
["elk"] = {"Elkei"},
["elm"] = {"Eleme"},
["elo"] = {"El Molo"},
["elu"] = {"Elu"},
["elx"] = {"Elamish"},
["ema"] = {"Emai-Iuleha-Ora"},
["emb"] = {"Embaloh"},
["eme"] = {"Emerillon"},
["emg"] = {"Meohang Hiar"},
["emi"] = {"Mussau-Emira"},
["emk"] = {"Maninkish Hiar"},
["emm"] = {"Mamulique"},
["emn"] = {"Emanish"},
["emp"] = {"Emberá Hwoaie"},
["emq"] = {"Minyagish Hiar"},
["ems"] = {"Yupik Lhoob y Cheayn Sheealtagh"},
["emu"] = {"Muria Hiar"},
["emw"] = {"Emplawas"},
["emx"] = {"Erromintxela"},
["emy"] = {"Mayish Epigrafagh"},
["emz"] = {"Mbessa"},
["ena"] = {"Apali"},
["enb"] = {"Markweeta"},
["enc"] = {"En"},
["end"] = {"Ende"},
["enf"] = {"Enetsish ny Keylljyn"},
["enh"] = {"Enetsish y Tundrey"},
["enl"] = {"Enlhet"},
["enm"] = {"Baarle Veanagh (1100-1500)"},
["enn"] = {"Engenni"},
["eno"] = {"Enggano"},
["enq"] = {"Enga"},
["enr"] = {"Emumu", "Emem"},
["enu"] = {"Enu"},
["env"] = {"Enwan (Steat Edo)"},
["enw"] = {"Enwan (Steat Akwa Ibom)"},
["enx"] = {"Enxet"},
["eot"] = {"Beti (y Clyst Iuaagagh)"},
["epi"] = {"Epie"},
["era"] = {"Eravallan"},
["erg"] = {"Sie"},
["erh"] = {"Eruwa"},
["eri"] = {"Ogea"},
["erk"] = {"Efate Yiass"},
["ero"] = {"Horpa"},
["err"] = {"Erre"},
["ers"] = {"Ersu"},
["ert"] = {"Eritai"},
["erw"] = {"Erokwanas"},
["ese"] = {"Ese Ejja"},
["esg"] = {"Aheri Gondi"},
["esh"] = {"Eshtehardi"},
["esi"] = {"Inupiatun Alaska Hwoaie"},
["esk"] = {"Inupiatun Alaska Heear Hwoaie"},
["esl"] = {"Çhengey Chowree yn Egypt"},
["esm"] = {"Esuma"},
["esn"] = {"Çhengey Chowree Halvadoragh"},
["eso"] = {"Çhengey Chowree Estaanagh"},
["esq"] = {"Esselen"},
["ess"] = {"Yupik y Çhibbeyr Veanagh"},
["esu"] = {"Yupik Veanagh"},
["esx"] = {"çhengaghyn Eskimogh-Aleutagh"},
["esy"] = {"Eskayan"},
["etb"] = {"Etebi"},
["etc"] = {"Etchemin"},
["eth"] = {"Çhengey Chowree Eetoipagh"},
["etn"] = {"Eton (Vanuatu)"},
["eto"] = {"Eton (Cameroon)"},
["etr"] = {"Edolo"},
["ets"] = {"Yekhee"},
["ett"] = {"Etruscish"},
["etu"] = {"Ejagham"},
["etx"] = {"Eten"},
["etz"] = {"Semimi"},
["eud"] = {"Eudeve"},
["euq"] = {"Bascagh (kynney)"},
["eve"] = {"Evenish"},
["evh"] = {"Uvbie"},
["evn"] = {"Evenkish"},
["ewo"] = {"Ewondo"},
["ext"] = {"Estremadurish"},
["eya"] = {"Eyak"},
["eyo"] = {"Keiyo"},
["eza"] = {"Ezaa"},
["eze"] = {"Uzekwe"},
["faa"] = {"Fasu"},
["fab"] = {"Fa d'Ambu"},
["fad"] = {"Wagi"},
["faf"] = {"Fagani"},
["fag"] = {"Finongan"},
["fah"] = {"Baissa Fali"},
["fai"] = {"Faiwol"},
["faj"] = {"Faita"},
["fak"] = {"Fang (Cameroon)"},
["fal"] = {"Fali Yiass"},
["fam"] = {"Fam"},
["fan"] = {"Fang (Guinea Chryss ny Cruinney)"},
["fap"] = {"Paloor"},
["far"] = {"Fataleka"},
["fat"] = {"Fanti"},
["fau"] = {"Fayu"},
["fax"] = {"Fala"},
["fay"] = {"Fars Heear Yiass"},
["faz"] = {"Fars Heear Hwoaie"},
["fbl"] = {"Bikol Albay Heear"},
["fcs"] = {"Çhengey Chowree Québec"},
["fer"] = {"Feroge"},
["ffi"] = {"Foia Foia"},
["ffm"] = {"Maasina Fulfulde"},
["fgr"] = {"Fongoro"},
["fia"] = {"Nobiin"},
["fie"] = {"Fyer"},
["fif"] = {"Faifi"},
["fil"] = {"Philippeenish"},
["fip"] = {"Fipa"},
["fir"] = {"Firan"},
["fit"] = {"Finnlynnish Tornedal", "Meänkieli"},
["fiu"] = {"çhengaghyn Finn-Oogragh"},
["fiw"] = {"Fiwaga"},
["fkk"] = {"Kirya-Konzəl"},
["fkv"] = {"Finnlynnish Kven"},
["fla"] = {"Kalispel-Pend d'Oreille"},
["flh"] = {"Foau"},
["fli"] = {"Fali"},
["fll"] = {"Fali Hwoaie"},
["fln"] = {"Flinders Island"},
["flr"] = {"Fuliiru"},
["fly"] = {"Flaaitaal", "Tsotsitaal"},
["fmp"] = {"Fe'fe'"},
["fmu"] = {"Muria Heear Foddey"},
["fnb"] = {"Fanbak"},
["fng"] = {"Fanagalo"},
["fni"] = {"Fania"},
["fod"] = {"Foodo"},
["foi"] = {"Foi"},
["fom"] = {"Foma"},
["fon"] = {"Fon"},
["for"] = {"Fore"},
["fos"] = {"Siraya"},
["fox"] = {"çhengaghyn Formosagh"},
["fpe"] = {"Creeole Baarle Fernando Po"},
["fqs"] = {"Fas"},
["frc"] = {"Frangish Cajun"},
["frd"] = {"Fordata"},
["frk"] = {"Frankish"},
["frm"] = {"Frangish Veanagh (ca. 1400-1600)"},
["fro"] = {"Shenn Rangish (842-ca. 1400)"},
["frp"] = {"Arpitanish", "Francoprovençal"},
["frq"] = {"Forak"},
["frr"] = {"Freeshlannish Hwoaie"},
["frs"] = {"Freeshlannish Hiar"},
["frt"] = {"Fortsenal"},
["fse"] = {"Çhengey Cowree Innlynnagh"},
["fsl"] = {"Çhengey Chowree Rangagh"},
["fss"] = {"Çhengey Chowree Finnlynn-y Toolynn", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"},
["fub"] = {"Adamawa Fulfulde"},
["fuc"] = {"Pulaarish"},
["fud"] = {"Futuna Hiar"},
["fue"] = {"Borgu Fulfulde"},
["fuf"] = {"Pularish"},
["fuh"] = {"Fulfulde y Neegeyr Heear"},
["fui"] = {"Fulfulde Bagirmi"},
["fuj"] = {"Ko"},
["fum"] = {"Fum"},
["fun"] = {"Fulniô"},
["fuq"] = {"Fulfulde y Neegeyr Hiar Veanagh"},
["fur"] = {"Friulish"},
["fut"] = {"Futuna-Aniwa"},
["fuu"] = {"Furu"},
["fuv"] = {"Fulfulde y Naigeer"},
["fuy"] = {"Fuyug"},
["fvr"] = {"Fur"},
["fwa"] = {"Fwâi"},
["fwe"] = {"Fwe"},
["gaa"] = {"Ga"},
["gab"] = {"Gabri"},
["gac"] = {"Andamanish Vooar Vestit"},
["gad"] = {"Gaddang"},
["gae"] = {"Guarequena"},
["gaf"] = {"Gende"},
["gag"] = {"Gagauzish"},
["gah"] = {"Alekano"},
["gai"] = {"Borei"},
["gaj"] = {"Gadsup"},
["gak"] = {"Gamkonora"},
["gal"] = {"Galolen"},
["gam"] = {"Kandawo"},
["gan"] = {"Sheenish Gan"},
["gao"] = {"Gants"},
["gap"] = {"Gal"},
["gaq"] = {"Gata'"},
["gar"] = {"Galeya"},
["gas"] = {"Adiwasi Garasia"},
["gat"] = {"Kenati"},
["gau"] = {"Mudhili Gadaba"},
["gaw"] = {"Nobonob"},
["gax"] = {"Borana-Arsi-Guji Oromo"},
["gay"] = {"Gayo"},
["gaz"] = {"Oromoish Veanagh Heear"},
["gba"] = {"Gbaya (Pobblaght yn Affrick Veanagh)"},
["gbb"] = {"Kaytetye"},
["gbd"] = {"Karajarri"},
["gbe"] = {"Niksek"},
["gbf"] = {"Gaikundi"},
["gbg"] = {"Gbanziri"},
["gbh"] = {"Defi Gbe"},
["gbi"] = {"Galela"},
["gbj"] = {"Bodo Gadaba"},
["gbk"] = {"Gaddi"},
["gbl"] = {"Gamit"},
["gbm"] = {"Garhwali"},
["gbn"] = {"Mo'da"},
["gbo"] = {"Grebo Hwoaie"},
["gbp"] = {"Gbaya-Bossangoa"},
["gbq"] = {"Gbaya-Bozoum"},
["gbr"] = {"Gbagyi"},
["gbs"] = {"Gbesi Gbe"},
["gbu"] = {"Gagadu"},
["gbv"] = {"Gbanu"},
["gbw"] = {"Gabi-Gabi"},
["gbx"] = {"Xwla Gbe Hiar"},
["gby"] = {"Gbari"},
["gbz"] = {"Darish Horoastrianagh"},
["gcc"] = {"Mali"},
["gcd"] = {"Ganggalida"},
["gce"] = {"Galice"},
["gcf"] = {"Creeole Frangish Guadeloupe"},
["gcl"] = {"Creeole Baarle Grenadagh"},
["gcn"] = {"Gaina"},
["gcr"] = {"Creeole Frangish Geeaanagh"},
["gct"] = {"Germaanish Colonia Tovar"},
["gda"] = {"Gade Lohar"},
["gdb"] = {"Pottangi Ollar Gadaba"},
["gdc"] = {"Gugu Badhun"},
["gdd"] = {"Gedaged"},
["gde"] = {"Gude"},
["gdf"] = {"Guduf-Gava"},
["gdg"] = {"Ga'dang"},
["gdh"] = {"Gadjerawang", "Gajirrabeng"},
["gdi"] = {"Gundi"},
["gdj"] = {"Gurdjar"},
["gdk"] = {"Gadang"},
["gdl"] = {"Dirasha"},
["gdm"] = {"Laal"},
["gdn"] = {"Umanakaina"},
["gdo"] = {"Ghodoberi"},
["gdq"] = {"Mehri"},
["gdr"] = {"Wipi"},
["gds"] = {"Çhengey CHowree Ghandruk"},
["gdt"] = {"Kungardutyi"},
["gdu"] = {"Gudu"},
["gdx"] = {"Godwari"},
["gea"] = {"Geruma"},
["geb"] = {"Kire"},
["gec"] = {"Gboloo Grebo"},
["ged"] = {"Gade"},
["gef"] = {"Gerai"},
["geg"] = {"Gengle"},
["geh"] = {"Germaanish utteragh", "Hutterisch"},
["gei"] = {"Gebe"},
["gej"] = {"Gen"},
["gek"] = {"Ywom"},
["gel"] = {"ut-Ma'in"},
["gem"] = {"çhengaghyn Germaanic"},
["geq"] = {"Geme"},
["ges"] = {"Geser-Gorom"},
["gev"] = {"Eviya"},
["gew"] = {"Gera"},
["gex"] = {"Garre"},
["gey"] = {"Enya"},
["gez"] = {"Geez"},
["gfk"] = {"Patpatar"},
["gft"] = {"Gafat"},
["gga"] = {"Gao"},
["ggb"] = {"Gbii"},
["ggd"] = {"Gugadj"},
["gge"] = {"Gurr-goni"},
["ggg"] = {"Gurgula"},
["ggk"] = {"Kungarakany"},
["ggl"] = {"Ganglau"},
["ggt"] = {"Gitua"},
["ggu"] = {"Gagu", "Gban"},
["ggw"] = {"Gogodala"},
["gha"] = {"Ghadamès"},
["ghc"] = {"Gaelg Yerno-Albinagh"},
["ghe"] = {"Ghale Yiass"},
["ghh"] = {"Ghale Hwoaie"},
["ghk"] = {"Karenish Geko"},
["ghl"] = {"Ghulfan"},
["ghn"] = {"Ghanongga"},
["gho"] = {"Ghomara"},
["ghr"] = {"Ghera"},
["ghs"] = {"Guhu-Samane"},
["ght"] = {"Kuke", "Kutang Ghale"},
["gia"] = {"Kija"},
["gib"] = {"Gibanawa"},
["gic"] = {"Gail"},
["gid"] = {"Gidar"},
["gie"] = {"Gaɓogbo", "Guébie"},
["gig"] = {"Goaria"},
["gih"] = {"Githabul"},
["gii"] = {"Girirra"},
["gil"] = {"Gilbertish"},
["gim"] = {"Gimi (yn Ard-Heer Hiar)"},
["gin"] = {"Hinukh"},
["gip"] = {"Gimi (y Vretyn Noa Heear)"},
["giq"] = {"Gelao Eayney"},
["gir"] = {"Gelao Jiarg"},
["gis"] = {"Giziga Hwoaie"},
["git"] = {"Gitxsan"},
["giu"] = {"Mulao"},
["giw"] = {"Gelao Bane"},
["gix"] = {"Gilima"},
["giy"] = {"Giyug"},
["giz"] = {"Giziga Yiass"},
["gjk"] = {"Kachi Koli"},
["gjm"] = {"Gunditjmara"},
["gjn"] = {"Gonja"},
["gjr"] = {"Kriol Gurindji"},
["gju"] = {"Gujari"},
["gka"] = {"Guya"},
["gkd"] = {"Magɨ (Queiggey Madang)"},
["gke"] = {"Ndai"},
["gkn"] = {"Gokana"},
["gko"] = {"Kok-Nar"},
["gkp"] = {"Kpelle yn Ghuinea"},
["gku"] = {"ǂUngkue"},
["glb"] = {"Belning"},
["glc"] = {"Bon Gula"},
["gld"] = {"Nanai"},
["glh"] = {"Pashai Heear Hwoaie", "Pashayi Heear Hwoaie"},
["glj"] = {"Gula Iro"},
["glk"] = {"Gilaki"},
["gll"] = {"Garlali"},
["glo"] = {"Galambu"},
["glr"] = {"Glaro-Twabo"},
["glu"] = {"Gula (Shad)"},
["glw"] = {"Glavda"},
["gly"] = {"Gule"},
["gma"] = {"Gambera"},
["gmb"] = {"Gula'alaa"},
["gmd"] = {"Mághdì"},
["gme"] = {"çhengaghyn Germaanic Hiar"},
["gmg"] = {"Magɨyi"},
["gmh"] = {"Ard-Ghermaanish Veanagh (ca. 1050-1500)"},
["gml"] = {"Germaanish Injil Veanagh"},
["gmm"] = {"Gbaya-Mbodomo"},
["gmn"] = {"Gimnime"},
["gmq"] = {"çhengaghyn Germaanic Hwoaie"},
["gmr"] = {"Mirning", "Mirniny"},
["gmu"] = {"Gumalu"},
["gmv"] = {"Gamo"},
["gmw"] = {"çhengaghyn Germaanagh Heear"},
["gmx"] = {"Magoma"},
["gmy"] = {"Greagish Vycenaeagh"},
["gmz"] = {"Mgbolizhia"},
["gna"] = {"Kaansa"},
["gnb"] = {"Gangte"},
["gnc"] = {"Guançhish"},
["gnd"] = {"Zulgo-Gemzek"},
["gne"] = {"Ganang"},
["gng"] = {"Ngangam"},
["gnh"] = {"Lere"},
["gni"] = {"Gooniyandi"},
["gnj"] = {"Ngen"},
["gnk"] = {"ǁGana"},
["gnl"] = {"Gangulu"},
["gnm"] = {"Ginuman"},
["gnn"] = {"Gumatj"},
["gno"] = {"Gondi Hwoaie"},
["gnq"] = {"Gana"},
["gnr"] = {"Gureng Gureng"},
["gnt"] = {"Guntai"},
["gnu"] = {"Gnau"},
["gnw"] = {"Guaranish Voliviagh Heear"},
["gnz"] = {"Ganzi"},
["goa"] = {"Guro"},
["gob"] = {"Playero"},
["goc"] = {"Gorakor"},
["god"] = {"Godié"},
["goe"] = {"Gongduk"},
["gof"] = {"Gofa"},
["gog"] = {"Gogo"},
["goh"] = {"Shenn Ard-Ghermaanish (ca. 750-1050)"},
["goi"] = {"Gobasi"},
["goj"] = {"Gowlan"},
["gok"] = {"Gowli"},
["gol"] = {"Gola"},
["gom"] = {"Goan Konkani"},
["gon"] = {"Gondi"},
["goo"] = {"Gone Dau"},
["gop"] = {"Yeretuar"},
["goq"] = {"Gorap"},
["gor"] = {"Gorontalo"},
["gos"] = {"Gronings"},
["got"] = {"Gothish"},
["gou"] = {"Gavar"},
["gov"] = {"Goo"},
["gow"] = {"Gorowa"},
["gox"] = {"Gobu"},
["goy"] = {"Goundo"},
["goz"] = {"Gozarkhani"},
["gpa"] = {"Gupa-Abawa"},
["gpe"] = {"Baarle Vrisht Ghanaiagh"},
["gpn"] = {"Taiap"},
["gqa"] = {"Ga'anda"},
["gqi"] = {"Guiqiong"},
["gqn"] = {"Guana (y Vrasseel)"},
["gqr"] = {"Gor"},
["gqu"] = {"Qau"},
["gra"] = {"Garasia Rajput"},
["grb"] = {"Grebo"},
["grc"] = {"Shenn Ghreagish (derrey 1453)"},
["grd"] = {"Guruntum-Mbaaru"},
["grg"] = {"Madi"},
["grh"] = {"Gbiri-Niragu"},
["gri"] = {"Ghari"},
["grj"] = {"Grebo Yiass"},
["grk"] = {"çhengaghyn Greagagh"},
["grm"] = {"Kota Marudu Talantang"},
["gro"] = {"Groma"},
["grq"] = {"Gorovu"},
["grr"] = {"Taznatit"},
["grs"] = {"Gresi"},
["grt"] = {"Garo"},
["gru"] = {"Kistane"},
["grv"] = {"Grebo Veanagh"},
["grw"] = {"Gweda"},
["grx"] = {"Guriaso"},
["gry"] = {"Grebo Barclayville"},
["grz"] = {"Guramalum"},
["gse"] = {"Çhengey Chowree Ghanaiagh"},
["gsg"] = {"Çhengey Chowree Ghermaanagh"},
["gsl"] = {"Gusilay"},
["gsm"] = {"Çhengey Chowree Ghuatemalagh"},
["gsn"] = {"Nema", "Gusan"},
["gso"] = {"Gbaya Heear Yiass"},
["gsp"] = {"Wasembo"},
["gss"] = {"Çhengey Chowree Ghreagagh"},
["gsw"] = {"Germaanish Elveeishagh", "Alemannish", "Alsaasish"},
["gta"] = {"Guató"},
["gtu"] = {"Aghu-Tharnggala"},
["gua"] = {"Shiki"},
["gub"] = {"Guajajára"},
["guc"] = {"Wayuu"},
["gud"] = {"Yocoboué Dida"},
["gue"] = {"Gurindji"},
["guf"] = {"Gupapuyngu"},
["gug"] = {"Guaranish Pharaguayagh"},
["guh"] = {"Guahibo"},
["gui"] = {"Guaranish Voliviagh Hiar"},
["guk"] = {"Gumuz"},
["gul"] = {"Creeole Baarle Gullah"},
["gum"] = {"Guambiano"},
["gun"] = {"Mbyá Guaraní"},
["guo"] = {"Guayabero"},
["gup"] = {"Gunwinggu"},
["guq"] = {"Aché"},
["gur"] = {"Farefare"},
["gus"] = {"Çhengey Chowree Guineagh"},
["gut"] = {"Maléku Jaíka"},
["guu"] = {"Yanomamö"},
["guw"] = {"Gun"},
["gux"] = {"Gourmanchéma"},
["guz"] = {"Gusii", "Ekegusii"},
["gva"] = {"Guana (y Pharaguay)"},
["gvc"] = {"Guanano"},
["gve"] = {"Duwet"},
["gvf"] = {"Golin"},
["gvj"] = {"Guajá"},
["gvl"] = {"Gulay"},
["gvm"] = {"Gurmana"},
["gvn"] = {"Kuku-Yalanji"},
["gvo"] = {"Gavião Do Jiparaná"},
["gvp"] = {"Pará Gavião"},
["gvr"] = {"Gurung"},
["gvs"] = {"Gumawana"},
["gvy"] = {"Guyani"},
["gwa"] = {"Mbato"},
["gwb"] = {"Gwa"},
["gwc"] = {"Gawri", "Kalami"},
["gwd"] = {"Gawwada"},
["gwe"] = {"Gweno"},
["gwf"] = {"Gowro"},
["gwg"] = {"Moo"},
["gwi"] = {"Gwichʼin"},
["gwj"] = {"ǀGwi"},
["gwm"] = {"Awngthim"},
["gwn"] = {"Gwandara"},
["gwr"] = {"Gwere"},
["gwt"] = {"Gawar-Bati"},
["gwu"] = {"Guwamu"},
["gww"] = {"Kwini"},
["gwx"] = {"Gua"},
["gxx"] = {"Wè Yiass"},
["gya"] = {"Gbaya Heear Hwoaie"},
["gyb"] = {"Garus"},
["gyd"] = {"Kayardild"},
["gye"] = {"Gyem"},
["gyf"] = {"Gungabula"},
["gyg"] = {"Gbayi"},
["gyi"] = {"Gyele"},
["gyl"] = {"Gayil"},
["gym"] = {"Ngäbere"},
["gyn"] = {"Creeole Baarle Geeaanagh"},
["gyo"] = {"Gyalsumdo"},
["gyr"] = {"Guarayu"},
["gyy"] = {"Gunya"},
["gyz"] = {"Geji", "Gyaazi"},
["gza"] = {"Ganza"},
["gzi"] = {"Gazi"},
["gzn"] = {"Gane"},
["haa"] = {"Han"},
["hab"] = {"Çhengey Chowree Hanoi"},
["hac"] = {"Guranish"},
["had"] = {"Hatam"},
["hae"] = {"Oromoish Hiar"},
["haf"] = {"Çhengey Chowree Haiphong"},
["hag"] = {"Hanga"},
["hah"] = {"Hahon"},
["hai"] = {"Haida"},
["haj"] = {"Hajong"},
["hak"] = {"Sheenish Hakka"},
["hal"] = {"Halang"},
["ham"] = {"Hewa"},
["han"] = {"Hangaza"},
["hao"] = {"Hakö"},
["hap"] = {"Hupla"},
["haq"] = {"Ha"},
["har"] = {"Harari"},
["has"] = {"Haisla"},
["hav"] = {"Havu"},
["haw"] = {"Hawaiish"},
["hax"] = {"Haida Yiass"},
["hay"] = {"Haya"},
["haz"] = {"Hazaragi"},
["hba"] = {"Hamba"},
["hbb"] = {"Huba"},
["hbn"] = {"Heiban"},
["hbo"] = {"Shenn Ewnish"},
["hbu"] = {"Habu"},
["hca"] = {"Creeole Hindish Andamanagh"},
["hch"] = {"Huichol"},
["hdn"] = {"Haida Hwoaie"},
["hds"] = {"Çhengey Chowree Hondooragh"},
["hdy"] = {"Hadiyya"},
["hea"] = {"Miao Qiandong Hwoaie"},
["hed"] = {"Herdé"},
["heg"] = {"Helong"},
["heh"] = {"Hehe"},
["hei"] = {"Heiltsuk"},
["hem"] = {"Hemba"},
["hgm"] = {"Haiǁom"},
["hgw"] = {"Haigwai"},
["hhi"] = {"Hoia Hoia"},
["hhr"] = {"Kerak"},
["hhy"] = {"Hoyahoya"},
["hia"] = {"Lamang"},
["hib"] = {"Hibito"},
["hid"] = {"Hidatsa"},
["hif"] = {"Hindish Fiji"},
["hig"] = {"Kamwe"},
["hih"] = {"Pamosu"},
["hii"] = {"Hindurish"},
["hij"] = {"Hijuk"},
["hik"] = {"Seit-Kaitetu"},
["hil"] = {"Hiligaynonish"},
["him"] = {"çhengaghyn Himachalagh", "çhengaghyn Paharagh Heear"},
["hio"] = {"Tsoa"},
["hir"] = {"Himarimã"},
["hit"] = {"Hittish"},
["hiw"] = {"Hiw"},
["hix"] = {"Hixkaryána"},
["hji"] = {"Haji"},
["hka"] = {"Kahe"},
["hke"] = {"Hunde"},
["hkh"] = {"Khah", "Poguli"},
["hkk"] = {"Hunjara-Kaina Ke"},
["hkn"] = {"Mel-Khaonh"},
["hks"] = {"Çhengey Chowree Hong Kong", "Heung Kong Sau Yue"},
["hla"] = {"Halia"},
["hlb"] = {"Halbi"},
["hld"] = {"Halang Doan"},
["hle"] = {"Hlersu"},
["hlt"] = {"Matu Chin"},
["hlu"] = {"Luwish Yalloo-ocklagh"},
["hma"] = {"Hmongish Mashan Yiass", "Miaoish Mashan Yiass"},
["hmb"] = {"Humburi Senni Songhay"},
["hmc"] = {"Hmongish Huishui Veanagh", "Miaoish Huishui Veanagh"},
["hmd"] = {"Miaoish Vooar-Ornaidagh", "A-hmaos", "Miaoish Da-Hua"},
["hme"] = {"Hmongish Huishui Hiar", "Miaoish Huishui Hiar"},
["hmf"] = {"Hmongish Don"},
["hmg"] = {"Hmongish Guiyang Heear Yiass"},
["hmh"] = {"Hmongish Huishui Heear Yiass", "Miaoish Huishui Heear Yiass"},
["hmi"] = {"Hmongish Huishui Hwoaie", "Miaoish Huishui Hwoaie"},
["hmj"] = {"Ge", "Gejia"},
["hmk"] = {"Maek"},
["hml"] = {"Hmongish Luopohe", "Miaoish Luopohe"},
["hmm"] = {"Hmongish Mashan Veanagh", "Miaoish Mashan Veanagh"},
["hmn"] = {"Hmongish", "Mongish"},
["hmp"] = {"Hmongish Mashan Hwoaie", "Miaoish Mashan Hwoaie"},
["hmq"] = {"Miaoish Qiandong Hiar"},
["hmr"] = {"Hmar"},
["hms"] = {"Miaoish Qiandong Yiass"},
["hmt"] = {"Hamtai"},
["hmu"] = {"Hamap"},
["hmv"] = {"Hmong Dô"},
["hmw"] = {"Hmongish Mashan Heear", "Miaoish Mashan Heear"},
["hmx"] = {"çhengaghyn Hmong-Mien"},
["hmy"] = {"Hmongish Guiyang Yiass", "Miaoish Guiyang Yiass"},
["hmz"] = {"Hmongish Shua", "Miaoish Heenit"},
["hna"] = {"Mina (Cameroon)"},
["hnd"] = {"Hindko Yiass"},
["hne"] = {"Chhattisgarhi"},
["hng"] = {"Hungu"},
["hnh"] = {"ǁAni"},
["hni"] = {"Hani"},
["hnj"] = {"Hmongish Njua", "Mong Leng", "Mong Njua"},
["hnn"] = {"Hanunoo"},
["hno"] = {"Hindko Hwoaie"},
["hns"] = {"Hindustaanish Charibagh"},
["hnu"] = {"Hung"},
["hoa"] = {"Hoava"},
["hob"] = {"Marish (Queiggey Madang)"},
["hoc"] = {"Ho"},
["hod"] = {"Holma"},
["hoe"] = {"Horom"},
["hoh"] = {"Hobyót"},
["hoi"] = {"Holikachuk"},
["hoj"] = {"Hadothish", "Harotish"},
["hok"] = {"çhengaghyn Hokagh"},
["hol"] = {"Holu"},
["hom"] = {"Homa"},
["hoo"] = {"Holoholo"},
["hop"] = {"Hopi"},
["hor"] = {"Horo"},
["hos"] = {"Çhengey Chowree Chaayr Ho Chi Minh"},
["hot"] = {"Hote", "Malê"},
["hov"] = {"Hovongan"},
["how"] = {"Honi"},
["hoy"] = {"Holiya"},
["hoz"] = {"Hozo"},
["hpo"] = {"Hpon"},
["hps"] = {"Glare Chowree Hawai'i (HSL)", "Çhengey Chowree Hawaiish Vrisht"},
["hra"] = {"Hrangkhol"},
["hrc"] = {"Niwer Mil"},
["hre"] = {"Hre"},
["hrk"] = {"Haruku"},
["hrm"] = {"Miaoish Eairkagh"},
["hro"] = {"Haroi"},
["hrp"] = {"Nhirrpi"},
["hrt"] = {"Hértevin"},
["hru"] = {"Hruso"},
["hrw"] = {"Warwar Feni"},
["hrx"] = {"Hunsrikish"},
["hrz"] = {"Harzanish"},
["hsb"] = {"Sorbish Eaghtyragh"},
["hsh"] = {"Glare Chowree Ungaaragh"},
["hsl"] = {"Glare Chowree Hausagh"},
["hsn"] = {"Sheenish Xiang"},
["hss"] = {"Harsusi"},
["hti"] = {"Hoti"},
["hto"] = {"Minica Huitoto"},
["hts"] = {"Hadza"},
["htu"] = {"Hitu"},
["htx"] = {"Hittish Veanagh"},
["hub"] = {"Huambisa"},
["huc"] = {"ǂHua", "ǂʼAmkhoe"},
["hud"] = {"Huaulu"},
["hue"] = {"San Francisco Del Mar Huave"},
["huf"] = {"Humene"},
["hug"] = {"Huachipaeri"},
["huh"] = {"Huilliche"},
["hui"] = {"Huli"},
["huj"] = {"Hmongish Guiyang Hwoaie", "Miaoish Guiyang Hwoaie"},
["huk"] = {"Hulung"},
["hul"] = {"Hula"},
["hum"] = {"Hungana"},
["huo"] = {"Hu"},
["hup"] = {"Hupa"},
["huq"] = {"Tsat"},
["hur"] = {"Halkomelem"},
["hus"] = {"Huastecish"},
["hut"] = {"Humla"},
["huu"] = {"Murui Huitoto"},
["huv"] = {"San Mateo Del Mar Huave"},
["huw"] = {"Hukumina"},
["hux"] = {"Nüpode Huitoto"},
["huy"] = {"Hulaulá"},
["huz"] = {"Hunzibish"},
["hvc"] = {"Çhengey Chultoor Vodoun Haitagh"},
["hve"] = {"San Dionisio Del Mar Huave"},
["hvk"] = {"Haveke"},
["hvn"] = {"Sabu"},
["hvv"] = {"Santa María Del Mar Huave"},
["hwa"] = {"Wané"},
["hwc"] = {"Creeole Baarle Hawaiianagh", "Hawaiish Vrisht"},
["hwo"] = {"Hwana"},
["hya"] = {"Hya"},
["hyw"] = {"Armeanish Heear"},
["hyx"] = {"Armeanagh (kynney)"},
["iai"] = {"Iaai"},
["ian"] = {"Iatmul"},
["iar"] = {"Purari"},
["iba"] = {"Iban"},
["ibb"] = {"Ibibio"},
["ibd"] = {"Iwaidja"},
["ibe"] = {"Akpes"},
["ibg"] = {"Ibanag"},
["ibh"] = {"Bih"},
["ibl"] = {"Ibaloi"},
["ibm"] = {"Agoi"},
["ibn"] = {"Ibino"},
["ibr"] = {"Ibuoro"},
["ibu"] = {"Ibu"},
["iby"] = {"Ibani"},
["ica"] = {"Ede Ica"},
["ich"] = {"Etkywan"},
["icl"] = {"Çhengey Chowree Eeslynnagh"},
["icr"] = {"Creeole San Andrés–Providencia"},
["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"},
["idb"] = {"Portiugish Injinagh"},
["idc"] = {"Idon", "Ajiya"},
["idd"] = {"Ede Idaca"},
["ide"] = {"Idere"},
["idi"] = {"Idi"},
["idr"] = {"Indri"},
["ids"] = {"Idesa"},
["idt"] = {"Idaté"},
["idu"] = {"Idoma"},
["ifa"] = {"Amganad Ifugao"},
["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"},
["ife"] = {"Ifè"},
["iff"] = {"Ifo"},
["ifk"] = {"Tuwali Ifugao"},
["ifm"] = {"Teke-Fuumu"},
["ifu"] = {"Mayoyao Ifugao"},
["ify"] = {"Keley-I Kallahan"},
["igb"] = {"Ebira"},
["ige"] = {"Igede"},
["igg"] = {"Igana"},
["igl"] = {"Igala"},
["igm"] = {"Kanggape"},
["ign"] = {"Ignaciano"},
["igo"] = {"Isebe"},
["igs"] = {"Interglossa"},
["igw"] = {"Igwe"},
["ihb"] = {"Iha Vrisht"},
["ihi"] = {"Ihievbe"},
["ihp"] = {"Iha"},
["ihw"] = {"Bidhawal"},
["iin"] = {"Thiin"},
["iir"] = {"çhengaghyn Ind-Eeraanagh"},
["ijc"] = {"Izon"},
["ije"] = {"Biseni"},
["ijj"] = {"Ede Ije"},
["ijn"] = {"Kalabari"},
["ijo"] = {"çhengaghyn Ijo"},
["ijs"] = {"Ijo Hiar Yiass"},
["ike"] = {"Inuktitut Hiar y Chanadey"},
["ikh"] = {"Ikhin-Arokho"},
["iki"] = {"Iko"},
["ikk"] = {"Ika"},
["ikl"] = {"Ikulu"},
["iko"] = {"Olulumo-Ikom"},
["ikp"] = {"Ikpeshi"},
["ikr"] = {"Ikaranggal"},
["iks"] = {"Çhengey Chowree Inuitagh"},
["ikt"] = {"Inuinnaqtun", "Inuktitut Heear y Chanadey"},
["ikv"] = {"Iku-Gora-Ankwa"},
["ikw"] = {"Ikwere"},
["ikx"] = {"Ik"},
["ikz"] = {"Ikizu"},
["ila"] = {"Ile Ape"},
["ilb"] = {"Ila"},
["ilg"] = {"Garig-Ilgar"},
["ili"] = {"Ili Turki"},
["ilk"] = {"Ilongot"},
["ilm"] = {"Iranun (y Valaysia)"},
["ilo"] = {"Iloko"},
["ilp"] = {"Iranun (ny h-Ellanyn Philippeenagh)"},
["ils"] = {"Çhengey Chowree Eddyr-ashoonagh"},
["ilu"] = {"Ili'uun"},
["ilv"] = {"Ilue"},
["ima"] = {"Mala Malasar"},
["imi"] = {"Anamgura"},
["iml"] = {"Miluk"},
["imn"] = {"Imonda"},
["imo"] = {"Imbongu"},
["imr"] = {"Imroing"},
["ims"] = {"Marsish"},
["imt"] = {"Imotong"},
["imy"] = {"Milyan"},
["inb"] = {"Inga"},
["inc"] = {"çhengaghyn Indagh"},
["ine"] = {"çhengaghyn Ind-Oarpagh"},
["ing"] = {"Degexit'an"},
["inh"] = {"Ingushish"},
["inj"] = {"Inga yn Jungyl"},
["inl"] = {"Çhengey Chowree Indoneeshagh"},
["inm"] = {"Minaeish"},
["inn"] = {"Isinai"},
["ino"] = {"Inoke-Yate"},
["inp"] = {"Iñapari"},
["ins"] = {"Çhengey Chowree Injinagh"},
["int"] = {"Intha"},
["inz"] = {"Ineseño"},
["ior"] = {"Inor"},
["iou"] = {"Tuma-Irumu"},
["iow"] = {"Iowa-Oto"},
["ipi"] = {"Ipili"},
["ipo"] = {"Ipiko"},
["iqu"] = {"Iquito"},
["iqw"] = {"Ikwo"},
["ira"] = {"çhengaghyn Eeraanagh"},
["ire"] = {"Iresim"},
["irh"] = {"Irarutu"},
["iri"] = {"Rigwe", "Irigwe"},
["irk"] = {"Iraqw"},
["irn"] = {"Irántxe"},
["iro"] = {"çhengaghyn Iroquoiagh"},
["irr"] = {"Ir"},
["iru"] = {"Irula"},
["irx"] = {"Kamberau"},
["iry"] = {"Iraya"},
["isa"] = {"Isabi"},
["isc"] = {"Isconahua"},
["isd"] = {"Isnag"},
["ise"] = {"Çhengey Chowree Iddaalagh"},
["isg"] = {"Çhengey Chowree Yernagh"},
["ish"] = {"Esan"},
["isi"] = {"Nkem-Nkum"},
["isk"] = {"Ishkashimi"},
["ism"] = {"Masimasi"},
["isn"] = {"Isanzu"},
["iso"] = {"Isoko"},
["isr"] = {"Çhengey Chowree Israelagh"},
["ist"] = {"Istriotish"},
["isu"] = {"Isu (Rheynn Menchum)"},
["itb"] = {"Binongan Itneg"},
["itc"] = {"çhengaghyn Iddaalagh"},
["itd"] = {"Tidung Yiass"},
["ite"] = {"Itene"},
["iti"] = {"Inlaod Itneg"},
["itk"] = {"Iddaalish Ewagh"},
["itl"] = {"Itelmenish"},
["itm"] = {"Itu Mbon Uzo"},
["ito"] = {"Itonama"},
["itr"] = {"Iteri"},
["its"] = {"Isekiri"},
["itt"] = {"Maeng Itneg"},
["itv"] = {"Itawit"},
["itw"] = {"Ito"},
["itx"] = {"Itik"},
["ity"] = {"Moyadan Itneg"},
["itz"] = {"Itzá"},
["ium"] = {"Iu Mien"},
["ivb"] = {"Ibatan"},
["ivv"] = {"Ivatan"},
["iwk"] = {"I-Wak"},
["iwm"] = {"Iwam"},
["iwo"] = {"Iwur"},
["iws"] = {"Sepik Iwam"},
["ixc"] = {"Ixcatecish"},
["ixl"] = {"Ixil"},
["iya"] = {"Iyayu"},
["iyo"] = {"Mesaka"},
["iyx"] = {"Yaka (y Congo)"},
["izh"] = {"Ingrish"},
["izm"] = {"Kizamani"},
["izr"] = {"Izere"},
["izz"] = {"Izii"},
["jaa"] = {"Jamamadí"},
["jab"] = {"Hyam"},
["jac"] = {"Popti'", "Jakalteko"},
["jad"] = {"Jahanka"},
["jae"] = {"Yabem"},
["jaf"] = {"Jara"},
["jah"] = {"Jah Hut"},
["jaj"] = {"Zazao"},
["jak"] = {"Jakun"},
["jal"] = {"Yalahatan"},
["jam"] = {"Creeole Baarle Jamaicagh"},
["jan"] = {"Jandai"},
["jao"] = {"Yanyuwa"},
["jaq"] = {"Yaqay"},
["jas"] = {"Javish y Chaladoan Noa"},
["jat"] = {"Jakati"},
["jau"] = {"Yaur"},
["jax"] = {"Malaish Jambi"},
["jay"] = {"Yan-nhangu", "Nhangu"},
["jaz"] = {"Jawe"},
["jbe"] = {"Berberish Ewagh"},
["jbi"] = {"Badjiri"},
["jbj"] = {"Arandai"},
["jbk"] = {"Barikewa"},
["jbm"] = {"Bijim"},
["jbn"] = {"Nafusi"},
["jbo"] = {"Lojban"},
["jbr"] = {"Jofotek-Bromnya"},
["jbt"] = {"Jabutí"},
["jbu"] = {"Jukun Takum"},
["jbw"] = {"Yawijibaya"},
["jcs"] = {"Çhengey Chowree Heeragh Yamaicagh"},
["jct"] = {"Krymchak"},
["jda"] = {"Jad"},
["jdg"] = {"Jadgali"},
["jdt"] = {"Tatish Ewagh"},
["jeb"] = {"Jebero"},
["jee"] = {"Jerung"},
["jeh"] = {"Jeh"},
["jei"] = {"Yei"},
["jek"] = {"Jeri Kuo"},
["jel"] = {"Yelmek"},
["jen"] = {"Dza"},
["jer"] = {"Jere"},
["jet"] = {"Manem"},
["jeu"] = {"Jonkor Bourmataguil"},
["jgb"] = {"Ngbee"},
["jge"] = {"Shorshish Ewagh"},
["jgk"] = {"Gwak"},
["jgo"] = {"Ngomba"},
["jhi"] = {"Jehai"},
["jhs"] = {"Çhengey Chowree Jhankot"},
["jia"] = {"Jina"},
["jib"] = {"Jibu"},
["jic"] = {"Tol"},
["jid"] = {"Bu (Steat Kaduna)"},
["jie"] = {"Jilbe"},
["jig"] = {"Jingulu", "Djingili"},
["jih"] = {"sTodsde", "Shangzhai"},
["jii"] = {"Jiiddu"},
["jil"] = {"Jilim"},
["jim"] = {"Jimi (Cameroon)"},
["jio"] = {"Jiamao"},
["jiq"] = {"Guanyinqiao", "Lavrung"},
["jit"] = {"Jita"},
["jiu"] = {"Jinuo Youle"},
["jiv"] = {"Shuar"},
["jiy"] = {"Jinuo Buyuan"},
["jje"] = {"Jejueo"},
["jjr"] = {"Bankal"},
["jka"] = {"Kaera"},
["jkm"] = {"Karenish Mobwa"},
["jko"] = {"Kubo"},
["jkp"] = {"Karenish Paku"},
["jkr"] = {"Koro (yn Injey)"},
["jks"] = {"Çhengey Chowree Amami Koniya"},
["jku"] = {"Labir"},
["jle"] = {"Ngile"},
["jls"] = {"Çhengey Chowree Yamaicagh"},
["jma"] = {"Dima"},
["jmb"] = {"Zumbun"},
["jmc"] = {"Machame"},
["jmd"] = {"Yamdena"},
["jmi"] = {"Jimi (y Naigeer)"},
["jml"] = {"Jumli"},
["jmn"] = {"Makuri Naga"},
["jmr"] = {"Kamara"},
["jms"] = {"Mashi (y Naigeer)"},
["jmw"] = {"Mouwase"},
["jmx"] = {"Mixtecish Juxtlahuaca Heear"},
["jna"] = {"Jangshung"},
["jnd"] = {"Jandavra"},
["jng"] = {"Yangman"},
["jni"] = {"Janji"},
["jnj"] = {"Yemsa"},
["jnl"] = {"Rawat"},
["jns"] = {"Jaunsari"},
["job"] = {"Joba"},
["jod"] = {"Wojenaka"},
["jog"] = {"Jogi"},
["jor"] = {"Jorá"},
["jos"] = {"Çhengey Chowree Yordaanagh"},
["jow"] = {"Jowulu"},
["jpa"] = {"Aramaaish Phalasteenagh Ewagh"},
["jpr"] = {"Pershish Ewagh"},
["jpx"] = {"Shapaanagh (kynney)"},
["jqr"] = {"Jaqaru"},
["jra"] = {"Jarai"},
["jrb"] = {"Arabish Ewagh"},
["jrr"] = {"Jiru"},
["jrt"] = {"Jakattoe"},
["jru"] = {"Japrería"},
["jsl"] = {"Çhengey Chowree Hapaanagh"},
["jua"] = {"Júma"},
["jub"] = {"Wannu"},
["juc"] = {"Jurchen"},
["jud"] = {"Worodougou"},
["juh"] = {"Hõne"},
["jui"] = {"Ngadjuri"},
["juk"] = {"Wapan"},
["jul"] = {"Jirel"},
["jum"] = {"Jumjum"},
["jun"] = {"Juang"},
["juo"] = {"Jiba"},
["jup"] = {"Hupdë"},
["jur"] = {"Jurúna"},
["jus"] = {"Çhengey Chowree Jumla"},
["jut"] = {"Jutish"},
["juu"] = {"Ju"},
["juw"] = {"Wãpha"},
["juy"] = {"Juray"},
["jvd"] = {"Javindo"},
["jvn"] = {"Javish Charibagh"},
["jwi"] = {"Jwira-Pepesa"},
["jya"] = {"Jiarong"},
["jye"] = {"Arabish Yemenagh Ewagh"},
["jyy"] = {"Jaya"},
["kaa"] = {"Kara-Kalpakish", "Karakalpakish"},
["kab"] = {"Kabylish"},
["kac"] = {"Kachin", "Jingpho"},
["kad"] = {"Adara"},
["kae"] = {"Ketangalan"},
["kaf"] = {"Katso"},
["kag"] = {"Kajaman"},
["kah"] = {"Kara (Pobblaght yn Affrick Veanagh)"},
["kai"] = {"Karekare"},
["kaj"] = {"Jju"},
["kak"] = {"Kalanguya", "Kayapa Kallahan"},
["kam"] = {"Kamba (y Cheinney)"},
["kao"] = {"Xaasongaxango"},
["kap"] = {"Bezhta"},
["kaq"] = {"Capanahua"},
["kar"] = {"çhengaghyn Karenagh"},
["kav"] = {"Katukína"},
["kaw"] = {"Kawi"},
["kax"] = {"Kao"},
["kay"] = {"Kamayurá"},
["kba"] = {"Kalarko"},
["kbb"] = {"Kaxuiâna"},
["kbc"] = {"Kadiwéu"},
["kbd"] = {"Kabardish"},
["kbe"] = {"Kanju"},
["kbg"] = {"Khamba"},
["kbh"] = {"Camsá"},
["kbi"] = {"Kaptiau"},
["kbj"] = {"Kari"},
["kbk"] = {"Grass Koiari"},
["kbl"] = {"Kanembu"},
["kbm"] = {"Iwal"},
["kbn"] = {"Kare (Pobblaght yn Affrick Veanagh)"},
["kbo"] = {"Keliko"},
["kbp"] = {"Kabiyè"},
["kbq"] = {"Kamano"},
["kbr"] = {"Kafa"},
["kbs"] = {"Kande"},
["kbt"] = {"Abadi"},
["kbu"] = {"Kabutra"},
["kbv"] = {"Dera (yn Indoneesh)"},
["kbw"] = {"Kaiep"},
["kbx"] = {"Ap Ma"},
["kby"] = {"Manga Kanuri"},
["kbz"] = {"Duhwa"},
["kca"] = {"Khanty"},
["kcb"] = {"Kawacha"},
["kcc"] = {"Lubila"},
["kcd"] = {"Ngkâlmpw Kanum"},
["kce"] = {"Kaivi"},
["kcf"] = {"Ukaan"},
["kcg"] = {"Tyap"},
["kch"] = {"Vono"},
["kci"] = {"Kamantanish"},
["kcj"] = {"Kobiana"},
["kck"] = {"Kalanga"},
["kcl"] = {"Kela (Papeey Guinea Noa)", "Kala"},
["kcm"] = {"Gula (Pobblaght yn Affrick Veanagh)"},
["kcn"] = {"Nubi"},
["kco"] = {"Kinalakna"},
["kcp"] = {"Kanga"},
["kcq"] = {"Kamo"},
["kcr"] = {"Katla"},
["kcs"] = {"Koenoem"},
["kct"] = {"Kaian"},
["kcu"] = {"Kami (Tanzania)"},
["kcv"] = {"Kete"},
["kcw"] = {"Kabwari"},
["kcx"] = {"Kachama-Ganjule"},
["kcy"] = {"Korandje"},
["kcz"] = {"Konongo"},
["kda"] = {"Worimi"},
["kdc"] = {"Kutu"},
["kdd"] = {"Yankunytjatjara"},
["kde"] = {"Makonde"},
["kdf"] = {"Mamusi"},
["kdg"] = {"Seba"},
["kdh"] = {"Tem"},
["kdi"] = {"Kumam"},
["kdj"] = {"Karamojong"},
["kdk"] = {"Numèè", "Kwényi"},
["kdl"] = {"Tsikimba"},
["kdm"] = {"Kagoma"},
["kdn"] = {"Kunda"},
["kdo"] = {"çhengaghyn Kordofaniagh"},
["kdp"] = {"Kaningdon-Nindem"},
["kdq"] = {"Koch"},
["kdr"] = {"Karaimish"},
["kdt"] = {"Kuy"},
["kdu"] = {"Kadaru"},
["kdw"] = {"Koneraw"},
["kdx"] = {"Kam"},
["kdy"] = {"Keder", "Keijar"},
["kdz"] = {"Kwaja"},
["kea"] = {"Kabuverdianu"},
["keb"] = {"Kélé"},
["kec"] = {"Keiga"},
["ked"] = {"Kerewe"},
["kee"] = {"Keres Hiar"},
["kef"] = {"Kpessi"},
["keg"] = {"Tese"},
["keh"] = {"Keak"},
["kei"] = {"Kei"},
["kej"] = {"Kadar"},
["kek"] = {"Kekchí"},
["kel"] = {"Kela (Pobblaght Gheynlagh y Chongo)"},
["kem"] = {"Kemak"},
["ken"] = {"Kenyang"},
["keo"] = {"Kakwa"},
["kep"] = {"Kaikadi"},
["keq"] = {"Kamar"},
["ker"] = {"Kera"},
["kes"] = {"Kugbo"},
["ket"] = {"Ket"},
["keu"] = {"Akebu"},
["kev"] = {"Kanikkaran"},
["kew"] = {"Kewa Heear"},
["kex"] = {"Kukna"},
["key"] = {"Kupia"},
["kez"] = {"Kukele"},
["kfa"] = {"Kodava"},
["kfb"] = {"Kolamish Heear Hwoaie"},
["kfc"] = {"Konda-Dora"},
["kfd"] = {"Korra Koraga"},
["kfe"] = {"Kota (yn Injey)"},
["kff"] = {"Koya"},
["kfg"] = {"Kudiya"},
["kfh"] = {"Kurichiya"},
["kfi"] = {"Kurumba Kannada"},
["kfj"] = {"Kemiehua"},
["kfk"] = {"Kinnaurish"},
["kfl"] = {"Kung"},
["kfm"] = {"Khunsarish"},
["kfn"] = {"Kuk"},
["kfo"] = {"Koro (y Clyst Iuaagagh)"},
["kfp"] = {"Korwa"},
["kfq"] = {"Korku"},
["kfr"] = {"Kachhish", "Kutchish"},
["kfs"] = {"Bilaspurish"},
["kft"] = {"Kanjarish"},
["kfu"] = {"Katkarish"},
["kfv"] = {"Kurmukarish"},
["kfw"] = {"Kharam Naga"},
["kfx"] = {"Kullu Pahari"},
["kfy"] = {"Kumaoni"},
["kfz"] = {"Koromfé"},
["kga"] = {"Koyaga"},
["kgb"] = {"Kawe"},
["kge"] = {"Komering"},
["kgf"] = {"Kube"},
["kgg"] = {"Kusunda"},
["kgi"] = {"Çhengey Chowree Selangor"},
["kgj"] = {"Gamale Kham"},
["kgk"] = {"Kaiwá"},
["kgl"] = {"Kunggari"},
["kgn"] = {"Karingani"},
["kgo"] = {"Krongo"},
["kgp"] = {"Kaingang"},
["kgq"] = {"Kamoro"},
["kgr"] = {"Abun"},
["kgs"] = {"Kumbainggar"},
["kgt"] = {"Somyev"},
["kgu"] = {"Kobol"},
["kgv"] = {"Karas"},
["kgw"] = {"Karon Dori"},
["kgx"] = {"Kamaru"},
["kgy"] = {"Kyerung"},
["kha"] = {"Khasi"},
["khb"] = {"Lü"},
["khc"] = {"Tukang Besi North"},
["khd"] = {"Bädi Kanum"},
["khe"] = {"Korowai"},
["khf"] = {"Khuen"},
["khg"] = {"Khams Tibetan"},
["khh"] = {"Kehu"},
["khi"] = {"çhengaghyn Khoisan"},
["khj"] = {"Kuturmi"},
["khk"] = {"Mongoilish Halh"},
["khl"] = {"Lusi"},
["khn"] = {"Khandesi"},
["kho"] = {"Khotanish", "Sakan"},
["khp"] = {"Kapori", "Kapauri"},
["khq"] = {"Koyra Chiini Songhay"},
["khr"] = {"Kharia"},
["khs"] = {"Kasua"},
["kht"] = {"Khamti"},
["khu"] = {"Nkhumbi"},
["khv"] = {"Khvarshi"},
["khw"] = {"Khowar"},
["khx"] = {"Kanu"},
["khy"] = {"Kele (Pobblaght Gheynlagh y Chongo)"},
["khz"] = {"Keapara"},
["kia"] = {"Kim"},
["kib"] = {"Koalib"},
["kic"] = {"Kickapoo"},
["kid"] = {"Koshin"},
["kie"] = {"Kibet"},
["kif"] = {"Magar Kham Hiar"},
["kig"] = {"Kimaama", "Kimaghima"},
["kih"] = {"Kilmeri"},
["kii"] = {"Kitsai"},
["kij"] = {"Kilivila"},
["kil"] = {"Kariya"},
["kim"] = {"Karagas"},
["kio"] = {"Kiowa"},
["kip"] = {"Sheshi Kham"},
["kiq"] = {"Kosadle", "Kosare"},
["kis"] = {"Kis"},
["kit"] = {"Agob"},
["kiu"] = {"Kirmanjki (çhengey er lheh)"},
["kiv"] = {"Kimbu"},
["kiw"] = {"Kiwai Hiar Hwoaie"},
["kix"] = {"Khiamniungan Naga"},
["kiy"] = {"Kirikiri"},
["kiz"] = {"Kisi"},
["kja"] = {"Mlap"},
["kjb"] = {"Q'anjob'al", "Kanjobal"},
["kjc"] = {"Konjo Slystagh"},
["kjd"] = {"Kiwai Yiass"},
["kje"] = {"Kisar"},
["kjg"] = {"Khmu"},
["kjh"] = {"Khakas"},
["kji"] = {"Zabana"},
["kjj"] = {"Khinalugh"},
["kjk"] = {"Konjo Sleitoil"},
["kjl"] = {"Magar Kham Heear"},
["kjm"] = {"Kháng"},
["kjn"] = {"Kunjen"},
["kjo"] = {"Kinnaurish Harijan"},
["kjp"] = {"Karenish Hiar Pwo"},
["kjq"] = {"Keres Heear"},
["kjr"] = {"Kurudu"},
["kjs"] = {"Kewa Hiar"},
["kjt"] = {"Karenish Phrae Pwo"},
["kju"] = {"Kashaya"},
["kjv"] = {"Çhengey Lettyragh Kaikavagh"},
["kjx"] = {"Ramopa"},
["kjy"] = {"Erave"},
["kjz"] = {"Bumthangkha"},
["kka"] = {"Kakanda"},
["kkb"] = {"Kwerisa"},
["kkc"] = {"Odoodee"},
["kkd"] = {"Kinuku"},
["kke"] = {"Kakabe"},
["kkf"] = {"Kalaktang Monpa"},
["kkg"] = {"Kalinga Ghlion Mabaka"},
["kkh"] = {"Khün"},
["kki"] = {"Kagulu"},
["kkj"] = {"Kako"},
["kkk"] = {"Kokota"},
["kkl"] = {"Kosarek Yale"},
["kkm"] = {"Kiong"},
["kkn"] = {"Kon Keu"},
["kko"] = {"Karko"},
["kkp"] = {"Gugubera", "Koko-Bera"},
["kkq"] = {"Kaeku"},
["kkr"] = {"Kir-Balar"},
["kks"] = {"Giiwo"},
["kkt"] = {"Koi"},
["kku"] = {"Tumi"},
["kkv"] = {"Kangean"},
["kkw"] = {"Teke-Kukuya"},
["kkx"] = {"Kohin"},
["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"},
["kkz"] = {"Kaska"},
["kla"] = {"Klamath-Modoc"},
["klb"] = {"Kiliwa"},
["klc"] = {"Kolbila"},
["kld"] = {"Gamilaraay"},
["kle"] = {"Kulung (Nepaal)"},
["klf"] = {"Kendeje"},
["klg"] = {"Tagakaulo"},
["klh"] = {"Weliki"},
["kli"] = {"Kalumpang"},
["klj"] = {"Khalaj"},
["klk"] = {"Kono (y Naigeer)"},
["kll"] = {"Kagan Kalagan"},
["klm"] = {"Migum"},
["kln"] = {"Kalenjin"},
["klo"] = {"Kapya"},
["klp"] = {"Kamasa"},
["klq"] = {"Rumu"},
["klr"] = {"Khaling"},
["kls"] = {"Kalasha"},
["klt"] = {"Nukna"},
["klu"] = {"Klao"},
["klv"] = {"Maskelynes"},
["klw"] = {"Tado", "Lindu"},
["klx"] = {"Koluwawa"},
["kly"] = {"Kalao"},
["klz"] = {"Kabola"},
["kma"] = {"Konni"},
["kmb"] = {"Kimbundu"},
["kmc"] = {"Dong Yiass"},
["kmd"] = {"Majukayang Kalinga"},
["kme"] = {"Bakole"},
["kmf"] = {"Kare (Papooe Guinea Noa)"},
["kmg"] = {"Kâte"},
["kmh"] = {"Kalam"},
["kmi"] = {"Kami (y Naigeer)"},
["kmj"] = {"Kumarbhag Paharia"},
["kmk"] = {"Limos Kalinga"},
["kml"] = {"Tanudan Kalinga"},
["kmm"] = {"Kom (yn Injey)"},
["kmn"] = {"Awtuw"},
["kmo"] = {"Kwoma"},
["kmp"] = {"Gimme"},
["kmq"] = {"Kwama"},
["kmr"] = {"Kurdish Hwoaie"},
["kms"] = {"Kamasau"},
["kmt"] = {"Kemtuik"},
["kmu"] = {"Kanite"},
["kmv"] = {"Creeole Frangish Karipúna"},
["kmw"] = {"Komo (Pobblaght Gheynlagh y Chongo)"},
["kmx"] = {"Waboda"},
["kmy"] = {"Koma"},
["kmz"] = {"Turkish Khorasan"},
["kna"] = {"Dera (y Naigeer)"},
["knb"] = {"Lubuagan Kalinga"},
["knc"] = {"Kanurish Veanagh"},
["knd"] = {"Konda"},
["kne"] = {"Kankanaey"},
["knf"] = {"Mankanya"},
["kng"] = {"Koongo"},
["kni"] = {"Kanufi"},
["knj"] = {"Kanjobal Heear"},
["knk"] = {"Kuranko"},
["knl"] = {"Keninjal"},
["knm"] = {"Kanamarí"},
["knn"] = {"Konkani (çhengey er lheh)"},
["kno"] = {"Kono (Sierra Leone)"},
["knp"] = {"Kwanja"},
["knq"] = {"Kintaq"},
["knr"] = {"Kaningra"},
["kns"] = {"Kensiu"},
["knt"] = {"Panoan Katukína"},
["knu"] = {"Kono (y Ghuinea)"},
["knv"] = {"Tabo"},
["knw"] = {"Kung-Ekoka"},
["knx"] = {"Kendayan", "Salako"},
["kny"] = {"Kanyok"},
["knz"] = {"Kalamsé"},
["koa"] = {"Konomala"},
["koc"] = {"Kpati"},
["kod"] = {"Kodi"},
["koe"] = {"Kacipo-Bale Suri"},
["kof"] = {"Kubi"},
["kog"] = {"Cogui", "Kogi"},
["koh"] = {"Koyo"},
["koi"] = {"Komish Phermagh"},
["kok"] = {"Konkanish (mooar-hengey)"},
["kol"] = {"Kol (Papooey Guinea Noa)"},
["koo"] = {"Konzo"},
["kop"] = {"Waube"},
["koq"] = {"Kota (Gabon)"},
["kos"] = {"Kosraeish"},
["kot"] = {"Lagwan"},
["kou"] = {"Koke"},
["kov"] = {"Kudu-Camo"},
["kow"] = {"Kugama"},
["koy"] = {"Koyukon"},
["koz"] = {"Korak"},
["kpa"] = {"Kutto"},
["kpb"] = {"Mullu Kurumba"},
["kpc"] = {"Curripaco"},
["kpd"] = {"Koba"},
["kpe"] = {"Kpelle"},
["kpf"] = {"Komba"},
["kpg"] = {"Kapingamarangi"},
["kph"] = {"Kplang"},
["kpi"] = {"Kofei"},
["kpj"] = {"Karajá"},
["kpk"] = {"Kpan"},
["kpl"] = {"Kpala"},
["kpm"] = {"Koho"},
["kpn"] = {"Kepkiriwát"},
["kpo"] = {"Ikposo"},
["kpq"] = {"Korupun-Sela"},
["kpr"] = {"Korafe-Yegha"},
["kps"] = {"Tehit"},
["kpt"] = {"Karata"},
["kpu"] = {"Kafoa"},
["kpv"] = {"Komish Hyriagh"},
["kpw"] = {"Kobon"},
["kpx"] = {"Koialish Sleitoil"},
["kpy"] = {"Koryakish"},
["kpz"] = {"Kupsabiny"},
["kqa"] = {"Mum"},
["kqb"] = {"Kovai"},
["kqc"] = {"Doromu-Koki"},
["kqd"] = {"Koy Sanjaq Surat"},
["kqe"] = {"Kalagan"},
["kqf"] = {"Kakabai"},
["kqg"] = {"Khe"},
["kqh"] = {"Kisankasa"},
["kqi"] = {"Koitabu"},
["kqj"] = {"Koromira"},
["kqk"] = {"Kotafon Gbe"},
["kql"] = {"Kyenele"},
["kqm"] = {"Khisa"},
["kqn"] = {"Kaonde"},
["kqo"] = {"Krahn Hiar"},
["kqp"] = {"Kimré"},
["kqq"] = {"Krenak"},
["kqr"] = {"Kimaragang"},
["kqs"] = {"Kissi Hwoaie"},
["kqt"] = {"Kadazan yn Awin Klias"},
["kqu"] = {"Seroa"},
["kqv"] = {"Okolod"},
["kqw"] = {"Kandas"},
["kqx"] = {"Mser"},
["kqy"] = {"Koorete"},
["kqz"] = {"Korana"},
["kra"] = {"Kumhali"},
["krb"] = {"Karkin"},
["krc"] = {"Karaçhayish-Balkarish"},
["krd"] = {"Kairui-Midiki"},
["kre"] = {"Panará"},
["krf"] = {"Koro (Vanuatu)"},
["krh"] = {"Kurama"},
["kri"] = {"Krio"},
["krj"] = {"Kinaray-A"},
["krk"] = {"Kerek"},
["krl"] = {"Karelish"},
["krn"] = {"Sapo"},
["kro"] = {"çhengaghyn Kru"},
["krp"] = {"Durop"},
["krr"] = {"Krung"},
["krs"] = {"Gbaya (y Toodaan)"},
["krt"] = {"Tumari Kanuri"},
["kru"] = {"Kurukh"},
["krv"] = {"Kavet"},
["krw"] = {"Krahn Heear"},
["krx"] = {"Karon"},
["kry"] = {"Kryts"},
["krz"] = {"Sota Kanum"},
["ksb"] = {"Shambala"},
["ksc"] = {"Kalinga Yiass"},
["ksd"] = {"Kuanua"},
["kse"] = {"Kuni"},
["ksf"] = {"Bafia"},
["ksg"] = {"Kusaghe"},
["ksh"] = {"Kölsch"},
["ksi"] = {"Krisa", "I'saka"},
["ksj"] = {"Uare"},
["ksk"] = {"Kansa"},
["ksl"] = {"Kumalu"},
["ksm"] = {"Kumba"},
["ksn"] = {"Kasiguranin"},
["kso"] = {"Kofa"},
["ksp"] = {"Kaba"},
["ksq"] = {"Kwaami"},
["ksr"] = {"Borong"},
["kss"] = {"Kisi Yiass"},
["kst"] = {"Winyé"},
["ksu"] = {"Khamyang"},
["ksv"] = {"Kusu"},
["ksw"] = {"Karenish S'gaw"},
["ksx"] = {"Kedang"},
["ksy"] = {"Kharia Thar"},
["ksz"] = {"Kodaku"},
["kta"] = {"Katua"},
["ktb"] = {"Kambaata"},
["ktc"] = {"Kholok"},
["ktd"] = {"Kokata", "Kukatha"},
["kte"] = {"Nubri"},
["ktf"] = {"Kwami"},
["ktg"] = {"Kalkutung"},
["kth"] = {"Karanga"},
["kti"] = {"Muyu Hwoaie"},
["ktj"] = {"Plapo Krumen"},
["ktk"] = {"Kaniet"},
["ktl"] = {"Koroshi"},
["ktm"] = {"Kurti"},
["ktn"] = {"Karitiâna"},
["kto"] = {"Kuot"},
["ktp"] = {"Kaduo"},
["ktq"] = {"Katabaga"},
["kts"] = {"Muyu Yiass"},
["ktt"] = {"Ketum"},
["ktu"] = {"Kitubish (Pobblaght Gheynlagh y Chongo)"},
["ktv"] = {"Katu Hiar"},
["ktw"] = {"Kato"},
["ktx"] = {"Kaxararí"},
["kty"] = {"Kango (Slyst Bas-Uélé)"},
["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"},
["kub"] = {"Kutep"},
["kuc"] = {"Kwinsu"},
["kud"] = {"'Auhelawa"},
["kue"] = {"Kuman (Papooey Guinea Noa)"},
["kuf"] = {"Katu Heear"},
["kug"] = {"Kupa"},
["kuh"] = {"Kushi"},
["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"},
["kuj"] = {"Kuria"},
["kuk"] = {"Kepo'"},
["kul"] = {"Kulere"},
["kum"] = {"Kumykish"},
["kun"] = {"Kunama"},
["kuo"] = {"Kumukio"},
["kup"] = {"Kunimaipa"},
["kuq"] = {"Karipuna"},
["kus"] = {"Kusaal"},
["kut"] = {"Kutenai"},
["kuu"] = {"Kuskokwim Eaghtyragh"},
["kuv"] = {"Kur"},
["kuw"] = {"Kpagua"},
["kux"] = {"Kukatja"},
["kuy"] = {"Kuuku-Ya'u"},
["kuz"] = {"Kunza"},
["kva"] = {"Bagvalal"},
["kvb"] = {"Kubu"},
["kvc"] = {"Kove"},
["kvd"] = {"Kui (yn Indoneesh)"},
["kve"] = {"Kalabakanish"},
["kvf"] = {"Kabalai"},
["kvg"] = {"Kuni-Boazi"},
["kvh"] = {"Komodo"},
["kvi"] = {"Kwang"},
["kvj"] = {"Psikye"},
["kvk"] = {"Çhengey Chowree Choreeagh"},
["kvl"] = {"Kayaw"},
["kvm"] = {"Kendem"},
["kvn"] = {"Border Kuna"},
["kvo"] = {"Dobel"},
["kvp"] = {"Kompane"},
["kvq"] = {"Karenish Geba"},
["kvr"] = {"Kerinci"},
["kvt"] = {"Karenish Lahta", "Lahta"},
["kvu"] = {"Karenish Yinbaw"},
["kvv"] = {"Kola"},
["kvw"] = {"Wersing"},
["kvx"] = {"Parkari Koli"},
["kvy"] = {"Karenish Yintale", "Yintale"},
["kvz"] = {"Tsakwambo", "Tsaukambo"},
["kwa"] = {"Dâw"},
["kwb"] = {"Kwa"},
["kwc"] = {"Likwala"},
["kwd"] = {"Kwaio"},
["kwe"] = {"Kwerba"},
["kwf"] = {"Kwara'ae"},
["kwg"] = {"Sara Kaba Deme"},
["kwh"] = {"Kowiai"},
["kwi"] = {"Awa-Cuaiquer"},
["kwj"] = {"Kwanga"},
["kwk"] = {"Kwakiutl"},
["kwl"] = {"Kofyar"},
["kwm"] = {"Kwambish"},
["kwn"] = {"Kwangalish"},
["kwo"] = {"Kwomtarish"},
["kwp"] = {"Kodia"},
["kwr"] = {"Kwer"},
["kws"] = {"Kwese"},
["kwt"] = {"Kwesten"},
["kwu"] = {"Kwakum"},
["kwv"] = {"Sara Kaba Náà"},
["kww"] = {"Kwintish"},
["kwx"] = {"Khirwar"},
["kwy"] = {"Kongo San Salvador"},
["kwz"] = {"Kwadi"},
["kxa"] = {"Kairiru"},
["kxb"] = {"Krobu"},
["kxc"] = {"Konso", "Khonso"},
["kxd"] = {"Brunei"},
["kxf"] = {"Manumanaw Karen", "Manumanaw"},
["kxh"] = {"Karo (yn Eetoip)"},
["kxi"] = {"Keningau Murut"},
["kxj"] = {"Kulfa"},
["kxk"] = {"Karenish Zayein"},
["kxm"] = {"Khmerish Hwoaie"},
["kxn"] = {"Kanowit-Tanjong Melanau"},
["kxo"] = {"Kanoé"},
["kxp"] = {"Wadiyara Koli"},
["kxq"] = {"Smärky Kanum"},
["kxr"] = {"Koro (Papooey Guinea Noa)"},
["kxs"] = {"Kangjia"},
["kxt"] = {"Koiwat"},
["kxv"] = {"Kuvi"},
["kxw"] = {"Konai"},
["kxx"] = {"Likuba"},
["kxy"] = {"Kayong"},
["kxz"] = {"Kerewo"},
["kya"] = {"Kwaya"},
["kyb"] = {"Butbut Kalinga"},
["kyc"] = {"Kyaka"},
["kyd"] = {"Karey"},
["kye"] = {"Krache"},
["kyf"] = {"Kouya"},
["kyg"] = {"Keyagana"},
["kyh"] = {"Karok"},
["kyi"] = {"Kiput"},
["kyj"] = {"Karao"},
["kyk"] = {"Kamayo"},
["kyl"] = {"Kalapuya"},
["kym"] = {"Kpatili"},
["kyn"] = {"Binukidnon Hwoaie"},
["kyo"] = {"Kelon"},
["kyp"] = {"Kang"},
["kyq"] = {"Kenga"},
["kyr"] = {"Kuruáya"},
["kys"] = {"Baram Kayan"},
["kyt"] = {"Kayagar"},
["kyu"] = {"Kayah Heear"},
["kyv"] = {"Kayort"},
["kyw"] = {"Kudmali"},
["kyx"] = {"Rapoisi"},
["kyy"] = {"Kambaira"},
["kyz"] = {"Kayabí"},
["kza"] = {"Karaboro Heear"},
["kzb"] = {"Kaibobo"},
["kzc"] = {"Bondoukou Kulango"},
["kzd"] = {"Kadai"},
["kze"] = {"Kosena"},
["kzf"] = {"Da'a Kaili"},
["kzg"] = {"Kikai"},
["kzi"] = {"Kelabit"},
["kzk"] = {"Kazukuru"},
["kzl"] = {"Kayeli"},
["kzm"] = {"Kais"},
["kzn"] = {"Kokola"},
["kzo"] = {"Kaningi"},
["kzp"] = {"Kaidipang"},
["kzq"] = {"Kaike"},
["kzr"] = {"Karang"},
["kzs"] = {"Sugut Dusun"},
["kzu"] = {"Kayupulau"},
["kzv"] = {"Komyandaret"},
["kzw"] = {"Karirí-Xocó"},
["kzx"] = {"Kamarian"},
["kzy"] = {"Kango (Slyst Tshopo)"},
["kzz"] = {"Kalabra"},
["laa"] = {"Subanen Yiass"},
["lab"] = {"Linnagh A"},
["lac"] = {"Lacandon"},
["lad"] = {"Ladinoish"},
["lae"] = {"Pattani"},
["laf"] = {"Lafofa"},
["lag"] = {"Rangi"},
["lah"] = {"Lahnda"},
["lai"] = {"Lambya"},
["laj"] = {"Lango (Ooganda)"},
["lal"] = {"Lalia"},
["lam"] = {"Lamba"},
["lan"] = {"Laru"},
["lap"] = {"Laka (Shad)"},
["laq"] = {"Qabiao"},
["lar"] = {"Larteh"},
["las"] = {"Lama (y Togo)"},
["lau"] = {"Laba"},
["law"] = {"Lauje"},
["lax"] = {"Tiwa"},
["lay"] = {"Lama Bai"},
["laz"] = {"Aribwatsa"},
["lbb"] = {"Label"},
["lbc"] = {"Lakkia"},
["lbe"] = {"Lakish"},
["lbf"] = {"Tinani"},
["lbg"] = {"Laopang"},
["lbi"] = {"La'bi"},
["lbj"] = {"Ladakhi"},
["lbk"] = {"Bontok Veanagh"},
["lbl"] = {"Bikol Libon"},
["lbm"] = {"Lodhi"},
["lbn"] = {"Rmeet"},
["lbo"] = {"Laven"},
["lbq"] = {"Wampar"},
["lbr"] = {"Lohorung"},
["lbs"] = {"Çhengey Chowree Leebagh"},
["lbt"] = {"Lachi"},
["lbu"] = {"Labu"},
["lbv"] = {"Lavatbura-Lamusong"},
["lbw"] = {"Tolaki"},
["lbx"] = {"Lawangan"},
["lby"] = {"Lamalama", "Lamu-Lamu"},
["lbz"] = {"Lardil"},
["lcc"] = {"Legenyem"},
["lcd"] = {"Lola"},
["lce"] = {"Loncong", "Sekak"},
["lcf"] = {"Lubu"},
["lch"] = {"Luchazi"},
["lcl"] = {"Lisela"},
["lcm"] = {"Tungag"},
["lcp"] = {"Lawa Heear"},
["lcq"] = {"Luhu"},
["lcs"] = {"Lisabata-Nuniali"},
["lda"] = {"Kla-Dan"},
["ldb"] = {"Dũya"},
["ldd"] = {"Lurish"},
["ldg"] = {"Lenyima"},
["ldh"] = {"Lamja-Dengsa-Tola"},
["ldi"] = {"Laari"},
["ldj"] = {"Lemoro"},
["ldk"] = {"Leelau"},
["ldl"] = {"Kaan"},
["ldm"] = {"Landoma"},
["ldn"] = {"Láadan"},
["ldo"] = {"Loo"},
["ldp"] = {"Tso"},
["ldq"] = {"Lufu"},
["lea"] = {"Lega-Shabunda"},
["leb"] = {"Lala-Bisa"},
["lec"] = {"Leco"},
["led"] = {"Lendu"},
["lee"] = {"Lyélé"},
["lef"] = {"Lelemi"},
["leh"] = {"Lenje"},
["lei"] = {"Lemio"},
["lej"] = {"Lengola"},
["lek"] = {"Leipon"},
["lel"] = {"Lele (Pobblaght Gheynlagh y Chongo)"},
["lem"] = {"Nomaande"},
["len"] = {"Lenca"},
["leo"] = {"Leti (Cameroon)"},
["lep"] = {"Lepcha"},
["leq"] = {"Lembena"},
["ler"] = {"Lenkau"},
["les"] = {"Lese"},
["let"] = {"Lesing-Gelimi", "Amio-Gelimi"},
["leu"] = {"Kara (Papooey Guinea Noa)"},
["lev"] = {"Lamma"},
["lew"] = {"Ledo Kaili"},
["lex"] = {"Luang"},
["ley"] = {"Lemolang"},
["lez"] = {"Lesgish"},
["lfa"] = {"Lefa"},
["lfn"] = {"Lingua Franca Nova"},
["lga"] = {"Lungga"},
["lgb"] = {"Laghu"},
["lgg"] = {"Lugbara"},
["lgh"] = {"Laghuu"},
["lgi"] = {"Lengilu"},
["lgk"] = {"Lingarak", "Neverver"},
["lgl"] = {"Wala"},
["lgm"] = {"Lega-Mwenga"},
["lgn"] = {"T'apo", "Opuuo"},
["lgo"] = {"Lango (y Toodaan Yiass)"},
["lgq"] = {"Logba"},
["lgr"] = {"Lengo"},
["lgs"] = {"Çhengey Chowree Ghuinea-Bissau", "Língua Gestual Guineense"},
["lgt"] = {"Pahi"},
["lgu"] = {"Longgu"},
["lgz"] = {"Ligenza"},
["lha"] = {"Laha (Viet Nam)"},
["lhh"] = {"Laha (yn Indoneesh)"},
["lhi"] = {"Lahu Shi"},
["lhl"] = {"Lahul Lohar"},
["lhm"] = {"Lhomi"},
["lhn"] = {"Lahanan"},
["lhp"] = {"Lhokpu"},
["lhs"] = {"Mlahsö"},
["lht"] = {"Lo-Toga"},
["lhu"] = {"Lahu"},
["lia"] = {"Limba Veanagh Heear"},
["lib"] = {"Likum"},
["lic"] = {"Hlai"},
["lid"] = {"Nyindrou"},
["lie"] = {"Likila"},
["lif"] = {"Limbu"},
["lig"] = {"Ligbi"},
["lih"] = {"Lihir"},
["lij"] = {"Ligoorish"},
["lik"] = {"Lika"},
["lil"] = {"Lillooet"},
["lio"] = {"Liki"},
["lip"] = {"Sekpele"},
["liq"] = {"Libido"},
["lir"] = {"Baarle Laibeeragh"},
["lis"] = {"Lisu"},
["liu"] = {"Logorik"},
["liv"] = {"Liv"},
["liw"] = {"Col"},
["lix"] = {"Liabuku"},
["liy"] = {"Banda-Bambari"},
["liz"] = {"Libinza"},
["lja"] = {"Golpa"},
["lje"] = {"Rampi"},
["lji"] = {"Laiyolo"},
["ljl"] = {"Li'o"},
["ljp"] = {"Lampung Api"},
["ljw"] = {"Yirandali"},
["ljx"] = {"Yuru"},
["lka"] = {"Lakalei"},
["lkb"] = {"Kabras", "Lukabaras"},
["lkc"] = {"Kucong"},
["lkd"] = {"Lakondê"},
["lke"] = {"Kenyi"},
["lkh"] = {"Lakha"},
["lki"] = {"Laki"},
["lkj"] = {"Remun"},
["lkl"] = {"Laeko-Libuat"},
["lkm"] = {"Kalaamaya"},
["lkn"] = {"Lakon", "Vure"},
["lko"] = {"Khayo", "Olukhayo"},
["lkr"] = {"Päri"},
["lks"] = {"Kisa", "Olushisa"},
["lkt"] = {"Lakota"},
["lku"] = {"Kungkari"},
["lky"] = {"Lokoya"},
["lla"] = {"Lala-Roba"},
["llb"] = {"Lolo"},
["llc"] = {"Lele (y Ghuinea)"},
["lld"] = {"Ladin"},
["lle"] = {"Lele (Papooey Guinea Noa)"},
["llf"] = {"Hermit"},
["llg"] = {"Lole"},
["llh"] = {"Lamu"},
["lli"] = {"Teke-Laali"},
["llj"] = {"Ladji Ladji"},
["llk"] = {"Lelak"},
["lll"] = {"Lilau"},
["llm"] = {"Lasalimu"},
["lln"] = {"Lele (Shad)"},
["llp"] = {"Efate Hwoaie"},
["llq"] = {"Lolak"},
["lls"] = {"Çhengey Chowree Litaanagh"},
["llu"] = {"Lau"},
["llx"] = {"Lauan"},
["lma"] = {"Limba Hiar"},
["lmb"] = {"Merei"},
["lmc"] = {"Limilngan"},
["lmd"] = {"Lumun"},
["lme"] = {"Pévé"},
["lmf"] = {"Lembata Yiass"},
["lmg"] = {"Lamogai"},
["lmh"] = {"Lambichhong"},
["lmi"] = {"Lombi"},
["lmj"] = {"Lembata Heear"},
["lmk"] = {"Lamkang"},
["lml"] = {"Hano"},
["lmn"] = {"Lambadi"},
["lmo"] = {"Lombardish"},
["lmp"] = {"Limbum"},
["lmq"] = {"Lamatuka"},
["lmr"] = {"Lamalera"},
["lmu"] = {"Lamenu"},
["lmv"] = {"Lomaiviti"},
["lmw"] = {"Lake Miwok"},
["lmx"] = {"Laimbue"},
["lmy"] = {"Lamboya"},
["lna"] = {"Langbashe"},
["lnb"] = {"Mbalanhu"},
["lnd"] = {"Lundayeh", "Lun Bawang"},
["lng"] = {"Langobardish"},
["lnh"] = {"Lanoh"},
["lni"] = {"Daantanai'"},
["lnj"] = {"Leningitij"},
["lnl"] = {"Banda Veanagh Yiass"},
["lnm"] = {"Langam"},
["lnn"] = {"Lorediakarkar"},
["lns"] = {"Lamnso'"},
["lnu"] = {"Longuda"},
["lnw"] = {"Lanima"},
["lnz"] = {"Lonzo"},
["loa"] = {"Loloda"},
["lob"] = {"Lobi"},
["loc"] = {"Inonhan"},
["loe"] = {"Saluan"},
["lof"] = {"Logol"},
["log"] = {"Logo"},
["loh"] = {"Laarim", "Narim"},
["loi"] = {"Loma (y Clyst Iuaagagh)"},
["loj"] = {"Lou"},
["lok"] = {"Loko"},
["lol"] = {"Mongo"},
["lom"] = {"Loma (y Laibeer)"},
["lon"] = {"Lombwe Malawi"},
["loo"] = {"Lombo"},
["lop"] = {"Lopa"},
["loq"] = {"Lobala"},
["lor"] = {"Téén"},
["los"] = {"Loniu"},
["lot"] = {"Otuho"},
["lou"] = {"Creeole Louisiana"},
["lov"] = {"Lopi"},
["low"] = {"Tampias Lobu"},
["lox"] = {"Loun"},
["loy"] = {"Loke"},
["loz"] = {"Lozish"},
["lpa"] = {"Lelepa"},
["lpe"] = {"Lepki"},
["lpn"] = {"Long Phuri Naga"},
["lpo"] = {"Lipo"},
["lpx"] = {"Lopit"},
["lqr"] = {"Logir"},
["lra"] = {"Rara Bakati'"},
["lrc"] = {"Lurish Hwoaie"},
["lre"] = {"Lauryssish"},
["lrg"] = {"Laragia"},
["lri"] = {"Marachi", "Olumarachi"},
["lrk"] = {"Loarki"},
["lrl"] = {"Lari"},
["lrm"] = {"Marama", "Olumarama"},
["lrn"] = {"Lorang"},
["lro"] = {"Laro"},
["lrr"] = {"Yamphu Yiass"},
["lrt"] = {"Malayish Larantuka"},
["lrv"] = {"Larevat"},
["lrz"] = {"Lemerig"},
["lsa"] = {"Lasgerdi"},
["lsb"] = {"Çhengey Chowree Vurundeeagh", "Langue des Signes Burundaise"},
["lsc"] = {"Çhengey Chowree Albarradas", "Lengua de señas Albarradas"},
["lsd"] = {"Lishana Deni"},
["lse"] = {"Lusengo"},
["lsh"] = {"Lish"},
["lsi"] = {"Lashi"},
["lsl"] = {"Çhengey Chowree Latvagh"},
["lsm"] = {"Saamia", "Olusamia"},
["lsn"] = {"Çhengey Chowree Hibetagh"},
["lso"] = {"Çhengey Chowree Laosaghe"},
["lsp"] = {"Çhengey Chowree Phanamaagh", "Lengua de Señas Panameñas"},
["lsr"] = {"Aruop"},
["lss"] = {"Lasi"},
["lst"] = {"Çhengey Chowree yn Trinaid as Tobago"},
["lsv"] = {"Çhengey Chowree Sivia"},
["lsw"] = {"Çhengey Chowree Heshellagh", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"},
["lsy"] = {"Çhengey Chowree Wirrishagh"},
["ltc"] = {"Sheenish Veanagh Yeianagh"},
["ltg"] = {"Latgalish"},
["lth"] = {"Thur"},
["lti"] = {"Leti (yn Indoneesh)"},
["ltn"] = {"Latundê"},
["lto"] = {"Tsotso", "Olutsotso"},
["lts"] = {"Tachoni", "Lutachoni"},
["ltu"] = {"Latu"},
["lua"] = {"Luba-Lulua"},
["luc"] = {"Aringa"},
["lud"] = {"Ludish"},
["lue"] = {"Luvale"},
["luf"] = {"Laua"},
["lui"] = {"Luiseno"},
["luj"] = {"Luna"},
["luk"] = {"Lunanakha"},
["lul"] = {"Olu'bo"},
["lum"] = {"Luimbi"},
["lun"] = {"Lunda"},
["luo"] = {"Luo (y Cheinney as Tanzania)", "Dholuo"},
["lup"] = {"Lumbu"},
["luq"] = {"Lucumi"},
["lur"] = {"Laura"},
["lus"] = {"Lushai"},
["lut"] = {"Lushootseed"},
["luu"] = {"Lumba-Yakkha"},
["luv"] = {"Luwati"},
["luw"] = {"Luo (Cameroon)"},
["luy"] = {"Luyia", "Oluluyia"},
["luz"] = {"Lurish Yiass"},
["lva"] = {"Maku'a"},
["lvi"] = {"Lavi"},
["lvk"] = {"Lavukaleve"},
["lvl"] = {"Lwel"},
["lvs"] = {"Latvish Stundayrtit"},
["lvu"] = {"Levuka"},
["lwa"] = {"Lwalu"},
["lwe"] = {"Lewo Eleng"},
["lwg"] = {"Wanga", "Oluwanga"},
["lwh"] = {"Lachi Bane"},
["lwl"] = {"Lawa Hiar"},
["lwm"] = {"Laomish"},
["lwo"] = {"Luwo"},
["lws"] = {"Çhengey Chowree Malawi"},
["lwt"] = {"Lewotobi"},
["lwu"] = {"Lawu"},
["lww"] = {"Lewo"},
["lxm"] = {"Lakurumau"},
["lya"] = {"Layakha"},
["lyg"] = {"Lyngngam"},
["lyn"] = {"Luyana"},
["lzh"] = {"Sheenish Lettyragh"},
["lzl"] = {"Litzlitz"},
["lzn"] = {"Leinong Naga"},
["lzz"] = {"Laz"},
["maa"] = {"Mazatecish Tecóatl San Jerónimo"},
["mab"] = {"Mixtecish Yutanduchi"},
["mad"] = {"Madurish"},
["mae"] = {"Bo-Rukul"},
["maf"] = {"Mafa"},
["mag"] = {"Magahi"},
["mai"] = {"Maithilish"},
["maj"] = {"Mazatecish Jalapa De Díaz"},
["mak"] = {"Makasar"},
["mam"] = {"Mam"},
["man"] = {"Mandingo", "Manding"},
["map"] = {"çhengaghyn Austroneeshagh"},
["maq"] = {"Mazatecish Chiquihuitlán"},
["mas"] = {"Masai"},
["mat"] = {"Matlatzinca San Francisco"},
["mau"] = {"Mazatecish Huautla"},
["mav"] = {"Sateré-Mawé"},
["maw"] = {"Mampruli"},
["max"] = {"Malayish Maluku Hwoaie"},
["maz"] = {"Mazahua Veanagh"},
["mba"] = {"Higaonon"},
["mbb"] = {"Manobo Bukidnon Heear"},
["mbc"] = {"Macushi"},
["mbd"] = {"Manobo Dibabawon"},
["mbe"] = {"Molale"},
["mbf"] = {"Malayish Baba"},
["mbh"] = {"Mangseng"},
["mbi"] = {"Manobo Ilianen"},
["mbj"] = {"Nadëb"},
["mbk"] = {"Malol"},
["mbl"] = {"Maxakalí"},
["mbm"] = {"Ombamba"},
["mbn"] = {"Macaguán"},
["mbo"] = {"Mbo (Cameroon)"},
["mbp"] = {"Malayo"},
["mbq"] = {"Maisin"},
["mbr"] = {"Nukak Makú"},
["mbs"] = {"Manobo Sarangani"},
["mbt"] = {"Manobo Matigsalug"},
["mbu"] = {"Mbula-Bwazza"},
["mbv"] = {"Mbulungish"},
["mbw"] = {"Maring"},
["mbx"] = {"Mari (Queiggey East Sepik)"},
["mby"] = {"Memoni"},
["mbz"] = {"Mixtecish Amoltepec"},
["mca"] = {"Maca"},
["mcb"] = {"Machiguenga"},
["mcc"] = {"Bitur"},
["mcd"] = {"Sharanahua"},
["mce"] = {"Mixtecish Itundujia"},
["mcf"] = {"Matsés"},
["mcg"] = {"Mapoyo"},
["mch"] = {"Maquiritari"},
["mci"] = {"Mese"},
["mcj"] = {"Mvanip"},
["mck"] = {"Mbunda"},
["mcl"] = {"Macaguaje"},
["mcm"] = {"Creeole Portiugish Malaccagh"},
["mcn"] = {"Masana"},
["mco"] = {"Coatlán Mixe"},
["mcp"] = {"Makaa"},
["mcq"] = {"Ese"},
["mcr"] = {"Menya"},
["mcs"] = {"Mambai"},
["mct"] = {"Mengisa"},
["mcu"] = {"Mambila Chameroon"},
["mcv"] = {"Minanibai"},
["mcw"] = {"Mawa (Shad)"},
["mcx"] = {"Mpiemo"},
["mcy"] = {"Watut Yiass"},
["mcz"] = {"Mawan"},
["mda"] = {"Mada (y Naigeer)"},
["mdb"] = {"Morigi"},
["mdc"] = {"Male (Papooey Guinea Noa)"},
["mdd"] = {"Mbum"},
["mde"] = {"Maba (Shad)"},
["mdf"] = {"Moksha"},
["mdg"] = {"Massalat"},
["mdh"] = {"Maguindanaon"},
["mdi"] = {"Mamvu"},
["mdj"] = {"Mangbetu"},
["mdk"] = {"Mangbutu"},
["mdl"] = {"Çhengey Chowree Valtagh"},
["mdm"] = {"Mayogo"},
["mdn"] = {"Mbati"},
["mdp"] = {"Mbala"},
["mdq"] = {"Mbole"},
["mdr"] = {"Mandar"},
["mds"] = {"Maria (Papooey Guinea Noa)"},
["mdt"] = {"Mbere"},
["mdu"] = {"Mboko"},
["mdv"] = {"Mixtecish Monteverde Santa Lucía"},
["mdw"] = {"Mbosi"},
["mdx"] = {"Dizin"},
["mdy"] = {"Male (yn Eetoipt)"},
["mdz"] = {"Suruí Do Pará"},
["mea"] = {"Menka"},
["meb"] = {"Ikobi"},
["mec"] = {"Marra"},
["med"] = {"Melpa"},
["mee"] = {"Mengen"},
["mef"] = {"Megam"},
["meh"] = {"Mixtecish Tlaxiaco Heear Yiass"},
["mei"] = {"Midob"},
["mej"] = {"Meyah"},
["mek"] = {"Mekeo"},
["mel"] = {"Melanau Veanagh"},
["mem"] = {"Mangala"},
["men"] = {"Mende (Sierra Leone)"},
["meo"] = {"Malayish Kedah"},
["mep"] = {"Miriwoong"},
["meq"] = {"Merey"},
["mer"] = {"Meru"},
["mes"] = {"Masmaje"},
["met"] = {"Mato"},
["meu"] = {"Motu"},
["mev"] = {"Mano"},
["mew"] = {"Maaka"},
["mey"] = {"Hassaniyya"},
["mez"] = {"Menominee"},
["mfa"] = {"Malayish Pattani Malay"},
["mfb"] = {"Bangka"},
["mfc"] = {"Mba"},
["mfd"] = {"Mendankwe-Nkwen"},
["mfe"] = {"Morisyen"},
["mff"] = {"Naki"},
["mfg"] = {"Mogofin"},
["mfh"] = {"Matal"},
["mfi"] = {"Wandala"},
["mfj"] = {"Mefele"},
["mfk"] = {"Mofu Hwoaie"},
["mfl"] = {"Putai"},
["mfm"] = {"Marghi Yiass"},
["mfn"] = {"Mbembe Cross River"},
["mfo"] = {"Mbe"},
["mfp"] = {"Malayish Makassar"},
["mfq"] = {"Moba"},
["mfr"] = {"Marrithiyel"},
["mfs"] = {"Çhengey Chowree Veksicagh"},
["mft"] = {"Mokerang"},
["mfu"] = {"Mbwela"},
["mfv"] = {"Mandjak"},
["mfw"] = {"Mulaha"},
["mfx"] = {"Melo"},
["mfy"] = {"Mayo"},
["mfz"] = {"Mabaan"},
["mga"] = {"Yernish Veanagh (900-1200)"},
["mgb"] = {"Mararit"},
["mgc"] = {"Morokodo"},
["mgd"] = {"Moru"},
["mge"] = {"Mango"},
["mgf"] = {"Maklew"},
["mgg"] = {"Mpumpong"},
["mgh"] = {"Makhuwa-Meetto"},
["mgi"] = {"Lijili"},
["mgj"] = {"Abureni"},
["mgk"] = {"Mawes"},
["mgl"] = {"Maleu-Kilenge"},
["mgm"] = {"Mambae"},
["mgn"] = {"Mbangi"},
["mgo"] = {"Meta'"},
["mgp"] = {"Magar Hiar"},
["mgq"] = {"Malila"},
["mgr"] = {"Mambwe-Lungu"},
["mgs"] = {"Manda (Tanzania)"},
["mgt"] = {"Mongol"},
["mgu"] = {"Mailu"},
["mgv"] = {"Matengo"},
["mgw"] = {"Matumbi"},
["mgy"] = {"Mbunga"},
["mgz"] = {"Mbugwe"},
["mha"] = {"Manda (yn Injey)"},
["mhb"] = {"Mahongwe"},
["mhc"] = {"Mocho"},
["mhd"] = {"Mbugu"},
["mhe"] = {"Besisi", "Mah Meri"},
["mhf"] = {"Mamaa"},
["mhg"] = {"Margu"},
["mhi"] = {"Ma'di"},
["mhj"] = {"Mogholi"},
["mhk"] = {"Mungaka"},
["mhl"] = {"Mauwake"},
["mhm"] = {"Makhuwa-Moniga"},
["mhn"] = {"Mócheno"},
["mho"] = {"Mashi (y Tambia)"},
["mhp"] = {"Malayish Bali"},
["mhq"] = {"Mandan"},
["mhr"] = {"Mari Hiar"},
["mhs"] = {"Buru (yn Indoneesh)"},
["mht"] = {"Mandahuaca"},
["mhu"] = {"Digaro-Mishmi", "Darang Deng"},
["mhw"] = {"Mbukushu"},
["mhx"] = {"Maru", "Lhaovo"},
["mhy"] = {"Ma'anyan"},
["mhz"] = {"Mor (Elanyn Mor)"},
["mia"] = {"Miami"},
["mib"] = {"Mixtecish Atatláhuca"},
["mic"] = {"Mi'kmaq", "Micmacish"},
["mid"] = {"Mandaish"},
["mie"] = {"Mixtecish Ocotepec"},
["mif"] = {"Mofu-Gudur"},
["mig"] = {"Mixtecish San Miguel El Grande"},
["mih"] = {"Mixtecish Chayuco"},
["mii"] = {"Mixtecish Chigmecatitlán"},
["mij"] = {"Abar", "Mungbam"},
["mik"] = {"Mikasuki"},
["mil"] = {"Mixtecish Peñoles"},
["mim"] = {"Mixtecish Alacatlatzala"},
["min"] = {"Minangkabau"},
["mio"] = {"Mixtecish Pinotepa Nacional"},
["mip"] = {"Mixtecish Apasco-Apoala"},
["miq"] = {"Mískito"},
["mir"] = {"Isthmus Mixe"},
["mis"] = {"çhengaghyn gyn coad"},
["mit"] = {"Mixtecish Puebla Yiassc"},
["miu"] = {"Mixtecish Cacaloxtepec"},
["miw"] = {"Akoye"},
["mix"] = {"Mixtecish Mixtepec"},
["miy"] = {"Mixtecish Ayutla"},
["miz"] = {"Mixtecish Coatzospan"},
["mjb"] = {"Makalero"},
["mjc"] = {"Mixtecish San Juan Colorado"},
["mjd"] = {"Maidu Heear Hwoaie"},
["mje"] = {"Muskum"},
["mjg"] = {"Tu"},
["mjh"] = {"Mwera (Nyasa)"},
["mji"] = {"Kim Mun"},
["mjj"] = {"Mawak"},
["mjk"] = {"Matukar"},
["mjl"] = {"Mandeali"},
["mjm"] = {"Medebur"},
["mjn"] = {"Ma (Papooey Guinea Noa)"},
["mjo"] = {"Malankuravan"},
["mjp"] = {"Malapandaram"},
["mjq"] = {"Malaryan"},
["mjr"] = {"Malavedan"},
["mjs"] = {"Miship"},
["mjt"] = {"Sauria Paharia"},
["mju"] = {"Manna-Dora"},
["mjv"] = {"Mannan"},
["mjw"] = {"Karbi"},
["mjx"] = {"Mahali"},
["mjy"] = {"Mohicanish"},
["mjz"] = {"Majhi"},
["mka"] = {"Mbre"},
["mkb"] = {"Mal Paharia"},
["mkc"] = {"Siliput"},
["mke"] = {"Mawchi"},
["mkf"] = {"Miya"},
["mkg"] = {"Mak (y Çheen)"},
["mkh"] = {"çhengaghyn Mon-Khmeragh"},
["mki"] = {"Dhatki"},
["mkj"] = {"Mokilish"},
["mkk"] = {"Byep"},
["mkl"] = {"Mokole"},
["mkm"] = {"Moklen"},
["mkn"] = {"Malayish Kupang"},
["mko"] = {"Mingang Doso"},
["mkp"] = {"Moikodi"},
["mkq"] = {"Bay Miwok"},
["mkr"] = {"Malas"},
["mks"] = {"Mixtecish Silacayoapan"},
["mkt"] = {"Vamale"},
["mku"] = {"Konyanka Maninka"},
["mkv"] = {"Mafea"},
["mkw"] = {"Kitubish (y Congo)"},
["mkx"] = {"Minobo Kinamiging"},
["mky"] = {"Makish Hiar"},
["mkz"] = {"Makasae"},
["mla"] = {"Malo"},
["mlb"] = {"Mbule"},
["mlc"] = {"Cao Lan"},
["mle"] = {"Manambu"},
["mlf"] = {"Mal"},
["mlh"] = {"Mape"},
["mli"] = {"Malimpung"},
["mlj"] = {"Miltu"},
["mlk"] = {"Ilwana", "Kiwilwana"},
["mll"] = {"Malua Bay"},
["mlm"] = {"Mulam"},
["mln"] = {"Malango"},
["mlo"] = {"Mlomp"},
["mlp"] = {"Bargam"},
["mlq"] = {"Maninkish Heear"},
["mlr"] = {"Vame"},
["mls"] = {"Masalit"},
["mlu"] = {"To'abaita"},
["mlv"] = {"Motlav", "Mwotlap"},
["mlw"] = {"Moloko"},
["mlx"] = {"Malfaxal", "Naha'ai"},
["mlz"] = {"Malaynon"},
["mma"] = {"Mama"},
["mmb"] = {"Momina"},
["mmc"] = {"Mazahua Michoacán"},
["mmd"] = {"Maonan"},
["mme"] = {"Mae"},
["mmf"] = {"Mundat"},
["mmg"] = {"Ambrym Hwoaie"},
["mmh"] = {"Mehináku"},
["mmi"] = {"Musar"},
["mmj"] = {"Majhwar"},
["mmk"] = {"Mukha-Dora"},
["mml"] = {"Man Met"},
["mmm"] = {"Maii"},
["mmn"] = {"Mamanwa"},
["mmo"] = {"Mangga Buang"},
["mmp"] = {"Siawi"},
["mmq"] = {"Musak"},
["mmr"] = {"Miaoish Xiangxi Heear"},
["mmt"] = {"Malalamai"},
["mmu"] = {"Mmaala"},
["mmv"] = {"Miriti"},
["mmw"] = {"Emae"},
["mmx"] = {"Madak"},
["mmy"] = {"Migaama"},
["mmz"] = {"Mabaale"},
["mna"] = {"Mbula"},
["mnb"] = {"Muna"},
["mnc"] = {"Mançhooish"},
["mnd"] = {"Mondé"},
["mne"] = {"Naba"},
["mnf"] = {"Mundanish"},
["mng"] = {"Mnong Hiar"},
["mnh"] = {"Mono (Pobblaght Gheynlagh y Chongo)"},
["mni"] = {"Manipurish"},
["mnj"] = {"Munji"},
["mnk"] = {"Mandinkish"},
["mnl"] = {"Tiale"},
["mnm"] = {"Mapena"},
["mnn"] = {"Mnong Yiass"},
["mno"] = {"çhengaghyn Manobo"},
["mnp"] = {"Sheenish Min Bei"},
["mnq"] = {"Minriq"},
["mnr"] = {"Mono (SUA)"},
["mns"] = {"Mansi"},
["mnu"] = {"Mer"},
["mnv"] = {"Rennell-Bellona"},
["mnw"] = {"Mon"},
["mnx"] = {"Manikion"},
["mny"] = {"Manyawa"},
["mnz"] = {"Moni"},
["moa"] = {"Mwan"},
["moc"] = {"Mocoví"},
["mod"] = {"Mobilish"},
["moe"] = {"Innu", "Montagnais"},
["mog"] = {"Mongondow"},
["moh"] = {"Mohawkish"},
["moi"] = {"Mboi"},
["moj"] = {"Monzombo"},
["mok"] = {"Morori"},
["mom"] = {"Mangue"},
["moo"] = {"Monom"},
["mop"] = {"Mayish Mopán"},
["moq"] = {"Mor (Lieh-innys Bomberai)"},
["mor"] = {"Moroish"},
["mos"] = {"Mossish"},
["mot"] = {"Barí"},
["mou"] = {"Mogum"},
["mov"] = {"Mohave"},
["mow"] = {"Moi (y Congo)"},
["mox"] = {"Molima"},
["moy"] = {"Shekkacho"},
["moz"] = {"Mukulu", "Gergiko"},
["mpa"] = {"Mpoto"},
["mpb"] = {"Malak Malak", "Mullukmulluk"},
["mpc"] = {"Mangarrayi"},
["mpd"] = {"Machinere"},
["mpe"] = {"Majang"},
["mpg"] = {"Marba"},
["mph"] = {"Maung"},
["mpi"] = {"Mpade"},
["mpj"] = {"Martu Wangka", "Wangkajunga"},
["mpk"] = {"Mbara (Shad)"},
["mpl"] = {"Watut Veanagh"},
["mpm"] = {"Mixtecish Yosondúa"},
["mpn"] = {"Mindiri"},
["mpo"] = {"Miu"},
["mpp"] = {"Migabac"},
["mpq"] = {"Matís"},
["mpr"] = {"Vangunu"},
["mps"] = {"Dadibi"},
["mpt"] = {"Mian"},
["mpu"] = {"Makuráp"},
["mpv"] = {"Mungkip"},
["mpw"] = {"Mapidish"},
["mpx"] = {"Misima-Panaeati"},
["mpy"] = {"Mapia"},
["mpz"] = {"Mpi"},
["mqa"] = {"Maba (yn Indoneesh)"},
["mqb"] = {"Mbuko"},
["mqc"] = {"Mangole"},
["mqe"] = {"Matepi"},
["mqf"] = {"Momuna"},
["mqg"] = {"Mlayish Kota Bangun Kutai"},
["mqh"] = {"Mixtecish Tlazoyaltepec"},
["mqi"] = {"Mariri"},
["mqj"] = {"Mamasa"},
["mqk"] = {"Rajah Kabunsuwan Manobo"},
["mql"] = {"Mbelime"},
["mqm"] = {"Marquesish Yiass"},
["mqn"] = {"Moronene"},
["mqo"] = {"Modole"},
["mqp"] = {"Manipa"},
["mqq"] = {"Minokok"},
["mqr"] = {"Mander"},
["mqs"] = {"Makish Heear"},
["mqt"] = {"Mok"},
["mqu"] = {"Mandari"},
["mqv"] = {"Mosimo"},
["mqw"] = {"Murupi"},
["mqx"] = {"Mamuju"},
["mqy"] = {"Manggarai"},
["mqz"] = {"Pano"},
["mra"] = {"Mlabri"},
["mrb"] = {"Marino"},
["mrc"] = {"Maricopa"},
["mrd"] = {"Magar Heear"},
["mre"] = {"Çhengey Chowree Martha's Vineyard"},
["mrf"] = {"Elseng"},
["mrg"] = {"Mising"},
["mrh"] = {"Mara Chin"},
["mrj"] = {"Marish Heear"},
["mrk"] = {"Hmwaveke"},
["mrl"] = {"Mortlockish"},
["mrm"] = {"Merlav", "Mwerlap"},
["mrn"] = {"Cheke Holo"},
["mro"] = {"Mru"},
["mrp"] = {"Morouas"},
["mrq"] = {"Marquesish Hwoaie"},
["mrr"] = {"Maria (yn Injey)"},
["mrs"] = {"Maragus"},
["mrt"] = {"Marghi Veanagh"},
["mru"] = {"Mono (Cameroon)"},
["mrv"] = {"Mangareva"},
["mrw"] = {"Maranao"},
["mrx"] = {"Maremgi", "Dineor"},
["mry"] = {"Mandaya"},
["mrz"] = {"Marind"},
["msb"] = {"Masbatenyo"},
["msc"] = {"Sankaran Maninka"},
["msd"] = {"Çhengey Chowree Mayagh Yucatec"},
["mse"] = {"Musey"},
["msf"] = {"Mekwei"},
["msg"] = {"Moraid"},
["msh"] = {"Malagasish Masikoro"},
["msi"] = {"Malayish Sabah"},
["msj"] = {"Ma (Pobblaght Gheynlagh y Chongo)"},
["msk"] = {"Mansaka"},
["msl"] = {"Molof", "Poule"},
["msm"] = {"Agusan Manobo"},
["msn"] = {"Vurës"},
["mso"] = {"Mombum"},
["msp"] = {"Maritsauá"},
["msq"] = {"Caac"},
["msr"] = {"Çhengey Chowree Vongoilagh"},
["mss"] = {"Masela Heear"},
["msu"] = {"Musom"},
["msv"] = {"Maslam"},
["msw"] = {"Mansoanka"},
["msx"] = {"Moresada"},
["msy"] = {"Aruamu"},
["msz"] = {"Momare"},
["mta"] = {"Manobo Cotabato"},
["mtb"] = {"Anyin Morofo"},
["mtc"] = {"Munit"},
["mtd"] = {"Mualang"},
["mte"] = {"Mono (Ellanyn Solomon)"},
["mtf"] = {"Murik (Papooey Guinea Noa)"},
["mtg"] = {"Una"},
["mth"] = {"Munggui"},
["mti"] = {"Maiwa (Papooey Guinea Noa)"},
["mtj"] = {"Moskona"},
["mtk"] = {"Mbe'"},
["mtl"] = {"Montol"},
["mtm"] = {"Mator"},
["mtn"] = {"Matagalpa"},
["mto"] = {"Totontepec Mixe"},
["mtp"] = {"Wichí Lhamtés Nocten"},
["mtq"] = {"Muong"},
["mtr"] = {"Mewari"},
["mts"] = {"Yora"},
["mtt"] = {"Mota"},
["mtu"] = {"Mixtecish Tututepec"},
["mtv"] = {"Asaro'o"},
["mtw"] = {"Binukidnon Yiass"},
["mtx"] = {"Mixtecish Tidaá"},
["mty"] = {"Nabi"},
["mua"] = {"Mundang"},
["mub"] = {"Mubi"},
["muc"] = {"Ajumbu"},
["mud"] = {"Aleutish Mednyj"},
["mue"] = {"Media Lengua"},
["mug"] = {"Musgu"},
["muh"] = {"Mündü"},
["mui"] = {"Musi"},
["muj"] = {"Mabire"},
["muk"] = {"Mugom"},
["mul"] = {"Ymmodee çhengaghyn"},
["mum"] = {"Maiwala"},
["mun"] = {"çhengaghyn Munda"},
["muo"] = {"Nyong"},
["mup"] = {"Malvi"},
["muq"] = {"Miaoish Xiangxi Hiar"},
["mur"] = {"Murle"},
["mus"] = {"Creekish"},
["mut"] = {"Murish Heear"},
["muu"] = {"Yaaku"},
["muv"] = {"Muthuvan"},
["mux"] = {"Bo-Ung"},
["muy"] = {"Muyang"},
["muz"] = {"Mursi"},
["mva"] = {"Manam"},
["mvb"] = {"Mattole"},
["mvd"] = {"Mamboru"},
["mve"] = {"Marwari (y Phakistaan)"},
["mvf"] = {"Mongoilish Ymmyllagh"},
["mvg"] = {"Mixtecish Yucuañe"},
["mvh"] = {"Mulgi"},
["mvi"] = {"Miyako"},
["mvk"] = {"Mekmek"},
["mvl"] = {"Mbara (yn Austrail)"},
["mvn"] = {"Minaveha"},
["mvo"] = {"Marovo"},
["mvp"] = {"Duri"},
["mvq"] = {"Moere"},
["mvr"] = {"Marau"},
["mvs"] = {"Massep"},
["mvt"] = {"Mpotovoro"},
["mvu"] = {"Marfa"},
["mvv"] = {"Tagal Murut"},
["mvw"] = {"Machinga"},
["mvx"] = {"Meoswar"},
["mvy"] = {"Kohistaanish Indus"},
["mvz"] = {"Mesqan"},
["mwa"] = {"Mwatebu"},
["mwb"] = {"Juwal"},
["mwc"] = {"Are"},
["mwe"] = {"Mwera (Chimwera)"},
["mwf"] = {"Murrinh-Patha"},
["mwg"] = {"Aiklep"},
["mwh"] = {"Mouk-Aria"},
["mwi"] = {"Labo", "Ninde"},
["mwk"] = {"Maninkish Kita"},
["mwl"] = {"Mirandish"},
["mwm"] = {"Sar"},
["mwn"] = {"Nyamwanga"},
["mwo"] = {"Maewo Veanagh"},
["mwp"] = {"Kala Lagaw Ya"},
["mwq"] = {"Mün Chin"},
["mwr"] = {"Marwari"},
["mws"] = {"Mwimbi-Muthambi"},
["mwt"] = {"Moken"},
["mwu"] = {"Mittu"},
["mwv"] = {"Mentawai"},
["mww"] = {"Hmong Daw"},
["mwz"] = {"Moingi"},
["mxa"] = {"Mixtecish Oaxaca Heear Hwoaie"},
["mxb"] = {"Mixtecish Tezoatlán"},
["mxc"] = {"Manyika"},
["mxd"] = {"Modang"},
["mxe"] = {"Mele-Fila"},
["mxf"] = {"Malgbe"},
["mxg"] = {"Mbangala"},
["mxh"] = {"Mvuba"},
["mxi"] = {"Mozarabish"},
["mxj"] = {"Miju-Mishmi", "Geman Deng"},
["mxk"] = {"Monumbo"},
["mxl"] = {"Maxi Gbe"},
["mxm"] = {"Meramera"},
["mxn"] = {"Moi (yn Indoneesh)"},
["mxo"] = {"Mbowe"},
["mxp"] = {"Tlahuitoltepec Mixe"},
["mxq"] = {"Juquila Mixe"},
["mxr"] = {"Murik (y Valaysia)"},
["mxs"] = {"Mixtecish Huitepec"},
["mxt"] = {"Mixtecish Jamiltepec"},
["mxu"] = {"Mada (Cameroon)"},
["mxv"] = {"Mixtecish Metlatónoc"},
["mxw"] = {"Namo"},
["mxx"] = {"Mahou", "Mawukakan"},
["mxy"] = {"Mixtecish Nochixtlán Hiar Yiass"},
["mxz"] = {"Masela Veanagh"},
["myb"] = {"Mbay"},
["myc"] = {"Mayeka"},
["mye"] = {"Myene"},
["myf"] = {"Bambassi"},
["myg"] = {"Manta"},
["myh"] = {"Makah"},
["myj"] = {"Mangayat"},
["myk"] = {"Mamara Senoufo"},
["myl"] = {"Moma"},
["mym"] = {"Me'en"},
["myn"] = {"çhengaghyn Mayagh"},
["myo"] = {"Anfillo"},
["myp"] = {"Pirahã"},
["myr"] = {"Muniche"},
["mys"] = {"Mesmes"},
["myu"] = {"Mundurukú"},
["myv"] = {"Erzya"},
["myw"] = {"Muyuw"},
["myx"] = {"Masaaba"},
["myy"] = {"Macuna"},
["myz"] = {"Mandaish Chlassicagh"},
["mza"] = {"Mixtecish Zacatepec Santa María"},
["mzb"] = {"Tumzabt"},
["mzc"] = {"Çhengey Chowree Vadagascar"},
["mzd"] = {"Malimba"},
["mze"] = {"Morawa"},
["mzg"] = {"Çhengey Chowree Vaynaghoil"},
["mzh"] = {"Wichí Lhamtés Güisnay"},
["mzi"] = {"Mazatec Ixcatlán"},
["mzj"] = {"Manya"},
["mzk"] = {"Mambila yn Naigeer"},
["mzl"] = {"Mazatlán Mixe"},
["mzm"] = {"Mumuye"},
["mzn"] = {"Mazanderanish"},
["mzo"] = {"Matipuhy"},
["mzp"] = {"Movima"},
["mzq"] = {"Mori Atas"},
["mzr"] = {"Marúbo"},
["mzs"] = {"Macanish"},
["mzt"] = {"Mintil"},
["mzu"] = {"Inapang"},
["mzv"] = {"Manza"},
["mzw"] = {"Deg"},
["mzx"] = {"Mawayana"},
["mzy"] = {"Çhengey Chowree Vosambeeckagh"},
["mzz"] = {"Maiadomu"},
["naa"] = {"Namla"},
["nab"] = {"Nambikuára Yiass"},
["nac"] = {"Narak"},
["nae"] = {"Naka'ela"},
["naf"] = {"Nabak"},
["nag"] = {"Naga Vrisht"},
["nah"] = {"çhengaghyn Nahuatl"},
["nai"] = {"çhengaghyn Injinagh Americaanagh Hwoaie"},
["naj"] = {"Nalu"},
["nak"] = {"Nakanai"},
["nal"] = {"Nalik"},
["nam"] = {"Ngan'gityemerri"},
["nan"] = {"Sheenish Min Nan"},
["nao"] = {"Naaba"},
["nap"] = {"Naaplish"},
["naq"] = {"Khoekhoeish", "Nama (y Nameeb)"},
["nar"] = {"Iguta"},
["nas"] = {"Naasioi"},
["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"},
["naw"] = {"Nawuri"},
["nax"] = {"Nakwi"},
["nay"] = {"Ngarrindjeri"},
["naz"] = {"Nahuatl Coatepec"},
["nba"] = {"Nyemba"},
["nbb"] = {"Ndoe"},
["nbc"] = {"Chang Naga"},
["nbd"] = {"Ngbinda"},
["nbe"] = {"Konyak Naga"},
["nbg"] = {"Nagarchal"},
["nbh"] = {"Ngamo"},
["nbi"] = {"Mao Naga"},
["nbj"] = {"Ngarinyman"},
["nbk"] = {"Nake"},
["nbm"] = {"Ngbaka Ma'bo"},
["nbn"] = {"Kuri"},
["nbo"] = {"Nkukoli"},
["nbp"] = {"Nnam"},
["nbq"] = {"Nggem"},
["nbr"] = {"Numana"},
["nbs"] = {"Çhengey Chowree Nameebagh"},
["nbt"] = {"Na"},
["nbu"] = {"Rongmei Naga"},
["nbv"] = {"Ngamambo"},
["nbw"] = {"Ngbandi Yiass"},
["nby"] = {"Ningera"},
["nca"] = {"Iyo"},
["ncb"] = {"Nicobarish Veanagh"},
["ncc"] = {"Ponam"},
["ncd"] = {"Nachering"},
["nce"] = {"Yale"},
["ncf"] = {"Notsi"},
["ncg"] = {"Nisga'a"},
["nch"] = {"Nahuatl Huasteca Veanagh"},
["nci"] = {"Nahuatl Chlassicagh"},
["ncj"] = {"Nahuatl Puebla Hwoaie"},
["nck"] = {"Na-kara"},
["ncl"] = {"Nahuatl Michoacán"},
["ncm"] = {"Nambo"},
["ncn"] = {"Nauna"},
["nco"] = {"Sibe"},
["ncq"] = {"Katang Hwoaie"},
["ncr"] = {"Ncane"},
["ncs"] = {"Çhengey Chowree Nickeraagagh"},
["nct"] = {"Naga Chothe"},
["ncu"] = {"Chumburung"},
["ncx"] = {"Nahuatl Puebla Veanagh"},
["ncz"] = {"Natchez"},
["nda"] = {"Ndasa"},
["ndb"] = {"Kenswei Nsei"},
["ndc"] = {"Ndauish"},
["ndd"] = {"Nde-Nsele-Nta"},
["ndf"] = {"Nadruvish"},
["ndg"] = {"Ndengereko"},
["ndh"] = {"Ndali"},
["ndi"] = {"Samba Leko"},
["ndj"] = {"Ndamba"},
["ndk"] = {"Ndaka"},
["ndl"] = {"Ndolo"},
["ndm"] = {"Ndam"},
["ndn"] = {"Ngundi"},
["ndp"] = {"Ndo"},
["ndq"] = {"Ndombe"},
["ndr"] = {"Ndoola"},
["nds"] = {"Germaanish Injil", "Saxonish Injil"},
["ndt"] = {"Ndunga"},
["ndu"] = {"Dugun"},
["ndv"] = {"Ndut"},
["ndw"] = {"Ndobo"},
["ndx"] = {"Nduga"},
["ndy"] = {"Lutos"},
["ndz"] = {"Ndogo"},
["nea"] = {"Ngad'a Hiar"},
["neb"] = {"Toura (y Clyst Iuaagagh)"},
["nec"] = {"Nedebang"},
["ned"] = {"Nde-Gbite"},
["nee"] = {"Nêlêmwa-Nixumwak"},
["nef"] = {"Nefamese"},
["neg"] = {"Negidal"},
["neh"] = {"Nyenkha"},
["nei"] = {"Noa-Hittish"},
["nej"] = {"Neko"},
["nek"] = {"Neku"},
["nem"] = {"Nemi"},
["nen"] = {"Nengone"},
["neo"] = {"Ná-Meo"},
["neq"] = {"Mixe Veanagh Hwoaie"},
["ner"] = {"Yahadish"},
["nes"] = {"Kinnaurish Bhoti"},
["net"] = {"Nete"},
["neu"] = {"Neo"},
["nev"] = {"Nyaheun"},
["new"] = {"Newari", "Nepal Bhasa"},
["nex"] = {"Neme"},
["ney"] = {"Neyo"},
["nez"] = {"Nez Perce"},
["nfa"] = {"Dhao"},
["nfd"] = {"Ahwai"},
["nfl"] = {"Ayiwo", "Äiwoo"},
["nfr"] = {"Nafaanra"},
["nfu"] = {"Mfumte"},
["nga"] = {"Ngbaka"},
["ngb"] = {"Ngbandi Hwoaie"},
["ngc"] = {"Ngombe (Pobblaght Gheynlagh y Chongo)"},
["ngd"] = {"Ngando (Pobblaght yn Affrick Veanagh)"},
["nge"] = {"Ngemba"},
["ngf"] = {"çhengaghyn tessen-Noa-Ghuineagh"},
["ngg"] = {"Ngbaka Manza"},
["ngh"] = {"Nǁng"},
["ngi"] = {"Ngizim"},
["ngj"] = {"Ngie"},
["ngk"] = {"Dalabon"},
["ngl"] = {"Lomwe"},
["ngm"] = {"Creeole Fir Ngatik"},
["ngn"] = {"Ngwo"},
["ngp"] = {"Ngulu"},
["ngq"] = {"Ngurimi", "Ngoreme"},
["ngr"] = {"Engdewu"},
["ngs"] = {"Gvoko"},
["ngt"] = {"Kriang", "Ngeq"},
["ngu"] = {"Nahuatl Guerrero"},
["ngv"] = {"Nagumi"},
["ngw"] = {"Ngwaba"},
["ngx"] = {"Nggwahyi"},
["ngy"] = {"Tibea"},
["ngz"] = {"Ngungwel"},
["nha"] = {"Nhanda"},
["nhb"] = {"Beng"},
["nhc"] = {"Nahuatl Tabasco"},
["nhd"] = {"Chiripá", "Guaranish Ava"},
["nhe"] = {"Nahuatl Huasteca Hiar"},
["nhf"] = {"Nhuwala"},
["nhg"] = {"Nahuatl Tetelcingo"},
["nhh"] = {"Nahari"},
["nhi"] = {"Nahuatl Zacatlán-Ahuacatlán-Tepetzintla"},
["nhk"] = {"Nahuatl Isthmus-Cosoleacaque"},
["nhm"] = {"Nahuatl Morelos"},
["nhn"] = {"Nahuatl Veanagh"},
["nho"] = {"Takuu"},
["nhp"] = {"Nahuatl Isthmus-Pajapan"},
["nhq"] = {"Nahuatl Huaxcaleca"},
["nhr"] = {"Naro"},
["nht"] = {"Nahuatl Ometepec"},
["nhu"] = {"Noone"},
["nhv"] = {"Nahuatl Temascaltepec"},
["nhw"] = {"Nahuatl Huasteca Heear"},
["nhx"] = {"Nahuatl Isthmus-Mecayapan"},
["nhy"] = {"Nahuatl Oaxaca Hwoaie"},
["nhz"] = {"Nahuatl Santa María La Alta"},
["nia"] = {"Nias"},
["nib"] = {"Nakame"},
["nic"] = {"çhengaghyn Neegeyr-Kordofanagh"},
["nid"] = {"Ngandi"},
["nie"] = {"Niellim"},
["nif"] = {"Nek"},
["nig"] = {"Ngalakgan"},
["nih"] = {"Nyiha (Tanzania)"},
["nii"] = {"Nii"},
["nij"] = {"Ngaju"},
["nik"] = {"Nicobarish Yiass"},
["nil"] = {"Nila"},
["nim"] = {"Nilamba"},
["nin"] = {"Ninzo"},
["nio"] = {"Nganasanish"},
["niq"] = {"Nandi"},
["nir"] = {"Nimborish"},
["nis"] = {"Nimi"},
["nit"] = {"Kolamish Hiar Yiass"},
["niu"] = {"Niuean"},
["niv"] = {"Gilyakish"},
["niw"] = {"Nimo"},
["nix"] = {"Hema"},
["niy"] = {"Ngiti"},
["niz"] = {"Ningil"},
["nja"] = {"Nzanyi"},
["njb"] = {"Naga Nocte"},
["njd"] = {"Ndonde Hamba"},
["njh"] = {"Naga Lotha"},
["nji"] = {"Gudanji"},
["njj"] = {"Njen"},
["njl"] = {"Njalgulgule"},
["njm"] = {"Angami Naga"},
["njn"] = {"Naga Liangmai"},
["njo"] = {"Naga Ao"},
["njr"] = {"Njerep"},
["njs"] = {"Nisa"},
["njt"] = {"Ndyuka-Trio Vrisht"},
["nju"] = {"Ngadjunmaya"},
["njx"] = {"Kunyi"},
["njy"] = {"Njyem"},
["njz"] = {"Nyishi"},
["nka"] = {"Nkoya"},
["nkb"] = {"Naga Khoibu"},
["nkc"] = {"Nkongho"},
["nkd"] = {"Koireng"},
["nke"] = {"Duke"},
["nkf"] = {"Naga Inpui"},
["nkg"] = {"Nekgini"},
["nkh"] = {"Naga Khezha"},
["nki"] = {"Naga Thangal"},
["nkj"] = {"Nakai"},
["nkk"] = {"Nokuku"},
["nkm"] = {"Namat"},
["nkn"] = {"Nkangala"},
["nko"] = {"Nkonya"},
["nkp"] = {"Niuatoputapu"},
["nkq"] = {"Nkami"},
["nkr"] = {"Nukuoro"},
["nks"] = {"Asmat Hwoaie"},
["nkt"] = {"Nyika (Tanzania)"},
["nku"] = {"Bouna Kulango"},
["nkv"] = {"Nyika (Malawi as y Tambia)"},
["nkw"] = {"Nkutu"},
["nkx"] = {"Nkoroo"},
["nkz"] = {"Nkari"},
["nla"] = {"Ngombale"},
["nlc"] = {"Nalca"},
["nle"] = {"Nyala Hiar"},
["nlg"] = {"Gela"},
["nli"] = {"Grangali"},
["nlj"] = {"Nyali"},
["nlk"] = {"Ninia Yali"},
["nll"] = {"Nihali"},
["nlm"] = {"Mankiyali"},
["nlo"] = {"Ngul"},
["nlq"] = {"Naga Lao"},
["nlu"] = {"Nchumbulu"},
["nlv"] = {"Orizaba Nahuatl"},
["nlw"] = {"Walangama"},
["nlx"] = {"Nahali"},
["nly"] = {"Nyamal"},
["nlz"] = {"Nalögo"},
["nma"] = {"Naga Maram"},
["nmb"] = {"Nambas Vooar", "V'ënen Taut"},
["nmc"] = {"Ngam"},
["nmd"] = {"Ndumu"},
["nme"] = {"Naga Mzieme"},
["nmf"] = {"Naga Tangkhul (yn Injey)"},
["nmg"] = {"Kwasio"},
["nmh"] = {"Naga Monsang"},
["nmi"] = {"Nyam"},
["nmj"] = {"Ngombe (Pobblaght yn Affrick Veanagh)"},
["nmk"] = {"Namakura"},
["nml"] = {"Ndemli"},
["nmm"] = {"Manangba"},
["nmn"] = {"ǃXóõ"},
["nmo"] = {"Naga Moyon"},
["nmp"] = {"Nimanbur"},
["nmq"] = {"Nambya"},
["nmr"] = {"Nimbari"},
["nms"] = {"Letemboi"},
["nmt"] = {"Namonuito"},
["nmu"] = {"Maidu Hiar Hwoaie"},
["nmv"] = {"Ngamini"},
["nmw"] = {"Nimoa", "Rifao"},
["nmx"] = {"Nama (Papooey Guinea Noa)"},
["nmy"] = {"Namuyi"},
["nmz"] = {"Nawdm"},
["nna"] = {"Nyangumarta"},
["nnb"] = {"Nande"},
["nnc"] = {"Nancere"},
["nnd"] = {"Ambae Heear"},
["nne"] = {"Ngandyera"},
["nnf"] = {"Ngaing"},
["nng"] = {"Naga Maring"},
["nnh"] = {"Ngiemboon"},
["nni"] = {"Nuaulu Hwoaie"},
["nnj"] = {"Nyangatom"},
["nnk"] = {"Nankina"},
["nnl"] = {"Naga Rengma Hwoaie "},
["nnm"] = {"Namia"},
["nnn"] = {"Ngete"},
["nnp"] = {"Naga Wancho"},
["nnq"] = {"Ngindo"},
["nnr"] = {"Narungga"},
["nnt"] = {"Nanticoke"},
["nnu"] = {"Dwang"},
["nnv"] = {"Nugunu (yn Austrail)"},
["nnw"] = {"Nuni Yiass"},
["nny"] = {"Nyangga"},
["nnz"] = {"Nda'nda'"},
["noa"] = {"Woun Meu"},
["noc"] = {"Nuk"},
["nod"] = {"Thai Hwoaie"},
["noe"] = {"Nimadi"},
["nof"] = {"Nomane"},
["nog"] = {"Nogaish"},
["noh"] = {"Nomu"},
["noi"] = {"Noiri"},
["noj"] = {"Nonuya"},
["nok"] = {"Nooksack"},
["nol"] = {"Nomlaki"},
["non"] = {"Shenn Loghlynnish"},
["nop"] = {"Numanggang"},
["noq"] = {"Ngongo"},
["nos"] = {"Nisu Hiar"},
["not"] = {"Nomatsiguenga"},
["nou"] = {"Ewage-Notu"},
["nov"] = {"Novial"},
["now"] = {"Nyambo"},
["noy"] = {"Noy"},
["noz"] = {"Nayi"},
["npa"] = {"Nar Phu"},
["npb"] = {"Nupbikha"},
["npg"] = {"Naga Ponyo-Gongwang"},
["nph"] = {"Naga Phom"},
["npi"] = {"Nepaalish"},
["npl"] = {"Nahuatl Puebla Hiar Yiass"},
["npn"] = {"Mondropolon"},
["npo"] = {"Naga Pochuri"},
["nps"] = {"Nipsan"},
["npu"] = {"Naga Puimei"},
["npx"] = {"Noipx"},
["npy"] = {"Napu"},
["nqg"] = {"Nago Yiass"},
["nqk"] = {"Kura Ede Nago"},
["nql"] = {"Ngendelengo"},
["nqm"] = {"Ndom"},
["nqn"] = {"Nen"},
["nqo"] = {"N'Ko", "N’Ko"},
["nqq"] = {"Naga Kyan-Karyaw"},
["nqt"] = {"Nteng"},
["nqy"] = {"Naga Akyaung Ari"},
["nra"] = {"Ngom"},
["nrb"] = {"Nara"},
["nrc"] = {"Norish"},
["nre"] = {"Naga Rengma Yiass"},
["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"},
["nrg"] = {"Narango"},
["nri"] = {"Naga Chokri"},
["nrk"] = {"Ngarla"},
["nrl"] = {"Ngarluma"},
["nrm"] = {"Narom"},
["nrn"] = {"Nornish"},
["nrp"] = {"Picenish Hwoaie"},
["nrr"] = {"Norra", "Nora"},
["nrt"] = {"Kalapuya Hwoaie"},
["nru"] = {"Narua"},
["nrx"] = {"Ngurmbur"},
["nrz"] = {"Lala"},
["nsa"] = {"Naga Sangtam"},
["nsb"] = {"Nossob Injil"},
["nsc"] = {"Nshi"},
["nsd"] = {"Nisu Yiass"},
["nse"] = {"Nsenga"},
["nsf"] = {"Nisu Heear Hwoaie"},
["nsg"] = {"Ngasa"},
["nsh"] = {"Ngoshie"},
["nsi"] = {"Çhengey Chowree Naigeeragh"},
["nsk"] = {"Naskapi"},
["nsl"] = {"Çhengey Chowree Norlynnagh"},
["nsm"] = {"Naga Sumi"},
["nsn"] = {"Nehan"},
["nso"] = {"Pedish", "Sotoish Hwoaie", "Sepedi"},
["nsp"] = {"Çhengey Chowree Nepaalagh"},
["nsq"] = {"Miwokish Sierra Hwoaie"},
["nsr"] = {"Çhengey Chowree Vooiragh"},
["nss"] = {"Nali"},
["nst"] = {"Naga Tase"},
["nsu"] = {"Nahuatl Sierra Negra"},
["nsv"] = {"Nisu Heear Yiass"},
["nsw"] = {"Navut"},
["nsx"] = {"Nsongo"},
["nsy"] = {"Nasal"},
["nsz"] = {"Nisenan"},
["ntd"] = {"Tidung Hwoaie"},
["nte"] = {"Nathembo"},
["ntg"] = {"Ngantangarra"},
["nti"] = {"Natioro"},
["ntj"] = {"Ngaanyatjarra"},
["ntk"] = {"Ikoma-Nata-Isenye"},
["ntm"] = {"Nateni"},
["nto"] = {"Ntomba"},
["ntp"] = {"Tepehuan Hwoaie"},
["ntr"] = {"Delo"},
["ntu"] = {"Natügu"},
["ntw"] = {"Nottoway"},
["ntx"] = {"Naga Tangkhul (Myanmar)"},
["nty"] = {"Mantsi"},
["ntz"] = {"Natanzi"},
["nua"] = {"Yuanga"},
["nub"] = {"çhengaghyn Nubiagh"},
["nuc"] = {"Nukuini"},
["nud"] = {"Ngala"},
["nue"] = {"Ngundu"},
["nuf"] = {"Nusu"},
["nug"] = {"Nungali"},
["nuh"] = {"Ndunda"},
["nui"] = {"Ngumbi"},
["nuj"] = {"Nyole"},
["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"},
["nul"] = {"Nusa Laut"},
["num"] = {"Niuafo'ou"},
["nun"] = {"Anong"},
["nuo"] = {"Nguôn"},
["nup"] = {"Nupe-Nupe-Tako"},
["nuq"] = {"Nukumanu"},
["nur"] = {"Nukuria"},
["nus"] = {"Nuer"},
["nut"] = {"Nung (Viet Nam)"},
["nuu"] = {"Ngbundu"},
["nuv"] = {"Nuni Hwoaie"},
["nuw"] = {"Nguluwan"},
["nux"] = {"Mehek"},
["nuy"] = {"Nunggubuyu"},
["nuz"] = {"Nahuatl Tlamacazapa"},
["nvh"] = {"Nasarish"},
["nvm"] = {"Namiae"},
["nvo"] = {"Nyokon"},
["nwa"] = {"Nawathinehena"},
["nwb"] = {"Nyabwa"},
["nwc"] = {"Newarish Chlassicagh", "Nepal Bhasa Chlassicagh", "Shenn Newarish"},
["nwe"] = {"Ngwe"},
["nwg"] = {"Ngayawung"},
["nwi"] = {"Tanna Heear Yiass"},
["nwm"] = {"Nyamusa-Molo"},
["nwo"] = {"Nauo"},
["nwr"] = {"Nawaru"},
["nww"] = {"Ndwewe"},
["nwx"] = {"Newarish Veanagh"},
["nwy"] = {"Nottoway-Meherrin"},
["nxa"] = {"Nauete"},
["nxd"] = {"Ngando (Pobblaght Gheynlagh y Chongo)"},
["nxe"] = {"Nage"},
["nxg"] = {"Ngad'a"},
["nxi"] = {"Nindi"},
["nxk"] = {"Naga Koki"},
["nxl"] = {"Nuaulu Yiass"},
["nxm"] = {"Numidish"},
["nxn"] = {"Ngawun"},
["nxo"] = {"Ndambomo"},
["nxq"] = {"Naxi"},
["nxr"] = {"Ninggerum"},
["nxx"] = {"Nafri"},
["nyb"] = {"Nyangbo"},
["nyc"] = {"Nyanga-li"},
["nyd"] = {"Nyore", "Olunyole"},
["nye"] = {"Nyengo"},
["nyf"] = {"Giryama", "Kigiryama"},
["nyg"] = {"Nyindu"},
["nyh"] = {"Nyikina"},
["nyi"] = {"Ama (y Toodaan)"},
["nyj"] = {"Nyanga"},
["nyk"] = {"Nyaneka"},
["nyl"] = {"Nyeu"},
["nym"] = {"Nyamwezi"},
["nyn"] = {"Nyankole"},
["nyo"] = {"Nyoro"},
["nyp"] = {"Nyang'i"},
["nyq"] = {"Nayini"},
["nyr"] = {"Nyiha (Malawi)"},
["nys"] = {"Nyungar"},
["nyt"] = {"Nyawaygi"},
["nyu"] = {"Nyungwe"},
["nyv"] = {"Nyulnyul"},
["nyw"] = {"Nyaw"},
["nyx"] = {"Nganyaywana"},
["nyy"] = {"Nyakyusa-Ngonde"},
["nza"] = {"Tigon Mbembe"},
["nzb"] = {"Njebi"},
["nzd"] = {"Nzadi"},
["nzi"] = {"Nzima"},
["nzk"] = {"Nzakara"},
["nzm"] = {"Zeme Naga"},
["nzr"] = {"Dir-Nyamzak-Mbarimi"},
["nzs"] = {"Çhengey Chowree Noa-Heelynnagh"},
["nzu"] = {"Teke-Nzikou"},
["nzy"] = {"Nzakambay"},
["nzz"] = {"Nanga Dama Dogon"},
["oaa"] = {"Orok"},
["oac"] = {"Oroch"},
["oar"] = {"Shenn Aramaaish (derrey 700 RC)", "Aramaaish Henndeeagh (derrey 700 RC)"},
["oav"] = {"Shenn Avarish"},
["obi"] = {"Obispeño"},
["obk"] = {"Bontok Yiass"},
["obl"] = {"Oblo"},
["obm"] = {"Moabite"},
["obo"] = {"Obo Manobo"},
["obr"] = {"Shenn Vurmish"},
["obt"] = {"Shenn Vritaanish"},
["obu"] = {"Obulom"},
["oca"] = {"Ocaina"},
["och"] = {"Shenn Heenish"},
["ocm"] = {"Shenn Cham"},
["oco"] = {"Shenn Chornish"},
["ocu"] = {"Atzingo Matlatzinca"},
["oda"] = {"Odut"},
["odk"] = {"Od"},
["odt"] = {"Shenn Ollanish"},
["odu"] = {"Odual"},
["ofo"] = {"Ofo"},
["ofs"] = {"Shenn Reeshlannish"},
["ofu"] = {"Efutop"},
["ogb"] = {"Ogbia"},
["ogc"] = {"Ogbah"},
["oge"] = {"Shenn Horshish"},
["ogg"] = {"Ogbogolo"},
["ogo"] = {"Khana"},
["ogu"] = {"Ogbronuagum"},
["oht"] = {"Shenn Hittish"},
["ohu"] = {"Shenn Ungaarish"},
["oia"] = {"Oirata"},
["oie"] = {"Okolie"},
["oin"] = {"Inebu One"},
["ojb"] = {"OjibwaHeear Hwoaie"},
["ojc"] = {"Ojibwa Veanagh"},
["ojg"] = {"Ojibwa Hiar"},
["ojp"] = {"Shenn Hapaanish"},
["ojs"] = {"Ojibwa Severn"},
["ojv"] = {"Javish Ontong"},
["ojw"] = {"Ojibwa Heear"},
["oka"] = {"Okanagan"},
["okb"] = {"Okobo"},
["okc"] = {"Kobo"},
["okd"] = {"Okodia"},
["oke"] = {"Okpe (Edo Heear Yiass)"},
["okg"] = {"Koko Babangk"},
["okh"] = {"Koresh-e Rostam"},
["oki"] = {"Okiek"},
["okj"] = {"Oko-Juwoi"},
["okk"] = {"Kwamtim One"},
["okl"] = {"Shenn Çhengey Chowree Kent"},
["okm"] = {"Koreeish Veanagh (10oo-16oo eash)"},
["okn"] = {"Oki-No-Erabu"},
["oko"] = {"Shenn Choreeish (3oo-9oo eash)"},
["okr"] = {"Kirike"},
["oks"] = {"Oko-Eni-Osayen"},
["oku"] = {"Oku"},
["okv"] = {"Orokaiva"},
["okx"] = {"Okpe (Edo Heear Hwoaie)"},
["okz"] = {"Shenn Khmerish"},
["ola"] = {"Walungge"},
["old"] = {"Mochi"},
["ole"] = {"Olekha"},
["olk"] = {"Olkol"},
["olm"] = {"Oloma"},
["olo"] = {"Livvish"},
["olr"] = {"Olrat"},
["olt"] = {"Shenn Litaanish"},
["olu"] = {"Kuvale"},
["oma"] = {"Omaha-Ponca"},
["omb"] = {"Ambae Hiar"},
["omc"] = {"Mochica"},
["omg"] = {"Omagua"},
["omi"] = {"Omi"},
["omk"] = {"Omok"},
["oml"] = {"Ombo"},
["omn"] = {"Minoan"},
["omo"] = {"Utarmbung"},
["omp"] = {"Shenn Vanipurish"},
["omq"] = {"çhengaghyn Oto-Mangueagh"},
["omr"] = {"Shenn Varathish"},
["omt"] = {"Omotik"},
["omu"] = {"Omurano"},
["omv"] = {"çhengaghyn Omotagh"},
["omw"] = {"Tairora Yiass"},
["omx"] = {"Shenn Mon"},
["omy"] = {"Shenn Valayish"},
["ona"] = {"Ona"},
["onb"] = {"Lingao"},
["one"] = {"Oneida"},
["ong"] = {"Olo"},
["oni"] = {"Onin"},
["onj"] = {"Onjob"},
["onk"] = {"Kabore One"},
["onn"] = {"Onobasulu"},
["ono"] = {"Onondaga"},
["onp"] = {"Sartang"},
["onr"] = {"One Hwoaie"},
["ons"] = {"Ono"},
["ont"] = {"Ontenu"},
["onu"] = {"Unua"},
["onw"] = {"Shenn Nubish"},
["onx"] = {"Onin Vrisht"},
["ood"] = {"Tohono O'odham"},
["oog"] = {"Ong"},
["oon"] = {"Önge"},
["oor"] = {"Oorlams"},
["oos"] = {"Shenn Ossetish"},
["opa"] = {"Okpamheri"},
["opk"] = {"Kopkaka"},
["opm"] = {"Oksapmin"},
["opo"] = {"Opao"},
["opt"] = {"Opata"},
["opy"] = {"Ofayé"},
["ora"] = {"Oroha"},
["orc"] = {"Orma"},
["ore"] = {"Orejón"},
["org"] = {"Oring"},
["orh"] = {"Oroqen"},
["orn"] = {"Orang Kanaq"},
["oro"] = {"Orokolo"},
["orr"] = {"Oruma"},
["ors"] = {"Orang Seletar"},
["ort"] = {"Adivasi Oriya"},
["oru"] = {"Ormuri"},
["orv"] = {"Shenn Rooshish"},
["orw"] = {"Oro Win"},
["orx"] = {"Oro"},
["ory"] = {"Odish (çhengey er lheh)", "Oriyish (çhengey er lheh)"},
["orz"] = {"Ormu"},
["osa"] = {"Osage"},
["osc"] = {"Oscan"},
["osi"] = {"Osing"},
["osn"] = {"Shenn Hundanish"},
["oso"] = {"Ososo"},
["osp"] = {"Shenn Spaainish"},
["ost"] = {"Osatu"},
["osu"] = {"One Yiass"},
["osx"] = {"Shenn Haxonish"},
["ota"] = {"Turkish Ottomanagh (1500-1928)"},
["otb"] = {"Shenn Tibetish"},
["otd"] = {"Ot Danum"},
["ote"] = {"Otomi Mezquital"},
["oti"] = {"Oti"},
["otk"] = {"Shenn Turkish"},
["otl"] = {"Otomi Tilapa"},
["otm"] = {"Otomi Sleitoil Hiar"},
["otn"] = {"Otomi Tenango"},
["oto"] = {"çhengaghyn Otomagh"},
["otq"] = {"Otomi Querétaro"},
["otr"] = {"Otoro"},
["ots"] = {"Otomi Estado de México"},
["ott"] = {"Otomi Temoaya"},
["otu"] = {"Otuke"},
["otw"] = {"Ottawa"},
["otx"] = {"Otomi Texcatepec"},
["oty"] = {"Shenn Tamilish"},
["otz"] = {"Otomi Ixtenco"},
["oua"] = {"Tagargrent"},
["oub"] = {"Glio-Oubi"},
["oue"] = {"Oune"},
["oui"] = {"Shenn Uighurish"},
["oum"] = {"Ouma"},
["ovd"] = {"Elfdalish", "Övdalish"},
["owi"] = {"Owiniga"},
["owl"] = {"Shenn Vretnish"},
["oyb"] = {"Oy"},
["oyd"] = {"Oyda"},
["oym"] = {"Wayampi"},
["oyy"] = {"Oya'oya"},
["ozm"] = {"Koonzime"},
["paa"] = {"çhengaghyn Papooagh"},
["pab"] = {"Parecís"},
["pac"] = {"Pacoh"},
["pad"] = {"Paumarí"},
["pae"] = {"Pagibete"},
["paf"] = {"Paranawát"},
["pag"] = {"Pangasinan"},
["pah"] = {"Tenharim"},
["pai"] = {"Pe"},
["pak"] = {"Parakanã"},
["pal"] = {"Pahlavi"},
["pam"] = {"Pampanga", "Kapampangan"},
["pao"] = {"Paiute Hwoaie"},
["pap"] = {"Papiamento"},
["paq"] = {"Parya"},
["par"] = {"Panamint", "Timbisha"},
["pas"] = {"Papasena"},
["pau"] = {"Palauish"},
["pav"] = {"Pakaásnovos"},
["paw"] = {"Pawneeish"},
["pax"] = {"Pankararé"},
["pay"] = {"Pech"},
["paz"] = {"Pankararú"},
["pbb"] = {"Páez"},
["pbc"] = {"Patamona"},
["pbe"] = {"Popoloca Mezontla"},
["pbf"] = {"Popoloca Coyotepec"},
["pbg"] = {"Paraujano"},
["pbh"] = {"E'ñapa Woromaipu"},
["pbi"] = {"Parkwa"},
["pbl"] = {"Mak (y Naigeer)"},
["pbm"] = {"Mazatec Puebla"},
["pbn"] = {"Kpasam"},
["pbo"] = {"Papel"},
["pbp"] = {"Badyara"},
["pbr"] = {"Pangwa"},
["pbs"] = {"Pame Veanagh"},
["pbt"] = {"Pashtish Yiass"},
["pbu"] = {"Pashtish Hwoaie"},
["pbv"] = {"Pnar"},
["pby"] = {"Pyu (Papooey Guinea Noa)"},
["pca"] = {"Popoloca Ahuatempan Santa Inés"},
["pcb"] = {"Pear"},
["pcc"] = {"Bouyei"},
["pcd"] = {"Picardish"},
["pce"] = {"Ruching Palaung"},
["pcf"] = {"Paliyan"},
["pcg"] = {"Paniya"},
["pch"] = {"Pardhan"},
["pci"] = {"Duruwa"},
["pcj"] = {"Parenga"},
["pck"] = {"Paite Chin"},
["pcl"] = {"Pardhi"},
["pcm"] = {"Naigeerish Vrisht"},
["pcn"] = {"Piti"},
["pcp"] = {"Pacahuara"},
["pcw"] = {"Pyapun"},
["pda"] = {"Anam"},
["pdc"] = {"Germaanish Pennsylvania"},
["pdi"] = {"Pa Di"},
["pdn"] = {"Podena", "Fedan"},
["pdo"] = {"Padoe"},
["pdt"] = {"Plautdietsch"},
["pdu"] = {"Kayan"},
["pea"] = {"Indoneeshish Peranakan"},
["peb"] = {"Pomo Hiar"},
["ped"] = {"Mala (Papooey Guinea Noa)"},
["pee"] = {"Taje"},
["pef"] = {"Pomo Hiar Hwoaie"},
["peg"] = {"Pengo"},
["peh"] = {"Bonan"},
["pei"] = {"Chichimeca-Jonaz"},
["pej"] = {"Pomo Hwoaie"},
["pek"] = {"Penchal"},
["pel"] = {"Pekal"},
["pem"] = {"Phende"},
["peo"] = {"Shenn Phershish (ca. 600-400 RC)"},
["pep"] = {"Kunja"},
["peq"] = {"Pomo Yiass"},
["pes"] = {"Pershish Eeraanagh"},
["pev"] = {"Pémono"},
["pex"] = {"Petats"},
["pey"] = {"Petjo"},
["pez"] = {"Penan Hiar"},
["pfa"] = {"Pááfang"},
["pfe"] = {"Pere"},
["pfl"] = {"Pfaelzisch"},
["pga"] = {"Creeole Arabish Soodaanagh"},
["pgd"] = {"Gāndhārī"},
["pgg"] = {"Pangwali"},
["pgi"] = {"Pagi"},
["pgk"] = {"Rerep"},
["pgl"] = {"Yernish Vunneydagh"},
["pgn"] = {"Paelignian"},
["pgs"] = {"Pangseng"},
["pgu"] = {"Pagu"},
["pgz"] = {"Çhengey Phapooey Guinea Noa"},
["pha"] = {"Pa-Hng"},
["phd"] = {"Phudagi"},
["phg"] = {"Phuong"},
["phh"] = {"Phukha"},
["phi"] = {"çhengaghyn Philippeenagh"},
["phj"] = {"Pahari"},
["phk"] = {"Phake"},
["phl"] = {"Phalura", "Palula"},
["phm"] = {"Phimbi"},
["phn"] = {"çhengaghyn Feaneeckagh"},
["pho"] = {"Phunoi"},
["phq"] = {"Phana'"},
["phr"] = {"Pahari-Potwari"},
["pht"] = {"Thai Phu"},
["phu"] = {"Phuan"},
["phv"] = {"Pahlavanish"},
["phw"] = {"Phangduwali"},
["pia"] = {"Pima Bajo"},
["pib"] = {"Yine"},
["pic"] = {"Pinji"},
["pid"] = {"Piaroa"},
["pie"] = {"Piro"},
["pif"] = {"Pingelapish"},
["pig"] = {"Pisabo"},
["pih"] = {"Pitcairn-Norfolk"},
["pij"] = {"Pijao"},
["pil"] = {"Yom"},
["pim"] = {"Powhatanish"},
["pin"] = {"Piame"},
["pio"] = {"Piapoco"},
["pip"] = {"Pero"},
["pir"] = {"Piratapuyo"},
["pis"] = {"Pijin"},
["pit"] = {"Pitta Pitta"},
["piu"] = {"Pintupi-Luritja"},
["piv"] = {"Pileni", "Vaeakau-Taumako"},
["piw"] = {"Pimbwe"},
["pix"] = {"Piu"},
["piy"] = {"Piya-Kwonci"},
["piz"] = {"Pije"},
["pjt"] = {"Pitjantjatjara"},
["pka"] = {"Ardhamāgadhī Prākrit"},
["pkb"] = {"Pokomo", "Kipfokomo"},
["pkc"] = {"Paekche"},
["pkg"] = {"Pak-Tong"},
["pkh"] = {"Pankhu"},
["pkn"] = {"Pakanha"},
["pko"] = {"Pökoot"},
["pkp"] = {"Pukapuka"},
["pkr"] = {"Attapady Kurumba"},
["pks"] = {"Çhengey Chowree Phakistaanagh"},
["pkt"] = {"Maleng"},
["pku"] = {"Paku"},
["pla"] = {"Miani"},
["plb"] = {"Polonombauk"},
["plc"] = {"Palawano Veanagh"},
["pld"] = {"Polari"},
["ple"] = {"Palu'e"},
["plf"] = {"çhengaghyn Malayo-Pholaneeshagh Meanagh"},
["plg"] = {"Pilagá"},
["plh"] = {"Paulohi"},
["plk"] = {"Shina Kohistan"},
["pll"] = {"Shwe Palaung"},
["pln"] = {"Palenquero"},
["plo"] = {"Popoluca Oluta"},
["plq"] = {"Palaic"},
["plr"] = {"Palaka Senoufo"},
["pls"] = {"Popoloca Tlacoyalco San Marcos", "Popoloca Tlalcoyalco San Marcos"},
["plt"] = {"Malagasish yn Ard-chlaare"},
["plu"] = {"Palikúr"},
["plv"] = {"Palawano Heear Yiass"},
["plw"] = {"Palawano Brooke's Point"},
["ply"] = {"Bolyu"},
["plz"] = {"Paluan"},
["pma"] = {"Paama"},
["pmb"] = {"Pambia"},
["pmd"] = {"Pallanganmiddang"},
["pme"] = {"Pwaamei"},
["pmf"] = {"Pamona"},
["pmh"] = {"Māhārāṣṭri Prākrit"},
["pmi"] = {"Pumi Hwoaie"},
["pmj"] = {"Pumi Yiass"},
["pml"] = {"Lingua Franca"},
["pmm"] = {"Pomo"},
["pmn"] = {"Pam"},
["pmo"] = {"Pom"},
["pmq"] = {"Pame Hwoaie"},
["pmr"] = {"Paynamar"},
["pms"] = {"Piedmontish"},
["pmt"] = {"Tuamotuan"},
["pmw"] = {"Miwokish ny Strahyn"},
["pmx"] = {"Naga Poumei"},
["pmy"] = {"Malayish Phapooagh"},
["pmz"] = {"Pame Yiass"},
["pna"] = {"Punan Bah-Biau"},
["pnb"] = {"Panjabish Heear"},
["pnc"] = {"Pannei"},
["pnd"] = {"Mpinda"},
["pne"] = {"Penan Heear"},
["png"] = {"Pangu", "Pongu"},
["pnh"] = {"Penrhyn"},
["pni"] = {"Aoheng"},
["pnj"] = {"Pinjarup"},
["pnk"] = {"Paunaka"},
["pnl"] = {"Paleni"},
["pnm"] = {"Punan Batu 1"},
["pnn"] = {"Pinai-Hagahai"},
["pno"] = {"Panobo"},
["pnp"] = {"Pancana"},
["pnq"] = {"Pana (Burkina Faso)"},
["pnr"] = {"Panim"},
["pns"] = {"Ponosakan"},
["pnt"] = {"Pontish"},
["pnu"] = {"Jiongnai Bunu"},
["pnv"] = {"Pinigura"},
["pnw"] = {"Banyjima", "Panytyima"},
["pnx"] = {"Phong-Kniang"},
["pny"] = {"Pinyin"},
["pnz"] = {"Pana (Pobblaght yn Affrick Veanagh)"},
["poc"] = {"Poqomam"},
["poe"] = {"Popoloca Atzingo San Juan"},
["pof"] = {"Poke"},
["pog"] = {"Potiguára"},
["poh"] = {"Poqomchi'"},
["poi"] = {"Popoluca Sleitoil"},
["pok"] = {"Pokangá"},
["pom"] = {"Pomo Hiar Yiass"},
["pon"] = {"Pohnpeish"},
["poo"] = {"Pomo Veanagh"},
["pop"] = {"Pwapwâ"},
["poq"] = {"Popoloca Texistepec"},
["pos"] = {"Popoloca Sayula"},
["pot"] = {"Potawatomi"},
["pov"] = {"Crioulo Ghuinea Eaghtyragh"},
["pow"] = {"Popoluca Otlaltepec San Felipe"},
["pox"] = {"Polabish"},
["poy"] = {"Pogolo"},
["poz"] = {"çhengaghyn Malayo-Pholaneeshagh"},
["ppe"] = {"Papi"},
["ppi"] = {"Paipai"},
["ppk"] = {"Uma"},
["ppl"] = {"Pipil", "Nicarao"},
["ppm"] = {"Papuma"},
["ppn"] = {"Papapana"},
["ppo"] = {"Folopa"},
["ppp"] = {"Pelende"},
["ppq"] = {"Pei"},
["pps"] = {"Popoloca Temalacayuca San Luís"},
["ppt"] = {"Pare"},
["ppu"] = {"Papora"},
["pqa"] = {"Pa'a"},
["pqe"] = {"çhengaghyn Malayo-Pholaneeshagh Hiar"},
["pqm"] = {"Malecite-Passamaquoddy"},
["pqw"] = {"çhengaghyn Malayo-Pholaneeshagh Heear"},
["pra"] = {"çhengaghyn Prakrit"},
["prc"] = {"Parachi"},
["prd"] = {"Parsish-Darish"},
["pre"] = {"Principensish"},
["prf"] = {"Paranan"},
["prg"] = {"Prooshish"},
["prh"] = {"Porohanon"},
["pri"] = {"Paicî"},
["prk"] = {"Parauk"},
["prl"] = {"Çhengey Chowree Pherooagh"},
["prm"] = {"Kibiri"},
["prn"] = {"Prasuni"},
["pro"] = {"Shenn Provençal (derrey 1500)", "Shenn Ocsitaanish (derrey 1500)"},
["prq"] = {"Ashéninka Perené"},
["prr"] = {"Puri"},
["prs"] = {"Darish", "Pershish Afghaanagh"},
["prt"] = {"Phai"},
["pru"] = {"Puragi"},
["prw"] = {"Parawen"},
["prx"] = {"Purik"},
["prz"] = {"Çhengey Chowree Providencia"},
["psa"] = {"Asue Awyu"},
["psc"] = {"Çhengey Chowree Eeraanagh", "Çhengey Chowree Phershagh"},
["psd"] = {"Çhengey Chowree Injinee ny Strahyn"},
["pse"] = {"Malayish Veanagh"},
["psg"] = {"Çhengey Chowree Penang"},
["psh"] = {"Pashai Heear Yiass", "Pashayi Heear Yiass"},
["psi"] = {"Pashai Hiar Yiass", "Pashayi Hiar Yiass"},
["psl"] = {"Çhengey Chowree Phurt-verçhagh"},
["psm"] = {"Pauserna"},
["psn"] = {"Panasuan"},
["pso"] = {"Çhengey Chowree Pholynnagh"},
["psp"] = {"Çhengey Chowree Philippeenagh"},
["psq"] = {"Pasi"},
["psr"] = {"Çhengey Chowree Phortiugagh"},
["pss"] = {"Kaulong"},
["pst"] = {"Pashtish Veanagh"},
["psu"] = {"Sauraseni Prākrit"},
["psw"] = {"Port Sandwich"},
["psy"] = {"Piscataway"},
["pta"] = {"Pai Tavytera"},
["pth"] = {"Pataxó Hã-Ha-Hãe"},
["pti"] = {"Pindiini", "Wangkatha"},
["ptn"] = {"Patanish"},
["pto"] = {"Zo'é"},
["ptp"] = {"Patep"},
["ptq"] = {"Pattapu"},
["ptr"] = {"Piamatsina"},
["ptt"] = {"Enrekang"},
["ptu"] = {"Bambam"},
["ptv"] = {"Port Vato"},
["ptw"] = {"Pentlatch"},
["pty"] = {"Pathiya"},
["pua"] = {"Purepecha Sleitoil Heear"},
["pub"] = {"Purum"},
["puc"] = {"Punan Merap"},
["pud"] = {"Punan Aput"},
["pue"] = {"Puelche"},
["puf"] = {"Punan Merah"},
["pug"] = {"Phuie"},
["pui"] = {"Puinave"},
["puj"] = {"Punan Tubu"},
["pum"] = {"Puma"},
["puo"] = {"Puoc"},
["pup"] = {"Pulabu"},
["puq"] = {"Puquina"},
["pur"] = {"Puruborá"},
["put"] = {"Putoh"},
["puu"] = {"Punu"},
["puw"] = {"Puluwatish"},
["pux"] = {"Puare"},
["puy"] = {"Purisimeño"},
["pwa"] = {"Pawaia"},
["pwb"] = {"Panawa"},
["pwg"] = {"Gapapaiwa"},
["pwi"] = {"Patwin"},
["pwm"] = {"Molbog"},
["pwn"] = {"Paiwan"},
["pwo"] = {"Karenish Heear Pwo"},
["pwr"] = {"Powari"},
["pww"] = {"Karenish Hwoaie Pwo"},
["pxm"] = {"Quetzaltepec Mixe"},
["pye"] = {"Pye Krumen"},
["pym"] = {"Fyam"},
["pyn"] = {"Poyanáwa"},
["pys"] = {"Çhengey Chowree Pharaguayagh", "Lengua de Señas del Paraguay"},
["pyu"] = {"Puyuma"},
["pyx"] = {"Pyu (Myanmar)"},
["pyy"] = {"Pyen"},
["pze"] = {"Pesse"},
["pzh"] = {"Pazeh"},
["pzn"] = {"Jejara Naga", "Para Naga"},
["qua"] = {"Quapaw"},
["qub"] = {"Quechua Huallaga Huánuco"},
["quc"] = {"K'iche'", "Quiché"},
["qud"] = {"Quichua Sleitoil Calderón"},
["quf"] = {"Quechua Lambayeque"},
["qug"] = {"Quichua Sleitoil Chimborazo"},
["quh"] = {"Quechua Voliviagh Yiass"},
["qui"] = {"Quileute"},
["quk"] = {"Quechua Chachapoyas"},
["qul"] = {"Quechua Voliviagh Hwoaie"},
["qum"] = {"Sipacapense"},
["qun"] = {"Quinault"},
["qup"] = {"Quechua Pastaza Yiass"},
["quq"] = {"Quinqui"},
["qur"] = {"Quechua Yanahuanca Pasco"},
["qus"] = {"Quichua Santiago del Estero"},
["quv"] = {"Sacapulteco"},
["quw"] = {"Quichua Injil Tena"},
["qux"] = {"Quechua Yauyos"},
["quy"] = {"Quechua Ayacucho"},
["quz"] = {"Quechua Cusco"},
["qva"] = {"Quechua Ambo-Pasco"},
["qvc"] = {"Quechua Cajamarca"},
["qve"] = {"Quechua Apurímac Hiar"},
["qvh"] = {"Quechua Huánaco Huamalíes-Dos de Mayo"},
["qvi"] = {"Quichua Sleitoil Imbabura"},
["qvj"] = {"Quichua Sleitoil Loja"},
["qvl"] = {"Quechua Lima Hwoaie Cajatambo"},
["qvm"] = {"Quechua Margos-Yarowilca-Lauricocha"},
["qvn"] = {"Quechua Junín Hwoaie"},
["qvo"] = {"Quechua Injil Napo"},
["qvp"] = {"Quechua Pacaraos"},
["qvs"] = {"Quechua San Martín"},
["qvw"] = {"Quechua Huaylla Wanca"},
["qvy"] = {"Queyu"},
["qvz"] = {"Quechua Pastaza Hwoaie"},
["qwa"] = {"Quechua Ancash Corongo"},
["qwc"] = {"Quechua Chlassicagh"},
["qwe"] = {"Quechuagh (kynney)"},
["qwh"] = {"Quechua Ancash Huaylas"},
["qwm"] = {"Kumanish (y Roosh)"},
["qws"] = {"Quechua Ancash Sihuas"},
["qwt"] = {"Kwalhioqua-Tlatskanai"},
["qxa"] = {"Quechua Ancash Chiquián"},
["qxc"] = {"Quechua Chincha"},
["qxh"] = {"Quechua Huánuco Panao"},
["qxl"] = {"Quechua Sleitoil Salasaca"},
["qxn"] = {"Quechua Ancash Conchucos Hwoaie"},
["qxo"] = {"Quechua Ancash Conchucos Yiass"},
["qxp"] = {"Quechua Puno"},
["qxq"] = {"Qashqa'i"},
["qxr"] = {"Quichua Sleitoil Cañar"},
["qxs"] = {"Qiang Yiass"},
["qxt"] = {"Quechua Pasco Santa Ana de Tusi"},
["qxu"] = {"Quechua Arequipa-La Unión"},
["qxw"] = {"Quechua Jauja Wanca"},
["qya"] = {"Quenya"},
["qyp"] = {"Quiripi"},
["raa"] = {"Dungmali"},
["rab"] = {"Camling"},
["rac"] = {"Rasawa"},
["rad"] = {"Rade"},
["raf"] = {"Meohang Heear"},
["rag"] = {"Logooli", "Lulogooli"},
["rah"] = {"Rabha"},
["rai"] = {"Ramoaaina"},
["raj"] = {"Rajasthanish"},
["rak"] = {"Tulu-Bohuai"},
["ral"] = {"Ralte"},
["ram"] = {"Canela"},
["ran"] = {"Riantana"},
["rao"] = {"Rao"},
["rap"] = {"Rapanui"},
["raq"] = {"Saam"},
["rar"] = {"Rarotongan", "Maorish Ellanyn Cook"},
["ras"] = {"Tegali"},
["rat"] = {"Razajerdi"},
["rau"] = {"Raute"},
["rav"] = {"Sampang"},
["raw"] = {"Rawang"},
["rax"] = {"Rang"},
["ray"] = {"Rapa"},
["raz"] = {"Rahambuu"},
["rbb"] = {"Rumai Palaung"},
["rbk"] = {"Bontok Hwoaie"},
["rbl"] = {"Miraya Bikol"},
["rbp"] = {"Barababaraba"},
["rcf"] = {"Creeole Frangish Réunion"},
["rdb"] = {"Rudbari"},
["rea"] = {"Rerau"},
["reb"] = {"Rembong"},
["ree"] = {"Rejang Kayan"},
["reg"] = {"Kara (Tanzania)"},
["rei"] = {"Reli"},
["rej"] = {"Rejang"},
["rel"] = {"Rendille"},
["rem"] = {"Remo"},
["ren"] = {"Rengao"},
["rer"] = {"Rer Bare"},
["res"] = {"Reshe"},
["ret"] = {"Retta"},
["rey"] = {"Reyesano"},
["rga"] = {"Roria"},
["rge"] = {"Greagish Romanagh"},
["rgk"] = {"Rangkas"},
["rgn"] = {"Romagnolish"},
["rgr"] = {"Resígaro"},
["rgs"] = {"Roglai Yiass"},
["rgu"] = {"Ringgou"},
["rhg"] = {"Rohingya"},
["rhp"] = {"Yahang"},
["ria"] = {"Riang (yn Injey)"},
["rib"] = {"Çhengey Chowree Bribri"},
["rif"] = {"Tarifit"},
["ril"] = {"Riang Lang", "Riang (Myanmar)"},
["rim"] = {"Nyaturu"},
["rin"] = {"Nungu"},
["rir"] = {"Ribun"},
["rit"] = {"Ritharrngu"},
["riu"] = {"Riung"},
["rjg"] = {"Rajong"},
["rji"] = {"Raji"},
["rjs"] = {"Rajbanshi"},
["rka"] = {"Kraol"},
["rkb"] = {"Rikbaktsa"},
["rkh"] = {"Rakahanga-Manihiki"},
["rki"] = {"Rakhine"},
["rkm"] = {"Marka"},
["rkt"] = {"Rangpuri", "Kamta"},
["rkw"] = {"Arakwal"},
["rma"] = {"Rama"},
["rmb"] = {"Rembarrnga"},
["rmc"] = {"Romanish Charpathagh"},
["rmd"] = {"Danvargish Romanagh"},
["rme"] = {"Baarle Romanagh"},
["rmf"] = {"Kaloromanish Innlynnagh"},
["rmg"] = {"Norlynnish Romanagh"},
["rmh"] = {"Murkim"},
["rmi"] = {"Lomavren"},
["rmk"] = {"Romkun"},
["rml"] = {"Romanish Valtagh"},
["rmm"] = {"Romanish"},
["rmn"] = {"Romanish Valkanagh"},
["rmo"] = {"Romanish Sinte"},
["rmp"] = {"Rempi"},
["rmq"] = {"Caló"},
["rms"] = {"Çhengey Chowree Romaanagh"},
["rmt"] = {"Domari"},
["rmu"] = {"Romanish Tavringagh"},
["rmv"] = {"Romanova"},
["rmw"] = {"Romanish Vretnagh"},
["rmx"] = {"Romam"},
["rmy"] = {"Romanish Vlax"},
["rmz"] = {"Marma"},
["rnb"] = {"Çhengey Chowree Brunca"},
["rnd"] = {"Ruund"},
["rng"] = {"Ronga"},
["rnl"] = {"Ranglong"},
["rnn"] = {"Roon"},
["rnp"] = {"Rongpo"},
["rnr"] = {"Nari Nari"},
["rnw"] = {"Rungwa"},
["roa"] = {"çhengaghyn Romansagh"},
["rob"] = {"Tae'"},
["roc"] = {"Cacgia Roglai"},
["rod"] = {"Rogo"},
["roe"] = {"Ronji"},
["rof"] = {"Rombo"},
["rog"] = {"Roglai Hwoaie"},
["rol"] = {"Romblomanon"},
["rom"] = {"Romanish"},
["roo"] = {"Rotokas"},
["rop"] = {"Kriol"},
["ror"] = {"Rongga"},
["rou"] = {"Runga"},
["row"] = {"Dela-Oenale"},
["rpn"] = {"Repanbitip"},
["rpt"] = {"Rapting"},
["rri"] = {"Ririo"},
["rro"] = {"Waima"},
["rrt"] = {"Arritinngithigh"},
["rsb"] = {"Serbish Romanagh"},
["rsk"] = {"Ruthenish", "Rusnak"},
["rsl"] = {"Çhengey Chowree Rooshagh"},
["rsm"] = {"Çhengey Chowree Miriwoong"},
["rsn"] = {"Çhengey Chowree Rooandagh"},
["rsw"] = {"Rishiwa"},
["rtc"] = {"Rungtu Chin"},
["rth"] = {"Ratahan"},
["rtm"] = {"Rotuman"},
["rts"] = {"Yuratsish"},
["rtw"] = {"Rathawi"},
["rub"] = {"Gungu"},
["ruc"] = {"Ruuli"},
["rue"] = {"Rusynish"},
["ruf"] = {"Luguru"},
["rug"] = {"Roviana"},
["ruh"] = {"Ruga"},
["rui"] = {"Rufiji"},
["ruk"] = {"Che"},
["ruo"] = {"Istro-Romaanish"},
["rup"] = {"Massado-Romaanish", "Aromaanish", "Arumaanish"},
["ruq"] = {"Megleno-Romaanish"},
["rut"] = {"Rutulish"},
["ruu"] = {"Lanas Lobu"},
["ruy"] = {"Mala (y Naigeer)"},
["ruz"] = {"Ruma"},
["rwa"] = {"Rawo"},
["rwk"] = {"Rwa"},
["rwl"] = {"Ruwila"},
["rwm"] = {"Amba (Oogandey)"},
["rwo"] = {"Rawa"},
["rwr"] = {"Marwari (yn Injey)"},
["rxd"] = {"Ngardi"},
["rxw"] = {"Karuwali", "Garuwali"},
["ryn"] = {"Amami-Oshima Hwoaie"},
["rys"] = {"Yaeyama"},
["ryu"] = {"Okinawish Veanagh"},
["rzh"] = {"Rāziḥī"},
["saa"] = {"Saba"},
["sab"] = {"Buglere"},
["sac"] = {"Meskwaki"},
["sad"] = {"Sandawe"},
["sae"] = {"Sabanê"},
["saf"] = {"Safaliba"},
["sah"] = {"Yakutish"},
["sai"] = {"çhengaghyn Injinagh Americaanagh Yiass"},
["saj"] = {"Sahu"},
["sak"] = {"Sake"},
["sal"] = {"çhengaghyn Salishanagh"},
["sam"] = {"Aramaaish Hamaaragh"},
["sao"] = {"Sause"},
["saq"] = {"Samburu"},
["sar"] = {"Saraveca"},
["sas"] = {"Sasak"},
["sat"] = {"Santali"},
["sau"] = {"Saleman"},
["sav"] = {"Saafi-Saafi"},
["saw"] = {"Sawi"},
["sax"] = {"Sa"},
["say"] = {"Saya"},
["saz"] = {"Saurashtra"},
["sba"] = {"Ngambay"},
["sbb"] = {"Simbo"},
["sbc"] = {"Kele (Papooey Guinea Noa)"},
["sbd"] = {"Samo Yiass"},
["sbe"] = {"Saliba"},
["sbf"] = {"Chabu", "Shabo"},
["sbg"] = {"Seget"},
["sbh"] = {"Sori-Harengan"},
["sbi"] = {"Seti"},
["sbj"] = {"Surbakhal"},
["sbk"] = {"Safwa"},
["sbl"] = {"Botolan Sambal"},
["sbm"] = {"Sagala"},
["sbn"] = {"Sindhi Bhil"},
["sbo"] = {"Sabüm"},
["sbp"] = {"Sangu (Tanzania)"},
["sbq"] = {"Sileibi"},
["sbr"] = {"Sembakung Murut"},
["sbs"] = {"Subiya"},
["sbt"] = {"Kimki"},
["sbu"] = {"Stod Bhoti"},
["sbv"] = {"Sabine"},
["sbw"] = {"Simba"},
["sbx"] = {"Seberuang"},
["sby"] = {"Soli"},
["sbz"] = {"Sara Kaba"},
["scb"] = {"Chut"},
["sce"] = {"Dongxiang"},
["scf"] = {"Creeole Frangish San Miguel"},
["scg"] = {"Sanggau"},
["sch"] = {"Sakachep"},
["sci"] = {"Creeole Malayish Sri Lanka"},
["sck"] = {"Sadri"},
["scl"] = {"Shina"},
["scn"] = {"Shisslish"},
["sco"] = {"Baarle Albinagh"},
["scp"] = {"Hyolmo", "Helambu Sherpa"},
["scq"] = {"Sa'och"},
["scs"] = {"Slavish Hwoaie"},
["sct"] = {"Katang Yiass"},
["scu"] = {"Shumcho"},
["scv"] = {"Sheni"},
["scw"] = {"Sha"},
["scx"] = {"Sicel"},
["sda"] = {"Toraja-Sa'dan"},
["sdb"] = {"Shabak"},
["sdc"] = {"Sardeenish Hassaragh"},
["sde"] = {"Surubu"},
["sdf"] = {"Sarli"},
["sdg"] = {"Savi"},
["sdh"] = {"Kurdish Yiass"},
["sdj"] = {"Suundi"},
["sdk"] = {"Sos Kundi"},
["sdl"] = {"Çhengey Chowree Arabagh Saudi"},
["sdn"] = {"Sardeenish Ghalluragh"},
["sdo"] = {"Bukar-Sadung Bidayuh"},
["sdp"] = {"Sherdukpen"},
["sdq"] = {"Semandang"},
["sdr"] = {"Oraon Sadri"},
["sds"] = {"Sened"},
["sdt"] = {"Shuadit"},
["sdu"] = {"Sarudu"},
["sdv"] = {"çhengaghyn Soodaanagh Hiar"},
["sdx"] = {"Sibu Melanau"},
["sdz"] = {"Sallands"},
["sea"] = {"Semai"},
["seb"] = {"Shempire Senoufo"},
["sec"] = {"Sechelt"},
["sed"] = {"Sedang"},
["see"] = {"Seneca"},
["sef"] = {"Cebaara Senoufo"},
["seg"] = {"Segeju"},
["seh"] = {"Sena"},
["sei"] = {"Seri"},
["sej"] = {"Sene"},
["sek"] = {"Sekani"},
["sel"] = {"Selkup"},
["sem"] = {"çhengaghyn Shemmagh"},
["sen"] = {"Nanerigé Sénoufo"},
["seo"] = {"Suarmin"},
["sep"] = {"Sìcìté Sénoufo"},
["seq"] = {"Senara Sénoufo"},
["ser"] = {"Serrano"},
["ses"] = {"Koyraboro Senni Songhai"},
["set"] = {"Sentani"},
["seu"] = {"Serui-Laut"},
["sev"] = {"Nyarafolo Senoufo"},
["sew"] = {"Sewa Bay"},
["sey"] = {"Secoya"},
["sez"] = {"Senthang Chin"},
["sfb"] = {"Langue des signes de Belgique Francophone", "Çhengey Chowree Rangee yn Velg"},
["sfe"] = {"Subanen Hiar"},
["sfm"] = {"Miaoish Veg-ornaidagh"},
["sfs"] = {"Çhengey Chowree yn Affrick Yiass"},
["sfw"] = {"Sehwi"},
["sga"] = {"Shenn Yernish (derrey 900)"},
["sgb"] = {"Mag-antsi Ayta"},
["sgc"] = {"Kipsigis"},
["sgd"] = {"Surigaonon"},
["sge"] = {"Segai"},
["sgg"] = {"Çhengey Chowree Ghermaanagh Elveeishagh"},
["sgh"] = {"Shughni"},
["sgi"] = {"Suga"},
["sgj"] = {"Surgujia"},
["sgk"] = {"Sangkong"},
["sgm"] = {"Singa"},
["sgn"] = {"Çhengaghyn cowree"},
["sgp"] = {"Singpho"},
["sgr"] = {"Sangisari"},
["sgs"] = {"Samogitish"},
["sgt"] = {"Brokpake"},
["sgu"] = {"Salas"},
["sgw"] = {"Sebat Bet Gurage"},
["sgx"] = {"Çhengey Chowree Sierra Leone"},
["sgy"] = {"Sanglechi"},
["sgz"] = {"Sursurunga"},
["sha"] = {"Shall-Zwall"},
["shb"] = {"Ninam"},
["shc"] = {"Sonde"},
["shd"] = {"Kundal Shahi"},
["she"] = {"Sheko"},
["shg"] = {"Shua"},
["shh"] = {"Shoshoni"},
["shi"] = {"Tachelhit"},
["shj"] = {"Shatt"},
["shk"] = {"Shilluk"},
["shl"] = {"Shendu"},
["shm"] = {"Shahrudi"},
["shn"] = {"Shan"},
["sho"] = {"Shanga"},
["shp"] = {"Shipibo-Conibo"},
["shq"] = {"Sala"},
["shr"] = {"Shi"},
["shs"] = {"Shuswap"},
["sht"] = {"Shasta"},
["shu"] = {"Arabish Hadagh"},
["shv"] = {"Shehri"},
["shw"] = {"Shwai"},
["shx"] = {"She"},
["shy"] = {"Tachawit"},
["shz"] = {"Syenara Senoufo"},
["sia"] = {"Saamish Akkala"},
["sib"] = {"Sebop"},
["sid"] = {"Sidamo"},
["sie"] = {"Simaa"},
["sif"] = {"Siamou"},
["sig"] = {"Paasaal"},
["sih"] = {"Zire", "Sîshëë"},
["sii"] = {"Shom Peng"},
["sij"] = {"Numbami"},
["sik"] = {"Sikiana"},
["sil"] = {"Tumulung Sisaala"},
["sim"] = {"Mende (Papooey Guinea Noa)"},
["sio"] = {"çhengaghyn Siouagh"},
["sip"] = {"Sikkimish"},
["siq"] = {"Sonia"},
["sir"] = {"Siri"},
["sis"] = {"Siuslaw"},
["sit"] = {"çhengaghyn Sheen-Tibetagh"},
["siu"] = {"Sinagen"},
["siv"] = {"Sumariup"},
["siw"] = {"Siwai"},
["six"] = {"Sumau"},
["siy"] = {"Sivandi"},
["siz"] = {"Siwi"},
["sja"] = {"Epena"},
["sjb"] = {"Sajau Basap"},
["sjd"] = {"Saamish Kildin"},
["sje"] = {"Saamish Pite"},
["sjg"] = {"Assangori"},
["sjk"] = {"Saamish Kemi"},
["sjl"] = {"Sajalong", "Miji"},
["sjm"] = {"Mapun"},
["sjn"] = {"Sindarin"},
["sjo"] = {"Xibe"},
["sjp"] = {"Surjapuri"},
["sjr"] = {"Siar-Lak"},
["sjs"] = {"Senhaja De Srair"},
["sjt"] = {"Saamish Ter"},
["sju"] = {"Saamish Ume"},
["sjw"] = {"Shawneeish"},
["ska"] = {"Skagit"},
["skb"] = {"Saek"},
["skc"] = {"Ma Manda"},
["skd"] = {"Miwokish Sierra Yiass"},
["ske"] = {"Seke (Vanuatu)"},
["skf"] = {"Sakirabiá"},
["skg"] = {"Malagasish Sakalava"},
["skh"] = {"Sikule"},
["ski"] = {"Sika"},
["skj"] = {"Seke (Nepaal)"},
["skm"] = {"Kutong"},
["skn"] = {"Kolibugan Subanon"},
["sko"] = {"Seko Tengah"},
["skp"] = {"Sekapan"},
["skq"] = {"Sininkere"},
["skr"] = {"Saraiki", "Seraiki"},
["sks"] = {"Maia"},
["skt"] = {"Sakata"},
["sku"] = {"Sakao"},
["skv"] = {"Skou"},
["skw"] = {"Creeole Ollanish Skepi"},
["skx"] = {"Seko Padang"},
["sky"] = {"Sikaiana"},
["skz"] = {"Sekar"},
["sla"] = {"çhengaghyn Slavagh"},
["slc"] = {"Sáliba"},
["sld"] = {"Sissala"},
["sle"] = {"Sholaga"},
["slf"] = {"Çhengey Chowree Iddaalagh Elveeishagh"},
["slg"] = {"Selungai Murut"},
["slh"] = {"Salish Yiass Puget Sound"},
["sli"] = {"Sileeshish Eeghtyragh"},
["slj"] = {"Salumá"},
["sll"] = {"Salt-Yui"},
["slm"] = {"Pangutaran Sama"},
["sln"] = {"Salinan"},
["slp"] = {"Lamaholot"},
["slr"] = {"Salar"},
["sls"] = {"Çhengey Chowree Singapore"},
["slt"] = {"Sila"},
["slu"] = {"Selaru"},
["slw"] = {"Sialum"},
["slx"] = {"Salampasu"},
["sly"] = {"Selayar"},
["slz"] = {"Ma'ya"},
["sma"] = {"Saamish Yiass"},
["smb"] = {"Simbari"},
["smc"] = {"Som"},
["smf"] = {"Auwe"},
["smg"] = {"Simbali"},
["smh"] = {"Samei"},
["smi"] = {"çhengaghyn Saamagh"},
["smj"] = {"Saamish Lule"},
["smk"] = {"Bolinao"},
["sml"] = {"Sama Veanagh"},
["smm"] = {"Musasa"},
["smn"] = {"Saamish Inari"},
["smp"] = {"Samaarish"},
["smq"] = {"Samo"},
["smr"] = {"Simeulue"},
["sms"] = {"Saamish Skolt"},
["smt"] = {"Simte"},
["smu"] = {"Somray"},
["smv"] = {"Samvedi"},
["smw"] = {"Sumbawa"},
["smx"] = {"Samba"},
["smy"] = {"Semnani"},
["smz"] = {"Simeku"},
["snc"] = {"Sinaugoro"},
["sne"] = {"Bau Bidayuh"},
["snf"] = {"Noon"},
["sng"] = {"Sanga (Pobblaght Gheynlagh y Chongo)"},
["sni"] = {"Sensi"},
["snj"] = {"Riverain Sango"},
["snk"] = {"Soninke"},
["snl"] = {"Sangil"},
["snm"] = {"Ma'di Yiass"},
["snn"] = {"Siona"},
["sno"] = {"Snohomish"},
["snp"] = {"Siane"},
["snq"] = {"Sangu (Gabon)"},
["snr"] = {"Sihan"},
["sns"] = {"South West Bay", "Nahavaq"},
["snu"] = {"Senggi", "Viid"},
["snv"] = {"Sa'ban"},
["snw"] = {"Selee"},
["snx"] = {"Sam"},
["sny"] = {"Saniyo-Hiyewe"},
["snz"] = {"Kou"},
["soa"] = {"Song Thai"},
["sob"] = {"Sobei"},
["soc"] = {"So (Pobblaght Gheynlagh y Chongo)"},
["sod"] = {"Songoora"},
["soe"] = {"Songomeno"},
["sog"] = {"Sogdish"},
["soh"] = {"Aka"},
["soi"] = {"Sonha"},
["soj"] = {"Soi"},
["sok"] = {"Sokoro"},
["sol"] = {"Solos"},
["son"] = {"çhengaghyn Songhai"},
["soo"] = {"Songo"},
["sop"] = {"Songe"},
["soq"] = {"Kanasi"},
["sor"] = {"Somrai"},
["sos"] = {"Seeku"},
["sou"] = {"Thai Yiass"},
["sov"] = {"Sonsorol"},
["sow"] = {"Sowanda"},
["sox"] = {"Swo"},
["soy"] = {"Miyobe"},
["soz"] = {"Temi"},
["spb"] = {"Sepa (yn Indoneesh)"},
["spc"] = {"Sapé"},
["spd"] = {"Saep"},
["spe"] = {"Sepa (Papooey Guinea Noa)"},
["spg"] = {"Sian"},
["spi"] = {"Saponi"},
["spk"] = {"Sengo"},
["spl"] = {"Selepet"},
["spm"] = {"Akukem"},
["spn"] = {"Sanapaná"},
["spo"] = {"Spokane"},
["spp"] = {"Supyire Senoufo"},
["spq"] = {"Spaainish Loreto-Ucayali"},
["spr"] = {"Saparua"},
["sps"] = {"Saposa"},
["spt"] = {"Spiti Bhoti"},
["spu"] = {"Sapuan"},
["spv"] = {"Sambalpuri", "Kosli"},
["spx"] = {"Picenish Yiass"},
["spy"] = {"Sabaot"},
["sqa"] = {"Shama-Sambuga"},
["sqh"] = {"Shau"},
["sqj"] = {"çhengaghyn Albaanagh"},
["sqk"] = {"Çhengey Chowree Albaanagh"},
["sqm"] = {"Suma"},
["sqn"] = {"Susquehannock"},
["sqo"] = {"Sorkhei"},
["sqq"] = {"Sou"},
["sqr"] = {"Arabish Hisslagh"},
["sqs"] = {"Çhengey Chowree Sri Lanka"},
["sqt"] = {"Soqotri"},
["squ"] = {"Squamish"},
["sqx"] = {"Çhengey Chowree Kufr Qassem (KQSL)"},
["sra"] = {"Saruga"},
["srb"] = {"Sora"},
["src"] = {"Sardeenish Logudoragh"},
["sre"] = {"Sara"},
["srf"] = {"Nafi"},
["srg"] = {"Sulod"},
["srh"] = {"Sarikoli"},
["sri"] = {"Siriano"},
["srk"] = {"Serudung Murut"},
["srl"] = {"Isirawa"},
["srm"] = {"Saramaccan"},
["srn"] = {"Sranan Tongo"},
["sro"] = {"Sardeenish Campidanagh"},
["srq"] = {"Sirionó"},
["srr"] = {"Serer"},
["srs"] = {"Sarsi"},
["srt"] = {"Sauri"},
["sru"] = {"Suruí"},
["srv"] = {"Sorsoganon Yiass"},
["srw"] = {"Serua"},
["srx"] = {"Sirmauri"},
["sry"] = {"Sera"},
["srz"] = {"Shahmirzadi"},
["ssa"] = {"çhengaghyn Neelagh-Saharagh"},
["ssb"] = {"Sama Yiass"},
["ssc"] = {"Suba-Simbiti"},
["ssd"] = {"Siroi"},
["sse"] = {"Balangingi", "Bangingih Sama"},
["ssf"] = {"Thao"},
["ssg"] = {"Seimat"},
["ssh"] = {"Arabish Shihhi"},
["ssi"] = {"Sansi"},
["ssj"] = {"Sausi"},
["ssk"] = {"Sunam"},
["ssl"] = {"Sisaala Heear"},
["ssm"] = {"Semnam"},
["ssn"] = {"Waata"},
["sso"] = {"Sissano"},
["ssp"] = {"Çhengey Chowree Spaainagh"},
["ssq"] = {"So'a"},
["ssr"] = {"Çhengey Chowree Rangagh Elveeishagh"},
["sss"] = {"Sô"},
["sst"] = {"Sinasina"},
["ssu"] = {"Susuami"},
["ssv"] = {"Shark Bay"},
["ssx"] = {"Samberigi"},
["ssy"] = {"Saho"},
["ssz"] = {"Sengseng"},
["sta"] = {"Settla"},
["stb"] = {"Subanen Hwoaie"},
["std"] = {"Sentinel"},
["ste"] = {"Liana-Seti"},
["stf"] = {"Seta"},
["stg"] = {"Trieng"},
["sth"] = {"Shelta"},
["sti"] = {"Bulo Stieng"},
["stj"] = {"Matya Samo"},
["stk"] = {"Arammba"},
["stl"] = {"Stellingwerfs"},
["stm"] = {"Setaman"},
["stn"] = {"Owa"},
["sto"] = {"Stonish"},
["stp"] = {"Tepehuan Hiar Yiass"},
["stq"] = {"Saterfriesisch"},
["str"] = {"Salish ny Keyllyssyn"},
["sts"] = {"Shumashti"},
["stt"] = {"Budeh Stieng"},
["stu"] = {"Samtao"},
["stv"] = {"Silt'e"},
["stw"] = {"Satawalish"},
["sty"] = {"Tatarish Hibbeyragh"},
["sua"] = {"Sulka"},
["sub"] = {"Suku"},
["suc"] = {"Subanon Heear"},
["sue"] = {"Suena"},
["sug"] = {"Suganga"},
["sui"] = {"Suki"},
["suj"] = {"Shubi"},
["suk"] = {"Sukuma"},
["suo"] = {"Bouni"},
["suq"] = {"Tirmaga-Chai Suri", "Suri"},
["sur"] = {"Mwaghavul"},
["sus"] = {"Susu"},
["sut"] = {"Subtiaba"},
["suv"] = {"Puroik"},
["suw"] = {"Sumbwa"},
["sux"] = {"Sumerish"},
["suy"] = {"Suyá"},
["suz"] = {"Sunwar"},
["sva"] = {"Svan"},
["svb"] = {"Ulau-Suain"},
["svc"] = {"Creeole Baarle Winsenagh"},
["sve"] = {"Serili"},
["svk"] = {"Çhengey Chowree Slovackagh"},
["svm"] = {"Slavomolisano"},
["svs"] = {"Savosavo"},
["svx"] = {"Skalvish"},
["swb"] = {"Comoroish Maore"},
["swc"] = {"Swahili yn Chongo"},
["swf"] = {"Sere"},
["swg"] = {"Swabish"},
["swh"] = {"Swahili (çhengey er lheh)", "Kiswahili"},
["swi"] = {"Sui"},
["swj"] = {"Sira"},
["swk"] = {"Malawi Sena"},
["swl"] = {"Çhengey Chowree Hoolynnagh"},
["swm"] = {"Samosa"},
["swn"] = {"Sawknah"},
["swo"] = {"Shanenawa"},
["swp"] = {"Suau"},
["swq"] = {"Sharwa"},
["swr"] = {"Saweru"},
["sws"] = {"Seluwasan"},
["swt"] = {"Sawila"},
["swu"] = {"Suwawa"},
["swv"] = {"Shekhawati"},
["sww"] = {"Sowa"},
["swx"] = {"Suruahá"},
["swy"] = {"Sarua"},
["sxb"] = {"Suba"},
["sxc"] = {"Sicanish"},
["sxe"] = {"Sighu"},
["sxg"] = {"Shuhi", "Shixing"},
["sxk"] = {"Kalapuya Yiass"},
["sxl"] = {"Selian"},
["sxm"] = {"Samre"},
["sxn"] = {"Sangir"},
["sxo"] = {"Sorothaptish"},
["sxr"] = {"Saaroa"},
["sxs"] = {"Sasaru"},
["sxu"] = {"Saxonish Eaghtyragh"},
["sxw"] = {"Saxwe Gbe"},
["sya"] = {"Siang"},
["syb"] = {"Subanen Veanagh"},
["syc"] = {"Seerish Chlassicagh"},
["syd"] = {"çhengaghyn Samoyedagh"},
["syi"] = {"Seki"},
["syk"] = {"Sukur"},
["syl"] = {"Sylheti"},
["sym"] = {"Maya Samo"},
["syn"] = {"Senaya"},
["syo"] = {"Suoy"},
["syr"] = {"Seerish"},
["sys"] = {"Sinyar"},
["syw"] = {"Kagate"},
["syx"] = {"Samay"},
["syy"] = {"Çhengey Chowree ny Bedouin Al-Sayyid"},
["sza"] = {"Semelai"},
["szb"] = {"Ngalum"},
["szc"] = {"Semaq Beri"},
["sze"] = {"Seze"},
["szg"] = {"Sengele"},
["szl"] = {"Sileeshish"},
["szn"] = {"Sula"},
["szp"] = {"Suabo"},
["szs"] = {"Çhengey Chowree Ellanyn Solomon"},
["szv"] = {"Isu (Rheynn Fako)"},
["szw"] = {"Sawai"},
["szy"] = {"Sakizaya"},
["taa"] = {"Tanana Eeghtyragh"},
["tab"] = {"Tabassaranish"},
["tac"] = {"Tarahumara Injil"},
["tad"] = {"Tause"},
["tae"] = {"Tariana"},
["taf"] = {"Tapirapé"},
["tag"] = {"Tagoi"},
["tai"] = {"çhengaghyn Tai"},
["taj"] = {"Tamang Hiar"},
["tak"] = {"Tala"},
["tal"] = {"Tal"},
["tan"] = {"Tangale"},
["tao"] = {"Yami"},
["tap"] = {"Taabwa"},
["taq"] = {"Tamasheq"},
["tar"] = {"Tarahumara Veanagh"},
["tas"] = {"Tay Boi"},
["tau"] = {"Tanana Eaghtyragh"},
["tav"] = {"Tatuyo"},
["taw"] = {"Tai"},
["tax"] = {"Tamki"},
["tay"] = {"Atayal"},
["taz"] = {"Tocho"},
["tba"] = {"Aikanã"},
["tbc"] = {"Takia"},
["tbd"] = {"Kaki Ae"},
["tbe"] = {"Tanimbili"},
["tbf"] = {"Mandara"},
["tbg"] = {"Tairora Hwoaie"},
["tbh"] = {"Dharawal", "Thurawal"},
["tbi"] = {"Gaam"},
["tbj"] = {"Tiang"},
["tbk"] = {"Calamian Tagbanwa"},
["tbl"] = {"Tboli"},
["tbm"] = {"Tagbu"},
["tbn"] = {"Barro Negro Tunebo"},
["tbo"] = {"Tawala"},
["tbp"] = {"Taworta", "Diebroud"},
["tbq"] = {"çhengaghyn Tibetagh-Burmagh"},
["tbr"] = {"Tumtum"},
["tbs"] = {"Tanguat"},
["tbt"] = {"Tembo (Kitembo)"},
["tbu"] = {"Tubar"},
["tbv"] = {"Tobo"},
["tbw"] = {"Tagbanwa"},
["tbx"] = {"Kapin"},
["tby"] = {"Tabaru"},
["tbz"] = {"Ditammari"},
["tca"] = {"Ticuna"},
["tcb"] = {"Tanacross"},
["tcc"] = {"Datooga"},
["tcd"] = {"Tafi"},
["tce"] = {"Tutchone Yiass"},
["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"},
["tcg"] = {"Tamagario"},
["tch"] = {"Creeole Baarle ny Turkee as Caicos"},
["tci"] = {"Wára"},
["tck"] = {"Tchitchege"},
["tcl"] = {"Taman (Myanmar)"},
["tcm"] = {"Tanahmerah"},
["tcn"] = {"Tichurong"},
["tco"] = {"Taungyo"},
["tcp"] = {"Tawr Chin"},
["tcq"] = {"Kaiy"},
["tcs"] = {"Creeole Keyllys Torres", "Yumplatok"},
["tct"] = {"T'en"},
["tcu"] = {"Tarahumara Hiar Yiass"},
["tcw"] = {"Totonac Tecpatlán"},
["tcx"] = {"Toda"},
["tcy"] = {"Tulu"},
["tcz"] = {"Chinish Thado"},
["tda"] = {"Tagdal"},
["tdb"] = {"Panchpargania"},
["tdc"] = {"Emberá-Tadó"},
["tdd"] = {"Tai Nüa"},
["tde"] = {"Tiranige Diga Dogon"},
["tdf"] = {"Talieng"},
["tdg"] = {"Tamang Heear"},
["tdh"] = {"Thulung"},
["tdi"] = {"Tomadino"},
["tdj"] = {"Tajio"},
["tdk"] = {"Tambas"},
["tdl"] = {"Sur"},
["tdm"] = {"Taruma"},
["tdn"] = {"Tondano"},
["tdo"] = {"Teme"},
["tdq"] = {"Tita"},
["tdr"] = {"Todrah"},
["tds"] = {"Doutai"},
["tdt"] = {"Tetun Dili"},
["tdv"] = {"Toro"},
["tdx"] = {"Malagasish Tandroy-Mahafaly"},
["tdy"] = {"Tadyawan"},
["tea"] = {"Temiar"},
["teb"] = {"Tetete"},
["tec"] = {"Terik"},
["ted"] = {"Tepo Krumen"},
["tee"] = {"Huehuetla Tepehua"},
["tef"] = {"Teressa"},
["teg"] = {"Teke-Tege"},
["teh"] = {"Tehuelçhish"},
["tei"] = {"Torricelli"},
["tek"] = {"Ibali Teke"},
["tem"] = {"Timne"},
["ten"] = {"Tama (y Cholombey)"},
["teo"] = {"Teso"},
["tep"] = {"Tepecano"},
["teq"] = {"Temein"},
["ter"] = {"Tereno"},
["tes"] = {"Tengger"},
["tet"] = {"Tetum"},
["teu"] = {"Soo"},
["tev"] = {"Teor"},
["tew"] = {"Tewa (SUA)"},
["tex"] = {"Tennet"},
["tey"] = {"Tulishi"},
["tez"] = {"Tetserret"},
["tfi"] = {"Tofin Gbe"},
["tfn"] = {"Tanaina"},
["tfo"] = {"Tefaro"},
["tfr"] = {"Teribe"},
["tft"] = {"Ternate"},
["tga"] = {"Sagalla"},
["tgb"] = {"Tobilung"},
["tgc"] = {"Tigak"},
["tgd"] = {"Ciwogai"},
["tge"] = {"Tamang Hiar Gorkha"},
["tgf"] = {"Chalikha"},
["tgh"] = {"Creeole Baarle Tobago"},
["tgi"] = {"Lawunuia"},
["tgj"] = {"Tagin"},
["tgn"] = {"Tandaganon"},
["tgo"] = {"Sudest"},
["tgp"] = {"Tangoa"},
["tgq"] = {"Tring"},
["tgr"] = {"Tareng"},
["tgs"] = {"Nume"},
["tgt"] = {"Tagbanwa Veanagh"},
["tgu"] = {"Tanggu"},
["tgv"] = {"Tingui-Boto"},
["tgw"] = {"Tagwana Senoufo"},
["tgx"] = {"Tagish"},
["tgy"] = {"Togoyo"},
["tgz"] = {"Tagalaka"},
["thd"] = {"Kuuk Thaayorre", "Thayore"},
["the"] = {"Chitwania Tharu"},
["thf"] = {"Thangmi"},
["thh"] = {"Tarahumara Hwoaie"},
["thi"] = {"Tai Long"},
["thk"] = {"Tharaka", "Kitharaka"},
["thl"] = {"Dangaura Tharu"},
["thm"] = {"Aheu"},
["thn"] = {"Thachanadan"},
["thp"] = {"Thompson"},
["thq"] = {"Kochila Tharu"},
["thr"] = {"Rana Tharu"},
["ths"] = {"Thakali"},
["tht"] = {"Tahltan"},
["thu"] = {"Thuri"},
["thv"] = {"Tahaggart Tamahaq"},
["thy"] = {"Tha"},
["thz"] = {"Tayart Tamajeq"},
["tia"] = {"Tamazight Tidikelt"},
["tic"] = {"Tira"},
["tif"] = {"Tifal"},
["tig"] = {"Tigre"},
["tih"] = {"Timugon Murut"},
["tii"] = {"Tiene"},
["tij"] = {"Tilung"},
["tik"] = {"Tikar"},
["til"] = {"Tillamook"},
["tim"] = {"Timbe"},
["tin"] = {"Tindi"},
["tio"] = {"Teop"},
["tip"] = {"Trimuris"},
["tiq"] = {"Tiéfo"},
["tis"] = {"Masadiit Itneg"},
["tit"] = {"Tinigua"},
["tiu"] = {"Adasen"},
["tiv"] = {"Tiv"},
["tiw"] = {"Tiwi"},
["tix"] = {"Tiwa Yiass"},
["tiy"] = {"Tiruray"},
["tiz"] = {"Tai Hongjin"},
["tja"] = {"Tajuasohn"},
["tjg"] = {"Tunjung"},
["tji"] = {"Tujia Hwoaie"},
["tjj"] = {"Tjungundji"},
["tjl"] = {"Tai Laing"},
["tjm"] = {"Timucua"},
["tjn"] = {"Tonjon"},
["tjo"] = {"Tamazight Témacine"},
["tjp"] = {"Tjupany"},
["tjs"] = {"Tujia Yiass"},
["tju"] = {"Tjurruru"},
["tjw"] = {"Djabwurrung"},
["tka"] = {"Truká"},
["tkb"] = {"Buksa"},
["tkd"] = {"Tukudede"},
["tke"] = {"Takwane"},
["tkf"] = {"Tukumanféd"},
["tkg"] = {"Malagasish Tesaka"},
["tkl"] = {"Tokelauish"},
["tkm"] = {"Takelma"},
["tkn"] = {"Toku-No-Shima"},
["tkp"] = {"Tikopia"},
["tkq"] = {"Tee"},
["tkr"] = {"Tsakhurish"},
["tks"] = {"Takestaanish"},
["tkt"] = {"Kathoriya Tharu"},
["tku"] = {"Totonac Necaxa Heose"},
["tkv"] = {"Mur Pano"},
["tkw"] = {"Teanu"},
["tkx"] = {"Tangko"},
["tkz"] = {"Takua"},
["tla"] = {"Tepehuan Heear Yiass"},
["tlb"] = {"Tobelo"},
["tlc"] = {"Totonac Yecuatla"},
["tld"] = {"Talaud"},
["tlf"] = {"Telefol"},
["tlg"] = {"Tofanma"},
["tlh"] = {"Klingon", "tlhIngan Hol"},
["tli"] = {"Tlingit"},
["tlj"] = {"Talinga-Bwisi"},
["tlk"] = {"Taloki"},
["tll"] = {"Tetela"},
["tlm"] = {"Tolomako"},
["tln"] = {"Talondo'"},
["tlo"] = {"Talodi"},
["tlp"] = {"Totonac Filomena Mata-Coahuitlán"},
["tlq"] = {"Tai Loi"},
["tlr"] = {"Talise"},
["tls"] = {"Tambotalo"},
["tlt"] = {"Sou Nama", "Teluti"},
["tlu"] = {"Tulehu"},
["tlv"] = {"Taliabu"},
["tlx"] = {"Khehek"},
["tly"] = {"Talysh"},
["tma"] = {"Tama (Shad)"},
["tmb"] = {"Katbol", "Avava"},
["tmc"] = {"Tumak"},
["tmd"] = {"Haruai"},
["tme"] = {"Tremembé"},
["tmf"] = {"Toba-Maskoy"},
["tmg"] = {"Ternateño"},
["tmh"] = {"Tamashek"},
["tmi"] = {"Tutuba"},
["tmj"] = {"Samarokena"},
["tml"] = {"Tamnim Citak"},
["tmm"] = {"Tai Thanh"},
["tmn"] = {"Taman (yn Indoneesh)"},
["tmo"] = {"Temoq"},
["tmq"] = {"Tumleo"},
["tmr"] = {"Aramaaish Vabylonagh Ewagh (ca. 200-1200 BNJ)"},
["tms"] = {"Tima"},
["tmt"] = {"Tasmate"},
["tmu"] = {"Iau"},
["tmv"] = {"Tembo (Motembo)"},
["tmw"] = {"Temuan"},
["tmy"] = {"Tami"},
["tmz"] = {"Tamanaku"},
["tna"] = {"Tacana"},
["tnb"] = {"Tunebo Heear"},
["tnc"] = {"Tanimuca-Retuarã"},
["tnd"] = {"Angosturas Tunebo"},
["tng"] = {"Tobanga"},
["tnh"] = {"Maiani"},
["tni"] = {"Tandia"},
["tnk"] = {"Kwamera"},
["tnl"] = {"Lenakel"},
["tnm"] = {"Tabla"},
["tnn"] = {"Tanna Hwoaie"},
["tno"] = {"Toromono"},
["tnp"] = {"Whitesands"},
["tnq"] = {"Taino"},
["tnr"] = {"Ménik"},
["tns"] = {"Tenis"},
["tnt"] = {"Tontemboan"},
["tnu"] = {"Tay Khang"},
["tnv"] = {"Tangchangya"},
["tnw"] = {"Tonsawang"},
["tnx"] = {"Tanema"},
["tny"] = {"Tongwe"},
["tnz"] = {"Ten'edn"},
["tob"] = {"Toba"},
["toc"] = {"Totonac Coyutla"},
["tod"] = {"Toma"},
["tof"] = {"Gizrra"},
["tog"] = {"Tonga (Nyasa)"},
["toh"] = {"Gitonga"},
["toi"] = {"Tonga (y Tambia)"},
["toj"] = {"Tojolabal"},
["tok"] = {"Toki Pona"},
["tol"] = {"Tolowa"},
["tom"] = {"Tombulu"},
["too"] = {"Totonac Xicotepec De Juárez"},
["top"] = {"Totonac Papantla"},
["toq"] = {"Toposa"},
["tor"] = {"Togbo-Vara Banda"},
["tos"] = {"Totonac Sleitoil"},
["tou"] = {"Tho"},
["tov"] = {"Taromi Eaghtyragh"},
["tow"] = {"Jemez"},
["tox"] = {"Tobian"},
["toy"] = {"Topoiyo"},
["toz"] = {"To"},
["tpa"] = {"Taupota"},
["tpc"] = {"Me'phaa Azoyú", "Tlapanec Azoyú"},
["tpe"] = {"Tippera"},
["tpf"] = {"Tarpia"},
["tpg"] = {"Kula"},
["tpi"] = {"Tok Pisin"},
["tpj"] = {"Tapieté"},
["tpk"] = {"Tupinikin"},
["tpl"] = {"Me'phaa Tlacoapa", "Tlapanec Tlacoapa"},
["tpm"] = {"Tampulma"},
["tpn"] = {"Tupinambá"},
["tpo"] = {"Tai Pao"},
["tpp"] = {"Tepehua Pisaflores"},
["tpq"] = {"Tukpa"},
["tpr"] = {"Tuparí"},
["tpt"] = {"Tepehua Tlachichilco"},
["tpu"] = {"Tampuan"},
["tpv"] = {"Tanapag"},
["tpx"] = {"Me'phaa Acatepec", "Tlapanec Acatepec"},
["tpy"] = {"Trumai"},
["tpz"] = {"Tinputz"},
["tqb"] = {"Tembé"},
["tql"] = {"Lehali"},
["tqm"] = {"Turumsa"},
["tqn"] = {"Tenino"},
["tqo"] = {"Toaripi"},
["tqp"] = {"Tomoip"},
["tqq"] = {"Tunni"},
["tqr"] = {"Torona"},
["tqt"] = {"Totonac Heear"},
["tqu"] = {"Touo"},
["tqw"] = {"Tonkawa"},
["tra"] = {"Tirahi"},
["trb"] = {"Terebu"},
["trc"] = {"Copala Triqui"},
["trd"] = {"Turi"},
["tre"] = {"Tarangan Hiar"},
["trf"] = {"Creeole Baarle Trinaidagh"},
["trg"] = {"Lishán Didán"},
["trh"] = {"Turaka"},
["tri"] = {"Trió"},
["trj"] = {"Toram"},
["trk"] = {"çhengaghyn Turkagh"},
["trl"] = {"Albinish Romanagh"},
["trm"] = {"Tregami"},
["trn"] = {"Trinitario"},
["tro"] = {"Tarao Naga"},
["trp"] = {"Kok Borok"},
["trq"] = {"Triqui San Martín Itunyoso"},
["trr"] = {"Taushiro"},
["trs"] = {"Triqui Chicahuaxtla"},
["trt"] = {"Tunggare"},
["tru"] = {"Turoyo", "Surayt"},
["trv"] = {"Sediq", "Seediq", "Taroko"},
["trw"] = {"Torwali"},
["trx"] = {"Bidayuh Tringgus-Sembaan"},
["try"] = {"Turung"},
["trz"] = {"Torá"},
["tsa"] = {"Tsaangi"},
["tsb"] = {"Tsamai"},
["tsc"] = {"Tswa"},
["tsd"] = {"Tsakonish"},
["tse"] = {"Çhengey Chowree Hooneeshagh"},
["tsg"] = {"Tausug"},
["tsh"] = {"Tsuvan"},
["tsi"] = {"Tsimshian"},
["tsj"] = {"Tshangla"},
["tsk"] = {"Tseku"},
["tsl"] = {"Ts'ün-Lao"},
["tsm"] = {"Çhengey Chowree Hurkagh", "Türk İşaret Dili"},
["tsp"] = {"Tusya Hwoaie"},
["tsq"] = {"Çhengey Chowree Thai"},
["tsr"] = {"Akei"},
["tss"] = {"Çhengey Chowree Haiwaanagh"},
["tst"] = {"Tondi Songway Kiini"},
["tsu"] = {"Tsou"},
["tsv"] = {"Tsogo"},
["tsw"] = {"Tsishingini"},
["tsx"] = {"Mubami"},
["tsy"] = {"Çhengey Chowree Tebul"},
["tsz"] = {"Purepecha"},
["tta"] = {"Tutelo"},
["ttb"] = {"Gaa"},
["ttc"] = {"Tektiteko"},
["ttd"] = {"Tauade"},
["tte"] = {"Bwanabwana"},
["ttf"] = {"Tuotomb"},
["ttg"] = {"Tutong"},
["tth"] = {"Ta'oih Heose"},
["tti"] = {"Tobati"},
["ttj"] = {"Tooro"},
["ttk"] = {"Totoro"},
["ttl"] = {"Totela"},
["ttm"] = {"Tutchone Hwoaie"},
["ttn"] = {"Towei"},
["tto"] = {"Ta'oih Injil"},
["ttp"] = {"Tombelala"},
["ttq"] = {"Tamajaq Tawallammat"},
["ttr"] = {"Tera"},
["tts"] = {"Thai Hiar Hwoaie"},
["ttt"] = {"Tatish Voslymagh"},
["ttu"] = {"Torau"},
["ttv"] = {"Titan"},
["ttw"] = {"Long Wat"},
["tty"] = {"Sikaritai"},
["ttz"] = {"Tsum"},
["tua"] = {"Wiarumus"},
["tub"] = {"Tübatulabal"},
["tuc"] = {"Mutu"},
["tud"] = {"Tuxá"},
["tue"] = {"Tuyuca"},
["tuf"] = {"Tunebo Veanagh"},
["tug"] = {"Tunia"},
["tuh"] = {"Taulil"},
["tui"] = {"Tupuri"},
["tuj"] = {"Tugutil"},
["tul"] = {"Tula"},
["tum"] = {"Tumbukish"},
["tun"] = {"Tunica"},
["tuo"] = {"Tucano"},
["tup"] = {"çhengaghyn Tupi"},
["tuq"] = {"Tedaga"},
["tus"] = {"Tuscarora"},
["tut"] = {"çhengaghyn Altaiagh"},
["tuu"] = {"Tututni"},
["tuv"] = {"Turkana"},
["tuw"] = {"çhengaghyn Tungusagh"},
["tux"] = {"Tuxináwa"},
["tuy"] = {"Tugen"},
["tuz"] = {"Turka"},
["tva"] = {"Vaghua"},
["tvd"] = {"Tsuvadi"},
["tve"] = {"Te'un"},
["tvi"] = {"Tulai"},
["tvk"] = {"Ambrym Hiar Yiass"},
["tvl"] = {"Tuvalu"},
["tvm"] = {"Tela-Masbuar"},
["tvn"] = {"Tavoyan"},
["tvo"] = {"Tidore"},
["tvs"] = {"Taveta"},
["tvt"] = {"Naga Tutsa"},
["tvu"] = {"Tunen"},
["tvw"] = {"Sedoa"},
["tvx"] = {"Taivoan"},
["tvy"] = {"Timorish Vrisht"},
["twa"] = {"Twana"},
["twb"] = {"Tawbuid Heear"},
["twc"] = {"Teshenawa"},
["twd"] = {"Twents"},
["twe"] = {"Tewa (yn Indoneesh)"},
["twf"] = {"Tiwa Hwoaie"},
["twg"] = {"Tereweng"},
["twh"] = {"Tai Dón"},
["twl"] = {"Tawara"},
["twm"] = {"Tawang Monpa"},
["twn"] = {"Twendi"},
["two"] = {"Tswapong"},
["twp"] = {"Ere"},
["twq"] = {"Tasawaq"},
["twr"] = {"Tarahumara Heear Yiass"},
["twt"] = {"Turiwára"},
["twu"] = {"Termanu"},
["tww"] = {"Tuwari"},
["twx"] = {"Tewe"},
["twy"] = {"Tawoyan"},
["txa"] = {"Tombonuo"},
["txb"] = {"Tokharish B"},
["txc"] = {"Tsetsaut"},
["txe"] = {"Totoli"},
["txg"] = {"Tangut"},
["txh"] = {"Thrackish"},
["txi"] = {"Ikpeng"},
["txj"] = {"Tarjumo"},
["txm"] = {"Tomini"},
["txn"] = {"Tarangan Heear"},
["txo"] = {"Toto"},
["txq"] = {"Tii"},
["txr"] = {"Tartessish"},
["txs"] = {"Tonsea"},
["txt"] = {"Citak"},
["txu"] = {"Kayapó"},
["txx"] = {"Tatana"},
["txy"] = {"Malagasish Tanosy"},
["tya"] = {"Tauya"},
["tye"] = {"Kyanga"},
["tyh"] = {"O'du"},
["tyi"] = {"Teke-Tsaayi"},
["tyj"] = {"Tai Do", "Tai Yo"},
["tyl"] = {"Thu Lao"},
["tyn"] = {"Kombai"},
["typ"] = {"Thaypan"},
["tyr"] = {"Tai Daeng"},
["tys"] = {"Tày Sa Pa"},
["tyt"] = {"Tày Tac"},
["tyu"] = {"Kua"},
["tyv"] = {"Tuvish"},
["tyx"] = {"Teke-Tyee"},
["tyy"] = {"Tiyaa"},
["tyz"] = {"Tày"},
["tza"] = {"Çhengey Chowree Tanzania"},
["tzh"] = {"Tzeltal"},
["tzj"] = {"Tz'utujil"},
["tzl"] = {"Talossan"},
["tzm"] = {"Tamazight Atlas Veanagh"},
["tzn"] = {"Tugun"},
["tzo"] = {"Tzotzil"},
["tzx"] = {"Tabriak"},
["uam"] = {"Uamué"},
["uan"] = {"Kuan"},
["uar"] = {"Tairuma"},
["uba"] = {"Ubang"},
["ubi"] = {"Ubi"},
["ubl"] = {"Buhi'non Bikol"},
["ubr"] = {"Ubir"},
["ubu"] = {"Umbu-Ungu"},
["uby"] = {"Ubykhish"},
["uda"] = {"Uda"},
["ude"] = {"Udihe"},
["udg"] = {"Muduga"},
["udi"] = {"Udi"},
["udj"] = {"Ujir"},
["udl"] = {"Wuzlam"},
["udm"] = {"Udmurtish"},
["udu"] = {"Uduk"},
["ues"] = {"Kioko"},
["ufi"] = {"Ufim"},
["uga"] = {"Oogaritish"},
["ugb"] = {"Kuku-Ugbanh"},
["uge"] = {"Ughele"},
["ugh"] = {"Kubachi"},
["ugn"] = {"Çhengey Chowree Oogandagh"},
["ugo"] = {"Ugong"},
["ugy"] = {"Çhengey Chowree Ooraguayagh"},
["uha"] = {"Uhami"},
["uhn"] = {"Damal"},
["uis"] = {"Uisai"},
["uiv"] = {"Iyive"},
["uji"] = {"Tanjijili"},
["uka"] = {"Kaburi"},
["ukg"] = {"Ukuriguma"},
["ukh"] = {"Ukhwejo"},
["uki"] = {"Kui (yn Injey)"},
["ukk"] = {"Muak Sa-aak"},
["ukl"] = {"Çhengey Chowree Ookraanagh"},
["ukp"] = {"Ukpe-Bayobiri"},
["ukq"] = {"Ukwa"},
["uks"] = {"Çhengey Chowree Urubú-Kaapor", "Çhengey Chowree Kaapor"},
["uku"] = {"Ukue"},
["ukv"] = {"Kuku"},
["ukw"] = {"Ukwuani-Aboh-Ndoni"},
["uky"] = {"Kuuk-Yak"},
["ula"] = {"Fungwa"},
["ulb"] = {"Ulukwumi"},
["ulc"] = {"Ulch"},
["ule"] = {"Lule"},
["ulf"] = {"Usku", "Afra"},
["uli"] = {"Ulithish"},
["ulk"] = {"Meriam Mir"},
["ull"] = {"Ullatan"},
["ulm"] = {"Ulumanda'"},
["uln"] = {"Unserdeutsch"},
["ulu"] = {"Uma' Lung"},
["ulw"] = {"Ulwa"},
["uly"] = {"Buli"},
["uma"] = {"Umatilla"},
["umb"] = {"Umbundu"},
["umc"] = {"Marrucinish"},
["umd"] = {"Umbindhamu"},
["umg"] = {"Morrobalama", "Umbuygamu"},
["umi"] = {"Ukit"},
["umm"] = {"Umon"},
["umn"] = {"Makyan Naga"},
["umo"] = {"Umotína"},
["ump"] = {"Umpila"},
["umr"] = {"Umbugarla"},
["ums"] = {"Pendau"},
["umu"] = {"Munsee"},
["una"] = {"Watut Hwoaie"},
["und"] = {"Neuoolit"},
["une"] = {"Uneme"},
["ung"] = {"Ngarinyin"},
["uni"] = {"Uni"},
["unk"] = {"Enawené-Nawé"},
["unm"] = {"Unami"},
["unn"] = {"Kurnai"},
["unr"] = {"Mundari"},
["unu"] = {"Unubahe"},
["unx"] = {"Munda"},
["unz"] = {"Unde Kaili"},
["uon"] = {"Kulon"},
["upi"] = {"Umeda"},
["upv"] = {"Uripiv-Wala-Rano-Atchin"},
["ura"] = {"Urarina"},
["urb"] = {"Urubú-Kaapor", "Kaapor"},
["urc"] = {"Urningangg"},
["ure"] = {"Uru"},
["urf"] = {"Uradhi"},
["urg"] = {"Urigina"},
["urh"] = {"Urhobo"},
["uri"] = {"Urim"},
["urj"] = {"çhengaghyn Ooralagh"},
["urk"] = {"Urak Lawoi'"},
["url"] = {"Urali"},
["urm"] = {"Urapmin"},
["urn"] = {"Uruangnirin"},
["uro"] = {"Ura (Papooey Guinea Noa)"},
["urp"] = {"Uru-Pa-In"},
["urr"] = {"Lehalurup", "Löyöp"},
["urt"] = {"Urat"},
["uru"] = {"Urumi"},
["urv"] = {"Uruava"},
["urw"] = {"Sop"},
["urx"] = {"Urimo"},
["ury"] = {"Orya"},
["urz"] = {"Uru-Eu-Wau-Wau"},
["usa"] = {"Usarufa"},
["ush"] = {"Ushojo"},
["usi"] = {"Usui"},
["usk"] = {"Usaghade"},
["usp"] = {"Uspanteco"},
["uss"] = {"us-Saare"},
["usu"] = {"Uya"},
["uta"] = {"Otank"},
["ute"] = {"Ute-Paiute Yiass"},
["uth"] = {"ut-Hun"},
["utp"] = {"Amba (Ellanyn Solomon)"},
["utr"] = {"Etulo"},
["utu"] = {"Utu"},
["uum"] = {"Urum"},
["uur"] = {"Ura (Vanuatu)"},
["uuu"] = {"U"},
["uve"] = {"Uveish Heear", "Fagauvea"},
["uvh"] = {"Uri"},
["uvl"] = {"Lote"},
["uwa"] = {"Kuku-Uwanh"},
["uya"] = {"Doko-Uyanga"},
["uzn"] = {"Oosbeckish Hwoaie"},
["uzs"] = {"Oosbeckish Yiass"},
["vaa"] = {"Vaagri Booli"},
["vae"] = {"Vale"},
["vaf"] = {"Vafsi"},
["vag"] = {"Vagla"},
["vah"] = {"Varhadi-Nagpuri"},
["vai"] = {"Vai"},
["vaj"] = {"Sekele", "ǃKung Heear Hwoaie", "Vasekele"},
["val"] = {"Vehes"},
["vam"] = {"Vanimo"},
["van"] = {"Valman"},
["vao"] = {"Vao"},
["vap"] = {"Vaiphei"},
["var"] = {"Huarijio"},
["vas"] = {"Vasavi"},
["vau"] = {"Vanuma"},
["vav"] = {"Varli"},
["vay"] = {"Wayu"},
["vbb"] = {"Babar Hiar Yiass"},
["vbk"] = {"Bontok Heear Yiass"},
["vec"] = {"Veneeshish"},
["ved"] = {"Veddah"},
["vel"] = {"Veluws"},
["vem"] = {"Vemgo-Mabas"},
["veo"] = {"Ventureño"},
["vep"] = {"Vepsish"},
["ver"] = {"Mom Jango"},
["vgr"] = {"Vaghri"},
["vgt"] = {"Vlaamse Gebarentaal", "Çhengey Chowree Landrynagh"},
["vic"] = {"Creeole Baarle Ellanyn y Voidyn"},
["vid"] = {"Vidunda"},
["vif"] = {"Vili"},
["vig"] = {"Viemo"},
["vil"] = {"Vilela"},
["vin"] = {"Vinza"},
["vis"] = {"Vishavan"},
["vit"] = {"Viti"},
["viv"] = {"Iduna"},
["vjk"] = {"Bajjika"},
["vka"] = {"Kariyarra"},
["vkj"] = {"Kujarge"},
["vkk"] = {"Kaur"},
["vkl"] = {"Kulisusu"},
["vkm"] = {"Kamakan"},
["vkn"] = {"Koro Nulu"},
["vko"] = {"Kodeoha"},
["vkp"] = {"Creeole Portiugish Korlai"},
["vkt"] = {"Malayish Tenggarong Kutai"},
["vku"] = {"Kurrama"},
["vkz"] = {"Koro Zuba"},
["vlp"] = {"Valpei"},
["vls"] = {"Vlaams"},
["vma"] = {"Martuyhunira"},
["vmb"] = {"Barbaram"},
["vmc"] = {"Mixtecish Juxtlahuaca"},
["vmd"] = {"Mudu Koraga"},
["vme"] = {"Masela Hiar"},
["vmf"] = {"Mainfränkisch"},
["vmg"] = {"Lungalunga"},
["vmh"] = {"Maraghei"},
["vmi"] = {"Miwa"},
["vmj"] = {"Mixtecish Ixtayutla"},
["vmk"] = {"Makhuwa-Shirima"},
["vml"] = {"Malgana"},
["vmm"] = {"Mixtecish Mitlatongo"},
["vmp"] = {"Mazatec Soyaltepec"},
["vmq"] = {"Mixtecish Soyaltepec"},
["vmr"] = {"Marenje"},
["vms"] = {"Moksela"},
["vmu"] = {"Muluridyi"},
["vmv"] = {"Maidu Ghlionney"},
["vmw"] = {"Makhuwa"},
["vmx"] = {"Mixtecish Tamazola"},
["vmy"] = {"Mazatec Ayautla"},
["vmz"] = {"Mazatec Mazatlán"},
["vnk"] = {"Vano", "Lovono"},
["vnm"] = {"Vinmavis", "Neve'ei"},
["vnp"] = {"Vunapu"},
["vor"] = {"Voroish"},
["vot"] = {"Votish"},
["vra"] = {"Vera'a"},
["vro"] = {"Võro"},
["vrs"] = {"Varisi"},
["vrt"] = {"Burmbar", "Banam Bay"},
["vsi"] = {"Çhengey Chowree Voldovagh"},
["vsl"] = {"Çhengey Chowree Veneswaalagh"},
["vsv"] = {"Çhengey Chowree Valensianagh", "Llengua de signes valenciana"},
["vto"] = {"Vitou"},
["vum"] = {"Vumbu"},
["vun"] = {"Vunjo"},
["vut"] = {"Vute"},
["vwa"] = {"Awa (y Çheen)"},
["waa"] = {"Walla Walla"},
["wab"] = {"Wab"},
["wac"] = {"Wasco-Wishram"},
["wad"] = {"Wamesa", "Wondama"},
["wae"] = {"Walser"},
["waf"] = {"Wakoná"},
["wag"] = {"Wa'ema"},
["wah"] = {"Watubela"},
["wai"] = {"Wares"},
["waj"] = {"Waffa"},
["wak"] = {"çhengaghyn Wakashagh"},
["wal"] = {"Wolaytta", "Wolaitta"},
["wam"] = {"Wampanoag"},
["wan"] = {"Wan"},
["wao"] = {"Wappo"},
["wap"] = {"Wapishana"},
["waq"] = {"Wagiman"},
["war"] = {"Waray (ny h-Ellanyn Philippeenagh)"},
["was"] = {"Washo"},
["wat"] = {"Kaninuwa"},
["wau"] = {"Waurá"},
["wav"] = {"Waka"},
["waw"] = {"Waiwai"},
["wax"] = {"Watam", "Marangis"},
["way"] = {"Wayana"},
["waz"] = {"Wampur"},
["wba"] = {"Warao"},
["wbb"] = {"Wabo"},
["wbe"] = {"Waritai"},
["wbf"] = {"Wara"},
["wbh"] = {"Wanda"},
["wbi"] = {"Vwanji"},
["wbj"] = {"Alagwa"},
["wbk"] = {"Waigali"},
["wbl"] = {"Wakhi"},
["wbm"] = {"Wa"},
["wbp"] = {"Warlpiri"},
["wbq"] = {"Waddar"},
["wbr"] = {"Wagdi"},
["wbs"] = {"Çhengey Chowree y Vengaal Heear"},
["wbt"] = {"Warnman"},
["wbv"] = {"Wajarri"},
["wbw"] = {"Woi"},
["wca"] = {"Yanomámi"},
["wci"] = {"Waci Gbe"},
["wdd"] = {"Wandji"},
["wdg"] = {"Wadaginam"},
["wdj"] = {"Wadjiginy"},
["wdk"] = {"Wadikali"},
["wdt"] = {"Wendat"},
["wdu"] = {"Wadjigu"},
["wdy"] = {"Wadjabangayi"},
["wea"] = {"Wewaw"},
["wec"] = {"Wè Heear"},
["wed"] = {"Wedau"},
["weg"] = {"Wergaia"},
["weh"] = {"Weh"},
["wei"] = {"Kiunum"},
["wem"] = {"Weme Gbe"},
["wen"] = {"çhengaghyn Sorbagh"},
["weo"] = {"Wemale"},
["wep"] = {"Westphalien"},
["wer"] = {"Weri"},
["wes"] = {"Cameroonish Vrisht"},
["wet"] = {"Perai"},
["weu"] = {"Rawngtu Chin"},
["wew"] = {"Wejewa"},
["wfg"] = {"Yafi", "Zorop"},
["wga"] = {"Wagaya"},
["wgb"] = {"Wagawaga"},
["wgg"] = {"Wangkangurru", "Wangganguru"},
["wgi"] = {"Wahgi"},
["wgo"] = {"Waigeo"},
["wgu"] = {"Wirangu"},
["wgy"] = {"Warrgamay"},
["wha"] = {"Sou Upaa", "Manusela"},
["whg"] = {"Wahgi Hwoaie"},
["whk"] = {"Wahau Kenyah"},
["whu"] = {"Wahau Kayan"},
["wib"] = {"Tusya Yiass"},
["wic"] = {"Wichita"},
["wie"] = {"Wik-Epa"},
["wif"] = {"Wik-Keyangan"},
["wig"] = {"Wik Ngathan"},
["wih"] = {"Wik-Me'anha"},
["wii"] = {"Minidien"},
["wij"] = {"Wik-Iiyanh"},
["wik"] = {"Wikalkan"},
["wil"] = {"Wilawila"},
["wim"] = {"Wik-Mungkan"},
["win"] = {"Ho-Chunk"},
["wir"] = {"Wiraféd"},
["wiu"] = {"Wiru"},
["wiv"] = {"Vitu"},
["wiy"] = {"Wiyot"},
["wja"] = {"Waja"},
["wji"] = {"Warji"},
["wka"] = {"Kw'adza"},
["wkb"] = {"Kumbaran"},
["wkd"] = {"Wakde", "Mo"},
["wkl"] = {"Kalanadi"},
["wkr"] = {"Keerray-Woorroong"},
["wku"] = {"Kunduvadi"},
["wkw"] = {"Wakawaka"},
["wky"] = {"Wangkayutyuru"},
["wla"] = {"Walio"},
["wlc"] = {"Comoroish Mwali"},
["wle"] = {"Wolane"},
["wlg"] = {"Kunbarlang"},
["wlh"] = {"Welaun"},
["wli"] = {"Waioli"},
["wlk"] = {"Wailaki"},
["wll"] = {"Wali (y Toodaan)"},
["wlm"] = {"Bretnish Veanagh"},
["wlo"] = {"Wolio"},
["wlr"] = {"Wailapa"},
["wls"] = {"Wallisish"},
["wlu"] = {"Wuliwuli"},
["wlv"] = {"Wichí Lhamtés Vejoz"},
["wlw"] = {"Walak"},
["wlx"] = {"Wali (y Ghaney)"},
["wly"] = {"Waling"},
["wma"] = {"Mawa (y Naigeer)"},
["wmb"] = {"Wambaya"},
["wmc"] = {"Wamas"},
["wmd"] = {"Mamaindé"},
["wme"] = {"Wambule"},
["wmg"] = {"Minyag Heear"},
["wmh"] = {"Waima'a"},
["wmi"] = {"Wamin"},
["wmm"] = {"Maiwa (yn Indoneesh)"},
["wmn"] = {"Waamwang"},
["wmo"] = {"Wom (Papooey Guinea Noa)"},
["wms"] = {"Wambon"},
["wmt"] = {"Walmajarri"},
["wmw"] = {"Mwani"},
["wmx"] = {"Womo"},
["wnb"] = {"Mokati"},
["wnc"] = {"Wantoat"},
["wnd"] = {"Wandarang"},
["wne"] = {"Waneci"},
["wng"] = {"Wanggom"},
["wni"] = {"Comoroish Ndzwani"},
["wnk"] = {"Wanukaka"},
["wnm"] = {"Wanggamala"},
["wnn"] = {"Wunumara"},
["wno"] = {"Wano"},
["wnp"] = {"Wanap"},
["wnu"] = {"Usan"},
["wnw"] = {"Wintu"},
["wny"] = {"Wanyi", "Waanyi"},
["woa"] = {"Kuwema", "Tyaraity"},
["wob"] = {"Wè Hwoaie"},
["woc"] = {"Wogeo"},
["wod"] = {"Wolani"},
["woe"] = {"Woleaish"},
["wof"] = {"Wolofish Ghambiagh"},
["wog"] = {"Wogamusin"},
["woi"] = {"Kamang"},
["wok"] = {"Longto"},
["wom"] = {"Wom (y Naigeer)"},
["won"] = {"Wongo"},
["woo"] = {"Manombai"},
["wor"] = {"Woria"},
["wos"] = {"Hundish Hanga"},
["wow"] = {"Wawonii"},
["woy"] = {"Weyto"},
["wpc"] = {"Maco"},
["wrb"] = {"Waluwarra", "Warluwara"},
["wrg"] = {"Warungu", "Gudjal"},
["wrh"] = {"Wiradjuri"},
["wri"] = {"Wariyangga"},
["wrk"] = {"Garrwa"},
["wrl"] = {"Warlmanpa"},
["wrm"] = {"Warumungu"},
["wrn"] = {"Warnang"},
["wro"] = {"Worrorra"},
["wrp"] = {"Waropen"},
["wrr"] = {"Wardaman"},
["wrs"] = {"Waris"},
["wru"] = {"Waru"},
["wrv"] = {"Waruna"},
["wrw"] = {"Gugu Warra"},
["wrx"] = {"Wae Rana"},
["wry"] = {"Merwari"},
["wrz"] = {"Waray (yn Austrail)"},
["wsa"] = {"Warembori"},
["wsg"] = {"Adilabad Gondi"},
["wsi"] = {"Wusi"},
["wsk"] = {"Waskia"},
["wsr"] = {"Owenia"},
["wss"] = {"Wasa"},
["wsu"] = {"Wasu"},
["wsv"] = {"Wotapuri-Katarqalai"},
["wtb"] = {"Matambwe"},
["wtf"] = {"Watiwa"},
["wth"] = {"Wathawurrung"},
["wti"] = {"Berta"},
["wtk"] = {"Watakataui"},
["wtm"] = {"Mewati"},
["wtw"] = {"Wotu"},
["wua"] = {"Wikngenchera"},
["wub"] = {"Wunambal"},
["wud"] = {"Wudu"},
["wuh"] = {"Wutunhua"},
["wul"] = {"Silimo"},
["wum"] = {"Wumbvu"},
["wun"] = {"Bungu"},
["wur"] = {"Wurrugu"},
["wut"] = {"Wutung"},
["wuu"] = {"Sheenish Wu"},
["wuv"] = {"Wuvulu-Aua"},
["wux"] = {"Wulna"},
["wuy"] = {"Wauyai"},
["wwa"] = {"Waama"},
["wwb"] = {"Wakabunga"},
["wwo"] = {"Wetamut", "Dorig"},
["wwr"] = {"Warrwa"},
["www"] = {"Wawa"},
["wxa"] = {"Waxianghua"},
["wxw"] = {"Wardandi"},
["wyb"] = {"Wangaaybuwan-Ngiyambaa"},
["wyi"] = {"Woiwurrung"},
["wym"] = {"Wymysorys"},
["wyn"] = {"Wyandot"},
["wyr"] = {"Wayoró"},
["wyy"] = {"Fijish Heear"},
["xaa"] = {"Arabish Andaloosagh"},
["xab"] = {"Sambe"},
["xac"] = {"Kachari"},
["xad"] = {"Adai"},
["xae"] = {"Aequish"},
["xag"] = {"Aghwan"},
["xai"] = {"Kaimbé"},
["xaj"] = {"Ararandewára"},
["xak"] = {"Máku"},
["xal"] = {"Kalmykish", "Oiratish"},
["xam"] = {"ǀXam"},
["xan"] = {"Xamtanga"},
["xao"] = {"Khao"},
["xap"] = {"Apalaçheeish"},
["xaq"] = {"Ackitaanish"},
["xar"] = {"Karami"},
["xas"] = {"Kamas"},
["xat"] = {"Katawixi"},
["xau"] = {"Kauwera"},
["xav"] = {"Xavánte"},
["xaw"] = {"Kawaiisu"},
["xay"] = {"Kayan Mahakam"},
["xbb"] = {"Burdekin Injil"},
["xbc"] = {"Bactrish"},
["xbd"] = {"Bindal"},
["xbe"] = {"Bigambal"},
["xbg"] = {"Bunganditj"},
["xbi"] = {"Kombio"},
["xbj"] = {"Birrpayi"},
["xbm"] = {"Britaanish Veanagh"},
["xbn"] = {"Kenaboi"},
["xbo"] = {"Bolgarish"},
["xbp"] = {"Bibbulman"},
["xbr"] = {"Kambera"},
["xbw"] = {"Kambiwá"},
["xby"] = {"Batjala", "Batyala"},
["xcb"] = {"Cumbrish"},
["xcc"] = {"Camunish"},
["xce"] = {"Celtibeirish"},
["xcg"] = {"Goalish Chisalpagh"},
["xch"] = {"Chemakum", "Chimakum"},
["xcl"] = {"Armeanish Chlassicagh"},
["xcm"] = {"Comecrudo"},
["xcn"] = {"Cotoname"},
["xco"] = {"Chorasmish"},
["xcr"] = {"Carian"},
["xct"] = {"Tibetish Chlassicagh"},
["xcu"] = {"Curonish"},
["xcv"] = {"Chuvantsy"},
["xcw"] = {"Coahuilteco"},
["xcy"] = {"Cayuse"},
["xda"] = {"Darkinyung"},
["xdc"] = {"Dackish"},
["xdk"] = {"Dharuk"},
["xdm"] = {"Edomish"},
["xdo"] = {"Kwandu"},
["xdq"] = {"Kaitag"},
["xdy"] = {"Dayak Valayagh"},
["xeb"] = {"Eblan"},
["xed"] = {"Hdi"},
["xeg"] = {"ǁXegwi"},
["xel"] = {"Kelo"},
["xem"] = {"Kembayan"},
["xep"] = {"Epi-Olmec"},
["xer"] = {"Xerénte"},
["xes"] = {"Kesawai"},
["xet"] = {"Xetá"},
["xeu"] = {"Keoru-Ahia"},
["xfa"] = {"Faliscish"},
["xga"] = {"Galaatish"},
["xgb"] = {"Gbin"},
["xgd"] = {"Gudang"},
["xgf"] = {"Gabrielino-Fernandeño"},
["xgg"] = {"Goreng"},
["xgi"] = {"Garingbal"},
["xgl"] = {"Galindan"},
["xgm"] = {"Dharumbal", "Guwinmal"},
["xgn"] = {"çhengaghyn Mongoilagh"},
["xgr"] = {"Garza"},
["xgu"] = {"Unggumi"},
["xgw"] = {"Guwa"},
["xha"] = {"Haramish"},
["xhc"] = {"Hunnish"},
["xhd"] = {"Hadrami"},
["xhe"] = {"Khetrani"},
["xhm"] = {"Khmerish Veanagh (1400 derrey 1850 BNJ)"},
["xhr"] = {"Hernicish"},
["xht"] = {"Hattish"},
["xhu"] = {"Hurrish"},
["xhv"] = {"Khua"},
["xib"] = {"Ibeirish"},
["xii"] = {"Xiri"},
["xil"] = {"Illyrish"},
["xin"] = {"Xinca"},
["xir"] = {"Xiriâna"},
["xis"] = {"Kisan"},
["xiv"] = {"Çhengey Ghlion yn Indus"},
["xiy"] = {"Xipaya"},
["xjb"] = {"Minjungbal"},
["xjt"] = {"Jaitmatang"},
["xka"] = {"Kalkoti"},
["xkb"] = {"Nago Hwoaie"},
["xkc"] = {"Kho'ini"},
["xkd"] = {"Kayan Mendalam"},
["xke"] = {"Kereho"},
["xkf"] = {"Khengkha"},
["xkg"] = {"Kagoro"},
["xki"] = {"Çhengey Chowree Cheinnagh"},
["xkj"] = {"Kajali"},
["xkk"] = {"Kachok", "Kaco'"},
["xkl"] = {"Kenyah Chadjin"},
["xkn"] = {"Kayan yn Awin Kayan"},
["xko"] = {"Kiorr"},
["xkp"] = {"Kabatei"},
["xkq"] = {"Koroni"},
["xkr"] = {"Xakriabá"},
["xks"] = {"Kumbewaha"},
["xkt"] = {"Kantosi"},
["xku"] = {"Kaamba"},
["xkv"] = {"Kgalagadi"},
["xkw"] = {"Kembra"},
["xkx"] = {"Karore"},
["xky"] = {"Uma' Lasan"},
["xkz"] = {"Kurtokha"},
["xla"] = {"Kamula"},
["xlb"] = {"Loup B"},
["xlc"] = {"Lyckish"},
["xld"] = {"Lydish"},
["xle"] = {"Lemnish"},
["xlg"] = {"Ligoorish (Henndeeagh)"},
["xli"] = {"Liburnish"},
["xln"] = {"Alanish"},
["xlo"] = {"Loup A"},
["xlp"] = {"Lepontish"},
["xls"] = {"Lusitaanish"},
["xlu"] = {"Luwish Yeenysagh"},
["xly"] = {"Elymish"},
["xma"] = {"Mushungulu"},
["xmb"] = {"Mbonga"},
["xmc"] = {"Makhuwa-Marrevone"},
["xmd"] = {"Mbudum"},
["xme"] = {"Medish"},
["xmf"] = {"Mingrelish"},
["xmg"] = {"Mengaka"},
["xmh"] = {"Kugu-Muminh"},
["xmj"] = {"Majera"},
["xmk"] = {"Massadoanish Henndeeagh"},
["xml"] = {"Çhengey Chowree Valaysiagh"},
["xmm"] = {"Malayish Manado"},
["xmn"] = {"Pershish Veanagh Vanichaeagh"},
["xmo"] = {"Morerebi"},
["xmp"] = {"Kuku-Mu'inh"},
["xmq"] = {"Kuku-Mangk"},
["xmr"] = {"Meroitish"},
["xms"] = {"Çhengey Chowree Varocagh"},
["xmt"] = {"Matbat"},
["xmu"] = {"Kamu"},
["xmv"] = {"Malagasish Antankarana", "Malagasish Tankarana"},
["xmw"] = {"Malagasish Tsimihety"},
["xmx"] = {"Salawati", "Maden"},
["xmy"] = {"Mayaguduna"},
["xmz"] = {"Mori Bawah"},
["xna"] = {"Arabish Hwoaie Henndeeagh"},
["xnb"] = {"Kanakanabu"},
["xnd"] = {"çhengaghyn Na-Dene"},
["xng"] = {"Mongoilish Veanagh"},
["xnh"] = {"Kuanhua"},
["xni"] = {"Ngarigu"},
["xnj"] = {"Ngoni (Tanzania)"},
["xnk"] = {"Nganakarti"},
["xnm"] = {"Ngumbarl"},
["xnn"] = {"Kankanay Hwoaie"},
["xno"] = {"Anglo-Normanish"},
["xnq"] = {"Ngoni (y Vosambeeck)"},
["xnr"] = {"Kangri"},
["xns"] = {"Kanashi"},
["xnt"] = {"Narragansett"},
["xnu"] = {"Nukunul"},
["xny"] = {"Nyiyaparli"},
["xnz"] = {"Kenzi", "Mattoki"},
["xoc"] = {"O'chi'chi'"},
["xod"] = {"Kokoda"},
["xog"] = {"Soga"},
["xoi"] = {"Kominimung"},
["xok"] = {"Xokleng"},
["xom"] = {"Komo (y Toodaan)"},
["xon"] = {"Konkomba"},
["xoo"] = {"Xukurú"},
["xop"] = {"Kopar"},
["xor"] = {"Korubo"},
["xow"] = {"Kowaki"},
["xpa"] = {"Pirriya"},
["xpb"] = {"Tasmanian Hiar Hwoaie", "Pyemmairrener"},
["xpc"] = {"Pecheneg"},
["xpd"] = {"Tasmaanish Oyster Bay"},
["xpe"] = {"Kpelle yn Laibeer"},
["xpf"] = {"Tasmaanish Hiar Yiass", "Nuenonne"},
["xpg"] = {"Phrygish"},
["xph"] = {"Tasmaanish Vean-çheerey Hwoaie", "Tyerrenoterpanner"},
["xpi"] = {"Pictish"},
["xpj"] = {"Mpalitjanh"},
["xpk"] = {"Kulina Pano"},
["xpl"] = {"Tasmaanish Port Sorell"},
["xpm"] = {"Pumpokol"},
["xpn"] = {"Kapinawá"},
["xpo"] = {"Pochutec"},
["xpp"] = {"Puyo-Paekche"},
["xpq"] = {"Moheganish-Pequot"},
["xpr"] = {"Parthish"},
["xps"] = {"Pisidish"},
["xpt"] = {"Punthamara"},
["xpu"] = {"Punish"},
["xpv"] = {"Tasmaanish Hwoaie", "Tommeginne"},
["xpw"] = {"Tasmaanish Heear Hwoaie", "Peerapper"},
["xpx"] = {"Tasmaanish Heear Yiass", "Toogee"},
["xpy"] = {"Puyo"},
["xpz"] = {"Tasmaanish Ellan Bruny"},
["xqa"] = {"Karakhanid"},
["xqt"] = {"Qatabanian"},
["xra"] = {"Krahô"},
["xrb"] = {"Karaboro Hiar"},
["xrd"] = {"Gundungurra"},
["xre"] = {"Kreye"},
["xrg"] = {"Minang"},
["xri"] = {"Krikati-Timbira"},
["xrm"] = {"Armazish"},
["xrn"] = {"Arin"},
["xrr"] = {"Raetish"},
["xrt"] = {"Aranama-Tamique"},
["xru"] = {"Marriammu"},
["xrw"] = {"Karawa"},
["xsa"] = {"Sabaean"},
["xsb"] = {"Sambal"},
["xsc"] = {"Scythish"},
["xsd"] = {"Sidetish"},
["xse"] = {"Sempan"},
["xsh"] = {"Shamang"},
["xsi"] = {"Sio"},
["xsj"] = {"Subi"},
["xsl"] = {"Slavish Yiass"},
["xsm"] = {"Kasem"},
["xsn"] = {"Sanga (y Naigeer)"},
["xso"] = {"Solano"},
["xsp"] = {"Silopi"},
["xsq"] = {"Makhuwa-Saka"},
["xsr"] = {"Sherpa"},
["xsu"] = {"Sanumá"},
["xsv"] = {"Sudovish"},
["xsy"] = {"Saisiyat"},
["xta"] = {"Mixtecish Alcozauca"},
["xtb"] = {"Mixtecish Chazumba"},
["xtc"] = {"Katcha-Kadugli-Miri"},
["xtd"] = {"Mixtecish Diuxi-Tilantongo"},
["xte"] = {"Ketengban"},
["xtg"] = {"Goalish Hessenalpagh"},
["xth"] = {"Yitha Yitha"},
["xti"] = {"Mixtecish Sinicahua"},
["xtj"] = {"Mixtecish San Juan Teita"},
["xtl"] = {"Mixtecish Tijaltepec"},
["xtm"] = {"Mixtecish Magdalena Peñasco"},
["xtn"] = {"Mixtecish Tlaxiaco Hwoaie"},
["xto"] = {"Tokharish A"},
["xtp"] = {"Mixtecish San Miguel Piedras"},
["xtq"] = {"Tumshuqese"},
["xtr"] = {"Tripoorish Leah"},
["xts"] = {"Mixtecish Sindihui"},
["xtt"] = {"Mixtecish Tacahua"},
["xtu"] = {"Mixtecish Cuyamecalco"},
["xtv"] = {"Thawa"},
["xtw"] = {"Tawandê"},
["xty"] = {"Mixtecish Yoloxochitl"},
["xua"] = {"Alu Kurumba"},
["xub"] = {"Betta Kurumba"},
["xud"] = {"Umiida"},
["xug"] = {"Kunigami"},
["xuj"] = {"Jennu Kurumba"},
["xul"] = {"Ngunawal", "Nunukul"},
["xum"] = {"Umbrish"},
["xun"] = {"Unggaranggu"},
["xuo"] = {"Kuo"},
["xup"] = {"Umpqua Heose"},
["xur"] = {"Urartish"},
["xut"] = {"Kuthant"},
["xuu"] = {"Kxoe", "Khwedam"},
["xve"] = {"Venetish"},
["xvi"] = {"Kamviri"},
["xvn"] = {"Vandalish"},
["xvo"] = {"Volscish"},
["xvs"] = {"Vestinish"},
["xwa"] = {"Kwaza"},
["xwc"] = {"Woccon"},
["xwd"] = {"Wadi Wadi"},
["xwe"] = {"Xwela Gbe"},
["xwg"] = {"Kwegu"},
["xwj"] = {"Wajuk"},
["xwk"] = {"Wangkumara"},
["xwl"] = {"Xwla Gbe Heear"},
["xwo"] = {"Oiratish Screeuit"},
["xwr"] = {"Kwerba Mamberamo"},
["xwt"] = {"Wotjobaluk"},
["xww"] = {"Wemba Wemba"},
["xxb"] = {"Boro (y Ghaney)"},
["xxk"] = {"Ke'o"},
["xxm"] = {"Minkin"},
["xxr"] = {"Koropó"},
["xxt"] = {"Tambora"},
["xya"] = {"Yaygir"},
["xyb"] = {"Yandjibara"},
["xyj"] = {"Mayi-Yapi"},
["xyk"] = {"Mayi-Kulan"},
["xyl"] = {"Yalakalore"},
["xyt"] = {"Mayi-Thakurti"},
["xyy"] = {"Yorta Yorta"},
["xzh"] = {"Zhang-Zhung"},
["xzm"] = {"Zemgalish"},
["xzp"] = {"Zapotecish Henndeeagh"},
["yaa"] = {"Yaminahua"},
["yab"] = {"Yuhup"},
["yac"] = {"Yali Pass Valley"},
["yad"] = {"Yagua"},
["yae"] = {"Pumé"},
["yaf"] = {"Yaka (Pobblaght Gheynlagh y Chongo)"},
["yag"] = {"Yámana"},
["yah"] = {"Yazgulyam"},
["yai"] = {"Yagnobi"},
["yaj"] = {"Banda-Yangere"},
["yak"] = {"Yakama"},
["yal"] = {"Yalunka"},
["yam"] = {"Yamba"},
["yan"] = {"Mayangna"},
["yao"] = {"Yao"},
["yap"] = {"Yapish"},
["yaq"] = {"Yaqui"},
["yar"] = {"Yabarana"},
["yas"] = {"Nugunu (Cameroon)"},
["yat"] = {"Yambeta"},
["yau"] = {"Yuwana"},
["yav"] = {"Yangben"},
["yaw"] = {"Yawalapití"},
["yax"] = {"Yauma"},
["yay"] = {"Agwagwune"},
["yaz"] = {"Lokaa"},
["yba"] = {"Yala"},
["ybb"] = {"Yemba"},
["ybe"] = {"Yugur Heear"},
["ybh"] = {"Yakha"},
["ybi"] = {"Yamphu"},
["ybj"] = {"Hasha"},
["ybk"] = {"Bokha"},
["ybl"] = {"Yukuben"},
["ybm"] = {"Yaben"},
["ybn"] = {"Yabaâna"},
["ybo"] = {"Yabong"},
["ybx"] = {"Yawiyo"},
["yby"] = {"Yaweyuha"},
["ych"] = {"Chesu"},
["ycl"] = {"Lolopo"},
["ycn"] = {"Yucuna"},
["ycp"] = {"Chepya"},
["ycr"] = {"Creeole Yilan"},
["yda"] = {"Yanda"},
["ydd"] = {"Ewdish Hiar"},
["yde"] = {"Yangum Dey"},
["ydg"] = {"Yidgha"},
["ydk"] = {"Yoidik"},
["yea"] = {"Ravula"},
["yec"] = {"Yeniche"},
["yee"] = {"Yimas"},
["yei"] = {"Yeni"},
["yej"] = {"Yevanish"},
["yel"] = {"Yela"},
["yer"] = {"Tarok"},
["yes"] = {"Nyankpa"},
["yet"] = {"Yetfa"},
["yeu"] = {"Yerukula"},
["yev"] = {"Yapunda"},
["yey"] = {"Yeyi"},
["yga"] = {"Malyangapa"},
["ygi"] = {"Yiningayi"},
["ygl"] = {"Yangum Gel"},
["ygm"] = {"Yagomi"},
["ygp"] = {"Gepo"},
["ygr"] = {"Yagaria"},
["ygs"] = {"Çhengey Chowree Yolŋu"},
["ygu"] = {"Yugul"},
["ygw"] = {"Yagwoia"},
["yha"] = {"Baha Buyang"},
["yhd"] = {"Arabish Earackagh Ewagh"},
["yhl"] = {"Hlepho Phowa"},
["yhs"] = {"Çhengey Chowree Yan-nhaŋu"},
["yia"] = {"Yinggarda"},
["yif"] = {"Ache"},
["yig"] = {"Wusa Nasu"},
["yih"] = {"Ewdish Heear"},
["yii"] = {"Yidiny"},
["yij"] = {"Yindjibarndi"},
["yik"] = {"Dongshanba Lalo"},
["yil"] = {"Yindjilandji"},
["yim"] = {"Naga Yimchungru"},
["yin"] = {"Riang Lai", "Yinchia"},
["yip"] = {"Pholo"},
["yiq"] = {"Miqie"},
["yir"] = {"Awyu Hwoaie"},
["yis"] = {"Yis"},
["yit"] = {"Lalu Hiar"},
["yiu"] = {"Awu"},
["yiv"] = {"Nisu Hwoaie"},
["yix"] = {"Axi Yi"},
["yiz"] = {"Azhe"},
["yka"] = {"Yakan"},
["ykg"] = {"Yukaghirish Hwoaie"},
["ykh"] = {"Mongoilish Khamnigan"},
["yki"] = {"Yoke"},
["ykk"] = {"Yakaikeke"},
["ykl"] = {"Khlula"},
["ykm"] = {"Kap"},
["ykn"] = {"Kua-nsi"},
["yko"] = {"Yasa"},
["ykr"] = {"Yekora"},
["ykt"] = {"Kathu"},
["yku"] = {"Kuamasi"},
["yky"] = {"Yakoma"},
["yla"] = {"Yaul"},
["ylb"] = {"Yaleba"},
["yle"] = {"Yele"},
["ylg"] = {"Yelogu"},
["yli"] = {"Yali Angguruk"},
["yll"] = {"Yil"},
["ylm"] = {"Limi"},
["yln"] = {"Langnian Buyang"},
["ylo"] = {"Naluo Yi"},
["ylr"] = {"Yalarnnga"},
["ylu"] = {"Aribwaung"},
["yly"] = {"Nyâlayu", "Nyelâyu"},
["ymb"] = {"Yambes"},
["ymc"] = {"Muji Yiass"},
["ymd"] = {"Muda"},
["yme"] = {"Yameo"},
["ymg"] = {"Yamongeri"},
["ymh"] = {"Mili"},
["ymi"] = {"Moji"},
["ymk"] = {"Makwe"},
["yml"] = {"Iamalele"},
["ymm"] = {"Maay"},
["ymn"] = {"Yamna", "Sunum"},
["ymo"] = {"Yangum Mon"},
["ymp"] = {"Yamap"},
["ymq"] = {"Qila Muji"},
["ymr"] = {"Malasar"},
["yms"] = {"Mysish"},
["ymx"] = {"Muji Hwoaie"},
["ymz"] = {"Muzi"},
["yna"] = {"Aluo"},
["ynd"] = {"Yandruwandha"},
["yne"] = {"Lang'e"},
["yng"] = {"Yango"},
["ynk"] = {"Yupikish Naukan"},
["ynl"] = {"Yangulam"},
["ynn"] = {"Yana"},
["yno"] = {"Yong"},
["ynq"] = {"Yendang"},
["yns"] = {"Yansi"},
["ynu"] = {"Yahuna"},
["yob"] = {"Yoba"},
["yog"] = {"Yogad"},
["yoi"] = {"Yonaguni"},
["yok"] = {"Yokuts"},
["yol"] = {"Yola"},
["yom"] = {"Yombe"},
["yon"] = {"Yongkom"},
["yot"] = {"Yotti"},
["yox"] = {"Yoron"},
["yoy"] = {"Yoy"},
["ypa"] = {"Phala"},
["ypb"] = {"Labo Phowa"},
["ypg"] = {"Phola"},
["yph"] = {"Phupha"},
["ypk"] = {"çhengaghyn Yupikagh"},
["ypm"] = {"Phuma"},
["ypn"] = {"Ani Phowa"},
["ypo"] = {"Alo Phola"},
["ypp"] = {"Phupa"},
["ypz"] = {"Phuza"},
["yra"] = {"Yerakai"},
["yrb"] = {"Yareba"},
["yre"] = {"Yaouré"},
["yrk"] = {"Nenetsish"},
["yrl"] = {"Nhengatu"},
["yrm"] = {"Yirrk-Mel"},
["yrn"] = {"Yerong"},
["yro"] = {"Yaroamë"},
["yrs"] = {"Yarsun"},
["yrw"] = {"Yarawata"},
["yry"] = {"Yarluyandi"},
["ysc"] = {"Yassish"},
["ysd"] = {"Samatao"},
["ysg"] = {"Sonaga"},
["ysl"] = {"Çhengey Chowree Yugoslaavagh"},
["ysm"] = {"Çhengey Chowree Myanmar"},
["ysn"] = {"Sani"},
["yso"] = {"Nisi (y Çheen)"},
["ysp"] = {"Lolopo Yiass"},
["ysr"] = {"Yupikish Sirenik"},
["yss"] = {"Yessan-Mayo"},
["ysy"] = {"Sanie"},
["yta"] = {"Talu"},
["ytl"] = {"Tanglang"},
["ytp"] = {"Thopho"},
["ytw"] = {"Yout Wam"},
["yty"] = {"Yatay"},
["yua"] = {"Yucateco", "Mayish Yucatec"},
["yub"] = {"Yugambal"},
["yuc"] = {"Yuchi"},
["yud"] = {"Arabish Hripolitaanagh Ewagh"},
["yue"] = {"Sheenish Yue", "Cantoanish", "Yueish"},
["yuf"] = {"Havasupai-Walapai-Yavapai"},
["yug"] = {"Yug"},
["yui"] = {"Yurutí"},
["yuj"] = {"Karkar-Yuri"},
["yuk"] = {"Yuki"},
["yul"] = {"Yulu"},
["yum"] = {"Quechan"},
["yun"] = {"Bena (y Naigeer)"},
["yup"] = {"Yukpa"},
["yuq"] = {"Yuqui"},
["yur"] = {"Yurok"},
["yut"] = {"Yopno"},
["yuw"] = {"Yau (Queiggey Morobe)"},
["yux"] = {"Yukaghirish Yiass"},
["yuy"] = {"Yugur Hiar"},
["yuz"] = {"Yuracare"},
["yva"] = {"Yawa"},
["yvt"] = {"Yavitero"},
["ywa"] = {"Kalou"},
["ywg"] = {"Yinhawangka"},
["ywl"] = {"Lalu Heear"},
["ywn"] = {"Yawanawa"},
["ywq"] = {"Wuding-Luquan Yi"},
["ywr"] = {"Yawuru"},
["ywt"] = {"Xishanba Lalo", "Lalo Veanagh"},
["ywu"] = {"Wumeng Nasu"},
["yww"] = {"Yawarawarga"},
["yxa"] = {"Mayawali"},
["yxg"] = {"Yagara"},
["yxl"] = {"Yardliyawarra"},
["yxm"] = {"Yinwum"},
["yxu"] = {"Yuyu"},
["yxy"] = {"Yabula Yabula"},
["yyr"] = {"Yir Yoront"},
["yyu"] = {"Yau (Queiggey Sandaun)"},
["yyz"] = {"Ayizi"},
["yzg"] = {"E'ma Buyang"},
["yzk"] = {"Zokhuo"},
["zaa"] = {"Zapotecish Sierra de Juárez"},
["zab"] = {"Zapotecish Ghlion Tlacolula Heear", "Zapotecish San Juan Guelavía"},
["zac"] = {"Zapotecish Ocotlán"},
["zad"] = {"Zapotecish Cajonos"},
["zae"] = {"Zapotecish Yareni"},
["zaf"] = {"Zapotecish Ayoquesco"},
["zag"] = {"Zaghawa"},
["zah"] = {"Zangwal"},
["zai"] = {"Zapotecish Whing Hallooin"},
["zaj"] = {"Zaramo"},
["zak"] = {"Zanaki"},
["zal"] = {"Zauzou"},
["zam"] = {"Zapotecish Miahuatlán"},
["zao"] = {"Zapotecish Ozolotepec"},
["zap"] = {"Zapotecish"},
["zaq"] = {"Zapotecish Aloápam"},
["zar"] = {"Zapotecish Rincón"},
["zas"] = {"Zapotecish Santo Domingo Albarradas"},
["zat"] = {"Zapotecish Tabaa"},
["zau"] = {"Zangskari"},
["zav"] = {"Zapotecish Yatzachi"},
["zaw"] = {"Zapotecish Mitla"},
["zax"] = {"Zapotecish Xadani"},
["zay"] = {"Zayse-Zergulla", "Zaysete"},
["zaz"] = {"Zari"},
["zba"] = {"Balaibalan"},
["zbc"] = {"Berawan Veanagh"},
["zbe"] = {"Berawan Hiar"},
["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"},
["zbt"] = {"Batui"},
["zbu"] = {"Bu (Steat Bauchi)"},
["zbw"] = {"Berawan Heear"},
["zca"] = {"Zapotecish Coatecas Altas"},
["zcd"] = {"Zapotecish Las Delicias"},
["zch"] = {"Zhang Hongshuihe Veanagh"},
["zdj"] = {"Comoroish Ngazidja"},
["zea"] = {"Zeeuws"},
["zeg"] = {"Zenag"},
["zeh"] = {"Zhuang Hongshuihe Hiar"},
["zem"] = {"Zeem"},
["zen"] = {"Zenaga"},
["zga"] = {"Kinga"},
["zgb"] = {"Zhuang Guibei"},
["zgh"] = {"Tamazightish Varocagh Stundayrtit"},
["zgm"] = {"Zhuang Minz"},
["zgn"] = {"Zhuang Guibian"},
["zgr"] = {"Magori"},
["zhb"] = {"Zhaba"},
["zhd"] = {"Zhuang Dai"},
["zhi"] = {"Zhire"},
["zhn"] = {"Zhuang Nong"},
["zhw"] = {"Zhoa"},
["zhx"] = {"Sheenagh (kynney)"},
["zia"] = {"Zia"},
["zib"] = {"Çhengey Chowree Himbabweagh"},
["zik"] = {"Zimakani"},
["zil"] = {"Zialo"},
["zim"] = {"Mesme"},
["zin"] = {"Zinza"},
["ziw"] = {"Zigula"},
["ziz"] = {"Zizilivakan"},
["zka"] = {"Kaimbulawa"},
["zkd"] = {"Kadu"},
["zkg"] = {"Koguryo"},
["zkh"] = {"Khorezmish"},
["zkk"] = {"Karankawa"},
["zkn"] = {"Kanan"},
["zko"] = {"Kott"},
["zkp"] = {"Kaingáng São Paulo"},
["zkr"] = {"Zakhring"},
["zkt"] = {"Kitan"},
["zku"] = {"Kaurna"},
["zkv"] = {"Krevinish"},
["zkz"] = {"Khazarish"},
["zla"] = {"Zula"},
["zle"] = {"çhengaghyn Slavagh Hiar"},
["zlj"] = {"Zhuang Liujiang"},
["zlm"] = {"Malayish (çhengey er lheh)"},
["zln"] = {"Zhuang Lianshan"},
["zlq"] = {"Zhuang Liuqian"},
["zls"] = {"çhengaghyn Slavagh Yiass"},
["zlu"] = {"Zul"},
["zlw"] = {"çhengaghyn Slavagh Heear"},
["zma"] = {"Manda (yn Austrail)"},
["zmb"] = {"Zimba"},
["zmc"] = {"Margany"},
["zmd"] = {"Maridan"},
["zme"] = {"Mangerr"},
["zmf"] = {"Mfinu"},
["zmg"] = {"Marti Ke"},
["zmh"] = {"Makolkol"},
["zmi"] = {"Malayish Negeri Sembilan"},
["zmj"] = {"Maridjabin"},
["zmk"] = {"Mandandanyi"},
["zml"] = {"Matngala"},
["zmm"] = {"Marimanindji", "Marramaninyshi"},
["zmn"] = {"Mbangwe"},
["zmo"] = {"Molo"},
["zmp"] = {"Mpuono"},
["zmq"] = {"Mituku"},
["zmr"] = {"Maranunggu"},
["zms"] = {"Mbesa"},
["zmt"] = {"Maringarr"},
["zmu"] = {"Muruwari"},
["zmv"] = {"Mbariman-Gudhinma"},
["zmw"] = {"Mbo (Pobblaght Gheynlagh y Chongo)"},
["zmx"] = {"Bomitaba"},
["zmy"] = {"Mariyedi"},
["zmz"] = {"Mbandja"},
["zna"] = {"Zan Gula"},
["znd"] = {"çhengaghyn Zande"},
["zne"] = {"Zande (çhengey er lheh)"},
["zng"] = {"Mang"},
["znk"] = {"Manangkari"},
["zns"] = {"Mangas"},
["zoc"] = {"Zoque Copainalá"},
["zoh"] = {"Zoque Chimalapa"},
["zom"] = {"Zou"},
["zoo"] = {"Zapotecish Mixtepec Asunción"},
["zoq"] = {"Zoque Tabasco"},
["zor"] = {"Zoque Rayón"},
["zos"] = {"Zoque Francisco León"},
["zpa"] = {"Zapotecish Lachiguiri"},
["zpb"] = {"Zapotecish Yautepec"},
["zpc"] = {"Zapotecish Choapan"},
["zpd"] = {"Zapotecish Ixtlán Hiar Yiass"},
["zpe"] = {"Zapotecish Petapa"},
["zpf"] = {"Zapotecish San Pedro Quiatoni"},
["zpg"] = {"Zapotecish Guevea De Humboldt"},
["zph"] = {"Zapotecish Totomachapan"},
["zpi"] = {"Zapotecish Santa María Quiegolani"},
["zpj"] = {"Zapotecish Quiavicuzas"},
["zpk"] = {"Zapotecish Tlacolulita"},
["zpl"] = {"Zapotecish Lachixío"},
["zpm"] = {"Zapotecish Mixtepec"},
["zpn"] = {"Zapotecish Santa Inés Yatzechi"},
["zpo"] = {"Zapotecish Amatlán"},
["zpp"] = {"Zapotecish El Alto"},
["zpq"] = {"Zapotecish Zoogocho"},
["zpr"] = {"Zapotecish Santiago Xanica"},
["zps"] = {"Zapotecish Coatlán"},
["zpt"] = {"Zapotecish San Vicente Coatlán"},
["zpu"] = {"Zapotecish Yalálag"},
["zpv"] = {"Zapotecish Chichicapan"},
["zpw"] = {"Zapotecish Zaniza"},
["zpx"] = {"Zapotecish San Baltazar Loxicha"},
["zpy"] = {"Zapotecish Mazaltepec"},
["zpz"] = {"Zapotecish Texmelucan"},
["zqe"] = {"Zhuang Qiubei"},
["zra"] = {"Kara (y Chorea)"},
["zrg"] = {"Mirgan"},
["zrn"] = {"Zerenkel"},
["zro"] = {"Záparo"},
["zrp"] = {"Zarphatish"},
["zrs"] = {"Mairasi"},
["zsa"] = {"Sarasira"},
["zsk"] = {"Kaskeish"},
["zsl"] = {"Çhengey Chowree Hambagh"},
["zsm"] = {"Malayish Stundayrtit"},
["zsr"] = {"Zapotecish Rincon Yiass"},
["zsu"] = {"Sukurum"},
["zte"] = {"Zapotecish Elotepec"},
["ztg"] = {"Zapotecish Xanaguía"},
["ztl"] = {"Zapotecish Lapaguía-Guivini"},
["ztm"] = {"Zapotecish Mixtepec San Agustín"},
["ztn"] = {"Zapotecish Santa Catarina Albarradas"},
["ztp"] = {"Zapotecish Loxicha"},
["ztq"] = {"Zapotecish Quioquitani-Quierí"},
["zts"] = {"Zapotecish Tilquiapan"},
["ztt"] = {"Zapotecish Tejalapan"},
["ztu"] = {"Zapotecish Güilá"},
["ztx"] = {"Zapotecish Zaachila"},
["zty"] = {"Zapotecish Yatee"},
["zuh"] = {"Tokano"},
["zum"] = {"Kumzarish"},
["zun"] = {"Zuni"},
["zuy"] = {"Zumaya"},
["zwa"] = {"Zay"},
["zxx"] = {"Gyn stoo çhengoaylleeagh", "Neuchooie"},
["zyb"] = {"Zhuang Yongbei"},
["zyg"] = {"Zhuang Yang"},
["zyj"] = {"Zhuang Youjiang"},
["zyn"] = {"Zhuang Yongnan"},
["zyp"] = {"Chinish Zyphe"},
["zza"] = {"Zaza", "Dimili", "Dimli (mooar-hengey)", "Kirdki", "Kirmanjki (mooar-hengey)", "Zazakish"},
["zzj"] = {"Zhuang Zuojiang"}
}
local deprecated = {
["in"] = {"Indoneeshish"},
["iw"] = {"Ewnish"},
["ji"] = {"Ewdish"},
["jw"] = {"Javish", "Basa Jawa"},
["mo"] = {"Moldaavish", "Moldovish"},
["aam"] = {"Aramanik"},
["adp"] = {"Adap"},
["agp"] = {"Paranan"},
["ais"] = {"Nataoran Amis"},
["ajp"] = {"Arabish Levaantagh Yiass"},
["ajt"] = {"Arabish Hooneeshagh Ewagh"},
["aoh"] = {"Arma"},
["asd"] = {"Asas"},
["aue"] = {"ǂKxʼauǁʼein"},
["ayx"] = {"Ayi (y Çheen)"},
["ayy"] = {"Tayabas Ayta"},
["baz"] = {"Tunen"},
["bbz"] = {"Creeole Arabish Babalia"},
["bgm"] = {"Baga Mboteni"},
["bhk"] = {"Albay Bicolano"},
["bic"] = {"Bikaru"},
["bij"] = {"Vaghat-Ya-Bijim-Legeri"},
["bjd"] = {"Bandjigali"},
["bjq"] = {"Malagasish Betsimisaraka Yiass"},
["bkb"] = {"Finallig"},
["blg"] = {"Balau"},
["bmy"] = {"Bemba (Pobblaght Gheynlagh y Chongo)"},
["bpb"] = {"Barbacoas"},
["btb"] = {"Beti (Cameroon)"},
["btl"] = {"Bhatola"},
["bxx"] = {"Borna (Pobblaght Gheynlagh y Chongo)"},
["byy"] = {"Buya"},
["cbe"] = {"Chipiajes"},
["cbh"] = {"Cagua"},
["cca"] = {"Cauca"},
["ccq"] = {"Chaungtha"},
["cdg"] = {"Chamari"},
["cjr"] = {"Chorotega"},
["cka"] = {"Khumi Awa Chin"},
["cmk"] = {"Chimakum"},
["coy"] = {"Coyaima"},
["cqu"] = {"Quechua yn Çhillee"},
["cug"] = {"Chungmboko", "Cung"},
["cum"] = {"Cumeral"},
["daf"] = {"Dan"},
["dap"] = {"Nisi (yn Injey)"},
["dgu"] = {"Degaru"},
["dha"] = {"Dhanwar (yn Injey)"},
["dit"] = {"Dirari"},
["djl"] = {"Djiwarli"},
["dkl"] = {"Kolum So Dogon"},
["drh"] = {"Darkhat"},
["drr"] = {"Dororo"},
["drw"] = {"Darwazi"},
["dud"] = {"Hun-Saare"},
["duj"] = {"Dhuwal"},
["dwl"] = {"Walo Kumbe Dogon"},
["ekc"] = {"Karnish Hiar"},
["elp"] = {"Elpaputih"},
["emo"] = {"Emok"},
["gav"] = {"Gabutamon"},
["gbc"] = {"Garawa"},
["gfx"] = {"Mangetti Dune ǃXung"},
["ggn"] = {"Gurung Hiar"},
["ggo"] = {"Gondi Yiass"},
["ggr"] = {"Aghu Tharnggalu"},
["gio"] = {"Gelao"},
["gji"] = {"Geji"},
["gli"] = {"Guliguli"},
["gti"] = {"Gbati-ri"},
["guv"] = {"Gey"},
["hrr"] = {"Horuru"},
["iap"] = {"Iapama"},
["ibi"] = {"Ibilo"},
["ill"] = {"Iranun"},
["ilw"] = {"Talur"},
["ime"] = {"Imeraguen"},
["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"},
["jar"] = {"Jarawa (y Naigeer)"},
["jeg"] = {"Jeng"},
["kbf"] = {"Kakauhua"},
["kdv"] = {"Kado"},
["kgc"] = {"Kasseng"},
["kgd"] = {"Kataang"},
["kgh"] = {"Tanudan Kalinga Heose"},
["kgm"] = {"Karipúna"},
["kjf"] = {"Khalaj [Ind-Eeraanagh]"},
["koj"] = {"Sara Dunjo"},
["kox"] = {"Coxima"},
["kpp"] = {"Karenish Paku"},
["krm"] = {"Krim"},
["ksa"] = {"Shuwa-Zamani"},
["ktr"] = {"Kota Marudu Tinagas"},
["kvs"] = {"Kunggara"},
["kwq"] = {"Kwak"},
["kxe"] = {"Kakihum"},
["kxl"] = {"Kurux Nepaalagh"},
["kxu"] = {"Kui (yn Injey)"},
["kzh"] = {"Kenuzi-Dongola"},
["kzj"] = {"Coastal Kadazan"},
["kzt"] = {"Tambunan Dusun"},
["lak"] = {"Laka (y Naigeer)"},
["lba"] = {"Lui"},
["leg"] = {"Lengua"},
["lii"] = {"Lingkhim"},
["llo"] = {"Khlor"},
["lmm"] = {"Lamam"},
["lmz"] = {"Lumbee"},
["lno"] = {"Lango (y Toodaan Yiass)"},
["lsg"] = {"Çhengey Chowree Lyons"},
["meg"] = {"Mea"},
["mgx"] = {"Omati"},
["mhh"] = {"Maskoy Vrisht"},
["mja"] = {"Mahei"},
["mld"] = {"Malakhel"},
["mnt"] = {"Maykulan"},
["mof"] = {"Mohegan-Montauk-Narragansett"},
["mst"] = {"Cataelano Mandaya"},
["mvm"] = {"Muya"},
["mwd"] = {"Mudbura"},
["mwj"] = {"Maligo"},
["mwx"] = {"Mediak"},
["mwy"] = {"Mosiro"},
["myd"] = {"Maramba"},
["myi"] = {"Mina (yn Injey)"},
["myq"] = {"Maninkish Cheylley"},
["myt"] = {"Sangab Mandaya"},
["nad"] = {"Nijadali"},
["nbf"] = {"Naxi"},
["nbx"] = {"Ngura"},
["ncp"] = {"Ndaktup"},
["ngo"] = {"Ngoni"},
["nln"] = {"Nahuatl Durango"},
["nlr"] = {"Ngarla"},
["nns"] = {"Ningye"},
["nnx"] = {"Ngong"},
["nom"] = {"Nocamán"},
["noo"] = {"Nootka"},
["nts"] = {"Natagaimas"},
["nxu"] = {"Narau"},
["ome"] = {"Omejes"},
["oun"] = {"ǃOǃung"},
["pat"] = {"Papitalai"},
["pbz"] = {"Palu"},
["pcr"] = {"Panang"},
["pgy"] = {"Pongyong"},
["pii"] = {"Pini"},
["plj"] = {"Polci"},
["plp"] = {"Palpa"},
["pmc"] = {"Palumata"},
["pmk"] = {"Pamlico"},
["pmu"] = {"Panjabish Mirpur"},
["pod"] = {"Ponares"},
["ppa"] = {"Pao"},
["ppr"] = {"Piru"},
["prb"] = {"Lua'"},
["prp"] = {"Parsi"},
["pry"] = {"Pray 3"},
["puk"] = {"Pu Ko"},
["puz"] = {"Purum Naga"},
["rie"] = {"Rien"},
["rmr"] = {"Caló"},
["rna"] = {"Runa"},
["rsi"] = {"Çhengey Chowree Rennellagh"},
["sap"] = {"Sanapaná"},
["sca"] = {"Sansu"},
["sdm"] = {"Semandang"},
["sgl"] = {"Sanglechi-Ishkashimi"},
["sgo"] = {"Songa"},
["skk"] = {"Sok"},
["slq"] = {"Salchuq"},
["smd"] = {"Sama"},
["snb"] = {"Sebuyau"},
["snh"] = {"Shinabo"},
["sul"] = {"Surigaonon"},
["sum"] = {"Sumo-Mayangna"},
["svr"] = {"Savara"},
["szd"] = {"Seru"},
["tbb"] = {"Tapeba"},
["tdu"] = {"Tempasuk Dusun"},
["tgg"] = {"Tangga"},
["thc"] = {"Tai Hang Tong"},
["thw"] = {"Thudam"},
["thx"] = {"The"},
["tid"] = {"Tidong"},
["tie"] = {"Tingal"},
["tkk"] = {"Takpa"},
["tlw"] = {"Wemale Yiass"},
["tmk"] = {"Tamang Heear Hwoaie"},
["tmp"] = {"Tai Mène"},
["tne"] = {"Tinoc Kallahan"},
["tnf"] = {"Tangshewi"},
["toe"] = {"Tomedes"},
["tpw"] = {"Tupí"},
["tsf"] = {"Tamang Heear Yiass"},
["unp"] = {"Worora"},
["uok"] = {"Uokha"},
["uun"] = {"Kulon-Pazeh"},
["vki"] = {"Ija-Zuba"},
["wgw"] = {"Wagawaga"},
["wit"] = {"Wintu"},
["wiw"] = {"Wirangu"},
["wra"] = {"Warapu"},
["wrd"] = {"Warduji"},
["wya"] = {"Wyandot"},
["xba"] = {"Kamba (y Vrasseel)"},
["xbx"] = {"Kabixí"},
["xia"] = {"Xiandao"},
["xip"] = {"Xipináwa"},
["xkh"] = {"Karahawyana"},
["xrq"] = {"Karranga"},
["xss"] = {"Assan"},
["xtz"] = {"Tasmaanish"},
["ybd"] = {"Yangbye"},
["yds"] = {"Çhengey Chowree Ewdagh"},
["yen"] = {"Yendang"},
["yiy"] = {"Yir Yoront"},
["yma"] = {"Yamphe"},
["ymt"] = {"Mator-Taygi-Karagas"},
["ynh"] = {"Yangho"},
["yos"] = {"Yos"},
["yri"] = {"Yarí"},
["yuu"] = {"Yugh"},
["zir"] = {"Ziriya"},
["zkb"] = {"Koibal"},
["zua"] = {"Zeem"}
}
return {
active = active,
deprecated = deprecated,
}
1w8i415nkqnkmgmu1xd2n8wlays8p9g
394613
394546
2026-10-17T03:46:11Z
MacTire02
219
creeole mwirrishagh
394613
Scribunto
text/plain
-- File-Date: 2023-10-16
local active = {
["aa"] = {"Afarish"},
["ab"] = {"Abcaashish"},
["ae"] = {"Avestan"},
["af"] = {"Affrickaanish"},
["ak"] = {"Akanish"},
["am"] = {"Amharish"},
["an"] = {"Aragonish"},
["ar"] = {"Arabish"},
["as"] = {"Assamish"},
["av"] = {"Avarish"},
["ay"] = {"Aymarish"},
["az"] = {"Asserbajaanish"},
["ba"] = {"Bashkeerish"},
["be"] = {"Belarooshish"},
["bg"] = {"Bulgeyrish"},
["bh"] = {"çhengaghyn Bihari"},
["bi"] = {"Bislama"},
["bm"] = {"Bambarish"},
["bn"] = {"Bengaalish", "Bangla"},
["bo"] = {"Tibetish"},
["br"] = {"Britaanish"},
["bs"] = {"Bosnish"},
["ca"] = {"Catalaanish", "Cataloanish", "Valensianish", "Valenciano"},
["ce"] = {"Sheshnish"},
["ch"] = {"Chamorro"},
["co"] = {"Corsickish"},
["cr"] = {"Creeish"},
["cs"] = {"Sheckish"},
["cu"] = {"Slavish Agglish", "Slavonish Agglish", "Slavish yn Agglish", "Slavonish yn Agglish", "Shenn Vulgeyrish", "Shenn Slavonish Agglish", "Shenn Slavish Agglish"},
["cv"] = {"Shuvashish"},
["cy"] = {"Bretnish"},
["da"] = {"Danvargish"},
["de"] = {"Germaanish"},
["dv"] = {"Dhivehi", "Divehi", "Maldeevish"},
["dz"] = {"Dzongkha"},
["ee"] = {"Ewe"},
["el"] = {"Greagish Noa-emshyragh (1453-)"},
["en"] = {"Baarle"},
["eo"] = {"Esperanto"},
["es"] = {"Spaainish", "Cashteelish"},
["et"] = {"Estaanish", "Estoinish", "Esthoinish"},
["eu"] = {"Bascish"},
["fa"] = {"Pershish"},
["ff"] = {"Fulah"},
["fi"] = {"Finnlynnish"},
["fj"] = {"Fijian"},
["fo"] = {"Faaroish"},
["fr"] = {"Frangish"},
["fy"] = {"Freeshlannish Heear"},
["ga"] = {"Yernish", "Gaelg Nerin", "Gaelg ny h-Erin", "Gaelg Yernagh"},
["gd"] = {"Gaelg ny h-Albey", "Gaelg Albinagh"},
["gl"] = {"Galeeshish"},
["gn"] = {"Guaranish"},
["gu"] = {"Gujaratish"},
["gv"] = {"Gaelg", "Gailck"},
["ha"] = {"Hausish"},
["he"] = {"Ewnish"},
["hi"] = {"Hindish"},
["ho"] = {"Hiri Motu"},
["hr"] = {"Croitish"},
["ht"] = {"Haitish", "Creeole Haiti"},
["hu"] = {"Ungaarish"},
["hy"] = {"Armeanish"},
["hz"] = {"Hereroish"},
["ia"] = {"Interlingua (International Auxiliary Language Association)"},
["id"] = {"Indoneeshish"},
["ie"] = {"Interlingue", "Occidental"},
["ig"] = {"Igbo"},
["ii"] = {"Sichuan Yi", "Nuosu"},
["ik"] = {"Inupiaq"},
["io"] = {"Idoish"},
["is"] = {"Eeslynnish"},
["it"] = {"Iddaalish"},
["iu"] = {"Inuktitut"},
["ja"] = {"Shapaanish"},
["jv"] = {"Javish", "basa Jawa"},
["ka"] = {"Shorshish"},
["kg"] = {"Kongoish"},
["ki"] = {"Kikuyuish", "Gikuyu"},
["kj"] = {"Kuanyamish", "Kwanyama"},
["kk"] = {"Kassaghish"},
["kl"] = {"Kalaallisut", "Greenlynnish"},
["km"] = {"Khmerish", "Khmerish Veanagh"},
["kn"] = {"Kannada"},
["ko"] = {"Koreeish"},
["kr"] = {"Kanurish"},
["ks"] = {"Kashmirish"},
["ku"] = {"Kurdish"},
["kv"] = {"Komish"},
["kw"] = {"Cornish"},
["ky"] = {"Kyrgish"},
["la"] = {"Ladjyn"},
["lb"] = {"Lucsemburgish", "Letzeburgesch"},
["lg"] = {"Ganda", "Luganda"},
["li"] = {"Limburgish"},
["ln"] = {"Lingalish"},
["lo"] = {"Laoish"},
["lt"] = {"Litaanish"},
["lu"] = {"Luba-Katanga"},
["lv"] = {"Latvish"},
["mg"] = {"Malagasish"},
["mh"] = {"Marshylish"},
["mi"] = {"Maorish"},
["mk"] = {"Massadoanish"},
["ml"] = {"Malayalamish"},
["mn"] = {"Mongoilish"},
["mr"] = {"Marathish"},
["ms"] = {"Malayish (mooar-hengey)"},
["mt"] = {"Maltish"},
["my"] = {"Burmish"},
["na"] = {"Nauru"},
["nb"] = {"Bokmål Norlynnagh"},
["nd"] = {"Ndebele Hwoaie"},
["ne"] = {"Nepaalish"},
["ng"] = {"Ndonga"},
["nl"] = {"Ollanish", "Flandrynish"},
["nn"] = {"Nynorsk Norlynnagh"},
["no"] = {"Norlynnish"},
["nr"] = {"Ndebele Yiass"},
["nv"] = {"Navahoish", "Navajo", "Navaho"},
["ny"] = {"Chewish", "Nyanja", "Chewa", "Chichewa"},
["oc"] = {"Ocsitaanish (lurg 1500)"},
["oj"] = {"Ojibwa"},
["om"] = {"Oromoish"},
["or"] = {"Oriyish (mooar-hengey)", "Odish (mooar-hengey)"},
["os"] = {"Ossetish"},
["pa"] = {"Panjabish", "Punjabish"},
["pi"] = {"Palish"},
["pl"] = {"Polynnish"},
["ps"] = {"Pushtish", "Pashtish"},
["pt"] = {"Portiugish"},
["qu"] = {"Quechua"},
["rm"] = {"Romansh", "Romanshish"},
["rn"] = {"Rundish"},
["ro"] = {"Romaanish", "Romaainish", "Moldaavish", "Moldovish"},
["ru"] = {"Rooshish"},
["rw"] = {"Kinyarooandish"},
["sa"] = {"Sanskrit"},
["sc"] = {"Sardeenish"},
["sd"] = {"Sindhish"},
["se"] = {"Saamish Hwoaie"},
["sg"] = {"Sangoish"},
["sh"] = {"Serbo-Chroitish"},
["si"] = {"Sinhalish"},
["sk"] = {"Slovackish"},
["sl"] = {"Sloveanish"},
["sm"] = {"Samoish"},
["sn"] = {"Shonish"},
["so"] = {"Somaalish"},
["sq"] = {"Albaanish"},
["sr"] = {"Serbish"},
["ss"] = {"Swassish"},
["st"] = {"Sotoish Yiass"},
["su"] = {"Sundanish"},
["sv"] = {"Soolynnish"},
["sw"] = {"Swahilish (mooar-hengey)"},
["ta"] = {"Tamilish"},
["te"] = {"Teloogooish"},
["tg"] = {"Tajikish"},
["th"] = {"Thai"},
["ti"] = {"Tigrinyish"},
["tk"] = {"Turkmenish"},
["tl"] = {"Tagalogish"},
["tn"] = {"Tswaanish"},
["to"] = {"Tonga (Ellanyn y Tongey)"},
["tr"] = {"Turkish"},
["ts"] = {"Tsongish"},
["tt"] = {"Tatarish"},
["tw"] = {"Twi"},
["ty"] = {"Tahitish"},
["ug"] = {"Uighurish", "Uyghurish"},
["uk"] = {"Ookraanish"},
["ur"] = {"Oordooish"},
["uz"] = {"Oosbeckish"},
["ve"] = {"Vendish"},
["vi"] = {"Vietnamish"},
["vo"] = {"Volapük"},
["wa"] = {"Walloonish"},
["wo"] = {"Wolofish"},
["xh"] = {"Xhosa"},
["yi"] = {"Ewdish"},
["yo"] = {"Yorubish"},
["za"] = {"Zhuang", "Chuang"},
["zh"] = {"Sheenish"},
["zu"] = {"Soolooish"},
["aaa"] = {"Ghotuo"},
["aab"] = {"Alumu-Tesu"},
["aac"] = {"Ari"},
["aad"] = {"Amal"},
["aae"] = {"Albaanish Arbëreshë"},
["aaf"] = {"Aranadanish"},
["aag"] = {"Ambrakish"},
["aah"] = {"Abu' Arapesh"},
["aai"] = {"Arifama-Miniafia"},
["aak"] = {"Ankave"},
["aal"] = {"Afade"},
["aan"] = {"Anambé"},
["aao"] = {"Arabish Algearagh y Tahara"},
["aap"] = {"Pará Arára"},
["aaq"] = {"Abnakish Hiar"},
["aas"] = {"Aasáx"},
["aat"] = {"Albaanish Arvanitika"},
["aau"] = {"Abau"},
["aav"] = {"çhengaghyn Austro-Aishanagh"},
["aaw"] = {"Solong"},
["aax"] = {"Mandobo Atas"},
["aaz"] = {"Amarasish"},
["aba"] = {"Abé"},
["abb"] = {"Bankonish"},
["abc"] = {"Ambala Ayta"},
["abd"] = {"Manide"},
["abe"] = {"Abnakish Heear"},
["abf"] = {"Abai Sungai"},
["abg"] = {"Abaga"},
["abh"] = {"Arabish Hajikagh"},
["abi"] = {"Abidji"},
["abj"] = {"Aka-Bea"},
["abl"] = {"Lampung Nyo"},
["abm"] = {"Abanyom"},
["abn"] = {"Abua"},
["abo"] = {"Abon"},
["abp"] = {"Abellen Ayta"},
["abq"] = {"Abaza"},
["abr"] = {"Abron"},
["abs"] = {"Ambonese Malay"},
["abt"] = {"Ambulas"},
["abu"] = {"Abure"},
["abv"] = {"Baharna Arabic"},
["abw"] = {"Pal"},
["abx"] = {"Inabaknon"},
["aby"] = {"Aneme Wake"},
["abz"] = {"Abui"},
["aca"] = {"Achagua"},
["acb"] = {"Áncá"},
["acd"] = {"Gikyode"},
["ace"] = {"Achinish"},
["acf"] = {"Creeole Frangish Noo Lucia"},
["ach"] = {"Acoli"},
["aci"] = {"Aka-Cari"},
["ack"] = {"Aka-Kora"},
["acl"] = {"Akar-Bale"},
["acm"] = {"Arabish Vesopotaamagh"},
["acn"] = {"Achang"},
["acp"] = {"Acipa Hiar"},
["acq"] = {"Ta'izzi-Adeni Arabic"},
["acr"] = {"Achi"},
["acs"] = {"Acroá"},
["act"] = {"Achterhoeks"},
["acu"] = {"Achuar-Shiwiar"},
["acv"] = {"Achumawi"},
["acw"] = {"Arabish Hijaz"},
["acx"] = {"Arabish Omaanagh"},
["acy"] = {"Arabish Cheepragh"},
["acz"] = {"Acheron"},
["ada"] = {"Adangme"},
["adb"] = {"Atauran"},
["add"] = {"Lidzonka", "Dzodinka"},
["ade"] = {"Adele"},
["adf"] = {"Arabish Dhofari"},
["adg"] = {"Andegerebinha"},
["adh"] = {"Adhola"},
["adi"] = {"Adi"},
["adj"] = {"Adioukrou"},
["adl"] = {"Galo"},
["adn"] = {"Adang"},
["ado"] = {"Abu"},
["adq"] = {"Adangbe"},
["adr"] = {"Adonara"},
["ads"] = {"Çhengey Chowree Adamorobe"},
["adt"] = {"Adnyamathanha"},
["adu"] = {"Aduge"},
["adw"] = {"Amundava"},
["adx"] = {"Tibetish Amdo"},
["ady"] = {"Adyghe", "Adygei"},
["adz"] = {"Adzera"},
["aea"] = {"Areba"},
["aeb"] = {"arabish Hooneeshagh"},
["aec"] = {"Arabish Saidi"},
["aed"] = {"Çhengey Chowree Argenteenagh"},
["aee"] = {"Pashai Hiar Hwoaie", "Pashayi Hiar Hwoaie"},
["aek"] = {"Haeke"},
["ael"] = {"Ambele"},
["aem"] = {"Arem"},
["aen"] = {"Çhengey Chowree Armeanagh"},
["aeq"] = {"Aer"},
["aer"] = {"Arrernte Hiar"},
["aes"] = {"Alsea"},
["aeu"] = {"Akeu"},
["aew"] = {"Ambakich"},
["aey"] = {"Amele"},
["aez"] = {"Aeka"},
["afa"] = {"çhengaghyn Affro-Aishanagh"},
["afb"] = {"Arabish Cheayn yn Arabaght"},
["afd"] = {"Andai"},
["afe"] = {"Putukwam"},
["afg"] = {"Çhengey Chowree Afghaanagh"},
["afh"] = {"Afrihili"},
["afi"] = {"Akrukay", "Chini"},
["afk"] = {"Nanubae"},
["afn"] = {"Defaka"},
["afo"] = {"Eloyi"},
["afp"] = {"Tapei"},
["afs"] = {"Creeole Affro-Seminolagh"},
["aft"] = {"Afitti"},
["afu"] = {"Awutu"},
["afz"] = {"Obokuitai"},
["aga"] = {"Aguano"},
["agb"] = {"Legbo"},
["agc"] = {"Agatu"},
["agd"] = {"Agarabi"},
["age"] = {"Angal"},
["agf"] = {"Arguni"},
["agg"] = {"Angor"},
["agh"] = {"Ngelima"},
["agi"] = {"Agariya"},
["agj"] = {"Argobba"},
["agk"] = {"Isarog Agta"},
["agl"] = {"Fembe"},
["agm"] = {"Angaataha"},
["agn"] = {"Agutaynen"},
["ago"] = {"Tainae"},
["agq"] = {"Aghem"},
["agr"] = {"Aguaruna"},
["ags"] = {"Esimbi"},
["agt"] = {"Cagayan Agta Meanagh"},
["agu"] = {"Aguacateco"},
["agv"] = {"Remontado Dumagat"},
["agw"] = {"Kahua"},
["agx"] = {"Aghul"},
["agy"] = {"Alta Yiass"},
["agz"] = {"Mt. Iriga Agta"},
["aha"] = {"Ahanta"},
["ahb"] = {"Axamb"},
["ahg"] = {"Qimant"},
["ahh"] = {"Aghu"},
["ahi"] = {"Tiagbamrin Aizi"},
["ahk"] = {"Akha"},
["ahl"] = {"Igo"},
["ahm"] = {"Mobumrin Aizi"},
["ahn"] = {"Àhàn"},
["aho"] = {"Ahom"},
["ahp"] = {"Aproumu Aizi"},
["ahr"] = {"Ahirani"},
["ahs"] = {"Ashe"},
["aht"] = {"Ahtena"},
["aia"] = {"Arosi"},
["aib"] = {"Ainu (y Çheen)"},
["aic"] = {"Ainbai"},
["aid"] = {"Alngith"},
["aie"] = {"Amara"},
["aif"] = {"Agi"},
["aig"] = {"Creeole Baarle Antigua as Barbuda"},
["aih"] = {"Ai-Cham"},
["aii"] = {"Noa-Aramaaish Assyriagh"},
["aij"] = {"Lishanid Noshan"},
["aik"] = {"Ake"},
["ail"] = {"Aimele"},
["aim"] = {"Aimol"},
["ain"] = {"Ainu (y Çhapaan)"},
["aio"] = {"Aiton"},
["aip"] = {"Burumakok"},
["aiq"] = {"Aimaq"},
["air"] = {"Airoran"},
["ait"] = {"Arikem"},
["aiw"] = {"Aari"},
["aix"] = {"Aighon"},
["aiy"] = {"Ali"},
["aja"] = {"Aja (y Toodaan Yiass)"},
["ajg"] = {"Aja (Benin)"},
["aji"] = {"Ajië"},
["ajn"] = {"Andajin"},
["ajs"] = {"Algerian Jewish Sign Language"},
["aju"] = {"Judeo-Moroccan Arabic"},
["ajw"] = {"Ajawa"},
["ajz"] = {"Amri Karbi"},
["akb"] = {"Batak Angkola"},
["akc"] = {"Mpur"},
["akd"] = {"Ukpet-Ehom"},
["ake"] = {"Akawaio"},
["akf"] = {"Akpa"},
["akg"] = {"Anakalangu"},
["akh"] = {"Angal Heneng"},
["aki"] = {"Aiome"},
["akj"] = {"Aka-Jeru"},
["akk"] = {"Akkadian"},
["akl"] = {"Aklanon"},
["akm"] = {"Aka-Bo"},
["ako"] = {"Akurio"},
["akp"] = {"Siwu"},
["akq"] = {"Ak"},
["akr"] = {"Araki"},
["aks"] = {"Akaselem"},
["akt"] = {"Akolet"},
["aku"] = {"Akum"},
["akv"] = {"Akhvakh"},
["akw"] = {"Akwa"},
["akx"] = {"Aka-Kede"},
["aky"] = {"Aka-Kol"},
["akz"] = {"Alabama"},
["ala"] = {"Alago"},
["alc"] = {"Qawasqar"},
["ald"] = {"Alladian"},
["ale"] = {"Aleutagh"},
["alf"] = {"Alege"},
["alg"] = {"çhengaghyn Algonquiagh"},
["alh"] = {"Alawa"},
["ali"] = {"Amaimon"},
["alj"] = {"Alangan"},
["alk"] = {"Alak"},
["all"] = {"Allar"},
["alm"] = {"Amblong"},
["aln"] = {"Albaanish Gheg"},
["alo"] = {"Larike-Wakasihu"},
["alp"] = {"Alune"},
["alq"] = {"Algonquin"},
["alr"] = {"Alutorish"},
["als"] = {"Albaanish Tosk"},
["alt"] = {"Altayish Yiass"},
["alu"] = {"'Are'are"},
["alv"] = {"çhengaghyn Atlantagh-Congo"},
["alw"] = {"Alaba-K’abeena", "Wanbasana"},
["alx"] = {"Amol"},
["aly"] = {"Alyawarr"},
["alz"] = {"Alur"},
["ama"] = {"Amanayé"},
["amb"] = {"Ambo"},
["amc"] = {"Amahuaca"},
["ame"] = {"Yanesha'"},
["amf"] = {"Hamer-Banna"},
["amg"] = {"Amurdak"},
["ami"] = {"Amis"},
["amj"] = {"Amdang"},
["amk"] = {"Ambai"},
["aml"] = {"War-Jaintia"},
["amm"] = {"Ama (Papooey Guinea Noa)"},
["amn"] = {"Amanab"},
["amo"] = {"Amo"},
["amp"] = {"Alamblak"},
["amq"] = {"Amahai"},
["amr"] = {"Amarakaeri"},
["ams"] = {"Amami-Oshima Yiass"},
["amt"] = {"Amto"},
["amu"] = {"Guerrero Amuzgo"},
["amv"] = {"Ambelau"},
["amw"] = {"Noa-Aramaaish Heear"},
["amx"] = {"Anmatyerre"},
["amy"] = {"Ami"},
["amz"] = {"Atampaya"},
["ana"] = {"Andaqui"},
["anb"] = {"Andoa"},
["anc"] = {"Ngas"},
["and"] = {"Ansus"},
["ane"] = {"Xârâcùù"},
["anf"] = {"Animere"},
["ang"] = {"Shenn Vaarle (ca. 450-1100)"},
["anh"] = {"Nend"},
["ani"] = {"Andi"},
["anj"] = {"Anor"},
["ank"] = {"Goemai"},
["anl"] = {"Anu-Hkongso Chin"},
["anm"] = {"Anal"},
["ann"] = {"Obolo"},
["ano"] = {"Andoque"},
["anp"] = {"Angika"},
["anq"] = {"Jarawa (yn Injey)"},
["anr"] = {"Andh"},
["ans"] = {"Anserma"},
["ant"] = {"Antakarinya", "Antikarinya"},
["anu"] = {"Anuak"},
["anv"] = {"Denya"},
["anw"] = {"Anaang"},
["anx"] = {"Andra-Hus"},
["any"] = {"Anyin"},
["anz"] = {"Anem"},
["aoa"] = {"Angolar"},
["aob"] = {"Abom"},
["aoc"] = {"Pemon"},
["aod"] = {"Andarum"},
["aoe"] = {"Angal Enen"},
["aof"] = {"Bragat"},
["aog"] = {"Angoram"},
["aoi"] = {"Anindilyakwa"},
["aoj"] = {"Mufian"},
["aok"] = {"Arhö"},
["aol"] = {"Alor"},
["aom"] = {"Ömie"},
["aon"] = {"Bumbita Arapesh"},
["aor"] = {"Aore"},
["aos"] = {"Taikat"},
["aot"] = {"Atong (yn Injey)", "A'tong"},
["aou"] = {"A'ou"},
["aox"] = {"Atorada"},
["aoz"] = {"Uab Meto"},
["apa"] = {"çhengaghyn Apaçheeagh"},
["apb"] = {"Sa'a"},
["apc"] = {"Arabish Levaantagh"},
["apd"] = {"Arabish Hoodaanagh"},
["ape"] = {"Bukiyip"},
["apf"] = {"Pahanan Agta"},
["apg"] = {"Ampanang"},
["aph"] = {"Athpariya"},
["api"] = {"Apiaká"},
["apj"] = {"Apaçheeish Jicarilla"},
["apk"] = {"Apaçheeish Kiowa"},
["apl"] = {"Apaçheeish Lipan"},
["apm"] = {"Apaçheeish Mescalero-Chiricahua"},
["apn"] = {"Apinayé"},
["apo"] = {"Ambul"},
["app"] = {"Apma"},
["apq"] = {"A-Pucikwar"},
["apr"] = {"Arop-Lokep"},
["aps"] = {"Arop-Sissano"},
["apt"] = {"Apatanish"},
["apu"] = {"Apurinã"},
["apv"] = {"Alapmunte"},
["apw"] = {"Apaçheeish Heear"},
["apx"] = {"Aputai"},
["apy"] = {"Apalaí"},
["apz"] = {"Safeyoka"},
["aqa"] = {"çhengaghyn Alacalufan"},
["aqc"] = {"Archi"},
["aqd"] = {"Ampari Dogon"},
["aqg"] = {"Arigidi"},
["aqk"] = {"Aninka"},
["aql"] = {"çhengaghyn Algagh"},
["aqm"] = {"Atohwaim"},
["aqn"] = {"Alta Hwoaie"},
["aqp"] = {"Atakapa"},
["aqr"] = {"Arhâ"},
["aqt"] = {"Angaité"},
["aqz"] = {"Akuntsu"},
["arb"] = {"Arabish Stundayrtit"},
["arc"] = {"Aramaaish Oikoil (700-300 RC)", "Aramaaish Impiroil (700-300 RC)"},
["ard"] = {"Arabana"},
["are"] = {"Arrarnta Heear"},
["arh"] = {"Arhuaco"},
["ari"] = {"Arikara"},
["arj"] = {"Arapaso"},
["ark"] = {"Arikapú"},
["arl"] = {"Arabela"},
["arn"] = {"Mapudungunish", "Mapuçhish"},
["aro"] = {"Araona"},
["arp"] = {"Arapahoish"},
["arq"] = {"Arabish Algearagh"},
["arr"] = {"Karo (y Vrasseel)"},
["ars"] = {"Arabish Najdi"},
["art"] = {"Çhengaghyn ellynagh"},
["aru"] = {"Aruá (Steat Amazonas)", "Arawá"},
["arv"] = {"Arbore"},
["arw"] = {"Arawak"},
["arx"] = {"Aruá (Steat Rodonia)"},
["ary"] = {"Arabish Varocagh"},
["arz"] = {"Arabish Egyptagh"},
["asa"] = {"Asu (Tanzania)"},
["asb"] = {"Assiniboine"},
["asc"] = {"Casuarina Coast Asmat"},
["ase"] = {"Çhengey Chowree Americaanagh"},
["asf"] = {"Auslan", "Çhengey Chowree Austrailagh"},
["asg"] = {"Cishingini"},
["ash"] = {"Abishira"},
["asi"] = {"Buruwai"},
["asj"] = {"Sari"},
["ask"] = {"Ashkun"},
["asl"] = {"Asilulu"},
["asn"] = {"Xingú Asuriní"},
["aso"] = {"Dano"},
["asp"] = {"Çhengey Chowree Algearagh"},
["asq"] = {"Çhengey Chowree Austrailagh"},
["asr"] = {"Asuri"},
["ass"] = {"Ipulo"},
["ast"] = {"Astoorish", "Astoorleonish", "Bable", "Leonish"},
["asu"] = {"Tocantins Asurini"},
["asv"] = {"Asoa"},
["asw"] = {"Çhengey Chowree Vun-dooghyssee yn Austrail"},
["asx"] = {"Muratayak"},
["asy"] = {"Yaosakor Asmat"},
["asz"] = {"As"},
["ata"] = {"Pele-Ata"},
["atb"] = {"Zaiwa"},
["atc"] = {"Atsahuaca"},
["atd"] = {"Ata Manobo"},
["ate"] = {"Atemble"},
["atg"] = {"Ivbie North-Okpela-Arhe"},
["ath"] = {"çhengaghyn Athapascagh"},
["ati"] = {"Attié"},
["atj"] = {"Atikamekw"},
["atk"] = {"Ati"},
["atl"] = {"Mt. Iraya Agta"},
["atm"] = {"Ata"},
["atn"] = {"Ashtiani"},
["ato"] = {"Atong (Cameroon)"},
["atp"] = {"Pudtol Atta"},
["atq"] = {"Aralle-Tabulahan"},
["atr"] = {"Waimiri-Atroari"},
["ats"] = {"Gros Ventre"},
["att"] = {"Pamplona Atta"},
["atu"] = {"Reel"},
["atv"] = {"Altayish Hwoaie"},
["atw"] = {"Atsugewi"},
["atx"] = {"Arutani"},
["aty"] = {"Aneityum"},
["atz"] = {"Arta"},
["aua"] = {"Asumboa"},
["aub"] = {"Alugu"},
["auc"] = {"Waorani"},
["aud"] = {"Anuta"},
["auf"] = {"çhengaghyn Arauagh"},
["aug"] = {"Aguna"},
["auh"] = {"Aushi"},
["aui"] = {"Anuki"},
["auj"] = {"Awjilah"},
["auk"] = {"Heyo"},
["aul"] = {"Aulua"},
["aum"] = {"Asu (y Naigeer)"},
["aun"] = {"Molmo One"},
["auo"] = {"Auyokawa"},
["aup"] = {"Makayam"},
["auq"] = {"Anus", "Korur"},
["aur"] = {"Aruek"},
["aus"] = {"çhengaghyn Austrailagh"},
["aut"] = {"Austral"},
["auu"] = {"Auye"},
["auw"] = {"Awyi"},
["aux"] = {"Aurá"},
["auy"] = {"Awiyaana"},
["auz"] = {"Arabish Oosbeckagh"},
["avb"] = {"Avau"},
["avd"] = {"Alviri-Vidari"},
["avi"] = {"Avikam"},
["avk"] = {"Kotava"},
["avl"] = {"Arabish Bedawi Egyptagh Hiar"},
["avm"] = {"Angkamuthi"},
["avn"] = {"Avatime"},
["avo"] = {"Agavotaguerra"},
["avs"] = {"Aushiri"},
["avt"] = {"Au"},
["avu"] = {"Avokaya"},
["avv"] = {"Avá-Canoeiro"},
["awa"] = {"Awadhi"},
["awb"] = {"Awa (Papooey Guinea Noa)"},
["awc"] = {"Cicipu"},
["awd"] = {"çhengaghyn Arawakagh"},
["awe"] = {"Awetí"},
["awg"] = {"Anguthimri"},
["awh"] = {"Awbono"},
["awi"] = {"Aekyom"},
["awk"] = {"Awabakal"},
["awm"] = {"Arawum"},
["awn"] = {"Awngi"},
["awo"] = {"Awak"},
["awr"] = {"Awera"},
["aws"] = {"Awyu Yiass"},
["awt"] = {"Araweté"},
["awu"] = {"Awyu Meanagh"},
["awv"] = {"Jair Awyu"},
["aww"] = {"Awun"},
["awx"] = {"Awara"},
["awy"] = {"Edera Awyu"},
["axb"] = {"Abipon"},
["axe"] = {"Ayerrerenge"},
["axg"] = {"Mato Grosso Arára"},
["axk"] = {"Yaka (Pobblaght yn Affrick Veanagh)"},
["axl"] = {"Arandish Yiass Injil"},
["axm"] = {"Armeanish Veanagh"},
["axx"] = {"Xârâgurè"},
["aya"] = {"Awar"},
["ayb"] = {"Ayizo Gbe"},
["ayc"] = {"Aymarish Yiass"},
["ayd"] = {"Ayabadhu"},
["aye"] = {"Ayere"},
["ayg"] = {"Ginyanga"},
["ayh"] = {"Arabish Hadram"},
["ayi"] = {"Leyigha"},
["ayk"] = {"Akuku"},
["ayl"] = {"Arabish Leebagh"},
["ayn"] = {"Arabish Sanaanagh"},
["ayo"] = {"Ayoreo"},
["ayp"] = {"Arabish Vesopotaamagh Hwoaie"},
["ayq"] = {"Ayi (Papooey Guinea Noa)"},
["ayr"] = {"Aymarish Veanagh"},
["ays"] = {"Sorsogon Ayta"},
["ayt"] = {"Magbukun Ayta"},
["ayu"] = {"Ayu"},
["ayz"] = {"Mai Brat"},
["aza"] = {"Azha"},
["azb"] = {"Asserbajaanish Yiass"},
["azc"] = {"çhengaghyn Uto-Asteckagh"},
["azd"] = {"Nahuatl Durango Hiar"},
["azg"] = {"San Pedro Amuzgos Amuzgo"},
["azj"] = {"Asserbajaanish Hwoaie"},
["azm"] = {"Ipalapa Amuzgo"},
["azn"] = {"Nahuatl Durango Heear"},
["azo"] = {"Awing"},
["azt"] = {"Faire Atta"},
["azz"] = {"Nahuatl Puebla Sleitoil"},
["baa"] = {"Babatana"},
["bab"] = {"Bainouk-Gunyuño"},
["bac"] = {"Badui"},
["bad"] = {"çhengaghyn Banda"},
["bae"] = {"Baré"},
["baf"] = {"Nubaca"},
["bag"] = {"Tuki"},
["bah"] = {"Creeole Baarle ny Bahamaghyn"},
["bai"] = {"çhengaghyn Bamileke"},
["baj"] = {"Barakai"},
["bal"] = {"Balooçhish"},
["ban"] = {"Balinish"},
["bao"] = {"Waimaha"},
["bap"] = {"Bantawa"},
["bar"] = {"Baveyrish"},
["bas"] = {"Basa (Cameroon)"},
["bat"] = {"çhengaghyn Baltagh"},
["bau"] = {"Bada (y Naigeer)"},
["bav"] = {"Vengo"},
["baw"] = {"Bambili-Bambui"},
["bax"] = {"Bamun"},
["bay"] = {"Batuley"},
["bba"] = {"Baatonum"},
["bbb"] = {"Barai"},
["bbc"] = {"Batak Toba"},
["bbd"] = {"Bau"},
["bbe"] = {"Bangba"},
["bbf"] = {"Baibai"},
["bbg"] = {"Barama"},
["bbh"] = {"Bugan"},
["bbi"] = {"Barombi"},
["bbj"] = {"Ghomálá'"},
["bbk"] = {"Babanki"},
["bbl"] = {"Bats"},
["bbm"] = {"Babango"},
["bbn"] = {"Uneapa"},
["bbo"] = {"Bobo Madaré Hwoaie", "Konabéré"},
["bbp"] = {"Banda Veanagh Heear"},
["bbq"] = {"Bamali"},
["bbr"] = {"Girawa"},
["bbs"] = {"Bakpinka"},
["bbt"] = {"Mburku"},
["bbu"] = {"Kulung (y Naigeer)"},
["bbv"] = {"Karnai"},
["bbw"] = {"Baba"},
["bbx"] = {"Bubia"},
["bby"] = {"Befang"},
["bca"] = {"Bai Meanagh"},
["bcb"] = {"Bainouk-Samik"},
["bcc"] = {"Balooçhish Yiass"},
["bcd"] = {"Babar Hwoaie"},
["bce"] = {"Bamenyam"},
["bcf"] = {"Bamu"},
["bcg"] = {"Baga Pokur"},
["bch"] = {"Bariai"},
["bci"] = {"Baoulé"},
["bcj"] = {"Bardi"},
["bck"] = {"Bunuba"},
["bcl"] = {"Bikolish Veanagh"},
["bcm"] = {"Bannoni"},
["bcn"] = {"Bali (y Naigeer)"},
["bco"] = {"Kaluli"},
["bcp"] = {"Bali (Pobblaght Gheynlagh y Chongo)"},
["bcq"] = {"Bench"},
["bcr"] = {"Babine"},
["bcs"] = {"Kohumono"},
["bct"] = {"Bendi"},
["bcu"] = {"Awad Bing"},
["bcv"] = {"Shoo-Minda-Nye"},
["bcw"] = {"Bana"},
["bcy"] = {"Bacama"},
["bcz"] = {"Bainouk-Gunyaamolo"},
["bda"] = {"Bayot"},
["bdb"] = {"Basap"},
["bdc"] = {"Emberá-Baudó"},
["bdd"] = {"Bunama"},
["bde"] = {"Bade"},
["bdf"] = {"Biage"},
["bdg"] = {"Bonggi"},
["bdh"] = {"Baka (y Toodaan Yiass)"},
["bdi"] = {"Burun"},
["bdj"] = {"Bai (y Toodaan Yiass)", "Bai"},
["bdk"] = {"Budukh"},
["bdl"] = {"Bajau Indoneeshagh"},
["bdm"] = {"Buduma"},
["bdn"] = {"Baldemu"},
["bdo"] = {"Morom"},
["bdp"] = {"Bende"},
["bdq"] = {"Bahnar"},
["bdr"] = {"Bajau y Choose Heear"},
["bds"] = {"Burunge"},
["bdt"] = {"Bokoto"},
["bdu"] = {"Oroko"},
["bdv"] = {"Bodo Parja"},
["bdw"] = {"Baham"},
["bdx"] = {"Budong-Budong"},
["bdy"] = {"Bandjalang"},
["bdz"] = {"Badeshi"},
["bea"] = {"Beaver"},
["beb"] = {"Bebele"},
["bec"] = {"Iceve-Maci"},
["bed"] = {"Bedoanas"},
["bee"] = {"Byangsi"},
["bef"] = {"Benabena"},
["beg"] = {"Belait"},
["beh"] = {"Biali"},
["bei"] = {"Bekati'"},
["bej"] = {"Beja", "Bedawiyet"},
["bek"] = {"Bebeli"},
["bem"] = {"Bemba (y Tambia)"},
["beo"] = {"Beami"},
["bep"] = {"Besoa"},
["beq"] = {"Beembe"},
["ber"] = {"çhengaghyn Berberagh"},
["bes"] = {"Besme"},
["bet"] = {"Guiberoua Béte"},
["beu"] = {"Blagar"},
["bev"] = {"Daloa Bété"},
["bew"] = {"Betawi"},
["bex"] = {"Jur Modo"},
["bey"] = {"Beli (Papooey Guinea Noa)"},
["bez"] = {"Bena (Tanzania)"},
["bfa"] = {"Bari"},
["bfb"] = {"Pauri Bareli"},
["bfc"] = {"Panyi Bai", "Bai Hwoaie"},
["bfd"] = {"Bafut"},
["bfe"] = {"Betaf", "Tena"},
["bff"] = {"Bofi"},
["bfg"] = {"Busang Kayan"},
["bfh"] = {"Blafe"},
["bfi"] = {"Çhengey Chowree Ghoaldagh"},
["bfj"] = {"Bafanji"},
["bfk"] = {"Çhengey Chowree Ban Khor"},
["bfl"] = {"Banda-Ndélé"},
["bfm"] = {"Mmen"},
["bfn"] = {"Bunak"},
["bfo"] = {"Malba Birifor"},
["bfp"] = {"Beba"},
["bfq"] = {"Badaga"},
["bfr"] = {"Bazigar"},
["bfs"] = {"Bai Yiass"},
["bft"] = {"Balti"},
["bfu"] = {"Gahri"},
["bfw"] = {"Bondo"},
["bfx"] = {"Bantayanon"},
["bfy"] = {"Bagheli"},
["bfz"] = {"Mahasu Pahari"},
["bga"] = {"Gwamhi-Wuri"},
["bgb"] = {"Bobongko"},
["bgc"] = {"Haryanvi"},
["bgd"] = {"Rathwi Bareli"},
["bge"] = {"Bauria"},
["bgf"] = {"Bangandu"},
["bgg"] = {"Bugun"},
["bgi"] = {"Giangan"},
["bgj"] = {"Bangolan"},
["bgk"] = {"Bit", "Buxinhua"},
["bgl"] = {"Bo (y Laos)"},
["bgn"] = {"Balooçhish"},
["bgo"] = {"Baga Koga"},
["bgp"] = {"Balooçhish Hiar"},
["bgq"] = {"Bagri"},
["bgr"] = {"Bawm Chin"},
["bgs"] = {"Tagabawa"},
["bgt"] = {"Bughotu"},
["bgu"] = {"Mbongno"},
["bgv"] = {"Warkay-Bipim"},
["bgw"] = {"Bhatri"},
["bgx"] = {"Turkish Ghaugaussagh Balkanagh"},
["bgy"] = {"Benggoi"},
["bgz"] = {"Banggai"},
["bha"] = {"Bharia"},
["bhb"] = {"Bhili"},
["bhc"] = {"Biga"},
["bhd"] = {"Bhadrawahi"},
["bhe"] = {"Bhaya"},
["bhf"] = {"Odiai"},
["bhg"] = {"Binandere"},
["bhh"] = {"Bukharic"},
["bhi"] = {"Bhilali"},
["bhj"] = {"Bahing"},
["bhl"] = {"Bimin"},
["bhm"] = {"Bathari"},
["bhn"] = {"Noa-Aramaaish Bohtan"},
["bho"] = {"Bhojpuri"},
["bhp"] = {"Bima"},
["bhq"] = {"Tukang Besi South"},
["bhr"] = {"Bara Malagasy"},
["bhs"] = {"Buwal"},
["bht"] = {"Bhattiyali"},
["bhu"] = {"Bhunjia"},
["bhv"] = {"Bahau"},
["bhw"] = {"Biak"},
["bhx"] = {"Bhalay"},
["bhy"] = {"Bhele"},
["bhz"] = {"Bada (yn Indoneesh)"},
["bia"] = {"Badimaya"},
["bib"] = {"Bissa", "Bisa"},
["bid"] = {"Bidiyo"},
["bie"] = {"Bepour"},
["bif"] = {"Biafada"},
["big"] = {"Biangai"},
["bik"] = {"Bikol"},
["bil"] = {"Bile"},
["bim"] = {"Bimoba"},
["bin"] = {"Bini", "Edo"},
["bio"] = {"Nai"},
["bip"] = {"Bila"},
["biq"] = {"Bipi"},
["bir"] = {"Bisorio"},
["bit"] = {"Berinomo"},
["biu"] = {"Biete"},
["biv"] = {"Birifor Yiass"},
["biw"] = {"Kol (Cameroon)"},
["bix"] = {"Bijori"},
["biy"] = {"Birhor"},
["biz"] = {"Baloi"},
["bja"] = {"Budza"},
["bjb"] = {"Banggarla"},
["bjc"] = {"Bariji"},
["bje"] = {"Biao-Jiao Mien"},
["bjf"] = {"Barzani Jewish Neo-Aramaic"},
["bjg"] = {"Bidyogo"},
["bjh"] = {"Bahinemo"},
["bji"] = {"Burji"},
["bjj"] = {"Kanauji"},
["bjk"] = {"Barok"},
["bjl"] = {"Bulu (Papooey Guinea Noa)"},
["bjm"] = {"Bajelani"},
["bjn"] = {"Banjar"},
["bjo"] = {"Banda Jiass Veanagh"},
["bjp"] = {"Fanamaket"},
["bjr"] = {"Binumarien"},
["bjs"] = {"Bajan"},
["bjt"] = {"Balanta-Ganja"},
["bju"] = {"Busuu"},
["bjv"] = {"Bedjond"},
["bjw"] = {"Bakwé"},
["bjx"] = {"Banao Itneg"},
["bjy"] = {"Bayali"},
["bjz"] = {"Baruga"},
["bka"] = {"Kyak"},
["bkc"] = {"Baka (Cameroon)"},
["bkd"] = {"Binukid", "Talaandig"},
["bkf"] = {"Beeke"},
["bkg"] = {"Buraka"},
["bkh"] = {"Bakoko"},
["bki"] = {"Baki"},
["bkj"] = {"Pande"},
["bkk"] = {"Brokskat"},
["bkl"] = {"Berik"},
["bkm"] = {"Kom (Cameroon)"},
["bkn"] = {"Bukitan"},
["bko"] = {"Kwa'"},
["bkp"] = {"Boko (Pobblaght Gheynlagh y Chongo)"},
["bkq"] = {"Bakairí"},
["bkr"] = {"Bakumpai"},
["bks"] = {"Sorsoganon Hwoaie"},
["bkt"] = {"Boloki"},
["bku"] = {"Buhid"},
["bkv"] = {"Bekwarra"},
["bkw"] = {"Bekwel"},
["bkx"] = {"Baikeno"},
["bky"] = {"Bokyi"},
["bkz"] = {"Bungku"},
["bla"] = {"Siksika"},
["blb"] = {"Bilua"},
["blc"] = {"Bella Coola"},
["bld"] = {"Bolango"},
["ble"] = {"Balanta-Kentohe"},
["blf"] = {"Buol"},
["blh"] = {"Kuwaa"},
["bli"] = {"Bolia"},
["blj"] = {"Bolongan"},
["blk"] = {"Pa'o Karen", "Pa'O"},
["bll"] = {"Biloxi"},
["blm"] = {"Beli (y Toodaan Yiass)"},
["bln"] = {"Bikol Catanduanes Yiass"},
["blo"] = {"Anii"},
["blp"] = {"Blablanga"},
["blq"] = {"Baluan-Pam"},
["blr"] = {"Blang"},
["bls"] = {"Balaesang"},
["blt"] = {"Tai Dam"},
["blv"] = {"Kibala", "Bolo"},
["blw"] = {"Balangao"},
["blx"] = {"Mag-Indi Ayta"},
["bly"] = {"Notre"},
["blz"] = {"Balantak"},
["bma"] = {"Lame"},
["bmb"] = {"Bembe"},
["bmc"] = {"Biem"},
["bmd"] = {"Baga Manduri"},
["bme"] = {"Limassa"},
["bmf"] = {"Bom-Kim"},
["bmg"] = {"Bamwe"},
["bmh"] = {"Kein"},
["bmi"] = {"Bagirmi"},
["bmj"] = {"Bote-Majhi"},
["bmk"] = {"Ghayavi"},
["bml"] = {"Bomboli"},
["bmm"] = {"Malagasish Betsimisaraka Hwoaie"},
["bmn"] = {"Bina (Papooey Guinea Noa)"},
["bmo"] = {"Bambalang"},
["bmp"] = {"Bulgebi"},
["bmq"] = {"Bomu"},
["bmr"] = {"Muinane"},
["bms"] = {"Bilma Kanuri"},
["bmt"] = {"Biao Mon"},
["bmu"] = {"Somba-Siawari"},
["bmv"] = {"Bum"},
["bmw"] = {"Bomwali"},
["bmx"] = {"Baimak"},
["bmz"] = {"Baramu"},
["bna"] = {"Bonerate"},
["bnb"] = {"Bookan"},
["bnc"] = {"Bontok"},
["bnd"] = {"Banda (yn Indoneesh)"},
["bne"] = {"Bintauna"},
["bnf"] = {"Masiwang"},
["bng"] = {"Benga"},
["bni"] = {"Bangi"},
["bnj"] = {"Tawbuid Hiar"},
["bnk"] = {"Bierebo"},
["bnl"] = {"Boon"},
["bnm"] = {"Batanga"},
["bnn"] = {"Bunun"},
["bno"] = {"Bantoanon"},
["bnp"] = {"Bola"},
["bnq"] = {"Bantik"},
["bnr"] = {"Butmas-Tur"},
["bns"] = {"Bundeli"},
["bnt"] = {"çhengaghyn Bantu"},
["bnu"] = {"Bentong"},
["bnv"] = {"Bonerif", "Beneraf", "Edwas"},
["bnw"] = {"Bisis"},
["bnx"] = {"Bangubangu"},
["bny"] = {"Bintulu"},
["bnz"] = {"Beezen"},
["boa"] = {"Bora"},
["bob"] = {"Aweer"},
["boe"] = {"Mundabli"},
["bof"] = {"Bolon"},
["bog"] = {"Çhengey Chowree Bamako"},
["boh"] = {"Boma"},
["boi"] = {"Barbareño"},
["boj"] = {"Anjam"},
["bok"] = {"Bonjo"},
["bol"] = {"Bole"},
["bom"] = {"Berom"},
["bon"] = {"Bine"},
["boo"] = {"Tiemacèwè Bozo"},
["bop"] = {"Bonkiman"},
["boq"] = {"Bogaya"},
["bor"] = {"Borôro"},
["bot"] = {"Bongo"},
["bou"] = {"Bondei"},
["bov"] = {"Tuwuli"},
["bow"] = {"Rema"},
["box"] = {"Buamu"},
["boy"] = {"Bodo (Pobblaght yn Affrick Veanagh)"},
["boz"] = {"Tiéyaxo Bozo"},
["bpa"] = {"Daakaka"},
["bpc"] = {"Mbuk"},
["bpd"] = {"Banda-Banda"},
["bpe"] = {"Bauni"},
["bpg"] = {"Bonggo"},
["bph"] = {"Botlikh"},
["bpi"] = {"Bagupi"},
["bpj"] = {"Binji"},
["bpk"] = {"Orowe", "'Ôrôê"},
["bpl"] = {"Broome Pearling Lugger Pidgin"},
["bpm"] = {"Biyom"},
["bpn"] = {"Dzao Min"},
["bpo"] = {"Anasi"},
["bpp"] = {"Kaure"},
["bpq"] = {"Malayish Banda"},
["bpr"] = {"Koronadal Blaan"},
["bps"] = {"Sarangani Blaan"},
["bpt"] = {"Barrow Point"},
["bpu"] = {"Bongu"},
["bpv"] = {"Bian Marind"},
["bpw"] = {"Bo (Papooey Guinea Noa)"},
["bpx"] = {"Palya Bareli"},
["bpy"] = {"Bishnupriya"},
["bpz"] = {"Bilba"},
["bqa"] = {"Tchumbuli"},
["bqb"] = {"Bagusa"},
["bqc"] = {"Boko (Benin)", "Boo"},
["bqd"] = {"Bung"},
["bqf"] = {"Baga Kaloum"},
["bqg"] = {"Bago-Kusuntu"},
["bqh"] = {"Baima"},
["bqi"] = {"Bakhtiari"},
["bqj"] = {"Bandial"},
["bqk"] = {"Banda-Mbrès"},
["bql"] = {"Bilakura"},
["bqm"] = {"Wumboko"},
["bqn"] = {"Çhengey Chowree Vulgeyragh"},
["bqo"] = {"Balo"},
["bqp"] = {"Busa"},
["bqq"] = {"Biritai"},
["bqr"] = {"Burusu"},
["bqs"] = {"Bosngun"},
["bqt"] = {"Bamukumbit"},
["bqu"] = {"Boguru"},
["bqv"] = {"Koro Wachi", "Begbere-Ejar"},
["bqw"] = {"Buru (y Naigeer)"},
["bqx"] = {"Baangi"},
["bqy"] = {"Çhengey Chowree Bengkala"},
["bqz"] = {"Bakaka"},
["bra"] = {"Braj"},
["brb"] = {"Brao", "Lave"},
["brc"] = {"Creeole Ollanish Berbice"},
["brd"] = {"Baraamu"},
["brf"] = {"Bira"},
["brg"] = {"Baure"},
["brh"] = {"Brahui"},
["bri"] = {"Mokpwe"},
["brj"] = {"Bieria"},
["brk"] = {"Birked"},
["brl"] = {"Birwa"},
["brm"] = {"Barambu"},
["brn"] = {"Boruca"},
["bro"] = {"Brokkat"},
["brp"] = {"Barapasi"},
["brq"] = {"Breri"},
["brr"] = {"Birao"},
["brs"] = {"Baras"},
["brt"] = {"Bitare"},
["bru"] = {"Bru Hiar"},
["brv"] = {"Bru Heear"},
["brw"] = {"Bellari"},
["brx"] = {"Bodo (yn Injey)"},
["bry"] = {"Burui"},
["brz"] = {"Bilbil"},
["bsa"] = {"Abinomn"},
["bsb"] = {"Brunei Bisaya"},
["bsc"] = {"Bassari", "Oniyan"},
["bse"] = {"Wushi"},
["bsf"] = {"Bauchi"},
["bsg"] = {"Bashkardish"},
["bsh"] = {"Kati"},
["bsi"] = {"Bassossi"},
["bsj"] = {"Bangwinji"},
["bsk"] = {"Burushaski"},
["bsl"] = {"Basa-Gumna"},
["bsm"] = {"Busami"},
["bsn"] = {"Barasana-Eduria"},
["bso"] = {"Buso"},
["bsp"] = {"Baga Sitemu"},
["bsq"] = {"Bassa"},
["bsr"] = {"Bassa-Kontagora"},
["bss"] = {"Akoose"},
["bst"] = {"Basketo"},
["bsu"] = {"Bahonsuai"},
["bsv"] = {"Baga Sobané"},
["bsw"] = {"Baiso"},
["bsx"] = {"Yangkam"},
["bsy"] = {"Sabah Bisaya"},
["bta"] = {"Bata"},
["btc"] = {"Bati (Cameroon)"},
["btd"] = {"Batak Dairi"},
["bte"] = {"Gamo-Ningi"},
["btf"] = {"Birgit"},
["btg"] = {"Gagnoa Bété"},
["bth"] = {"Biatah Bidayuh"},
["bti"] = {"Burate"},
["btj"] = {"Malayish Vacanagh"},
["btk"] = {"çhengaghyn Batak"},
["btm"] = {"Batak Mandailing"},
["btn"] = {"Ratagnon"},
["bto"] = {"Rinconada Bikol"},
["btp"] = {"Budibud"},
["btq"] = {"Batek"},
["btr"] = {"Baetora"},
["bts"] = {"Batak Simalungun"},
["btt"] = {"Bete-Bendi"},
["btu"] = {"Batu"},
["btv"] = {"Bateri"},
["btw"] = {"Butuanon"},
["btx"] = {"Batak Karo"},
["bty"] = {"Bobot"},
["btz"] = {"Batak Alas-Kluet"},
["bua"] = {"Buryatish"},
["bub"] = {"Bua"},
["buc"] = {"Bushi"},
["bud"] = {"Ntcham"},
["bue"] = {"Beothuk"},
["buf"] = {"Bushoong"},
["bug"] = {"Buginish"},
["buh"] = {"Younuo Bunu"},
["bui"] = {"Bongili"},
["buj"] = {"Basa-Gurmana"},
["buk"] = {"Bugawac"},
["bum"] = {"Bulu (Cameroon)"},
["bun"] = {"Sherbro"},
["buo"] = {"Terei"},
["bup"] = {"Busoa"},
["buq"] = {"Brem"},
["bus"] = {"Bokobaru"},
["but"] = {"Bungain"},
["buu"] = {"Budu"},
["buv"] = {"Bun"},
["buw"] = {"Bubi"},
["bux"] = {"Boghom"},
["buy"] = {"Bullom So"},
["buz"] = {"Bukwen"},
["bva"] = {"Barein"},
["bvb"] = {"Bube"},
["bvc"] = {"Baelelea"},
["bvd"] = {"Baeggu"},
["bve"] = {"Malayish Berau"},
["bvf"] = {"Boor"},
["bvg"] = {"Bonkeng"},
["bvh"] = {"Bure"},
["bvi"] = {"Belanda Viri"},
["bvj"] = {"Baan"},
["bvk"] = {"Bukat"},
["bvl"] = {"Çh Chowree Voliviagh"},
["bvm"] = {"Bamunka"},
["bvn"] = {"Buna"},
["bvo"] = {"Bolgo"},
["bvp"] = {"Bumang"},
["bvq"] = {"Birri"},
["bvr"] = {"Burarra"},
["bvt"] = {"Bati (yn Indoneesh)"},
["bvu"] = {"Malayish Bukit"},
["bvv"] = {"Baniva"},
["bvw"] = {"Boga"},
["bvx"] = {"Dibole"},
["bvy"] = {"Baybayanon"},
["bvz"] = {"Bauzi"},
["bwa"] = {"Bwatoo"},
["bwb"] = {"Namosi-Naitasiri-Serua"},
["bwc"] = {"Bwile"},
["bwd"] = {"Bwaidoka"},
["bwe"] = {"Bwe Karen"},
["bwf"] = {"Boselewa"},
["bwg"] = {"Barwe"},
["bwh"] = {"Bishuo"},
["bwi"] = {"Baniwa"},
["bwj"] = {"Láá Láá Bwamu"},
["bwk"] = {"Bauwaki"},
["bwl"] = {"Bwela"},
["bwm"] = {"Biwat"},
["bwn"] = {"Wunai Bunu"},
["bwo"] = {"Boro (yn Eetoip)", "Borna (yn Eetoip)"},
["bwp"] = {"Mandobo Bawah"},
["bwq"] = {"Bobo Madaré Yiass"},
["bwr"] = {"Bura-Pabir"},
["bws"] = {"Bomboma"},
["bwt"] = {"Bafaw-Balong"},
["bwu"] = {"Buli (y Ghaney)"},
["bww"] = {"Bwa"},
["bwx"] = {"Bu-Nao Bunu"},
["bwy"] = {"Cwi Bwamu"},
["bwz"] = {"Bwisi"},
["bxa"] = {"Tairaha"},
["bxb"] = {"Belanda Bor"},
["bxc"] = {"Molengue"},
["bxd"] = {"Pela"},
["bxe"] = {"Birale"},
["bxf"] = {"Bilur", "Minigir"},
["bxg"] = {"Bangala"},
["bxh"] = {"Buhutu"},
["bxi"] = {"Pirlatapa"},
["bxj"] = {"Bayungu"},
["bxk"] = {"Bukusu", "Lubukusu"},
["bxl"] = {"Jalkunan"},
["bxm"] = {"Buryatish Vongoilagh"},
["bxn"] = {"Burduna"},
["bxo"] = {"Barikanchi"},
["bxp"] = {"Bebil"},
["bxq"] = {"Beele"},
["bxr"] = {"Buryatish Rooshagh"},
["bxs"] = {"Busam"},
["bxu"] = {"Buryatish Heenagh"},
["bxv"] = {"Berakou"},
["bxw"] = {"Bankagooma"},
["bxz"] = {"Binahari"},
["bya"] = {"Batak"},
["byb"] = {"Bikya"},
["byc"] = {"Ubaghara"},
["byd"] = {"Benyadu'"},
["bye"] = {"Pouye"},
["byf"] = {"Bete"},
["byg"] = {"Baygo"},
["byh"] = {"Bhujel"},
["byi"] = {"Buyu"},
["byj"] = {"Bina (y Naigeer)"},
["byk"] = {"Biao"},
["byl"] = {"Bayono"},
["bym"] = {"Bidjara"},
["byn"] = {"Bilin", "Blin"},
["byo"] = {"Biyo"},
["byp"] = {"Bumaji"},
["byq"] = {"Basay"},
["byr"] = {"Baruya", "Yipma"},
["bys"] = {"Burak"},
["byt"] = {"Berti"},
["byv"] = {"Medumba"},
["byw"] = {"Belhariya"},
["byx"] = {"Qaqet"},
["byz"] = {"Banaro"},
["bza"] = {"Bandi"},
["bzb"] = {"Andio"},
["bzc"] = {"Malagasish Betsimisaraka Yiass"},
["bzd"] = {"Bribri"},
["bze"] = {"Jenaama Bozo"},
["bzf"] = {"Boikin"},
["bzg"] = {"Babuza"},
["bzh"] = {"Mapos Buang"},
["bzi"] = {"Bisu"},
["bzj"] = {"Creeole Baarle Beleeshagh"},
["bzk"] = {"Creeole Baarle Nickeraagagh"},
["bzl"] = {"Boano (Sulawesi)"},
["bzm"] = {"Bolondo"},
["bzn"] = {"Boano (Maluku)"},
["bzo"] = {"Bozaba"},
["bzp"] = {"Kemberano"},
["bzq"] = {"Buli (yn Indoneesh)"},
["bzr"] = {"Biri"},
["bzs"] = {"Çhengey Chowree Vrasseelagh"},
["bzt"] = {"Brithenig"},
["bzu"] = {"Burmeso"},
["bzv"] = {"Naami"},
["bzw"] = {"Basa (y Naigeer)"},
["bzx"] = {"Kɛlɛngaxo Bozo"},
["bzy"] = {"Obanliku"},
["bzz"] = {"Evant"},
["caa"] = {"Chortí"},
["cab"] = {"Garifunish"},
["cac"] = {"Chuj"},
["cad"] = {"Caddo"},
["cae"] = {"Lehar", "Laalaa"},
["caf"] = {"Carrier Yiass"},
["cag"] = {"Nivaclé"},
["cah"] = {"Cahuarano"},
["cai"] = {"çhengaghyn Injinagh Americaanagh Meanagh"},
["caj"] = {"Chané"},
["cak"] = {"Kaqchikel", "Cakchiquel"},
["cal"] = {"Carolinish"},
["cam"] = {"Cemuhî"},
["can"] = {"Chambri"},
["cao"] = {"Chácobo"},
["cap"] = {"Chipaya"},
["caq"] = {"Car Nicobarese"},
["car"] = {"Caribish Galibi"},
["cas"] = {"Tsimané"},
["cau"] = {"çhengaghyn Coagaashagh"},
["cav"] = {"Cavineña"},
["caw"] = {"Callawalla"},
["cax"] = {"Chiquitano"},
["cay"] = {"Cayuga"},
["caz"] = {"Canichana"},
["cba"] = {"çhengaghyn Çhibçhagh"},
["cbb"] = {"Cabiyarí"},
["cbc"] = {"Carapana"},
["cbd"] = {"Carijona"},
["cbg"] = {"Chimila"},
["cbi"] = {"Chachi"},
["cbj"] = {"Ede Cabe"},
["cbk"] = {"Chavacano"},
["cbl"] = {"Bualkhaw Chin"},
["cbn"] = {"Nyahkur"},
["cbo"] = {"Izora"},
["cbq"] = {"Tsucuba", "Cuba"},
["cbr"] = {"Cashibo-Cacataibo"},
["cbs"] = {"Cashinahua"},
["cbt"] = {"Chayahuita"},
["cbu"] = {"Candoshi-Shapra"},
["cbv"] = {"Cacua"},
["cbw"] = {"Kinabalish"},
["cby"] = {"Carabayo"},
["ccc"] = {"Chamicuro"},
["ccd"] = {"Creeole Cafundo"},
["cce"] = {"Chopi"},
["ccg"] = {"Samba Daka"},
["cch"] = {"Atsam"},
["ccj"] = {"Kasanga"},
["ccl"] = {"Cutchi-Swahili"},
["ccm"] = {"Creeole Malayish Malacca"},
["ccn"] = {"çhengaghyn Coagaashagh Hwoaie"},
["cco"] = {"Comaltepec Chinantec"},
["ccp"] = {"Chakma"},
["ccr"] = {"Cacaopera"},
["ccs"] = {"çhengaghyn Coagaashagh Yiass"},
["cda"] = {"Choni"},
["cdc"] = {"çhengaghyn Shadagh"},
["cdd"] = {"çhengaghyn Caddoagh"},
["cde"] = {"Chenchu"},
["cdf"] = {"Chiru"},
["cdh"] = {"Chambeali"},
["cdi"] = {"Chodri"},
["cdj"] = {"Churahi"},
["cdm"] = {"Chepang"},
["cdn"] = {"Chaudangsi"},
["cdo"] = {"Sheenish Min Dong"},
["cdr"] = {"Cinda-Regi-Tiyal"},
["cds"] = {"Çhengey Chowree Hadagh"},
["cdy"] = {"Chadong"},
["cdz"] = {"Koda"},
["cea"] = {"Chehalis Injil"},
["ceb"] = {"Cebuano"},
["ceg"] = {"Chamacoco"},
["cek"] = {"Khumi Chin Hiar"},
["cel"] = {"çhengaghyn Celtiagh"},
["cen"] = {"Cen"},
["cet"] = {"Centúúm"},
["cey"] = {"Ekai Chin"},
["cfa"] = {"Dijim-Bwilim"},
["cfd"] = {"Cara"},
["cfg"] = {"Como Karim"},
["cfm"] = {"Falam Chin"},
["cga"] = {"Changriwa"},
["cgc"] = {"Kagayanen"},
["cgg"] = {"Chiga"},
["cgk"] = {"Chocangacakha"},
["chb"] = {"Chibcha"},
["chc"] = {"Catawba"},
["chd"] = {"Chontal Oaxaca Sleitoil"},
["chf"] = {"Chontal Tabasco"},
["chg"] = {"Chagatai"},
["chh"] = {"Chinook"},
["chj"] = {"Ojitlán Chinantec"},
["chk"] = {"Chuukese"},
["chl"] = {"Cahuilla"},
["chm"] = {"Marish (y Roosh)"},
["chn"] = {"Chinookish"},
["cho"] = {"Shoctawish"},
["chp"] = {"Chipewyish", "Dene Suline"},
["chq"] = {"Chinantec Quiotepec"},
["chr"] = {"Sherokeeish"},
["cht"] = {"Cholón"},
["chw"] = {"Chuwabu"},
["chx"] = {"Chantyal"},
["chy"] = {"Cheyenne"},
["chz"] = {"Chinantec Ozumacín"},
["cia"] = {"Cia-Cia"},
["cib"] = {"Ci Gbe"},
["cic"] = {"Chickasawish"},
["cid"] = {"Chimariko"},
["cie"] = {"Cineni"},
["cih"] = {"Chinali"},
["cik"] = {"Chitkuli Kinnauri"},
["cim"] = {"Cimbrish"},
["cin"] = {"Cinta Larga"},
["cip"] = {"Chiapanec"},
["cir"] = {"Tiri", "Haméa", "Méa"},
["ciw"] = {"Chippewa"},
["ciy"] = {"Chaima"},
["cja"] = {"Chamish Heear"},
["cje"] = {"Chru"},
["cjh"] = {"Chehalis Heose"},
["cji"] = {"Chamalal"},
["cjk"] = {"Chokwe"},
["cjm"] = {"Chamish Hiar"},
["cjn"] = {"Chenapish"},
["cjo"] = {"Ashéninka Pajonal"},
["cjp"] = {"Cabécar"},
["cjs"] = {"Shor"},
["cjv"] = {"Chuave"},
["cjy"] = {"Sheenish Jinyu"},
["ckb"] = {"Kurdish Veanagh"},
["ckh"] = {"Chak"},
["ckl"] = {"Cibak"},
["ckm"] = {"Chakavish"},
["ckn"] = {"Kaang Chin"},
["cko"] = {"Anufo"},
["ckq"] = {"Kajakse"},
["ckr"] = {"Kairak"},
["cks"] = {"Tayo"},
["ckt"] = {"Shukçheeish"},
["cku"] = {"Koasati"},
["ckv"] = {"Kavalan"},
["ckx"] = {"Caka"},
["cky"] = {"Cakfem-Mushere"},
["ckz"] = {"Çhengey Vestit Cakchiquel-Quiché"},
["cla"] = {"Ron"},
["clc"] = {"Chilcotin"},
["cld"] = {"Noa-Aramaaish Haldeanagh"},
["cle"] = {"Chinantec Lealao"},
["clh"] = {"Chilisso"},
["cli"] = {"Chakali"},
["clj"] = {"Laitu Chin"},
["clk"] = {"Idu-Mishmi"},
["cll"] = {"Chala"},
["clm"] = {"Clallam"},
["clo"] = {"Chontal Oaxaca Injil"},
["clt"] = {"Lautu Chin"},
["clu"] = {"Caluyanun"},
["clw"] = {"Chulym"},
["cly"] = {"Chatino Sleitoil Hiar"},
["cma"] = {"Maa"},
["cmc"] = {"çhengaghyn Shamagh"},
["cme"] = {"Cerma"},
["cmg"] = {"Mongoilish Chlassicagh"},
["cmi"] = {"Emberá-Chamí"},
["cml"] = {"Campalagian"},
["cmm"] = {"Michigamea"},
["cmn"] = {"Sheenish Mandarin"},
["cmo"] = {"Mnong Meanagh"},
["cmr"] = {"Mro-Khimi Chin"},
["cms"] = {"Messapic"},
["cmt"] = {"Camtho"},
["cna"] = {"Changthang"},
["cnb"] = {"Chinbon Chin"},
["cnc"] = {"Côông"},
["cng"] = {"Qiang Hwoaie"},
["cnh"] = {"Hakha Chin", "Haka Chin"},
["cni"] = {"Asháninka"},
["cnk"] = {"Khumi Chin"},
["cnl"] = {"Lalana Chinantec"},
["cno"] = {"Con"},
["cnp"] = {"Sheenish Ping Hwoaie", "Pinghua Hwoaie"},
["cnq"] = {"Chung"},
["cnr"] = {"Montenegrish"},
["cns"] = {"Asmatish Veanagh"},
["cnt"] = {"Chinantec Tepetotutla"},
["cnu"] = {"Chenoua"},
["cnw"] = {"Ngawn Chin"},
["cnx"] = {"Cornish Veanagh"},
["coa"] = {"Malayish Ellanyn Cocos"},
["cob"] = {"Chicomuceltec"},
["coc"] = {"Cocopa"},
["cod"] = {"Cocama-Cocamilla"},
["coe"] = {"Koreguaje"},
["cof"] = {"Colorado"},
["cog"] = {"Chong"},
["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"},
["coj"] = {"Cochimi"},
["cok"] = {"Santa Teresa Cora"},
["col"] = {"Columbia-Wenatchi"},
["com"] = {"Comançheeish"},
["con"] = {"Cofán"},
["coo"] = {"Comox"},
["cop"] = {"Coptish"},
["coq"] = {"Coquille"},
["cot"] = {"Caquinte"},
["cou"] = {"Wamey"},
["cov"] = {"Cao Miao"},
["cow"] = {"Cowlitz"},
["cox"] = {"Nanti"},
["coz"] = {"Chochotec"},
["cpa"] = {"Palantla Chinantec"},
["cpb"] = {"Ucayali-Yurúa Ashéninka"},
["cpc"] = {"Ajyíninka Apurucayali"},
["cpe"] = {"creeoleyn as baarlaghyn brisht bunnit er y Vaarle"},
["cpf"] = {"creeoleyn as baarlaghyn brisht bunnit er y Rangish"},
["cpg"] = {"Greagish Cappadocia"},
["cpi"] = {"Baarle Vrisht Heenagh"},
["cpn"] = {"Cherepon"},
["cpo"] = {"Kpeego"},
["cpp"] = {"creeoleyn as baarlaghyn brisht bunnit er y Phortiugish"},
["cps"] = {"Capiznon"},
["cpu"] = {"Pichis Ashéninka"},
["cpx"] = {"Sheenish Pu-Xian"},
["cpy"] = {"Ashéninka Ucayali Yiass"},
["cqd"] = {"Chuanqiandian Cluster Miao"},
["cra"] = {"Chara"},
["crb"] = {"Caribish Ellanagh"},
["crc"] = {"Lonwolwol"},
["crd"] = {"Coeur d'Alene"},
["crf"] = {"Caramanta"},
["crg"] = {"Michif"},
["crh"] = {"Tatarish Chrimeeagh", "Turkish Chrimeeagh"},
["cri"] = {"Sãotomense"},
["crj"] = {"Creeish Hiar Yiass"},
["crk"] = {"Creeish ny Strahyn"},
["crl"] = {"Creeish Hiar Hwoaie"},
["crm"] = {"Creeish Moose"},
["crn"] = {"El Nayar Cora"},
["cro"] = {"Crowish"},
["crp"] = {"Creeoleyn as baarlaghyn brisht"},
["crq"] = {"Iyo'wujwa Chorote"},
["crr"] = {"Algonquiagh Carolina"},
["crs"] = {"Creeole Frangish Seselwa"},
["crt"] = {"Iyojwa'ja Chorote"},
["crv"] = {"Chaura"},
["crw"] = {"Chrau"},
["crx"] = {"Carrier"},
["cry"] = {"Cori"},
["crz"] = {"Cruzeño"},
["csa"] = {"Chinantec Chiltepec"},
["csb"] = {"Kashoobish"},
["csc"] = {"Çhengey Chowree Chataloanagh", "Lengua de señas catalana", "Llengua de Signes Catalana"},
["csd"] = {"Çhengey Chowree Chiangmai"},
["cse"] = {"Çhengey Chowree Heckagh"},
["csf"] = {"Çhengey Chowree Choobagh"},
["csg"] = {"Çhengey Chowree Hilleeagh"},
["csh"] = {"Chin Asho"},
["csi"] = {"Miwok Coose"},
["csj"] = {"Chin Songlai"},
["csk"] = {"Jola-Kasa"},
["csl"] = {"Çhengey Chowree Heenagh"},
["csm"] = {"Miwokish Sierra Veanagh"},
["csn"] = {"Çhengey Chowree Cholombagh"},
["cso"] = {"Chinantec Sochiapam", "Chinantec Sochiapan"},
["csp"] = {"Sheenish Pink Yiass", "Pinghua Yiass"},
["csq"] = {"Çhengey Chowree Chroitagh"},
["csr"] = {"Çhengey Chowree Choose-verçhagh"},
["css"] = {"Ohlone Yiass"},
["cst"] = {"Ohlone Hwoaie"},
["csu"] = {"çhengaghyn Soodaanagh Meanagh"},
["csv"] = {"Chin Sumtu"},
["csw"] = {"Creeish Ushlagh"},
["csx"] = {"Çhengey Chowree Chamboydagh"},
["csy"] = {"Siyin Chin"},
["csz"] = {"Coos"},
["cta"] = {"Tataltepec Chatino"},
["ctc"] = {"Chetco"},
["ctd"] = {"Chin Tedim"},
["cte"] = {"Chinantec Tepinapa"},
["ctg"] = {"Chittagonish"},
["cth"] = {"Chin Thaiphum"},
["ctl"] = {"Chinantec Tlacoatzintepec"},
["ctm"] = {"Chitimacha"},
["ctn"] = {"Chhintange"},
["cto"] = {"Emberá-Catío"},
["ctp"] = {"Chatino Sleitoil Heear"},
["cts"] = {"Bikol Catanduanes Heear"},
["ctt"] = {"Wayanad Chetti"},
["ctu"] = {"Chol"},
["cty"] = {"Moundadan Chetty"},
["ctz"] = {"Chatino Zacatepec"},
["cua"] = {"Cua"},
["cub"] = {"Cubeo"},
["cuc"] = {"Usila Chinantec"},
["cuh"] = {"Chuka", "Gichuka"},
["cui"] = {"Cuiba"},
["cuj"] = {"Mashco Piro"},
["cuk"] = {"San Blas Kuna"},
["cul"] = {"Culina", "Kulina"},
["cuo"] = {"Cumanagoto"},
["cup"] = {"Cupeño"},
["cuq"] = {"Cun"},
["cur"] = {"Chhulung"},
["cus"] = {"çhengaghyn Cushitagh"},
["cut"] = {"Teutila Cuicatec"},
["cuu"] = {"Tai Ya"},
["cuv"] = {"Cuvok"},
["cuw"] = {"Chukwa"},
["cux"] = {"Tepeuxila Cuicatec"},
["cuy"] = {"Cuitlatec"},
["cvg"] = {"Chug"},
["cvn"] = {"Valle Nacional Chinantec"},
["cwa"] = {"Kabwa"},
["cwb"] = {"Maindo"},
["cwd"] = {"Creeish ny Keylljyn"},
["cwe"] = {"Kwere"},
["cwg"] = {"Chewong", "Cheq Wong"},
["cwt"] = {"Kuwaataay"},
["cxh"] = {"Cha'ari"},
["cya"] = {"Nopala Chatino"},
["cyb"] = {"Cayubaba"},
["cyo"] = {"Cuyonon"},
["czh"] = {"Sheenish Huizhou"},
["czk"] = {"Knaanic"},
["czn"] = {"Zenzontepec Chatino"},
["czo"] = {"Sheenish Min Zhong"},
["czt"] = {"Zotung Chin"},
["daa"] = {"Dangaléat"},
["dac"] = {"Dambi"},
["dad"] = {"Marik"},
["dae"] = {"Duupa"},
["dag"] = {"Dagbani"},
["dah"] = {"Gwahatike"},
["dai"] = {"Day"},
["daj"] = {"Dar Fur Daju"},
["dak"] = {"Dakota"},
["dal"] = {"Dahalo"},
["dam"] = {"Damakawa"},
["dao"] = {"Daai Chin"},
["daq"] = {"Dandami Maria"},
["dar"] = {"Dargwa"},
["das"] = {"Daho-Doo"},
["dau"] = {"Dar Sila Daju"},
["dav"] = {"Taita", "Dawida"},
["daw"] = {"Davawenyo"},
["dax"] = {"Dayi"},
["day"] = {"çhengaghyn Land Dayak"},
["daz"] = {"Dao"},
["dba"] = {"Bangime"},
["dbb"] = {"Deno"},
["dbd"] = {"Dadiya"},
["dbe"] = {"Dabe"},
["dbf"] = {"Edopi"},
["dbg"] = {"Dogul Dom Dogon"},
["dbi"] = {"Doka"},
["dbj"] = {"Ida'an"},
["dbl"] = {"Dyirbal"},
["dbm"] = {"Duguri"},
["dbn"] = {"Duriankere"},
["dbo"] = {"Dulbu"},
["dbp"] = {"Duwai"},
["dbq"] = {"Daba"},
["dbr"] = {"Dabarre"},
["dbt"] = {"Ben Tey Dogon"},
["dbu"] = {"Bondum Dom Dogon"},
["dbv"] = {"Dungu"},
["dbw"] = {"Bankan Tey Dogon"},
["dby"] = {"Dibiyaso"},
["dcc"] = {"Deccan"},
["dcr"] = {"Negerhollands"},
["dda"] = {"Dadi Dadi"},
["ddd"] = {"Dongotono"},
["dde"] = {"Doondo"},
["ddg"] = {"Fataluku"},
["ddi"] = {"West Goodenough"},
["ddj"] = {"Jaru"},
["ddn"] = {"Dendi (Benin)"},
["ddo"] = {"Dido"},
["ddr"] = {"Dhudhuroa"},
["dds"] = {"Donno So Dogon"},
["ddw"] = {"Dawera-Daweloor"},
["dec"] = {"Dagik"},
["ded"] = {"Dedua"},
["dee"] = {"Dewoin"},
["def"] = {"Dezfuli"},
["deg"] = {"Degema"},
["deh"] = {"Dehwari"},
["dei"] = {"Demisa"},
["dek"] = {"Dek"},
["del"] = {"Delaware"},
["dem"] = {"Dem"},
["den"] = {"Slavish (Athapascagh)"},
["dep"] = {"Pidgin Delaware"},
["deq"] = {"Dendi (Pobblaght yn Affrick Veanagh)"},
["der"] = {"Deori"},
["des"] = {"Desano"},
["dev"] = {"Domung"},
["dez"] = {"Dengese"},
["dga"] = {"Dagaare Yiass"},
["dgb"] = {"Bunoge Dogon"},
["dgc"] = {"Casiguran Dumagat Agta"},
["dgd"] = {"Dagaari Dioula"},
["dge"] = {"Degenan"},
["dgg"] = {"Doga"},
["dgh"] = {"Dghwede"},
["dgi"] = {"Dagara Hwoaie"},
["dgk"] = {"Dagba"},
["dgl"] = {"Andaandi", "Dongolawi"},
["dgn"] = {"Dagoman"},
["dgo"] = {"Dogri (çhengey er lheh)"},
["dgr"] = {"Dogrib", "Tłı̨chǫ"},
["dgs"] = {"Dogoso"},
["dgt"] = {"Ndra'ngith"},
["dgw"] = {"Daungwurrung"},
["dgx"] = {"Doghoro"},
["dgz"] = {"Daga"},
["dhd"] = {"Dhundari"},
["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"},
["dhi"] = {"Dhimal"},
["dhl"] = {"Dhalandji"},
["dhm"] = {"Zemba"},
["dhn"] = {"Dhanki"},
["dho"] = {"Dhodia"},
["dhr"] = {"Dhargari"},
["dhs"] = {"Dhaiso"},
["dhu"] = {"Dhurga"},
["dhv"] = {"Dehu", "Drehu"},
["dhw"] = {"Dhanwar (Nepaal)"},
["dhx"] = {"Dhungaloo"},
["dia"] = {"Dia"},
["dib"] = {"Dinka Yiass Veanagh"},
["dic"] = {"Lakota Dida"},
["did"] = {"Didinga"},
["dif"] = {"Dieri", "Diyari"},
["dig"] = {"Digo", "Chidigo"},
["dih"] = {"Kumiai"},
["dii"] = {"Dimbong"},
["dij"] = {"Dai"},
["dik"] = {"Dinka Heear Yiass"},
["dil"] = {"Dilling"},
["dim"] = {"Dime"},
["din"] = {"Dinka"},
["dio"] = {"Dibo"},
["dip"] = {"Dinka Hiar Yiass"},
["diq"] = {"Dimli (çhengey er lheh)"},
["dir"] = {"Dirim"},
["dis"] = {"Dimasa"},
["diu"] = {"Diriku"},
["diw"] = {"Dinka Heear Hwoaie"},
["dix"] = {"Dixon Reef"},
["diy"] = {"Diuwe"},
["diz"] = {"Ding"},
["dja"] = {"Djadjawurrung"},
["djb"] = {"Djinba"},
["djc"] = {"Dar Daju Daju"},
["djd"] = {"Djamindjung", "Ngaliwurru"},
["dje"] = {"Zarma"},
["djf"] = {"Djangun"},
["dji"] = {"Djinang"},
["djj"] = {"Djeebbana"},
["djk"] = {"Creeole Maroon Hiar", "Businenge Tongo", "Nenge"},
["djm"] = {"Jamsay Dogon"},
["djn"] = {"Jawoyn", "Djauan"},
["djo"] = {"Jangkang"},
["djr"] = {"Djambarrpuyngu"},
["dju"] = {"Kapriman"},
["djw"] = {"Djawi"},
["dka"] = {"Dakpakha"},
["dkg"] = {"Kadung"},
["dkk"] = {"Dakka"},
["dkr"] = {"Kuijau"},
["dks"] = {"Dinka Hiar Yiass"},
["dkx"] = {"Mazagway"},
["dlg"] = {"Dolgan"},
["dlk"] = {"Dahalik"},
["dlm"] = {"Dalmaatish"},
["dln"] = {"Darlong"},
["dma"] = {"Duma"},
["dmb"] = {"Mombo Dogon"},
["dmc"] = {"Gavak"},
["dmd"] = {"Madhi Madhi"},
["dme"] = {"Dugwor"},
["dmf"] = {"Medefaidrin"},
["dmg"] = {"Kinabatangan Heose"},
["dmk"] = {"Domaaki"},
["dml"] = {"Dameli"},
["dmm"] = {"Dama"},
["dmn"] = {"çhengaghyn Mande"},
["dmo"] = {"Kemedzung"},
["dmr"] = {"Damar Hiar"},
["dms"] = {"Dampelas"},
["dmu"] = {"Dubu", "Tebi"},
["dmv"] = {"Dumpas"},
["dmw"] = {"Mudburra"},
["dmx"] = {"Dema"},
["dmy"] = {"Demta", "Sowari"},
["dna"] = {"Dani yn Upper Grand Valley"},
["dnd"] = {"Daonda"},
["dne"] = {"Ndendeule"},
["dng"] = {"Dungan"},
["dni"] = {"Dani yn Lower Grand Valley"},
["dnj"] = {"Dan"},
["dnk"] = {"Dengka"},
["dnn"] = {"Dzùùngoo"},
["dno"] = {"Ndrulo", "Lendu Hwoaie"},
["dnr"] = {"Danaru"},
["dnt"] = {"Dani yn Mid Grand Valley"},
["dnu"] = {"Danau"},
["dnv"] = {"Danu"},
["dnw"] = {"Dani Heear"},
["dny"] = {"Dení"},
["doa"] = {"Dom"},
["dob"] = {"Dobu"},
["doc"] = {"Dong Hwoaie"},
["doe"] = {"Doe"},
["dof"] = {"Domu"},
["doh"] = {"Dong"},
["doi"] = {"Dogri (mooar-hengey)"},
["dok"] = {"Dondo"},
["dol"] = {"Doso"},
["don"] = {"Toura (Papooey Guinea Noa)"},
["doo"] = {"Dongo"},
["dop"] = {"Lukpa"},
["doq"] = {"Çhengey Chowree Ghominicagh"},
["dor"] = {"Dori'o"},
["dos"] = {"Dogosé"},
["dot"] = {"Dass"},
["dov"] = {"Dombe"},
["dow"] = {"Doyayo"},
["dox"] = {"Bussa"},
["doy"] = {"Dompo"},
["doz"] = {"Dorze"},
["dpp"] = {"Papar"},
["dra"] = {"çhengaghyn Dravidagh"},
["drb"] = {"Dair"},
["drc"] = {"Minderico"},
["drd"] = {"Darmiya"},
["dre"] = {"Dolpo"},
["drg"] = {"Rungus"},
["dri"] = {"C'Lela"},
["drl"] = {"Paakantyi"},
["drn"] = {"Damar Heear"},
["dro"] = {"Daro-Matu Melanau"},
["drq"] = {"Dura"},
["drs"] = {"Gedeo"},
["drt"] = {"Drents"},
["dru"] = {"Rukai"},
["dry"] = {"Darai"},
["dsb"] = {"Sorbish Eeghtyragh"},
["dse"] = {"Çhengey Chowree Ollanagh"},
["dsh"] = {"Daasanach"},
["dsi"] = {"Disa"},
["dsk"] = {"Dokshi"},
["dsl"] = {"Çhengey Chowree Ghanvargagh"},
["dsn"] = {"Dusner"},
["dso"] = {"Desiya"},
["dsq"] = {"Tadaksahak"},
["dsz"] = {"Çh Chowree Mardin"},
["dta"] = {"Daur"},
["dtb"] = {"Labuk-Kinabatangan Kadazan"},
["dtd"] = {"Ditidaht"},
["dth"] = {"Adithinngithigh"},
["dti"] = {"Ana Tinga Dogon"},
["dtk"] = {"Tene Kan Dogon"},
["dtm"] = {"Tomo Kan Dogon"},
["dtn"] = {"Daatsʼíin"},
["dto"] = {"Tommo So Dogon"},
["dtp"] = {"Kadazan Dusun", "Dusun Veanagh"},
["dtr"] = {"Lotud"},
["dts"] = {"Toro So Dogon"},
["dtt"] = {"Toro Tegu Dogon"},
["dtu"] = {"Tebul Ure Dogon"},
["dty"] = {"Dotyali"},
["dua"] = {"Duala"},
["dub"] = {"Dubli"},
["duc"] = {"Duna"},
["due"] = {"Umiray Dumaget Agta"},
["duf"] = {"Dumbea", "Drubea"},
["dug"] = {"Duruma", "Chiduruma"},
["duh"] = {"Dungra Bhil"},
["dui"] = {"Dumun"},
["duk"] = {"Uyajitaya"},
["dul"] = {"Alabat Island Agta"},
["dum"] = {"Ollanish Veanagh (ca. 1050-1350)"},
["dun"] = {"Dusun Deyah"},
["duo"] = {"Dupaninan Agta"},
["dup"] = {"Duano"},
["duq"] = {"Dusun Malang"},
["dur"] = {"Dii"},
["dus"] = {"Dumi"},
["duu"] = {"Drung"},
["duv"] = {"Duvle"},
["duw"] = {"Dusun Witu"},
["dux"] = {"Duungooma"},
["duy"] = {"Dicamay Agta"},
["duz"] = {"Duli-Gey"},
["dva"] = {"Duau"},
["dwa"] = {"Diri"},
["dwk"] = {"Dawik Kui"},
["dwr"] = {"Dawro"},
["dws"] = {"Dutton World Speedwords"},
["dwu"] = {"Dhuwal"},
["dww"] = {"Dawawa"},
["dwy"] = {"Dhuwaya"},
["dwz"] = {"Dewas Rai"},
["dya"] = {"Dyan"},
["dyb"] = {"Dyaberdyaber"},
["dyd"] = {"Dyugun"},
["dyg"] = {"Villa Viciosa Agta"},
["dyi"] = {"Djimini Senoufo"},
["dym"] = {"Yanda Dom Dogon"},
["dyn"] = {"Dyangadi", "Dhanggatti"},
["dyo"] = {"Jola-Fonyi"},
["dyr"] = {"Dyarim"},
["dyu"] = {"Dyulish"},
["dyy"] = {"Djabugay", "Dyaabugay"},
["dza"] = {"Tunzu"},
["dzd"] = {"Daza"},
["dze"] = {"Djiwarli"},
["dzg"] = {"Dazaga"},
["dzl"] = {"Dzalakha"},
["dzn"] = {"Dzando"},
["eaa"] = {"Karenggapa"},
["ebc"] = {"Beginci"},
["ebg"] = {"Ebughu"},
["ebk"] = {"Bontok Hiar"},
["ebo"] = {"Teke-Ebo"},
["ebr"] = {"Ebrié"},
["ebu"] = {"Embu", "Kiembu"},
["ecr"] = {"Eteocretan"},
["ecs"] = {"Çhengey Chowree Ecuadoragh"},
["ecy"] = {"Eteocheeprish"},
["eee"] = {"E"},
["efa"] = {"Efai"},
["efe"] = {"Efe"},
["efi"] = {"Efik"},
["ega"] = {"Ega"},
["egl"] = {"Emilianish"},
["egm"] = {"Benamanga"},
["ego"] = {"Eggon"},
["egx"] = {"çhengaghyn Egyptagh"},
["egy"] = {"Egyptish (Shenn)"},
["ehs"] = {"Çhengey Chowree Miyakubo"},
["ehu"] = {"Ehueun"},
["eip"] = {"Eipomek"},
["eit"] = {"Eitiep"},
["eiv"] = {"Askopan"},
["eja"] = {"Ejamat"},
["eka"] = {"Ekajuk"},
["eke"] = {"Ekit"},
["ekg"] = {"Ekari"},
["eki"] = {"Eki"},
["ekk"] = {"Estoinish"},
["ekl"] = {"Kol (y Vangladesh)", "Kol"},
["ekm"] = {"Elip"},
["eko"] = {"Koti"},
["ekp"] = {"Ekpeye"},
["ekr"] = {"Yace"},
["eky"] = {"Kayah Hiar"},
["ele"] = {"Elepi"},
["elh"] = {"El Hugeirat"},
["eli"] = {"Nding"},
["elk"] = {"Elkei"},
["elm"] = {"Eleme"},
["elo"] = {"El Molo"},
["elu"] = {"Elu"},
["elx"] = {"Elamish"},
["ema"] = {"Emai-Iuleha-Ora"},
["emb"] = {"Embaloh"},
["eme"] = {"Emerillon"},
["emg"] = {"Meohang Hiar"},
["emi"] = {"Mussau-Emira"},
["emk"] = {"Maninkish Hiar"},
["emm"] = {"Mamulique"},
["emn"] = {"Emanish"},
["emp"] = {"Emberá Hwoaie"},
["emq"] = {"Minyagish Hiar"},
["ems"] = {"Yupik Lhoob y Cheayn Sheealtagh"},
["emu"] = {"Muria Hiar"},
["emw"] = {"Emplawas"},
["emx"] = {"Erromintxela"},
["emy"] = {"Mayish Epigrafagh"},
["emz"] = {"Mbessa"},
["ena"] = {"Apali"},
["enb"] = {"Markweeta"},
["enc"] = {"En"},
["end"] = {"Ende"},
["enf"] = {"Enetsish ny Keylljyn"},
["enh"] = {"Enetsish y Tundrey"},
["enl"] = {"Enlhet"},
["enm"] = {"Baarle Veanagh (1100-1500)"},
["enn"] = {"Engenni"},
["eno"] = {"Enggano"},
["enq"] = {"Enga"},
["enr"] = {"Emumu", "Emem"},
["enu"] = {"Enu"},
["env"] = {"Enwan (Steat Edo)"},
["enw"] = {"Enwan (Steat Akwa Ibom)"},
["enx"] = {"Enxet"},
["eot"] = {"Beti (y Clyst Iuaagagh)"},
["epi"] = {"Epie"},
["era"] = {"Eravallan"},
["erg"] = {"Sie"},
["erh"] = {"Eruwa"},
["eri"] = {"Ogea"},
["erk"] = {"Efate Yiass"},
["ero"] = {"Horpa"},
["err"] = {"Erre"},
["ers"] = {"Ersu"},
["ert"] = {"Eritai"},
["erw"] = {"Erokwanas"},
["ese"] = {"Ese Ejja"},
["esg"] = {"Aheri Gondi"},
["esh"] = {"Eshtehardi"},
["esi"] = {"Inupiatun Alaska Hwoaie"},
["esk"] = {"Inupiatun Alaska Heear Hwoaie"},
["esl"] = {"Çhengey Chowree yn Egypt"},
["esm"] = {"Esuma"},
["esn"] = {"Çhengey Chowree Halvadoragh"},
["eso"] = {"Çhengey Chowree Estaanagh"},
["esq"] = {"Esselen"},
["ess"] = {"Yupik y Çhibbeyr Veanagh"},
["esu"] = {"Yupik Veanagh"},
["esx"] = {"çhengaghyn Eskimogh-Aleutagh"},
["esy"] = {"Eskayan"},
["etb"] = {"Etebi"},
["etc"] = {"Etchemin"},
["eth"] = {"Çhengey Chowree Eetoipagh"},
["etn"] = {"Eton (Vanuatu)"},
["eto"] = {"Eton (Cameroon)"},
["etr"] = {"Edolo"},
["ets"] = {"Yekhee"},
["ett"] = {"Etruscish"},
["etu"] = {"Ejagham"},
["etx"] = {"Eten"},
["etz"] = {"Semimi"},
["eud"] = {"Eudeve"},
["euq"] = {"Bascagh (kynney)"},
["eve"] = {"Evenish"},
["evh"] = {"Uvbie"},
["evn"] = {"Evenkish"},
["ewo"] = {"Ewondo"},
["ext"] = {"Estremadurish"},
["eya"] = {"Eyak"},
["eyo"] = {"Keiyo"},
["eza"] = {"Ezaa"},
["eze"] = {"Uzekwe"},
["faa"] = {"Fasu"},
["fab"] = {"Fa d'Ambu"},
["fad"] = {"Wagi"},
["faf"] = {"Fagani"},
["fag"] = {"Finongan"},
["fah"] = {"Baissa Fali"},
["fai"] = {"Faiwol"},
["faj"] = {"Faita"},
["fak"] = {"Fang (Cameroon)"},
["fal"] = {"Fali Yiass"},
["fam"] = {"Fam"},
["fan"] = {"Fang (Guinea Chryss ny Cruinney)"},
["fap"] = {"Paloor"},
["far"] = {"Fataleka"},
["fat"] = {"Fanti"},
["fau"] = {"Fayu"},
["fax"] = {"Fala"},
["fay"] = {"Fars Heear Yiass"},
["faz"] = {"Fars Heear Hwoaie"},
["fbl"] = {"Bikol Albay Heear"},
["fcs"] = {"Çhengey Chowree Québec"},
["fer"] = {"Feroge"},
["ffi"] = {"Foia Foia"},
["ffm"] = {"Maasina Fulfulde"},
["fgr"] = {"Fongoro"},
["fia"] = {"Nobiin"},
["fie"] = {"Fyer"},
["fif"] = {"Faifi"},
["fil"] = {"Philippeenish"},
["fip"] = {"Fipa"},
["fir"] = {"Firan"},
["fit"] = {"Finnlynnish Tornedal", "Meänkieli"},
["fiu"] = {"çhengaghyn Finn-Oogragh"},
["fiw"] = {"Fiwaga"},
["fkk"] = {"Kirya-Konzəl"},
["fkv"] = {"Finnlynnish Kven"},
["fla"] = {"Kalispel-Pend d'Oreille"},
["flh"] = {"Foau"},
["fli"] = {"Fali"},
["fll"] = {"Fali Hwoaie"},
["fln"] = {"Flinders Island"},
["flr"] = {"Fuliiru"},
["fly"] = {"Flaaitaal", "Tsotsitaal"},
["fmp"] = {"Fe'fe'"},
["fmu"] = {"Muria Heear Foddey"},
["fnb"] = {"Fanbak"},
["fng"] = {"Fanagalo"},
["fni"] = {"Fania"},
["fod"] = {"Foodo"},
["foi"] = {"Foi"},
["fom"] = {"Foma"},
["fon"] = {"Fon"},
["for"] = {"Fore"},
["fos"] = {"Siraya"},
["fox"] = {"çhengaghyn Formosagh"},
["fpe"] = {"Creeole Baarle Fernando Po"},
["fqs"] = {"Fas"},
["frc"] = {"Frangish Cajun"},
["frd"] = {"Fordata"},
["frk"] = {"Frankish"},
["frm"] = {"Frangish Veanagh (ca. 1400-1600)"},
["fro"] = {"Shenn Rangish (842-ca. 1400)"},
["frp"] = {"Arpitanish", "Francoprovençal"},
["frq"] = {"Forak"},
["frr"] = {"Freeshlannish Hwoaie"},
["frs"] = {"Freeshlannish Hiar"},
["frt"] = {"Fortsenal"},
["fse"] = {"Çhengey Cowree Innlynnagh"},
["fsl"] = {"Çhengey Chowree Rangagh"},
["fss"] = {"Çhengey Chowree Finnlynn-y Toolynn", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"},
["fub"] = {"Adamawa Fulfulde"},
["fuc"] = {"Pulaarish"},
["fud"] = {"Futuna Hiar"},
["fue"] = {"Borgu Fulfulde"},
["fuf"] = {"Pularish"},
["fuh"] = {"Fulfulde y Neegeyr Heear"},
["fui"] = {"Fulfulde Bagirmi"},
["fuj"] = {"Ko"},
["fum"] = {"Fum"},
["fun"] = {"Fulniô"},
["fuq"] = {"Fulfulde y Neegeyr Hiar Veanagh"},
["fur"] = {"Friulish"},
["fut"] = {"Futuna-Aniwa"},
["fuu"] = {"Furu"},
["fuv"] = {"Fulfulde y Naigeer"},
["fuy"] = {"Fuyug"},
["fvr"] = {"Fur"},
["fwa"] = {"Fwâi"},
["fwe"] = {"Fwe"},
["gaa"] = {"Ga"},
["gab"] = {"Gabri"},
["gac"] = {"Andamanish Vooar Vestit"},
["gad"] = {"Gaddang"},
["gae"] = {"Guarequena"},
["gaf"] = {"Gende"},
["gag"] = {"Gagauzish"},
["gah"] = {"Alekano"},
["gai"] = {"Borei"},
["gaj"] = {"Gadsup"},
["gak"] = {"Gamkonora"},
["gal"] = {"Galolen"},
["gam"] = {"Kandawo"},
["gan"] = {"Sheenish Gan"},
["gao"] = {"Gants"},
["gap"] = {"Gal"},
["gaq"] = {"Gata'"},
["gar"] = {"Galeya"},
["gas"] = {"Adiwasi Garasia"},
["gat"] = {"Kenati"},
["gau"] = {"Mudhili Gadaba"},
["gaw"] = {"Nobonob"},
["gax"] = {"Borana-Arsi-Guji Oromo"},
["gay"] = {"Gayo"},
["gaz"] = {"Oromoish Veanagh Heear"},
["gba"] = {"Gbaya (Pobblaght yn Affrick Veanagh)"},
["gbb"] = {"Kaytetye"},
["gbd"] = {"Karajarri"},
["gbe"] = {"Niksek"},
["gbf"] = {"Gaikundi"},
["gbg"] = {"Gbanziri"},
["gbh"] = {"Defi Gbe"},
["gbi"] = {"Galela"},
["gbj"] = {"Bodo Gadaba"},
["gbk"] = {"Gaddi"},
["gbl"] = {"Gamit"},
["gbm"] = {"Garhwali"},
["gbn"] = {"Mo'da"},
["gbo"] = {"Grebo Hwoaie"},
["gbp"] = {"Gbaya-Bossangoa"},
["gbq"] = {"Gbaya-Bozoum"},
["gbr"] = {"Gbagyi"},
["gbs"] = {"Gbesi Gbe"},
["gbu"] = {"Gagadu"},
["gbv"] = {"Gbanu"},
["gbw"] = {"Gabi-Gabi"},
["gbx"] = {"Xwla Gbe Hiar"},
["gby"] = {"Gbari"},
["gbz"] = {"Darish Horoastrianagh"},
["gcc"] = {"Mali"},
["gcd"] = {"Ganggalida"},
["gce"] = {"Galice"},
["gcf"] = {"Creeole Frangish Guadeloupe"},
["gcl"] = {"Creeole Baarle Grenadagh"},
["gcn"] = {"Gaina"},
["gcr"] = {"Creeole Frangish Geeaanagh"},
["gct"] = {"Germaanish Colonia Tovar"},
["gda"] = {"Gade Lohar"},
["gdb"] = {"Pottangi Ollar Gadaba"},
["gdc"] = {"Gugu Badhun"},
["gdd"] = {"Gedaged"},
["gde"] = {"Gude"},
["gdf"] = {"Guduf-Gava"},
["gdg"] = {"Ga'dang"},
["gdh"] = {"Gadjerawang", "Gajirrabeng"},
["gdi"] = {"Gundi"},
["gdj"] = {"Gurdjar"},
["gdk"] = {"Gadang"},
["gdl"] = {"Dirasha"},
["gdm"] = {"Laal"},
["gdn"] = {"Umanakaina"},
["gdo"] = {"Ghodoberi"},
["gdq"] = {"Mehri"},
["gdr"] = {"Wipi"},
["gds"] = {"Çhengey CHowree Ghandruk"},
["gdt"] = {"Kungardutyi"},
["gdu"] = {"Gudu"},
["gdx"] = {"Godwari"},
["gea"] = {"Geruma"},
["geb"] = {"Kire"},
["gec"] = {"Gboloo Grebo"},
["ged"] = {"Gade"},
["gef"] = {"Gerai"},
["geg"] = {"Gengle"},
["geh"] = {"Germaanish utteragh", "Hutterisch"},
["gei"] = {"Gebe"},
["gej"] = {"Gen"},
["gek"] = {"Ywom"},
["gel"] = {"ut-Ma'in"},
["gem"] = {"çhengaghyn Germaanic"},
["geq"] = {"Geme"},
["ges"] = {"Geser-Gorom"},
["gev"] = {"Eviya"},
["gew"] = {"Gera"},
["gex"] = {"Garre"},
["gey"] = {"Enya"},
["gez"] = {"Geez"},
["gfk"] = {"Patpatar"},
["gft"] = {"Gafat"},
["gga"] = {"Gao"},
["ggb"] = {"Gbii"},
["ggd"] = {"Gugadj"},
["gge"] = {"Gurr-goni"},
["ggg"] = {"Gurgula"},
["ggk"] = {"Kungarakany"},
["ggl"] = {"Ganglau"},
["ggt"] = {"Gitua"},
["ggu"] = {"Gagu", "Gban"},
["ggw"] = {"Gogodala"},
["gha"] = {"Ghadamès"},
["ghc"] = {"Gaelg Yerno-Albinagh"},
["ghe"] = {"Ghale Yiass"},
["ghh"] = {"Ghale Hwoaie"},
["ghk"] = {"Karenish Geko"},
["ghl"] = {"Ghulfan"},
["ghn"] = {"Ghanongga"},
["gho"] = {"Ghomara"},
["ghr"] = {"Ghera"},
["ghs"] = {"Guhu-Samane"},
["ght"] = {"Kuke", "Kutang Ghale"},
["gia"] = {"Kija"},
["gib"] = {"Gibanawa"},
["gic"] = {"Gail"},
["gid"] = {"Gidar"},
["gie"] = {"Gaɓogbo", "Guébie"},
["gig"] = {"Goaria"},
["gih"] = {"Githabul"},
["gii"] = {"Girirra"},
["gil"] = {"Gilbertish"},
["gim"] = {"Gimi (yn Ard-Heer Hiar)"},
["gin"] = {"Hinukh"},
["gip"] = {"Gimi (y Vretyn Noa Heear)"},
["giq"] = {"Gelao Eayney"},
["gir"] = {"Gelao Jiarg"},
["gis"] = {"Giziga Hwoaie"},
["git"] = {"Gitxsan"},
["giu"] = {"Mulao"},
["giw"] = {"Gelao Bane"},
["gix"] = {"Gilima"},
["giy"] = {"Giyug"},
["giz"] = {"Giziga Yiass"},
["gjk"] = {"Kachi Koli"},
["gjm"] = {"Gunditjmara"},
["gjn"] = {"Gonja"},
["gjr"] = {"Kriol Gurindji"},
["gju"] = {"Gujari"},
["gka"] = {"Guya"},
["gkd"] = {"Magɨ (Queiggey Madang)"},
["gke"] = {"Ndai"},
["gkn"] = {"Gokana"},
["gko"] = {"Kok-Nar"},
["gkp"] = {"Kpelle yn Ghuinea"},
["gku"] = {"ǂUngkue"},
["glb"] = {"Belning"},
["glc"] = {"Bon Gula"},
["gld"] = {"Nanai"},
["glh"] = {"Pashai Heear Hwoaie", "Pashayi Heear Hwoaie"},
["glj"] = {"Gula Iro"},
["glk"] = {"Gilaki"},
["gll"] = {"Garlali"},
["glo"] = {"Galambu"},
["glr"] = {"Glaro-Twabo"},
["glu"] = {"Gula (Shad)"},
["glw"] = {"Glavda"},
["gly"] = {"Gule"},
["gma"] = {"Gambera"},
["gmb"] = {"Gula'alaa"},
["gmd"] = {"Mághdì"},
["gme"] = {"çhengaghyn Germaanic Hiar"},
["gmg"] = {"Magɨyi"},
["gmh"] = {"Ard-Ghermaanish Veanagh (ca. 1050-1500)"},
["gml"] = {"Germaanish Injil Veanagh"},
["gmm"] = {"Gbaya-Mbodomo"},
["gmn"] = {"Gimnime"},
["gmq"] = {"çhengaghyn Germaanic Hwoaie"},
["gmr"] = {"Mirning", "Mirniny"},
["gmu"] = {"Gumalu"},
["gmv"] = {"Gamo"},
["gmw"] = {"çhengaghyn Germaanagh Heear"},
["gmx"] = {"Magoma"},
["gmy"] = {"Greagish Vycenaeagh"},
["gmz"] = {"Mgbolizhia"},
["gna"] = {"Kaansa"},
["gnb"] = {"Gangte"},
["gnc"] = {"Guançhish"},
["gnd"] = {"Zulgo-Gemzek"},
["gne"] = {"Ganang"},
["gng"] = {"Ngangam"},
["gnh"] = {"Lere"},
["gni"] = {"Gooniyandi"},
["gnj"] = {"Ngen"},
["gnk"] = {"ǁGana"},
["gnl"] = {"Gangulu"},
["gnm"] = {"Ginuman"},
["gnn"] = {"Gumatj"},
["gno"] = {"Gondi Hwoaie"},
["gnq"] = {"Gana"},
["gnr"] = {"Gureng Gureng"},
["gnt"] = {"Guntai"},
["gnu"] = {"Gnau"},
["gnw"] = {"Guaranish Voliviagh Heear"},
["gnz"] = {"Ganzi"},
["goa"] = {"Guro"},
["gob"] = {"Playero"},
["goc"] = {"Gorakor"},
["god"] = {"Godié"},
["goe"] = {"Gongduk"},
["gof"] = {"Gofa"},
["gog"] = {"Gogo"},
["goh"] = {"Shenn Ard-Ghermaanish (ca. 750-1050)"},
["goi"] = {"Gobasi"},
["goj"] = {"Gowlan"},
["gok"] = {"Gowli"},
["gol"] = {"Gola"},
["gom"] = {"Goan Konkani"},
["gon"] = {"Gondi"},
["goo"] = {"Gone Dau"},
["gop"] = {"Yeretuar"},
["goq"] = {"Gorap"},
["gor"] = {"Gorontalo"},
["gos"] = {"Gronings"},
["got"] = {"Gothish"},
["gou"] = {"Gavar"},
["gov"] = {"Goo"},
["gow"] = {"Gorowa"},
["gox"] = {"Gobu"},
["goy"] = {"Goundo"},
["goz"] = {"Gozarkhani"},
["gpa"] = {"Gupa-Abawa"},
["gpe"] = {"Baarle Vrisht Ghanaiagh"},
["gpn"] = {"Taiap"},
["gqa"] = {"Ga'anda"},
["gqi"] = {"Guiqiong"},
["gqn"] = {"Guana (y Vrasseel)"},
["gqr"] = {"Gor"},
["gqu"] = {"Qau"},
["gra"] = {"Garasia Rajput"},
["grb"] = {"Grebo"},
["grc"] = {"Shenn Ghreagish (derrey 1453)"},
["grd"] = {"Guruntum-Mbaaru"},
["grg"] = {"Madi"},
["grh"] = {"Gbiri-Niragu"},
["gri"] = {"Ghari"},
["grj"] = {"Grebo Yiass"},
["grk"] = {"çhengaghyn Greagagh"},
["grm"] = {"Kota Marudu Talantang"},
["gro"] = {"Groma"},
["grq"] = {"Gorovu"},
["grr"] = {"Taznatit"},
["grs"] = {"Gresi"},
["grt"] = {"Garo"},
["gru"] = {"Kistane"},
["grv"] = {"Grebo Veanagh"},
["grw"] = {"Gweda"},
["grx"] = {"Guriaso"},
["gry"] = {"Grebo Barclayville"},
["grz"] = {"Guramalum"},
["gse"] = {"Çhengey Chowree Ghanaiagh"},
["gsg"] = {"Çhengey Chowree Ghermaanagh"},
["gsl"] = {"Gusilay"},
["gsm"] = {"Çhengey Chowree Ghuatemalagh"},
["gsn"] = {"Nema", "Gusan"},
["gso"] = {"Gbaya Heear Yiass"},
["gsp"] = {"Wasembo"},
["gss"] = {"Çhengey Chowree Ghreagagh"},
["gsw"] = {"Germaanish Elveeishagh", "Alemannish", "Alsaasish"},
["gta"] = {"Guató"},
["gtu"] = {"Aghu-Tharnggala"},
["gua"] = {"Shiki"},
["gub"] = {"Guajajára"},
["guc"] = {"Wayuu"},
["gud"] = {"Yocoboué Dida"},
["gue"] = {"Gurindji"},
["guf"] = {"Gupapuyngu"},
["gug"] = {"Guaranish Pharaguayagh"},
["guh"] = {"Guahibo"},
["gui"] = {"Guaranish Voliviagh Hiar"},
["guk"] = {"Gumuz"},
["gul"] = {"Creeole Baarle Gullah"},
["gum"] = {"Guambiano"},
["gun"] = {"Mbyá Guaraní"},
["guo"] = {"Guayabero"},
["gup"] = {"Gunwinggu"},
["guq"] = {"Aché"},
["gur"] = {"Farefare"},
["gus"] = {"Çhengey Chowree Guineagh"},
["gut"] = {"Maléku Jaíka"},
["guu"] = {"Yanomamö"},
["guw"] = {"Gun"},
["gux"] = {"Gourmanchéma"},
["guz"] = {"Gusii", "Ekegusii"},
["gva"] = {"Guana (y Pharaguay)"},
["gvc"] = {"Guanano"},
["gve"] = {"Duwet"},
["gvf"] = {"Golin"},
["gvj"] = {"Guajá"},
["gvl"] = {"Gulay"},
["gvm"] = {"Gurmana"},
["gvn"] = {"Kuku-Yalanji"},
["gvo"] = {"Gavião Do Jiparaná"},
["gvp"] = {"Pará Gavião"},
["gvr"] = {"Gurung"},
["gvs"] = {"Gumawana"},
["gvy"] = {"Guyani"},
["gwa"] = {"Mbato"},
["gwb"] = {"Gwa"},
["gwc"] = {"Gawri", "Kalami"},
["gwd"] = {"Gawwada"},
["gwe"] = {"Gweno"},
["gwf"] = {"Gowro"},
["gwg"] = {"Moo"},
["gwi"] = {"Gwichʼin"},
["gwj"] = {"ǀGwi"},
["gwm"] = {"Awngthim"},
["gwn"] = {"Gwandara"},
["gwr"] = {"Gwere"},
["gwt"] = {"Gawar-Bati"},
["gwu"] = {"Guwamu"},
["gww"] = {"Kwini"},
["gwx"] = {"Gua"},
["gxx"] = {"Wè Yiass"},
["gya"] = {"Gbaya Heear Hwoaie"},
["gyb"] = {"Garus"},
["gyd"] = {"Kayardild"},
["gye"] = {"Gyem"},
["gyf"] = {"Gungabula"},
["gyg"] = {"Gbayi"},
["gyi"] = {"Gyele"},
["gyl"] = {"Gayil"},
["gym"] = {"Ngäbere"},
["gyn"] = {"Creeole Baarle Geeaanagh"},
["gyo"] = {"Gyalsumdo"},
["gyr"] = {"Guarayu"},
["gyy"] = {"Gunya"},
["gyz"] = {"Geji", "Gyaazi"},
["gza"] = {"Ganza"},
["gzi"] = {"Gazi"},
["gzn"] = {"Gane"},
["haa"] = {"Han"},
["hab"] = {"Çhengey Chowree Hanoi"},
["hac"] = {"Guranish"},
["had"] = {"Hatam"},
["hae"] = {"Oromoish Hiar"},
["haf"] = {"Çhengey Chowree Haiphong"},
["hag"] = {"Hanga"},
["hah"] = {"Hahon"},
["hai"] = {"Haida"},
["haj"] = {"Hajong"},
["hak"] = {"Sheenish Hakka"},
["hal"] = {"Halang"},
["ham"] = {"Hewa"},
["han"] = {"Hangaza"},
["hao"] = {"Hakö"},
["hap"] = {"Hupla"},
["haq"] = {"Ha"},
["har"] = {"Harari"},
["has"] = {"Haisla"},
["hav"] = {"Havu"},
["haw"] = {"Hawaiish"},
["hax"] = {"Haida Yiass"},
["hay"] = {"Haya"},
["haz"] = {"Hazaragi"},
["hba"] = {"Hamba"},
["hbb"] = {"Huba"},
["hbn"] = {"Heiban"},
["hbo"] = {"Shenn Ewnish"},
["hbu"] = {"Habu"},
["hca"] = {"Creeole Hindish Andamanagh"},
["hch"] = {"Huichol"},
["hdn"] = {"Haida Hwoaie"},
["hds"] = {"Çhengey Chowree Hondooragh"},
["hdy"] = {"Hadiyya"},
["hea"] = {"Miao Qiandong Hwoaie"},
["hed"] = {"Herdé"},
["heg"] = {"Helong"},
["heh"] = {"Hehe"},
["hei"] = {"Heiltsuk"},
["hem"] = {"Hemba"},
["hgm"] = {"Haiǁom"},
["hgw"] = {"Haigwai"},
["hhi"] = {"Hoia Hoia"},
["hhr"] = {"Kerak"},
["hhy"] = {"Hoyahoya"},
["hia"] = {"Lamang"},
["hib"] = {"Hibito"},
["hid"] = {"Hidatsa"},
["hif"] = {"Hindish Fiji"},
["hig"] = {"Kamwe"},
["hih"] = {"Pamosu"},
["hii"] = {"Hindurish"},
["hij"] = {"Hijuk"},
["hik"] = {"Seit-Kaitetu"},
["hil"] = {"Hiligaynonish"},
["him"] = {"çhengaghyn Himachalagh", "çhengaghyn Paharagh Heear"},
["hio"] = {"Tsoa"},
["hir"] = {"Himarimã"},
["hit"] = {"Hittish"},
["hiw"] = {"Hiw"},
["hix"] = {"Hixkaryána"},
["hji"] = {"Haji"},
["hka"] = {"Kahe"},
["hke"] = {"Hunde"},
["hkh"] = {"Khah", "Poguli"},
["hkk"] = {"Hunjara-Kaina Ke"},
["hkn"] = {"Mel-Khaonh"},
["hks"] = {"Çhengey Chowree Hong Kong", "Heung Kong Sau Yue"},
["hla"] = {"Halia"},
["hlb"] = {"Halbi"},
["hld"] = {"Halang Doan"},
["hle"] = {"Hlersu"},
["hlt"] = {"Matu Chin"},
["hlu"] = {"Luwish Yalloo-ocklagh"},
["hma"] = {"Hmongish Mashan Yiass", "Miaoish Mashan Yiass"},
["hmb"] = {"Humburi Senni Songhay"},
["hmc"] = {"Hmongish Huishui Veanagh", "Miaoish Huishui Veanagh"},
["hmd"] = {"Miaoish Vooar-Ornaidagh", "A-hmaos", "Miaoish Da-Hua"},
["hme"] = {"Hmongish Huishui Hiar", "Miaoish Huishui Hiar"},
["hmf"] = {"Hmongish Don"},
["hmg"] = {"Hmongish Guiyang Heear Yiass"},
["hmh"] = {"Hmongish Huishui Heear Yiass", "Miaoish Huishui Heear Yiass"},
["hmi"] = {"Hmongish Huishui Hwoaie", "Miaoish Huishui Hwoaie"},
["hmj"] = {"Ge", "Gejia"},
["hmk"] = {"Maek"},
["hml"] = {"Hmongish Luopohe", "Miaoish Luopohe"},
["hmm"] = {"Hmongish Mashan Veanagh", "Miaoish Mashan Veanagh"},
["hmn"] = {"Hmongish", "Mongish"},
["hmp"] = {"Hmongish Mashan Hwoaie", "Miaoish Mashan Hwoaie"},
["hmq"] = {"Miaoish Qiandong Hiar"},
["hmr"] = {"Hmar"},
["hms"] = {"Miaoish Qiandong Yiass"},
["hmt"] = {"Hamtai"},
["hmu"] = {"Hamap"},
["hmv"] = {"Hmong Dô"},
["hmw"] = {"Hmongish Mashan Heear", "Miaoish Mashan Heear"},
["hmx"] = {"çhengaghyn Hmong-Mien"},
["hmy"] = {"Hmongish Guiyang Yiass", "Miaoish Guiyang Yiass"},
["hmz"] = {"Hmongish Shua", "Miaoish Heenit"},
["hna"] = {"Mina (Cameroon)"},
["hnd"] = {"Hindko Yiass"},
["hne"] = {"Chhattisgarhi"},
["hng"] = {"Hungu"},
["hnh"] = {"ǁAni"},
["hni"] = {"Hani"},
["hnj"] = {"Hmongish Njua", "Mong Leng", "Mong Njua"},
["hnn"] = {"Hanunoo"},
["hno"] = {"Hindko Hwoaie"},
["hns"] = {"Hindustaanish Charibagh"},
["hnu"] = {"Hung"},
["hoa"] = {"Hoava"},
["hob"] = {"Marish (Queiggey Madang)"},
["hoc"] = {"Ho"},
["hod"] = {"Holma"},
["hoe"] = {"Horom"},
["hoh"] = {"Hobyót"},
["hoi"] = {"Holikachuk"},
["hoj"] = {"Hadothish", "Harotish"},
["hok"] = {"çhengaghyn Hokagh"},
["hol"] = {"Holu"},
["hom"] = {"Homa"},
["hoo"] = {"Holoholo"},
["hop"] = {"Hopi"},
["hor"] = {"Horo"},
["hos"] = {"Çhengey Chowree Chaayr Ho Chi Minh"},
["hot"] = {"Hote", "Malê"},
["hov"] = {"Hovongan"},
["how"] = {"Honi"},
["hoy"] = {"Holiya"},
["hoz"] = {"Hozo"},
["hpo"] = {"Hpon"},
["hps"] = {"Glare Chowree Hawai'i (HSL)", "Çhengey Chowree Hawaiish Vrisht"},
["hra"] = {"Hrangkhol"},
["hrc"] = {"Niwer Mil"},
["hre"] = {"Hre"},
["hrk"] = {"Haruku"},
["hrm"] = {"Miaoish Eairkagh"},
["hro"] = {"Haroi"},
["hrp"] = {"Nhirrpi"},
["hrt"] = {"Hértevin"},
["hru"] = {"Hruso"},
["hrw"] = {"Warwar Feni"},
["hrx"] = {"Hunsrikish"},
["hrz"] = {"Harzanish"},
["hsb"] = {"Sorbish Eaghtyragh"},
["hsh"] = {"Glare Chowree Ungaaragh"},
["hsl"] = {"Glare Chowree Hausagh"},
["hsn"] = {"Sheenish Xiang"},
["hss"] = {"Harsusi"},
["hti"] = {"Hoti"},
["hto"] = {"Minica Huitoto"},
["hts"] = {"Hadza"},
["htu"] = {"Hitu"},
["htx"] = {"Hittish Veanagh"},
["hub"] = {"Huambisa"},
["huc"] = {"ǂHua", "ǂʼAmkhoe"},
["hud"] = {"Huaulu"},
["hue"] = {"San Francisco Del Mar Huave"},
["huf"] = {"Humene"},
["hug"] = {"Huachipaeri"},
["huh"] = {"Huilliche"},
["hui"] = {"Huli"},
["huj"] = {"Hmongish Guiyang Hwoaie", "Miaoish Guiyang Hwoaie"},
["huk"] = {"Hulung"},
["hul"] = {"Hula"},
["hum"] = {"Hungana"},
["huo"] = {"Hu"},
["hup"] = {"Hupa"},
["huq"] = {"Tsat"},
["hur"] = {"Halkomelem"},
["hus"] = {"Huastecish"},
["hut"] = {"Humla"},
["huu"] = {"Murui Huitoto"},
["huv"] = {"San Mateo Del Mar Huave"},
["huw"] = {"Hukumina"},
["hux"] = {"Nüpode Huitoto"},
["huy"] = {"Hulaulá"},
["huz"] = {"Hunzibish"},
["hvc"] = {"Çhengey Chultoor Vodoun Haitagh"},
["hve"] = {"San Dionisio Del Mar Huave"},
["hvk"] = {"Haveke"},
["hvn"] = {"Sabu"},
["hvv"] = {"Santa María Del Mar Huave"},
["hwa"] = {"Wané"},
["hwc"] = {"Creeole Baarle Hawaiianagh", "Hawaiish Vrisht"},
["hwo"] = {"Hwana"},
["hya"] = {"Hya"},
["hyw"] = {"Armeanish Heear"},
["hyx"] = {"Armeanagh (kynney)"},
["iai"] = {"Iaai"},
["ian"] = {"Iatmul"},
["iar"] = {"Purari"},
["iba"] = {"Iban"},
["ibb"] = {"Ibibio"},
["ibd"] = {"Iwaidja"},
["ibe"] = {"Akpes"},
["ibg"] = {"Ibanag"},
["ibh"] = {"Bih"},
["ibl"] = {"Ibaloi"},
["ibm"] = {"Agoi"},
["ibn"] = {"Ibino"},
["ibr"] = {"Ibuoro"},
["ibu"] = {"Ibu"},
["iby"] = {"Ibani"},
["ica"] = {"Ede Ica"},
["ich"] = {"Etkywan"},
["icl"] = {"Çhengey Chowree Eeslynnagh"},
["icr"] = {"Creeole San Andrés–Providencia"},
["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"},
["idb"] = {"Portiugish Injinagh"},
["idc"] = {"Idon", "Ajiya"},
["idd"] = {"Ede Idaca"},
["ide"] = {"Idere"},
["idi"] = {"Idi"},
["idr"] = {"Indri"},
["ids"] = {"Idesa"},
["idt"] = {"Idaté"},
["idu"] = {"Idoma"},
["ifa"] = {"Amganad Ifugao"},
["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"},
["ife"] = {"Ifè"},
["iff"] = {"Ifo"},
["ifk"] = {"Tuwali Ifugao"},
["ifm"] = {"Teke-Fuumu"},
["ifu"] = {"Mayoyao Ifugao"},
["ify"] = {"Keley-I Kallahan"},
["igb"] = {"Ebira"},
["ige"] = {"Igede"},
["igg"] = {"Igana"},
["igl"] = {"Igala"},
["igm"] = {"Kanggape"},
["ign"] = {"Ignaciano"},
["igo"] = {"Isebe"},
["igs"] = {"Interglossa"},
["igw"] = {"Igwe"},
["ihb"] = {"Iha Vrisht"},
["ihi"] = {"Ihievbe"},
["ihp"] = {"Iha"},
["ihw"] = {"Bidhawal"},
["iin"] = {"Thiin"},
["iir"] = {"çhengaghyn Ind-Eeraanagh"},
["ijc"] = {"Izon"},
["ije"] = {"Biseni"},
["ijj"] = {"Ede Ije"},
["ijn"] = {"Kalabari"},
["ijo"] = {"çhengaghyn Ijo"},
["ijs"] = {"Ijo Hiar Yiass"},
["ike"] = {"Inuktitut Hiar y Chanadey"},
["ikh"] = {"Ikhin-Arokho"},
["iki"] = {"Iko"},
["ikk"] = {"Ika"},
["ikl"] = {"Ikulu"},
["iko"] = {"Olulumo-Ikom"},
["ikp"] = {"Ikpeshi"},
["ikr"] = {"Ikaranggal"},
["iks"] = {"Çhengey Chowree Inuitagh"},
["ikt"] = {"Inuinnaqtun", "Inuktitut Heear y Chanadey"},
["ikv"] = {"Iku-Gora-Ankwa"},
["ikw"] = {"Ikwere"},
["ikx"] = {"Ik"},
["ikz"] = {"Ikizu"},
["ila"] = {"Ile Ape"},
["ilb"] = {"Ila"},
["ilg"] = {"Garig-Ilgar"},
["ili"] = {"Ili Turki"},
["ilk"] = {"Ilongot"},
["ilm"] = {"Iranun (y Valaysia)"},
["ilo"] = {"Iloko"},
["ilp"] = {"Iranun (ny h-Ellanyn Philippeenagh)"},
["ils"] = {"Çhengey Chowree Eddyr-ashoonagh"},
["ilu"] = {"Ili'uun"},
["ilv"] = {"Ilue"},
["ima"] = {"Mala Malasar"},
["imi"] = {"Anamgura"},
["iml"] = {"Miluk"},
["imn"] = {"Imonda"},
["imo"] = {"Imbongu"},
["imr"] = {"Imroing"},
["ims"] = {"Marsish"},
["imt"] = {"Imotong"},
["imy"] = {"Milyan"},
["inb"] = {"Inga"},
["inc"] = {"çhengaghyn Indagh"},
["ine"] = {"çhengaghyn Ind-Oarpagh"},
["ing"] = {"Degexit'an"},
["inh"] = {"Ingushish"},
["inj"] = {"Inga yn Jungyl"},
["inl"] = {"Çhengey Chowree Indoneeshagh"},
["inm"] = {"Minaeish"},
["inn"] = {"Isinai"},
["ino"] = {"Inoke-Yate"},
["inp"] = {"Iñapari"},
["ins"] = {"Çhengey Chowree Injinagh"},
["int"] = {"Intha"},
["inz"] = {"Ineseño"},
["ior"] = {"Inor"},
["iou"] = {"Tuma-Irumu"},
["iow"] = {"Iowa-Oto"},
["ipi"] = {"Ipili"},
["ipo"] = {"Ipiko"},
["iqu"] = {"Iquito"},
["iqw"] = {"Ikwo"},
["ira"] = {"çhengaghyn Eeraanagh"},
["ire"] = {"Iresim"},
["irh"] = {"Irarutu"},
["iri"] = {"Rigwe", "Irigwe"},
["irk"] = {"Iraqw"},
["irn"] = {"Irántxe"},
["iro"] = {"çhengaghyn Iroquoiagh"},
["irr"] = {"Ir"},
["iru"] = {"Irula"},
["irx"] = {"Kamberau"},
["iry"] = {"Iraya"},
["isa"] = {"Isabi"},
["isc"] = {"Isconahua"},
["isd"] = {"Isnag"},
["ise"] = {"Çhengey Chowree Iddaalagh"},
["isg"] = {"Çhengey Chowree Yernagh"},
["ish"] = {"Esan"},
["isi"] = {"Nkem-Nkum"},
["isk"] = {"Ishkashimi"},
["ism"] = {"Masimasi"},
["isn"] = {"Isanzu"},
["iso"] = {"Isoko"},
["isr"] = {"Çhengey Chowree Israelagh"},
["ist"] = {"Istriotish"},
["isu"] = {"Isu (Rheynn Menchum)"},
["itb"] = {"Binongan Itneg"},
["itc"] = {"çhengaghyn Iddaalagh"},
["itd"] = {"Tidung Yiass"},
["ite"] = {"Itene"},
["iti"] = {"Inlaod Itneg"},
["itk"] = {"Iddaalish Ewagh"},
["itl"] = {"Itelmenish"},
["itm"] = {"Itu Mbon Uzo"},
["ito"] = {"Itonama"},
["itr"] = {"Iteri"},
["its"] = {"Isekiri"},
["itt"] = {"Maeng Itneg"},
["itv"] = {"Itawit"},
["itw"] = {"Ito"},
["itx"] = {"Itik"},
["ity"] = {"Moyadan Itneg"},
["itz"] = {"Itzá"},
["ium"] = {"Iu Mien"},
["ivb"] = {"Ibatan"},
["ivv"] = {"Ivatan"},
["iwk"] = {"I-Wak"},
["iwm"] = {"Iwam"},
["iwo"] = {"Iwur"},
["iws"] = {"Sepik Iwam"},
["ixc"] = {"Ixcatecish"},
["ixl"] = {"Ixil"},
["iya"] = {"Iyayu"},
["iyo"] = {"Mesaka"},
["iyx"] = {"Yaka (y Congo)"},
["izh"] = {"Ingrish"},
["izm"] = {"Kizamani"},
["izr"] = {"Izere"},
["izz"] = {"Izii"},
["jaa"] = {"Jamamadí"},
["jab"] = {"Hyam"},
["jac"] = {"Popti'", "Jakalteko"},
["jad"] = {"Jahanka"},
["jae"] = {"Yabem"},
["jaf"] = {"Jara"},
["jah"] = {"Jah Hut"},
["jaj"] = {"Zazao"},
["jak"] = {"Jakun"},
["jal"] = {"Yalahatan"},
["jam"] = {"Creeole Baarle Jamaicagh"},
["jan"] = {"Jandai"},
["jao"] = {"Yanyuwa"},
["jaq"] = {"Yaqay"},
["jas"] = {"Javish y Chaladoan Noa"},
["jat"] = {"Jakati"},
["jau"] = {"Yaur"},
["jax"] = {"Malaish Jambi"},
["jay"] = {"Yan-nhangu", "Nhangu"},
["jaz"] = {"Jawe"},
["jbe"] = {"Berberish Ewagh"},
["jbi"] = {"Badjiri"},
["jbj"] = {"Arandai"},
["jbk"] = {"Barikewa"},
["jbm"] = {"Bijim"},
["jbn"] = {"Nafusi"},
["jbo"] = {"Lojban"},
["jbr"] = {"Jofotek-Bromnya"},
["jbt"] = {"Jabutí"},
["jbu"] = {"Jukun Takum"},
["jbw"] = {"Yawijibaya"},
["jcs"] = {"Çhengey Chowree Heeragh Yamaicagh"},
["jct"] = {"Krymchak"},
["jda"] = {"Jad"},
["jdg"] = {"Jadgali"},
["jdt"] = {"Tatish Ewagh"},
["jeb"] = {"Jebero"},
["jee"] = {"Jerung"},
["jeh"] = {"Jeh"},
["jei"] = {"Yei"},
["jek"] = {"Jeri Kuo"},
["jel"] = {"Yelmek"},
["jen"] = {"Dza"},
["jer"] = {"Jere"},
["jet"] = {"Manem"},
["jeu"] = {"Jonkor Bourmataguil"},
["jgb"] = {"Ngbee"},
["jge"] = {"Shorshish Ewagh"},
["jgk"] = {"Gwak"},
["jgo"] = {"Ngomba"},
["jhi"] = {"Jehai"},
["jhs"] = {"Çhengey Chowree Jhankot"},
["jia"] = {"Jina"},
["jib"] = {"Jibu"},
["jic"] = {"Tol"},
["jid"] = {"Bu (Steat Kaduna)"},
["jie"] = {"Jilbe"},
["jig"] = {"Jingulu", "Djingili"},
["jih"] = {"sTodsde", "Shangzhai"},
["jii"] = {"Jiiddu"},
["jil"] = {"Jilim"},
["jim"] = {"Jimi (Cameroon)"},
["jio"] = {"Jiamao"},
["jiq"] = {"Guanyinqiao", "Lavrung"},
["jit"] = {"Jita"},
["jiu"] = {"Jinuo Youle"},
["jiv"] = {"Shuar"},
["jiy"] = {"Jinuo Buyuan"},
["jje"] = {"Jejueo"},
["jjr"] = {"Bankal"},
["jka"] = {"Kaera"},
["jkm"] = {"Karenish Mobwa"},
["jko"] = {"Kubo"},
["jkp"] = {"Karenish Paku"},
["jkr"] = {"Koro (yn Injey)"},
["jks"] = {"Çhengey Chowree Amami Koniya"},
["jku"] = {"Labir"},
["jle"] = {"Ngile"},
["jls"] = {"Çhengey Chowree Yamaicagh"},
["jma"] = {"Dima"},
["jmb"] = {"Zumbun"},
["jmc"] = {"Machame"},
["jmd"] = {"Yamdena"},
["jmi"] = {"Jimi (y Naigeer)"},
["jml"] = {"Jumli"},
["jmn"] = {"Makuri Naga"},
["jmr"] = {"Kamara"},
["jms"] = {"Mashi (y Naigeer)"},
["jmw"] = {"Mouwase"},
["jmx"] = {"Mixtecish Juxtlahuaca Heear"},
["jna"] = {"Jangshung"},
["jnd"] = {"Jandavra"},
["jng"] = {"Yangman"},
["jni"] = {"Janji"},
["jnj"] = {"Yemsa"},
["jnl"] = {"Rawat"},
["jns"] = {"Jaunsari"},
["job"] = {"Joba"},
["jod"] = {"Wojenaka"},
["jog"] = {"Jogi"},
["jor"] = {"Jorá"},
["jos"] = {"Çhengey Chowree Yordaanagh"},
["jow"] = {"Jowulu"},
["jpa"] = {"Aramaaish Phalasteenagh Ewagh"},
["jpr"] = {"Pershish Ewagh"},
["jpx"] = {"Shapaanagh (kynney)"},
["jqr"] = {"Jaqaru"},
["jra"] = {"Jarai"},
["jrb"] = {"Arabish Ewagh"},
["jrr"] = {"Jiru"},
["jrt"] = {"Jakattoe"},
["jru"] = {"Japrería"},
["jsl"] = {"Çhengey Chowree Hapaanagh"},
["jua"] = {"Júma"},
["jub"] = {"Wannu"},
["juc"] = {"Jurchen"},
["jud"] = {"Worodougou"},
["juh"] = {"Hõne"},
["jui"] = {"Ngadjuri"},
["juk"] = {"Wapan"},
["jul"] = {"Jirel"},
["jum"] = {"Jumjum"},
["jun"] = {"Juang"},
["juo"] = {"Jiba"},
["jup"] = {"Hupdë"},
["jur"] = {"Jurúna"},
["jus"] = {"Çhengey Chowree Jumla"},
["jut"] = {"Jutish"},
["juu"] = {"Ju"},
["juw"] = {"Wãpha"},
["juy"] = {"Juray"},
["jvd"] = {"Javindo"},
["jvn"] = {"Javish Charibagh"},
["jwi"] = {"Jwira-Pepesa"},
["jya"] = {"Jiarong"},
["jye"] = {"Arabish Yemenagh Ewagh"},
["jyy"] = {"Jaya"},
["kaa"] = {"Kara-Kalpakish", "Karakalpakish"},
["kab"] = {"Kabylish"},
["kac"] = {"Kachin", "Jingpho"},
["kad"] = {"Adara"},
["kae"] = {"Ketangalan"},
["kaf"] = {"Katso"},
["kag"] = {"Kajaman"},
["kah"] = {"Kara (Pobblaght yn Affrick Veanagh)"},
["kai"] = {"Karekare"},
["kaj"] = {"Jju"},
["kak"] = {"Kalanguya", "Kayapa Kallahan"},
["kam"] = {"Kamba (y Cheinney)"},
["kao"] = {"Xaasongaxango"},
["kap"] = {"Bezhta"},
["kaq"] = {"Capanahua"},
["kar"] = {"çhengaghyn Karenagh"},
["kav"] = {"Katukína"},
["kaw"] = {"Kawi"},
["kax"] = {"Kao"},
["kay"] = {"Kamayurá"},
["kba"] = {"Kalarko"},
["kbb"] = {"Kaxuiâna"},
["kbc"] = {"Kadiwéu"},
["kbd"] = {"Kabardish"},
["kbe"] = {"Kanju"},
["kbg"] = {"Khamba"},
["kbh"] = {"Camsá"},
["kbi"] = {"Kaptiau"},
["kbj"] = {"Kari"},
["kbk"] = {"Grass Koiari"},
["kbl"] = {"Kanembu"},
["kbm"] = {"Iwal"},
["kbn"] = {"Kare (Pobblaght yn Affrick Veanagh)"},
["kbo"] = {"Keliko"},
["kbp"] = {"Kabiyè"},
["kbq"] = {"Kamano"},
["kbr"] = {"Kafa"},
["kbs"] = {"Kande"},
["kbt"] = {"Abadi"},
["kbu"] = {"Kabutra"},
["kbv"] = {"Dera (yn Indoneesh)"},
["kbw"] = {"Kaiep"},
["kbx"] = {"Ap Ma"},
["kby"] = {"Manga Kanuri"},
["kbz"] = {"Duhwa"},
["kca"] = {"Khanty"},
["kcb"] = {"Kawacha"},
["kcc"] = {"Lubila"},
["kcd"] = {"Ngkâlmpw Kanum"},
["kce"] = {"Kaivi"},
["kcf"] = {"Ukaan"},
["kcg"] = {"Tyap"},
["kch"] = {"Vono"},
["kci"] = {"Kamantanish"},
["kcj"] = {"Kobiana"},
["kck"] = {"Kalanga"},
["kcl"] = {"Kela (Papeey Guinea Noa)", "Kala"},
["kcm"] = {"Gula (Pobblaght yn Affrick Veanagh)"},
["kcn"] = {"Nubi"},
["kco"] = {"Kinalakna"},
["kcp"] = {"Kanga"},
["kcq"] = {"Kamo"},
["kcr"] = {"Katla"},
["kcs"] = {"Koenoem"},
["kct"] = {"Kaian"},
["kcu"] = {"Kami (Tanzania)"},
["kcv"] = {"Kete"},
["kcw"] = {"Kabwari"},
["kcx"] = {"Kachama-Ganjule"},
["kcy"] = {"Korandje"},
["kcz"] = {"Konongo"},
["kda"] = {"Worimi"},
["kdc"] = {"Kutu"},
["kdd"] = {"Yankunytjatjara"},
["kde"] = {"Makonde"},
["kdf"] = {"Mamusi"},
["kdg"] = {"Seba"},
["kdh"] = {"Tem"},
["kdi"] = {"Kumam"},
["kdj"] = {"Karamojong"},
["kdk"] = {"Numèè", "Kwényi"},
["kdl"] = {"Tsikimba"},
["kdm"] = {"Kagoma"},
["kdn"] = {"Kunda"},
["kdo"] = {"çhengaghyn Kordofaniagh"},
["kdp"] = {"Kaningdon-Nindem"},
["kdq"] = {"Koch"},
["kdr"] = {"Karaimish"},
["kdt"] = {"Kuy"},
["kdu"] = {"Kadaru"},
["kdw"] = {"Koneraw"},
["kdx"] = {"Kam"},
["kdy"] = {"Keder", "Keijar"},
["kdz"] = {"Kwaja"},
["kea"] = {"Kabuverdianu"},
["keb"] = {"Kélé"},
["kec"] = {"Keiga"},
["ked"] = {"Kerewe"},
["kee"] = {"Keres Hiar"},
["kef"] = {"Kpessi"},
["keg"] = {"Tese"},
["keh"] = {"Keak"},
["kei"] = {"Kei"},
["kej"] = {"Kadar"},
["kek"] = {"Kekchí"},
["kel"] = {"Kela (Pobblaght Gheynlagh y Chongo)"},
["kem"] = {"Kemak"},
["ken"] = {"Kenyang"},
["keo"] = {"Kakwa"},
["kep"] = {"Kaikadi"},
["keq"] = {"Kamar"},
["ker"] = {"Kera"},
["kes"] = {"Kugbo"},
["ket"] = {"Ket"},
["keu"] = {"Akebu"},
["kev"] = {"Kanikkaran"},
["kew"] = {"Kewa Heear"},
["kex"] = {"Kukna"},
["key"] = {"Kupia"},
["kez"] = {"Kukele"},
["kfa"] = {"Kodava"},
["kfb"] = {"Kolamish Heear Hwoaie"},
["kfc"] = {"Konda-Dora"},
["kfd"] = {"Korra Koraga"},
["kfe"] = {"Kota (yn Injey)"},
["kff"] = {"Koya"},
["kfg"] = {"Kudiya"},
["kfh"] = {"Kurichiya"},
["kfi"] = {"Kurumba Kannada"},
["kfj"] = {"Kemiehua"},
["kfk"] = {"Kinnaurish"},
["kfl"] = {"Kung"},
["kfm"] = {"Khunsarish"},
["kfn"] = {"Kuk"},
["kfo"] = {"Koro (y Clyst Iuaagagh)"},
["kfp"] = {"Korwa"},
["kfq"] = {"Korku"},
["kfr"] = {"Kachhish", "Kutchish"},
["kfs"] = {"Bilaspurish"},
["kft"] = {"Kanjarish"},
["kfu"] = {"Katkarish"},
["kfv"] = {"Kurmukarish"},
["kfw"] = {"Kharam Naga"},
["kfx"] = {"Kullu Pahari"},
["kfy"] = {"Kumaoni"},
["kfz"] = {"Koromfé"},
["kga"] = {"Koyaga"},
["kgb"] = {"Kawe"},
["kge"] = {"Komering"},
["kgf"] = {"Kube"},
["kgg"] = {"Kusunda"},
["kgi"] = {"Çhengey Chowree Selangor"},
["kgj"] = {"Gamale Kham"},
["kgk"] = {"Kaiwá"},
["kgl"] = {"Kunggari"},
["kgn"] = {"Karingani"},
["kgo"] = {"Krongo"},
["kgp"] = {"Kaingang"},
["kgq"] = {"Kamoro"},
["kgr"] = {"Abun"},
["kgs"] = {"Kumbainggar"},
["kgt"] = {"Somyev"},
["kgu"] = {"Kobol"},
["kgv"] = {"Karas"},
["kgw"] = {"Karon Dori"},
["kgx"] = {"Kamaru"},
["kgy"] = {"Kyerung"},
["kha"] = {"Khasi"},
["khb"] = {"Lü"},
["khc"] = {"Tukang Besi North"},
["khd"] = {"Bädi Kanum"},
["khe"] = {"Korowai"},
["khf"] = {"Khuen"},
["khg"] = {"Khams Tibetan"},
["khh"] = {"Kehu"},
["khi"] = {"çhengaghyn Khoisan"},
["khj"] = {"Kuturmi"},
["khk"] = {"Mongoilish Halh"},
["khl"] = {"Lusi"},
["khn"] = {"Khandesi"},
["kho"] = {"Khotanish", "Sakan"},
["khp"] = {"Kapori", "Kapauri"},
["khq"] = {"Koyra Chiini Songhay"},
["khr"] = {"Kharia"},
["khs"] = {"Kasua"},
["kht"] = {"Khamti"},
["khu"] = {"Nkhumbi"},
["khv"] = {"Khvarshi"},
["khw"] = {"Khowar"},
["khx"] = {"Kanu"},
["khy"] = {"Kele (Pobblaght Gheynlagh y Chongo)"},
["khz"] = {"Keapara"},
["kia"] = {"Kim"},
["kib"] = {"Koalib"},
["kic"] = {"Kickapoo"},
["kid"] = {"Koshin"},
["kie"] = {"Kibet"},
["kif"] = {"Magar Kham Hiar"},
["kig"] = {"Kimaama", "Kimaghima"},
["kih"] = {"Kilmeri"},
["kii"] = {"Kitsai"},
["kij"] = {"Kilivila"},
["kil"] = {"Kariya"},
["kim"] = {"Karagas"},
["kio"] = {"Kiowa"},
["kip"] = {"Sheshi Kham"},
["kiq"] = {"Kosadle", "Kosare"},
["kis"] = {"Kis"},
["kit"] = {"Agob"},
["kiu"] = {"Kirmanjki (çhengey er lheh)"},
["kiv"] = {"Kimbu"},
["kiw"] = {"Kiwai Hiar Hwoaie"},
["kix"] = {"Khiamniungan Naga"},
["kiy"] = {"Kirikiri"},
["kiz"] = {"Kisi"},
["kja"] = {"Mlap"},
["kjb"] = {"Q'anjob'al", "Kanjobal"},
["kjc"] = {"Konjo Slystagh"},
["kjd"] = {"Kiwai Yiass"},
["kje"] = {"Kisar"},
["kjg"] = {"Khmu"},
["kjh"] = {"Khakas"},
["kji"] = {"Zabana"},
["kjj"] = {"Khinalugh"},
["kjk"] = {"Konjo Sleitoil"},
["kjl"] = {"Magar Kham Heear"},
["kjm"] = {"Kháng"},
["kjn"] = {"Kunjen"},
["kjo"] = {"Kinnaurish Harijan"},
["kjp"] = {"Karenish Hiar Pwo"},
["kjq"] = {"Keres Heear"},
["kjr"] = {"Kurudu"},
["kjs"] = {"Kewa Hiar"},
["kjt"] = {"Karenish Phrae Pwo"},
["kju"] = {"Kashaya"},
["kjv"] = {"Çhengey Lettyragh Kaikavagh"},
["kjx"] = {"Ramopa"},
["kjy"] = {"Erave"},
["kjz"] = {"Bumthangkha"},
["kka"] = {"Kakanda"},
["kkb"] = {"Kwerisa"},
["kkc"] = {"Odoodee"},
["kkd"] = {"Kinuku"},
["kke"] = {"Kakabe"},
["kkf"] = {"Kalaktang Monpa"},
["kkg"] = {"Kalinga Ghlion Mabaka"},
["kkh"] = {"Khün"},
["kki"] = {"Kagulu"},
["kkj"] = {"Kako"},
["kkk"] = {"Kokota"},
["kkl"] = {"Kosarek Yale"},
["kkm"] = {"Kiong"},
["kkn"] = {"Kon Keu"},
["kko"] = {"Karko"},
["kkp"] = {"Gugubera", "Koko-Bera"},
["kkq"] = {"Kaeku"},
["kkr"] = {"Kir-Balar"},
["kks"] = {"Giiwo"},
["kkt"] = {"Koi"},
["kku"] = {"Tumi"},
["kkv"] = {"Kangean"},
["kkw"] = {"Teke-Kukuya"},
["kkx"] = {"Kohin"},
["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"},
["kkz"] = {"Kaska"},
["kla"] = {"Klamath-Modoc"},
["klb"] = {"Kiliwa"},
["klc"] = {"Kolbila"},
["kld"] = {"Gamilaraay"},
["kle"] = {"Kulung (Nepaal)"},
["klf"] = {"Kendeje"},
["klg"] = {"Tagakaulo"},
["klh"] = {"Weliki"},
["kli"] = {"Kalumpang"},
["klj"] = {"Khalaj"},
["klk"] = {"Kono (y Naigeer)"},
["kll"] = {"Kagan Kalagan"},
["klm"] = {"Migum"},
["kln"] = {"Kalenjin"},
["klo"] = {"Kapya"},
["klp"] = {"Kamasa"},
["klq"] = {"Rumu"},
["klr"] = {"Khaling"},
["kls"] = {"Kalasha"},
["klt"] = {"Nukna"},
["klu"] = {"Klao"},
["klv"] = {"Maskelynes"},
["klw"] = {"Tado", "Lindu"},
["klx"] = {"Koluwawa"},
["kly"] = {"Kalao"},
["klz"] = {"Kabola"},
["kma"] = {"Konni"},
["kmb"] = {"Kimbundu"},
["kmc"] = {"Dong Yiass"},
["kmd"] = {"Majukayang Kalinga"},
["kme"] = {"Bakole"},
["kmf"] = {"Kare (Papooe Guinea Noa)"},
["kmg"] = {"Kâte"},
["kmh"] = {"Kalam"},
["kmi"] = {"Kami (y Naigeer)"},
["kmj"] = {"Kumarbhag Paharia"},
["kmk"] = {"Limos Kalinga"},
["kml"] = {"Tanudan Kalinga"},
["kmm"] = {"Kom (yn Injey)"},
["kmn"] = {"Awtuw"},
["kmo"] = {"Kwoma"},
["kmp"] = {"Gimme"},
["kmq"] = {"Kwama"},
["kmr"] = {"Kurdish Hwoaie"},
["kms"] = {"Kamasau"},
["kmt"] = {"Kemtuik"},
["kmu"] = {"Kanite"},
["kmv"] = {"Creeole Frangish Karipúna"},
["kmw"] = {"Komo (Pobblaght Gheynlagh y Chongo)"},
["kmx"] = {"Waboda"},
["kmy"] = {"Koma"},
["kmz"] = {"Turkish Khorasan"},
["kna"] = {"Dera (y Naigeer)"},
["knb"] = {"Lubuagan Kalinga"},
["knc"] = {"Kanurish Veanagh"},
["knd"] = {"Konda"},
["kne"] = {"Kankanaey"},
["knf"] = {"Mankanya"},
["kng"] = {"Koongo"},
["kni"] = {"Kanufi"},
["knj"] = {"Kanjobal Heear"},
["knk"] = {"Kuranko"},
["knl"] = {"Keninjal"},
["knm"] = {"Kanamarí"},
["knn"] = {"Konkani (çhengey er lheh)"},
["kno"] = {"Kono (Sierra Leone)"},
["knp"] = {"Kwanja"},
["knq"] = {"Kintaq"},
["knr"] = {"Kaningra"},
["kns"] = {"Kensiu"},
["knt"] = {"Panoan Katukína"},
["knu"] = {"Kono (y Ghuinea)"},
["knv"] = {"Tabo"},
["knw"] = {"Kung-Ekoka"},
["knx"] = {"Kendayan", "Salako"},
["kny"] = {"Kanyok"},
["knz"] = {"Kalamsé"},
["koa"] = {"Konomala"},
["koc"] = {"Kpati"},
["kod"] = {"Kodi"},
["koe"] = {"Kacipo-Bale Suri"},
["kof"] = {"Kubi"},
["kog"] = {"Cogui", "Kogi"},
["koh"] = {"Koyo"},
["koi"] = {"Komish Phermagh"},
["kok"] = {"Konkanish (mooar-hengey)"},
["kol"] = {"Kol (Papooey Guinea Noa)"},
["koo"] = {"Konzo"},
["kop"] = {"Waube"},
["koq"] = {"Kota (Gabon)"},
["kos"] = {"Kosraeish"},
["kot"] = {"Lagwan"},
["kou"] = {"Koke"},
["kov"] = {"Kudu-Camo"},
["kow"] = {"Kugama"},
["koy"] = {"Koyukon"},
["koz"] = {"Korak"},
["kpa"] = {"Kutto"},
["kpb"] = {"Mullu Kurumba"},
["kpc"] = {"Curripaco"},
["kpd"] = {"Koba"},
["kpe"] = {"Kpelle"},
["kpf"] = {"Komba"},
["kpg"] = {"Kapingamarangi"},
["kph"] = {"Kplang"},
["kpi"] = {"Kofei"},
["kpj"] = {"Karajá"},
["kpk"] = {"Kpan"},
["kpl"] = {"Kpala"},
["kpm"] = {"Koho"},
["kpn"] = {"Kepkiriwát"},
["kpo"] = {"Ikposo"},
["kpq"] = {"Korupun-Sela"},
["kpr"] = {"Korafe-Yegha"},
["kps"] = {"Tehit"},
["kpt"] = {"Karata"},
["kpu"] = {"Kafoa"},
["kpv"] = {"Komish Hyriagh"},
["kpw"] = {"Kobon"},
["kpx"] = {"Koialish Sleitoil"},
["kpy"] = {"Koryakish"},
["kpz"] = {"Kupsabiny"},
["kqa"] = {"Mum"},
["kqb"] = {"Kovai"},
["kqc"] = {"Doromu-Koki"},
["kqd"] = {"Koy Sanjaq Surat"},
["kqe"] = {"Kalagan"},
["kqf"] = {"Kakabai"},
["kqg"] = {"Khe"},
["kqh"] = {"Kisankasa"},
["kqi"] = {"Koitabu"},
["kqj"] = {"Koromira"},
["kqk"] = {"Kotafon Gbe"},
["kql"] = {"Kyenele"},
["kqm"] = {"Khisa"},
["kqn"] = {"Kaonde"},
["kqo"] = {"Krahn Hiar"},
["kqp"] = {"Kimré"},
["kqq"] = {"Krenak"},
["kqr"] = {"Kimaragang"},
["kqs"] = {"Kissi Hwoaie"},
["kqt"] = {"Kadazan yn Awin Klias"},
["kqu"] = {"Seroa"},
["kqv"] = {"Okolod"},
["kqw"] = {"Kandas"},
["kqx"] = {"Mser"},
["kqy"] = {"Koorete"},
["kqz"] = {"Korana"},
["kra"] = {"Kumhali"},
["krb"] = {"Karkin"},
["krc"] = {"Karaçhayish-Balkarish"},
["krd"] = {"Kairui-Midiki"},
["kre"] = {"Panará"},
["krf"] = {"Koro (Vanuatu)"},
["krh"] = {"Kurama"},
["kri"] = {"Krio"},
["krj"] = {"Kinaray-A"},
["krk"] = {"Kerek"},
["krl"] = {"Karelish"},
["krn"] = {"Sapo"},
["kro"] = {"çhengaghyn Kru"},
["krp"] = {"Durop"},
["krr"] = {"Krung"},
["krs"] = {"Gbaya (y Toodaan)"},
["krt"] = {"Tumari Kanuri"},
["kru"] = {"Kurukh"},
["krv"] = {"Kavet"},
["krw"] = {"Krahn Heear"},
["krx"] = {"Karon"},
["kry"] = {"Kryts"},
["krz"] = {"Sota Kanum"},
["ksb"] = {"Shambala"},
["ksc"] = {"Kalinga Yiass"},
["ksd"] = {"Kuanua"},
["kse"] = {"Kuni"},
["ksf"] = {"Bafia"},
["ksg"] = {"Kusaghe"},
["ksh"] = {"Kölsch"},
["ksi"] = {"Krisa", "I'saka"},
["ksj"] = {"Uare"},
["ksk"] = {"Kansa"},
["ksl"] = {"Kumalu"},
["ksm"] = {"Kumba"},
["ksn"] = {"Kasiguranin"},
["kso"] = {"Kofa"},
["ksp"] = {"Kaba"},
["ksq"] = {"Kwaami"},
["ksr"] = {"Borong"},
["kss"] = {"Kisi Yiass"},
["kst"] = {"Winyé"},
["ksu"] = {"Khamyang"},
["ksv"] = {"Kusu"},
["ksw"] = {"Karenish S'gaw"},
["ksx"] = {"Kedang"},
["ksy"] = {"Kharia Thar"},
["ksz"] = {"Kodaku"},
["kta"] = {"Katua"},
["ktb"] = {"Kambaata"},
["ktc"] = {"Kholok"},
["ktd"] = {"Kokata", "Kukatha"},
["kte"] = {"Nubri"},
["ktf"] = {"Kwami"},
["ktg"] = {"Kalkutung"},
["kth"] = {"Karanga"},
["kti"] = {"Muyu Hwoaie"},
["ktj"] = {"Plapo Krumen"},
["ktk"] = {"Kaniet"},
["ktl"] = {"Koroshi"},
["ktm"] = {"Kurti"},
["ktn"] = {"Karitiâna"},
["kto"] = {"Kuot"},
["ktp"] = {"Kaduo"},
["ktq"] = {"Katabaga"},
["kts"] = {"Muyu Yiass"},
["ktt"] = {"Ketum"},
["ktu"] = {"Kitubish (Pobblaght Gheynlagh y Chongo)"},
["ktv"] = {"Katu Hiar"},
["ktw"] = {"Kato"},
["ktx"] = {"Kaxararí"},
["kty"] = {"Kango (Slyst Bas-Uélé)"},
["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"},
["kub"] = {"Kutep"},
["kuc"] = {"Kwinsu"},
["kud"] = {"'Auhelawa"},
["kue"] = {"Kuman (Papooey Guinea Noa)"},
["kuf"] = {"Katu Heear"},
["kug"] = {"Kupa"},
["kuh"] = {"Kushi"},
["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"},
["kuj"] = {"Kuria"},
["kuk"] = {"Kepo'"},
["kul"] = {"Kulere"},
["kum"] = {"Kumykish"},
["kun"] = {"Kunama"},
["kuo"] = {"Kumukio"},
["kup"] = {"Kunimaipa"},
["kuq"] = {"Karipuna"},
["kus"] = {"Kusaal"},
["kut"] = {"Kutenai"},
["kuu"] = {"Kuskokwim Eaghtyragh"},
["kuv"] = {"Kur"},
["kuw"] = {"Kpagua"},
["kux"] = {"Kukatja"},
["kuy"] = {"Kuuku-Ya'u"},
["kuz"] = {"Kunza"},
["kva"] = {"Bagvalal"},
["kvb"] = {"Kubu"},
["kvc"] = {"Kove"},
["kvd"] = {"Kui (yn Indoneesh)"},
["kve"] = {"Kalabakanish"},
["kvf"] = {"Kabalai"},
["kvg"] = {"Kuni-Boazi"},
["kvh"] = {"Komodo"},
["kvi"] = {"Kwang"},
["kvj"] = {"Psikye"},
["kvk"] = {"Çhengey Chowree Choreeagh"},
["kvl"] = {"Kayaw"},
["kvm"] = {"Kendem"},
["kvn"] = {"Border Kuna"},
["kvo"] = {"Dobel"},
["kvp"] = {"Kompane"},
["kvq"] = {"Karenish Geba"},
["kvr"] = {"Kerinci"},
["kvt"] = {"Karenish Lahta", "Lahta"},
["kvu"] = {"Karenish Yinbaw"},
["kvv"] = {"Kola"},
["kvw"] = {"Wersing"},
["kvx"] = {"Parkari Koli"},
["kvy"] = {"Karenish Yintale", "Yintale"},
["kvz"] = {"Tsakwambo", "Tsaukambo"},
["kwa"] = {"Dâw"},
["kwb"] = {"Kwa"},
["kwc"] = {"Likwala"},
["kwd"] = {"Kwaio"},
["kwe"] = {"Kwerba"},
["kwf"] = {"Kwara'ae"},
["kwg"] = {"Sara Kaba Deme"},
["kwh"] = {"Kowiai"},
["kwi"] = {"Awa-Cuaiquer"},
["kwj"] = {"Kwanga"},
["kwk"] = {"Kwakiutl"},
["kwl"] = {"Kofyar"},
["kwm"] = {"Kwambish"},
["kwn"] = {"Kwangalish"},
["kwo"] = {"Kwomtarish"},
["kwp"] = {"Kodia"},
["kwr"] = {"Kwer"},
["kws"] = {"Kwese"},
["kwt"] = {"Kwesten"},
["kwu"] = {"Kwakum"},
["kwv"] = {"Sara Kaba Náà"},
["kww"] = {"Kwintish"},
["kwx"] = {"Khirwar"},
["kwy"] = {"Kongo San Salvador"},
["kwz"] = {"Kwadi"},
["kxa"] = {"Kairiru"},
["kxb"] = {"Krobu"},
["kxc"] = {"Konso", "Khonso"},
["kxd"] = {"Brunei"},
["kxf"] = {"Manumanaw Karen", "Manumanaw"},
["kxh"] = {"Karo (yn Eetoip)"},
["kxi"] = {"Keningau Murut"},
["kxj"] = {"Kulfa"},
["kxk"] = {"Karenish Zayein"},
["kxm"] = {"Khmerish Hwoaie"},
["kxn"] = {"Kanowit-Tanjong Melanau"},
["kxo"] = {"Kanoé"},
["kxp"] = {"Wadiyara Koli"},
["kxq"] = {"Smärky Kanum"},
["kxr"] = {"Koro (Papooey Guinea Noa)"},
["kxs"] = {"Kangjia"},
["kxt"] = {"Koiwat"},
["kxv"] = {"Kuvi"},
["kxw"] = {"Konai"},
["kxx"] = {"Likuba"},
["kxy"] = {"Kayong"},
["kxz"] = {"Kerewo"},
["kya"] = {"Kwaya"},
["kyb"] = {"Butbut Kalinga"},
["kyc"] = {"Kyaka"},
["kyd"] = {"Karey"},
["kye"] = {"Krache"},
["kyf"] = {"Kouya"},
["kyg"] = {"Keyagana"},
["kyh"] = {"Karok"},
["kyi"] = {"Kiput"},
["kyj"] = {"Karao"},
["kyk"] = {"Kamayo"},
["kyl"] = {"Kalapuya"},
["kym"] = {"Kpatili"},
["kyn"] = {"Binukidnon Hwoaie"},
["kyo"] = {"Kelon"},
["kyp"] = {"Kang"},
["kyq"] = {"Kenga"},
["kyr"] = {"Kuruáya"},
["kys"] = {"Baram Kayan"},
["kyt"] = {"Kayagar"},
["kyu"] = {"Kayah Heear"},
["kyv"] = {"Kayort"},
["kyw"] = {"Kudmali"},
["kyx"] = {"Rapoisi"},
["kyy"] = {"Kambaira"},
["kyz"] = {"Kayabí"},
["kza"] = {"Karaboro Heear"},
["kzb"] = {"Kaibobo"},
["kzc"] = {"Bondoukou Kulango"},
["kzd"] = {"Kadai"},
["kze"] = {"Kosena"},
["kzf"] = {"Da'a Kaili"},
["kzg"] = {"Kikai"},
["kzi"] = {"Kelabit"},
["kzk"] = {"Kazukuru"},
["kzl"] = {"Kayeli"},
["kzm"] = {"Kais"},
["kzn"] = {"Kokola"},
["kzo"] = {"Kaningi"},
["kzp"] = {"Kaidipang"},
["kzq"] = {"Kaike"},
["kzr"] = {"Karang"},
["kzs"] = {"Sugut Dusun"},
["kzu"] = {"Kayupulau"},
["kzv"] = {"Komyandaret"},
["kzw"] = {"Karirí-Xocó"},
["kzx"] = {"Kamarian"},
["kzy"] = {"Kango (Slyst Tshopo)"},
["kzz"] = {"Kalabra"},
["laa"] = {"Subanen Yiass"},
["lab"] = {"Linnagh A"},
["lac"] = {"Lacandon"},
["lad"] = {"Ladinoish"},
["lae"] = {"Pattani"},
["laf"] = {"Lafofa"},
["lag"] = {"Rangi"},
["lah"] = {"Lahnda"},
["lai"] = {"Lambya"},
["laj"] = {"Lango (Ooganda)"},
["lal"] = {"Lalia"},
["lam"] = {"Lamba"},
["lan"] = {"Laru"},
["lap"] = {"Laka (Shad)"},
["laq"] = {"Qabiao"},
["lar"] = {"Larteh"},
["las"] = {"Lama (y Togo)"},
["lau"] = {"Laba"},
["law"] = {"Lauje"},
["lax"] = {"Tiwa"},
["lay"] = {"Lama Bai"},
["laz"] = {"Aribwatsa"},
["lbb"] = {"Label"},
["lbc"] = {"Lakkia"},
["lbe"] = {"Lakish"},
["lbf"] = {"Tinani"},
["lbg"] = {"Laopang"},
["lbi"] = {"La'bi"},
["lbj"] = {"Ladakhi"},
["lbk"] = {"Bontok Veanagh"},
["lbl"] = {"Bikol Libon"},
["lbm"] = {"Lodhi"},
["lbn"] = {"Rmeet"},
["lbo"] = {"Laven"},
["lbq"] = {"Wampar"},
["lbr"] = {"Lohorung"},
["lbs"] = {"Çhengey Chowree Leebagh"},
["lbt"] = {"Lachi"},
["lbu"] = {"Labu"},
["lbv"] = {"Lavatbura-Lamusong"},
["lbw"] = {"Tolaki"},
["lbx"] = {"Lawangan"},
["lby"] = {"Lamalama", "Lamu-Lamu"},
["lbz"] = {"Lardil"},
["lcc"] = {"Legenyem"},
["lcd"] = {"Lola"},
["lce"] = {"Loncong", "Sekak"},
["lcf"] = {"Lubu"},
["lch"] = {"Luchazi"},
["lcl"] = {"Lisela"},
["lcm"] = {"Tungag"},
["lcp"] = {"Lawa Heear"},
["lcq"] = {"Luhu"},
["lcs"] = {"Lisabata-Nuniali"},
["lda"] = {"Kla-Dan"},
["ldb"] = {"Dũya"},
["ldd"] = {"Lurish"},
["ldg"] = {"Lenyima"},
["ldh"] = {"Lamja-Dengsa-Tola"},
["ldi"] = {"Laari"},
["ldj"] = {"Lemoro"},
["ldk"] = {"Leelau"},
["ldl"] = {"Kaan"},
["ldm"] = {"Landoma"},
["ldn"] = {"Láadan"},
["ldo"] = {"Loo"},
["ldp"] = {"Tso"},
["ldq"] = {"Lufu"},
["lea"] = {"Lega-Shabunda"},
["leb"] = {"Lala-Bisa"},
["lec"] = {"Leco"},
["led"] = {"Lendu"},
["lee"] = {"Lyélé"},
["lef"] = {"Lelemi"},
["leh"] = {"Lenje"},
["lei"] = {"Lemio"},
["lej"] = {"Lengola"},
["lek"] = {"Leipon"},
["lel"] = {"Lele (Pobblaght Gheynlagh y Chongo)"},
["lem"] = {"Nomaande"},
["len"] = {"Lenca"},
["leo"] = {"Leti (Cameroon)"},
["lep"] = {"Lepcha"},
["leq"] = {"Lembena"},
["ler"] = {"Lenkau"},
["les"] = {"Lese"},
["let"] = {"Lesing-Gelimi", "Amio-Gelimi"},
["leu"] = {"Kara (Papooey Guinea Noa)"},
["lev"] = {"Lamma"},
["lew"] = {"Ledo Kaili"},
["lex"] = {"Luang"},
["ley"] = {"Lemolang"},
["lez"] = {"Lesgish"},
["lfa"] = {"Lefa"},
["lfn"] = {"Lingua Franca Nova"},
["lga"] = {"Lungga"},
["lgb"] = {"Laghu"},
["lgg"] = {"Lugbara"},
["lgh"] = {"Laghuu"},
["lgi"] = {"Lengilu"},
["lgk"] = {"Lingarak", "Neverver"},
["lgl"] = {"Wala"},
["lgm"] = {"Lega-Mwenga"},
["lgn"] = {"T'apo", "Opuuo"},
["lgo"] = {"Lango (y Toodaan Yiass)"},
["lgq"] = {"Logba"},
["lgr"] = {"Lengo"},
["lgs"] = {"Çhengey Chowree Ghuinea-Bissau", "Língua Gestual Guineense"},
["lgt"] = {"Pahi"},
["lgu"] = {"Longgu"},
["lgz"] = {"Ligenza"},
["lha"] = {"Laha (Viet Nam)"},
["lhh"] = {"Laha (yn Indoneesh)"},
["lhi"] = {"Lahu Shi"},
["lhl"] = {"Lahul Lohar"},
["lhm"] = {"Lhomi"},
["lhn"] = {"Lahanan"},
["lhp"] = {"Lhokpu"},
["lhs"] = {"Mlahsö"},
["lht"] = {"Lo-Toga"},
["lhu"] = {"Lahu"},
["lia"] = {"Limba Veanagh Heear"},
["lib"] = {"Likum"},
["lic"] = {"Hlai"},
["lid"] = {"Nyindrou"},
["lie"] = {"Likila"},
["lif"] = {"Limbu"},
["lig"] = {"Ligbi"},
["lih"] = {"Lihir"},
["lij"] = {"Ligoorish"},
["lik"] = {"Lika"},
["lil"] = {"Lillooet"},
["lio"] = {"Liki"},
["lip"] = {"Sekpele"},
["liq"] = {"Libido"},
["lir"] = {"Baarle Laibeeragh"},
["lis"] = {"Lisu"},
["liu"] = {"Logorik"},
["liv"] = {"Liv"},
["liw"] = {"Col"},
["lix"] = {"Liabuku"},
["liy"] = {"Banda-Bambari"},
["liz"] = {"Libinza"},
["lja"] = {"Golpa"},
["lje"] = {"Rampi"},
["lji"] = {"Laiyolo"},
["ljl"] = {"Li'o"},
["ljp"] = {"Lampung Api"},
["ljw"] = {"Yirandali"},
["ljx"] = {"Yuru"},
["lka"] = {"Lakalei"},
["lkb"] = {"Kabras", "Lukabaras"},
["lkc"] = {"Kucong"},
["lkd"] = {"Lakondê"},
["lke"] = {"Kenyi"},
["lkh"] = {"Lakha"},
["lki"] = {"Laki"},
["lkj"] = {"Remun"},
["lkl"] = {"Laeko-Libuat"},
["lkm"] = {"Kalaamaya"},
["lkn"] = {"Lakon", "Vure"},
["lko"] = {"Khayo", "Olukhayo"},
["lkr"] = {"Päri"},
["lks"] = {"Kisa", "Olushisa"},
["lkt"] = {"Lakota"},
["lku"] = {"Kungkari"},
["lky"] = {"Lokoya"},
["lla"] = {"Lala-Roba"},
["llb"] = {"Lolo"},
["llc"] = {"Lele (y Ghuinea)"},
["lld"] = {"Ladin"},
["lle"] = {"Lele (Papooey Guinea Noa)"},
["llf"] = {"Hermit"},
["llg"] = {"Lole"},
["llh"] = {"Lamu"},
["lli"] = {"Teke-Laali"},
["llj"] = {"Ladji Ladji"},
["llk"] = {"Lelak"},
["lll"] = {"Lilau"},
["llm"] = {"Lasalimu"},
["lln"] = {"Lele (Shad)"},
["llp"] = {"Efate Hwoaie"},
["llq"] = {"Lolak"},
["lls"] = {"Çhengey Chowree Litaanagh"},
["llu"] = {"Lau"},
["llx"] = {"Lauan"},
["lma"] = {"Limba Hiar"},
["lmb"] = {"Merei"},
["lmc"] = {"Limilngan"},
["lmd"] = {"Lumun"},
["lme"] = {"Pévé"},
["lmf"] = {"Lembata Yiass"},
["lmg"] = {"Lamogai"},
["lmh"] = {"Lambichhong"},
["lmi"] = {"Lombi"},
["lmj"] = {"Lembata Heear"},
["lmk"] = {"Lamkang"},
["lml"] = {"Hano"},
["lmn"] = {"Lambadi"},
["lmo"] = {"Lombardish"},
["lmp"] = {"Limbum"},
["lmq"] = {"Lamatuka"},
["lmr"] = {"Lamalera"},
["lmu"] = {"Lamenu"},
["lmv"] = {"Lomaiviti"},
["lmw"] = {"Lake Miwok"},
["lmx"] = {"Laimbue"},
["lmy"] = {"Lamboya"},
["lna"] = {"Langbashe"},
["lnb"] = {"Mbalanhu"},
["lnd"] = {"Lundayeh", "Lun Bawang"},
["lng"] = {"Langobardish"},
["lnh"] = {"Lanoh"},
["lni"] = {"Daantanai'"},
["lnj"] = {"Leningitij"},
["lnl"] = {"Banda Veanagh Yiass"},
["lnm"] = {"Langam"},
["lnn"] = {"Lorediakarkar"},
["lns"] = {"Lamnso'"},
["lnu"] = {"Longuda"},
["lnw"] = {"Lanima"},
["lnz"] = {"Lonzo"},
["loa"] = {"Loloda"},
["lob"] = {"Lobi"},
["loc"] = {"Inonhan"},
["loe"] = {"Saluan"},
["lof"] = {"Logol"},
["log"] = {"Logo"},
["loh"] = {"Laarim", "Narim"},
["loi"] = {"Loma (y Clyst Iuaagagh)"},
["loj"] = {"Lou"},
["lok"] = {"Loko"},
["lol"] = {"Mongo"},
["lom"] = {"Loma (y Laibeer)"},
["lon"] = {"Lombwe Malawi"},
["loo"] = {"Lombo"},
["lop"] = {"Lopa"},
["loq"] = {"Lobala"},
["lor"] = {"Téén"},
["los"] = {"Loniu"},
["lot"] = {"Otuho"},
["lou"] = {"Creeole Louisiana"},
["lov"] = {"Lopi"},
["low"] = {"Tampias Lobu"},
["lox"] = {"Loun"},
["loy"] = {"Loke"},
["loz"] = {"Lozish"},
["lpa"] = {"Lelepa"},
["lpe"] = {"Lepki"},
["lpn"] = {"Long Phuri Naga"},
["lpo"] = {"Lipo"},
["lpx"] = {"Lopit"},
["lqr"] = {"Logir"},
["lra"] = {"Rara Bakati'"},
["lrc"] = {"Lurish Hwoaie"},
["lre"] = {"Lauryssish"},
["lrg"] = {"Laragia"},
["lri"] = {"Marachi", "Olumarachi"},
["lrk"] = {"Loarki"},
["lrl"] = {"Lari"},
["lrm"] = {"Marama", "Olumarama"},
["lrn"] = {"Lorang"},
["lro"] = {"Laro"},
["lrr"] = {"Yamphu Yiass"},
["lrt"] = {"Malayish Larantuka"},
["lrv"] = {"Larevat"},
["lrz"] = {"Lemerig"},
["lsa"] = {"Lasgerdi"},
["lsb"] = {"Çhengey Chowree Vurundeeagh", "Langue des Signes Burundaise"},
["lsc"] = {"Çhengey Chowree Albarradas", "Lengua de señas Albarradas"},
["lsd"] = {"Lishana Deni"},
["lse"] = {"Lusengo"},
["lsh"] = {"Lish"},
["lsi"] = {"Lashi"},
["lsl"] = {"Çhengey Chowree Latvagh"},
["lsm"] = {"Saamia", "Olusamia"},
["lsn"] = {"Çhengey Chowree Hibetagh"},
["lso"] = {"Çhengey Chowree Laosaghe"},
["lsp"] = {"Çhengey Chowree Phanamaagh", "Lengua de Señas Panameñas"},
["lsr"] = {"Aruop"},
["lss"] = {"Lasi"},
["lst"] = {"Çhengey Chowree yn Trinaid as Tobago"},
["lsv"] = {"Çhengey Chowree Sivia"},
["lsw"] = {"Çhengey Chowree Heshellagh", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"},
["lsy"] = {"Çhengey Chowree Wirrishagh"},
["ltc"] = {"Sheenish Veanagh Yeianagh"},
["ltg"] = {"Latgalish"},
["lth"] = {"Thur"},
["lti"] = {"Leti (yn Indoneesh)"},
["ltn"] = {"Latundê"},
["lto"] = {"Tsotso", "Olutsotso"},
["lts"] = {"Tachoni", "Lutachoni"},
["ltu"] = {"Latu"},
["lua"] = {"Luba-Lulua"},
["luc"] = {"Aringa"},
["lud"] = {"Ludish"},
["lue"] = {"Luvale"},
["luf"] = {"Laua"},
["lui"] = {"Luiseno"},
["luj"] = {"Luna"},
["luk"] = {"Lunanakha"},
["lul"] = {"Olu'bo"},
["lum"] = {"Luimbi"},
["lun"] = {"Lunda"},
["luo"] = {"Luo (y Cheinney as Tanzania)", "Dholuo"},
["lup"] = {"Lumbu"},
["luq"] = {"Lucumi"},
["lur"] = {"Laura"},
["lus"] = {"Lushai"},
["lut"] = {"Lushootseed"},
["luu"] = {"Lumba-Yakkha"},
["luv"] = {"Luwati"},
["luw"] = {"Luo (Cameroon)"},
["luy"] = {"Luyia", "Oluluyia"},
["luz"] = {"Lurish Yiass"},
["lva"] = {"Maku'a"},
["lvi"] = {"Lavi"},
["lvk"] = {"Lavukaleve"},
["lvl"] = {"Lwel"},
["lvs"] = {"Latvish Stundayrtit"},
["lvu"] = {"Levuka"},
["lwa"] = {"Lwalu"},
["lwe"] = {"Lewo Eleng"},
["lwg"] = {"Wanga", "Oluwanga"},
["lwh"] = {"Lachi Bane"},
["lwl"] = {"Lawa Hiar"},
["lwm"] = {"Laomish"},
["lwo"] = {"Luwo"},
["lws"] = {"Çhengey Chowree Malawi"},
["lwt"] = {"Lewotobi"},
["lwu"] = {"Lawu"},
["lww"] = {"Lewo"},
["lxm"] = {"Lakurumau"},
["lya"] = {"Layakha"},
["lyg"] = {"Lyngngam"},
["lyn"] = {"Luyana"},
["lzh"] = {"Sheenish Lettyragh"},
["lzl"] = {"Litzlitz"},
["lzn"] = {"Leinong Naga"},
["lzz"] = {"Laz"},
["maa"] = {"Mazatecish Tecóatl San Jerónimo"},
["mab"] = {"Mixtecish Yutanduchi"},
["mad"] = {"Madurish"},
["mae"] = {"Bo-Rukul"},
["maf"] = {"Mafa"},
["mag"] = {"Magahi"},
["mai"] = {"Maithilish"},
["maj"] = {"Mazatecish Jalapa De Díaz"},
["mak"] = {"Makasar"},
["mam"] = {"Mam"},
["man"] = {"Mandingo", "Manding"},
["map"] = {"çhengaghyn Austroneeshagh"},
["maq"] = {"Mazatecish Chiquihuitlán"},
["mas"] = {"Masai"},
["mat"] = {"Matlatzinca San Francisco"},
["mau"] = {"Mazatecish Huautla"},
["mav"] = {"Sateré-Mawé"},
["maw"] = {"Mampruli"},
["max"] = {"Malayish Maluku Hwoaie"},
["maz"] = {"Mazahua Veanagh"},
["mba"] = {"Higaonon"},
["mbb"] = {"Manobo Bukidnon Heear"},
["mbc"] = {"Macushi"},
["mbd"] = {"Manobo Dibabawon"},
["mbe"] = {"Molale"},
["mbf"] = {"Malayish Baba"},
["mbh"] = {"Mangseng"},
["mbi"] = {"Manobo Ilianen"},
["mbj"] = {"Nadëb"},
["mbk"] = {"Malol"},
["mbl"] = {"Maxakalí"},
["mbm"] = {"Ombamba"},
["mbn"] = {"Macaguán"},
["mbo"] = {"Mbo (Cameroon)"},
["mbp"] = {"Malayo"},
["mbq"] = {"Maisin"},
["mbr"] = {"Nukak Makú"},
["mbs"] = {"Manobo Sarangani"},
["mbt"] = {"Manobo Matigsalug"},
["mbu"] = {"Mbula-Bwazza"},
["mbv"] = {"Mbulungish"},
["mbw"] = {"Maring"},
["mbx"] = {"Mari (Queiggey East Sepik)"},
["mby"] = {"Memoni"},
["mbz"] = {"Mixtecish Amoltepec"},
["mca"] = {"Maca"},
["mcb"] = {"Machiguenga"},
["mcc"] = {"Bitur"},
["mcd"] = {"Sharanahua"},
["mce"] = {"Mixtecish Itundujia"},
["mcf"] = {"Matsés"},
["mcg"] = {"Mapoyo"},
["mch"] = {"Maquiritari"},
["mci"] = {"Mese"},
["mcj"] = {"Mvanip"},
["mck"] = {"Mbunda"},
["mcl"] = {"Macaguaje"},
["mcm"] = {"Creeole Portiugish Malaccagh"},
["mcn"] = {"Masana"},
["mco"] = {"Coatlán Mixe"},
["mcp"] = {"Makaa"},
["mcq"] = {"Ese"},
["mcr"] = {"Menya"},
["mcs"] = {"Mambai"},
["mct"] = {"Mengisa"},
["mcu"] = {"Mambila Chameroon"},
["mcv"] = {"Minanibai"},
["mcw"] = {"Mawa (Shad)"},
["mcx"] = {"Mpiemo"},
["mcy"] = {"Watut Yiass"},
["mcz"] = {"Mawan"},
["mda"] = {"Mada (y Naigeer)"},
["mdb"] = {"Morigi"},
["mdc"] = {"Male (Papooey Guinea Noa)"},
["mdd"] = {"Mbum"},
["mde"] = {"Maba (Shad)"},
["mdf"] = {"Moksha"},
["mdg"] = {"Massalat"},
["mdh"] = {"Maguindanaon"},
["mdi"] = {"Mamvu"},
["mdj"] = {"Mangbetu"},
["mdk"] = {"Mangbutu"},
["mdl"] = {"Çhengey Chowree Valtagh"},
["mdm"] = {"Mayogo"},
["mdn"] = {"Mbati"},
["mdp"] = {"Mbala"},
["mdq"] = {"Mbole"},
["mdr"] = {"Mandar"},
["mds"] = {"Maria (Papooey Guinea Noa)"},
["mdt"] = {"Mbere"},
["mdu"] = {"Mboko"},
["mdv"] = {"Mixtecish Monteverde Santa Lucía"},
["mdw"] = {"Mbosi"},
["mdx"] = {"Dizin"},
["mdy"] = {"Male (yn Eetoipt)"},
["mdz"] = {"Suruí Do Pará"},
["mea"] = {"Menka"},
["meb"] = {"Ikobi"},
["mec"] = {"Marra"},
["med"] = {"Melpa"},
["mee"] = {"Mengen"},
["mef"] = {"Megam"},
["meh"] = {"Mixtecish Tlaxiaco Heear Yiass"},
["mei"] = {"Midob"},
["mej"] = {"Meyah"},
["mek"] = {"Mekeo"},
["mel"] = {"Melanau Veanagh"},
["mem"] = {"Mangala"},
["men"] = {"Mende (Sierra Leone)"},
["meo"] = {"Malayish Kedah"},
["mep"] = {"Miriwoong"},
["meq"] = {"Merey"},
["mer"] = {"Meru"},
["mes"] = {"Masmaje"},
["met"] = {"Mato"},
["meu"] = {"Motu"},
["mev"] = {"Mano"},
["mew"] = {"Maaka"},
["mey"] = {"Hassaniyya"},
["mez"] = {"Menominee"},
["mfa"] = {"Malayish Pattani Malay"},
["mfb"] = {"Bangka"},
["mfc"] = {"Mba"},
["mfd"] = {"Mendankwe-Nkwen"},
["mfe"] = {"Creeole Mwirrishagh"},
["mff"] = {"Naki"},
["mfg"] = {"Mogofin"},
["mfh"] = {"Matal"},
["mfi"] = {"Wandala"},
["mfj"] = {"Mefele"},
["mfk"] = {"Mofu Hwoaie"},
["mfl"] = {"Putai"},
["mfm"] = {"Marghi Yiass"},
["mfn"] = {"Mbembe Cross River"},
["mfo"] = {"Mbe"},
["mfp"] = {"Malayish Makassar"},
["mfq"] = {"Moba"},
["mfr"] = {"Marrithiyel"},
["mfs"] = {"Çhengey Chowree Veksicagh"},
["mft"] = {"Mokerang"},
["mfu"] = {"Mbwela"},
["mfv"] = {"Mandjak"},
["mfw"] = {"Mulaha"},
["mfx"] = {"Melo"},
["mfy"] = {"Mayo"},
["mfz"] = {"Mabaan"},
["mga"] = {"Yernish Veanagh (900-1200)"},
["mgb"] = {"Mararit"},
["mgc"] = {"Morokodo"},
["mgd"] = {"Moru"},
["mge"] = {"Mango"},
["mgf"] = {"Maklew"},
["mgg"] = {"Mpumpong"},
["mgh"] = {"Makhuwa-Meetto"},
["mgi"] = {"Lijili"},
["mgj"] = {"Abureni"},
["mgk"] = {"Mawes"},
["mgl"] = {"Maleu-Kilenge"},
["mgm"] = {"Mambae"},
["mgn"] = {"Mbangi"},
["mgo"] = {"Meta'"},
["mgp"] = {"Magar Hiar"},
["mgq"] = {"Malila"},
["mgr"] = {"Mambwe-Lungu"},
["mgs"] = {"Manda (Tanzania)"},
["mgt"] = {"Mongol"},
["mgu"] = {"Mailu"},
["mgv"] = {"Matengo"},
["mgw"] = {"Matumbi"},
["mgy"] = {"Mbunga"},
["mgz"] = {"Mbugwe"},
["mha"] = {"Manda (yn Injey)"},
["mhb"] = {"Mahongwe"},
["mhc"] = {"Mocho"},
["mhd"] = {"Mbugu"},
["mhe"] = {"Besisi", "Mah Meri"},
["mhf"] = {"Mamaa"},
["mhg"] = {"Margu"},
["mhi"] = {"Ma'di"},
["mhj"] = {"Mogholi"},
["mhk"] = {"Mungaka"},
["mhl"] = {"Mauwake"},
["mhm"] = {"Makhuwa-Moniga"},
["mhn"] = {"Mócheno"},
["mho"] = {"Mashi (y Tambia)"},
["mhp"] = {"Malayish Bali"},
["mhq"] = {"Mandan"},
["mhr"] = {"Mari Hiar"},
["mhs"] = {"Buru (yn Indoneesh)"},
["mht"] = {"Mandahuaca"},
["mhu"] = {"Digaro-Mishmi", "Darang Deng"},
["mhw"] = {"Mbukushu"},
["mhx"] = {"Maru", "Lhaovo"},
["mhy"] = {"Ma'anyan"},
["mhz"] = {"Mor (Elanyn Mor)"},
["mia"] = {"Miami"},
["mib"] = {"Mixtecish Atatláhuca"},
["mic"] = {"Mi'kmaq", "Micmacish"},
["mid"] = {"Mandaish"},
["mie"] = {"Mixtecish Ocotepec"},
["mif"] = {"Mofu-Gudur"},
["mig"] = {"Mixtecish San Miguel El Grande"},
["mih"] = {"Mixtecish Chayuco"},
["mii"] = {"Mixtecish Chigmecatitlán"},
["mij"] = {"Abar", "Mungbam"},
["mik"] = {"Mikasuki"},
["mil"] = {"Mixtecish Peñoles"},
["mim"] = {"Mixtecish Alacatlatzala"},
["min"] = {"Minangkabau"},
["mio"] = {"Mixtecish Pinotepa Nacional"},
["mip"] = {"Mixtecish Apasco-Apoala"},
["miq"] = {"Mískito"},
["mir"] = {"Isthmus Mixe"},
["mis"] = {"çhengaghyn gyn coad"},
["mit"] = {"Mixtecish Puebla Yiassc"},
["miu"] = {"Mixtecish Cacaloxtepec"},
["miw"] = {"Akoye"},
["mix"] = {"Mixtecish Mixtepec"},
["miy"] = {"Mixtecish Ayutla"},
["miz"] = {"Mixtecish Coatzospan"},
["mjb"] = {"Makalero"},
["mjc"] = {"Mixtecish San Juan Colorado"},
["mjd"] = {"Maidu Heear Hwoaie"},
["mje"] = {"Muskum"},
["mjg"] = {"Tu"},
["mjh"] = {"Mwera (Nyasa)"},
["mji"] = {"Kim Mun"},
["mjj"] = {"Mawak"},
["mjk"] = {"Matukar"},
["mjl"] = {"Mandeali"},
["mjm"] = {"Medebur"},
["mjn"] = {"Ma (Papooey Guinea Noa)"},
["mjo"] = {"Malankuravan"},
["mjp"] = {"Malapandaram"},
["mjq"] = {"Malaryan"},
["mjr"] = {"Malavedan"},
["mjs"] = {"Miship"},
["mjt"] = {"Sauria Paharia"},
["mju"] = {"Manna-Dora"},
["mjv"] = {"Mannan"},
["mjw"] = {"Karbi"},
["mjx"] = {"Mahali"},
["mjy"] = {"Mohicanish"},
["mjz"] = {"Majhi"},
["mka"] = {"Mbre"},
["mkb"] = {"Mal Paharia"},
["mkc"] = {"Siliput"},
["mke"] = {"Mawchi"},
["mkf"] = {"Miya"},
["mkg"] = {"Mak (y Çheen)"},
["mkh"] = {"çhengaghyn Mon-Khmeragh"},
["mki"] = {"Dhatki"},
["mkj"] = {"Mokilish"},
["mkk"] = {"Byep"},
["mkl"] = {"Mokole"},
["mkm"] = {"Moklen"},
["mkn"] = {"Malayish Kupang"},
["mko"] = {"Mingang Doso"},
["mkp"] = {"Moikodi"},
["mkq"] = {"Bay Miwok"},
["mkr"] = {"Malas"},
["mks"] = {"Mixtecish Silacayoapan"},
["mkt"] = {"Vamale"},
["mku"] = {"Konyanka Maninka"},
["mkv"] = {"Mafea"},
["mkw"] = {"Kitubish (y Congo)"},
["mkx"] = {"Minobo Kinamiging"},
["mky"] = {"Makish Hiar"},
["mkz"] = {"Makasae"},
["mla"] = {"Malo"},
["mlb"] = {"Mbule"},
["mlc"] = {"Cao Lan"},
["mle"] = {"Manambu"},
["mlf"] = {"Mal"},
["mlh"] = {"Mape"},
["mli"] = {"Malimpung"},
["mlj"] = {"Miltu"},
["mlk"] = {"Ilwana", "Kiwilwana"},
["mll"] = {"Malua Bay"},
["mlm"] = {"Mulam"},
["mln"] = {"Malango"},
["mlo"] = {"Mlomp"},
["mlp"] = {"Bargam"},
["mlq"] = {"Maninkish Heear"},
["mlr"] = {"Vame"},
["mls"] = {"Masalit"},
["mlu"] = {"To'abaita"},
["mlv"] = {"Motlav", "Mwotlap"},
["mlw"] = {"Moloko"},
["mlx"] = {"Malfaxal", "Naha'ai"},
["mlz"] = {"Malaynon"},
["mma"] = {"Mama"},
["mmb"] = {"Momina"},
["mmc"] = {"Mazahua Michoacán"},
["mmd"] = {"Maonan"},
["mme"] = {"Mae"},
["mmf"] = {"Mundat"},
["mmg"] = {"Ambrym Hwoaie"},
["mmh"] = {"Mehináku"},
["mmi"] = {"Musar"},
["mmj"] = {"Majhwar"},
["mmk"] = {"Mukha-Dora"},
["mml"] = {"Man Met"},
["mmm"] = {"Maii"},
["mmn"] = {"Mamanwa"},
["mmo"] = {"Mangga Buang"},
["mmp"] = {"Siawi"},
["mmq"] = {"Musak"},
["mmr"] = {"Miaoish Xiangxi Heear"},
["mmt"] = {"Malalamai"},
["mmu"] = {"Mmaala"},
["mmv"] = {"Miriti"},
["mmw"] = {"Emae"},
["mmx"] = {"Madak"},
["mmy"] = {"Migaama"},
["mmz"] = {"Mabaale"},
["mna"] = {"Mbula"},
["mnb"] = {"Muna"},
["mnc"] = {"Mançhooish"},
["mnd"] = {"Mondé"},
["mne"] = {"Naba"},
["mnf"] = {"Mundanish"},
["mng"] = {"Mnong Hiar"},
["mnh"] = {"Mono (Pobblaght Gheynlagh y Chongo)"},
["mni"] = {"Manipurish"},
["mnj"] = {"Munji"},
["mnk"] = {"Mandinkish"},
["mnl"] = {"Tiale"},
["mnm"] = {"Mapena"},
["mnn"] = {"Mnong Yiass"},
["mno"] = {"çhengaghyn Manobo"},
["mnp"] = {"Sheenish Min Bei"},
["mnq"] = {"Minriq"},
["mnr"] = {"Mono (SUA)"},
["mns"] = {"Mansi"},
["mnu"] = {"Mer"},
["mnv"] = {"Rennell-Bellona"},
["mnw"] = {"Mon"},
["mnx"] = {"Manikion"},
["mny"] = {"Manyawa"},
["mnz"] = {"Moni"},
["moa"] = {"Mwan"},
["moc"] = {"Mocoví"},
["mod"] = {"Mobilish"},
["moe"] = {"Innu", "Montagnais"},
["mog"] = {"Mongondow"},
["moh"] = {"Mohawkish"},
["moi"] = {"Mboi"},
["moj"] = {"Monzombo"},
["mok"] = {"Morori"},
["mom"] = {"Mangue"},
["moo"] = {"Monom"},
["mop"] = {"Mayish Mopán"},
["moq"] = {"Mor (Lieh-innys Bomberai)"},
["mor"] = {"Moroish"},
["mos"] = {"Mossish"},
["mot"] = {"Barí"},
["mou"] = {"Mogum"},
["mov"] = {"Mohave"},
["mow"] = {"Moi (y Congo)"},
["mox"] = {"Molima"},
["moy"] = {"Shekkacho"},
["moz"] = {"Mukulu", "Gergiko"},
["mpa"] = {"Mpoto"},
["mpb"] = {"Malak Malak", "Mullukmulluk"},
["mpc"] = {"Mangarrayi"},
["mpd"] = {"Machinere"},
["mpe"] = {"Majang"},
["mpg"] = {"Marba"},
["mph"] = {"Maung"},
["mpi"] = {"Mpade"},
["mpj"] = {"Martu Wangka", "Wangkajunga"},
["mpk"] = {"Mbara (Shad)"},
["mpl"] = {"Watut Veanagh"},
["mpm"] = {"Mixtecish Yosondúa"},
["mpn"] = {"Mindiri"},
["mpo"] = {"Miu"},
["mpp"] = {"Migabac"},
["mpq"] = {"Matís"},
["mpr"] = {"Vangunu"},
["mps"] = {"Dadibi"},
["mpt"] = {"Mian"},
["mpu"] = {"Makuráp"},
["mpv"] = {"Mungkip"},
["mpw"] = {"Mapidish"},
["mpx"] = {"Misima-Panaeati"},
["mpy"] = {"Mapia"},
["mpz"] = {"Mpi"},
["mqa"] = {"Maba (yn Indoneesh)"},
["mqb"] = {"Mbuko"},
["mqc"] = {"Mangole"},
["mqe"] = {"Matepi"},
["mqf"] = {"Momuna"},
["mqg"] = {"Mlayish Kota Bangun Kutai"},
["mqh"] = {"Mixtecish Tlazoyaltepec"},
["mqi"] = {"Mariri"},
["mqj"] = {"Mamasa"},
["mqk"] = {"Rajah Kabunsuwan Manobo"},
["mql"] = {"Mbelime"},
["mqm"] = {"Marquesish Yiass"},
["mqn"] = {"Moronene"},
["mqo"] = {"Modole"},
["mqp"] = {"Manipa"},
["mqq"] = {"Minokok"},
["mqr"] = {"Mander"},
["mqs"] = {"Makish Heear"},
["mqt"] = {"Mok"},
["mqu"] = {"Mandari"},
["mqv"] = {"Mosimo"},
["mqw"] = {"Murupi"},
["mqx"] = {"Mamuju"},
["mqy"] = {"Manggarai"},
["mqz"] = {"Pano"},
["mra"] = {"Mlabri"},
["mrb"] = {"Marino"},
["mrc"] = {"Maricopa"},
["mrd"] = {"Magar Heear"},
["mre"] = {"Çhengey Chowree Martha's Vineyard"},
["mrf"] = {"Elseng"},
["mrg"] = {"Mising"},
["mrh"] = {"Mara Chin"},
["mrj"] = {"Marish Heear"},
["mrk"] = {"Hmwaveke"},
["mrl"] = {"Mortlockish"},
["mrm"] = {"Merlav", "Mwerlap"},
["mrn"] = {"Cheke Holo"},
["mro"] = {"Mru"},
["mrp"] = {"Morouas"},
["mrq"] = {"Marquesish Hwoaie"},
["mrr"] = {"Maria (yn Injey)"},
["mrs"] = {"Maragus"},
["mrt"] = {"Marghi Veanagh"},
["mru"] = {"Mono (Cameroon)"},
["mrv"] = {"Mangareva"},
["mrw"] = {"Maranao"},
["mrx"] = {"Maremgi", "Dineor"},
["mry"] = {"Mandaya"},
["mrz"] = {"Marind"},
["msb"] = {"Masbatenyo"},
["msc"] = {"Sankaran Maninka"},
["msd"] = {"Çhengey Chowree Mayagh Yucatec"},
["mse"] = {"Musey"},
["msf"] = {"Mekwei"},
["msg"] = {"Moraid"},
["msh"] = {"Malagasish Masikoro"},
["msi"] = {"Malayish Sabah"},
["msj"] = {"Ma (Pobblaght Gheynlagh y Chongo)"},
["msk"] = {"Mansaka"},
["msl"] = {"Molof", "Poule"},
["msm"] = {"Agusan Manobo"},
["msn"] = {"Vurës"},
["mso"] = {"Mombum"},
["msp"] = {"Maritsauá"},
["msq"] = {"Caac"},
["msr"] = {"Çhengey Chowree Vongoilagh"},
["mss"] = {"Masela Heear"},
["msu"] = {"Musom"},
["msv"] = {"Maslam"},
["msw"] = {"Mansoanka"},
["msx"] = {"Moresada"},
["msy"] = {"Aruamu"},
["msz"] = {"Momare"},
["mta"] = {"Manobo Cotabato"},
["mtb"] = {"Anyin Morofo"},
["mtc"] = {"Munit"},
["mtd"] = {"Mualang"},
["mte"] = {"Mono (Ellanyn Solomon)"},
["mtf"] = {"Murik (Papooey Guinea Noa)"},
["mtg"] = {"Una"},
["mth"] = {"Munggui"},
["mti"] = {"Maiwa (Papooey Guinea Noa)"},
["mtj"] = {"Moskona"},
["mtk"] = {"Mbe'"},
["mtl"] = {"Montol"},
["mtm"] = {"Mator"},
["mtn"] = {"Matagalpa"},
["mto"] = {"Totontepec Mixe"},
["mtp"] = {"Wichí Lhamtés Nocten"},
["mtq"] = {"Muong"},
["mtr"] = {"Mewari"},
["mts"] = {"Yora"},
["mtt"] = {"Mota"},
["mtu"] = {"Mixtecish Tututepec"},
["mtv"] = {"Asaro'o"},
["mtw"] = {"Binukidnon Yiass"},
["mtx"] = {"Mixtecish Tidaá"},
["mty"] = {"Nabi"},
["mua"] = {"Mundang"},
["mub"] = {"Mubi"},
["muc"] = {"Ajumbu"},
["mud"] = {"Aleutish Mednyj"},
["mue"] = {"Media Lengua"},
["mug"] = {"Musgu"},
["muh"] = {"Mündü"},
["mui"] = {"Musi"},
["muj"] = {"Mabire"},
["muk"] = {"Mugom"},
["mul"] = {"Ymmodee çhengaghyn"},
["mum"] = {"Maiwala"},
["mun"] = {"çhengaghyn Munda"},
["muo"] = {"Nyong"},
["mup"] = {"Malvi"},
["muq"] = {"Miaoish Xiangxi Hiar"},
["mur"] = {"Murle"},
["mus"] = {"Creekish"},
["mut"] = {"Murish Heear"},
["muu"] = {"Yaaku"},
["muv"] = {"Muthuvan"},
["mux"] = {"Bo-Ung"},
["muy"] = {"Muyang"},
["muz"] = {"Mursi"},
["mva"] = {"Manam"},
["mvb"] = {"Mattole"},
["mvd"] = {"Mamboru"},
["mve"] = {"Marwari (y Phakistaan)"},
["mvf"] = {"Mongoilish Ymmyllagh"},
["mvg"] = {"Mixtecish Yucuañe"},
["mvh"] = {"Mulgi"},
["mvi"] = {"Miyako"},
["mvk"] = {"Mekmek"},
["mvl"] = {"Mbara (yn Austrail)"},
["mvn"] = {"Minaveha"},
["mvo"] = {"Marovo"},
["mvp"] = {"Duri"},
["mvq"] = {"Moere"},
["mvr"] = {"Marau"},
["mvs"] = {"Massep"},
["mvt"] = {"Mpotovoro"},
["mvu"] = {"Marfa"},
["mvv"] = {"Tagal Murut"},
["mvw"] = {"Machinga"},
["mvx"] = {"Meoswar"},
["mvy"] = {"Kohistaanish Indus"},
["mvz"] = {"Mesqan"},
["mwa"] = {"Mwatebu"},
["mwb"] = {"Juwal"},
["mwc"] = {"Are"},
["mwe"] = {"Mwera (Chimwera)"},
["mwf"] = {"Murrinh-Patha"},
["mwg"] = {"Aiklep"},
["mwh"] = {"Mouk-Aria"},
["mwi"] = {"Labo", "Ninde"},
["mwk"] = {"Maninkish Kita"},
["mwl"] = {"Mirandish"},
["mwm"] = {"Sar"},
["mwn"] = {"Nyamwanga"},
["mwo"] = {"Maewo Veanagh"},
["mwp"] = {"Kala Lagaw Ya"},
["mwq"] = {"Mün Chin"},
["mwr"] = {"Marwari"},
["mws"] = {"Mwimbi-Muthambi"},
["mwt"] = {"Moken"},
["mwu"] = {"Mittu"},
["mwv"] = {"Mentawai"},
["mww"] = {"Hmong Daw"},
["mwz"] = {"Moingi"},
["mxa"] = {"Mixtecish Oaxaca Heear Hwoaie"},
["mxb"] = {"Mixtecish Tezoatlán"},
["mxc"] = {"Manyika"},
["mxd"] = {"Modang"},
["mxe"] = {"Mele-Fila"},
["mxf"] = {"Malgbe"},
["mxg"] = {"Mbangala"},
["mxh"] = {"Mvuba"},
["mxi"] = {"Mozarabish"},
["mxj"] = {"Miju-Mishmi", "Geman Deng"},
["mxk"] = {"Monumbo"},
["mxl"] = {"Maxi Gbe"},
["mxm"] = {"Meramera"},
["mxn"] = {"Moi (yn Indoneesh)"},
["mxo"] = {"Mbowe"},
["mxp"] = {"Tlahuitoltepec Mixe"},
["mxq"] = {"Juquila Mixe"},
["mxr"] = {"Murik (y Valaysia)"},
["mxs"] = {"Mixtecish Huitepec"},
["mxt"] = {"Mixtecish Jamiltepec"},
["mxu"] = {"Mada (Cameroon)"},
["mxv"] = {"Mixtecish Metlatónoc"},
["mxw"] = {"Namo"},
["mxx"] = {"Mahou", "Mawukakan"},
["mxy"] = {"Mixtecish Nochixtlán Hiar Yiass"},
["mxz"] = {"Masela Veanagh"},
["myb"] = {"Mbay"},
["myc"] = {"Mayeka"},
["mye"] = {"Myene"},
["myf"] = {"Bambassi"},
["myg"] = {"Manta"},
["myh"] = {"Makah"},
["myj"] = {"Mangayat"},
["myk"] = {"Mamara Senoufo"},
["myl"] = {"Moma"},
["mym"] = {"Me'en"},
["myn"] = {"çhengaghyn Mayagh"},
["myo"] = {"Anfillo"},
["myp"] = {"Pirahã"},
["myr"] = {"Muniche"},
["mys"] = {"Mesmes"},
["myu"] = {"Mundurukú"},
["myv"] = {"Erzya"},
["myw"] = {"Muyuw"},
["myx"] = {"Masaaba"},
["myy"] = {"Macuna"},
["myz"] = {"Mandaish Chlassicagh"},
["mza"] = {"Mixtecish Zacatepec Santa María"},
["mzb"] = {"Tumzabt"},
["mzc"] = {"Çhengey Chowree Vadagascar"},
["mzd"] = {"Malimba"},
["mze"] = {"Morawa"},
["mzg"] = {"Çhengey Chowree Vaynaghoil"},
["mzh"] = {"Wichí Lhamtés Güisnay"},
["mzi"] = {"Mazatec Ixcatlán"},
["mzj"] = {"Manya"},
["mzk"] = {"Mambila yn Naigeer"},
["mzl"] = {"Mazatlán Mixe"},
["mzm"] = {"Mumuye"},
["mzn"] = {"Mazanderanish"},
["mzo"] = {"Matipuhy"},
["mzp"] = {"Movima"},
["mzq"] = {"Mori Atas"},
["mzr"] = {"Marúbo"},
["mzs"] = {"Macanish"},
["mzt"] = {"Mintil"},
["mzu"] = {"Inapang"},
["mzv"] = {"Manza"},
["mzw"] = {"Deg"},
["mzx"] = {"Mawayana"},
["mzy"] = {"Çhengey Chowree Vosambeeckagh"},
["mzz"] = {"Maiadomu"},
["naa"] = {"Namla"},
["nab"] = {"Nambikuára Yiass"},
["nac"] = {"Narak"},
["nae"] = {"Naka'ela"},
["naf"] = {"Nabak"},
["nag"] = {"Naga Vrisht"},
["nah"] = {"çhengaghyn Nahuatl"},
["nai"] = {"çhengaghyn Injinagh Americaanagh Hwoaie"},
["naj"] = {"Nalu"},
["nak"] = {"Nakanai"},
["nal"] = {"Nalik"},
["nam"] = {"Ngan'gityemerri"},
["nan"] = {"Sheenish Min Nan"},
["nao"] = {"Naaba"},
["nap"] = {"Naaplish"},
["naq"] = {"Khoekhoeish", "Nama (y Nameeb)"},
["nar"] = {"Iguta"},
["nas"] = {"Naasioi"},
["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"},
["naw"] = {"Nawuri"},
["nax"] = {"Nakwi"},
["nay"] = {"Ngarrindjeri"},
["naz"] = {"Nahuatl Coatepec"},
["nba"] = {"Nyemba"},
["nbb"] = {"Ndoe"},
["nbc"] = {"Chang Naga"},
["nbd"] = {"Ngbinda"},
["nbe"] = {"Konyak Naga"},
["nbg"] = {"Nagarchal"},
["nbh"] = {"Ngamo"},
["nbi"] = {"Mao Naga"},
["nbj"] = {"Ngarinyman"},
["nbk"] = {"Nake"},
["nbm"] = {"Ngbaka Ma'bo"},
["nbn"] = {"Kuri"},
["nbo"] = {"Nkukoli"},
["nbp"] = {"Nnam"},
["nbq"] = {"Nggem"},
["nbr"] = {"Numana"},
["nbs"] = {"Çhengey Chowree Nameebagh"},
["nbt"] = {"Na"},
["nbu"] = {"Rongmei Naga"},
["nbv"] = {"Ngamambo"},
["nbw"] = {"Ngbandi Yiass"},
["nby"] = {"Ningera"},
["nca"] = {"Iyo"},
["ncb"] = {"Nicobarish Veanagh"},
["ncc"] = {"Ponam"},
["ncd"] = {"Nachering"},
["nce"] = {"Yale"},
["ncf"] = {"Notsi"},
["ncg"] = {"Nisga'a"},
["nch"] = {"Nahuatl Huasteca Veanagh"},
["nci"] = {"Nahuatl Chlassicagh"},
["ncj"] = {"Nahuatl Puebla Hwoaie"},
["nck"] = {"Na-kara"},
["ncl"] = {"Nahuatl Michoacán"},
["ncm"] = {"Nambo"},
["ncn"] = {"Nauna"},
["nco"] = {"Sibe"},
["ncq"] = {"Katang Hwoaie"},
["ncr"] = {"Ncane"},
["ncs"] = {"Çhengey Chowree Nickeraagagh"},
["nct"] = {"Naga Chothe"},
["ncu"] = {"Chumburung"},
["ncx"] = {"Nahuatl Puebla Veanagh"},
["ncz"] = {"Natchez"},
["nda"] = {"Ndasa"},
["ndb"] = {"Kenswei Nsei"},
["ndc"] = {"Ndauish"},
["ndd"] = {"Nde-Nsele-Nta"},
["ndf"] = {"Nadruvish"},
["ndg"] = {"Ndengereko"},
["ndh"] = {"Ndali"},
["ndi"] = {"Samba Leko"},
["ndj"] = {"Ndamba"},
["ndk"] = {"Ndaka"},
["ndl"] = {"Ndolo"},
["ndm"] = {"Ndam"},
["ndn"] = {"Ngundi"},
["ndp"] = {"Ndo"},
["ndq"] = {"Ndombe"},
["ndr"] = {"Ndoola"},
["nds"] = {"Germaanish Injil", "Saxonish Injil"},
["ndt"] = {"Ndunga"},
["ndu"] = {"Dugun"},
["ndv"] = {"Ndut"},
["ndw"] = {"Ndobo"},
["ndx"] = {"Nduga"},
["ndy"] = {"Lutos"},
["ndz"] = {"Ndogo"},
["nea"] = {"Ngad'a Hiar"},
["neb"] = {"Toura (y Clyst Iuaagagh)"},
["nec"] = {"Nedebang"},
["ned"] = {"Nde-Gbite"},
["nee"] = {"Nêlêmwa-Nixumwak"},
["nef"] = {"Nefamese"},
["neg"] = {"Negidal"},
["neh"] = {"Nyenkha"},
["nei"] = {"Noa-Hittish"},
["nej"] = {"Neko"},
["nek"] = {"Neku"},
["nem"] = {"Nemi"},
["nen"] = {"Nengone"},
["neo"] = {"Ná-Meo"},
["neq"] = {"Mixe Veanagh Hwoaie"},
["ner"] = {"Yahadish"},
["nes"] = {"Kinnaurish Bhoti"},
["net"] = {"Nete"},
["neu"] = {"Neo"},
["nev"] = {"Nyaheun"},
["new"] = {"Newari", "Nepal Bhasa"},
["nex"] = {"Neme"},
["ney"] = {"Neyo"},
["nez"] = {"Nez Perce"},
["nfa"] = {"Dhao"},
["nfd"] = {"Ahwai"},
["nfl"] = {"Ayiwo", "Äiwoo"},
["nfr"] = {"Nafaanra"},
["nfu"] = {"Mfumte"},
["nga"] = {"Ngbaka"},
["ngb"] = {"Ngbandi Hwoaie"},
["ngc"] = {"Ngombe (Pobblaght Gheynlagh y Chongo)"},
["ngd"] = {"Ngando (Pobblaght yn Affrick Veanagh)"},
["nge"] = {"Ngemba"},
["ngf"] = {"çhengaghyn tessen-Noa-Ghuineagh"},
["ngg"] = {"Ngbaka Manza"},
["ngh"] = {"Nǁng"},
["ngi"] = {"Ngizim"},
["ngj"] = {"Ngie"},
["ngk"] = {"Dalabon"},
["ngl"] = {"Lomwe"},
["ngm"] = {"Creeole Fir Ngatik"},
["ngn"] = {"Ngwo"},
["ngp"] = {"Ngulu"},
["ngq"] = {"Ngurimi", "Ngoreme"},
["ngr"] = {"Engdewu"},
["ngs"] = {"Gvoko"},
["ngt"] = {"Kriang", "Ngeq"},
["ngu"] = {"Nahuatl Guerrero"},
["ngv"] = {"Nagumi"},
["ngw"] = {"Ngwaba"},
["ngx"] = {"Nggwahyi"},
["ngy"] = {"Tibea"},
["ngz"] = {"Ngungwel"},
["nha"] = {"Nhanda"},
["nhb"] = {"Beng"},
["nhc"] = {"Nahuatl Tabasco"},
["nhd"] = {"Chiripá", "Guaranish Ava"},
["nhe"] = {"Nahuatl Huasteca Hiar"},
["nhf"] = {"Nhuwala"},
["nhg"] = {"Nahuatl Tetelcingo"},
["nhh"] = {"Nahari"},
["nhi"] = {"Nahuatl Zacatlán-Ahuacatlán-Tepetzintla"},
["nhk"] = {"Nahuatl Isthmus-Cosoleacaque"},
["nhm"] = {"Nahuatl Morelos"},
["nhn"] = {"Nahuatl Veanagh"},
["nho"] = {"Takuu"},
["nhp"] = {"Nahuatl Isthmus-Pajapan"},
["nhq"] = {"Nahuatl Huaxcaleca"},
["nhr"] = {"Naro"},
["nht"] = {"Nahuatl Ometepec"},
["nhu"] = {"Noone"},
["nhv"] = {"Nahuatl Temascaltepec"},
["nhw"] = {"Nahuatl Huasteca Heear"},
["nhx"] = {"Nahuatl Isthmus-Mecayapan"},
["nhy"] = {"Nahuatl Oaxaca Hwoaie"},
["nhz"] = {"Nahuatl Santa María La Alta"},
["nia"] = {"Nias"},
["nib"] = {"Nakame"},
["nic"] = {"çhengaghyn Neegeyr-Kordofanagh"},
["nid"] = {"Ngandi"},
["nie"] = {"Niellim"},
["nif"] = {"Nek"},
["nig"] = {"Ngalakgan"},
["nih"] = {"Nyiha (Tanzania)"},
["nii"] = {"Nii"},
["nij"] = {"Ngaju"},
["nik"] = {"Nicobarish Yiass"},
["nil"] = {"Nila"},
["nim"] = {"Nilamba"},
["nin"] = {"Ninzo"},
["nio"] = {"Nganasanish"},
["niq"] = {"Nandi"},
["nir"] = {"Nimborish"},
["nis"] = {"Nimi"},
["nit"] = {"Kolamish Hiar Yiass"},
["niu"] = {"Niuean"},
["niv"] = {"Gilyakish"},
["niw"] = {"Nimo"},
["nix"] = {"Hema"},
["niy"] = {"Ngiti"},
["niz"] = {"Ningil"},
["nja"] = {"Nzanyi"},
["njb"] = {"Naga Nocte"},
["njd"] = {"Ndonde Hamba"},
["njh"] = {"Naga Lotha"},
["nji"] = {"Gudanji"},
["njj"] = {"Njen"},
["njl"] = {"Njalgulgule"},
["njm"] = {"Angami Naga"},
["njn"] = {"Naga Liangmai"},
["njo"] = {"Naga Ao"},
["njr"] = {"Njerep"},
["njs"] = {"Nisa"},
["njt"] = {"Ndyuka-Trio Vrisht"},
["nju"] = {"Ngadjunmaya"},
["njx"] = {"Kunyi"},
["njy"] = {"Njyem"},
["njz"] = {"Nyishi"},
["nka"] = {"Nkoya"},
["nkb"] = {"Naga Khoibu"},
["nkc"] = {"Nkongho"},
["nkd"] = {"Koireng"},
["nke"] = {"Duke"},
["nkf"] = {"Naga Inpui"},
["nkg"] = {"Nekgini"},
["nkh"] = {"Naga Khezha"},
["nki"] = {"Naga Thangal"},
["nkj"] = {"Nakai"},
["nkk"] = {"Nokuku"},
["nkm"] = {"Namat"},
["nkn"] = {"Nkangala"},
["nko"] = {"Nkonya"},
["nkp"] = {"Niuatoputapu"},
["nkq"] = {"Nkami"},
["nkr"] = {"Nukuoro"},
["nks"] = {"Asmat Hwoaie"},
["nkt"] = {"Nyika (Tanzania)"},
["nku"] = {"Bouna Kulango"},
["nkv"] = {"Nyika (Malawi as y Tambia)"},
["nkw"] = {"Nkutu"},
["nkx"] = {"Nkoroo"},
["nkz"] = {"Nkari"},
["nla"] = {"Ngombale"},
["nlc"] = {"Nalca"},
["nle"] = {"Nyala Hiar"},
["nlg"] = {"Gela"},
["nli"] = {"Grangali"},
["nlj"] = {"Nyali"},
["nlk"] = {"Ninia Yali"},
["nll"] = {"Nihali"},
["nlm"] = {"Mankiyali"},
["nlo"] = {"Ngul"},
["nlq"] = {"Naga Lao"},
["nlu"] = {"Nchumbulu"},
["nlv"] = {"Orizaba Nahuatl"},
["nlw"] = {"Walangama"},
["nlx"] = {"Nahali"},
["nly"] = {"Nyamal"},
["nlz"] = {"Nalögo"},
["nma"] = {"Naga Maram"},
["nmb"] = {"Nambas Vooar", "V'ënen Taut"},
["nmc"] = {"Ngam"},
["nmd"] = {"Ndumu"},
["nme"] = {"Naga Mzieme"},
["nmf"] = {"Naga Tangkhul (yn Injey)"},
["nmg"] = {"Kwasio"},
["nmh"] = {"Naga Monsang"},
["nmi"] = {"Nyam"},
["nmj"] = {"Ngombe (Pobblaght yn Affrick Veanagh)"},
["nmk"] = {"Namakura"},
["nml"] = {"Ndemli"},
["nmm"] = {"Manangba"},
["nmn"] = {"ǃXóõ"},
["nmo"] = {"Naga Moyon"},
["nmp"] = {"Nimanbur"},
["nmq"] = {"Nambya"},
["nmr"] = {"Nimbari"},
["nms"] = {"Letemboi"},
["nmt"] = {"Namonuito"},
["nmu"] = {"Maidu Hiar Hwoaie"},
["nmv"] = {"Ngamini"},
["nmw"] = {"Nimoa", "Rifao"},
["nmx"] = {"Nama (Papooey Guinea Noa)"},
["nmy"] = {"Namuyi"},
["nmz"] = {"Nawdm"},
["nna"] = {"Nyangumarta"},
["nnb"] = {"Nande"},
["nnc"] = {"Nancere"},
["nnd"] = {"Ambae Heear"},
["nne"] = {"Ngandyera"},
["nnf"] = {"Ngaing"},
["nng"] = {"Naga Maring"},
["nnh"] = {"Ngiemboon"},
["nni"] = {"Nuaulu Hwoaie"},
["nnj"] = {"Nyangatom"},
["nnk"] = {"Nankina"},
["nnl"] = {"Naga Rengma Hwoaie "},
["nnm"] = {"Namia"},
["nnn"] = {"Ngete"},
["nnp"] = {"Naga Wancho"},
["nnq"] = {"Ngindo"},
["nnr"] = {"Narungga"},
["nnt"] = {"Nanticoke"},
["nnu"] = {"Dwang"},
["nnv"] = {"Nugunu (yn Austrail)"},
["nnw"] = {"Nuni Yiass"},
["nny"] = {"Nyangga"},
["nnz"] = {"Nda'nda'"},
["noa"] = {"Woun Meu"},
["noc"] = {"Nuk"},
["nod"] = {"Thai Hwoaie"},
["noe"] = {"Nimadi"},
["nof"] = {"Nomane"},
["nog"] = {"Nogaish"},
["noh"] = {"Nomu"},
["noi"] = {"Noiri"},
["noj"] = {"Nonuya"},
["nok"] = {"Nooksack"},
["nol"] = {"Nomlaki"},
["non"] = {"Shenn Loghlynnish"},
["nop"] = {"Numanggang"},
["noq"] = {"Ngongo"},
["nos"] = {"Nisu Hiar"},
["not"] = {"Nomatsiguenga"},
["nou"] = {"Ewage-Notu"},
["nov"] = {"Novial"},
["now"] = {"Nyambo"},
["noy"] = {"Noy"},
["noz"] = {"Nayi"},
["npa"] = {"Nar Phu"},
["npb"] = {"Nupbikha"},
["npg"] = {"Naga Ponyo-Gongwang"},
["nph"] = {"Naga Phom"},
["npi"] = {"Nepaalish"},
["npl"] = {"Nahuatl Puebla Hiar Yiass"},
["npn"] = {"Mondropolon"},
["npo"] = {"Naga Pochuri"},
["nps"] = {"Nipsan"},
["npu"] = {"Naga Puimei"},
["npx"] = {"Noipx"},
["npy"] = {"Napu"},
["nqg"] = {"Nago Yiass"},
["nqk"] = {"Kura Ede Nago"},
["nql"] = {"Ngendelengo"},
["nqm"] = {"Ndom"},
["nqn"] = {"Nen"},
["nqo"] = {"N'Ko", "N’Ko"},
["nqq"] = {"Naga Kyan-Karyaw"},
["nqt"] = {"Nteng"},
["nqy"] = {"Naga Akyaung Ari"},
["nra"] = {"Ngom"},
["nrb"] = {"Nara"},
["nrc"] = {"Norish"},
["nre"] = {"Naga Rengma Yiass"},
["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"},
["nrg"] = {"Narango"},
["nri"] = {"Naga Chokri"},
["nrk"] = {"Ngarla"},
["nrl"] = {"Ngarluma"},
["nrm"] = {"Narom"},
["nrn"] = {"Nornish"},
["nrp"] = {"Picenish Hwoaie"},
["nrr"] = {"Norra", "Nora"},
["nrt"] = {"Kalapuya Hwoaie"},
["nru"] = {"Narua"},
["nrx"] = {"Ngurmbur"},
["nrz"] = {"Lala"},
["nsa"] = {"Naga Sangtam"},
["nsb"] = {"Nossob Injil"},
["nsc"] = {"Nshi"},
["nsd"] = {"Nisu Yiass"},
["nse"] = {"Nsenga"},
["nsf"] = {"Nisu Heear Hwoaie"},
["nsg"] = {"Ngasa"},
["nsh"] = {"Ngoshie"},
["nsi"] = {"Çhengey Chowree Naigeeragh"},
["nsk"] = {"Naskapi"},
["nsl"] = {"Çhengey Chowree Norlynnagh"},
["nsm"] = {"Naga Sumi"},
["nsn"] = {"Nehan"},
["nso"] = {"Pedish", "Sotoish Hwoaie", "Sepedi"},
["nsp"] = {"Çhengey Chowree Nepaalagh"},
["nsq"] = {"Miwokish Sierra Hwoaie"},
["nsr"] = {"Çhengey Chowree Vooiragh"},
["nss"] = {"Nali"},
["nst"] = {"Naga Tase"},
["nsu"] = {"Nahuatl Sierra Negra"},
["nsv"] = {"Nisu Heear Yiass"},
["nsw"] = {"Navut"},
["nsx"] = {"Nsongo"},
["nsy"] = {"Nasal"},
["nsz"] = {"Nisenan"},
["ntd"] = {"Tidung Hwoaie"},
["nte"] = {"Nathembo"},
["ntg"] = {"Ngantangarra"},
["nti"] = {"Natioro"},
["ntj"] = {"Ngaanyatjarra"},
["ntk"] = {"Ikoma-Nata-Isenye"},
["ntm"] = {"Nateni"},
["nto"] = {"Ntomba"},
["ntp"] = {"Tepehuan Hwoaie"},
["ntr"] = {"Delo"},
["ntu"] = {"Natügu"},
["ntw"] = {"Nottoway"},
["ntx"] = {"Naga Tangkhul (Myanmar)"},
["nty"] = {"Mantsi"},
["ntz"] = {"Natanzi"},
["nua"] = {"Yuanga"},
["nub"] = {"çhengaghyn Nubiagh"},
["nuc"] = {"Nukuini"},
["nud"] = {"Ngala"},
["nue"] = {"Ngundu"},
["nuf"] = {"Nusu"},
["nug"] = {"Nungali"},
["nuh"] = {"Ndunda"},
["nui"] = {"Ngumbi"},
["nuj"] = {"Nyole"},
["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"},
["nul"] = {"Nusa Laut"},
["num"] = {"Niuafo'ou"},
["nun"] = {"Anong"},
["nuo"] = {"Nguôn"},
["nup"] = {"Nupe-Nupe-Tako"},
["nuq"] = {"Nukumanu"},
["nur"] = {"Nukuria"},
["nus"] = {"Nuer"},
["nut"] = {"Nung (Viet Nam)"},
["nuu"] = {"Ngbundu"},
["nuv"] = {"Nuni Hwoaie"},
["nuw"] = {"Nguluwan"},
["nux"] = {"Mehek"},
["nuy"] = {"Nunggubuyu"},
["nuz"] = {"Nahuatl Tlamacazapa"},
["nvh"] = {"Nasarish"},
["nvm"] = {"Namiae"},
["nvo"] = {"Nyokon"},
["nwa"] = {"Nawathinehena"},
["nwb"] = {"Nyabwa"},
["nwc"] = {"Newarish Chlassicagh", "Nepal Bhasa Chlassicagh", "Shenn Newarish"},
["nwe"] = {"Ngwe"},
["nwg"] = {"Ngayawung"},
["nwi"] = {"Tanna Heear Yiass"},
["nwm"] = {"Nyamusa-Molo"},
["nwo"] = {"Nauo"},
["nwr"] = {"Nawaru"},
["nww"] = {"Ndwewe"},
["nwx"] = {"Newarish Veanagh"},
["nwy"] = {"Nottoway-Meherrin"},
["nxa"] = {"Nauete"},
["nxd"] = {"Ngando (Pobblaght Gheynlagh y Chongo)"},
["nxe"] = {"Nage"},
["nxg"] = {"Ngad'a"},
["nxi"] = {"Nindi"},
["nxk"] = {"Naga Koki"},
["nxl"] = {"Nuaulu Yiass"},
["nxm"] = {"Numidish"},
["nxn"] = {"Ngawun"},
["nxo"] = {"Ndambomo"},
["nxq"] = {"Naxi"},
["nxr"] = {"Ninggerum"},
["nxx"] = {"Nafri"},
["nyb"] = {"Nyangbo"},
["nyc"] = {"Nyanga-li"},
["nyd"] = {"Nyore", "Olunyole"},
["nye"] = {"Nyengo"},
["nyf"] = {"Giryama", "Kigiryama"},
["nyg"] = {"Nyindu"},
["nyh"] = {"Nyikina"},
["nyi"] = {"Ama (y Toodaan)"},
["nyj"] = {"Nyanga"},
["nyk"] = {"Nyaneka"},
["nyl"] = {"Nyeu"},
["nym"] = {"Nyamwezi"},
["nyn"] = {"Nyankole"},
["nyo"] = {"Nyoro"},
["nyp"] = {"Nyang'i"},
["nyq"] = {"Nayini"},
["nyr"] = {"Nyiha (Malawi)"},
["nys"] = {"Nyungar"},
["nyt"] = {"Nyawaygi"},
["nyu"] = {"Nyungwe"},
["nyv"] = {"Nyulnyul"},
["nyw"] = {"Nyaw"},
["nyx"] = {"Nganyaywana"},
["nyy"] = {"Nyakyusa-Ngonde"},
["nza"] = {"Tigon Mbembe"},
["nzb"] = {"Njebi"},
["nzd"] = {"Nzadi"},
["nzi"] = {"Nzima"},
["nzk"] = {"Nzakara"},
["nzm"] = {"Zeme Naga"},
["nzr"] = {"Dir-Nyamzak-Mbarimi"},
["nzs"] = {"Çhengey Chowree Noa-Heelynnagh"},
["nzu"] = {"Teke-Nzikou"},
["nzy"] = {"Nzakambay"},
["nzz"] = {"Nanga Dama Dogon"},
["oaa"] = {"Orok"},
["oac"] = {"Oroch"},
["oar"] = {"Shenn Aramaaish (derrey 700 RC)", "Aramaaish Henndeeagh (derrey 700 RC)"},
["oav"] = {"Shenn Avarish"},
["obi"] = {"Obispeño"},
["obk"] = {"Bontok Yiass"},
["obl"] = {"Oblo"},
["obm"] = {"Moabite"},
["obo"] = {"Obo Manobo"},
["obr"] = {"Shenn Vurmish"},
["obt"] = {"Shenn Vritaanish"},
["obu"] = {"Obulom"},
["oca"] = {"Ocaina"},
["och"] = {"Shenn Heenish"},
["ocm"] = {"Shenn Cham"},
["oco"] = {"Shenn Chornish"},
["ocu"] = {"Atzingo Matlatzinca"},
["oda"] = {"Odut"},
["odk"] = {"Od"},
["odt"] = {"Shenn Ollanish"},
["odu"] = {"Odual"},
["ofo"] = {"Ofo"},
["ofs"] = {"Shenn Reeshlannish"},
["ofu"] = {"Efutop"},
["ogb"] = {"Ogbia"},
["ogc"] = {"Ogbah"},
["oge"] = {"Shenn Horshish"},
["ogg"] = {"Ogbogolo"},
["ogo"] = {"Khana"},
["ogu"] = {"Ogbronuagum"},
["oht"] = {"Shenn Hittish"},
["ohu"] = {"Shenn Ungaarish"},
["oia"] = {"Oirata"},
["oie"] = {"Okolie"},
["oin"] = {"Inebu One"},
["ojb"] = {"OjibwaHeear Hwoaie"},
["ojc"] = {"Ojibwa Veanagh"},
["ojg"] = {"Ojibwa Hiar"},
["ojp"] = {"Shenn Hapaanish"},
["ojs"] = {"Ojibwa Severn"},
["ojv"] = {"Javish Ontong"},
["ojw"] = {"Ojibwa Heear"},
["oka"] = {"Okanagan"},
["okb"] = {"Okobo"},
["okc"] = {"Kobo"},
["okd"] = {"Okodia"},
["oke"] = {"Okpe (Edo Heear Yiass)"},
["okg"] = {"Koko Babangk"},
["okh"] = {"Koresh-e Rostam"},
["oki"] = {"Okiek"},
["okj"] = {"Oko-Juwoi"},
["okk"] = {"Kwamtim One"},
["okl"] = {"Shenn Çhengey Chowree Kent"},
["okm"] = {"Koreeish Veanagh (10oo-16oo eash)"},
["okn"] = {"Oki-No-Erabu"},
["oko"] = {"Shenn Choreeish (3oo-9oo eash)"},
["okr"] = {"Kirike"},
["oks"] = {"Oko-Eni-Osayen"},
["oku"] = {"Oku"},
["okv"] = {"Orokaiva"},
["okx"] = {"Okpe (Edo Heear Hwoaie)"},
["okz"] = {"Shenn Khmerish"},
["ola"] = {"Walungge"},
["old"] = {"Mochi"},
["ole"] = {"Olekha"},
["olk"] = {"Olkol"},
["olm"] = {"Oloma"},
["olo"] = {"Livvish"},
["olr"] = {"Olrat"},
["olt"] = {"Shenn Litaanish"},
["olu"] = {"Kuvale"},
["oma"] = {"Omaha-Ponca"},
["omb"] = {"Ambae Hiar"},
["omc"] = {"Mochica"},
["omg"] = {"Omagua"},
["omi"] = {"Omi"},
["omk"] = {"Omok"},
["oml"] = {"Ombo"},
["omn"] = {"Minoan"},
["omo"] = {"Utarmbung"},
["omp"] = {"Shenn Vanipurish"},
["omq"] = {"çhengaghyn Oto-Mangueagh"},
["omr"] = {"Shenn Varathish"},
["omt"] = {"Omotik"},
["omu"] = {"Omurano"},
["omv"] = {"çhengaghyn Omotagh"},
["omw"] = {"Tairora Yiass"},
["omx"] = {"Shenn Mon"},
["omy"] = {"Shenn Valayish"},
["ona"] = {"Ona"},
["onb"] = {"Lingao"},
["one"] = {"Oneida"},
["ong"] = {"Olo"},
["oni"] = {"Onin"},
["onj"] = {"Onjob"},
["onk"] = {"Kabore One"},
["onn"] = {"Onobasulu"},
["ono"] = {"Onondaga"},
["onp"] = {"Sartang"},
["onr"] = {"One Hwoaie"},
["ons"] = {"Ono"},
["ont"] = {"Ontenu"},
["onu"] = {"Unua"},
["onw"] = {"Shenn Nubish"},
["onx"] = {"Onin Vrisht"},
["ood"] = {"Tohono O'odham"},
["oog"] = {"Ong"},
["oon"] = {"Önge"},
["oor"] = {"Oorlams"},
["oos"] = {"Shenn Ossetish"},
["opa"] = {"Okpamheri"},
["opk"] = {"Kopkaka"},
["opm"] = {"Oksapmin"},
["opo"] = {"Opao"},
["opt"] = {"Opata"},
["opy"] = {"Ofayé"},
["ora"] = {"Oroha"},
["orc"] = {"Orma"},
["ore"] = {"Orejón"},
["org"] = {"Oring"},
["orh"] = {"Oroqen"},
["orn"] = {"Orang Kanaq"},
["oro"] = {"Orokolo"},
["orr"] = {"Oruma"},
["ors"] = {"Orang Seletar"},
["ort"] = {"Adivasi Oriya"},
["oru"] = {"Ormuri"},
["orv"] = {"Shenn Rooshish"},
["orw"] = {"Oro Win"},
["orx"] = {"Oro"},
["ory"] = {"Odish (çhengey er lheh)", "Oriyish (çhengey er lheh)"},
["orz"] = {"Ormu"},
["osa"] = {"Osage"},
["osc"] = {"Oscan"},
["osi"] = {"Osing"},
["osn"] = {"Shenn Hundanish"},
["oso"] = {"Ososo"},
["osp"] = {"Shenn Spaainish"},
["ost"] = {"Osatu"},
["osu"] = {"One Yiass"},
["osx"] = {"Shenn Haxonish"},
["ota"] = {"Turkish Ottomanagh (1500-1928)"},
["otb"] = {"Shenn Tibetish"},
["otd"] = {"Ot Danum"},
["ote"] = {"Otomi Mezquital"},
["oti"] = {"Oti"},
["otk"] = {"Shenn Turkish"},
["otl"] = {"Otomi Tilapa"},
["otm"] = {"Otomi Sleitoil Hiar"},
["otn"] = {"Otomi Tenango"},
["oto"] = {"çhengaghyn Otomagh"},
["otq"] = {"Otomi Querétaro"},
["otr"] = {"Otoro"},
["ots"] = {"Otomi Estado de México"},
["ott"] = {"Otomi Temoaya"},
["otu"] = {"Otuke"},
["otw"] = {"Ottawa"},
["otx"] = {"Otomi Texcatepec"},
["oty"] = {"Shenn Tamilish"},
["otz"] = {"Otomi Ixtenco"},
["oua"] = {"Tagargrent"},
["oub"] = {"Glio-Oubi"},
["oue"] = {"Oune"},
["oui"] = {"Shenn Uighurish"},
["oum"] = {"Ouma"},
["ovd"] = {"Elfdalish", "Övdalish"},
["owi"] = {"Owiniga"},
["owl"] = {"Shenn Vretnish"},
["oyb"] = {"Oy"},
["oyd"] = {"Oyda"},
["oym"] = {"Wayampi"},
["oyy"] = {"Oya'oya"},
["ozm"] = {"Koonzime"},
["paa"] = {"çhengaghyn Papooagh"},
["pab"] = {"Parecís"},
["pac"] = {"Pacoh"},
["pad"] = {"Paumarí"},
["pae"] = {"Pagibete"},
["paf"] = {"Paranawát"},
["pag"] = {"Pangasinan"},
["pah"] = {"Tenharim"},
["pai"] = {"Pe"},
["pak"] = {"Parakanã"},
["pal"] = {"Pahlavi"},
["pam"] = {"Pampanga", "Kapampangan"},
["pao"] = {"Paiute Hwoaie"},
["pap"] = {"Papiamento"},
["paq"] = {"Parya"},
["par"] = {"Panamint", "Timbisha"},
["pas"] = {"Papasena"},
["pau"] = {"Palauish"},
["pav"] = {"Pakaásnovos"},
["paw"] = {"Pawneeish"},
["pax"] = {"Pankararé"},
["pay"] = {"Pech"},
["paz"] = {"Pankararú"},
["pbb"] = {"Páez"},
["pbc"] = {"Patamona"},
["pbe"] = {"Popoloca Mezontla"},
["pbf"] = {"Popoloca Coyotepec"},
["pbg"] = {"Paraujano"},
["pbh"] = {"E'ñapa Woromaipu"},
["pbi"] = {"Parkwa"},
["pbl"] = {"Mak (y Naigeer)"},
["pbm"] = {"Mazatec Puebla"},
["pbn"] = {"Kpasam"},
["pbo"] = {"Papel"},
["pbp"] = {"Badyara"},
["pbr"] = {"Pangwa"},
["pbs"] = {"Pame Veanagh"},
["pbt"] = {"Pashtish Yiass"},
["pbu"] = {"Pashtish Hwoaie"},
["pbv"] = {"Pnar"},
["pby"] = {"Pyu (Papooey Guinea Noa)"},
["pca"] = {"Popoloca Ahuatempan Santa Inés"},
["pcb"] = {"Pear"},
["pcc"] = {"Bouyei"},
["pcd"] = {"Picardish"},
["pce"] = {"Ruching Palaung"},
["pcf"] = {"Paliyan"},
["pcg"] = {"Paniya"},
["pch"] = {"Pardhan"},
["pci"] = {"Duruwa"},
["pcj"] = {"Parenga"},
["pck"] = {"Paite Chin"},
["pcl"] = {"Pardhi"},
["pcm"] = {"Naigeerish Vrisht"},
["pcn"] = {"Piti"},
["pcp"] = {"Pacahuara"},
["pcw"] = {"Pyapun"},
["pda"] = {"Anam"},
["pdc"] = {"Germaanish Pennsylvania"},
["pdi"] = {"Pa Di"},
["pdn"] = {"Podena", "Fedan"},
["pdo"] = {"Padoe"},
["pdt"] = {"Plautdietsch"},
["pdu"] = {"Kayan"},
["pea"] = {"Indoneeshish Peranakan"},
["peb"] = {"Pomo Hiar"},
["ped"] = {"Mala (Papooey Guinea Noa)"},
["pee"] = {"Taje"},
["pef"] = {"Pomo Hiar Hwoaie"},
["peg"] = {"Pengo"},
["peh"] = {"Bonan"},
["pei"] = {"Chichimeca-Jonaz"},
["pej"] = {"Pomo Hwoaie"},
["pek"] = {"Penchal"},
["pel"] = {"Pekal"},
["pem"] = {"Phende"},
["peo"] = {"Shenn Phershish (ca. 600-400 RC)"},
["pep"] = {"Kunja"},
["peq"] = {"Pomo Yiass"},
["pes"] = {"Pershish Eeraanagh"},
["pev"] = {"Pémono"},
["pex"] = {"Petats"},
["pey"] = {"Petjo"},
["pez"] = {"Penan Hiar"},
["pfa"] = {"Pááfang"},
["pfe"] = {"Pere"},
["pfl"] = {"Pfaelzisch"},
["pga"] = {"Creeole Arabish Soodaanagh"},
["pgd"] = {"Gāndhārī"},
["pgg"] = {"Pangwali"},
["pgi"] = {"Pagi"},
["pgk"] = {"Rerep"},
["pgl"] = {"Yernish Vunneydagh"},
["pgn"] = {"Paelignian"},
["pgs"] = {"Pangseng"},
["pgu"] = {"Pagu"},
["pgz"] = {"Çhengey Phapooey Guinea Noa"},
["pha"] = {"Pa-Hng"},
["phd"] = {"Phudagi"},
["phg"] = {"Phuong"},
["phh"] = {"Phukha"},
["phi"] = {"çhengaghyn Philippeenagh"},
["phj"] = {"Pahari"},
["phk"] = {"Phake"},
["phl"] = {"Phalura", "Palula"},
["phm"] = {"Phimbi"},
["phn"] = {"çhengaghyn Feaneeckagh"},
["pho"] = {"Phunoi"},
["phq"] = {"Phana'"},
["phr"] = {"Pahari-Potwari"},
["pht"] = {"Thai Phu"},
["phu"] = {"Phuan"},
["phv"] = {"Pahlavanish"},
["phw"] = {"Phangduwali"},
["pia"] = {"Pima Bajo"},
["pib"] = {"Yine"},
["pic"] = {"Pinji"},
["pid"] = {"Piaroa"},
["pie"] = {"Piro"},
["pif"] = {"Pingelapish"},
["pig"] = {"Pisabo"},
["pih"] = {"Pitcairn-Norfolk"},
["pij"] = {"Pijao"},
["pil"] = {"Yom"},
["pim"] = {"Powhatanish"},
["pin"] = {"Piame"},
["pio"] = {"Piapoco"},
["pip"] = {"Pero"},
["pir"] = {"Piratapuyo"},
["pis"] = {"Pijin"},
["pit"] = {"Pitta Pitta"},
["piu"] = {"Pintupi-Luritja"},
["piv"] = {"Pileni", "Vaeakau-Taumako"},
["piw"] = {"Pimbwe"},
["pix"] = {"Piu"},
["piy"] = {"Piya-Kwonci"},
["piz"] = {"Pije"},
["pjt"] = {"Pitjantjatjara"},
["pka"] = {"Ardhamāgadhī Prākrit"},
["pkb"] = {"Pokomo", "Kipfokomo"},
["pkc"] = {"Paekche"},
["pkg"] = {"Pak-Tong"},
["pkh"] = {"Pankhu"},
["pkn"] = {"Pakanha"},
["pko"] = {"Pökoot"},
["pkp"] = {"Pukapuka"},
["pkr"] = {"Attapady Kurumba"},
["pks"] = {"Çhengey Chowree Phakistaanagh"},
["pkt"] = {"Maleng"},
["pku"] = {"Paku"},
["pla"] = {"Miani"},
["plb"] = {"Polonombauk"},
["plc"] = {"Palawano Veanagh"},
["pld"] = {"Polari"},
["ple"] = {"Palu'e"},
["plf"] = {"çhengaghyn Malayo-Pholaneeshagh Meanagh"},
["plg"] = {"Pilagá"},
["plh"] = {"Paulohi"},
["plk"] = {"Shina Kohistan"},
["pll"] = {"Shwe Palaung"},
["pln"] = {"Palenquero"},
["plo"] = {"Popoluca Oluta"},
["plq"] = {"Palaic"},
["plr"] = {"Palaka Senoufo"},
["pls"] = {"Popoloca Tlacoyalco San Marcos", "Popoloca Tlalcoyalco San Marcos"},
["plt"] = {"Malagasish yn Ard-chlaare"},
["plu"] = {"Palikúr"},
["plv"] = {"Palawano Heear Yiass"},
["plw"] = {"Palawano Brooke's Point"},
["ply"] = {"Bolyu"},
["plz"] = {"Paluan"},
["pma"] = {"Paama"},
["pmb"] = {"Pambia"},
["pmd"] = {"Pallanganmiddang"},
["pme"] = {"Pwaamei"},
["pmf"] = {"Pamona"},
["pmh"] = {"Māhārāṣṭri Prākrit"},
["pmi"] = {"Pumi Hwoaie"},
["pmj"] = {"Pumi Yiass"},
["pml"] = {"Lingua Franca"},
["pmm"] = {"Pomo"},
["pmn"] = {"Pam"},
["pmo"] = {"Pom"},
["pmq"] = {"Pame Hwoaie"},
["pmr"] = {"Paynamar"},
["pms"] = {"Piedmontish"},
["pmt"] = {"Tuamotuan"},
["pmw"] = {"Miwokish ny Strahyn"},
["pmx"] = {"Naga Poumei"},
["pmy"] = {"Malayish Phapooagh"},
["pmz"] = {"Pame Yiass"},
["pna"] = {"Punan Bah-Biau"},
["pnb"] = {"Panjabish Heear"},
["pnc"] = {"Pannei"},
["pnd"] = {"Mpinda"},
["pne"] = {"Penan Heear"},
["png"] = {"Pangu", "Pongu"},
["pnh"] = {"Penrhyn"},
["pni"] = {"Aoheng"},
["pnj"] = {"Pinjarup"},
["pnk"] = {"Paunaka"},
["pnl"] = {"Paleni"},
["pnm"] = {"Punan Batu 1"},
["pnn"] = {"Pinai-Hagahai"},
["pno"] = {"Panobo"},
["pnp"] = {"Pancana"},
["pnq"] = {"Pana (Burkina Faso)"},
["pnr"] = {"Panim"},
["pns"] = {"Ponosakan"},
["pnt"] = {"Pontish"},
["pnu"] = {"Jiongnai Bunu"},
["pnv"] = {"Pinigura"},
["pnw"] = {"Banyjima", "Panytyima"},
["pnx"] = {"Phong-Kniang"},
["pny"] = {"Pinyin"},
["pnz"] = {"Pana (Pobblaght yn Affrick Veanagh)"},
["poc"] = {"Poqomam"},
["poe"] = {"Popoloca Atzingo San Juan"},
["pof"] = {"Poke"},
["pog"] = {"Potiguára"},
["poh"] = {"Poqomchi'"},
["poi"] = {"Popoluca Sleitoil"},
["pok"] = {"Pokangá"},
["pom"] = {"Pomo Hiar Yiass"},
["pon"] = {"Pohnpeish"},
["poo"] = {"Pomo Veanagh"},
["pop"] = {"Pwapwâ"},
["poq"] = {"Popoloca Texistepec"},
["pos"] = {"Popoloca Sayula"},
["pot"] = {"Potawatomi"},
["pov"] = {"Crioulo Ghuinea Eaghtyragh"},
["pow"] = {"Popoluca Otlaltepec San Felipe"},
["pox"] = {"Polabish"},
["poy"] = {"Pogolo"},
["poz"] = {"çhengaghyn Malayo-Pholaneeshagh"},
["ppe"] = {"Papi"},
["ppi"] = {"Paipai"},
["ppk"] = {"Uma"},
["ppl"] = {"Pipil", "Nicarao"},
["ppm"] = {"Papuma"},
["ppn"] = {"Papapana"},
["ppo"] = {"Folopa"},
["ppp"] = {"Pelende"},
["ppq"] = {"Pei"},
["pps"] = {"Popoloca Temalacayuca San Luís"},
["ppt"] = {"Pare"},
["ppu"] = {"Papora"},
["pqa"] = {"Pa'a"},
["pqe"] = {"çhengaghyn Malayo-Pholaneeshagh Hiar"},
["pqm"] = {"Malecite-Passamaquoddy"},
["pqw"] = {"çhengaghyn Malayo-Pholaneeshagh Heear"},
["pra"] = {"çhengaghyn Prakrit"},
["prc"] = {"Parachi"},
["prd"] = {"Parsish-Darish"},
["pre"] = {"Principensish"},
["prf"] = {"Paranan"},
["prg"] = {"Prooshish"},
["prh"] = {"Porohanon"},
["pri"] = {"Paicî"},
["prk"] = {"Parauk"},
["prl"] = {"Çhengey Chowree Pherooagh"},
["prm"] = {"Kibiri"},
["prn"] = {"Prasuni"},
["pro"] = {"Shenn Provençal (derrey 1500)", "Shenn Ocsitaanish (derrey 1500)"},
["prq"] = {"Ashéninka Perené"},
["prr"] = {"Puri"},
["prs"] = {"Darish", "Pershish Afghaanagh"},
["prt"] = {"Phai"},
["pru"] = {"Puragi"},
["prw"] = {"Parawen"},
["prx"] = {"Purik"},
["prz"] = {"Çhengey Chowree Providencia"},
["psa"] = {"Asue Awyu"},
["psc"] = {"Çhengey Chowree Eeraanagh", "Çhengey Chowree Phershagh"},
["psd"] = {"Çhengey Chowree Injinee ny Strahyn"},
["pse"] = {"Malayish Veanagh"},
["psg"] = {"Çhengey Chowree Penang"},
["psh"] = {"Pashai Heear Yiass", "Pashayi Heear Yiass"},
["psi"] = {"Pashai Hiar Yiass", "Pashayi Hiar Yiass"},
["psl"] = {"Çhengey Chowree Phurt-verçhagh"},
["psm"] = {"Pauserna"},
["psn"] = {"Panasuan"},
["pso"] = {"Çhengey Chowree Pholynnagh"},
["psp"] = {"Çhengey Chowree Philippeenagh"},
["psq"] = {"Pasi"},
["psr"] = {"Çhengey Chowree Phortiugagh"},
["pss"] = {"Kaulong"},
["pst"] = {"Pashtish Veanagh"},
["psu"] = {"Sauraseni Prākrit"},
["psw"] = {"Port Sandwich"},
["psy"] = {"Piscataway"},
["pta"] = {"Pai Tavytera"},
["pth"] = {"Pataxó Hã-Ha-Hãe"},
["pti"] = {"Pindiini", "Wangkatha"},
["ptn"] = {"Patanish"},
["pto"] = {"Zo'é"},
["ptp"] = {"Patep"},
["ptq"] = {"Pattapu"},
["ptr"] = {"Piamatsina"},
["ptt"] = {"Enrekang"},
["ptu"] = {"Bambam"},
["ptv"] = {"Port Vato"},
["ptw"] = {"Pentlatch"},
["pty"] = {"Pathiya"},
["pua"] = {"Purepecha Sleitoil Heear"},
["pub"] = {"Purum"},
["puc"] = {"Punan Merap"},
["pud"] = {"Punan Aput"},
["pue"] = {"Puelche"},
["puf"] = {"Punan Merah"},
["pug"] = {"Phuie"},
["pui"] = {"Puinave"},
["puj"] = {"Punan Tubu"},
["pum"] = {"Puma"},
["puo"] = {"Puoc"},
["pup"] = {"Pulabu"},
["puq"] = {"Puquina"},
["pur"] = {"Puruborá"},
["put"] = {"Putoh"},
["puu"] = {"Punu"},
["puw"] = {"Puluwatish"},
["pux"] = {"Puare"},
["puy"] = {"Purisimeño"},
["pwa"] = {"Pawaia"},
["pwb"] = {"Panawa"},
["pwg"] = {"Gapapaiwa"},
["pwi"] = {"Patwin"},
["pwm"] = {"Molbog"},
["pwn"] = {"Paiwan"},
["pwo"] = {"Karenish Heear Pwo"},
["pwr"] = {"Powari"},
["pww"] = {"Karenish Hwoaie Pwo"},
["pxm"] = {"Quetzaltepec Mixe"},
["pye"] = {"Pye Krumen"},
["pym"] = {"Fyam"},
["pyn"] = {"Poyanáwa"},
["pys"] = {"Çhengey Chowree Pharaguayagh", "Lengua de Señas del Paraguay"},
["pyu"] = {"Puyuma"},
["pyx"] = {"Pyu (Myanmar)"},
["pyy"] = {"Pyen"},
["pze"] = {"Pesse"},
["pzh"] = {"Pazeh"},
["pzn"] = {"Jejara Naga", "Para Naga"},
["qua"] = {"Quapaw"},
["qub"] = {"Quechua Huallaga Huánuco"},
["quc"] = {"K'iche'", "Quiché"},
["qud"] = {"Quichua Sleitoil Calderón"},
["quf"] = {"Quechua Lambayeque"},
["qug"] = {"Quichua Sleitoil Chimborazo"},
["quh"] = {"Quechua Voliviagh Yiass"},
["qui"] = {"Quileute"},
["quk"] = {"Quechua Chachapoyas"},
["qul"] = {"Quechua Voliviagh Hwoaie"},
["qum"] = {"Sipacapense"},
["qun"] = {"Quinault"},
["qup"] = {"Quechua Pastaza Yiass"},
["quq"] = {"Quinqui"},
["qur"] = {"Quechua Yanahuanca Pasco"},
["qus"] = {"Quichua Santiago del Estero"},
["quv"] = {"Sacapulteco"},
["quw"] = {"Quichua Injil Tena"},
["qux"] = {"Quechua Yauyos"},
["quy"] = {"Quechua Ayacucho"},
["quz"] = {"Quechua Cusco"},
["qva"] = {"Quechua Ambo-Pasco"},
["qvc"] = {"Quechua Cajamarca"},
["qve"] = {"Quechua Apurímac Hiar"},
["qvh"] = {"Quechua Huánaco Huamalíes-Dos de Mayo"},
["qvi"] = {"Quichua Sleitoil Imbabura"},
["qvj"] = {"Quichua Sleitoil Loja"},
["qvl"] = {"Quechua Lima Hwoaie Cajatambo"},
["qvm"] = {"Quechua Margos-Yarowilca-Lauricocha"},
["qvn"] = {"Quechua Junín Hwoaie"},
["qvo"] = {"Quechua Injil Napo"},
["qvp"] = {"Quechua Pacaraos"},
["qvs"] = {"Quechua San Martín"},
["qvw"] = {"Quechua Huaylla Wanca"},
["qvy"] = {"Queyu"},
["qvz"] = {"Quechua Pastaza Hwoaie"},
["qwa"] = {"Quechua Ancash Corongo"},
["qwc"] = {"Quechua Chlassicagh"},
["qwe"] = {"Quechuagh (kynney)"},
["qwh"] = {"Quechua Ancash Huaylas"},
["qwm"] = {"Kumanish (y Roosh)"},
["qws"] = {"Quechua Ancash Sihuas"},
["qwt"] = {"Kwalhioqua-Tlatskanai"},
["qxa"] = {"Quechua Ancash Chiquián"},
["qxc"] = {"Quechua Chincha"},
["qxh"] = {"Quechua Huánuco Panao"},
["qxl"] = {"Quechua Sleitoil Salasaca"},
["qxn"] = {"Quechua Ancash Conchucos Hwoaie"},
["qxo"] = {"Quechua Ancash Conchucos Yiass"},
["qxp"] = {"Quechua Puno"},
["qxq"] = {"Qashqa'i"},
["qxr"] = {"Quichua Sleitoil Cañar"},
["qxs"] = {"Qiang Yiass"},
["qxt"] = {"Quechua Pasco Santa Ana de Tusi"},
["qxu"] = {"Quechua Arequipa-La Unión"},
["qxw"] = {"Quechua Jauja Wanca"},
["qya"] = {"Quenya"},
["qyp"] = {"Quiripi"},
["raa"] = {"Dungmali"},
["rab"] = {"Camling"},
["rac"] = {"Rasawa"},
["rad"] = {"Rade"},
["raf"] = {"Meohang Heear"},
["rag"] = {"Logooli", "Lulogooli"},
["rah"] = {"Rabha"},
["rai"] = {"Ramoaaina"},
["raj"] = {"Rajasthanish"},
["rak"] = {"Tulu-Bohuai"},
["ral"] = {"Ralte"},
["ram"] = {"Canela"},
["ran"] = {"Riantana"},
["rao"] = {"Rao"},
["rap"] = {"Rapanui"},
["raq"] = {"Saam"},
["rar"] = {"Rarotongan", "Maorish Ellanyn Cook"},
["ras"] = {"Tegali"},
["rat"] = {"Razajerdi"},
["rau"] = {"Raute"},
["rav"] = {"Sampang"},
["raw"] = {"Rawang"},
["rax"] = {"Rang"},
["ray"] = {"Rapa"},
["raz"] = {"Rahambuu"},
["rbb"] = {"Rumai Palaung"},
["rbk"] = {"Bontok Hwoaie"},
["rbl"] = {"Miraya Bikol"},
["rbp"] = {"Barababaraba"},
["rcf"] = {"Creeole Frangish Réunion"},
["rdb"] = {"Rudbari"},
["rea"] = {"Rerau"},
["reb"] = {"Rembong"},
["ree"] = {"Rejang Kayan"},
["reg"] = {"Kara (Tanzania)"},
["rei"] = {"Reli"},
["rej"] = {"Rejang"},
["rel"] = {"Rendille"},
["rem"] = {"Remo"},
["ren"] = {"Rengao"},
["rer"] = {"Rer Bare"},
["res"] = {"Reshe"},
["ret"] = {"Retta"},
["rey"] = {"Reyesano"},
["rga"] = {"Roria"},
["rge"] = {"Greagish Romanagh"},
["rgk"] = {"Rangkas"},
["rgn"] = {"Romagnolish"},
["rgr"] = {"Resígaro"},
["rgs"] = {"Roglai Yiass"},
["rgu"] = {"Ringgou"},
["rhg"] = {"Rohingya"},
["rhp"] = {"Yahang"},
["ria"] = {"Riang (yn Injey)"},
["rib"] = {"Çhengey Chowree Bribri"},
["rif"] = {"Tarifit"},
["ril"] = {"Riang Lang", "Riang (Myanmar)"},
["rim"] = {"Nyaturu"},
["rin"] = {"Nungu"},
["rir"] = {"Ribun"},
["rit"] = {"Ritharrngu"},
["riu"] = {"Riung"},
["rjg"] = {"Rajong"},
["rji"] = {"Raji"},
["rjs"] = {"Rajbanshi"},
["rka"] = {"Kraol"},
["rkb"] = {"Rikbaktsa"},
["rkh"] = {"Rakahanga-Manihiki"},
["rki"] = {"Rakhine"},
["rkm"] = {"Marka"},
["rkt"] = {"Rangpuri", "Kamta"},
["rkw"] = {"Arakwal"},
["rma"] = {"Rama"},
["rmb"] = {"Rembarrnga"},
["rmc"] = {"Romanish Charpathagh"},
["rmd"] = {"Danvargish Romanagh"},
["rme"] = {"Baarle Romanagh"},
["rmf"] = {"Kaloromanish Innlynnagh"},
["rmg"] = {"Norlynnish Romanagh"},
["rmh"] = {"Murkim"},
["rmi"] = {"Lomavren"},
["rmk"] = {"Romkun"},
["rml"] = {"Romanish Valtagh"},
["rmm"] = {"Romanish"},
["rmn"] = {"Romanish Valkanagh"},
["rmo"] = {"Romanish Sinte"},
["rmp"] = {"Rempi"},
["rmq"] = {"Caló"},
["rms"] = {"Çhengey Chowree Romaanagh"},
["rmt"] = {"Domari"},
["rmu"] = {"Romanish Tavringagh"},
["rmv"] = {"Romanova"},
["rmw"] = {"Romanish Vretnagh"},
["rmx"] = {"Romam"},
["rmy"] = {"Romanish Vlax"},
["rmz"] = {"Marma"},
["rnb"] = {"Çhengey Chowree Brunca"},
["rnd"] = {"Ruund"},
["rng"] = {"Ronga"},
["rnl"] = {"Ranglong"},
["rnn"] = {"Roon"},
["rnp"] = {"Rongpo"},
["rnr"] = {"Nari Nari"},
["rnw"] = {"Rungwa"},
["roa"] = {"çhengaghyn Romansagh"},
["rob"] = {"Tae'"},
["roc"] = {"Cacgia Roglai"},
["rod"] = {"Rogo"},
["roe"] = {"Ronji"},
["rof"] = {"Rombo"},
["rog"] = {"Roglai Hwoaie"},
["rol"] = {"Romblomanon"},
["rom"] = {"Romanish"},
["roo"] = {"Rotokas"},
["rop"] = {"Kriol"},
["ror"] = {"Rongga"},
["rou"] = {"Runga"},
["row"] = {"Dela-Oenale"},
["rpn"] = {"Repanbitip"},
["rpt"] = {"Rapting"},
["rri"] = {"Ririo"},
["rro"] = {"Waima"},
["rrt"] = {"Arritinngithigh"},
["rsb"] = {"Serbish Romanagh"},
["rsk"] = {"Ruthenish", "Rusnak"},
["rsl"] = {"Çhengey Chowree Rooshagh"},
["rsm"] = {"Çhengey Chowree Miriwoong"},
["rsn"] = {"Çhengey Chowree Rooandagh"},
["rsw"] = {"Rishiwa"},
["rtc"] = {"Rungtu Chin"},
["rth"] = {"Ratahan"},
["rtm"] = {"Rotuman"},
["rts"] = {"Yuratsish"},
["rtw"] = {"Rathawi"},
["rub"] = {"Gungu"},
["ruc"] = {"Ruuli"},
["rue"] = {"Rusynish"},
["ruf"] = {"Luguru"},
["rug"] = {"Roviana"},
["ruh"] = {"Ruga"},
["rui"] = {"Rufiji"},
["ruk"] = {"Che"},
["ruo"] = {"Istro-Romaanish"},
["rup"] = {"Massado-Romaanish", "Aromaanish", "Arumaanish"},
["ruq"] = {"Megleno-Romaanish"},
["rut"] = {"Rutulish"},
["ruu"] = {"Lanas Lobu"},
["ruy"] = {"Mala (y Naigeer)"},
["ruz"] = {"Ruma"},
["rwa"] = {"Rawo"},
["rwk"] = {"Rwa"},
["rwl"] = {"Ruwila"},
["rwm"] = {"Amba (Oogandey)"},
["rwo"] = {"Rawa"},
["rwr"] = {"Marwari (yn Injey)"},
["rxd"] = {"Ngardi"},
["rxw"] = {"Karuwali", "Garuwali"},
["ryn"] = {"Amami-Oshima Hwoaie"},
["rys"] = {"Yaeyama"},
["ryu"] = {"Okinawish Veanagh"},
["rzh"] = {"Rāziḥī"},
["saa"] = {"Saba"},
["sab"] = {"Buglere"},
["sac"] = {"Meskwaki"},
["sad"] = {"Sandawe"},
["sae"] = {"Sabanê"},
["saf"] = {"Safaliba"},
["sah"] = {"Yakutish"},
["sai"] = {"çhengaghyn Injinagh Americaanagh Yiass"},
["saj"] = {"Sahu"},
["sak"] = {"Sake"},
["sal"] = {"çhengaghyn Salishanagh"},
["sam"] = {"Aramaaish Hamaaragh"},
["sao"] = {"Sause"},
["saq"] = {"Samburu"},
["sar"] = {"Saraveca"},
["sas"] = {"Sasak"},
["sat"] = {"Santali"},
["sau"] = {"Saleman"},
["sav"] = {"Saafi-Saafi"},
["saw"] = {"Sawi"},
["sax"] = {"Sa"},
["say"] = {"Saya"},
["saz"] = {"Saurashtra"},
["sba"] = {"Ngambay"},
["sbb"] = {"Simbo"},
["sbc"] = {"Kele (Papooey Guinea Noa)"},
["sbd"] = {"Samo Yiass"},
["sbe"] = {"Saliba"},
["sbf"] = {"Chabu", "Shabo"},
["sbg"] = {"Seget"},
["sbh"] = {"Sori-Harengan"},
["sbi"] = {"Seti"},
["sbj"] = {"Surbakhal"},
["sbk"] = {"Safwa"},
["sbl"] = {"Botolan Sambal"},
["sbm"] = {"Sagala"},
["sbn"] = {"Sindhi Bhil"},
["sbo"] = {"Sabüm"},
["sbp"] = {"Sangu (Tanzania)"},
["sbq"] = {"Sileibi"},
["sbr"] = {"Sembakung Murut"},
["sbs"] = {"Subiya"},
["sbt"] = {"Kimki"},
["sbu"] = {"Stod Bhoti"},
["sbv"] = {"Sabine"},
["sbw"] = {"Simba"},
["sbx"] = {"Seberuang"},
["sby"] = {"Soli"},
["sbz"] = {"Sara Kaba"},
["scb"] = {"Chut"},
["sce"] = {"Dongxiang"},
["scf"] = {"Creeole Frangish San Miguel"},
["scg"] = {"Sanggau"},
["sch"] = {"Sakachep"},
["sci"] = {"Creeole Malayish Sri Lanka"},
["sck"] = {"Sadri"},
["scl"] = {"Shina"},
["scn"] = {"Shisslish"},
["sco"] = {"Baarle Albinagh"},
["scp"] = {"Hyolmo", "Helambu Sherpa"},
["scq"] = {"Sa'och"},
["scs"] = {"Slavish Hwoaie"},
["sct"] = {"Katang Yiass"},
["scu"] = {"Shumcho"},
["scv"] = {"Sheni"},
["scw"] = {"Sha"},
["scx"] = {"Sicel"},
["sda"] = {"Toraja-Sa'dan"},
["sdb"] = {"Shabak"},
["sdc"] = {"Sardeenish Hassaragh"},
["sde"] = {"Surubu"},
["sdf"] = {"Sarli"},
["sdg"] = {"Savi"},
["sdh"] = {"Kurdish Yiass"},
["sdj"] = {"Suundi"},
["sdk"] = {"Sos Kundi"},
["sdl"] = {"Çhengey Chowree Arabagh Saudi"},
["sdn"] = {"Sardeenish Ghalluragh"},
["sdo"] = {"Bukar-Sadung Bidayuh"},
["sdp"] = {"Sherdukpen"},
["sdq"] = {"Semandang"},
["sdr"] = {"Oraon Sadri"},
["sds"] = {"Sened"},
["sdt"] = {"Shuadit"},
["sdu"] = {"Sarudu"},
["sdv"] = {"çhengaghyn Soodaanagh Hiar"},
["sdx"] = {"Sibu Melanau"},
["sdz"] = {"Sallands"},
["sea"] = {"Semai"},
["seb"] = {"Shempire Senoufo"},
["sec"] = {"Sechelt"},
["sed"] = {"Sedang"},
["see"] = {"Seneca"},
["sef"] = {"Cebaara Senoufo"},
["seg"] = {"Segeju"},
["seh"] = {"Sena"},
["sei"] = {"Seri"},
["sej"] = {"Sene"},
["sek"] = {"Sekani"},
["sel"] = {"Selkup"},
["sem"] = {"çhengaghyn Shemmagh"},
["sen"] = {"Nanerigé Sénoufo"},
["seo"] = {"Suarmin"},
["sep"] = {"Sìcìté Sénoufo"},
["seq"] = {"Senara Sénoufo"},
["ser"] = {"Serrano"},
["ses"] = {"Koyraboro Senni Songhai"},
["set"] = {"Sentani"},
["seu"] = {"Serui-Laut"},
["sev"] = {"Nyarafolo Senoufo"},
["sew"] = {"Sewa Bay"},
["sey"] = {"Secoya"},
["sez"] = {"Senthang Chin"},
["sfb"] = {"Langue des signes de Belgique Francophone", "Çhengey Chowree Rangee yn Velg"},
["sfe"] = {"Subanen Hiar"},
["sfm"] = {"Miaoish Veg-ornaidagh"},
["sfs"] = {"Çhengey Chowree yn Affrick Yiass"},
["sfw"] = {"Sehwi"},
["sga"] = {"Shenn Yernish (derrey 900)"},
["sgb"] = {"Mag-antsi Ayta"},
["sgc"] = {"Kipsigis"},
["sgd"] = {"Surigaonon"},
["sge"] = {"Segai"},
["sgg"] = {"Çhengey Chowree Ghermaanagh Elveeishagh"},
["sgh"] = {"Shughni"},
["sgi"] = {"Suga"},
["sgj"] = {"Surgujia"},
["sgk"] = {"Sangkong"},
["sgm"] = {"Singa"},
["sgn"] = {"Çhengaghyn cowree"},
["sgp"] = {"Singpho"},
["sgr"] = {"Sangisari"},
["sgs"] = {"Samogitish"},
["sgt"] = {"Brokpake"},
["sgu"] = {"Salas"},
["sgw"] = {"Sebat Bet Gurage"},
["sgx"] = {"Çhengey Chowree Sierra Leone"},
["sgy"] = {"Sanglechi"},
["sgz"] = {"Sursurunga"},
["sha"] = {"Shall-Zwall"},
["shb"] = {"Ninam"},
["shc"] = {"Sonde"},
["shd"] = {"Kundal Shahi"},
["she"] = {"Sheko"},
["shg"] = {"Shua"},
["shh"] = {"Shoshoni"},
["shi"] = {"Tachelhit"},
["shj"] = {"Shatt"},
["shk"] = {"Shilluk"},
["shl"] = {"Shendu"},
["shm"] = {"Shahrudi"},
["shn"] = {"Shan"},
["sho"] = {"Shanga"},
["shp"] = {"Shipibo-Conibo"},
["shq"] = {"Sala"},
["shr"] = {"Shi"},
["shs"] = {"Shuswap"},
["sht"] = {"Shasta"},
["shu"] = {"Arabish Hadagh"},
["shv"] = {"Shehri"},
["shw"] = {"Shwai"},
["shx"] = {"She"},
["shy"] = {"Tachawit"},
["shz"] = {"Syenara Senoufo"},
["sia"] = {"Saamish Akkala"},
["sib"] = {"Sebop"},
["sid"] = {"Sidamo"},
["sie"] = {"Simaa"},
["sif"] = {"Siamou"},
["sig"] = {"Paasaal"},
["sih"] = {"Zire", "Sîshëë"},
["sii"] = {"Shom Peng"},
["sij"] = {"Numbami"},
["sik"] = {"Sikiana"},
["sil"] = {"Tumulung Sisaala"},
["sim"] = {"Mende (Papooey Guinea Noa)"},
["sio"] = {"çhengaghyn Siouagh"},
["sip"] = {"Sikkimish"},
["siq"] = {"Sonia"},
["sir"] = {"Siri"},
["sis"] = {"Siuslaw"},
["sit"] = {"çhengaghyn Sheen-Tibetagh"},
["siu"] = {"Sinagen"},
["siv"] = {"Sumariup"},
["siw"] = {"Siwai"},
["six"] = {"Sumau"},
["siy"] = {"Sivandi"},
["siz"] = {"Siwi"},
["sja"] = {"Epena"},
["sjb"] = {"Sajau Basap"},
["sjd"] = {"Saamish Kildin"},
["sje"] = {"Saamish Pite"},
["sjg"] = {"Assangori"},
["sjk"] = {"Saamish Kemi"},
["sjl"] = {"Sajalong", "Miji"},
["sjm"] = {"Mapun"},
["sjn"] = {"Sindarin"},
["sjo"] = {"Xibe"},
["sjp"] = {"Surjapuri"},
["sjr"] = {"Siar-Lak"},
["sjs"] = {"Senhaja De Srair"},
["sjt"] = {"Saamish Ter"},
["sju"] = {"Saamish Ume"},
["sjw"] = {"Shawneeish"},
["ska"] = {"Skagit"},
["skb"] = {"Saek"},
["skc"] = {"Ma Manda"},
["skd"] = {"Miwokish Sierra Yiass"},
["ske"] = {"Seke (Vanuatu)"},
["skf"] = {"Sakirabiá"},
["skg"] = {"Malagasish Sakalava"},
["skh"] = {"Sikule"},
["ski"] = {"Sika"},
["skj"] = {"Seke (Nepaal)"},
["skm"] = {"Kutong"},
["skn"] = {"Kolibugan Subanon"},
["sko"] = {"Seko Tengah"},
["skp"] = {"Sekapan"},
["skq"] = {"Sininkere"},
["skr"] = {"Saraiki", "Seraiki"},
["sks"] = {"Maia"},
["skt"] = {"Sakata"},
["sku"] = {"Sakao"},
["skv"] = {"Skou"},
["skw"] = {"Creeole Ollanish Skepi"},
["skx"] = {"Seko Padang"},
["sky"] = {"Sikaiana"},
["skz"] = {"Sekar"},
["sla"] = {"çhengaghyn Slavagh"},
["slc"] = {"Sáliba"},
["sld"] = {"Sissala"},
["sle"] = {"Sholaga"},
["slf"] = {"Çhengey Chowree Iddaalagh Elveeishagh"},
["slg"] = {"Selungai Murut"},
["slh"] = {"Salish Yiass Puget Sound"},
["sli"] = {"Sileeshish Eeghtyragh"},
["slj"] = {"Salumá"},
["sll"] = {"Salt-Yui"},
["slm"] = {"Pangutaran Sama"},
["sln"] = {"Salinan"},
["slp"] = {"Lamaholot"},
["slr"] = {"Salar"},
["sls"] = {"Çhengey Chowree Singapore"},
["slt"] = {"Sila"},
["slu"] = {"Selaru"},
["slw"] = {"Sialum"},
["slx"] = {"Salampasu"},
["sly"] = {"Selayar"},
["slz"] = {"Ma'ya"},
["sma"] = {"Saamish Yiass"},
["smb"] = {"Simbari"},
["smc"] = {"Som"},
["smf"] = {"Auwe"},
["smg"] = {"Simbali"},
["smh"] = {"Samei"},
["smi"] = {"çhengaghyn Saamagh"},
["smj"] = {"Saamish Lule"},
["smk"] = {"Bolinao"},
["sml"] = {"Sama Veanagh"},
["smm"] = {"Musasa"},
["smn"] = {"Saamish Inari"},
["smp"] = {"Samaarish"},
["smq"] = {"Samo"},
["smr"] = {"Simeulue"},
["sms"] = {"Saamish Skolt"},
["smt"] = {"Simte"},
["smu"] = {"Somray"},
["smv"] = {"Samvedi"},
["smw"] = {"Sumbawa"},
["smx"] = {"Samba"},
["smy"] = {"Semnani"},
["smz"] = {"Simeku"},
["snc"] = {"Sinaugoro"},
["sne"] = {"Bau Bidayuh"},
["snf"] = {"Noon"},
["sng"] = {"Sanga (Pobblaght Gheynlagh y Chongo)"},
["sni"] = {"Sensi"},
["snj"] = {"Riverain Sango"},
["snk"] = {"Soninke"},
["snl"] = {"Sangil"},
["snm"] = {"Ma'di Yiass"},
["snn"] = {"Siona"},
["sno"] = {"Snohomish"},
["snp"] = {"Siane"},
["snq"] = {"Sangu (Gabon)"},
["snr"] = {"Sihan"},
["sns"] = {"South West Bay", "Nahavaq"},
["snu"] = {"Senggi", "Viid"},
["snv"] = {"Sa'ban"},
["snw"] = {"Selee"},
["snx"] = {"Sam"},
["sny"] = {"Saniyo-Hiyewe"},
["snz"] = {"Kou"},
["soa"] = {"Song Thai"},
["sob"] = {"Sobei"},
["soc"] = {"So (Pobblaght Gheynlagh y Chongo)"},
["sod"] = {"Songoora"},
["soe"] = {"Songomeno"},
["sog"] = {"Sogdish"},
["soh"] = {"Aka"},
["soi"] = {"Sonha"},
["soj"] = {"Soi"},
["sok"] = {"Sokoro"},
["sol"] = {"Solos"},
["son"] = {"çhengaghyn Songhai"},
["soo"] = {"Songo"},
["sop"] = {"Songe"},
["soq"] = {"Kanasi"},
["sor"] = {"Somrai"},
["sos"] = {"Seeku"},
["sou"] = {"Thai Yiass"},
["sov"] = {"Sonsorol"},
["sow"] = {"Sowanda"},
["sox"] = {"Swo"},
["soy"] = {"Miyobe"},
["soz"] = {"Temi"},
["spb"] = {"Sepa (yn Indoneesh)"},
["spc"] = {"Sapé"},
["spd"] = {"Saep"},
["spe"] = {"Sepa (Papooey Guinea Noa)"},
["spg"] = {"Sian"},
["spi"] = {"Saponi"},
["spk"] = {"Sengo"},
["spl"] = {"Selepet"},
["spm"] = {"Akukem"},
["spn"] = {"Sanapaná"},
["spo"] = {"Spokane"},
["spp"] = {"Supyire Senoufo"},
["spq"] = {"Spaainish Loreto-Ucayali"},
["spr"] = {"Saparua"},
["sps"] = {"Saposa"},
["spt"] = {"Spiti Bhoti"},
["spu"] = {"Sapuan"},
["spv"] = {"Sambalpuri", "Kosli"},
["spx"] = {"Picenish Yiass"},
["spy"] = {"Sabaot"},
["sqa"] = {"Shama-Sambuga"},
["sqh"] = {"Shau"},
["sqj"] = {"çhengaghyn Albaanagh"},
["sqk"] = {"Çhengey Chowree Albaanagh"},
["sqm"] = {"Suma"},
["sqn"] = {"Susquehannock"},
["sqo"] = {"Sorkhei"},
["sqq"] = {"Sou"},
["sqr"] = {"Arabish Hisslagh"},
["sqs"] = {"Çhengey Chowree Sri Lanka"},
["sqt"] = {"Soqotri"},
["squ"] = {"Squamish"},
["sqx"] = {"Çhengey Chowree Kufr Qassem (KQSL)"},
["sra"] = {"Saruga"},
["srb"] = {"Sora"},
["src"] = {"Sardeenish Logudoragh"},
["sre"] = {"Sara"},
["srf"] = {"Nafi"},
["srg"] = {"Sulod"},
["srh"] = {"Sarikoli"},
["sri"] = {"Siriano"},
["srk"] = {"Serudung Murut"},
["srl"] = {"Isirawa"},
["srm"] = {"Saramaccan"},
["srn"] = {"Sranan Tongo"},
["sro"] = {"Sardeenish Campidanagh"},
["srq"] = {"Sirionó"},
["srr"] = {"Serer"},
["srs"] = {"Sarsi"},
["srt"] = {"Sauri"},
["sru"] = {"Suruí"},
["srv"] = {"Sorsoganon Yiass"},
["srw"] = {"Serua"},
["srx"] = {"Sirmauri"},
["sry"] = {"Sera"},
["srz"] = {"Shahmirzadi"},
["ssa"] = {"çhengaghyn Neelagh-Saharagh"},
["ssb"] = {"Sama Yiass"},
["ssc"] = {"Suba-Simbiti"},
["ssd"] = {"Siroi"},
["sse"] = {"Balangingi", "Bangingih Sama"},
["ssf"] = {"Thao"},
["ssg"] = {"Seimat"},
["ssh"] = {"Arabish Shihhi"},
["ssi"] = {"Sansi"},
["ssj"] = {"Sausi"},
["ssk"] = {"Sunam"},
["ssl"] = {"Sisaala Heear"},
["ssm"] = {"Semnam"},
["ssn"] = {"Waata"},
["sso"] = {"Sissano"},
["ssp"] = {"Çhengey Chowree Spaainagh"},
["ssq"] = {"So'a"},
["ssr"] = {"Çhengey Chowree Rangagh Elveeishagh"},
["sss"] = {"Sô"},
["sst"] = {"Sinasina"},
["ssu"] = {"Susuami"},
["ssv"] = {"Shark Bay"},
["ssx"] = {"Samberigi"},
["ssy"] = {"Saho"},
["ssz"] = {"Sengseng"},
["sta"] = {"Settla"},
["stb"] = {"Subanen Hwoaie"},
["std"] = {"Sentinel"},
["ste"] = {"Liana-Seti"},
["stf"] = {"Seta"},
["stg"] = {"Trieng"},
["sth"] = {"Shelta"},
["sti"] = {"Bulo Stieng"},
["stj"] = {"Matya Samo"},
["stk"] = {"Arammba"},
["stl"] = {"Stellingwerfs"},
["stm"] = {"Setaman"},
["stn"] = {"Owa"},
["sto"] = {"Stonish"},
["stp"] = {"Tepehuan Hiar Yiass"},
["stq"] = {"Saterfriesisch"},
["str"] = {"Salish ny Keyllyssyn"},
["sts"] = {"Shumashti"},
["stt"] = {"Budeh Stieng"},
["stu"] = {"Samtao"},
["stv"] = {"Silt'e"},
["stw"] = {"Satawalish"},
["sty"] = {"Tatarish Hibbeyragh"},
["sua"] = {"Sulka"},
["sub"] = {"Suku"},
["suc"] = {"Subanon Heear"},
["sue"] = {"Suena"},
["sug"] = {"Suganga"},
["sui"] = {"Suki"},
["suj"] = {"Shubi"},
["suk"] = {"Sukuma"},
["suo"] = {"Bouni"},
["suq"] = {"Tirmaga-Chai Suri", "Suri"},
["sur"] = {"Mwaghavul"},
["sus"] = {"Susu"},
["sut"] = {"Subtiaba"},
["suv"] = {"Puroik"},
["suw"] = {"Sumbwa"},
["sux"] = {"Sumerish"},
["suy"] = {"Suyá"},
["suz"] = {"Sunwar"},
["sva"] = {"Svan"},
["svb"] = {"Ulau-Suain"},
["svc"] = {"Creeole Baarle Winsenagh"},
["sve"] = {"Serili"},
["svk"] = {"Çhengey Chowree Slovackagh"},
["svm"] = {"Slavomolisano"},
["svs"] = {"Savosavo"},
["svx"] = {"Skalvish"},
["swb"] = {"Comoroish Maore"},
["swc"] = {"Swahili yn Chongo"},
["swf"] = {"Sere"},
["swg"] = {"Swabish"},
["swh"] = {"Swahili (çhengey er lheh)", "Kiswahili"},
["swi"] = {"Sui"},
["swj"] = {"Sira"},
["swk"] = {"Malawi Sena"},
["swl"] = {"Çhengey Chowree Hoolynnagh"},
["swm"] = {"Samosa"},
["swn"] = {"Sawknah"},
["swo"] = {"Shanenawa"},
["swp"] = {"Suau"},
["swq"] = {"Sharwa"},
["swr"] = {"Saweru"},
["sws"] = {"Seluwasan"},
["swt"] = {"Sawila"},
["swu"] = {"Suwawa"},
["swv"] = {"Shekhawati"},
["sww"] = {"Sowa"},
["swx"] = {"Suruahá"},
["swy"] = {"Sarua"},
["sxb"] = {"Suba"},
["sxc"] = {"Sicanish"},
["sxe"] = {"Sighu"},
["sxg"] = {"Shuhi", "Shixing"},
["sxk"] = {"Kalapuya Yiass"},
["sxl"] = {"Selian"},
["sxm"] = {"Samre"},
["sxn"] = {"Sangir"},
["sxo"] = {"Sorothaptish"},
["sxr"] = {"Saaroa"},
["sxs"] = {"Sasaru"},
["sxu"] = {"Saxonish Eaghtyragh"},
["sxw"] = {"Saxwe Gbe"},
["sya"] = {"Siang"},
["syb"] = {"Subanen Veanagh"},
["syc"] = {"Seerish Chlassicagh"},
["syd"] = {"çhengaghyn Samoyedagh"},
["syi"] = {"Seki"},
["syk"] = {"Sukur"},
["syl"] = {"Sylheti"},
["sym"] = {"Maya Samo"},
["syn"] = {"Senaya"},
["syo"] = {"Suoy"},
["syr"] = {"Seerish"},
["sys"] = {"Sinyar"},
["syw"] = {"Kagate"},
["syx"] = {"Samay"},
["syy"] = {"Çhengey Chowree ny Bedouin Al-Sayyid"},
["sza"] = {"Semelai"},
["szb"] = {"Ngalum"},
["szc"] = {"Semaq Beri"},
["sze"] = {"Seze"},
["szg"] = {"Sengele"},
["szl"] = {"Sileeshish"},
["szn"] = {"Sula"},
["szp"] = {"Suabo"},
["szs"] = {"Çhengey Chowree Ellanyn Solomon"},
["szv"] = {"Isu (Rheynn Fako)"},
["szw"] = {"Sawai"},
["szy"] = {"Sakizaya"},
["taa"] = {"Tanana Eeghtyragh"},
["tab"] = {"Tabassaranish"},
["tac"] = {"Tarahumara Injil"},
["tad"] = {"Tause"},
["tae"] = {"Tariana"},
["taf"] = {"Tapirapé"},
["tag"] = {"Tagoi"},
["tai"] = {"çhengaghyn Tai"},
["taj"] = {"Tamang Hiar"},
["tak"] = {"Tala"},
["tal"] = {"Tal"},
["tan"] = {"Tangale"},
["tao"] = {"Yami"},
["tap"] = {"Taabwa"},
["taq"] = {"Tamasheq"},
["tar"] = {"Tarahumara Veanagh"},
["tas"] = {"Tay Boi"},
["tau"] = {"Tanana Eaghtyragh"},
["tav"] = {"Tatuyo"},
["taw"] = {"Tai"},
["tax"] = {"Tamki"},
["tay"] = {"Atayal"},
["taz"] = {"Tocho"},
["tba"] = {"Aikanã"},
["tbc"] = {"Takia"},
["tbd"] = {"Kaki Ae"},
["tbe"] = {"Tanimbili"},
["tbf"] = {"Mandara"},
["tbg"] = {"Tairora Hwoaie"},
["tbh"] = {"Dharawal", "Thurawal"},
["tbi"] = {"Gaam"},
["tbj"] = {"Tiang"},
["tbk"] = {"Calamian Tagbanwa"},
["tbl"] = {"Tboli"},
["tbm"] = {"Tagbu"},
["tbn"] = {"Barro Negro Tunebo"},
["tbo"] = {"Tawala"},
["tbp"] = {"Taworta", "Diebroud"},
["tbq"] = {"çhengaghyn Tibetagh-Burmagh"},
["tbr"] = {"Tumtum"},
["tbs"] = {"Tanguat"},
["tbt"] = {"Tembo (Kitembo)"},
["tbu"] = {"Tubar"},
["tbv"] = {"Tobo"},
["tbw"] = {"Tagbanwa"},
["tbx"] = {"Kapin"},
["tby"] = {"Tabaru"},
["tbz"] = {"Ditammari"},
["tca"] = {"Ticuna"},
["tcb"] = {"Tanacross"},
["tcc"] = {"Datooga"},
["tcd"] = {"Tafi"},
["tce"] = {"Tutchone Yiass"},
["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"},
["tcg"] = {"Tamagario"},
["tch"] = {"Creeole Baarle ny Turkee as Caicos"},
["tci"] = {"Wára"},
["tck"] = {"Tchitchege"},
["tcl"] = {"Taman (Myanmar)"},
["tcm"] = {"Tanahmerah"},
["tcn"] = {"Tichurong"},
["tco"] = {"Taungyo"},
["tcp"] = {"Tawr Chin"},
["tcq"] = {"Kaiy"},
["tcs"] = {"Creeole Keyllys Torres", "Yumplatok"},
["tct"] = {"T'en"},
["tcu"] = {"Tarahumara Hiar Yiass"},
["tcw"] = {"Totonac Tecpatlán"},
["tcx"] = {"Toda"},
["tcy"] = {"Tulu"},
["tcz"] = {"Chinish Thado"},
["tda"] = {"Tagdal"},
["tdb"] = {"Panchpargania"},
["tdc"] = {"Emberá-Tadó"},
["tdd"] = {"Tai Nüa"},
["tde"] = {"Tiranige Diga Dogon"},
["tdf"] = {"Talieng"},
["tdg"] = {"Tamang Heear"},
["tdh"] = {"Thulung"},
["tdi"] = {"Tomadino"},
["tdj"] = {"Tajio"},
["tdk"] = {"Tambas"},
["tdl"] = {"Sur"},
["tdm"] = {"Taruma"},
["tdn"] = {"Tondano"},
["tdo"] = {"Teme"},
["tdq"] = {"Tita"},
["tdr"] = {"Todrah"},
["tds"] = {"Doutai"},
["tdt"] = {"Tetun Dili"},
["tdv"] = {"Toro"},
["tdx"] = {"Malagasish Tandroy-Mahafaly"},
["tdy"] = {"Tadyawan"},
["tea"] = {"Temiar"},
["teb"] = {"Tetete"},
["tec"] = {"Terik"},
["ted"] = {"Tepo Krumen"},
["tee"] = {"Huehuetla Tepehua"},
["tef"] = {"Teressa"},
["teg"] = {"Teke-Tege"},
["teh"] = {"Tehuelçhish"},
["tei"] = {"Torricelli"},
["tek"] = {"Ibali Teke"},
["tem"] = {"Timne"},
["ten"] = {"Tama (y Cholombey)"},
["teo"] = {"Teso"},
["tep"] = {"Tepecano"},
["teq"] = {"Temein"},
["ter"] = {"Tereno"},
["tes"] = {"Tengger"},
["tet"] = {"Tetum"},
["teu"] = {"Soo"},
["tev"] = {"Teor"},
["tew"] = {"Tewa (SUA)"},
["tex"] = {"Tennet"},
["tey"] = {"Tulishi"},
["tez"] = {"Tetserret"},
["tfi"] = {"Tofin Gbe"},
["tfn"] = {"Tanaina"},
["tfo"] = {"Tefaro"},
["tfr"] = {"Teribe"},
["tft"] = {"Ternate"},
["tga"] = {"Sagalla"},
["tgb"] = {"Tobilung"},
["tgc"] = {"Tigak"},
["tgd"] = {"Ciwogai"},
["tge"] = {"Tamang Hiar Gorkha"},
["tgf"] = {"Chalikha"},
["tgh"] = {"Creeole Baarle Tobago"},
["tgi"] = {"Lawunuia"},
["tgj"] = {"Tagin"},
["tgn"] = {"Tandaganon"},
["tgo"] = {"Sudest"},
["tgp"] = {"Tangoa"},
["tgq"] = {"Tring"},
["tgr"] = {"Tareng"},
["tgs"] = {"Nume"},
["tgt"] = {"Tagbanwa Veanagh"},
["tgu"] = {"Tanggu"},
["tgv"] = {"Tingui-Boto"},
["tgw"] = {"Tagwana Senoufo"},
["tgx"] = {"Tagish"},
["tgy"] = {"Togoyo"},
["tgz"] = {"Tagalaka"},
["thd"] = {"Kuuk Thaayorre", "Thayore"},
["the"] = {"Chitwania Tharu"},
["thf"] = {"Thangmi"},
["thh"] = {"Tarahumara Hwoaie"},
["thi"] = {"Tai Long"},
["thk"] = {"Tharaka", "Kitharaka"},
["thl"] = {"Dangaura Tharu"},
["thm"] = {"Aheu"},
["thn"] = {"Thachanadan"},
["thp"] = {"Thompson"},
["thq"] = {"Kochila Tharu"},
["thr"] = {"Rana Tharu"},
["ths"] = {"Thakali"},
["tht"] = {"Tahltan"},
["thu"] = {"Thuri"},
["thv"] = {"Tahaggart Tamahaq"},
["thy"] = {"Tha"},
["thz"] = {"Tayart Tamajeq"},
["tia"] = {"Tamazight Tidikelt"},
["tic"] = {"Tira"},
["tif"] = {"Tifal"},
["tig"] = {"Tigre"},
["tih"] = {"Timugon Murut"},
["tii"] = {"Tiene"},
["tij"] = {"Tilung"},
["tik"] = {"Tikar"},
["til"] = {"Tillamook"},
["tim"] = {"Timbe"},
["tin"] = {"Tindi"},
["tio"] = {"Teop"},
["tip"] = {"Trimuris"},
["tiq"] = {"Tiéfo"},
["tis"] = {"Masadiit Itneg"},
["tit"] = {"Tinigua"},
["tiu"] = {"Adasen"},
["tiv"] = {"Tiv"},
["tiw"] = {"Tiwi"},
["tix"] = {"Tiwa Yiass"},
["tiy"] = {"Tiruray"},
["tiz"] = {"Tai Hongjin"},
["tja"] = {"Tajuasohn"},
["tjg"] = {"Tunjung"},
["tji"] = {"Tujia Hwoaie"},
["tjj"] = {"Tjungundji"},
["tjl"] = {"Tai Laing"},
["tjm"] = {"Timucua"},
["tjn"] = {"Tonjon"},
["tjo"] = {"Tamazight Témacine"},
["tjp"] = {"Tjupany"},
["tjs"] = {"Tujia Yiass"},
["tju"] = {"Tjurruru"},
["tjw"] = {"Djabwurrung"},
["tka"] = {"Truká"},
["tkb"] = {"Buksa"},
["tkd"] = {"Tukudede"},
["tke"] = {"Takwane"},
["tkf"] = {"Tukumanféd"},
["tkg"] = {"Malagasish Tesaka"},
["tkl"] = {"Tokelauish"},
["tkm"] = {"Takelma"},
["tkn"] = {"Toku-No-Shima"},
["tkp"] = {"Tikopia"},
["tkq"] = {"Tee"},
["tkr"] = {"Tsakhurish"},
["tks"] = {"Takestaanish"},
["tkt"] = {"Kathoriya Tharu"},
["tku"] = {"Totonac Necaxa Heose"},
["tkv"] = {"Mur Pano"},
["tkw"] = {"Teanu"},
["tkx"] = {"Tangko"},
["tkz"] = {"Takua"},
["tla"] = {"Tepehuan Heear Yiass"},
["tlb"] = {"Tobelo"},
["tlc"] = {"Totonac Yecuatla"},
["tld"] = {"Talaud"},
["tlf"] = {"Telefol"},
["tlg"] = {"Tofanma"},
["tlh"] = {"Klingon", "tlhIngan Hol"},
["tli"] = {"Tlingit"},
["tlj"] = {"Talinga-Bwisi"},
["tlk"] = {"Taloki"},
["tll"] = {"Tetela"},
["tlm"] = {"Tolomako"},
["tln"] = {"Talondo'"},
["tlo"] = {"Talodi"},
["tlp"] = {"Totonac Filomena Mata-Coahuitlán"},
["tlq"] = {"Tai Loi"},
["tlr"] = {"Talise"},
["tls"] = {"Tambotalo"},
["tlt"] = {"Sou Nama", "Teluti"},
["tlu"] = {"Tulehu"},
["tlv"] = {"Taliabu"},
["tlx"] = {"Khehek"},
["tly"] = {"Talysh"},
["tma"] = {"Tama (Shad)"},
["tmb"] = {"Katbol", "Avava"},
["tmc"] = {"Tumak"},
["tmd"] = {"Haruai"},
["tme"] = {"Tremembé"},
["tmf"] = {"Toba-Maskoy"},
["tmg"] = {"Ternateño"},
["tmh"] = {"Tamashek"},
["tmi"] = {"Tutuba"},
["tmj"] = {"Samarokena"},
["tml"] = {"Tamnim Citak"},
["tmm"] = {"Tai Thanh"},
["tmn"] = {"Taman (yn Indoneesh)"},
["tmo"] = {"Temoq"},
["tmq"] = {"Tumleo"},
["tmr"] = {"Aramaaish Vabylonagh Ewagh (ca. 200-1200 BNJ)"},
["tms"] = {"Tima"},
["tmt"] = {"Tasmate"},
["tmu"] = {"Iau"},
["tmv"] = {"Tembo (Motembo)"},
["tmw"] = {"Temuan"},
["tmy"] = {"Tami"},
["tmz"] = {"Tamanaku"},
["tna"] = {"Tacana"},
["tnb"] = {"Tunebo Heear"},
["tnc"] = {"Tanimuca-Retuarã"},
["tnd"] = {"Angosturas Tunebo"},
["tng"] = {"Tobanga"},
["tnh"] = {"Maiani"},
["tni"] = {"Tandia"},
["tnk"] = {"Kwamera"},
["tnl"] = {"Lenakel"},
["tnm"] = {"Tabla"},
["tnn"] = {"Tanna Hwoaie"},
["tno"] = {"Toromono"},
["tnp"] = {"Whitesands"},
["tnq"] = {"Taino"},
["tnr"] = {"Ménik"},
["tns"] = {"Tenis"},
["tnt"] = {"Tontemboan"},
["tnu"] = {"Tay Khang"},
["tnv"] = {"Tangchangya"},
["tnw"] = {"Tonsawang"},
["tnx"] = {"Tanema"},
["tny"] = {"Tongwe"},
["tnz"] = {"Ten'edn"},
["tob"] = {"Toba"},
["toc"] = {"Totonac Coyutla"},
["tod"] = {"Toma"},
["tof"] = {"Gizrra"},
["tog"] = {"Tonga (Nyasa)"},
["toh"] = {"Gitonga"},
["toi"] = {"Tonga (y Tambia)"},
["toj"] = {"Tojolabal"},
["tok"] = {"Toki Pona"},
["tol"] = {"Tolowa"},
["tom"] = {"Tombulu"},
["too"] = {"Totonac Xicotepec De Juárez"},
["top"] = {"Totonac Papantla"},
["toq"] = {"Toposa"},
["tor"] = {"Togbo-Vara Banda"},
["tos"] = {"Totonac Sleitoil"},
["tou"] = {"Tho"},
["tov"] = {"Taromi Eaghtyragh"},
["tow"] = {"Jemez"},
["tox"] = {"Tobian"},
["toy"] = {"Topoiyo"},
["toz"] = {"To"},
["tpa"] = {"Taupota"},
["tpc"] = {"Me'phaa Azoyú", "Tlapanec Azoyú"},
["tpe"] = {"Tippera"},
["tpf"] = {"Tarpia"},
["tpg"] = {"Kula"},
["tpi"] = {"Tok Pisin"},
["tpj"] = {"Tapieté"},
["tpk"] = {"Tupinikin"},
["tpl"] = {"Me'phaa Tlacoapa", "Tlapanec Tlacoapa"},
["tpm"] = {"Tampulma"},
["tpn"] = {"Tupinambá"},
["tpo"] = {"Tai Pao"},
["tpp"] = {"Tepehua Pisaflores"},
["tpq"] = {"Tukpa"},
["tpr"] = {"Tuparí"},
["tpt"] = {"Tepehua Tlachichilco"},
["tpu"] = {"Tampuan"},
["tpv"] = {"Tanapag"},
["tpx"] = {"Me'phaa Acatepec", "Tlapanec Acatepec"},
["tpy"] = {"Trumai"},
["tpz"] = {"Tinputz"},
["tqb"] = {"Tembé"},
["tql"] = {"Lehali"},
["tqm"] = {"Turumsa"},
["tqn"] = {"Tenino"},
["tqo"] = {"Toaripi"},
["tqp"] = {"Tomoip"},
["tqq"] = {"Tunni"},
["tqr"] = {"Torona"},
["tqt"] = {"Totonac Heear"},
["tqu"] = {"Touo"},
["tqw"] = {"Tonkawa"},
["tra"] = {"Tirahi"},
["trb"] = {"Terebu"},
["trc"] = {"Copala Triqui"},
["trd"] = {"Turi"},
["tre"] = {"Tarangan Hiar"},
["trf"] = {"Creeole Baarle Trinaidagh"},
["trg"] = {"Lishán Didán"},
["trh"] = {"Turaka"},
["tri"] = {"Trió"},
["trj"] = {"Toram"},
["trk"] = {"çhengaghyn Turkagh"},
["trl"] = {"Albinish Romanagh"},
["trm"] = {"Tregami"},
["trn"] = {"Trinitario"},
["tro"] = {"Tarao Naga"},
["trp"] = {"Kok Borok"},
["trq"] = {"Triqui San Martín Itunyoso"},
["trr"] = {"Taushiro"},
["trs"] = {"Triqui Chicahuaxtla"},
["trt"] = {"Tunggare"},
["tru"] = {"Turoyo", "Surayt"},
["trv"] = {"Sediq", "Seediq", "Taroko"},
["trw"] = {"Torwali"},
["trx"] = {"Bidayuh Tringgus-Sembaan"},
["try"] = {"Turung"},
["trz"] = {"Torá"},
["tsa"] = {"Tsaangi"},
["tsb"] = {"Tsamai"},
["tsc"] = {"Tswa"},
["tsd"] = {"Tsakonish"},
["tse"] = {"Çhengey Chowree Hooneeshagh"},
["tsg"] = {"Tausug"},
["tsh"] = {"Tsuvan"},
["tsi"] = {"Tsimshian"},
["tsj"] = {"Tshangla"},
["tsk"] = {"Tseku"},
["tsl"] = {"Ts'ün-Lao"},
["tsm"] = {"Çhengey Chowree Hurkagh", "Türk İşaret Dili"},
["tsp"] = {"Tusya Hwoaie"},
["tsq"] = {"Çhengey Chowree Thai"},
["tsr"] = {"Akei"},
["tss"] = {"Çhengey Chowree Haiwaanagh"},
["tst"] = {"Tondi Songway Kiini"},
["tsu"] = {"Tsou"},
["tsv"] = {"Tsogo"},
["tsw"] = {"Tsishingini"},
["tsx"] = {"Mubami"},
["tsy"] = {"Çhengey Chowree Tebul"},
["tsz"] = {"Purepecha"},
["tta"] = {"Tutelo"},
["ttb"] = {"Gaa"},
["ttc"] = {"Tektiteko"},
["ttd"] = {"Tauade"},
["tte"] = {"Bwanabwana"},
["ttf"] = {"Tuotomb"},
["ttg"] = {"Tutong"},
["tth"] = {"Ta'oih Heose"},
["tti"] = {"Tobati"},
["ttj"] = {"Tooro"},
["ttk"] = {"Totoro"},
["ttl"] = {"Totela"},
["ttm"] = {"Tutchone Hwoaie"},
["ttn"] = {"Towei"},
["tto"] = {"Ta'oih Injil"},
["ttp"] = {"Tombelala"},
["ttq"] = {"Tamajaq Tawallammat"},
["ttr"] = {"Tera"},
["tts"] = {"Thai Hiar Hwoaie"},
["ttt"] = {"Tatish Voslymagh"},
["ttu"] = {"Torau"},
["ttv"] = {"Titan"},
["ttw"] = {"Long Wat"},
["tty"] = {"Sikaritai"},
["ttz"] = {"Tsum"},
["tua"] = {"Wiarumus"},
["tub"] = {"Tübatulabal"},
["tuc"] = {"Mutu"},
["tud"] = {"Tuxá"},
["tue"] = {"Tuyuca"},
["tuf"] = {"Tunebo Veanagh"},
["tug"] = {"Tunia"},
["tuh"] = {"Taulil"},
["tui"] = {"Tupuri"},
["tuj"] = {"Tugutil"},
["tul"] = {"Tula"},
["tum"] = {"Tumbukish"},
["tun"] = {"Tunica"},
["tuo"] = {"Tucano"},
["tup"] = {"çhengaghyn Tupi"},
["tuq"] = {"Tedaga"},
["tus"] = {"Tuscarora"},
["tut"] = {"çhengaghyn Altaiagh"},
["tuu"] = {"Tututni"},
["tuv"] = {"Turkana"},
["tuw"] = {"çhengaghyn Tungusagh"},
["tux"] = {"Tuxináwa"},
["tuy"] = {"Tugen"},
["tuz"] = {"Turka"},
["tva"] = {"Vaghua"},
["tvd"] = {"Tsuvadi"},
["tve"] = {"Te'un"},
["tvi"] = {"Tulai"},
["tvk"] = {"Ambrym Hiar Yiass"},
["tvl"] = {"Tuvalu"},
["tvm"] = {"Tela-Masbuar"},
["tvn"] = {"Tavoyan"},
["tvo"] = {"Tidore"},
["tvs"] = {"Taveta"},
["tvt"] = {"Naga Tutsa"},
["tvu"] = {"Tunen"},
["tvw"] = {"Sedoa"},
["tvx"] = {"Taivoan"},
["tvy"] = {"Timorish Vrisht"},
["twa"] = {"Twana"},
["twb"] = {"Tawbuid Heear"},
["twc"] = {"Teshenawa"},
["twd"] = {"Twents"},
["twe"] = {"Tewa (yn Indoneesh)"},
["twf"] = {"Tiwa Hwoaie"},
["twg"] = {"Tereweng"},
["twh"] = {"Tai Dón"},
["twl"] = {"Tawara"},
["twm"] = {"Tawang Monpa"},
["twn"] = {"Twendi"},
["two"] = {"Tswapong"},
["twp"] = {"Ere"},
["twq"] = {"Tasawaq"},
["twr"] = {"Tarahumara Heear Yiass"},
["twt"] = {"Turiwára"},
["twu"] = {"Termanu"},
["tww"] = {"Tuwari"},
["twx"] = {"Tewe"},
["twy"] = {"Tawoyan"},
["txa"] = {"Tombonuo"},
["txb"] = {"Tokharish B"},
["txc"] = {"Tsetsaut"},
["txe"] = {"Totoli"},
["txg"] = {"Tangut"},
["txh"] = {"Thrackish"},
["txi"] = {"Ikpeng"},
["txj"] = {"Tarjumo"},
["txm"] = {"Tomini"},
["txn"] = {"Tarangan Heear"},
["txo"] = {"Toto"},
["txq"] = {"Tii"},
["txr"] = {"Tartessish"},
["txs"] = {"Tonsea"},
["txt"] = {"Citak"},
["txu"] = {"Kayapó"},
["txx"] = {"Tatana"},
["txy"] = {"Malagasish Tanosy"},
["tya"] = {"Tauya"},
["tye"] = {"Kyanga"},
["tyh"] = {"O'du"},
["tyi"] = {"Teke-Tsaayi"},
["tyj"] = {"Tai Do", "Tai Yo"},
["tyl"] = {"Thu Lao"},
["tyn"] = {"Kombai"},
["typ"] = {"Thaypan"},
["tyr"] = {"Tai Daeng"},
["tys"] = {"Tày Sa Pa"},
["tyt"] = {"Tày Tac"},
["tyu"] = {"Kua"},
["tyv"] = {"Tuvish"},
["tyx"] = {"Teke-Tyee"},
["tyy"] = {"Tiyaa"},
["tyz"] = {"Tày"},
["tza"] = {"Çhengey Chowree Tanzania"},
["tzh"] = {"Tzeltal"},
["tzj"] = {"Tz'utujil"},
["tzl"] = {"Talossan"},
["tzm"] = {"Tamazight Atlas Veanagh"},
["tzn"] = {"Tugun"},
["tzo"] = {"Tzotzil"},
["tzx"] = {"Tabriak"},
["uam"] = {"Uamué"},
["uan"] = {"Kuan"},
["uar"] = {"Tairuma"},
["uba"] = {"Ubang"},
["ubi"] = {"Ubi"},
["ubl"] = {"Buhi'non Bikol"},
["ubr"] = {"Ubir"},
["ubu"] = {"Umbu-Ungu"},
["uby"] = {"Ubykhish"},
["uda"] = {"Uda"},
["ude"] = {"Udihe"},
["udg"] = {"Muduga"},
["udi"] = {"Udi"},
["udj"] = {"Ujir"},
["udl"] = {"Wuzlam"},
["udm"] = {"Udmurtish"},
["udu"] = {"Uduk"},
["ues"] = {"Kioko"},
["ufi"] = {"Ufim"},
["uga"] = {"Oogaritish"},
["ugb"] = {"Kuku-Ugbanh"},
["uge"] = {"Ughele"},
["ugh"] = {"Kubachi"},
["ugn"] = {"Çhengey Chowree Oogandagh"},
["ugo"] = {"Ugong"},
["ugy"] = {"Çhengey Chowree Ooraguayagh"},
["uha"] = {"Uhami"},
["uhn"] = {"Damal"},
["uis"] = {"Uisai"},
["uiv"] = {"Iyive"},
["uji"] = {"Tanjijili"},
["uka"] = {"Kaburi"},
["ukg"] = {"Ukuriguma"},
["ukh"] = {"Ukhwejo"},
["uki"] = {"Kui (yn Injey)"},
["ukk"] = {"Muak Sa-aak"},
["ukl"] = {"Çhengey Chowree Ookraanagh"},
["ukp"] = {"Ukpe-Bayobiri"},
["ukq"] = {"Ukwa"},
["uks"] = {"Çhengey Chowree Urubú-Kaapor", "Çhengey Chowree Kaapor"},
["uku"] = {"Ukue"},
["ukv"] = {"Kuku"},
["ukw"] = {"Ukwuani-Aboh-Ndoni"},
["uky"] = {"Kuuk-Yak"},
["ula"] = {"Fungwa"},
["ulb"] = {"Ulukwumi"},
["ulc"] = {"Ulch"},
["ule"] = {"Lule"},
["ulf"] = {"Usku", "Afra"},
["uli"] = {"Ulithish"},
["ulk"] = {"Meriam Mir"},
["ull"] = {"Ullatan"},
["ulm"] = {"Ulumanda'"},
["uln"] = {"Unserdeutsch"},
["ulu"] = {"Uma' Lung"},
["ulw"] = {"Ulwa"},
["uly"] = {"Buli"},
["uma"] = {"Umatilla"},
["umb"] = {"Umbundu"},
["umc"] = {"Marrucinish"},
["umd"] = {"Umbindhamu"},
["umg"] = {"Morrobalama", "Umbuygamu"},
["umi"] = {"Ukit"},
["umm"] = {"Umon"},
["umn"] = {"Makyan Naga"},
["umo"] = {"Umotína"},
["ump"] = {"Umpila"},
["umr"] = {"Umbugarla"},
["ums"] = {"Pendau"},
["umu"] = {"Munsee"},
["una"] = {"Watut Hwoaie"},
["und"] = {"Neuoolit"},
["une"] = {"Uneme"},
["ung"] = {"Ngarinyin"},
["uni"] = {"Uni"},
["unk"] = {"Enawené-Nawé"},
["unm"] = {"Unami"},
["unn"] = {"Kurnai"},
["unr"] = {"Mundari"},
["unu"] = {"Unubahe"},
["unx"] = {"Munda"},
["unz"] = {"Unde Kaili"},
["uon"] = {"Kulon"},
["upi"] = {"Umeda"},
["upv"] = {"Uripiv-Wala-Rano-Atchin"},
["ura"] = {"Urarina"},
["urb"] = {"Urubú-Kaapor", "Kaapor"},
["urc"] = {"Urningangg"},
["ure"] = {"Uru"},
["urf"] = {"Uradhi"},
["urg"] = {"Urigina"},
["urh"] = {"Urhobo"},
["uri"] = {"Urim"},
["urj"] = {"çhengaghyn Ooralagh"},
["urk"] = {"Urak Lawoi'"},
["url"] = {"Urali"},
["urm"] = {"Urapmin"},
["urn"] = {"Uruangnirin"},
["uro"] = {"Ura (Papooey Guinea Noa)"},
["urp"] = {"Uru-Pa-In"},
["urr"] = {"Lehalurup", "Löyöp"},
["urt"] = {"Urat"},
["uru"] = {"Urumi"},
["urv"] = {"Uruava"},
["urw"] = {"Sop"},
["urx"] = {"Urimo"},
["ury"] = {"Orya"},
["urz"] = {"Uru-Eu-Wau-Wau"},
["usa"] = {"Usarufa"},
["ush"] = {"Ushojo"},
["usi"] = {"Usui"},
["usk"] = {"Usaghade"},
["usp"] = {"Uspanteco"},
["uss"] = {"us-Saare"},
["usu"] = {"Uya"},
["uta"] = {"Otank"},
["ute"] = {"Ute-Paiute Yiass"},
["uth"] = {"ut-Hun"},
["utp"] = {"Amba (Ellanyn Solomon)"},
["utr"] = {"Etulo"},
["utu"] = {"Utu"},
["uum"] = {"Urum"},
["uur"] = {"Ura (Vanuatu)"},
["uuu"] = {"U"},
["uve"] = {"Uveish Heear", "Fagauvea"},
["uvh"] = {"Uri"},
["uvl"] = {"Lote"},
["uwa"] = {"Kuku-Uwanh"},
["uya"] = {"Doko-Uyanga"},
["uzn"] = {"Oosbeckish Hwoaie"},
["uzs"] = {"Oosbeckish Yiass"},
["vaa"] = {"Vaagri Booli"},
["vae"] = {"Vale"},
["vaf"] = {"Vafsi"},
["vag"] = {"Vagla"},
["vah"] = {"Varhadi-Nagpuri"},
["vai"] = {"Vai"},
["vaj"] = {"Sekele", "ǃKung Heear Hwoaie", "Vasekele"},
["val"] = {"Vehes"},
["vam"] = {"Vanimo"},
["van"] = {"Valman"},
["vao"] = {"Vao"},
["vap"] = {"Vaiphei"},
["var"] = {"Huarijio"},
["vas"] = {"Vasavi"},
["vau"] = {"Vanuma"},
["vav"] = {"Varli"},
["vay"] = {"Wayu"},
["vbb"] = {"Babar Hiar Yiass"},
["vbk"] = {"Bontok Heear Yiass"},
["vec"] = {"Veneeshish"},
["ved"] = {"Veddah"},
["vel"] = {"Veluws"},
["vem"] = {"Vemgo-Mabas"},
["veo"] = {"Ventureño"},
["vep"] = {"Vepsish"},
["ver"] = {"Mom Jango"},
["vgr"] = {"Vaghri"},
["vgt"] = {"Vlaamse Gebarentaal", "Çhengey Chowree Landrynagh"},
["vic"] = {"Creeole Baarle Ellanyn y Voidyn"},
["vid"] = {"Vidunda"},
["vif"] = {"Vili"},
["vig"] = {"Viemo"},
["vil"] = {"Vilela"},
["vin"] = {"Vinza"},
["vis"] = {"Vishavan"},
["vit"] = {"Viti"},
["viv"] = {"Iduna"},
["vjk"] = {"Bajjika"},
["vka"] = {"Kariyarra"},
["vkj"] = {"Kujarge"},
["vkk"] = {"Kaur"},
["vkl"] = {"Kulisusu"},
["vkm"] = {"Kamakan"},
["vkn"] = {"Koro Nulu"},
["vko"] = {"Kodeoha"},
["vkp"] = {"Creeole Portiugish Korlai"},
["vkt"] = {"Malayish Tenggarong Kutai"},
["vku"] = {"Kurrama"},
["vkz"] = {"Koro Zuba"},
["vlp"] = {"Valpei"},
["vls"] = {"Vlaams"},
["vma"] = {"Martuyhunira"},
["vmb"] = {"Barbaram"},
["vmc"] = {"Mixtecish Juxtlahuaca"},
["vmd"] = {"Mudu Koraga"},
["vme"] = {"Masela Hiar"},
["vmf"] = {"Mainfränkisch"},
["vmg"] = {"Lungalunga"},
["vmh"] = {"Maraghei"},
["vmi"] = {"Miwa"},
["vmj"] = {"Mixtecish Ixtayutla"},
["vmk"] = {"Makhuwa-Shirima"},
["vml"] = {"Malgana"},
["vmm"] = {"Mixtecish Mitlatongo"},
["vmp"] = {"Mazatec Soyaltepec"},
["vmq"] = {"Mixtecish Soyaltepec"},
["vmr"] = {"Marenje"},
["vms"] = {"Moksela"},
["vmu"] = {"Muluridyi"},
["vmv"] = {"Maidu Ghlionney"},
["vmw"] = {"Makhuwa"},
["vmx"] = {"Mixtecish Tamazola"},
["vmy"] = {"Mazatec Ayautla"},
["vmz"] = {"Mazatec Mazatlán"},
["vnk"] = {"Vano", "Lovono"},
["vnm"] = {"Vinmavis", "Neve'ei"},
["vnp"] = {"Vunapu"},
["vor"] = {"Voroish"},
["vot"] = {"Votish"},
["vra"] = {"Vera'a"},
["vro"] = {"Võro"},
["vrs"] = {"Varisi"},
["vrt"] = {"Burmbar", "Banam Bay"},
["vsi"] = {"Çhengey Chowree Voldovagh"},
["vsl"] = {"Çhengey Chowree Veneswaalagh"},
["vsv"] = {"Çhengey Chowree Valensianagh", "Llengua de signes valenciana"},
["vto"] = {"Vitou"},
["vum"] = {"Vumbu"},
["vun"] = {"Vunjo"},
["vut"] = {"Vute"},
["vwa"] = {"Awa (y Çheen)"},
["waa"] = {"Walla Walla"},
["wab"] = {"Wab"},
["wac"] = {"Wasco-Wishram"},
["wad"] = {"Wamesa", "Wondama"},
["wae"] = {"Walser"},
["waf"] = {"Wakoná"},
["wag"] = {"Wa'ema"},
["wah"] = {"Watubela"},
["wai"] = {"Wares"},
["waj"] = {"Waffa"},
["wak"] = {"çhengaghyn Wakashagh"},
["wal"] = {"Wolaytta", "Wolaitta"},
["wam"] = {"Wampanoag"},
["wan"] = {"Wan"},
["wao"] = {"Wappo"},
["wap"] = {"Wapishana"},
["waq"] = {"Wagiman"},
["war"] = {"Waray (ny h-Ellanyn Philippeenagh)"},
["was"] = {"Washo"},
["wat"] = {"Kaninuwa"},
["wau"] = {"Waurá"},
["wav"] = {"Waka"},
["waw"] = {"Waiwai"},
["wax"] = {"Watam", "Marangis"},
["way"] = {"Wayana"},
["waz"] = {"Wampur"},
["wba"] = {"Warao"},
["wbb"] = {"Wabo"},
["wbe"] = {"Waritai"},
["wbf"] = {"Wara"},
["wbh"] = {"Wanda"},
["wbi"] = {"Vwanji"},
["wbj"] = {"Alagwa"},
["wbk"] = {"Waigali"},
["wbl"] = {"Wakhi"},
["wbm"] = {"Wa"},
["wbp"] = {"Warlpiri"},
["wbq"] = {"Waddar"},
["wbr"] = {"Wagdi"},
["wbs"] = {"Çhengey Chowree y Vengaal Heear"},
["wbt"] = {"Warnman"},
["wbv"] = {"Wajarri"},
["wbw"] = {"Woi"},
["wca"] = {"Yanomámi"},
["wci"] = {"Waci Gbe"},
["wdd"] = {"Wandji"},
["wdg"] = {"Wadaginam"},
["wdj"] = {"Wadjiginy"},
["wdk"] = {"Wadikali"},
["wdt"] = {"Wendat"},
["wdu"] = {"Wadjigu"},
["wdy"] = {"Wadjabangayi"},
["wea"] = {"Wewaw"},
["wec"] = {"Wè Heear"},
["wed"] = {"Wedau"},
["weg"] = {"Wergaia"},
["weh"] = {"Weh"},
["wei"] = {"Kiunum"},
["wem"] = {"Weme Gbe"},
["wen"] = {"çhengaghyn Sorbagh"},
["weo"] = {"Wemale"},
["wep"] = {"Westphalien"},
["wer"] = {"Weri"},
["wes"] = {"Cameroonish Vrisht"},
["wet"] = {"Perai"},
["weu"] = {"Rawngtu Chin"},
["wew"] = {"Wejewa"},
["wfg"] = {"Yafi", "Zorop"},
["wga"] = {"Wagaya"},
["wgb"] = {"Wagawaga"},
["wgg"] = {"Wangkangurru", "Wangganguru"},
["wgi"] = {"Wahgi"},
["wgo"] = {"Waigeo"},
["wgu"] = {"Wirangu"},
["wgy"] = {"Warrgamay"},
["wha"] = {"Sou Upaa", "Manusela"},
["whg"] = {"Wahgi Hwoaie"},
["whk"] = {"Wahau Kenyah"},
["whu"] = {"Wahau Kayan"},
["wib"] = {"Tusya Yiass"},
["wic"] = {"Wichita"},
["wie"] = {"Wik-Epa"},
["wif"] = {"Wik-Keyangan"},
["wig"] = {"Wik Ngathan"},
["wih"] = {"Wik-Me'anha"},
["wii"] = {"Minidien"},
["wij"] = {"Wik-Iiyanh"},
["wik"] = {"Wikalkan"},
["wil"] = {"Wilawila"},
["wim"] = {"Wik-Mungkan"},
["win"] = {"Ho-Chunk"},
["wir"] = {"Wiraféd"},
["wiu"] = {"Wiru"},
["wiv"] = {"Vitu"},
["wiy"] = {"Wiyot"},
["wja"] = {"Waja"},
["wji"] = {"Warji"},
["wka"] = {"Kw'adza"},
["wkb"] = {"Kumbaran"},
["wkd"] = {"Wakde", "Mo"},
["wkl"] = {"Kalanadi"},
["wkr"] = {"Keerray-Woorroong"},
["wku"] = {"Kunduvadi"},
["wkw"] = {"Wakawaka"},
["wky"] = {"Wangkayutyuru"},
["wla"] = {"Walio"},
["wlc"] = {"Comoroish Mwali"},
["wle"] = {"Wolane"},
["wlg"] = {"Kunbarlang"},
["wlh"] = {"Welaun"},
["wli"] = {"Waioli"},
["wlk"] = {"Wailaki"},
["wll"] = {"Wali (y Toodaan)"},
["wlm"] = {"Bretnish Veanagh"},
["wlo"] = {"Wolio"},
["wlr"] = {"Wailapa"},
["wls"] = {"Wallisish"},
["wlu"] = {"Wuliwuli"},
["wlv"] = {"Wichí Lhamtés Vejoz"},
["wlw"] = {"Walak"},
["wlx"] = {"Wali (y Ghaney)"},
["wly"] = {"Waling"},
["wma"] = {"Mawa (y Naigeer)"},
["wmb"] = {"Wambaya"},
["wmc"] = {"Wamas"},
["wmd"] = {"Mamaindé"},
["wme"] = {"Wambule"},
["wmg"] = {"Minyag Heear"},
["wmh"] = {"Waima'a"},
["wmi"] = {"Wamin"},
["wmm"] = {"Maiwa (yn Indoneesh)"},
["wmn"] = {"Waamwang"},
["wmo"] = {"Wom (Papooey Guinea Noa)"},
["wms"] = {"Wambon"},
["wmt"] = {"Walmajarri"},
["wmw"] = {"Mwani"},
["wmx"] = {"Womo"},
["wnb"] = {"Mokati"},
["wnc"] = {"Wantoat"},
["wnd"] = {"Wandarang"},
["wne"] = {"Waneci"},
["wng"] = {"Wanggom"},
["wni"] = {"Comoroish Ndzwani"},
["wnk"] = {"Wanukaka"},
["wnm"] = {"Wanggamala"},
["wnn"] = {"Wunumara"},
["wno"] = {"Wano"},
["wnp"] = {"Wanap"},
["wnu"] = {"Usan"},
["wnw"] = {"Wintu"},
["wny"] = {"Wanyi", "Waanyi"},
["woa"] = {"Kuwema", "Tyaraity"},
["wob"] = {"Wè Hwoaie"},
["woc"] = {"Wogeo"},
["wod"] = {"Wolani"},
["woe"] = {"Woleaish"},
["wof"] = {"Wolofish Ghambiagh"},
["wog"] = {"Wogamusin"},
["woi"] = {"Kamang"},
["wok"] = {"Longto"},
["wom"] = {"Wom (y Naigeer)"},
["won"] = {"Wongo"},
["woo"] = {"Manombai"},
["wor"] = {"Woria"},
["wos"] = {"Hundish Hanga"},
["wow"] = {"Wawonii"},
["woy"] = {"Weyto"},
["wpc"] = {"Maco"},
["wrb"] = {"Waluwarra", "Warluwara"},
["wrg"] = {"Warungu", "Gudjal"},
["wrh"] = {"Wiradjuri"},
["wri"] = {"Wariyangga"},
["wrk"] = {"Garrwa"},
["wrl"] = {"Warlmanpa"},
["wrm"] = {"Warumungu"},
["wrn"] = {"Warnang"},
["wro"] = {"Worrorra"},
["wrp"] = {"Waropen"},
["wrr"] = {"Wardaman"},
["wrs"] = {"Waris"},
["wru"] = {"Waru"},
["wrv"] = {"Waruna"},
["wrw"] = {"Gugu Warra"},
["wrx"] = {"Wae Rana"},
["wry"] = {"Merwari"},
["wrz"] = {"Waray (yn Austrail)"},
["wsa"] = {"Warembori"},
["wsg"] = {"Adilabad Gondi"},
["wsi"] = {"Wusi"},
["wsk"] = {"Waskia"},
["wsr"] = {"Owenia"},
["wss"] = {"Wasa"},
["wsu"] = {"Wasu"},
["wsv"] = {"Wotapuri-Katarqalai"},
["wtb"] = {"Matambwe"},
["wtf"] = {"Watiwa"},
["wth"] = {"Wathawurrung"},
["wti"] = {"Berta"},
["wtk"] = {"Watakataui"},
["wtm"] = {"Mewati"},
["wtw"] = {"Wotu"},
["wua"] = {"Wikngenchera"},
["wub"] = {"Wunambal"},
["wud"] = {"Wudu"},
["wuh"] = {"Wutunhua"},
["wul"] = {"Silimo"},
["wum"] = {"Wumbvu"},
["wun"] = {"Bungu"},
["wur"] = {"Wurrugu"},
["wut"] = {"Wutung"},
["wuu"] = {"Sheenish Wu"},
["wuv"] = {"Wuvulu-Aua"},
["wux"] = {"Wulna"},
["wuy"] = {"Wauyai"},
["wwa"] = {"Waama"},
["wwb"] = {"Wakabunga"},
["wwo"] = {"Wetamut", "Dorig"},
["wwr"] = {"Warrwa"},
["www"] = {"Wawa"},
["wxa"] = {"Waxianghua"},
["wxw"] = {"Wardandi"},
["wyb"] = {"Wangaaybuwan-Ngiyambaa"},
["wyi"] = {"Woiwurrung"},
["wym"] = {"Wymysorys"},
["wyn"] = {"Wyandot"},
["wyr"] = {"Wayoró"},
["wyy"] = {"Fijish Heear"},
["xaa"] = {"Arabish Andaloosagh"},
["xab"] = {"Sambe"},
["xac"] = {"Kachari"},
["xad"] = {"Adai"},
["xae"] = {"Aequish"},
["xag"] = {"Aghwan"},
["xai"] = {"Kaimbé"},
["xaj"] = {"Ararandewára"},
["xak"] = {"Máku"},
["xal"] = {"Kalmykish", "Oiratish"},
["xam"] = {"ǀXam"},
["xan"] = {"Xamtanga"},
["xao"] = {"Khao"},
["xap"] = {"Apalaçheeish"},
["xaq"] = {"Ackitaanish"},
["xar"] = {"Karami"},
["xas"] = {"Kamas"},
["xat"] = {"Katawixi"},
["xau"] = {"Kauwera"},
["xav"] = {"Xavánte"},
["xaw"] = {"Kawaiisu"},
["xay"] = {"Kayan Mahakam"},
["xbb"] = {"Burdekin Injil"},
["xbc"] = {"Bactrish"},
["xbd"] = {"Bindal"},
["xbe"] = {"Bigambal"},
["xbg"] = {"Bunganditj"},
["xbi"] = {"Kombio"},
["xbj"] = {"Birrpayi"},
["xbm"] = {"Britaanish Veanagh"},
["xbn"] = {"Kenaboi"},
["xbo"] = {"Bolgarish"},
["xbp"] = {"Bibbulman"},
["xbr"] = {"Kambera"},
["xbw"] = {"Kambiwá"},
["xby"] = {"Batjala", "Batyala"},
["xcb"] = {"Cumbrish"},
["xcc"] = {"Camunish"},
["xce"] = {"Celtibeirish"},
["xcg"] = {"Goalish Chisalpagh"},
["xch"] = {"Chemakum", "Chimakum"},
["xcl"] = {"Armeanish Chlassicagh"},
["xcm"] = {"Comecrudo"},
["xcn"] = {"Cotoname"},
["xco"] = {"Chorasmish"},
["xcr"] = {"Carian"},
["xct"] = {"Tibetish Chlassicagh"},
["xcu"] = {"Curonish"},
["xcv"] = {"Chuvantsy"},
["xcw"] = {"Coahuilteco"},
["xcy"] = {"Cayuse"},
["xda"] = {"Darkinyung"},
["xdc"] = {"Dackish"},
["xdk"] = {"Dharuk"},
["xdm"] = {"Edomish"},
["xdo"] = {"Kwandu"},
["xdq"] = {"Kaitag"},
["xdy"] = {"Dayak Valayagh"},
["xeb"] = {"Eblan"},
["xed"] = {"Hdi"},
["xeg"] = {"ǁXegwi"},
["xel"] = {"Kelo"},
["xem"] = {"Kembayan"},
["xep"] = {"Epi-Olmec"},
["xer"] = {"Xerénte"},
["xes"] = {"Kesawai"},
["xet"] = {"Xetá"},
["xeu"] = {"Keoru-Ahia"},
["xfa"] = {"Faliscish"},
["xga"] = {"Galaatish"},
["xgb"] = {"Gbin"},
["xgd"] = {"Gudang"},
["xgf"] = {"Gabrielino-Fernandeño"},
["xgg"] = {"Goreng"},
["xgi"] = {"Garingbal"},
["xgl"] = {"Galindan"},
["xgm"] = {"Dharumbal", "Guwinmal"},
["xgn"] = {"çhengaghyn Mongoilagh"},
["xgr"] = {"Garza"},
["xgu"] = {"Unggumi"},
["xgw"] = {"Guwa"},
["xha"] = {"Haramish"},
["xhc"] = {"Hunnish"},
["xhd"] = {"Hadrami"},
["xhe"] = {"Khetrani"},
["xhm"] = {"Khmerish Veanagh (1400 derrey 1850 BNJ)"},
["xhr"] = {"Hernicish"},
["xht"] = {"Hattish"},
["xhu"] = {"Hurrish"},
["xhv"] = {"Khua"},
["xib"] = {"Ibeirish"},
["xii"] = {"Xiri"},
["xil"] = {"Illyrish"},
["xin"] = {"Xinca"},
["xir"] = {"Xiriâna"},
["xis"] = {"Kisan"},
["xiv"] = {"Çhengey Ghlion yn Indus"},
["xiy"] = {"Xipaya"},
["xjb"] = {"Minjungbal"},
["xjt"] = {"Jaitmatang"},
["xka"] = {"Kalkoti"},
["xkb"] = {"Nago Hwoaie"},
["xkc"] = {"Kho'ini"},
["xkd"] = {"Kayan Mendalam"},
["xke"] = {"Kereho"},
["xkf"] = {"Khengkha"},
["xkg"] = {"Kagoro"},
["xki"] = {"Çhengey Chowree Cheinnagh"},
["xkj"] = {"Kajali"},
["xkk"] = {"Kachok", "Kaco'"},
["xkl"] = {"Kenyah Chadjin"},
["xkn"] = {"Kayan yn Awin Kayan"},
["xko"] = {"Kiorr"},
["xkp"] = {"Kabatei"},
["xkq"] = {"Koroni"},
["xkr"] = {"Xakriabá"},
["xks"] = {"Kumbewaha"},
["xkt"] = {"Kantosi"},
["xku"] = {"Kaamba"},
["xkv"] = {"Kgalagadi"},
["xkw"] = {"Kembra"},
["xkx"] = {"Karore"},
["xky"] = {"Uma' Lasan"},
["xkz"] = {"Kurtokha"},
["xla"] = {"Kamula"},
["xlb"] = {"Loup B"},
["xlc"] = {"Lyckish"},
["xld"] = {"Lydish"},
["xle"] = {"Lemnish"},
["xlg"] = {"Ligoorish (Henndeeagh)"},
["xli"] = {"Liburnish"},
["xln"] = {"Alanish"},
["xlo"] = {"Loup A"},
["xlp"] = {"Lepontish"},
["xls"] = {"Lusitaanish"},
["xlu"] = {"Luwish Yeenysagh"},
["xly"] = {"Elymish"},
["xma"] = {"Mushungulu"},
["xmb"] = {"Mbonga"},
["xmc"] = {"Makhuwa-Marrevone"},
["xmd"] = {"Mbudum"},
["xme"] = {"Medish"},
["xmf"] = {"Mingrelish"},
["xmg"] = {"Mengaka"},
["xmh"] = {"Kugu-Muminh"},
["xmj"] = {"Majera"},
["xmk"] = {"Massadoanish Henndeeagh"},
["xml"] = {"Çhengey Chowree Valaysiagh"},
["xmm"] = {"Malayish Manado"},
["xmn"] = {"Pershish Veanagh Vanichaeagh"},
["xmo"] = {"Morerebi"},
["xmp"] = {"Kuku-Mu'inh"},
["xmq"] = {"Kuku-Mangk"},
["xmr"] = {"Meroitish"},
["xms"] = {"Çhengey Chowree Varocagh"},
["xmt"] = {"Matbat"},
["xmu"] = {"Kamu"},
["xmv"] = {"Malagasish Antankarana", "Malagasish Tankarana"},
["xmw"] = {"Malagasish Tsimihety"},
["xmx"] = {"Salawati", "Maden"},
["xmy"] = {"Mayaguduna"},
["xmz"] = {"Mori Bawah"},
["xna"] = {"Arabish Hwoaie Henndeeagh"},
["xnb"] = {"Kanakanabu"},
["xnd"] = {"çhengaghyn Na-Dene"},
["xng"] = {"Mongoilish Veanagh"},
["xnh"] = {"Kuanhua"},
["xni"] = {"Ngarigu"},
["xnj"] = {"Ngoni (Tanzania)"},
["xnk"] = {"Nganakarti"},
["xnm"] = {"Ngumbarl"},
["xnn"] = {"Kankanay Hwoaie"},
["xno"] = {"Anglo-Normanish"},
["xnq"] = {"Ngoni (y Vosambeeck)"},
["xnr"] = {"Kangri"},
["xns"] = {"Kanashi"},
["xnt"] = {"Narragansett"},
["xnu"] = {"Nukunul"},
["xny"] = {"Nyiyaparli"},
["xnz"] = {"Kenzi", "Mattoki"},
["xoc"] = {"O'chi'chi'"},
["xod"] = {"Kokoda"},
["xog"] = {"Soga"},
["xoi"] = {"Kominimung"},
["xok"] = {"Xokleng"},
["xom"] = {"Komo (y Toodaan)"},
["xon"] = {"Konkomba"},
["xoo"] = {"Xukurú"},
["xop"] = {"Kopar"},
["xor"] = {"Korubo"},
["xow"] = {"Kowaki"},
["xpa"] = {"Pirriya"},
["xpb"] = {"Tasmanian Hiar Hwoaie", "Pyemmairrener"},
["xpc"] = {"Pecheneg"},
["xpd"] = {"Tasmaanish Oyster Bay"},
["xpe"] = {"Kpelle yn Laibeer"},
["xpf"] = {"Tasmaanish Hiar Yiass", "Nuenonne"},
["xpg"] = {"Phrygish"},
["xph"] = {"Tasmaanish Vean-çheerey Hwoaie", "Tyerrenoterpanner"},
["xpi"] = {"Pictish"},
["xpj"] = {"Mpalitjanh"},
["xpk"] = {"Kulina Pano"},
["xpl"] = {"Tasmaanish Port Sorell"},
["xpm"] = {"Pumpokol"},
["xpn"] = {"Kapinawá"},
["xpo"] = {"Pochutec"},
["xpp"] = {"Puyo-Paekche"},
["xpq"] = {"Moheganish-Pequot"},
["xpr"] = {"Parthish"},
["xps"] = {"Pisidish"},
["xpt"] = {"Punthamara"},
["xpu"] = {"Punish"},
["xpv"] = {"Tasmaanish Hwoaie", "Tommeginne"},
["xpw"] = {"Tasmaanish Heear Hwoaie", "Peerapper"},
["xpx"] = {"Tasmaanish Heear Yiass", "Toogee"},
["xpy"] = {"Puyo"},
["xpz"] = {"Tasmaanish Ellan Bruny"},
["xqa"] = {"Karakhanid"},
["xqt"] = {"Qatabanian"},
["xra"] = {"Krahô"},
["xrb"] = {"Karaboro Hiar"},
["xrd"] = {"Gundungurra"},
["xre"] = {"Kreye"},
["xrg"] = {"Minang"},
["xri"] = {"Krikati-Timbira"},
["xrm"] = {"Armazish"},
["xrn"] = {"Arin"},
["xrr"] = {"Raetish"},
["xrt"] = {"Aranama-Tamique"},
["xru"] = {"Marriammu"},
["xrw"] = {"Karawa"},
["xsa"] = {"Sabaean"},
["xsb"] = {"Sambal"},
["xsc"] = {"Scythish"},
["xsd"] = {"Sidetish"},
["xse"] = {"Sempan"},
["xsh"] = {"Shamang"},
["xsi"] = {"Sio"},
["xsj"] = {"Subi"},
["xsl"] = {"Slavish Yiass"},
["xsm"] = {"Kasem"},
["xsn"] = {"Sanga (y Naigeer)"},
["xso"] = {"Solano"},
["xsp"] = {"Silopi"},
["xsq"] = {"Makhuwa-Saka"},
["xsr"] = {"Sherpa"},
["xsu"] = {"Sanumá"},
["xsv"] = {"Sudovish"},
["xsy"] = {"Saisiyat"},
["xta"] = {"Mixtecish Alcozauca"},
["xtb"] = {"Mixtecish Chazumba"},
["xtc"] = {"Katcha-Kadugli-Miri"},
["xtd"] = {"Mixtecish Diuxi-Tilantongo"},
["xte"] = {"Ketengban"},
["xtg"] = {"Goalish Hessenalpagh"},
["xth"] = {"Yitha Yitha"},
["xti"] = {"Mixtecish Sinicahua"},
["xtj"] = {"Mixtecish San Juan Teita"},
["xtl"] = {"Mixtecish Tijaltepec"},
["xtm"] = {"Mixtecish Magdalena Peñasco"},
["xtn"] = {"Mixtecish Tlaxiaco Hwoaie"},
["xto"] = {"Tokharish A"},
["xtp"] = {"Mixtecish San Miguel Piedras"},
["xtq"] = {"Tumshuqese"},
["xtr"] = {"Tripoorish Leah"},
["xts"] = {"Mixtecish Sindihui"},
["xtt"] = {"Mixtecish Tacahua"},
["xtu"] = {"Mixtecish Cuyamecalco"},
["xtv"] = {"Thawa"},
["xtw"] = {"Tawandê"},
["xty"] = {"Mixtecish Yoloxochitl"},
["xua"] = {"Alu Kurumba"},
["xub"] = {"Betta Kurumba"},
["xud"] = {"Umiida"},
["xug"] = {"Kunigami"},
["xuj"] = {"Jennu Kurumba"},
["xul"] = {"Ngunawal", "Nunukul"},
["xum"] = {"Umbrish"},
["xun"] = {"Unggaranggu"},
["xuo"] = {"Kuo"},
["xup"] = {"Umpqua Heose"},
["xur"] = {"Urartish"},
["xut"] = {"Kuthant"},
["xuu"] = {"Kxoe", "Khwedam"},
["xve"] = {"Venetish"},
["xvi"] = {"Kamviri"},
["xvn"] = {"Vandalish"},
["xvo"] = {"Volscish"},
["xvs"] = {"Vestinish"},
["xwa"] = {"Kwaza"},
["xwc"] = {"Woccon"},
["xwd"] = {"Wadi Wadi"},
["xwe"] = {"Xwela Gbe"},
["xwg"] = {"Kwegu"},
["xwj"] = {"Wajuk"},
["xwk"] = {"Wangkumara"},
["xwl"] = {"Xwla Gbe Heear"},
["xwo"] = {"Oiratish Screeuit"},
["xwr"] = {"Kwerba Mamberamo"},
["xwt"] = {"Wotjobaluk"},
["xww"] = {"Wemba Wemba"},
["xxb"] = {"Boro (y Ghaney)"},
["xxk"] = {"Ke'o"},
["xxm"] = {"Minkin"},
["xxr"] = {"Koropó"},
["xxt"] = {"Tambora"},
["xya"] = {"Yaygir"},
["xyb"] = {"Yandjibara"},
["xyj"] = {"Mayi-Yapi"},
["xyk"] = {"Mayi-Kulan"},
["xyl"] = {"Yalakalore"},
["xyt"] = {"Mayi-Thakurti"},
["xyy"] = {"Yorta Yorta"},
["xzh"] = {"Zhang-Zhung"},
["xzm"] = {"Zemgalish"},
["xzp"] = {"Zapotecish Henndeeagh"},
["yaa"] = {"Yaminahua"},
["yab"] = {"Yuhup"},
["yac"] = {"Yali Pass Valley"},
["yad"] = {"Yagua"},
["yae"] = {"Pumé"},
["yaf"] = {"Yaka (Pobblaght Gheynlagh y Chongo)"},
["yag"] = {"Yámana"},
["yah"] = {"Yazgulyam"},
["yai"] = {"Yagnobi"},
["yaj"] = {"Banda-Yangere"},
["yak"] = {"Yakama"},
["yal"] = {"Yalunka"},
["yam"] = {"Yamba"},
["yan"] = {"Mayangna"},
["yao"] = {"Yao"},
["yap"] = {"Yapish"},
["yaq"] = {"Yaqui"},
["yar"] = {"Yabarana"},
["yas"] = {"Nugunu (Cameroon)"},
["yat"] = {"Yambeta"},
["yau"] = {"Yuwana"},
["yav"] = {"Yangben"},
["yaw"] = {"Yawalapití"},
["yax"] = {"Yauma"},
["yay"] = {"Agwagwune"},
["yaz"] = {"Lokaa"},
["yba"] = {"Yala"},
["ybb"] = {"Yemba"},
["ybe"] = {"Yugur Heear"},
["ybh"] = {"Yakha"},
["ybi"] = {"Yamphu"},
["ybj"] = {"Hasha"},
["ybk"] = {"Bokha"},
["ybl"] = {"Yukuben"},
["ybm"] = {"Yaben"},
["ybn"] = {"Yabaâna"},
["ybo"] = {"Yabong"},
["ybx"] = {"Yawiyo"},
["yby"] = {"Yaweyuha"},
["ych"] = {"Chesu"},
["ycl"] = {"Lolopo"},
["ycn"] = {"Yucuna"},
["ycp"] = {"Chepya"},
["ycr"] = {"Creeole Yilan"},
["yda"] = {"Yanda"},
["ydd"] = {"Ewdish Hiar"},
["yde"] = {"Yangum Dey"},
["ydg"] = {"Yidgha"},
["ydk"] = {"Yoidik"},
["yea"] = {"Ravula"},
["yec"] = {"Yeniche"},
["yee"] = {"Yimas"},
["yei"] = {"Yeni"},
["yej"] = {"Yevanish"},
["yel"] = {"Yela"},
["yer"] = {"Tarok"},
["yes"] = {"Nyankpa"},
["yet"] = {"Yetfa"},
["yeu"] = {"Yerukula"},
["yev"] = {"Yapunda"},
["yey"] = {"Yeyi"},
["yga"] = {"Malyangapa"},
["ygi"] = {"Yiningayi"},
["ygl"] = {"Yangum Gel"},
["ygm"] = {"Yagomi"},
["ygp"] = {"Gepo"},
["ygr"] = {"Yagaria"},
["ygs"] = {"Çhengey Chowree Yolŋu"},
["ygu"] = {"Yugul"},
["ygw"] = {"Yagwoia"},
["yha"] = {"Baha Buyang"},
["yhd"] = {"Arabish Earackagh Ewagh"},
["yhl"] = {"Hlepho Phowa"},
["yhs"] = {"Çhengey Chowree Yan-nhaŋu"},
["yia"] = {"Yinggarda"},
["yif"] = {"Ache"},
["yig"] = {"Wusa Nasu"},
["yih"] = {"Ewdish Heear"},
["yii"] = {"Yidiny"},
["yij"] = {"Yindjibarndi"},
["yik"] = {"Dongshanba Lalo"},
["yil"] = {"Yindjilandji"},
["yim"] = {"Naga Yimchungru"},
["yin"] = {"Riang Lai", "Yinchia"},
["yip"] = {"Pholo"},
["yiq"] = {"Miqie"},
["yir"] = {"Awyu Hwoaie"},
["yis"] = {"Yis"},
["yit"] = {"Lalu Hiar"},
["yiu"] = {"Awu"},
["yiv"] = {"Nisu Hwoaie"},
["yix"] = {"Axi Yi"},
["yiz"] = {"Azhe"},
["yka"] = {"Yakan"},
["ykg"] = {"Yukaghirish Hwoaie"},
["ykh"] = {"Mongoilish Khamnigan"},
["yki"] = {"Yoke"},
["ykk"] = {"Yakaikeke"},
["ykl"] = {"Khlula"},
["ykm"] = {"Kap"},
["ykn"] = {"Kua-nsi"},
["yko"] = {"Yasa"},
["ykr"] = {"Yekora"},
["ykt"] = {"Kathu"},
["yku"] = {"Kuamasi"},
["yky"] = {"Yakoma"},
["yla"] = {"Yaul"},
["ylb"] = {"Yaleba"},
["yle"] = {"Yele"},
["ylg"] = {"Yelogu"},
["yli"] = {"Yali Angguruk"},
["yll"] = {"Yil"},
["ylm"] = {"Limi"},
["yln"] = {"Langnian Buyang"},
["ylo"] = {"Naluo Yi"},
["ylr"] = {"Yalarnnga"},
["ylu"] = {"Aribwaung"},
["yly"] = {"Nyâlayu", "Nyelâyu"},
["ymb"] = {"Yambes"},
["ymc"] = {"Muji Yiass"},
["ymd"] = {"Muda"},
["yme"] = {"Yameo"},
["ymg"] = {"Yamongeri"},
["ymh"] = {"Mili"},
["ymi"] = {"Moji"},
["ymk"] = {"Makwe"},
["yml"] = {"Iamalele"},
["ymm"] = {"Maay"},
["ymn"] = {"Yamna", "Sunum"},
["ymo"] = {"Yangum Mon"},
["ymp"] = {"Yamap"},
["ymq"] = {"Qila Muji"},
["ymr"] = {"Malasar"},
["yms"] = {"Mysish"},
["ymx"] = {"Muji Hwoaie"},
["ymz"] = {"Muzi"},
["yna"] = {"Aluo"},
["ynd"] = {"Yandruwandha"},
["yne"] = {"Lang'e"},
["yng"] = {"Yango"},
["ynk"] = {"Yupikish Naukan"},
["ynl"] = {"Yangulam"},
["ynn"] = {"Yana"},
["yno"] = {"Yong"},
["ynq"] = {"Yendang"},
["yns"] = {"Yansi"},
["ynu"] = {"Yahuna"},
["yob"] = {"Yoba"},
["yog"] = {"Yogad"},
["yoi"] = {"Yonaguni"},
["yok"] = {"Yokuts"},
["yol"] = {"Yola"},
["yom"] = {"Yombe"},
["yon"] = {"Yongkom"},
["yot"] = {"Yotti"},
["yox"] = {"Yoron"},
["yoy"] = {"Yoy"},
["ypa"] = {"Phala"},
["ypb"] = {"Labo Phowa"},
["ypg"] = {"Phola"},
["yph"] = {"Phupha"},
["ypk"] = {"çhengaghyn Yupikagh"},
["ypm"] = {"Phuma"},
["ypn"] = {"Ani Phowa"},
["ypo"] = {"Alo Phola"},
["ypp"] = {"Phupa"},
["ypz"] = {"Phuza"},
["yra"] = {"Yerakai"},
["yrb"] = {"Yareba"},
["yre"] = {"Yaouré"},
["yrk"] = {"Nenetsish"},
["yrl"] = {"Nhengatu"},
["yrm"] = {"Yirrk-Mel"},
["yrn"] = {"Yerong"},
["yro"] = {"Yaroamë"},
["yrs"] = {"Yarsun"},
["yrw"] = {"Yarawata"},
["yry"] = {"Yarluyandi"},
["ysc"] = {"Yassish"},
["ysd"] = {"Samatao"},
["ysg"] = {"Sonaga"},
["ysl"] = {"Çhengey Chowree Yugoslaavagh"},
["ysm"] = {"Çhengey Chowree Myanmar"},
["ysn"] = {"Sani"},
["yso"] = {"Nisi (y Çheen)"},
["ysp"] = {"Lolopo Yiass"},
["ysr"] = {"Yupikish Sirenik"},
["yss"] = {"Yessan-Mayo"},
["ysy"] = {"Sanie"},
["yta"] = {"Talu"},
["ytl"] = {"Tanglang"},
["ytp"] = {"Thopho"},
["ytw"] = {"Yout Wam"},
["yty"] = {"Yatay"},
["yua"] = {"Yucateco", "Mayish Yucatec"},
["yub"] = {"Yugambal"},
["yuc"] = {"Yuchi"},
["yud"] = {"Arabish Hripolitaanagh Ewagh"},
["yue"] = {"Sheenish Yue", "Cantoanish", "Yueish"},
["yuf"] = {"Havasupai-Walapai-Yavapai"},
["yug"] = {"Yug"},
["yui"] = {"Yurutí"},
["yuj"] = {"Karkar-Yuri"},
["yuk"] = {"Yuki"},
["yul"] = {"Yulu"},
["yum"] = {"Quechan"},
["yun"] = {"Bena (y Naigeer)"},
["yup"] = {"Yukpa"},
["yuq"] = {"Yuqui"},
["yur"] = {"Yurok"},
["yut"] = {"Yopno"},
["yuw"] = {"Yau (Queiggey Morobe)"},
["yux"] = {"Yukaghirish Yiass"},
["yuy"] = {"Yugur Hiar"},
["yuz"] = {"Yuracare"},
["yva"] = {"Yawa"},
["yvt"] = {"Yavitero"},
["ywa"] = {"Kalou"},
["ywg"] = {"Yinhawangka"},
["ywl"] = {"Lalu Heear"},
["ywn"] = {"Yawanawa"},
["ywq"] = {"Wuding-Luquan Yi"},
["ywr"] = {"Yawuru"},
["ywt"] = {"Xishanba Lalo", "Lalo Veanagh"},
["ywu"] = {"Wumeng Nasu"},
["yww"] = {"Yawarawarga"},
["yxa"] = {"Mayawali"},
["yxg"] = {"Yagara"},
["yxl"] = {"Yardliyawarra"},
["yxm"] = {"Yinwum"},
["yxu"] = {"Yuyu"},
["yxy"] = {"Yabula Yabula"},
["yyr"] = {"Yir Yoront"},
["yyu"] = {"Yau (Queiggey Sandaun)"},
["yyz"] = {"Ayizi"},
["yzg"] = {"E'ma Buyang"},
["yzk"] = {"Zokhuo"},
["zaa"] = {"Zapotecish Sierra de Juárez"},
["zab"] = {"Zapotecish Ghlion Tlacolula Heear", "Zapotecish San Juan Guelavía"},
["zac"] = {"Zapotecish Ocotlán"},
["zad"] = {"Zapotecish Cajonos"},
["zae"] = {"Zapotecish Yareni"},
["zaf"] = {"Zapotecish Ayoquesco"},
["zag"] = {"Zaghawa"},
["zah"] = {"Zangwal"},
["zai"] = {"Zapotecish Whing Hallooin"},
["zaj"] = {"Zaramo"},
["zak"] = {"Zanaki"},
["zal"] = {"Zauzou"},
["zam"] = {"Zapotecish Miahuatlán"},
["zao"] = {"Zapotecish Ozolotepec"},
["zap"] = {"Zapotecish"},
["zaq"] = {"Zapotecish Aloápam"},
["zar"] = {"Zapotecish Rincón"},
["zas"] = {"Zapotecish Santo Domingo Albarradas"},
["zat"] = {"Zapotecish Tabaa"},
["zau"] = {"Zangskari"},
["zav"] = {"Zapotecish Yatzachi"},
["zaw"] = {"Zapotecish Mitla"},
["zax"] = {"Zapotecish Xadani"},
["zay"] = {"Zayse-Zergulla", "Zaysete"},
["zaz"] = {"Zari"},
["zba"] = {"Balaibalan"},
["zbc"] = {"Berawan Veanagh"},
["zbe"] = {"Berawan Hiar"},
["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"},
["zbt"] = {"Batui"},
["zbu"] = {"Bu (Steat Bauchi)"},
["zbw"] = {"Berawan Heear"},
["zca"] = {"Zapotecish Coatecas Altas"},
["zcd"] = {"Zapotecish Las Delicias"},
["zch"] = {"Zhang Hongshuihe Veanagh"},
["zdj"] = {"Comoroish Ngazidja"},
["zea"] = {"Zeeuws"},
["zeg"] = {"Zenag"},
["zeh"] = {"Zhuang Hongshuihe Hiar"},
["zem"] = {"Zeem"},
["zen"] = {"Zenaga"},
["zga"] = {"Kinga"},
["zgb"] = {"Zhuang Guibei"},
["zgh"] = {"Tamazightish Varocagh Stundayrtit"},
["zgm"] = {"Zhuang Minz"},
["zgn"] = {"Zhuang Guibian"},
["zgr"] = {"Magori"},
["zhb"] = {"Zhaba"},
["zhd"] = {"Zhuang Dai"},
["zhi"] = {"Zhire"},
["zhn"] = {"Zhuang Nong"},
["zhw"] = {"Zhoa"},
["zhx"] = {"Sheenagh (kynney)"},
["zia"] = {"Zia"},
["zib"] = {"Çhengey Chowree Himbabweagh"},
["zik"] = {"Zimakani"},
["zil"] = {"Zialo"},
["zim"] = {"Mesme"},
["zin"] = {"Zinza"},
["ziw"] = {"Zigula"},
["ziz"] = {"Zizilivakan"},
["zka"] = {"Kaimbulawa"},
["zkd"] = {"Kadu"},
["zkg"] = {"Koguryo"},
["zkh"] = {"Khorezmish"},
["zkk"] = {"Karankawa"},
["zkn"] = {"Kanan"},
["zko"] = {"Kott"},
["zkp"] = {"Kaingáng São Paulo"},
["zkr"] = {"Zakhring"},
["zkt"] = {"Kitan"},
["zku"] = {"Kaurna"},
["zkv"] = {"Krevinish"},
["zkz"] = {"Khazarish"},
["zla"] = {"Zula"},
["zle"] = {"çhengaghyn Slavagh Hiar"},
["zlj"] = {"Zhuang Liujiang"},
["zlm"] = {"Malayish (çhengey er lheh)"},
["zln"] = {"Zhuang Lianshan"},
["zlq"] = {"Zhuang Liuqian"},
["zls"] = {"çhengaghyn Slavagh Yiass"},
["zlu"] = {"Zul"},
["zlw"] = {"çhengaghyn Slavagh Heear"},
["zma"] = {"Manda (yn Austrail)"},
["zmb"] = {"Zimba"},
["zmc"] = {"Margany"},
["zmd"] = {"Maridan"},
["zme"] = {"Mangerr"},
["zmf"] = {"Mfinu"},
["zmg"] = {"Marti Ke"},
["zmh"] = {"Makolkol"},
["zmi"] = {"Malayish Negeri Sembilan"},
["zmj"] = {"Maridjabin"},
["zmk"] = {"Mandandanyi"},
["zml"] = {"Matngala"},
["zmm"] = {"Marimanindji", "Marramaninyshi"},
["zmn"] = {"Mbangwe"},
["zmo"] = {"Molo"},
["zmp"] = {"Mpuono"},
["zmq"] = {"Mituku"},
["zmr"] = {"Maranunggu"},
["zms"] = {"Mbesa"},
["zmt"] = {"Maringarr"},
["zmu"] = {"Muruwari"},
["zmv"] = {"Mbariman-Gudhinma"},
["zmw"] = {"Mbo (Pobblaght Gheynlagh y Chongo)"},
["zmx"] = {"Bomitaba"},
["zmy"] = {"Mariyedi"},
["zmz"] = {"Mbandja"},
["zna"] = {"Zan Gula"},
["znd"] = {"çhengaghyn Zande"},
["zne"] = {"Zande (çhengey er lheh)"},
["zng"] = {"Mang"},
["znk"] = {"Manangkari"},
["zns"] = {"Mangas"},
["zoc"] = {"Zoque Copainalá"},
["zoh"] = {"Zoque Chimalapa"},
["zom"] = {"Zou"},
["zoo"] = {"Zapotecish Mixtepec Asunción"},
["zoq"] = {"Zoque Tabasco"},
["zor"] = {"Zoque Rayón"},
["zos"] = {"Zoque Francisco León"},
["zpa"] = {"Zapotecish Lachiguiri"},
["zpb"] = {"Zapotecish Yautepec"},
["zpc"] = {"Zapotecish Choapan"},
["zpd"] = {"Zapotecish Ixtlán Hiar Yiass"},
["zpe"] = {"Zapotecish Petapa"},
["zpf"] = {"Zapotecish San Pedro Quiatoni"},
["zpg"] = {"Zapotecish Guevea De Humboldt"},
["zph"] = {"Zapotecish Totomachapan"},
["zpi"] = {"Zapotecish Santa María Quiegolani"},
["zpj"] = {"Zapotecish Quiavicuzas"},
["zpk"] = {"Zapotecish Tlacolulita"},
["zpl"] = {"Zapotecish Lachixío"},
["zpm"] = {"Zapotecish Mixtepec"},
["zpn"] = {"Zapotecish Santa Inés Yatzechi"},
["zpo"] = {"Zapotecish Amatlán"},
["zpp"] = {"Zapotecish El Alto"},
["zpq"] = {"Zapotecish Zoogocho"},
["zpr"] = {"Zapotecish Santiago Xanica"},
["zps"] = {"Zapotecish Coatlán"},
["zpt"] = {"Zapotecish San Vicente Coatlán"},
["zpu"] = {"Zapotecish Yalálag"},
["zpv"] = {"Zapotecish Chichicapan"},
["zpw"] = {"Zapotecish Zaniza"},
["zpx"] = {"Zapotecish San Baltazar Loxicha"},
["zpy"] = {"Zapotecish Mazaltepec"},
["zpz"] = {"Zapotecish Texmelucan"},
["zqe"] = {"Zhuang Qiubei"},
["zra"] = {"Kara (y Chorea)"},
["zrg"] = {"Mirgan"},
["zrn"] = {"Zerenkel"},
["zro"] = {"Záparo"},
["zrp"] = {"Zarphatish"},
["zrs"] = {"Mairasi"},
["zsa"] = {"Sarasira"},
["zsk"] = {"Kaskeish"},
["zsl"] = {"Çhengey Chowree Hambagh"},
["zsm"] = {"Malayish Stundayrtit"},
["zsr"] = {"Zapotecish Rincon Yiass"},
["zsu"] = {"Sukurum"},
["zte"] = {"Zapotecish Elotepec"},
["ztg"] = {"Zapotecish Xanaguía"},
["ztl"] = {"Zapotecish Lapaguía-Guivini"},
["ztm"] = {"Zapotecish Mixtepec San Agustín"},
["ztn"] = {"Zapotecish Santa Catarina Albarradas"},
["ztp"] = {"Zapotecish Loxicha"},
["ztq"] = {"Zapotecish Quioquitani-Quierí"},
["zts"] = {"Zapotecish Tilquiapan"},
["ztt"] = {"Zapotecish Tejalapan"},
["ztu"] = {"Zapotecish Güilá"},
["ztx"] = {"Zapotecish Zaachila"},
["zty"] = {"Zapotecish Yatee"},
["zuh"] = {"Tokano"},
["zum"] = {"Kumzarish"},
["zun"] = {"Zuni"},
["zuy"] = {"Zumaya"},
["zwa"] = {"Zay"},
["zxx"] = {"Gyn stoo çhengoaylleeagh", "Neuchooie"},
["zyb"] = {"Zhuang Yongbei"},
["zyg"] = {"Zhuang Yang"},
["zyj"] = {"Zhuang Youjiang"},
["zyn"] = {"Zhuang Yongnan"},
["zyp"] = {"Chinish Zyphe"},
["zza"] = {"Zaza", "Dimili", "Dimli (mooar-hengey)", "Kirdki", "Kirmanjki (mooar-hengey)", "Zazakish"},
["zzj"] = {"Zhuang Zuojiang"}
}
local deprecated = {
["in"] = {"Indoneeshish"},
["iw"] = {"Ewnish"},
["ji"] = {"Ewdish"},
["jw"] = {"Javish", "Basa Jawa"},
["mo"] = {"Moldaavish", "Moldovish"},
["aam"] = {"Aramanik"},
["adp"] = {"Adap"},
["agp"] = {"Paranan"},
["ais"] = {"Nataoran Amis"},
["ajp"] = {"Arabish Levaantagh Yiass"},
["ajt"] = {"Arabish Hooneeshagh Ewagh"},
["aoh"] = {"Arma"},
["asd"] = {"Asas"},
["aue"] = {"ǂKxʼauǁʼein"},
["ayx"] = {"Ayi (y Çheen)"},
["ayy"] = {"Tayabas Ayta"},
["baz"] = {"Tunen"},
["bbz"] = {"Creeole Arabish Babalia"},
["bgm"] = {"Baga Mboteni"},
["bhk"] = {"Albay Bicolano"},
["bic"] = {"Bikaru"},
["bij"] = {"Vaghat-Ya-Bijim-Legeri"},
["bjd"] = {"Bandjigali"},
["bjq"] = {"Malagasish Betsimisaraka Yiass"},
["bkb"] = {"Finallig"},
["blg"] = {"Balau"},
["bmy"] = {"Bemba (Pobblaght Gheynlagh y Chongo)"},
["bpb"] = {"Barbacoas"},
["btb"] = {"Beti (Cameroon)"},
["btl"] = {"Bhatola"},
["bxx"] = {"Borna (Pobblaght Gheynlagh y Chongo)"},
["byy"] = {"Buya"},
["cbe"] = {"Chipiajes"},
["cbh"] = {"Cagua"},
["cca"] = {"Cauca"},
["ccq"] = {"Chaungtha"},
["cdg"] = {"Chamari"},
["cjr"] = {"Chorotega"},
["cka"] = {"Khumi Awa Chin"},
["cmk"] = {"Chimakum"},
["coy"] = {"Coyaima"},
["cqu"] = {"Quechua yn Çhillee"},
["cug"] = {"Chungmboko", "Cung"},
["cum"] = {"Cumeral"},
["daf"] = {"Dan"},
["dap"] = {"Nisi (yn Injey)"},
["dgu"] = {"Degaru"},
["dha"] = {"Dhanwar (yn Injey)"},
["dit"] = {"Dirari"},
["djl"] = {"Djiwarli"},
["dkl"] = {"Kolum So Dogon"},
["drh"] = {"Darkhat"},
["drr"] = {"Dororo"},
["drw"] = {"Darwazi"},
["dud"] = {"Hun-Saare"},
["duj"] = {"Dhuwal"},
["dwl"] = {"Walo Kumbe Dogon"},
["ekc"] = {"Karnish Hiar"},
["elp"] = {"Elpaputih"},
["emo"] = {"Emok"},
["gav"] = {"Gabutamon"},
["gbc"] = {"Garawa"},
["gfx"] = {"Mangetti Dune ǃXung"},
["ggn"] = {"Gurung Hiar"},
["ggo"] = {"Gondi Yiass"},
["ggr"] = {"Aghu Tharnggalu"},
["gio"] = {"Gelao"},
["gji"] = {"Geji"},
["gli"] = {"Guliguli"},
["gti"] = {"Gbati-ri"},
["guv"] = {"Gey"},
["hrr"] = {"Horuru"},
["iap"] = {"Iapama"},
["ibi"] = {"Ibilo"},
["ill"] = {"Iranun"},
["ilw"] = {"Talur"},
["ime"] = {"Imeraguen"},
["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"},
["jar"] = {"Jarawa (y Naigeer)"},
["jeg"] = {"Jeng"},
["kbf"] = {"Kakauhua"},
["kdv"] = {"Kado"},
["kgc"] = {"Kasseng"},
["kgd"] = {"Kataang"},
["kgh"] = {"Tanudan Kalinga Heose"},
["kgm"] = {"Karipúna"},
["kjf"] = {"Khalaj [Ind-Eeraanagh]"},
["koj"] = {"Sara Dunjo"},
["kox"] = {"Coxima"},
["kpp"] = {"Karenish Paku"},
["krm"] = {"Krim"},
["ksa"] = {"Shuwa-Zamani"},
["ktr"] = {"Kota Marudu Tinagas"},
["kvs"] = {"Kunggara"},
["kwq"] = {"Kwak"},
["kxe"] = {"Kakihum"},
["kxl"] = {"Kurux Nepaalagh"},
["kxu"] = {"Kui (yn Injey)"},
["kzh"] = {"Kenuzi-Dongola"},
["kzj"] = {"Coastal Kadazan"},
["kzt"] = {"Tambunan Dusun"},
["lak"] = {"Laka (y Naigeer)"},
["lba"] = {"Lui"},
["leg"] = {"Lengua"},
["lii"] = {"Lingkhim"},
["llo"] = {"Khlor"},
["lmm"] = {"Lamam"},
["lmz"] = {"Lumbee"},
["lno"] = {"Lango (y Toodaan Yiass)"},
["lsg"] = {"Çhengey Chowree Lyons"},
["meg"] = {"Mea"},
["mgx"] = {"Omati"},
["mhh"] = {"Maskoy Vrisht"},
["mja"] = {"Mahei"},
["mld"] = {"Malakhel"},
["mnt"] = {"Maykulan"},
["mof"] = {"Mohegan-Montauk-Narragansett"},
["mst"] = {"Cataelano Mandaya"},
["mvm"] = {"Muya"},
["mwd"] = {"Mudbura"},
["mwj"] = {"Maligo"},
["mwx"] = {"Mediak"},
["mwy"] = {"Mosiro"},
["myd"] = {"Maramba"},
["myi"] = {"Mina (yn Injey)"},
["myq"] = {"Maninkish Cheylley"},
["myt"] = {"Sangab Mandaya"},
["nad"] = {"Nijadali"},
["nbf"] = {"Naxi"},
["nbx"] = {"Ngura"},
["ncp"] = {"Ndaktup"},
["ngo"] = {"Ngoni"},
["nln"] = {"Nahuatl Durango"},
["nlr"] = {"Ngarla"},
["nns"] = {"Ningye"},
["nnx"] = {"Ngong"},
["nom"] = {"Nocamán"},
["noo"] = {"Nootka"},
["nts"] = {"Natagaimas"},
["nxu"] = {"Narau"},
["ome"] = {"Omejes"},
["oun"] = {"ǃOǃung"},
["pat"] = {"Papitalai"},
["pbz"] = {"Palu"},
["pcr"] = {"Panang"},
["pgy"] = {"Pongyong"},
["pii"] = {"Pini"},
["plj"] = {"Polci"},
["plp"] = {"Palpa"},
["pmc"] = {"Palumata"},
["pmk"] = {"Pamlico"},
["pmu"] = {"Panjabish Mirpur"},
["pod"] = {"Ponares"},
["ppa"] = {"Pao"},
["ppr"] = {"Piru"},
["prb"] = {"Lua'"},
["prp"] = {"Parsi"},
["pry"] = {"Pray 3"},
["puk"] = {"Pu Ko"},
["puz"] = {"Purum Naga"},
["rie"] = {"Rien"},
["rmr"] = {"Caló"},
["rna"] = {"Runa"},
["rsi"] = {"Çhengey Chowree Rennellagh"},
["sap"] = {"Sanapaná"},
["sca"] = {"Sansu"},
["sdm"] = {"Semandang"},
["sgl"] = {"Sanglechi-Ishkashimi"},
["sgo"] = {"Songa"},
["skk"] = {"Sok"},
["slq"] = {"Salchuq"},
["smd"] = {"Sama"},
["snb"] = {"Sebuyau"},
["snh"] = {"Shinabo"},
["sul"] = {"Surigaonon"},
["sum"] = {"Sumo-Mayangna"},
["svr"] = {"Savara"},
["szd"] = {"Seru"},
["tbb"] = {"Tapeba"},
["tdu"] = {"Tempasuk Dusun"},
["tgg"] = {"Tangga"},
["thc"] = {"Tai Hang Tong"},
["thw"] = {"Thudam"},
["thx"] = {"The"},
["tid"] = {"Tidong"},
["tie"] = {"Tingal"},
["tkk"] = {"Takpa"},
["tlw"] = {"Wemale Yiass"},
["tmk"] = {"Tamang Heear Hwoaie"},
["tmp"] = {"Tai Mène"},
["tne"] = {"Tinoc Kallahan"},
["tnf"] = {"Tangshewi"},
["toe"] = {"Tomedes"},
["tpw"] = {"Tupí"},
["tsf"] = {"Tamang Heear Yiass"},
["unp"] = {"Worora"},
["uok"] = {"Uokha"},
["uun"] = {"Kulon-Pazeh"},
["vki"] = {"Ija-Zuba"},
["wgw"] = {"Wagawaga"},
["wit"] = {"Wintu"},
["wiw"] = {"Wirangu"},
["wra"] = {"Warapu"},
["wrd"] = {"Warduji"},
["wya"] = {"Wyandot"},
["xba"] = {"Kamba (y Vrasseel)"},
["xbx"] = {"Kabixí"},
["xia"] = {"Xiandao"},
["xip"] = {"Xipináwa"},
["xkh"] = {"Karahawyana"},
["xrq"] = {"Karranga"},
["xss"] = {"Assan"},
["xtz"] = {"Tasmaanish"},
["ybd"] = {"Yangbye"},
["yds"] = {"Çhengey Chowree Ewdagh"},
["yen"] = {"Yendang"},
["yiy"] = {"Yir Yoront"},
["yma"] = {"Yamphe"},
["ymt"] = {"Mator-Taygi-Karagas"},
["ynh"] = {"Yangho"},
["yos"] = {"Yos"},
["yri"] = {"Yarí"},
["yuu"] = {"Yugh"},
["zir"] = {"Ziriya"},
["zkb"] = {"Koibal"},
["zua"] = {"Zeem"}
}
return {
active = active,
deprecated = deprecated,
}
0fgrm5chhz7eqvcsqib0bmzht4vsntf
Mrunal Thakur
0
35607
394593
363034
2026-10-17T01:47:34Z
MacTire02
219
++
394593
wikitext
text/x-wiki
{{WD Kishtey Fys Dooinney
| jalloo = Mrunal Thakur in Andheri 1 (cropped).jpg
| fo-heidyl = Thakur ayns 2024
| date_ruggyr = {{date_ruggyr|df=yes|1992|08|01}}
| boayl_ruggyr = [[Dhule]], [[Maharashtra]], yn Injey
| yrjid = {{cvt|1.65|m|ft}}
| trimmid = {{cvt|55|kg|lb}}
| towshan = 34C-28-38
}}
She ben-aghteyr Injinagh ee '''Mrunal Thakur''' (ruggit er 1 Luanistyn 1992). Er y chooid smoo, t'ee cloie ayns filmyn [[Hindish]] as [[Teloogooish]].<ref>{{Cite news |title=When Mrunal Thakur was replaced from lead to second lead in a TV show, interesting facts about the actress |publisher=India TV |access-date=16 Luanistyn 2024 |url=https://www.indiatvnews.com/entertainment/celebrities/when-mrunal-thakur-was-replaced-from-lead-to-second-lead-in-a-tv-show-interesting-facts-about-birthday-girl-2024-08-01-944666 |date=1 Luanistyn 2024}}</ref> Ghow ee toshiaght rish e coorse cloie 'sy çhellveeish tra chloie ee ayns ny sheabin-dramaghyn ''[[Mujhse Kuchh Kehti...Yeh Khamoshiyaan]]'' (2012) as ''[[Kumkum Bhagya]]'' (2014–2016), chossyn j'ee [[Aundyr ITA da'n Ven-aghteyr Share ayns Paart Co-hassooagh|Aundyr ITA]]. Ren ee e chied fillym 'sy [[Scannaneaght y Hindish|Hindish]] lesh y fillym ''[[Love Sonia]]'' (2018) as chloie ee y ven toshee ayns ny filmyn rahoil ''[[Super 30 (fillym)|Super 30]]'' as ''[[Batla House]]'' (y daa jeu ayns 2019).
Lurg tuittym coorse beg eck, hooar Thakur ny smoo ennoilid lesh ny dramaghyn romansagh [[Scannaneaght y Teloogooish|Teloogooish]] ''[[Sita Ramam]]'' (2022) as ''[[Hi Nanna]]'' (2023), raad chossyn ee [[Aundyr Filmfare da'n Ven-aghteyr Share – Teloogooish]] da'n fillym jerrinagh shen.<ref>{{Cite news |last=Rao |first=Justin |title=Why internet can't stop talking about Mrunal Thakur from Hi Nanna: Decoding Telugu success of the actor who isn't settling for flowerpot roles in South films |work=The Indian Express |access-date=11 Jerrey Geuree 2024 |url=https://indianexpress.com/article/entertainment/bollywood/why-internet-cant-stop-talking-about-mrunal-thakur-from-hi-nana-decoding-telugu-success-of-the-actor-who-isnt-settling-for-flowerpot-roles-in-south-films-9102903/ |date=11 Jerrey Geuree 2024}}</ref>
==Imraaghyn==
{{Reflist}}
==Kianglaghyn magh==
{{commonscat}}
* {{IMDb name}}
* {{Bollywood Hungama person|mrunal-thakur}}
*{{Twitter|mrunal0801}}
*{{Instagram}}
{{Aundyr Chremeyderyn SIIMA da'n Ven-aghteyr Share – Teloogooish}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Thakur, Mrunal}}
[[Ronney:Ruggyryn 'sy vlein 1992]]
[[Ronney:Feallee vio]]
[[Ronney:Aghteyryn bwoirrin Injinagh y 21d eash]]
[[Ronney:Aghteyryn çhellveeish bwoirrin Injinagh]]
[[Ronney:Aghteyryn fillym bwoirrin Injinagh]]
[[Ronney:Marathee]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Hindish]]
[[Ronney:Aghteyryn bwoirrin ayns çhellveeish y Hindish]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Varathish]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Teloogooish]]
[[Ronney:Feallee ass Dhule]]
[[Ronney:Aghteyryn ass Maharashtra]]
rst4ihv21tswaw2e3v84zdrvi8em651
Module:ISO 639 name/ISO 639-2
828
47025
394548
394407
2026-10-16T14:34:12Z
MacTire02
219
wolofish
394548
Scribunto
text/plain
-- File-Date: 2013-01-11
return { -- 639-2T
["aar"] = {"Afar"},
["abk"] = {"Abkhazian"},
["ace"] = {"Achinese"},
["ach"] = {"Acoli"},
["ada"] = {"Adangme"},
["ady"] = {"Adyghe", "Adygei"},
["afa"] = {"Afro-Asiatic languages"},
["afh"] = {"Afrihili"},
["afr"] = {"Affrickaanish"},
["ain"] = {"Ainu"},
["aka"] = {"Akan"},
["akk"] = {"Akkadian"},
["ale"] = {"Aleut"},
["alg"] = {"Algonquian languages"},
["alt"] = {"Southern Altai"},
["amh"] = {"Amharic"},
["ang"] = {"English, Old (ca.450-1100)"},
["anp"] = {"Angika"},
["apa"] = {"Apache languages"},
["ara"] = {"Arabic"},
["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"},
["arg"] = {"Aragonese"},
["arn"] = {"Mapudungun", "Mapuche"},
["arp"] = {"Arapaho"},
["art"] = {"Artificial languages"},
["arw"] = {"Arawak"},
["asm"] = {"Assamese"},
["ast"] = {"Asturian", "Bable", "Leonese", "Asturleonese"},
["ath"] = {"Athapascan languages"},
["aus"] = {"Australian languages"},
["ava"] = {"Avaric"},
["ave"] = {"Avestan"},
["awa"] = {"Awadhi"},
["aym"] = {"Aymara"},
["aze"] = {"Azerbaijani"},
["bad"] = {"Banda languages"},
["bai"] = {"Bamileke languages"},
["bak"] = {"Bashkir"},
["bal"] = {"Baluchi"},
["bam"] = {"Bambara"},
["ban"] = {"Balinese"},
["bas"] = {"Basa"},
["bat"] = {"Baltic languages"},
["bej"] = {"Beja", "Bedawiyet"},
["bel"] = {"Belarusian"},
["bem"] = {"Bemba"},
["ben"] = {"Bengali"},
["ber"] = {"Berber languages"},
["bho"] = {"Bhojpuri"},
["bih"] = {"Bihari languages"},
["bik"] = {"Bikol"},
["bin"] = {"Bini", "Edo"},
["bis"] = {"Bislama"},
["bla"] = {"Siksika"},
["bnt"] = {"Bantu languages"},
["bod"] = {"Tibetan"},
["bos"] = {"Bosnian"},
["bra"] = {"Braj"},
["bre"] = {"Breton"},
["btk"] = {"Batak languages"},
["bua"] = {"Buriat"},
["bug"] = {"Buginese"},
["bul"] = {"Bulgarian"},
["byn"] = {"Blin", "Bilin"},
["cad"] = {"Caddo"},
["cai"] = {"Central American Indian languages"},
["car"] = {"Galibi Carib"},
["cat"] = {"Catalan", "Valencian"},
["cau"] = {"Caucasian languages"},
["ceb"] = {"Cebuano"},
["cel"] = {"Celtic languages"},
["ces"] = {"Czech"},
["cha"] = {"Chamorro"},
["chb"] = {"Chibcha"},
["che"] = {"Chechen"},
["chg"] = {"Chagatai"},
["chk"] = {"Chuukese"},
["chm"] = {"Mari"},
["chn"] = {"Chinook jargon"},
["cho"] = {"Choctaw"},
["chp"] = {"Chipewyan", "Dene Suline"},
["chr"] = {"Cherokee"},
["chu"] = {"Church Slavic", "Old Slavonic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic"},
["chv"] = {"Chuvash"},
["chy"] = {"Cheyenne"},
["cmc"] = {"Chamic languages"},
["cnr"] = {"Montenegrin"},
["cop"] = {"Coptic"},
["cor"] = {"Cornish"},
["cos"] = {"Corsican"},
["cpe"] = {"Creoles and pidgins, English based"},
["cpf"] = {"Creoles and pidgins, French-based"},
["cpp"] = {"Creoles and pidgins, Portuguese-based"},
["cre"] = {"Cree"},
["crh"] = {"Crimean Tatar", "Crimean Turkish"},
["crp"] = {"Creoles and pidgins"},
["csb"] = {"Kashubian"},
["cus"] = {"Cushitic languages"},
["cym"] = {"Welsh"},
["dak"] = {"Dakota"},
["dan"] = {"Danish"},
["dar"] = {"Dargwa"},
["day"] = {"Land Dayak languages"},
["del"] = {"Delaware"},
["den"] = {"Slave (Athapascan)"},
["deu"] = {"German"},
["dgr"] = {"Dogrib"},
["din"] = {"Dinka"},
["div"] = {"Divehi", "Dhivehi", "Maldivian"},
["doi"] = {"Dogri"},
["dra"] = {"Dravidian languages"},
["dsb"] = {"Lower Sorbian"},
["dua"] = {"Duala"},
["dum"] = {"Dutch, Middle (ca.1050-1350)"},
["dyu"] = {"Dyula"},
["dzo"] = {"Dzongkha"},
["efi"] = {"Efik"},
["egy"] = {"Egyptian (Ancient)"},
["eka"] = {"Ekajuk"},
["ell"] = {"Greek, Modern (1453-)"},
["elx"] = {"Elamite"},
["eng"] = {"English"},
["enm"] = {"English, Middle (1100-1500)"},
["epo"] = {"Esperanto"},
["est"] = {"Estonian"},
["eus"] = {"Basque"},
["ewe"] = {"Ewe"},
["ewo"] = {"Ewondo"},
["fan"] = {"Fang"},
["fao"] = {"Faroese"},
["fas"] = {"Persian"},
["fat"] = {"Fanti"},
["fij"] = {"Fijian"},
["fil"] = {"Filipino", "Pilipino"},
["fin"] = {"Finnish"},
["fiu"] = {"Finno-Ugrian languages"},
["fon"] = {"Fon"},
["fra"] = {"French"},
["frm"] = {"French, Middle (ca.1400-1600)"},
["fro"] = {"French, Old (842-ca.1400)"},
["frr"] = {"Northern Frisian"},
["frs"] = {"Eastern Frisian"},
["fry"] = {"Western Frisian"},
["ful"] = {"Fulah"},
["fur"] = {"Friulian"},
["gaa"] = {"Ga"},
["gay"] = {"Gayo"},
["gba"] = {"Gbaya"},
["gem"] = {"Germanic languages"},
["gez"] = {"Geez"},
["gil"] = {"Gilbertese"},
["gla"] = {"Gaelic", "Scottish Gaelic"},
["gle"] = {"Irish"},
["glg"] = {"Galician"},
["glv"] = {"Manx"},
["gmh"] = {"German, Middle High (ca.1050-1500)"},
["goh"] = {"German, Old High (ca.750-1050)"},
["gon"] = {"Gondi"},
["gor"] = {"Gorontalo"},
["got"] = {"Gothic"},
["grb"] = {"Grebo"},
["grc"] = {"Greek, Ancient (to 1453)"},
["grn"] = {"Guarani"},
["gsw"] = {"Swiss German", "Alemannic", "Alsatian"},
["guj"] = {"Gujarati"},
["gwi"] = {"Gwich'in"},
["hai"] = {"Haida"},
["hat"] = {"Haitian", "Haitian Creole"},
["hau"] = {"Hausa"},
["haw"] = {"Hawaiian"},
["heb"] = {"Hebrew"},
["her"] = {"Herero"},
["hil"] = {"Hiligaynon"},
["him"] = {"Himachali languages", "Western Pahari languages"},
["hin"] = {"Hindi"},
["hit"] = {"Hittite"},
["hmn"] = {"Hmong", "Mong"},
["hmo"] = {"Hiri Motu"},
["hrv"] = {"Croatian"},
["hsb"] = {"Upper Sorbian"},
["hun"] = {"Hungarian"},
["hup"] = {"Hupa"},
["hye"] = {"Armenian"},
["iba"] = {"Iban"},
["ibo"] = {"Igbo"},
["ido"] = {"Ido"},
["iii"] = {"Sichuan Yi", "Nuosu"},
["ijo"] = {"Ijo languages"},
["iku"] = {"Inuktitut"},
["ile"] = {"Interlingue", "Occidental"},
["ilo"] = {"Iloko"},
["ina"] = {"Interlingua (International Auxiliary Language Association)"},
["inc"] = {"Indic languages"},
["ind"] = {"Indonesian"},
["ine"] = {"Indo-European languages"},
["inh"] = {"Ingush"},
["ipk"] = {"Inupiaq"},
["ira"] = {"Iranian languages"},
["iro"] = {"Iroquoian languages"},
["isl"] = {"Icelandic"},
["ita"] = {"Italian"},
["jav"] = {"Javanese"},
["jbo"] = {"Lojban"},
["jpn"] = {"Japanese"},
["jpr"] = {"Judeo-Persian"},
["jrb"] = {"Judeo-Arabic"},
["kaa"] = {"Kara-Kalpak"},
["kab"] = {"Kabyle"},
["kac"] = {"Kachin", "Jingpho"},
["kal"] = {"Kalaallisut", "Greenlandic"},
["kam"] = {"Kamba"},
["kan"] = {"Kannada"},
["kar"] = {"Karen languages"},
["kas"] = {"Kashmiri"},
["kat"] = {"Georgian"},
["kau"] = {"Kanuri"},
["kaw"] = {"Kawi"},
["kaz"] = {"Kazakh"},
["kbd"] = {"Kabardian"},
["kha"] = {"Khasi"},
["khi"] = {"Khoisan languages"},
["khm"] = {"Central Khmer"},
["kho"] = {"Khotanese", "Sakan"},
["kik"] = {"Kikuyu", "Gikuyu"},
["kin"] = {"Kinyarwanda"},
["kir"] = {"Kirghiz", "Kyrgyz"},
["kmb"] = {"Kimbundu"},
["kok"] = {"Konkani"},
["kom"] = {"Komish"},
["kon"] = {"Kongoish"},
["kor"] = {"Koreeish"},
["kos"] = {"Kosraean"},
["kpe"] = {"Kpelle"},
["krc"] = {"Karachay-Balkar"},
["krl"] = {"Karelish"},
["kro"] = {"Kru languages"},
["kru"] = {"Kurukh"},
["kua"] = {"Kuanyama", "Kwanyama"},
["kum"] = {"Kumykish"},
["kur"] = {"Kurdish"},
["kut"] = {"Kutenai"},
["lad"] = {"Ladino"},
["lah"] = {"Lahnda"},
["lam"] = {"Lamba"},
["lao"] = {"Lao"},
["lat"] = {"Latin"},
["lav"] = {"Latvian"},
["lez"] = {"Lezghian"},
["lim"] = {"Limburgan", "Limburger", "Limburgish"},
["lin"] = {"Lingala"},
["lit"] = {"Lithuanian"},
["lol"] = {"Mongo"},
["loz"] = {"Lozi"},
["ltz"] = {"Luxembourgish", "Letzeburgesch"},
["lua"] = {"Luba-Lulua"},
["lub"] = {"Luba-Katanga"},
["lug"] = {"Ganda"},
["lui"] = {"Luiseno"},
["lun"] = {"Lunda"},
["luo"] = {"Luo (Kenya and Tanzania)"},
["lus"] = {"Lushai"},
["mad"] = {"Madurese"},
["mag"] = {"Magahi"},
["mah"] = {"Marshallese"},
["mai"] = {"Maithili"},
["mak"] = {"Makasar"},
["mal"] = {"Malayalam"},
["man"] = {"Mandingo"},
["map"] = {"Austronesian languages"},
["mar"] = {"Marathi"},
["mas"] = {"Masai"},
["mdf"] = {"Moksha"},
["mdr"] = {"Mandar"},
["men"] = {"Mende"},
["mga"] = {"Irish, Middle (900-1200)"},
["mic"] = {"Mi'kmaq", "Micmac"},
["min"] = {"Minangkabau"},
["mis"] = {"Uncoded languages"},
["mkd"] = {"Macedonian"},
["mkh"] = {"Mon-Khmer languages"},
["mlg"] = {"Malagasy"},
["mlt"] = {"Maltese"},
["mnc"] = {"Manchu"},
["mni"] = {"Manipuri"},
["mno"] = {"Manobo languages"},
["moh"] = {"Mohawk"},
["mon"] = {"Mongolian"},
["mos"] = {"Mossi"},
["mri"] = {"Maori"},
["msa"] = {"Malay"},
["mul"] = {"Multiple languages"},
["mun"] = {"Munda languages"},
["mus"] = {"Creek"},
["mwl"] = {"Mirandese"},
["mwr"] = {"Marwari"},
["mya"] = {"Burmese"},
["myn"] = {"Mayan languages"},
["myv"] = {"Erzya"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["nap"] = {"Neapolitan"},
["nau"] = {"Nauru"},
["nav"] = {"Navajo", "Navaho"},
["nbl"] = {"Ndebele, South", "South Ndebele"},
["nde"] = {"Ndebele, North", "North Ndebele"},
["ndo"] = {"Ndonga"},
["nds"] = {"Low German", "Low Saxon", "German, Low", "Saxon, Low"},
["nep"] = {"Nepali"},
["new"] = {"Nepal Bhasa", "Newari"},
["nia"] = {"Nias"},
["nic"] = {"Niger-Kordofanian languages"},
["niu"] = {"Niuean"},
["nld"] = {"Dutch", "Flemish"},
["nno"] = {"Norwegian Nynorsk", "Nynorsk, Norwegian"},
["nob"] = {"Bokmål, Norwegian", "Norwegian Bokmål"},
["nog"] = {"Nogai"},
["non"] = {"Norse, Old"},
["nor"] = {"Norwegian"},
["nqo"] = {"N'Ko"},
["nso"] = {"Pedi", "Sepedi", "Northern Sotho"},
["nub"] = {"Nubian languages"},
["nwc"] = {"Classical Newari", "Old Newari", "Classical Nepal Bhasa"},
["nya"] = {"Chewish", "Chichewa", "Chewa", "Nyanja"},
["nym"] = {"Nyamwezi"},
["nyn"] = {"Nyankole"},
["nyo"] = {"Nyoro"},
["nzi"] = {"Nzima"},
["oci"] = {"Occitan (post 1500)"},
["oji"] = {"Ojibwa"},
["ori"] = {"Oriya"},
["orm"] = {"Oromo"},
["osa"] = {"Osage"},
["oss"] = {"Ossetian", "Ossetic"},
["ota"] = {"Turkish, Ottoman (1500-1928)"},
["oto"] = {"Otomian languages"},
["paa"] = {"Papuan languages"},
["pag"] = {"Pangasinan"},
["pal"] = {"Pahlavi"},
["pam"] = {"Pampanga", "Kapampangan"},
["pan"] = {"Panjabi", "Punjabi"},
["pap"] = {"Papiamento"},
["pau"] = {"Palauan"},
["peo"] = {"Persian, Old (ca.600-400 B.C.)"},
["phi"] = {"Philippine languages"},
["phn"] = {"Phoenician"},
["pli"] = {"Pali"},
["pol"] = {"Polish"},
["pon"] = {"Pohnpeian"},
["por"] = {"Portuguese"},
["pra"] = {"Prakrit languages"},
["pro"] = {"Provençal, Old (to 1500)", "Occitan, Old (to 1500)"},
["pus"] = {"Pushto", "Pashto"},
["que"] = {"Quechua"},
["raj"] = {"Rajasthani"},
["rap"] = {"Rapanui"},
["rar"] = {"Rarotongan", "Cook Islands Maori"},
["roa"] = {"Romance languages"},
["roh"] = {"Romansh"},
["rom"] = {"Romany"},
["ron"] = {"Romanian", "Moldavian", "Moldovan"},
["run"] = {"Rundi"},
["rup"] = {"Aromanian", "Arumanian", "Macedo-Romanian"},
["rus"] = {"Russian"},
["sad"] = {"Sandawe"},
["sag"] = {"Sango"},
["sah"] = {"Yakut"},
["sai"] = {"South American Indian languages"},
["sal"] = {"Salishan languages"},
["sam"] = {"Samaritan Aramaic"},
["san"] = {"Sanskrit"},
["sas"] = {"Sasak"},
["sat"] = {"Santali"},
["scn"] = {"Sicilian"},
["sco"] = {"Baarle Albinagh"},
["sel"] = {"Selkup"},
["sem"] = {"Semitic languages"},
["sga"] = {"Irish, Old (to 900)"},
["sgn"] = {"Sign Languages"},
["shn"] = {"Shan"},
["sid"] = {"Sidamo"},
["sin"] = {"Sinhala", "Sinhalese"},
["sio"] = {"Siouan languages"},
["sit"] = {"Sino-Tibetan languages"},
["sla"] = {"Slavic languages"},
["slk"] = {"Slovak"},
["slv"] = {"Slovenian"},
["sma"] = {"Southern Sami"},
["sme"] = {"Northern Sami"},
["smi"] = {"Sami languages"},
["smj"] = {"Lule Sami"},
["smn"] = {"Inari Sami"},
["smo"] = {"Samoan"},
["sms"] = {"Saamish Skolt"},
["sna"] = {"Shonish"},
["snd"] = {"Sindhi"},
["snk"] = {"Soninke"},
["sog"] = {"Sogdian"},
["som"] = {"Somali"},
["son"] = {"Songhai languages"},
["sot"] = {"Sotho, Southern"},
["spa"] = {"Spanish", "Castilian"},
["sqi"] = {"Albanian"},
["srd"] = {"Sardinian"},
["srn"] = {"Sranan Tongo"},
["srp"] = {"Serbian"},
["srr"] = {"Serer"},
["ssa"] = {"Nilo-Saharan languages"},
["ssw"] = {"Swati"},
["suk"] = {"Sukuma"},
["sun"] = {"Sundanese"},
["sus"] = {"Susu"},
["sux"] = {"Sumerian"},
["swa"] = {"Swahili"},
["swe"] = {"Swedish"},
["syc"] = {"Classical Syriac"},
["syr"] = {"Syriac"},
["tah"] = {"Tahitian"},
["tai"] = {"Tai languages"},
["tam"] = {"Tamil"},
["tat"] = {"Tatar"},
["tel"] = {"Telugu"},
["tem"] = {"Timne"},
["ter"] = {"Tereno"},
["tet"] = {"Tetum"},
["tgk"] = {"Tajik"},
["tgl"] = {"Tagalog"},
["tha"] = {"Thai"},
["tig"] = {"Tigre"},
["tir"] = {"Tigrinya"},
["tiv"] = {"Tiv"},
["tkl"] = {"Tokelau"},
["tlh"] = {"Klingon", "tlhIngan-Hol"},
["tli"] = {"Tlingit"},
["tmh"] = {"Tamashek"},
["tog"] = {"Tonga (Nyasa)"},
["ton"] = {"Tonga (Tonga Islands)"},
["tpi"] = {"Tok Pisin"},
["tsi"] = {"Tsimshian"},
["tsn"] = {"Tswana"},
["tso"] = {"Tsonga"},
["tuk"] = {"Turkmen"},
["tum"] = {"Tumbuka"},
["tup"] = {"Tupi languages"},
["tur"] = {"Turkish"},
["tut"] = {"Altaic languages"},
["tvl"] = {"Tuvalu"},
["twi"] = {"Twi"},
["tyv"] = {"Tuvinian"},
["udm"] = {"Udmurt"},
["uga"] = {"Ugaritic"},
["uig"] = {"Uighur", "Uyghur"},
["ukr"] = {"Ukrainian"},
["umb"] = {"Umbundu"},
["und"] = {"Undetermined"},
["urd"] = {"Urdu"},
["uzb"] = {"Uzbek"},
["vai"] = {"Vai"},
["ven"] = {"Venda"},
["vie"] = {"Vietnamese"},
["vol"] = {"Volapük"},
["vot"] = {"Votic"},
["wak"] = {"Wakashan languages"},
["wal"] = {"Wolaitta", "Wolaytta"},
["war"] = {"Waray"},
["was"] = {"Washo"},
["wen"] = {"Sorbian languages"},
["wln"] = {"Walloonish"},
["wol"] = {"Wolofish"},
["xal"] = {"Kalmyk", "Oirat"},
["xho"] = {"Xhosa"},
["yao"] = {"Yao"},
["yap"] = {"Yapese"},
["yid"] = {"Yiddish"},
["yor"] = {"Yoruba"},
["ypk"] = {"Yupik languages"},
["zap"] = {"Zapotec"},
["zbl"] = {"Blissymbols", "Blissymbolics", "Bliss"},
["zen"] = {"Zenaga"},
["zgh"] = {"Standard Moroccan Tamazight"},
["zha"] = {"Zhuang", "Chuang"},
["zho"] = {"Chinese"},
["znd"] = {"Zande languages"},
["zul"] = {"Zulu"},
["zun"] = {"Zuni"},
["zxx"] = {"No linguistic content", "Not applicable"},
["zza"] = {"Zaza", "Dimili", "Dimli", "Kirdki", "Kirmanjki", "Zazaki"}
}
nkwlblvzpaoi4b1u4qiqnykgmpa60lz
Module:Kishtey fys çheer
828
55827
394568
393291
2026-10-16T17:35:04Z
MacTire02
219
-chaghteraghtyn
394568
Scribunto
text/plain
local p = {}
-- Helper to safely grab template arguments
local function getArgs(frame)
local parent = frame:getParent()
if parent then return parent.args end
return frame.args
end
-- Strips a leading "the "/"The " from an English P1448 name (Wikidata often
-- stores "the United States of America"). Only applied to English text --
-- a country whose name genuinely starts with "The" (e.g. The Bahamas, The
-- Gambia) should use |ennym_foddey_cadjincliaghtagh= to override this.
local function stripLeadingThe(text, langCode)
if langCode == "en" and text:match("^[Tt]he%s+%S") then
return text:gsub("^[Tt]he%s+", "", 1)
end
return text
end
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and value ~= "" then
local trimmed = value:match("^%s*(.-)%s*$")
if trimmed ~= "" then return trimmed end
end
end
return nil
end
function p.main(frame)
local args = getArgs(frame)
local rows = {}
-- The universal border rule separating your modules
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
-- Centralized module injection manager
local function appendModule(content)
if content and content ~= "" then
if #rows > 0 then
table.insert(rows, dividerLine)
end
table.insert(rows, content)
end
end
--------------------------------------------------
-- MODULE 1: HEADER & OFFICIAL NAMES
--------------------------------------------------
local title = args["ennym"] or mw.title.getCurrentTitle().text
local subTitle = getManual(args, {"ennym_foddey_cadjincliaghtagh", "ennym_dooghyssagh"})
if not subTitle or subTitle == "" then
local entity = mw.wikibase.getEntityObject()
if entity then
local successLang, langData = pcall(mw.loadData, "Module:Lang/data")
if successLang and langData and langData.lang_name_table and langData.lang_name_table.lang then
local statements = entity:getBestStatements("P1448")
if statements and #statements > 0 then
for _, statement in ipairs(statements) do
if statement.mainsnak and statement.mainsnak.datavalue then
local value = statement.mainsnak.datavalue.value
if value and value.text then
local langCode = value.language or ""
local langName = langData.lang_name_table.lang[langCode] or langCode
local nameText = stripLeadingThe(value.text, langCode)
subTitle = nameText .. ' <small>([[' .. langName .. '|' .. langName .. ']])</small>'
break
end
end
end
end
end
end
end
local headerHtml = '<tr class="adr"><th colspan="2" class="fn org country-name" style="line-height:1.2em; padding:0.25em 0.4em 0.33em; font-size:1.25em; text-align:center; font-weight:normal;"><span style="font-weight:bold;">' .. title .. '</span>'
if subTitle and subTitle ~= "" then
headerHtml = headerHtml .. '<div style="padding-top:0.25em; font-weight:normal;">' .. subTitle .. '</div>'
end
headerHtml = headerHtml .. '</th></tr>'
table.insert(rows, headerHtml)
--------------------------------------------------
-- MODULE 2: FLAGS & ARMS
--------------------------------------------------
local successFlags, flagsMod = pcall(require, "Module:Kishtey fys çheer/bratteeyn")
if successFlags and flagsMod and flagsMod.main then
appendModule(flagsMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 3: SYMBOLS (MOTTO & ANTHEMS)
--------------------------------------------------
local successSymbols, symbolsMod = pcall(require, "Module:Kishtey fys çheer/cowraghyn")
if successSymbols and symbolsMod and symbolsMod.main then
appendModule(symbolsMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 4: LOCATOR MAPS
--------------------------------------------------
-- FIXED: Tries BOTH paths sequentially to guarantee zero-fail execution regardless of your physical page name setup
-- try both page-name spellings, in case the module is ever moved
local successMaps, mapsMod = pcall(require, "Module:Kishtey fys çheer/caslyssyn-çheerey")
if not successMaps or not mapsMod then
successMaps, mapsMod = pcall(require, "Module:Kishtey fys çheer/caslyssyn")
end
if successMaps and mapsMod and mapsMod.main then
appendModule(mapsMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 5: CITIES & CAPITALS
--------------------------------------------------
local successCities, citiesMod = pcall(require, "Module:Kishtey fys çheer/balley")
if successCities and citiesMod and citiesMod.main then
appendModule(citiesMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 6: LANGUAGES
--------------------------------------------------
local successLanguages, languagesMod = pcall(require, "Module:Kishtey fys çheer/çhengaghyn")
if successLanguages and languagesMod and languagesMod.main then
appendModule(languagesMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 7: ETHNIC GROUPS
--------------------------------------------------
local successEthnic, ethnicMod = pcall(require, "Module:Kishtey fys çheer/possanyn_kynneeagh")
if successEthnic and ethnicMod and ethnicMod.main then
appendModule(ethnicMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 8: RELIGION
--------------------------------------------------
local successReligion, religionMod = pcall(require, "Module:Kishtey fys çheer/craueeaght")
if successReligion and religionMod and religionMod.main then
appendModule(religionMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 9: GOVERNMENT & LEADERS
--------------------------------------------------
local successGov, govMod = pcall(require, "Module:Kishtey fys çheer/reiltys")
if successGov and govMod and govMod.main then
appendModule(govMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 10: AREA
--------------------------------------------------
local successArea, areaMod = pcall(require, "Module:Kishtey fys çheer/eaghtyr")
if successArea and areaMod and areaMod.main then
appendModule(areaMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 11: POPULATION
--------------------------------------------------
local successPop, popMod = pcall(require, "Module:Kishtey fys çheer/pobble")
if successPop and popMod and popMod.main then
appendModule(popMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 12: ECONOMIC STATISTICS
--------------------------------------------------
local successTarmaynys, tarmaynysMod = pcall(require, "Module:Kishtey fys çheer/tarmaynys")
if successTarmaynys and tarmaynysMod and tarmaynysMod.main then
appendModule(tarmaynysMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 13: COUNTRY CODES & TECHNICAL INFORMATION
--------------------------------------------------
local successCoadyn, coadynMod = pcall(require, "Module:Kishtey fys çheer/coadyn")
if successCoadyn and coadynMod and coadynMod.main then
appendModule(coadynMod.main(frame, args))
end
if #rows <= 1 then
return nil
end
return '<table class="infobox geography vcard" style="float:right; clear:right; margin:0.5em 0 1em 1em; width:24.15em; border:1px solid #a2a9b1; border-collapse:collapse; font-size:95%;">' .. table.concat(rows) .. '</table>'
end
return p
p9pwr98xb2kfbdoczn3rxmr6yyqev03
Module:Enmyn çheerey
828
55828
394633
394473
2026-10-17T05:37:27Z
MacTire02
219
+SADR/PGAT
394633
Scribunto
text/plain
local p = {}
-- Enmyn çheerey as ny lhiegganyn gienneydagh oc.
-- Cur lhimmaghyn ayns shoh my vel feme orroo.
--
-- Ordered by Manx alphabetization, not English: sorted by headword, with
-- the leading article (yn/y/ny, including the ny h- form) never counted,
-- and -- for countries specifically -- a leading "Ellan y", "Ellanyn", or
-- "ny h-Ellanyn" not counted either (though these DO count in other
-- contexts, just not here). çh and ch are treated as identical for sorting
-- purposes (e.g. "Yn Chanadey" and "Yn Çheck" interleave by the vowel that
-- follows, not by the cedilla), per the mutated spelling as actually
-- written -- initial mutation is not reversed to a radical form for
-- sorting.
--
-- Genitive singular article: "yn" before a vowel-initial noun, "y" before
-- a consonant-initial one (confirmed against your corrections -- Danvarg,
-- Cholombey, Ghuatemaley, and 22 further consonant-initial entries that
-- had been left as "yn" by mistake, now all "y").
local country_names = {
["Yn Abcaash"] = "Yn Abcaash",
["Yn Albaan"] = "Yn Albaan",
["Andorra"] = "Andorra",
["Antigua as Barbuda"] = "Antigua as Barbuda",
["Ard-valley yn Phaab"] = "Ard-valley yn Phaab",
["Yn Argenteen"] = "Yn Argenteen",
["Yn Armean"] = "Yn Armean",
["Yn Asserbajaan"] = "Yn Asserbajaan",
["Yn Austeyr"] = "Yn Austeyr",
["Yn Austrail"] = "Yn Austrail",
["Ny Bahamaghyn"] = "Ny Bahamaghyn",
["Barbados"] = "Barbados",
["Ny Bermioodee"] = "Ny Bermioodee",
["Bosnia as Herzegovina"] = "Bosnia as Herzegovina",
["Bretyn"] = "Bretyn",
["Yn Chanadey"] = "Yn Chanadey",
["Yn Chassaghstaan"] = "Yn Chassaghstaan",
["Yn Çheck"] = "Yn Çheck",
["Yn Cheeprey"] = "Yn Cheeprey",
["Yn Cheeprey Hwoaie"] = "Yn Cheeprey Hwoaie",
["Yn Çheer Injil"] = "Yn Çheer Injil",
["Yn Çhillee"] = "Yn Çhillee",
["Yn Cholombey"] = "Yn Cholombey",
["Yn Choobey"] = "Yn Choobey",
["Yn Çhorshey"] = "Yn Çhorshey",
["Yn Chroit"] = "Yn Chroit",
["Yn Clovack"] = "Yn Clovack",
["Yn Clovean"] = "Yn Clovean",
["Pobblaght y Chongo"] = "Pobblaght y Chongo",
["Pobblaght Gheynlagh y Chongo"] = "Pobblaght Gheynlagh y Chongo",
["Yn Coose Berçhagh"] = "Yn Coose Berçhagh",
["Yn Danvarg"] = "Yn Danvarg",
["Dominica"] = "Dominica",
["Yn Eeslynn"] = "Yn Eeslynn",
["Yn Elveeish"] = "Yn Elveeish",
["Yn Estaan"] = "Yn Estaan",
["Finnlynn"] = "Finnlynn",
["Geeaaney"] = "Geeaaney",
["Yn Ghermaan"] = "Yn Ghermaan",
["Yn Ghreag"] = "Yn Ghreag",
["Yn Ghuatemaley"] = "Yn Ghuatemaley",
["Greenlynn"] = "Greenlynn",
["Grenada"] = "Grenada",
["Guinea Chryss ny Cruinney"] = "Guinea Chryss ny Cruinney",
["Ny Hondooraghyn"] = "Ny Hondooraghyn",
["Yn Iddaal"] = "Yn Iddaal",
["Yn Jamaicey"] = "Yn Jamaicey",
["Jersee"] = "Jersee",
["Kosovo"] = "Kosovo",
["Yn Latvey"] = "Yn Latvey",
["Liechtenstein"] = "Liechtenstein",
["Yn Litaan"] = "Yn Litaan",
["Lucsemburg"] = "Lucsemburg",
["Mannin"] = "Mannin",
["Meksico"] = "Meksico",
["Moldova"] = "Moldova",
["Monaco"] = "Monaco",
["Montenegro"] = "Montenegro",
["Nalbin"] = "Nalbin",
["Nerin"] = "Nerin",
["Yn Nickeraag"] = "Yn Nickeraag",
["Noo Kitts as Nevis"] = "Noo Kitts as Nevis",
["Noo Lucia"] = "Noo Lucia",
["Noo Winsen as ny Grenadeenyn"] = "Noo Winsen as ny Grenadeenyn",
["Norlynn"] = "Norlynn",
["Yn Ookraan"] = "Yn Ookraan",
["Yn Ooraguay"] = "Yn Ooraguay",
["Ossetia Yiass"] = "Ossetia Yiass",
["Yn Phanamaa"] = "Yn Phanamaa",
["Yn Pharaguay"] = "Yn Pharaguay",
["Yn Pheroo"] = "Yn Pheroo",
["Yn Phobblaght Ghominicagh"] = "Yn Phobblaght Ghominicagh",
["Yn Pholynn"] = "Yn Pholynn",
["Yn Phortiugal"] = "Yn Phortiugal",
["Yn Phroosh"] = "Yn Phroosh",
["Yn Rank"] = "Yn Rank",
["Yn Reeriaght Unnaneysit"] = "Yn Reeriaght Unnaneysit",
["Yn Romaan"] = "Yn Romaan",
["Yn Roosh"] = "Yn Roosh",
["Yn Salvador"] = "Yn Salvador",
["San Marino"] = "San Marino",
["Yn Serb"] = "Yn Serb",
["Sostyn"] = "Sostyn",
["Yn Spaainey"] = "Yn Spaainey",
["Ny Steatyn Unnaneysit"] = "Ny Steatyn Unnaneysit",
["Pobblaght Gheynlagh Arabagh y Tahara"] = "Pobblaght Gheynlagh Arabagh y Tahara",
["Yn Toolynn"] = "y Toolynn",
["Yn Toorinam"] = "Yn Toorinam",
["Ellan y Trinaid as Tobago"] = "Ellan y Trinaid as Tobago",
["Yn Turkee"] = "Yn Turkee",
["Yn Ungaar"] = "Yn Ungaar",
["Yn Valta"] = "Yn Valta",
["Yn Vassadoan Hwoaie"] = "Yn Vassadoan Hwoaie",
["Yn Velaroosh"] = "Yn Velaroosh",
["Yn Veleesh"] = "Yn Veleesh",
["Yn Velg"] = "Yn Velg",
["Yn Volivia"] = "Yn Volivia",
["Yn Vrasseel"] = "Yn Vrasseel",
["Yn Vulgeyr"] = "Yn Vulgeyr",
}
local genitive = {
["Yn Abcaash"] = "yn Abcaash",
["Yn Albaan"] = "yn Albaan",
["Andorra"] = "Andorra",
["Antigua as Barbuda"] = "Antigua as Barbuda",
["Ard-valley yn Phaab"] = "Ard-valley yn Phaab",
["Yn Argenteen"] = "yn Argenteen",
["Yn Armean"] = "yn Armean",
["Yn Asserbajaan"] = "yn Asserbajaan",
["Yn Austeyr"] = "yn Austeyr",
["Yn Austrail"] = "yn Austrail",
["Ny Bahamaghyn"] = "ny Bahamaghyn",
["Barbados"] = "Barbados",
["Ny Bermioodee"] = "ny Bermioodee",
["Bosnia as Herzegovina"] = "Bosnia as Herzegovina",
["Bretyn"] = "Vretyn",
["Yn Chanadey"] = "y Chanadey",
["Yn Chassaghstaan"] = "y Chassaghstaan",
["Yn Çheck"] = "y Çheck",
["Yn Cheeprey"] = "y Cheeprey",
["Yn Cheeprey Hwoaie"] = "y Cheeprey Hwoaie",
["Yn Çheer Injil"] = "y Çheer Injil",
["Yn Çhillee"] = "y Çhillee",
["Yn Cholombey"] = "y Cholombey",
["Yn Choobey"] = "y Choobey",
["Yn Çhorshey"] = "y Çhorshey",
["Yn Chroit"] = "y Chroit",
["Yn Clovack"] = "y Clovack",
["Yn Clovean"] = "y Clovean",
["Pobblaght y Chongo"] = "Phobblaght y Chongo",
["Pobblaght Gheynlagh y Chongo"] = "Phobblaght Gheynlagh y Chongo",
["Yn Coose Berçhagh"] = "y Choose Berçhagh",
["Yn Danvarg"] = "y Danvarg",
["Dominica"] = "Dominica",
["Yn Eeslynn"] = "yn Eeslynn",
["Yn Elveeish"] = "yn Elveeish",
["Yn Estaan"] = "yn Estaan",
["Finnlynn"] = "Innlynn",
["Geeaaney"] = "Gheeaaney",
["Yn Ghermaan"] = "y Ghermaan",
["Yn Ghreag"] = "y Ghreag",
["Yn Ghuatemaley"] = "y Ghuatemaley",
["Greenlynn"] = "Ghreenlynn",
["Grenada"] = "Grenada",
["Guinea Chryss ny Cruinney"] = "Ghuinea Chryss ny Cruinney",
["Ny Hondooraghyn"] = "ny Hondooraghyn",
["Yn Iddaal"] = "yn Iddaal",
["Yn Jamaicey"] = "y Jamaicey",
["Jersee"] = "Jersee",
["Kosovo"] = "Chosovo",
["Yn Latvey"] = "y Latvey",
["Liechtenstein"] = "Liechtenstein",
["Yn Litaan"] = "y Litaan",
["Lucsemburg"] = "Lucsemburg",
["Mannin"] = "Vannin",
["Meksico"] = "Veksico",
["Moldova"] = "Voldova",
["Monaco"] = "Monaco",
["Montenegro"] = "Montenegro",
["Nalbin"] = "ny h-Albey",
["Nerin"] = "Nerin",
["Yn Nickeraag"] = "y Nickeraag",
["Noo Kitts as Nevis"] = "Noo Kitts as Nevis",
["Noo Lucia"] = "Noo Lucia",
["Noo Winsen as ny Grenadeenyn"] = "Noo Winsen as ny Grenadeenyn",
["Norlynn"] = "Norlynn",
["Yn Ookraan"] = "yn Ookraan",
["Yn Ooraguay"] = "yn Ooraguay",
["Ossetia Yiass"] = "Ossetia Yiass",
["Yn Phanamaa"] = "y Phanamaa",
["Yn Pharaguay"] = "y Pharaguay",
["Yn Pheroo"] = "y Pheroo",
["Yn Phobblaght Ghominicagh"] = "y Phobblaght Ghominicagh",
["Yn Pholynn"] = "y Pholynn",
["Yn Phortiugal"] = "y Phortiugal",
["Yn Phroosh"] = "y Phroosh",
["Yn Rank"] = "y Rank",
["Yn Reeriaght Unnaneysit"] = "y Reeriaght Unnaneysit",
["Yn Romaan"] = "y Romaan",
["Yn Roosh"] = "y Roosh",
["Yn Salvador"] = "y Talvador",
["San Marino"] = "San Marino",
["Yn Serb"] = "y Terb",
["Sostyn"] = "Hostyn",
["Yn Spaainey"] = "y Spaainey",
["Ny Steatyn Unnaneysit"] = "ny Steatyn Unnaneysit",
["Pobblaght Gheynlagh Arabagh y Tahara"] = "Phobblaght Gheynlagh Arabagh y Tahara",
["Yn Toolynn"] = "y Toolynn",
["Yn Toorinam"] = "y Toorinam",
["Ellan y Trinaid as Tobago"] = "Ellan y Trinaid as Tobago",
["Yn Turkee"] = "y Turkee",
["Yn Ungaar"] = "yn Ungaar",
["Yn Valta"] = "y Valta",
["Yn Vassadoan Hwoaie"] = "y Vassadoan Hwoaie",
["Yn Velaroosh"] = "y Velaroosh",
["Yn Veleesh"] = "y Veleesh",
["Yn Velg"] = "y Velg",
["Yn Volivia"] = "y Volivia",
["Yn Vrasseel"] = "y Vrasseel",
["Yn Vulgeyr"] = "y Vulgeyr",
}
function p.name(name)
if not name or name == "" then
return name
end
return country_names[name] or name
end
function p.genitive(name)
if not name or name == "" then
return name
end
return genitive[name] or name
end
return p
k50z11n1ztzzfipbqgd5rzi0viudsa4
Module:Kishtey fys çheer/balley
828
55830
394563
394299
2026-10-16T17:32:47Z
MacTire02
219
-chaghteraghtyn
394563
Scribunto
text/plain
local p = {}
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Splits a manually-typed value into its link TARGET and an optional
-- DISPLAY override: "[[Target|Display]]" keeps both; "[[Target]]" or a bare
-- "Target" has no separate display (display = nil, every caller already
-- falls back to the target in that case). Needed so a manual
-- "[[Target|Display]]" value keeps its own display text instead of every
-- render site rebuilding the link as target|target.
local function splitManualLink(value)
if not value then return "", nil end
local clean = mw.text.trim(value)
clean = clean:gsub("^%[%[", ""):gsub("%]%]$", "")
local pipe = clean:find("|", 1, true)
if pipe then
local target = mw.text.trim(clean:sub(1, pipe - 1))
local display = mw.text.trim(clean:sub(pipe + 1))
if display == "" then display = nil end
return target, display
end
return mw.text.trim(clean), nil
end
-- Target only (no display) -- kept as its own name since most callers (the
-- capital-vs-largest-city duplicate check, Wikidata-title resolution) only
-- ever want the target to compare or look up, never the display half.
local function normaliseCityName(value)
local target = splitManualLink(value)
return target
end
-- Pull a city name from Wikidata (property must hold an item value, e.g.
-- P36 = capital, P13574 = most populous urban area). Returns three values:
-- the LINK TARGET (the title to point the wikilink at), the resolved item's
-- own QID (so a caller that's about to render this exact item doesn't have
-- to re-derive it later by chasing a page title back through a sitelink --
-- see getCoordinatesForQid below), and an optional DISPLAY override: nil
-- when the sitelink and label already match, otherwise the item's own
-- clean label (e.g. a disambiguated sitelink title like "Lucsemburg
-- (ard-valley)" should still display as the item's plain label,
-- "Lucsemburg", while the link itself still points at the real article).
local function getWikidataCity(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
-- Prefer the title of the local (gv) sitelink so the link isn't red;
-- fall back to the item's label if there's no gv article yet.
local sitelink = mw.wikibase.sitelink(id)
sitelink = (sitelink and sitelink ~= "") and sitelink or nil
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
label = (label and label ~= "") and label or nil
local target = sitelink or label
if not target then return nil end
local display = (label and label ~= target) and label or nil
return target, id, display
end
-- Expands {{coord}} with a Wikidata item's own P625 coordinates, given its
-- QID directly -- always with format="dms" (matching Module:WikidataIB.
-- getCoords' own convention), since {{coord}}'s own default formatting
-- isn't reliably DMS on its own.
local function getCoordinatesForQid(frame, qid)
if not qid then return nil end
local entity = mw.wikibase.getEntityObject(qid)
if not entity then return nil end
local statements = entity:getBestStatements("P625")
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "globecoordinate") then
return nil
end
local coord = mainsnak.datavalue.value
if not (coord.latitude and coord.longitude) then return nil end
return frame:expandTemplate{
title = "coord",
args = { coord.latitude, coord.longitude, "type:city", display = "inline", format = "dms" }
}
end
-- Given a plain page title (a MANUALLY-typed city name, with no QID already
-- known), resolve its Wikidata item via this wiki's own (gv) sitelink and
-- pull its coordinates. Deliberately gv-only -- a city typed by hand with
-- no gv.wikipedia article yet has no coordinates from this path. The
-- Wikidata-populated case (largest city via P13574, capital via P36)
-- instead chains straight from the QID that property already resolved to,
-- through getCoordinatesForQid above, never through any wiki's sitelink.
local function getCityCoordinates(frame, pageTitle)
if not pageTitle or pageTitle == "" then return nil end
local id = mw.wikibase.getEntityIdForTitle(pageTitle)
return getCoordinatesForQid(frame, id)
end
-- Manual coordinate override, in the old template's own component shape
-- (separate deg/min/direction params for lat and long -- the old {{coor
-- cn}} call's input shape). Doesn't carry over the old `latNSgael`/
-- `longEWgael` Manx-direction params -- {{coord}} has no equivalent slot.
-- Returns "suppress" (|...=none), a built {{coord}} expansion (format=dms),
-- or nil (no override -- caller falls through to Wikidata).
local function getManualCoordinates(frame, args, degParam, minParam, nsParam, lonDegParam, lonMinParam, ewParam)
-- Each *Param argument is normally a single name (e.g. "latd"), but may
-- also be a list of alternate spellings (e.g. balley_smoo/balley-smoo
-- below) -- accept either so existing plain-string callers (the capital
-- row) don't need to change.
local function names(p)
if type(p) == "table" then return p end
return { p }
end
local latd = getManual(args, names(degParam))
if not latd then return nil end
if isNone(latd) then return "suppress" end
local latm = getManual(args, names(minParam)) or ""
local latNS = getManual(args, names(nsParam)) or ""
local longd = getManual(args, names(lonDegParam)) or ""
local longm = getManual(args, names(lonMinParam)) or ""
local longEW = getManual(args, names(ewParam)) or ""
return frame:expandTemplate{
title = "coord",
args = { latd, latm, latNS, longd, longm, longEW, "type:city", display = "inline", format = "dms" }
}
end
-- Prevents coordinates from line-wrapping in the infobox's narrow column
-- ({{coord}}'s output has plain spaces the browser is free to break on).
local function coordSpan(coordText)
if not coordText or coordText == "" then return "" end
return '<br/><small style="white-space:nowrap;">' .. coordText .. '</small>'
end
-- Resolves coordinates for one largest-city entry: manual override (its own
-- |latd_balley_smoo[N]=/etc. component params) wins outright, an explicit
-- |latd_balley_smoo[N]=none suppresses them entirely, and otherwise falls
-- through to that city's own Wikidata P625 value. When the entry's QID is
-- already known (it came from the P13574 Wikidata fallback, not a manual
-- name), that QID is used directly -- chaining straight from the country's
-- own "most populous urban area" statement to that city's own coordinates,
-- with no wiki sitelink lookup involved at all. A manually-typed name with
-- no known QID falls through to the gv-sitelink-only lookup instead.
local function resolveEntryCoordinates(frame, args, coordSuffix, cleanName, wdQid)
-- Both spellings for every component -- "balley smoo" is two separate
-- Manx words with no one fixed joining convention (unlike |jarroo-raa=,
-- deliberately hyphen-only -- see cowraghyn.lua's design notes), so
-- |latd_balley-smoo= is just as valid as |latd_balley_smoo=.
local function both(prefix)
return { prefix .. "_balley_smoo" .. coordSuffix, prefix .. "_balley-smoo" .. coordSuffix }
end
local manual = getManualCoordinates(frame, args,
both("latd"), both("latm"), both("latNS"),
both("longd"), both("longm"), both("longEW"))
if manual == "suppress" then return nil end
if manual then return manual end
if wdQid then return getCoordinatesForQid(frame, wdQid) end
return getCityCoordinates(frame, cleanName)
end
-- Up to this many distinct "largest city" values (e.g. Australia's largest
-- city by urban area vs. by metropolitan area both being reasonably
-- citable, and disagreeing) -- raising this later is a one-line change,
-- same as every other numbered slot in this project.
local MAX_LARGEST = 3
-- Border classes for a run of merged rows, matching reiltys.lua's own
-- convention for a header followed by bulleted sub-rows.
local function trClass(class)
return ' class="' .. class .. '"'
end
-- Collects every largest-city entry the caller actually supplied (or, for
-- slot 1 only, the Wikidata P13574 fallback), in order. Each entry keeps
-- its own raw (still-manual-form) name, optional qualifier label, note and
-- coordinate-param suffix -- nothing here decides display shape yet, since
-- that depends on how many entries survive the capital-duplicate check
-- below.
local function collectLargestEntries(args)
local entries = {}
for i = 1, MAX_LARGEST do
local suffix = tostring(i)
-- Both the underscore and hyphen spellings are accepted at every
-- slot -- "balley smoo" is two separate Manx words ("balley" =
-- town/settlement, "smoo" = greatest/largest) with no single fixed
-- joining convention, unlike |jarroo-raa= (deliberately hyphen-only
-- -- see cowraghyn.lua's design notes), so editors may reasonably
-- type either spelling.
local nameNames = { "balley_smoo" .. suffix, "balley-smoo" .. suffix }
local qualNames = { "sorçh_balley_smoo" .. suffix, "sorçh_balley-smoo" .. suffix }
local noteNames = { "noteyn_balley_smoo" .. suffix, "noteyn_balley-smoo" .. suffix }
local coordSuffix = suffix
if i == 1 then
-- Bare, unnumbered form (the only form the old template ever
-- had) is a synonym for slot 1, in both spellings -- including
-- its coordinate params, which keep their original unsuffixed
-- names ("latd_balley_smoo"/"latd_balley-smoo", not
-- "...balley_smoo1").
table.insert(nameNames, 1, "balley-smoo")
table.insert(nameNames, 1, "balley_smoo")
table.insert(qualNames, 1, "sorçh_balley-smoo")
table.insert(qualNames, 1, "sorçh_balley_smoo")
table.insert(noteNames, 1, "noteyn_balley-smoo")
table.insert(noteNames, 1, "noteyn_balley_smoo")
coordSuffix = ""
end
local nameRaw = getManual(args, nameNames)
if isNone(nameRaw) then
-- Explicit suppression for this one slot; doesn't fall through
-- to Wikidata even for slot 1, matching the |param=none
-- convention used everywhere else in this project.
elseif nameRaw then
table.insert(entries, {
name = nameRaw,
qualifier = getManual(args, qualNames),
note = getManual(args, noteNames),
coordSuffix = coordSuffix,
})
elseif i == 1 then
-- Wikidata fallback -- slot 1 only. Deeper slots are manual-only
-- (this project's established precedent for numbered slots:
-- picking out a second, specifically-qualified value like
-- "largest by metropolitan area" isn't something to guess at
-- from Wikidata automatically).
local wd, wdQid, wdDisplay = getWikidataCity("P13574")
if wd then
table.insert(entries, { name = wd, qualifier = nil, note = getManual(args, noteNames), coordSuffix = "", wdQid = wdQid, wdDisplay = wdDisplay })
end
end
end
return entries
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local capital = getManual(args, {"preeu-valley"})
local capitalWdQid = nil
local capitalWdDisplay = nil
if not capital then
capital, capitalWdQid, capitalWdDisplay = getWikidataCity("P36")
end
local administrative = getManual(args, {"ynnyd_reiragh"})
local capNote = getManual(args, {"noteyn_preeu-valley"})
local adminNote = getManual(args, {"noteyn_ynnyd_reiragh"})
-- `latd` et al. (old template's params) bind to the capital row when one
-- is present, else fall through to the administrative-centre row --
-- mirroring the old template's single combined row as closely as this
-- module's two-row layout allows. `latd_balley_smoo[N]` et al. (new)
-- cover the largest-city row(s), which the old template never had
-- coordinates for.
local manualPrimaryCoords = getManualCoordinates(frame, args, "latd", "latm", "latNS", "longd", "longm", "longEW")
-- Gather every largest-city entry, then split off any that just
-- duplicate the capital (either by literally matching its name, or via
-- the old template's own "|balley_smoo=preeu-valley" sentinel value) --
-- those are dropped from the largest-city section entirely and instead
-- surface as a "(as y balley smoo)" annotation on the capital row.
local allEntries = collectLargestEntries(args)
local largestEntries = {}
local isSameAny = false
for _, entry in ipairs(allEntries) do
local cleanLower = mw.text.trim(entry.name):lower()
local isSentinel = (cleanLower == "preeu-valley" or cleanLower == "preeu_valley")
local matchesCapital = capital and normaliseCityName(capital):lower() == normaliseCityName(entry.name):lower()
if isSentinel or matchesCapital then
isSameAny = true
else
table.insert(largestEntries, entry)
end
end
-- Every row this module can produce (capital, administrative centre,
-- each largest-city entry) is collected into `pending` first, WITHOUT
-- deciding its border class yet -- that depends on how many rows end up
-- rendering in total, so that with two or more genuinely different rows
-- present they get the "mergedtoprow"/"mergedrow"/"mergedbottomrow"
-- classes (matching reiltys.lua's own convention) and no stray divider
-- appears between them. `pending` entries: {th = label html or nil
-- (nil = a continuation row whose label column is covered by an
-- earlier row's rowspan), rowspan = number or nil, td = value html}.
local pending = {}
-- 1. CAPITAL
if capital and mw.text.trim(capital):lower() ~= "none" then
local label = args["sorçh_preeu-valley"] or "Preeu-valley"
local displayLabel = '[[' .. label .. ']]'
if isSameAny then
displayLabel = '[[' .. label .. ']]<br/><small style="font-weight:normal;">(as y balley smoo)</small>'
end
-- A manually-typed |preeu-valley=[[Target|Display]] keeps its own
-- Display half; the Wikidata path never produces a pipe at all, so
-- capManualDisplay and capitalWdDisplay are never both set for the
-- same row.
local cleanCapName, capManualDisplay = splitManualLink(capital)
local capDisplayName = capitalWdDisplay or capManualDisplay or cleanCapName
local text = '[[' .. cleanCapName .. '|' .. capDisplayName .. ']]'
if capNote and capNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { capNote } }
end
-- Manual override wins outright over Wikidata (and an explicit
-- |latd=none suppresses coordinates entirely for this row, even
-- when Wikidata has one); only falls through to the Wikidata
-- fetch when the manual param wasn't supplied at all. When the
-- capital itself came from Wikidata (P36), its QID is already
-- known -- chain straight from it to P625 rather than re-deriving
-- it via a gv sitelink lookup on the display name.
local capCoords
if manualPrimaryCoords == "suppress" then
capCoords = nil
elseif manualPrimaryCoords then
capCoords = manualPrimaryCoords
elseif capitalWdQid then
capCoords = getCoordinatesForQid(frame, capitalWdQid)
else
capCoords = getCityCoordinates(frame, cleanCapName)
end
text = text .. coordSpan(capCoords)
table.insert(pending, { th = displayLabel, td = text })
end
-- 2. ADMINISTRATIVE CENTER
if administrative and mw.text.trim(administrative):lower() ~= "none" then
local label = args["sorçh_ynnyd_reiragh"] or "Ynnyd reiragh"
-- Same manual-display handling as the capital row above -- keeps a
-- typed |ynnyd_reiragh=[[Target|Display]]'s own Display half rather
-- than showing the target twice over.
local cleanAdminName, adminManualDisplay = splitManualLink(administrative)
local text = '[[' .. cleanAdminName .. '|' .. (adminManualDisplay or cleanAdminName) .. ']]'
if adminNote and adminNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { adminNote } }
end
-- Manual-override-only -- no Wikidata coordinate fetch for an
-- administrative centre (the old template never had one either).
if not (capital and mw.text.trim(capital):lower() ~= "none") then
local adminCoords
if manualPrimaryCoords == "suppress" then
adminCoords = nil
elseif manualPrimaryCoords then
adminCoords = manualPrimaryCoords
end
text = text .. coordSpan(adminCoords)
end
table.insert(pending, { th = '[[' .. label .. ']]', td = text })
end
-- 3. LARGEST CITY (one or more entries). A single entry sits in one
-- row, same as capital/administrative centre above. With more than one
-- surviving entry, the first entry's <th> gets a `rowspan` covering
-- every entry's row, so the first entry still sits on the SAME line as
-- "Balley smoo" and each further entry falls on its own line directly
-- underneath -- no separate header row, no bullet.
if #largestEntries > 0 then
local total = #largestEntries
for idx, entry in ipairs(largestEntries) do
-- Same manual-display handling as the capital/administrative
-- rows above. entry.wdDisplay only ever comes from the P13574
-- Wikidata fallback (collectLargestEntries), never a manually-
-- typed |balley_smoo[N]= value, so it and largeManualDisplay
-- are never both set for the same entry.
local cleanLargeName, largeManualDisplay = splitManualLink(entry.name)
local largeDisplayName = entry.wdDisplay or largeManualDisplay or cleanLargeName
local text = '[[' .. cleanLargeName .. '|' .. largeDisplayName .. ']]'
if entry.qualifier and entry.qualifier ~= "" then
text = text .. ' (' .. entry.qualifier .. ')'
end
if entry.note and entry.note ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { entry.note } }
end
text = text .. coordSpan(resolveEntryCoordinates(frame, args, entry.coordSuffix, cleanLargeName, entry.wdQid))
if idx == 1 then
table.insert(pending, { th = "Balley smoo", rowspan = (total > 1) and total or nil, td = text })
else
table.insert(pending, { th = nil, td = text })
end
end
end
if #pending == 0 then return nil end
-- Now that the full row count is known, classify every row by its
-- position in that single combined block: a lone row stays exactly as
-- before (no class at all, backward compatible with the old
-- single-field template); two or more rows get
-- mergedtoprow/mergedrow/mergedbottomrow so the whole block reads as
-- one seamless section with no divider in between its own rows.
local subRows = {}
local total = #pending
for idx, row in ipairs(pending) do
local class
if total == 1 then
class = ""
elseif idx == 1 then
class = "mergedtoprow"
elseif idx == total then
class = "mergedbottomrow"
else
class = "mergedrow"
end
local classAttr = (class ~= "") and trClass(class) or ""
if row.th then
local rowspanAttr = row.rowspan and (' rowspan="' .. row.rowspan .. '"') or ''
table.insert(subRows, '<tr' .. classAttr .. '><th' .. rowspanAttr .. ' style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. row.th .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. row.td .. '</td></tr>')
else
table.insert(subRows, '<tr' .. classAttr .. '><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. row.td .. '</td></tr>')
end
end
return table.concat(subRows)
end
return p
2tez2eusf799cjxo1d3mbmetq3yubt1
394630
394563
2026-10-17T05:13:27Z
MacTire02
219
++
394630
Scribunto
text/plain
local p = {}
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Splits a manual value into link target, display text and any trailing text,
-- e.g. "[[Laayoune]] (''de jure'')" -> "Laayoune", nil, " (''de jure'')".
local function splitManualLink(value)
if not value then return "", nil, nil end
local clean = mw.text.trim(value)
local inner, rest = clean:match("^%[%[(.-)%]%](.*)$")
if not inner then
inner, rest = clean:match("^(.-)%s+(%(''.*)$")
if inner then rest = " " .. rest else inner, rest = clean, "" end
end
rest = (rest ~= "") and rest or nil
local pipe = inner:find("|", 1, true)
if pipe then
local target = mw.text.trim(inner:sub(1, pipe - 1))
local display = mw.text.trim(inner:sub(pipe + 1))
if display == "" then display = nil end
return target, display, rest
end
return mw.text.trim(inner), nil, rest
end
-- Target half only.
local function normaliseCityName(value)
local target = splitManualLink(value)
return target
end
-- Link target, QID, and a display override when the gv label differs from the sitelink.
local function resolveCityItem(id)
local sitelink = mw.wikibase.sitelink(id)
sitelink = (sitelink and sitelink ~= "") and sitelink or nil
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
label = (label and label ~= "") and label or nil
local target = sitelink or label
if not target then return nil end
local display = (label and label ~= target) and label or nil
return target, id, display
end
local function snakItemId(snak)
if not (snak and snak.snaktype == "value" and snak.datavalue
and snak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = snak.datavalue.value
return value.id or ("Q" .. tostring(value["numeric-id"]))
end
local function getWikidataCity(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local id = snakItemId(statements[1].mainsnak)
if not id then return nil end
return resolveCityItem(id)
end
-- P518 ("applies to part") values on a capital statement, in Manx.
local BRANCH_LABELS = {
Q105985 = "briwnyssagh",
Q35798 = "kiannoortagh",
Q11204 = "slattyssagh",
}
-- Every current P36 capital, each with its branch label. Statements with an end time are skipped. A capital
-- below the best rank (e.g. Bolivia: Sucre preferred, La Paz normal) is kept only if it has a P518 branch.
local function getWikidataCapitals()
local result = {}
local entity = mw.wikibase.getEntityObject()
if not entity then return result end
local statements = entity:getAllStatements("P36") or {}
local bestRank = "normal"
for _, statement in ipairs(statements) do
if statement.rank == "preferred" then bestRank = "preferred" end
end
for _, statement in ipairs(statements) do
local quals = statement.qualifiers or {}
local id = snakItemId(statement.mainsnak)
local keep = statement.rank ~= "deprecated" and (statement.rank == bestRank or quals.P518)
if id and keep and not quals.P582 then
local target, qid, display = resolveCityItem(id)
if target then
local branches = {}
for _, snak in ipairs(quals.P518 or {}) do
local label = BRANCH_LABELS[snakItemId(snak) or ""]
if label then table.insert(branches, label) end
end
table.insert(result, { name = target, wdQid = qid, wdDisplay = display, branch = table.concat(branches, ", ") })
end
end
end
return result
end
-- QID of a current P36 capital matching a typed city name, for coordinates when that city has no gv article.
local function findCapitalQid(name)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local want = name:lower()
for _, statement in ipairs(entity:getAllStatements("P36") or {}) do
local id = snakItemId(statement.mainsnak)
if id then
local target, qid, display = resolveCityItem(id)
if (target and target:lower() == want) or (display and display:lower() == want) then return qid end
end
end
return nil
end
-- {{coord}} from a QID's P625, always DMS.
local function getCoordinatesForQid(frame, qid)
if not qid then return nil end
local entity = mw.wikibase.getEntityObject(qid)
if not entity then return nil end
local statements = entity:getBestStatements("P625")
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "globecoordinate") then
return nil
end
local coord = mainsnak.datavalue.value
if not (coord.latitude and coord.longitude) then return nil end
return frame:expandTemplate{
title = "coord",
args = { coord.latitude, coord.longitude, "type:city", display = "inline", format = "dms" }
}
end
-- Coordinates for a manually typed name, via its gv sitelink only.
local function getCityCoordinates(frame, pageTitle)
if not pageTitle or pageTitle == "" then return nil end
local id = mw.wikibase.getEntityIdForTitle(pageTitle)
return getCoordinatesForQid(frame, id)
end
-- Manual coordinates from component params: "suppress", a {{coord}} expansion, or nil.
local function getManualCoordinates(frame, args, degParam, minParam, nsParam, lonDegParam, lonMinParam, ewParam)
-- Accepts one name or a list of alternate spellings.
local function names(p)
if type(p) == "table" then return p end
return { p }
end
local latd = getManual(args, names(degParam))
if not latd then return nil end
if isNone(latd) then return "suppress" end
local latm = getManual(args, names(minParam)) or ""
local latNS = getManual(args, names(nsParam)) or ""
local longd = getManual(args, names(lonDegParam)) or ""
local longm = getManual(args, names(lonMinParam)) or ""
local longEW = getManual(args, names(ewParam)) or ""
return frame:expandTemplate{
title = "coord",
args = { latd, latm, latNS, longd, longm, longEW, "type:city", display = "inline", format = "dms" }
}
end
-- Prevents coordinates from line-wrapping in the infobox's narrow column
-- ({{coord}}'s output has plain spaces the browser is free to break on).
local function coordSpan(coordText)
if not coordText or coordText == "" then return "" end
return '<br/><small style="white-space:nowrap;">' .. coordText .. '</small>'
end
-- Manual coordinates win, =none suppresses, else Wikidata (by QID if known, else gv title).
local function resolveEntryCoordinates(frame, args, coordSuffix, cleanName, wdQid)
-- Both underscore and hyphen spellings.
local function both(prefix)
return { prefix .. "_balley_smoo" .. coordSuffix, prefix .. "_balley-smoo" .. coordSuffix }
end
local manual = getManualCoordinates(frame, args,
both("latd"), both("latm"), both("latNS"),
both("longd"), both("longm"), both("longEW"))
if manual == "suppress" then return nil end
if manual then return manual end
if wdQid then return getCoordinatesForQid(frame, wdQid) end
return getCityCoordinates(frame, cleanName) or getCoordinatesForQid(frame, findCapitalQid(cleanName))
end
-- Maximum number of largest-city slots.
local MAX_LARGEST = 3
-- Border classes for a run of merged rows, matching reiltys.lua's own
-- convention for a header followed by bulleted sub-rows.
local function trClass(class)
return ' class="' .. class .. '"'
end
-- Collects largest-city entries; Wikidata fallback for slot 1 only.
local function collectLargestEntries(args)
local entries = {}
for i = 1, MAX_LARGEST do
local suffix = tostring(i)
-- Underscore and hyphen spellings accepted at every slot.
local nameNames = { "balley_smoo" .. suffix, "balley-smoo" .. suffix }
local qualNames = { "sorçh_balley_smoo" .. suffix, "sorçh_balley-smoo" .. suffix }
local noteNames = { "noteyn_balley_smoo" .. suffix, "noteyn_balley-smoo" .. suffix }
local coordSuffix = suffix
if i == 1 then
-- Bare form is a synonym for slot 1 (its coordinate params stay unsuffixed).
table.insert(nameNames, 1, "balley-smoo")
table.insert(nameNames, 1, "balley_smoo")
table.insert(qualNames, 1, "sorçh_balley-smoo")
table.insert(qualNames, 1, "sorçh_balley_smoo")
table.insert(noteNames, 1, "noteyn_balley-smoo")
table.insert(noteNames, 1, "noteyn_balley_smoo")
coordSuffix = ""
end
local nameRaw = getManual(args, nameNames)
if isNone(nameRaw) then
-- Explicit none: no Wikidata fallback.
elseif nameRaw then
table.insert(entries, {
name = nameRaw,
qualifier = getManual(args, qualNames),
note = getManual(args, noteNames),
coordSuffix = coordSuffix,
})
elseif i == 1 then
-- Deeper slots are manual-only.
local wd, wdQid, wdDisplay = getWikidataCity("P13574")
if wd then
table.insert(entries, { name = wd, qualifier = nil, note = getManual(args, noteNames), coordSuffix = "", wdQid = wdQid, wdDisplay = wdDisplay })
end
end
end
return entries
end
-- Maximum number of capital slots.
local MAX_CAPITALS = 5
-- Slot 1 uses the bare legacy names, slots 2+ a numeric suffix. The bare |sorçh_preeu-valley= is the row label,
-- so slot 1's qualifier is |sorçh_preeu-valley1=. Slot 1 = none suppresses the row. With no manual slot set,
-- every current P36 capital is used; if only slots 2+ are set, Wikidata's first capital fills slot 1.
-- With several capitals each gets its P518 branch label (a manual qualifier overrides it, none hides it).
local function collectCapitalEntries(args)
local entries = {}
local hasSlot1 = false
local wdCapitals
local function wdList()
wdCapitals = wdCapitals or getWikidataCapitals()
return wdCapitals
end
local function noteNamesFor(i)
local names = { "noteyn_preeu-valley" .. i }
if i == 1 then table.insert(names, 1, "noteyn_preeu-valley") end
return names
end
local function qualifierFor(i)
local qualifier = getManual(args, { "sorçh_preeu-valley" .. i })
if isNone(qualifier) then return nil, true end
return qualifier, false
end
for i = 1, MAX_CAPITALS do
local nameNames = { "preeu-valley" .. i }
if i == 1 then table.insert(nameNames, 1, "preeu-valley") end
local nameRaw = getManual(args, nameNames)
if isNone(nameRaw) then
if i == 1 then return {} end
elseif nameRaw then
if i == 1 then hasSlot1 = true end
local qualifier, noTag = qualifierFor(i)
table.insert(entries, {
name = nameRaw, qualifier = qualifier, noTag = noTag,
note = getManual(args, noteNamesFor(i)),
coordSuffix = (i == 1) and "" or tostring(i),
})
end
end
if #entries > 0 and not hasSlot1 then
local first = wdList()[1]
local wd, wdQid, wdDisplay
if first then
wd, wdQid, wdDisplay = first.name, first.wdQid, first.wdDisplay
else
wd, wdQid, wdDisplay = getWikidataCity("P36")
end
local duplicate = false
for _, e in ipairs(entries) do
if wd and normaliseCityName(e.name):lower() == wd:lower() then duplicate = true end
end
if wd and not duplicate then
local qualifier, noTag = qualifierFor(1)
table.insert(entries, 1, {
name = wd, wdQid = wdQid, wdDisplay = wdDisplay,
qualifier = qualifier, noTag = noTag,
note = getManual(args, noteNamesFor(1)),
coordSuffix = "",
})
end
end
if #entries == 0 then
local list = wdList()
if #list == 0 then
local wd, wdQid, wdDisplay = getWikidataCity("P36")
if wd then list = { { name = wd, wdQid = wdQid, wdDisplay = wdDisplay, branch = "" } } end
end
for i, cap in ipairs(list) do
if i > MAX_CAPITALS then break end
local qualifier, noTag = qualifierFor(i)
table.insert(entries, {
name = cap.name, wdQid = cap.wdQid, wdDisplay = cap.wdDisplay,
qualifier = qualifier, noTag = noTag,
note = getManual(args, noteNamesFor(i)),
coordSuffix = (i == 1) and "" or tostring(i),
})
end
end
-- Several capitals: an entry matching a Wikidata capital takes that capital's branch label.
if #entries > 1 then
for _, entry in ipairs(entries) do
if not entry.qualifier and not entry.noTag then
local want = normaliseCityName(entry.name):lower()
for _, cap in ipairs(wdList()) do
if cap.branch ~= "" and (cap.name:lower() == want or (cap.wdDisplay and cap.wdDisplay:lower() == want)) then
entry.qualifier = cap.branch
end
end
end
end
end
return entries
end
-- Manual params win (slot N uses suffix N), =none suppresses, else Wikidata via QID, else gv title.
local function resolveCapitalCoordinates(frame, args, entry, cleanName)
local function names(prefix)
if entry.coordSuffix == "" then return { prefix, prefix .. "1" } end
return { prefix .. entry.coordSuffix }
end
local manual = getManualCoordinates(frame, args,
names("latd"), names("latm"), names("latNS"),
names("longd"), names("longm"), names("longEW"))
if manual == "suppress" then return nil end
if manual then return manual end
if entry.wdQid then return getCoordinatesForQid(frame, entry.wdQid) end
return getCityCoordinates(frame, cleanName) or getCoordinatesForQid(frame, findCapitalQid(cleanName))
end
function p.main(frame, args)
-- Fallback verification to catch argument slots accurately if frame context shifts
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local capitalEntries = collectCapitalEntries(args)
local administrative = getManual(args, {"ynnyd_reiragh"})
local adminNote = getManual(args, {"noteyn_ynnyd_reiragh"})
-- Bare latd etc. bind to the capital's slot 1, else the administrative centre.
local manualPrimaryCoords = getManualCoordinates(frame, args, "latd", "latm", "latNS", "longd", "longm", "longEW")
local hasCapital = #capitalEntries > 0
-- With one capital, a duplicate largest city is dropped and noted as "(as y balley smoo)";
-- with several, every largest city is listed in its own row, with coordinates.
local multiple = #capitalEntries > 1
local allEntries = collectLargestEntries(args)
local largestEntries = {}
local isSameAny = false
for _, entry in ipairs(allEntries) do
local cleanLower = mw.text.trim(entry.name):lower()
local isSentinel = (cleanLower == "preeu-valley" or cleanLower == "preeu_valley")
local largestLower = normaliseCityName(entry.name):lower()
local matchesCapital = false
for _, capEntry in ipairs(capitalEntries) do
if normaliseCityName(capEntry.name):lower() == largestLower then matchesCapital = true end
end
if multiple then
if not isSentinel then table.insert(largestEntries, entry) end
elseif isSentinel or matchesCapital then
isSameAny = true
else
table.insert(largestEntries, entry)
end
end
-- Rows are collected first, then classed by position: {th (nil = continuation row), rowspan, td}.
local pending = {}
-- With several capitals the label rowspans all rows.
if hasCapital then
local label = args["sorçh_preeu-valley"] or "Preeu-valley"
local displayLabel = '[[' .. label .. ']]'
if isSameAny then
displayLabel = '[[' .. label .. ']]<br/><small style="font-weight:normal;">(as y balley smoo)</small>'
end
for idx, entry in ipairs(capitalEntries) do
-- Manual display text is kept.
local cleanCapName, capManualDisplay, capTrailing = splitManualLink(entry.name)
local capDisplayName = entry.wdDisplay or capManualDisplay or cleanCapName
local text = '[[' .. cleanCapName .. '|' .. capDisplayName .. ']]'
if capTrailing then text = text .. capTrailing end
if entry.qualifier and entry.qualifier ~= "" then
text = text .. ' (' .. entry.qualifier .. ')'
end
if entry.note and entry.note ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { entry.note } }
end
-- Slot 1 uses the bare coordinate params; slots 2-3 use suffixed ones.
local capCoords
if entry.coordSuffix == "" and manualPrimaryCoords == "suppress" then
capCoords = nil
elseif entry.coordSuffix == "" and manualPrimaryCoords then
capCoords = manualPrimaryCoords
else
capCoords = resolveCapitalCoordinates(frame, args, entry, cleanCapName)
end
text = text .. coordSpan(capCoords)
if idx == 1 then
table.insert(pending, { th = displayLabel, rowspan = multiple and #capitalEntries or nil, td = text })
else
table.insert(pending, { th = nil, td = text })
end
end
end
-- Capital in exile: free wikitext, shown as its own row.
local exile = getManual(args, {"preeu-valley_ayns_eebyrtys"})
if exile and not isNone(exile) then
local exileLabel = args["sorçh_preeu-valley_ayns_eebyrtys"] or "Preeu-valley ayns eebyrtys"
local exileNote = getManual(args, {"noteyn_preeu-valley_ayns_eebyrtys"})
if exileNote then exile = exile .. frame:expandTemplate{ title = "efn", args = { exileNote } } end
table.insert(pending, { th = '[[' .. exileLabel .. ']]', td = exile })
end
-- 2. ADMINISTRATIVE CENTER
if administrative and mw.text.trim(administrative):lower() ~= "none" then
local label = args["sorçh_ynnyd_reiragh"] or "Ynnyd reiragh"
-- Manual display text is kept.
local cleanAdminName, adminManualDisplay, adminTrailing = splitManualLink(administrative)
local text = '[[' .. cleanAdminName .. '|' .. (adminManualDisplay or cleanAdminName) .. ']]' .. (adminTrailing or '')
if adminNote and adminNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { adminNote } }
end
-- Manual-override-only -- no Wikidata coordinate fetch for an
-- administrative centre (the old template never had one either).
if not hasCapital then
local adminCoords
if manualPrimaryCoords == "suppress" then
adminCoords = nil
elseif manualPrimaryCoords then
adminCoords = manualPrimaryCoords
end
text = text .. coordSpan(adminCoords)
end
table.insert(pending, { th = '[[' .. label .. ']]', td = text })
end
-- With several entries the first <th> rowspans them all.
if #largestEntries > 0 then
local total = #largestEntries
for idx, entry in ipairs(largestEntries) do
-- Wikidata and manual display overrides are never both set.
local cleanLargeName, largeManualDisplay, largeTrailing = splitManualLink(entry.name)
local largeDisplayName = entry.wdDisplay or largeManualDisplay or cleanLargeName
local text = '[[' .. cleanLargeName .. '|' .. largeDisplayName .. ']]'
if largeTrailing then text = text .. largeTrailing end
if entry.qualifier and entry.qualifier ~= "" then
text = text .. ' (' .. entry.qualifier .. ')'
end
if entry.note and entry.note ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { entry.note } }
end
text = text .. coordSpan(resolveEntryCoordinates(frame, args, entry.coordSuffix, cleanLargeName, entry.wdQid))
if idx == 1 then
table.insert(pending, { th = "Balley smoo", rowspan = (total > 1) and total or nil, td = text })
else
table.insert(pending, { th = nil, td = text })
end
end
end
if #pending == 0 then return nil end
-- Lone row gets no class; otherwise top/middle/bottom merged classes.
local subRows = {}
local total = #pending
for idx, row in ipairs(pending) do
local class
if total == 1 then
class = ""
elseif idx == 1 then
class = "mergedtoprow"
elseif idx == total then
class = "mergedbottomrow"
else
class = "mergedrow"
end
local classAttr = (class ~= "") and trClass(class) or ""
if row.th then
local rowspanAttr = row.rowspan and (' rowspan="' .. row.rowspan .. '"') or ''
table.insert(subRows, '<tr' .. classAttr .. '><th' .. rowspanAttr .. ' style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. row.th .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. row.td .. '</td></tr>')
else
table.insert(subRows, '<tr' .. classAttr .. '><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. row.td .. '</td></tr>')
end
end
return table.concat(subRows)
end
return p
iank2eif1mrw19gokv1ky75gg22tlk7
394631
394630
2026-10-17T05:15:06Z
MacTire02
219
++
394631
Scribunto
text/plain
local p = {}
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Splits a manual value into link target, display text and any trailing text,
-- e.g. "[[Laayoune]] (''de jure'')" -> "Laayoune", nil, " (''de jure'')".
local function splitManualLink(value)
if not value then return "", nil, nil end
local clean = mw.text.trim(value)
local inner, rest = clean:match("^%[%[(.-)%]%](.*)$")
if not inner then
inner, rest = clean:match("^(.-)%s+(%(''.*)$")
if inner then rest = " " .. rest else inner, rest = clean, "" end
end
rest = (rest ~= "") and rest or nil
local pipe = inner:find("|", 1, true)
if pipe then
local target = mw.text.trim(inner:sub(1, pipe - 1))
local display = mw.text.trim(inner:sub(pipe + 1))
if display == "" then display = nil end
return target, display, rest
end
return mw.text.trim(inner), nil, rest
end
-- Target half only.
local function normaliseCityName(value)
local target = splitManualLink(value)
return target
end
-- Link target, QID, and a display override when the gv label differs from the sitelink.
local function resolveCityItem(id)
local sitelink = mw.wikibase.sitelink(id)
sitelink = (sitelink and sitelink ~= "") and sitelink or nil
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
label = (label and label ~= "") and label or nil
local target = sitelink or label
if not target then return nil end
local display = (label and label ~= target) and label or nil
return target, id, display
end
local function snakItemId(snak)
if not (snak and snak.snaktype == "value" and snak.datavalue
and snak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = snak.datavalue.value
return value.id or ("Q" .. tostring(value["numeric-id"]))
end
local function getWikidataCity(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local id = snakItemId(statements[1].mainsnak)
if not id then return nil end
return resolveCityItem(id)
end
-- P518 ("applies to part") values on a capital statement, in Manx.
local BRANCH_LABELS = {
Q105985 = "briwnyssagh",
Q35798 = "kiannoortagh",
Q11204 = "slattyssagh",
}
-- Every current P36 capital, each with its branch label. Statements with an end time are skipped. A capital
-- below the best rank (e.g. Bolivia: Sucre preferred, La Paz normal) is kept only if it has a P518 branch.
local function getWikidataCapitals()
local result = {}
local entity = mw.wikibase.getEntityObject()
if not entity then return result end
local statements = entity:getAllStatements("P36") or {}
local bestRank = "normal"
for _, statement in ipairs(statements) do
if statement.rank == "preferred" then bestRank = "preferred" end
end
for _, statement in ipairs(statements) do
local quals = statement.qualifiers or {}
local id = snakItemId(statement.mainsnak)
local keep = statement.rank ~= "deprecated" and (statement.rank == bestRank or quals.P518)
if id and keep and not quals.P582 then
local target, qid, display = resolveCityItem(id)
if target then
local branches = {}
for _, snak in ipairs(quals.P518 or {}) do
local label = BRANCH_LABELS[snakItemId(snak) or ""]
if label then table.insert(branches, label) end
end
table.insert(result, { name = target, wdQid = qid, wdDisplay = display, branch = table.concat(branches, ", ") })
end
end
end
return result
end
-- QID of a current P36 capital matching a typed city name, for coordinates when that city has no gv article.
local function findCapitalQid(name)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local want = name:lower()
for _, statement in ipairs(entity:getAllStatements("P36") or {}) do
local id = snakItemId(statement.mainsnak)
if id then
local target, qid, display = resolveCityItem(id)
if (target and target:lower() == want) or (display and display:lower() == want) then return qid end
end
end
return nil
end
-- {{coord}} from a QID's P625, always DMS.
local function getCoordinatesForQid(frame, qid)
if not qid then return nil end
local entity = mw.wikibase.getEntityObject(qid)
if not entity then return nil end
local statements = entity:getBestStatements("P625")
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "globecoordinate") then
return nil
end
local coord = mainsnak.datavalue.value
if not (coord.latitude and coord.longitude) then return nil end
return frame:expandTemplate{
title = "coord",
args = { coord.latitude, coord.longitude, "type:city", display = "inline", format = "dms" }
}
end
-- Coordinates for a manually typed name, via its gv sitelink only.
local function getCityCoordinates(frame, pageTitle)
if not pageTitle or pageTitle == "" then return nil end
local id = mw.wikibase.getEntityIdForTitle(pageTitle)
return getCoordinatesForQid(frame, id)
end
-- Manual coordinates from component params: "suppress", a {{coord}} expansion, or nil.
local function getManualCoordinates(frame, args, degParam, minParam, nsParam, lonDegParam, lonMinParam, ewParam)
-- Accepts one name or a list of alternate spellings.
local function names(p)
if type(p) == "table" then return p end
return { p }
end
local latd = getManual(args, names(degParam))
if not latd then return nil end
if isNone(latd) then return "suppress" end
local latm = getManual(args, names(minParam)) or ""
local latNS = getManual(args, names(nsParam)) or ""
local longd = getManual(args, names(lonDegParam)) or ""
local longm = getManual(args, names(lonMinParam)) or ""
local longEW = getManual(args, names(ewParam)) or ""
return frame:expandTemplate{
title = "coord",
args = { latd, latm, latNS, longd, longm, longEW, "type:city", display = "inline", format = "dms" }
}
end
-- Prevents coordinates from line-wrapping in the infobox's narrow column
-- ({{coord}}'s output has plain spaces the browser is free to break on).
local function coordSpan(coordText)
if not coordText or coordText == "" then return "" end
return '<br/><small style="white-space:nowrap;">' .. coordText .. '</small>'
end
-- Manual coordinates win, =none suppresses, else Wikidata (by QID if known, else gv title).
local function resolveEntryCoordinates(frame, args, coordSuffix, cleanName, wdQid)
-- Both underscore and hyphen spellings.
local function both(prefix)
return { prefix .. "_balley_smoo" .. coordSuffix, prefix .. "_balley-smoo" .. coordSuffix }
end
local manual = getManualCoordinates(frame, args,
both("latd"), both("latm"), both("latNS"),
both("longd"), both("longm"), both("longEW"))
if manual == "suppress" then return nil end
if manual then return manual end
if wdQid then return getCoordinatesForQid(frame, wdQid) end
return getCityCoordinates(frame, cleanName) or getCoordinatesForQid(frame, findCapitalQid(cleanName))
end
-- Maximum number of largest-city slots.
local MAX_LARGEST = 3
-- Border classes for a run of merged rows, matching reiltys.lua's own
-- convention for a header followed by bulleted sub-rows.
local function trClass(class)
return ' class="' .. class .. '"'
end
-- Collects largest-city entries; Wikidata fallback for slot 1 only.
local function collectLargestEntries(args)
local entries = {}
for i = 1, MAX_LARGEST do
local suffix = tostring(i)
-- Underscore and hyphen spellings accepted at every slot.
local nameNames = { "balley_smoo" .. suffix, "balley-smoo" .. suffix }
local qualNames = { "sorçh_balley_smoo" .. suffix, "sorçh_balley-smoo" .. suffix }
local noteNames = { "noteyn_balley_smoo" .. suffix, "noteyn_balley-smoo" .. suffix }
local coordSuffix = suffix
if i == 1 then
-- Bare form is a synonym for slot 1 (its coordinate params stay unsuffixed).
table.insert(nameNames, 1, "balley-smoo")
table.insert(nameNames, 1, "balley_smoo")
table.insert(qualNames, 1, "sorçh_balley-smoo")
table.insert(qualNames, 1, "sorçh_balley_smoo")
table.insert(noteNames, 1, "noteyn_balley-smoo")
table.insert(noteNames, 1, "noteyn_balley_smoo")
coordSuffix = ""
end
local nameRaw = getManual(args, nameNames)
if isNone(nameRaw) then
-- Explicit none: no Wikidata fallback.
elseif nameRaw then
table.insert(entries, {
name = nameRaw,
qualifier = getManual(args, qualNames),
note = getManual(args, noteNames),
coordSuffix = coordSuffix,
})
elseif i == 1 then
-- Deeper slots are manual-only.
local wd, wdQid, wdDisplay = getWikidataCity("P13574")
if wd then
table.insert(entries, { name = wd, qualifier = nil, note = getManual(args, noteNames), coordSuffix = "", wdQid = wdQid, wdDisplay = wdDisplay })
end
end
end
return entries
end
-- Maximum number of capital slots.
local MAX_CAPITALS = 5
-- Slot 1 uses the bare legacy names, slots 2+ a numeric suffix. The bare |sorçh_preeu-valley= is the row label,
-- so slot 1's qualifier is |sorçh_preeu-valley1=. Slot 1 = none suppresses the row. With no manual slot set,
-- every current P36 capital is used; if only slots 2+ are set, Wikidata's first capital fills slot 1.
-- With several capitals each gets its P518 branch label (a manual qualifier overrides it, none hides it).
local function collectCapitalEntries(args)
local entries = {}
local hasSlot1 = false
local wdCapitals
local function wdList()
wdCapitals = wdCapitals or getWikidataCapitals()
return wdCapitals
end
local function noteNamesFor(i)
local names = { "noteyn_preeu-valley" .. i }
if i == 1 then table.insert(names, 1, "noteyn_preeu-valley") end
return names
end
local function qualifierFor(i)
local qualifier = getManual(args, { "sorçh_preeu-valley" .. i })
if isNone(qualifier) then return nil, true end
return qualifier, false
end
for i = 1, MAX_CAPITALS do
local nameNames = { "preeu-valley" .. i }
if i == 1 then table.insert(nameNames, 1, "preeu-valley") end
local nameRaw = getManual(args, nameNames)
if isNone(nameRaw) then
if i == 1 then return {} end
elseif nameRaw then
if i == 1 then hasSlot1 = true end
local qualifier, noTag = qualifierFor(i)
table.insert(entries, {
name = nameRaw, qualifier = qualifier, noTag = noTag,
note = getManual(args, noteNamesFor(i)),
coordSuffix = (i == 1) and "" or tostring(i),
})
end
end
if #entries > 0 and not hasSlot1 then
local first = wdList()[1]
local wd, wdQid, wdDisplay
if first then
wd, wdQid, wdDisplay = first.name, first.wdQid, first.wdDisplay
else
wd, wdQid, wdDisplay = getWikidataCity("P36")
end
local duplicate = false
for _, e in ipairs(entries) do
if wd and normaliseCityName(e.name):lower() == wd:lower() then duplicate = true end
end
if wd and not duplicate then
local qualifier, noTag = qualifierFor(1)
table.insert(entries, 1, {
name = wd, wdQid = wdQid, wdDisplay = wdDisplay,
qualifier = qualifier, noTag = noTag,
note = getManual(args, noteNamesFor(1)),
coordSuffix = "",
})
end
end
if #entries == 0 then
local list = wdList()
if #list == 0 then
local wd, wdQid, wdDisplay = getWikidataCity("P36")
if wd then list = { { name = wd, wdQid = wdQid, wdDisplay = wdDisplay, branch = "" } } end
end
for i, cap in ipairs(list) do
if i > MAX_CAPITALS then break end
local qualifier, noTag = qualifierFor(i)
table.insert(entries, {
name = cap.name, wdQid = cap.wdQid, wdDisplay = cap.wdDisplay,
qualifier = qualifier, noTag = noTag,
note = getManual(args, noteNamesFor(i)),
coordSuffix = (i == 1) and "" or tostring(i),
})
end
end
-- Several capitals: an entry matching a Wikidata capital takes that capital's branch label.
if #entries > 1 then
for _, entry in ipairs(entries) do
if not entry.qualifier and not entry.noTag then
local want = normaliseCityName(entry.name):lower()
for _, cap in ipairs(wdList()) do
if cap.branch ~= "" and (cap.name:lower() == want or (cap.wdDisplay and cap.wdDisplay:lower() == want)) then
entry.qualifier = cap.branch
end
end
end
end
end
return entries
end
-- Manual params win (slot N uses suffix N), =none suppresses, else Wikidata via QID, else gv title.
local function resolveCapitalCoordinates(frame, args, entry, cleanName)
local function names(prefix)
if entry.coordSuffix == "" then return { prefix, prefix .. "1" } end
return { prefix .. entry.coordSuffix }
end
local manual = getManualCoordinates(frame, args,
names("latd"), names("latm"), names("latNS"),
names("longd"), names("longm"), names("longEW"))
if manual == "suppress" then return nil end
if manual then return manual end
if entry.wdQid then return getCoordinatesForQid(frame, entry.wdQid) end
return getCityCoordinates(frame, cleanName) or getCoordinatesForQid(frame, findCapitalQid(cleanName))
end
function p.main(frame, args)
-- Fallback verification to catch argument slots accurately if frame context shifts
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local capitalEntries = collectCapitalEntries(args)
local administrative = getManual(args, {"ynnyd_reiragh"})
local adminNote = getManual(args, {"noteyn_ynnyd_reiragh"})
-- Bare latd etc. bind to the capital's slot 1, else the administrative centre.
local manualPrimaryCoords = getManualCoordinates(frame, args, "latd", "latm", "latNS", "longd", "longm", "longEW")
local hasCapital = #capitalEntries > 0
-- With one capital, a duplicate largest city is dropped and noted as "(as y balley smoo)";
-- with several, every largest city is listed in its own row, with coordinates.
local multiple = #capitalEntries > 1
local allEntries = collectLargestEntries(args)
local largestEntries = {}
local isSameAny = false
for _, entry in ipairs(allEntries) do
local cleanLower = mw.text.trim(entry.name):lower()
local isSentinel = (cleanLower == "preeu-valley" or cleanLower == "preeu_valley")
local largestLower = normaliseCityName(entry.name):lower()
local matchesCapital = false
for _, capEntry in ipairs(capitalEntries) do
if normaliseCityName(capEntry.name):lower() == largestLower then matchesCapital = true end
end
if multiple then
if not isSentinel then table.insert(largestEntries, entry) end
elseif isSentinel or matchesCapital then
isSameAny = true
else
table.insert(largestEntries, entry)
end
end
-- Rows are collected first, then classed by position: {th (nil = continuation row), rowspan, td}.
local pending = {}
-- With several capitals the label rowspans all rows.
if hasCapital then
local label = args["sorçh_preeu-valley"] or "Preeu-valley"
local displayLabel = '[[' .. label .. ']]'
if isSameAny then
displayLabel = '[[' .. label .. ']]<br/><small style="font-weight:normal;">(as y balley smoo)</small>'
end
for idx, entry in ipairs(capitalEntries) do
-- Manual display text is kept.
local cleanCapName, capManualDisplay, capTrailing = splitManualLink(entry.name)
local capDisplayName = entry.wdDisplay or capManualDisplay or cleanCapName
local text = '[[' .. cleanCapName .. '|' .. capDisplayName .. ']]'
if capTrailing then text = text .. capTrailing end
if entry.qualifier and entry.qualifier ~= "" then
text = text .. ' (' .. entry.qualifier .. ')'
end
if entry.note and entry.note ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { entry.note } }
end
-- Slot 1 uses the bare coordinate params; slots 2-3 use suffixed ones.
local capCoords
if entry.coordSuffix == "" and manualPrimaryCoords == "suppress" then
capCoords = nil
elseif entry.coordSuffix == "" and manualPrimaryCoords then
capCoords = manualPrimaryCoords
else
capCoords = resolveCapitalCoordinates(frame, args, entry, cleanCapName)
end
text = text .. coordSpan(capCoords)
if idx == 1 then
table.insert(pending, { th = displayLabel, rowspan = multiple and #capitalEntries or nil, td = text })
else
table.insert(pending, { th = nil, td = text })
end
end
end
-- Capital in exile: free wikitext, shown as its own row.
local exile = getManual(args, {"preeu-valley_ayns_eebyrtys"})
if exile and not isNone(exile) then
local exileLabel = args["sorçh_preeu-valley_ayns_eebyrtys"] or "Preeu-valley ayns eebyrtys"
local exileNote = getManual(args, {"noteyn_preeu-valley_ayns_eebyrtys"})
if exileNote then exile = exile .. frame:expandTemplate{ title = "efn", args = { exileNote } } end
table.insert(pending, { th = '[[' .. exileLabel .. ']]', wrap = true, td = exile })
end
-- 2. ADMINISTRATIVE CENTER
if administrative and mw.text.trim(administrative):lower() ~= "none" then
local label = args["sorçh_ynnyd_reiragh"] or "Ynnyd reiragh"
-- Manual display text is kept.
local cleanAdminName, adminManualDisplay, adminTrailing = splitManualLink(administrative)
local text = '[[' .. cleanAdminName .. '|' .. (adminManualDisplay or cleanAdminName) .. ']]' .. (adminTrailing or '')
if adminNote and adminNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { adminNote } }
end
-- Manual-override-only -- no Wikidata coordinate fetch for an
-- administrative centre (the old template never had one either).
if not hasCapital then
local adminCoords
if manualPrimaryCoords == "suppress" then
adminCoords = nil
elseif manualPrimaryCoords then
adminCoords = manualPrimaryCoords
end
text = text .. coordSpan(adminCoords)
end
table.insert(pending, { th = '[[' .. label .. ']]', td = text })
end
-- With several entries the first <th> rowspans them all.
if #largestEntries > 0 then
local total = #largestEntries
for idx, entry in ipairs(largestEntries) do
-- Wikidata and manual display overrides are never both set.
local cleanLargeName, largeManualDisplay, largeTrailing = splitManualLink(entry.name)
local largeDisplayName = entry.wdDisplay or largeManualDisplay or cleanLargeName
local text = '[[' .. cleanLargeName .. '|' .. largeDisplayName .. ']]'
if largeTrailing then text = text .. largeTrailing end
if entry.qualifier and entry.qualifier ~= "" then
text = text .. ' (' .. entry.qualifier .. ')'
end
if entry.note and entry.note ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { entry.note } }
end
text = text .. coordSpan(resolveEntryCoordinates(frame, args, entry.coordSuffix, cleanLargeName, entry.wdQid))
if idx == 1 then
table.insert(pending, { th = "Balley smoo", rowspan = (total > 1) and total or nil, td = text })
else
table.insert(pending, { th = nil, td = text })
end
end
end
if #pending == 0 then return nil end
-- Lone row gets no class; otherwise top/middle/bottom merged classes.
local subRows = {}
local total = #pending
for idx, row in ipairs(pending) do
local class
if total == 1 then
class = ""
elseif idx == 1 then
class = "mergedtoprow"
elseif idx == total then
class = "mergedbottomrow"
else
class = "mergedrow"
end
local classAttr = (class ~= "") and trClass(class) or ""
if row.th then
local rowspanAttr = row.rowspan and (' rowspan="' .. row.rowspan .. '"') or ''
table.insert(subRows, '<tr' .. classAttr .. '><th' .. rowspanAttr .. ' style="vertical-align:top; ' .. (row.wrap and '' or 'white-space:nowrap; ') .. 'text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. row.th .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. row.td .. '</td></tr>')
else
table.insert(subRows, '<tr' .. classAttr .. '><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. row.td .. '</td></tr>')
end
end
return table.concat(subRows)
end
return p
bvwaeu0q5fghei09jmguhg20v0uaiii
Module:Kishtey fys çheer/bratteeyn
828
55831
394564
393454
2026-10-16T17:33:19Z
MacTire02
219
-chaghteraghtyn
394564
Scribunto
text/plain
local p = {}
local enmynCheerey = require("Module:Enmyn çheerey")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then return mw.text.trim(value) end
end
return nil
end
local function getWikidataImage(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue and mainsnak.datavalue.type == "string" then
local file = mainsnak.datavalue.value
if file and file ~= "" then return file end
end
end
return nil
end
local NON_RECTANGULAR_FLAGS = {
["Flag of Nepal.svg"] = true,
["Flag of Ohio.svg"] = true,
["Flag of Switzerland.svg"] = true,
}
local function needsFlagBorder(flagFile)
if not flagFile then return true end
if NON_RECTANGULAR_FLAGS[flagFile] then return false end
if mw.ustring.find(mw.ustring.lower(flagFile), "nepal") then return false end
return true
end
function p.main(frame, args)
local flag = getManual(args, {"jalloo_brattagh"})
if flag and mw.ustring.lower(flag) == "none" then flag = nil elseif not flag then flag = getWikidataImage("P41") end
local flag2 = getManual(args, {"jalloo_brattagh_2", "jalloo_brattagh_elley"})
if flag2 and mw.ustring.lower(flag2) == "none" then flag2 = nil elseif not flag2 then flag2 = getWikidataImage("P163") end
local arms = getManual(args, {"jalloo_armys", "jalloo_cleinney", "jalloo_cowrey"})
if arms and mw.ustring.lower(arms) == "none" then arms = nil elseif not arms then arms = getWikidataImage("P94") end
local arms2 = getManual(args, {"jalloo_armys_2", "jalloo_cleinney_2"})
if arms2 and mw.ustring.lower(arms2) == "none" then arms2 = nil elseif not arms2 then arms2 = getWikidataImage("P237") end
if not flag and not flag2 and not arms and not arms2 then return nil end
local nameRaw = getManual(args, {"ennym_gienneydagh", "ennym", "ennym_çheerey", "ennym_çheer"}) or (mw.title.getCurrentTitle() and mw.title.getCurrentTitle().text) or ""
local name = enmynCheerey.genitive(nameRaw)
local data = { flags = {}, armses = {} }
if flag then
table.insert(data.flags, { image = flag, width = getManual(args, {"lheead_brattagh"}) or "125px", hasBorder = needsFlagBorder(flag), link = "Brattagh " .. name, label = getManual(args, {"fo-heidyl_brattagh"}) or "Brattagh" })
end
if flag2 then
table.insert(data.flags, { image = flag2, width = getManual(args, {"lheead_brattagh_2", "lheead_brattagh"}) or "100px", hasBorder = needsFlagBorder(flag2), link = "Brattagh " .. name, label = getManual(args, {"fo-heidyl_brattagh_2"}) or "Brattagh elley" })
end
if arms then
local kind = getManual(args, {"art_sorçh_cowrey", "sorçh_cowrey"}) or "Armys"
table.insert(data.armses, { image = arms, width = getManual(args, {"lheead_armys", "lheead_cleinney", "lheead_cowrey"}) or "85px", link = kind .. " " .. name, label = getManual(args, {"sorçh_cowrey"}) or "Armys" })
end
if arms2 then
table.insert(data.armses, { image = arms2, width = getManual(args, {"lheead_armys_2", "lheead_cleinney_2"}) or "85px", link = "Armys " .. name, label = getManual(args, {"sorçh_cowrey_2"}) or "Armys" })
end
local imageCells = {}
local captionCells = {}
local hasFlags = #data.flags > 0
local hasArms = #data.armses > 0
if hasFlags then
local flagContent = {}
for _, f in ipairs(data.flags) do
-- `|border` is the real image option for the thumbborder line
-- ("|style=..." is not valid inline image markup).
local border = f.hasBorder and '|border' or ""
table.insert(flagContent, '[[Coadan:' .. f.image .. '|' .. f.width .. border .. ']]')
end
-- Inline style="text-align:center;" (not the deprecated align=
-- attribute) so mobile skins can't override it -- same fix applied
-- to every cell and the inner table below.
table.insert(imageCells, '<td style="text-align:center; ' .. (hasArms and "width:58%; " or "width:100%; ") .. 'vertical-align:middle;">' .. table.concat(flagContent, '<br/>') .. '</td>')
-- Plain size, matching every other label (not wrapped in <small>,
-- which on top of the outer table's own font-size:95% made these
-- captions noticeably smaller than everything else).
local flagCaptions = {}
for _, f in ipairs(data.flags) do table.insert(flagCaptions, '[[' .. f.link .. '|' .. f.label .. ']]') end
table.insert(captionCells, '<td style="text-align:center;">' .. table.concat(flagCaptions, '<br/>') .. '</td>')
end
if hasArms then
local armsContent = {}
for _, a in ipairs(data.armses) do table.insert(armsContent, '[[Coadan:' .. a.image .. '|' .. a.width .. ']]') end
table.insert(imageCells, '<td style="text-align:center; width:auto; vertical-align:middle;">' .. table.concat(armsContent, '<br/>') .. '</td>')
local armsCaptions = {}
for _, a in ipairs(data.armses) do table.insert(armsCaptions, '[[' .. a.link .. '|' .. a.label .. ']]') end
table.insert(captionCells, '<td style="text-align:center;">' .. table.concat(armsCaptions, '<br/>') .. '</td>')
end
return '<tr><td colspan="2" style="text-align:center; padding:0.5em 0.4em;"><table style="text-align:center; width:100%; background:none; margin:0 auto;"><tr>' .. table.concat(imageCells) .. '</tr><tr>' .. table.concat(captionCells) .. '</tr></table></td></tr>'
end
return p
ne2oxl65mykqpttpesfkefcichbfb0q
394584
394564
2026-10-17T01:10:19Z
MacTire02
219
y/yn
394584
Scribunto
text/plain
local p = {}
local enmynCheerey = require("Module:Enmyn çheerey")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then return mw.text.trim(value) end
end
return nil
end
local function getWikidataImage(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue and mainsnak.datavalue.type == "string" then
local file = mainsnak.datavalue.value
if file and file ~= "" then return file end
end
end
return nil
end
local NON_RECTANGULAR_FLAGS = {
["Flag of Nepal.svg"] = true,
["Flag of Ohio.svg"] = true,
["Flag of Switzerland.svg"] = true,
}
local function needsFlagBorder(flagFile)
if not flagFile then return true end
if NON_RECTANGULAR_FLAGS[flagFile] then return false end
if mw.ustring.find(mw.ustring.lower(flagFile), "nepal") then return false end
return true
end
-- Manx article after a vowel-final word: "Armys y Rank" but "Cowrey yn Toodaan".
-- Only upgrades a leading "y" to "yn"; an existing "yn" (needed before a
-- vowel-initial name) is never changed.
local function joinKindAndName(kind, name)
local lastChar = mw.ustring.sub(mw.ustring.lower(kind), -1)
if mw.ustring.find(lastChar, "^[aeiouyàáâèéêìíîòóôùúû]$") then
local rest = mw.ustring.match(name, "^[Yy] (.+)$")
if rest then name = "yn " .. rest end
end
return kind .. " " .. name
end
function p.main(frame, args)
local flag = getManual(args, {"jalloo_brattagh"})
if flag and mw.ustring.lower(flag) == "none" then flag = nil elseif not flag then flag = getWikidataImage("P41") end
local flag2 = getManual(args, {"jalloo_brattagh_2", "jalloo_brattagh_elley"})
if flag2 and mw.ustring.lower(flag2) == "none" then flag2 = nil elseif not flag2 then flag2 = getWikidataImage("P163") end
local arms = getManual(args, {"jalloo_armys", "jalloo_cleinney", "jalloo_cowrey"})
if arms and mw.ustring.lower(arms) == "none" then arms = nil elseif not arms then arms = getWikidataImage("P94") end
local arms2 = getManual(args, {"jalloo_armys_2", "jalloo_cleinney_2"})
if arms2 and mw.ustring.lower(arms2) == "none" then arms2 = nil elseif not arms2 then arms2 = getWikidataImage("P237") end
if not flag and not flag2 and not arms and not arms2 then return nil end
local nameRaw = getManual(args, {"ennym_gienneydagh", "ennym", "ennym_çheerey", "ennym_çheer"}) or (mw.title.getCurrentTitle() and mw.title.getCurrentTitle().text) or ""
local name = enmynCheerey.genitive(nameRaw)
local data = { flags = {}, armses = {} }
if flag then
table.insert(data.flags, { image = flag, width = getManual(args, {"lheead_brattagh"}) or "125px", hasBorder = needsFlagBorder(flag), link = "Brattagh " .. name, label = getManual(args, {"fo-heidyl_brattagh"}) or "Brattagh" })
end
if flag2 then
table.insert(data.flags, { image = flag2, width = getManual(args, {"lheead_brattagh_2", "lheead_brattagh"}) or "100px", hasBorder = needsFlagBorder(flag2), link = "Brattagh " .. name, label = getManual(args, {"fo-heidyl_brattagh_2"}) or "Brattagh elley" })
end
if arms then
local kind = getManual(args, {"art_sorçh_cowrey", "sorçh_cowrey"}) or "Armys"
table.insert(data.armses, { image = arms, width = getManual(args, {"lheead_armys", "lheead_cleinney", "lheead_cowrey"}) or "85px", link = joinKindAndName(kind, name), label = getManual(args, {"sorçh_cowrey"}) or "Armys" })
end
if arms2 then
table.insert(data.armses, { image = arms2, width = getManual(args, {"lheead_armys_2", "lheead_cleinney_2"}) or "85px", link = joinKindAndName(getManual(args, {"art_sorçh_cowrey_2", "sorçh_cowrey_2"}) or "Armys", name), label = getManual(args, {"sorçh_cowrey_2"}) or "Armys" })
end
local imageCells = {}
local captionCells = {}
local hasFlags = #data.flags > 0
local hasArms = #data.armses > 0
if hasFlags then
local flagContent = {}
for _, f in ipairs(data.flags) do
-- `|border` is the real image option for the thumbborder line
-- ("|style=..." is not valid inline image markup).
local border = f.hasBorder and '|border' or ""
table.insert(flagContent, '[[Coadan:' .. f.image .. '|' .. f.width .. border .. ']]')
end
-- Inline style="text-align:center;" (not the deprecated align=
-- attribute) so mobile skins can't override it -- same fix applied
-- to every cell and the inner table below.
table.insert(imageCells, '<td style="text-align:center; ' .. (hasArms and "width:58%; " or "width:100%; ") .. 'vertical-align:middle;">' .. table.concat(flagContent, '<br/>') .. '</td>')
-- Plain size, matching every other label (not wrapped in <small>,
-- which on top of the outer table's own font-size:95% made these
-- captions noticeably smaller than everything else).
local flagCaptions = {}
for _, f in ipairs(data.flags) do table.insert(flagCaptions, '[[' .. f.link .. '|' .. f.label .. ']]') end
table.insert(captionCells, '<td style="text-align:center;">' .. table.concat(flagCaptions, '<br/>') .. '</td>')
end
if hasArms then
local armsContent = {}
for _, a in ipairs(data.armses) do table.insert(armsContent, '[[Coadan:' .. a.image .. '|' .. a.width .. ']]') end
table.insert(imageCells, '<td style="text-align:center; width:auto; vertical-align:middle;">' .. table.concat(armsContent, '<br/>') .. '</td>')
local armsCaptions = {}
for _, a in ipairs(data.armses) do table.insert(armsCaptions, '[[' .. a.link .. '|' .. a.label .. ']]') end
table.insert(captionCells, '<td style="text-align:center;">' .. table.concat(armsCaptions, '<br/>') .. '</td>')
end
return '<tr><td colspan="2" style="text-align:center; padding:0.5em 0.4em;"><table style="text-align:center; width:100%; background:none; margin:0 auto;"><tr>' .. table.concat(imageCells) .. '</tr><tr>' .. table.concat(captionCells) .. '</tr></table></td></tr>'
end
return p
8pu1ydyuldzvygf6nhiw2th1d44y686
Module:Kishtey fys çheer/cowraghyn
828
55832
394536
394518
2026-10-16T12:01:54Z
MacTire02
219
imraaghyn
394536
Scribunto
text/plain
local p = {}
-- Max |jarroo-raaN= motto-name slots checked, beyond the bare/slot-1
-- spelling. Rwanda needs 4 (one per official language); set above that
-- for headroom. Same convention as aarheynn.lua's MAX_LEVELS.
local MAX_MOTTO_NAMES = 6
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then return mw.text.trim(value) end
end
return nil
end
-- Wraps a manual citation in <ref>...</ref>, unless already fully <ref>-tagged
-- (Scribunto pre-expands a literal <ref> into a strip marker; if stripping
-- those markers leaves nothing, it was already tag(s)).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Wraps a plain language name in [[...]] unless already a wikilink (avoids
-- double-bracketing a manual override), same guard as reiltys.lua's wikilinkLabel.
local function linkPlainText(text)
if not text or text == "" then return text end
if mw.ustring.find(text, "%[%[") then return text end
return "[[" .. text .. "]]"
end
local function getMottoData(args)
local motto = getManual(args, {"jarroo-raa_ashoonagh", "jarroo_raa", "jarroo-raa", "jarroo-raa1"})
-- |jarroo-raa=none suppresses the motto entirely (manual text AND the
-- Wikidata fallback) -- override valve for bad Wikidata data.
if motto and mw.ustring.lower(motto) == "none" then
return nil
end
local reference = getManual(args, {"imraa_jarroo_raa", "imraa_jarroo-raa"})
local chyndaa = getManual(args, {"çhyndaa_jarroo-raa", "chyndaa_jarroo-raa", "çhyndaa_jarroo_raa", "chyndaa_jarroo_raa"})
-- Transliteration is per-name, not shared (slot 1 keeps the bare,
-- unnumbered spelling as a synonym, same as çhengey_jarroo-raa).
local tessen = getManual(args, {"tessen-lettyraghey_jarroo-raa", "tessen-lettyraghey_jarroo_raa", "tessen-lettyraghey_jarroo-raa1", "tessen-lettyraghey_jarroo_raa1"})
local chengey = getManual(args, {"çhengey_jarroo-raa", "çhengey_jarroo_raa", "çhengey_jarroo-raa1", "çhengey_jarroo_raa1"})
-- A motto can have more than one equally official name (e.g. stated
-- separately in two or more languages, neither a "translation" of the
-- other -- that's |chyndaa_jarroo-raa=). Slot 1 keeps every legacy
-- spelling and the P1451 Wikidata fallback; slots 2+ are manual-only.
-- Each name carries its own çhengey (language) and tessen
-- (transliteration); chyndaa is shared UNLESS distinctMode (below).
local names = {}
if motto then
table.insert(names, { text = motto, chengey = chengey, tessen = tessen, chyndaa = chyndaa })
else
local entity = mw.wikibase.getEntityObject()
if entity then
local statements = entity:getBestStatements("P1451")
if statements and #statements > 0 then
for _, statement in ipairs(statements) do
if statement.mainsnak and statement.mainsnak.datavalue then
local value = statement.mainsnak.datavalue.value
if value and value.text then
table.insert(names, { text = value.text, chengey = chengey, tessen = tessen, chyndaa = chyndaa })
break
end
end
end
end
end
end
-- distinctMode: true once a second/third motto has its OWN translation
-- set -- signals two genuinely separate mottos (each shown with its own
-- translation directly beneath it) rather than one motto restated in
-- multiple languages (single shared translation, shown once at the end).
local distinctMode = false
for i = 2, MAX_MOTTO_NAMES do
-- Hyphen-only: "jarroo-raa" is one hyphenated word, not two words
-- joined by a separator, so "jarroo_raa" + i is a typo, not a valid
-- alternate spelling (unlike balley_smoo/balley-smoo).
local extra = getManual(args, {"jarroo-raa" .. i})
if extra and mw.ustring.lower(extra) ~= "none" then
local extraChengey = getManual(args, {"çhengey_jarroo-raa" .. i, "çhengey_jarroo_raa" .. i})
local extraTessen = getManual(args, {"tessen-lettyraghey_jarroo-raa" .. i, "tessen-lettyraghey_jarroo_raa" .. i})
local extraChyndaa = getManual(args, {"çhyndaa_jarroo-raa" .. i, "chyndaa_jarroo-raa" .. i, "çhyndaa_jarroo_raa" .. i, "chyndaa_jarroo_raa" .. i})
if extraChyndaa and extraChyndaa ~= "" then distinctMode = true end
table.insert(names, { text = extra, chengey = extraChengey, tessen = extraTessen, chyndaa = extraChyndaa })
end
end
if #names == 0 then return nil end
local finalRef = wrapReference(reference)
return { names = names, reference = finalRef, chyndaa = chyndaa, distinctMode = distinctMode }
end
-- Given a property holding an item value (e.g. P85 = anthem), resolves the
-- linked item to a page title (gv sitelink, else label). Returns the title,
-- the item's own ID, and any P51 (audio) qualifier on this same statement
-- (a shared anthem often carries audio per-country this way).
local function getWikidataItemInfo(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local statement = statements[1]
local mainsnak = statement.mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
local title = mw.wikibase.sitelink(id)
if not title or title == "" then
title = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
end
if not title or title == "" then return nil end
local audioQuals = statement.qualifiers and statement.qualifiers.P51
local audioSnak = audioQuals and audioQuals[1]
local qualifierAudio = audioSnak and audioSnak.snaktype == "value" and audioSnak.datavalue
and audioSnak.datavalue.type == "string" and audioSnak.datavalue.value
if qualifierAudio == "" then qualifierAudio = nil end
return { id = id, title = title, qualifierAudio = qualifierAudio }
end
-- Returns a Wikidata item's own standalone P51 (audio) file, if any -- as
-- opposed to the per-country qualifier checked first above.
local function getWikidataAudioFile(id)
if not id then return nil end
local entity = mw.wikibase.getEntityObject(id)
if not entity then return nil end
local statements = entity:getBestStatements("P51")
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "string") then
return nil
end
local file = mainsnak.datavalue.value
if file and file ~= "" then return file end
return nil
end
-- Codepoint ranges treated as Latin/script-neutral for italicisation
-- (Latin blocks, IPA, diacritics, general punctuation). Anything else
-- (Cyrillic, Greek, Arabic, CJK, Devanagari, ...) isn't italicised, per
-- MOS:FOREIGNITALIC.
local function isLatinOrNeutral(cp)
if cp < 0x80 then return true end
if cp <= 0x02AF then return true end
if cp >= 0x0300 and cp <= 0x036F then return true end
if cp >= 0x1E00 and cp <= 0x1EFF then return true end
if cp >= 0x2000 and cp <= 0x206F then return true end
return false
end
local function isNonLatinScript(text)
if not text or text == "" then return false end
local length = mw.ustring.len(text)
if not length or length == 0 then return false end
local codepoints = { mw.ustring.codepoint(text, 1, length) }
for _, cp in ipairs(codepoints) do
if not isLatinOrNeutral(cp) then return true end
end
return false
end
function p.main(frame, args)
local motto = getMottoData(args)
local rows = {}
if motto then
-- One line per official name. Each gets its own script-based
-- italics, language tag, and transliteration.
local nameLines = {}
for _, nameEntry in ipairs(motto.names) do
-- mw.ustring.gsub (codepoint-aware), not plain :gsub -- a
-- byte-wise gsub can truncate the last byte of a non-Latin
-- character and corrupt it.
local nameText = mw.ustring.gsub(mw.ustring.gsub(mw.text.trim(nameEntry.text), '^["“]', ''), '["”]$', '')
-- Italicised purely by script (MOS:FOREIGNITALIC), wikilink or not.
if not isNonLatinScript(nameText) then
nameText = "''" .. nameText .. "''"
end
-- çhengey_jarroo-raa names the motto's own language. Native
-- <small> tag, not {{small}} -- a literal "{{...}}" string
-- returned from a module isn't re-parsed as a template call.
if nameEntry.chengey and nameEntry.chengey ~= "" then
nameText = nameText .. " <small>(" .. linkPlainText(nameEntry.chengey) .. ")</small>"
end
-- A transliteration is always Latin-script, so quotes, not
-- italics -- attached to this name's own line.
if nameEntry.tessen and nameEntry.tessen ~= "" then
nameText = nameText .. " <br/>(“" .. nameEntry.tessen .. "”)"
end
-- Distinct mottos: each one's own translation goes directly
-- under its own line, not deferred to the very end.
if motto.distinctMode and nameEntry.chyndaa and nameEntry.chyndaa ~= "" then
nameText = nameText .. " <br/><small>“" .. nameEntry.chyndaa .. "”</small>"
end
table.insert(nameLines, nameText)
end
local baseText = table.concat(nameLines, "<br/>")
local mottoNote = getManual(args, {"noteyn_jarroo-raa", "noteyn_jarroo_raa"})
if mottoNote and mottoNote ~= "" then
baseText = baseText .. frame:expandTemplate{ title = "efn", args = { mottoNote } }
end
if motto.reference then baseText = baseText .. motto.reference end
-- One shared motto restated in multiple languages: single shared
-- translation shown once at the very end.
if not motto.distinctMode and motto.chyndaa and motto.chyndaa ~= "" then baseText = baseText .. " <br/><small>“" .. motto.chyndaa .. "”</small>" end
table.insert(rows, "'''[[Jarroo-raa]]: '''" .. baseText)
end
-- wikidataProperty is optional: pass a property (e.g. "P85") to fall
-- back to Wikidata when no manual parameter is set for this anthem slot.
local function formatAnthem(label, key, wikidataProperty)
local title = getManual(args, {key, key .. "1"})
-- |<key>=none suppresses this row entirely.
if title and mw.ustring.lower(title) == "none" then
return
end
local wikidataInfo = nil
if not title and wikidataProperty then
wikidataInfo = getWikidataItemInfo(wikidataProperty)
if wikidataInfo then title = wikidataInfo.title end
end
if not title then return end
-- |gyn_cowraghyn_aaraa_<key>= suppresses the curly quotes otherwise
-- always wrapped around the title -- for places with no single
-- official anthem (e.g. Northern Ireland), where what's shown is a
-- descriptive label, not an actual title.
local suppressQuotes = getManual(args, {"gyn_cowraghyn_aaraa_" .. key, "gyn_cowraghyn_aaraa_" .. key .. "1"}) ~= nil
-- One line per official title (e.g. a bilingual anthem, same tune,
-- two equally-official lyrics sets). Slot 1 keeps the Wikidata
-- fallback; slots 2/3 are manual-only, each with its own
-- transliteration.
local names = {
{ text = title,
chengey = getManual(args, {"çhengey_" .. key, "çhengey_" .. key .. "1"}),
tessen = getManual(args, {"tessen-lettyraghey_" .. key, "tessen-lettyraghey_" .. key .. "1"}) },
}
for i = 2, 3 do
local extra = getManual(args, {key .. i})
if extra and mw.ustring.lower(extra) ~= "none" then
table.insert(names, {
text = extra,
chengey = getManual(args, {"çhengey_" .. key .. i}),
tessen = getManual(args, {"tessen-lettyraghey_" .. key .. i}),
})
end
end
local nameLines = {}
for _, nameEntry in ipairs(names) do
-- Same UTF-8-safe quote-stripping as the motto above.
local clean = mw.ustring.gsub(mw.ustring.gsub(mw.text.trim(nameEntry.text), '^["“]', ''), '["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local line = suppressQuotes and clean or ('“' .. clean .. '”')
if nameEntry.chengey and nameEntry.chengey ~= "" then
line = line .. " <small>(" .. linkPlainText(nameEntry.chengey) .. ")</small>"
end
if nameEntry.tessen and nameEntry.tessen ~= "" then
line = line .. " <br/>(“" .. nameEntry.tessen .. "”)"
end
table.insert(nameLines, line)
end
local display = table.concat(nameLines, "<br/>")
local note = getManual(args, {"noteyn_" .. key})
if note and note ~= "" then display = display .. frame:expandTemplate{ title = "efn", args = { note } } end
local ref = getManual(args, {"imraa_" .. key})
if ref then display = display .. wrapReference(ref) end
local chyndaa = getManual(args, {"çhyndaa_" .. key, "chyndaa_" .. key})
if chyndaa and chyndaa ~= "" then
if suppressQuotes then
display = display .. " <br/><small>" .. chyndaa .. "</small>"
else
display = display .. " <br/><small>“" .. chyndaa .. "”</small>"
end
end
local audio = getManual(args, {"coadan_" .. key})
if (not audio or audio == "") and wikidataInfo then
-- Prefer a per-country qualifier over the anthem item's own
-- standalone P51.
audio = wikidataInfo.qualifierAudio or getWikidataAudioFile(wikidataInfo.id)
end
if audio and audio ~= "" then display = display .. '<br/><div style="text-align:center; margin-top:0.3em;">[[Coadan:' .. audio .. '|center]]</div>' end
table.insert(rows, "'''" .. label .. ": '''" .. display)
end
formatAnthem("[[Arrane ashoonagh]]", "arrane_ashoonagh", "P85")
formatAnthem("Anthym", "arrane")
formatAnthem("[[Arrane reeoil]]", "arrane_reeoil")
if #rows == 0 then return nil end
return '<tr><td colspan="2" style="padding:0.4em; line-height:1.2em; text-align:center;">' .. table.concat(rows, "<br/>") .. '</td></tr>'
end
return p
libcftvn9m1gdk7hmfuotcplj8gwfnm
Module:Kishtey fys çheer/çhengaghyn
828
55833
394534
394476
2026-10-16T12:00:35Z
MacTire02
219
imraaghyn
394534
Scribunto
text/plain
local p = {}
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function manxSort(a, b)
local function norm(text) return text:lower():gsub("çh", "ch") end
return norm(a) < norm(b)
end
-- Wraps a manual citation in <ref>...</ref>, unless it's already fully
-- <ref>-tagged (Scribunto expands a literal <ref> in a parameter into an
-- opaque \127UNIQ...QINU\127 strip marker before this module sees it, so we
-- strip those out and check what's left -- nothing left means it was
-- already tag(s), pass through unchanged; real text left over -- e.g. a
-- bare {{cite web}} call whose own <templatestyles/> leaves an incidental
-- marker -- means it still needs wrapping).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Splices `insertion` (an efn footnote marker and/or wrapped <ref>) in
-- just before the deepest trailing closing tag, instead of appending it
-- after the whole value. Reported live, with screenshots, across THREE
-- rounds: (1) a manually-typed `{{hlist|[[Faaroish]]|[[Danvargish]]{{efn|
-- ...}}}}` value (the footnote embedded INSIDE one hlist item) rendered
-- with the footnote marker "pushed down", no longer level with the
-- previous item -- traced to `{{hlist}}` itself expanding, before this
-- module ever sees the parameter, into a BLOCK-level
-- `<div class="hlist...">...</div>` wrapping a real `<ul><li>...</li>
-- </ul>` list; (2) once the footnote was instead moved out to this
-- module's own `noteyn_çhengaghyn_oikoil` parameter, an EARLIER version of
-- this fix spliced the insertion in just before the trailing `</div>`
-- alone -- which fixed this module's own bare `<div class="hlist">` wrapper
-- (no `<ul>`/`<li>` at all), but NOT a real `{{hlist}}` call: splicing
-- before `</div>` there lands the insertion right after the closing
-- `</ul>` instead, as a sibling of that `<ul>` -- which is ALSO
-- block-level by default, so it still got forced onto its own new line,
-- just one tag deeper. Confirmed still broken live after that first fix
-- shipped, with another screenshot showing the exact same "orphaned on
-- its own line" symptom unchanged.
--
-- Real fix: peel every trailing closing tag off the end of the value --
-- `</li></ul></div>` for a real `{{hlist}}`-expanded list, or just
-- `</div>` for this module's own bare hlist wrapper -- down to the actual
-- last piece of real content, splice the insertion in right there, then
-- put every peeled tag back on in its original order. For a real list
-- this lands the insertion INSIDE the final `<li>`, as part of that
-- list item's own inline content (hlist's CSS sets `li { display:
-- inline; }`, so content inside one `<li>` stays on the same line as its
-- sibling `<li>`s) -- never as a sibling of a block-level `<ul>` or `<div>`,
-- which is what forces a new line either way. Any other shape (plain
-- text, a bare `[[link]]` with no tags at all -- the sentinel phrase's
-- own branch) is unaffected: no trailing closing tag to peel, so the
-- insertion is appended at the very end exactly as before.
local function appendInsideTrailingBlock(text, insertion)
if not insertion or insertion == "" then return text end
local trailingTags = {}
local rest = text
while true do
local tag = rest:match("(</%a[%w]*>)%s*$")
if not tag then break end
local tagStart = rest:find(tag .. "%s*$")
table.insert(trailingTags, 1, tag)
rest = rest:sub(1, tagStart - 1)
end
if #trailingTags == 0 then
return text .. insertion
end
return rest .. insertion .. table.concat(trailingTags)
end
local function getWikidataLanguageItems(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then
table.insert(items, { id = id, name = label })
end
end
end
if #items == 0 then return nil end
return items
end
local function itemsToRaw(items, excludeIds)
local names = {}
for _, item in ipairs(items) do
if not (excludeIds and excludeIds[item.id]) then
table.insert(names, item.name)
end
end
if #names == 0 then return nil end
return table.concat(names, ",")
end
-- "Çhengey oikoil erbee" ("[there is] no official language") is a
-- descriptive Manx phrase an editor types when a country genuinely has no
-- official language -- it is NOT an article title, so it must never be
-- wikilinked. Left to the generic comma-split/self-link logic below, it was
-- being wrapped exactly like a real language name (`[[Çhengey oikoil
-- erbee|Çhengey oikoil erbee]]`), and any stray bracket characters riding
-- along with it (copy-pasted footnote markers, a leftover manual link
-- attempt, etc.) then nested inside that outer [[...]] pair and broke
-- MediaWiki's link parser, rendering as literal unparsed bracket/pipe text
-- instead of a link -- exactly the "no official language" row bug reported.
local NO_OFFICIAL_LANGUAGE = "Çhengey oikoil erbee"
local function buildLanguageValue(raw, ref, note, frame)
if not raw or mw.text.trim(raw):lower() == "none" then return nil, 0 end
-- Watch for the sentinel by its first three words (a plain byte-prefix
-- check -- safe even with Ç's multi-byte UTF-8 encoding, since this is
-- an exact literal comparison, not a character-aware slice). Real
-- citations for this claim are often several {{cite journal}}/{{cite
-- book}} calls typed directly after the phrase (old-template habit --
-- see wrapReference's own note below) -- e.g. "Çhengey oikoil
-- erbee<ref name=\"rights\">{{cite journal|...}}</ref><ref>{{cite
-- book|...}}</ref><ref name=\"Footitt\">{{cite book|...}}</ref>".
-- Rather than trying to parse out, count, or reorder whatever follows
-- the phrase, once the prefix matches the WHOLE value is passed through
-- completely unchanged (matching the already-pre-linked [[...]] branch
-- just below) -- so every citation survives byte-for-byte, however
-- elaborate, and the phrase itself is never wrapped in a self-link or
-- piped like a real language name.
if raw:sub(1, #NO_OFFICIAL_LANGUAGE) == NO_OFFICIAL_LANGUAGE then
local display = raw
if note and note ~= "" and frame then
display = display .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
display = display .. wrapReference(ref)
end
return display, 1
end
if raw:find("%[%[", 1, false) then
local display = raw
local insertion = ""
if note and note ~= "" and frame then
insertion = insertion .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
insertion = insertion .. wrapReference(ref)
end
display = appendInsideTrailingBlock(display, insertion)
local linkCount = 0
for _ in raw:gmatch("%[%[") do linkCount = linkCount + 1 end
return display, linkCount
end
-- Strip any ref out of this comma-separated field before splitting -- a
-- literal <ref> typed here (rather than via imraa_*) arrives as a strip
-- marker (see wrapReference above), so both shapes are stripped.
local cleaned = raw:gsub("<ref[^>]*>.-</ref>", ""):gsub("<ref[^>]*/>", ""):gsub("\127UNIQ.-QINU\127", "")
local names = mw.text.split(cleaned, ",", true)
local filteredNames = {}
for _, part in ipairs(names) do
local trimmed = mw.text.trim(part)
if trimmed ~= "" then
table.insert(filteredNames, trimmed)
end
end
if #filteredNames == 0 then return nil, 0 end
table.sort(filteredNames, manxSort)
local parts = {}
for _, name in ipairs(filteredNames) do
if name == NO_OFFICIAL_LANGUAGE or name:find("[%[%]]") then
-- Never self-link the sentinel phrase, or a fragment that already
-- carries stray bracket characters -- nesting brackets inside a
-- [[...]] pair breaks the link parser (see comment above).
table.insert(parts, name)
else
table.insert(parts, '[[' .. name .. '|' .. name .. ']]')
end
end
local display = '<div class="hlist">' .. table.concat(parts, ' · ') .. '</div>'
local insertion = ""
if note and note ~= "" and frame then
insertion = insertion .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
insertion = insertion .. wrapReference(ref)
end
display = appendInsideTrailingBlock(display, insertion)
return display, #filteredNames
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local officialItems = nil
local officialRaw = getManual(args, {"çhengaghyn_oikoil", "çhengey_oikoil"})
if not officialRaw then
officialItems = getWikidataLanguageItems("P37")
officialRaw = itemsToRaw(officialItems)
end
local regionalRaw = getManual(args, {"çhengaghyn_ardjynagh", "çhengey_ardjynagh"})
local minorityRaw = getManual(args, {"mynçhengaghyn", "mynçhengey"})
local otherRaw = getManual(args, {"çhengaghyn", "çhengey"})
local official, offCount = buildLanguageValue(officialRaw, getManual(args, {"imraa_çhengaghyn_oikoil", "imraa_çhengey_oikoil"}), getManual(args, {"noteyn_çhengaghyn_oikoil", "noteyn_çhengey_oikoil"}), frame)
local regional, regCount = buildLanguageValue(regionalRaw, getManual(args, {"imraa_çhengaghyn_ardjynagh", "imraa_çhengey_ardjynagh"}), getManual(args, {"noteyn_çhengaghyn_ardjynagh", "noteyn_çhengey_ardjynagh"}), frame)
local minority, minCount = buildLanguageValue(minorityRaw, getManual(args, {"imraa_mynçhengaghyn", "imraa_mynçhengey"}), getManual(args, {"noteyn_mynçhengaghyn", "noteyn_mynçhengey"}), frame)
local other, othCount = buildLanguageValue(otherRaw, getManual(args, {"imraa_çhengaghyn", "imraa_çhengey"}), getManual(args, {"noteyn_çhengaghyn", "noteyn_çhengey"}), frame)
local subRows = {}
if official then
local label = offCount > 1 and "[[Çhengey oikoil|Çhengaghyn oikoil]]" or "[[Çhengey oikoil]]"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. label .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. official .. '</td></tr>')
if regional then
local rLabel = regCount > 1 and "Çhengaghyn ardjynagh er enney" or "Çhengey ardjynagh er enney"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.4em; padding-right:0.4em;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. regional .. '</td></tr>')
end
elseif regional then
local rLabel = regCount > 1 and "Çhengaghyn ardjynagh er enney" or "Çhengey ardjynagh er enney"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. regional .. '</td></tr>')
end
if minority then
local mLabel = minCount > 1 and "[[Mynçhengey|Mynçhengaghyn]]" or "[[Mynçhengey]]"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. mLabel .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. minority .. '</td></tr>')
end
if other then
local oLabel = args["sorçh_çhengaghyn"] or (othCount > 1 and "Çhengaghyn" or "Çhengey")
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. oLabel .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. other .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
d6ipo2xzix426nxf7y5ahvdpo353yez
394566
394534
2026-10-16T17:34:14Z
MacTire02
219
-chaghteraghtyn
394566
Scribunto
text/plain
local p = {}
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function manxSort(a, b)
local function norm(text) return text:lower():gsub("çh", "ch") end
return norm(a) < norm(b)
end
-- Wraps a manual citation in <ref>...</ref>, unless already fully <ref>-tagged
-- (Scribunto pre-expands a literal <ref> into a strip marker; if stripping
-- those markers leaves nothing, it was already tag(s)).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Splices `insertion` (an efn footnote marker and/or wrapped <ref>) inside
-- the deepest trailing closing tag rather than after it, so it lands
-- inside the final <li> of an hlist (li is display:inline there) instead
-- of as a sibling of a block-level </ul>/</div> -- which would force it
-- onto its own new line. Peels every trailing closing tag off, splices
-- the insertion in at the real content, then restores the tags in order.
-- Plain text/a bare [[link]] with no trailing tags is just appended to.
local function appendInsideTrailingBlock(text, insertion)
if not insertion or insertion == "" then return text end
local trailingTags = {}
local rest = text
while true do
local tag = rest:match("(</%a[%w]*>)%s*$")
if not tag then break end
local tagStart = rest:find(tag .. "%s*$")
table.insert(trailingTags, 1, tag)
rest = rest:sub(1, tagStart - 1)
end
if #trailingTags == 0 then
return text .. insertion
end
return rest .. insertion .. table.concat(trailingTags)
end
local function getWikidataLanguageItems(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then
table.insert(items, { id = id, name = label })
end
end
end
if #items == 0 then return nil end
return items
end
local function itemsToRaw(items, excludeIds)
local names = {}
for _, item in ipairs(items) do
if not (excludeIds and excludeIds[item.id]) then
table.insert(names, item.name)
end
end
if #names == 0 then return nil end
return table.concat(names, ",")
end
-- "Çhengey oikoil erbee" ("[there is] no official language") is a
-- descriptive phrase, not an article title -- it must never be wikilinked
-- (and any stray brackets riding along with it, e.g. copy-pasted footnote
-- markers, must not nest inside an outer [[...]] pair either).
local NO_OFFICIAL_LANGUAGE = "Çhengey oikoil erbee"
local function buildLanguageValue(raw, ref, note, frame)
if not raw or mw.text.trim(raw):lower() == "none" then return nil, 0 end
-- Byte-prefix match (safe even with Ç's multi-byte UTF-8 encoding).
-- Whatever follows the phrase (often several {{cite ...}} calls typed
-- directly after it) is passed through completely unchanged.
if raw:sub(1, #NO_OFFICIAL_LANGUAGE) == NO_OFFICIAL_LANGUAGE then
local display = raw
if note and note ~= "" and frame then
display = display .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
display = display .. wrapReference(ref)
end
return display, 1
end
if raw:find("%[%[", 1, false) then
local display = raw
local insertion = ""
if note and note ~= "" and frame then
insertion = insertion .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
insertion = insertion .. wrapReference(ref)
end
display = appendInsideTrailingBlock(display, insertion)
local linkCount = 0
for _ in raw:gmatch("%[%[") do linkCount = linkCount + 1 end
return display, linkCount
end
-- Strip any ref out before splitting (a literal <ref> typed here rather
-- than via imraa_* can arrive as a strip marker).
local cleaned = raw:gsub("<ref[^>]*>.-</ref>", ""):gsub("<ref[^>]*/>", ""):gsub("\127UNIQ.-QINU\127", "")
local names = mw.text.split(cleaned, ",", true)
local filteredNames = {}
for _, part in ipairs(names) do
local trimmed = mw.text.trim(part)
if trimmed ~= "" then
table.insert(filteredNames, trimmed)
end
end
if #filteredNames == 0 then return nil, 0 end
table.sort(filteredNames, manxSort)
local parts = {}
for _, name in ipairs(filteredNames) do
if name == NO_OFFICIAL_LANGUAGE or name:find("[%[%]]") then
-- never self-link the sentinel phrase or a fragment with stray brackets
table.insert(parts, name)
else
table.insert(parts, '[[' .. name .. '|' .. name .. ']]')
end
end
local display = '<div class="hlist">' .. table.concat(parts, ' · ') .. '</div>'
local insertion = ""
if note and note ~= "" and frame then
insertion = insertion .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
insertion = insertion .. wrapReference(ref)
end
display = appendInsideTrailingBlock(display, insertion)
return display, #filteredNames
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local officialItems = nil
local officialRaw = getManual(args, {"çhengaghyn_oikoil", "çhengey_oikoil"})
if not officialRaw then
officialItems = getWikidataLanguageItems("P37")
officialRaw = itemsToRaw(officialItems)
end
local regionalRaw = getManual(args, {"çhengaghyn_ardjynagh", "çhengey_ardjynagh"})
local minorityRaw = getManual(args, {"mynçhengaghyn", "mynçhengey"})
local otherRaw = getManual(args, {"çhengaghyn", "çhengey"})
local official, offCount = buildLanguageValue(officialRaw, getManual(args, {"imraa_çhengaghyn_oikoil", "imraa_çhengey_oikoil"}), getManual(args, {"noteyn_çhengaghyn_oikoil", "noteyn_çhengey_oikoil"}), frame)
local regional, regCount = buildLanguageValue(regionalRaw, getManual(args, {"imraa_çhengaghyn_ardjynagh", "imraa_çhengey_ardjynagh"}), getManual(args, {"noteyn_çhengaghyn_ardjynagh", "noteyn_çhengey_ardjynagh"}), frame)
local minority, minCount = buildLanguageValue(minorityRaw, getManual(args, {"imraa_mynçhengaghyn", "imraa_mynçhengey"}), getManual(args, {"noteyn_mynçhengaghyn", "noteyn_mynçhengey"}), frame)
local other, othCount = buildLanguageValue(otherRaw, getManual(args, {"imraa_çhengaghyn", "imraa_çhengey"}), getManual(args, {"noteyn_çhengaghyn", "noteyn_çhengey"}), frame)
local subRows = {}
if official then
local label = offCount > 1 and "[[Çhengey oikoil|Çhengaghyn oikoil]]" or "[[Çhengey oikoil]]"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. label .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. official .. '</td></tr>')
if regional then
local rLabel = regCount > 1 and "Çhengaghyn ardjynagh er enney" or "Çhengey ardjynagh er enney"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.4em; padding-right:0.4em;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. regional .. '</td></tr>')
end
elseif regional then
local rLabel = regCount > 1 and "Çhengaghyn ardjynagh er enney" or "Çhengey ardjynagh er enney"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. regional .. '</td></tr>')
end
if minority then
local mLabel = minCount > 1 and "[[Mynçhengey|Mynçhengaghyn]]" or "[[Mynçhengey]]"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. mLabel .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. minority .. '</td></tr>')
end
if other then
local oLabel = args["sorçh_çhengaghyn"] or (othCount > 1 and "Çhengaghyn" or "Çhengey")
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. oLabel .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. other .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
tcpla5xafq83jswmhk8bgxgz18icqkt
394574
394566
2026-10-16T17:44:20Z
MacTire02
219
++
394574
Scribunto
text/plain
local p = {}
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function manxSort(a, b)
local function norm(text) return text:lower():gsub("çh", "ch") end
return norm(a) < norm(b)
end
-- Wraps a manual citation in <ref>...</ref>, unless already fully <ref>-tagged
-- (Scribunto pre-expands a literal <ref> into a strip marker; if stripping
-- those markers leaves nothing, it was already tag(s)).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Splices `insertion` (an efn footnote marker and/or wrapped <ref>) inside
-- the deepest trailing closing tag rather than after it, so it lands
-- inside the final <li> of an hlist (li is display:inline there) instead
-- of as a sibling of a block-level </ul>/</div> -- which would force it
-- onto its own new line. Peels every trailing closing tag off, splices
-- the insertion in at the real content, then restores the tags in order.
-- Plain text/a bare [[link]] with no trailing tags is just appended to.
local function appendInsideTrailingBlock(text, insertion)
if not insertion or insertion == "" then return text end
local trailingTags = {}
local rest = text
while true do
local tag = rest:match("(</%a[%w]*>)%s*$")
if not tag then break end
local tagStart = rest:find(tag .. "%s*$")
table.insert(trailingTags, 1, tag)
rest = rest:sub(1, tagStart - 1)
end
if #trailingTags == 0 then
return text .. insertion
end
return rest .. insertion .. table.concat(trailingTags)
end
local function getWikidataLanguageItems(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then
table.insert(items, { id = id, name = label })
end
end
end
if #items == 0 then return nil end
return items
end
local function itemsToRaw(items, excludeIds)
local names = {}
for _, item in ipairs(items) do
if not (excludeIds and excludeIds[item.id]) then
table.insert(names, item.name)
end
end
if #names == 0 then return nil end
return table.concat(names, ",")
end
-- "Çhengey oikoil erbee" ("[there is] no official language") is a
-- descriptive phrase, not an article title -- it must never be wikilinked
-- (and any stray brackets riding along with it, e.g. copy-pasted footnote
-- markers, must not nest inside an outer [[...]] pair either).
local NO_OFFICIAL_LANGUAGE = "Çhengey oikoil erbee"
local function buildLanguageValue(raw, ref, note, frame)
if not raw or mw.text.trim(raw):lower() == "none" then return nil, 0 end
-- Byte-prefix match (safe even with Ç's multi-byte UTF-8 encoding).
-- Whatever follows the phrase (often several {{cite ...}} calls typed
-- directly after it) is passed through completely unchanged.
if raw:sub(1, #NO_OFFICIAL_LANGUAGE) == NO_OFFICIAL_LANGUAGE then
local display = raw
if note and note ~= "" and frame then
display = display .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
display = display .. wrapReference(ref)
end
return display, 1
end
if raw:find("%[%[", 1, false) then
local display = raw
local insertion = ""
if note and note ~= "" and frame then
insertion = insertion .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
insertion = insertion .. wrapReference(ref)
end
display = appendInsideTrailingBlock(display, insertion)
local linkCount = 0
for _ in raw:gmatch("%[%[") do linkCount = linkCount + 1 end
return display, linkCount
end
-- Strip any ref out before splitting (a literal <ref> typed here rather
-- than via imraa_* can arrive as a strip marker).
local cleaned = raw:gsub("<ref[^>]*>.-</ref>", ""):gsub("<ref[^>]*/>", ""):gsub("\127UNIQ.-QINU\127", "")
local names = mw.text.split(cleaned, ",", true)
local filteredNames = {}
for _, part in ipairs(names) do
local trimmed = mw.text.trim(part)
if trimmed ~= "" then
table.insert(filteredNames, trimmed)
end
end
if #filteredNames == 0 then return nil, 0 end
table.sort(filteredNames, manxSort)
local parts = {}
for _, name in ipairs(filteredNames) do
if name == NO_OFFICIAL_LANGUAGE or name:find("[%[%]]") then
-- never self-link the sentinel phrase or a fragment with stray brackets
table.insert(parts, name)
else
table.insert(parts, '[[' .. name .. '|' .. name .. ']]')
end
end
local display = '<div class="hlist">' .. table.concat(parts, ' · ') .. '</div>'
local insertion = ""
if note and note ~= "" and frame then
insertion = insertion .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
insertion = insertion .. wrapReference(ref)
end
display = appendInsideTrailingBlock(display, insertion)
return display, #filteredNames
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local officialItems = nil
local officialRaw = getManual(args, {"çhengaghyn_oikoil", "çhengey_oikoil"})
if not officialRaw then
officialItems = getWikidataLanguageItems("P37")
officialRaw = itemsToRaw(officialItems)
end
local regionalRaw = getManual(args, {"çhengaghyn_ardjynagh", "çhengey_ardjynagh"})
local minorityRaw = getManual(args, {"mynçhengaghyn", "mynçhengey"})
local otherRaw = getManual(args, {"çhengaghyn", "çhengey"})
local official, offCount = buildLanguageValue(officialRaw, getManual(args, {"imraa_çhengaghyn_oikoil", "imraa_çhengey_oikoil"}), getManual(args, {"noteyn_çhengaghyn_oikoil", "noteyn_çhengey_oikoil"}), frame)
local regional, regCount = buildLanguageValue(regionalRaw, getManual(args, {"imraa_çhengaghyn_ardjynagh", "imraa_çhengey_ardjynagh"}), getManual(args, {"noteyn_çhengaghyn_ardjynagh", "noteyn_çhengey_ardjynagh"}), frame)
local minority, minCount = buildLanguageValue(minorityRaw, getManual(args, {"imraa_mynçhengaghyn", "imraa_mynçhengey"}), getManual(args, {"noteyn_mynçhengaghyn", "noteyn_mynçhengey"}), frame)
local other, othCount = buildLanguageValue(otherRaw, getManual(args, {"imraa_çhengaghyn", "imraa_çhengey"}), getManual(args, {"noteyn_çhengaghyn", "noteyn_çhengey"}), frame)
local subRows = {}
if official then
local label = offCount > 1 and "[[Çhengey oikoil|Çhengaghyn oikoil]]" or "[[Çhengey oikoil]]"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. label .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. official .. '</td></tr>')
if regional then
-- No white-space:nowrap here, unlike every other <th> in this
-- file: "Çhengaghyn ardjynagh er enney" is long enough to widen
-- the whole infobox if forced onto one line. The pairs
-- keep "Çhengaghyn ardjynagh"/"Çhengey ardjynagh" and "er enney"
-- each glued together, so the only place it can ever wrap is the
-- plain space between them -- a clean two-line break, not an
-- arbitrary one.
local rLabel = regCount > 1 and "Çhengaghyn ardjynagh er enney" or "Çhengey ardjynagh er enney"
table.insert(subRows, '<tr><th style="vertical-align:top; text-align:left; font-weight:normal; padding-left:0.4em; padding-right:0.4em;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. regional .. '</td></tr>')
end
elseif regional then
-- Same wrap handling as the nested case above -- no nowrap,
-- pairs forcing the break to fall only between "ardjynagh" and "er".
local rLabel = regCount > 1 and "Çhengaghyn ardjynagh er enney" or "Çhengey ardjynagh er enney"
table.insert(subRows, '<tr><th style="vertical-align:top; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. regional .. '</td></tr>')
end
if minority then
local mLabel = minCount > 1 and "[[Mynçhengey|Mynçhengaghyn]]" or "[[Mynçhengey]]"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. mLabel .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. minority .. '</td></tr>')
end
if other then
local oLabel = args["sorçh_çhengaghyn"] or (othCount > 1 and "Çhengaghyn" or "Çhengey")
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. oLabel .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. other .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
02ehxl4ijk05rezkdncuu9zbci381r5
394606
394574
2026-10-17T03:02:56Z
MacTire02
219
++
394606
Scribunto
text/plain
local p = {}
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function manxSort(a, b)
local function norm(text) return text:lower():gsub("çh", "ch") end
return norm(a) < norm(b)
end
-- Wraps a manual citation in <ref>...</ref>, unless already fully <ref>-tagged
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Splices `insertion` (an efn footnote marker and/or wrapped <ref>) inside the deepest trailing
local function appendInsideTrailingBlock(text, insertion)
if not insertion or insertion == "" then return text end
local trailingTags = {}
local rest = text
while true do
local tag = rest:match("(</%a[%w]*>)%s*$")
if not tag then break end
local tagStart = rest:find(tag .. "%s*$")
table.insert(trailingTags, 1, tag)
rest = rest:sub(1, tagStart - 1)
end
if #trailingTags == 0 then
return text .. insertion
end
return rest .. insertion .. table.concat(trailingTags)
end
local function getWikidataLanguageItems(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then
table.insert(items, { id = id, name = label })
end
end
end
if #items == 0 then return nil end
return items
end
local function itemsToRaw(items, excludeIds)
local names = {}
for _, item in ipairs(items) do
if not (excludeIds and excludeIds[item.id]) then
table.insert(names, item.name)
end
end
if #names == 0 then return nil end
return table.concat(names, ",")
end
-- "Çhengey oikoil erbee" ("[there is] no official language") is a descriptive phrase, not an article
local NO_OFFICIAL_LANGUAGE = "Çhengey oikoil erbee"
local function buildLanguageValue(raw, ref, note, frame)
if not raw or mw.text.trim(raw):lower() == "none" then return nil, 0 end
-- Byte-prefix match (safe even with Ç's multi-byte UTF-8 encoding)
if raw:sub(1, #NO_OFFICIAL_LANGUAGE) == NO_OFFICIAL_LANGUAGE then
local display = raw
if note and note ~= "" and frame then
display = display .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
display = display .. wrapReference(ref)
end
return display, 1
end
if raw:find("%[%[", 1, false) then
local display = raw
local insertion = ""
if note and note ~= "" and frame then
insertion = insertion .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
insertion = insertion .. wrapReference(ref)
end
display = appendInsideTrailingBlock(display, insertion)
local linkCount = 0
for _ in raw:gmatch("%[%[") do linkCount = linkCount + 1 end
return display, linkCount
end
-- Strip any ref out before splitting (a literal <ref> typed here rather
-- than via imraa_* can arrive as a strip marker).
local cleaned = raw:gsub("<ref[^>]*>.-</ref>", ""):gsub("<ref[^>]*/>", ""):gsub("\127UNIQ.-QINU\127", "")
local names = mw.text.split(cleaned, ",", true)
local filteredNames = {}
for _, part in ipairs(names) do
local trimmed = mw.text.trim(part)
if trimmed ~= "" then
table.insert(filteredNames, trimmed)
end
end
if #filteredNames == 0 then return nil, 0 end
table.sort(filteredNames, manxSort)
local parts = {}
for _, name in ipairs(filteredNames) do
if name == NO_OFFICIAL_LANGUAGE or name:find("[%[%]]") then
-- never self-link the sentinel phrase or a fragment with stray brackets
table.insert(parts, name)
else
table.insert(parts, '[[' .. name .. '|' .. name .. ']]')
end
end
local display = '<div class="hlist">' .. table.concat(parts, ' · ') .. '</div>'
local insertion = ""
if note and note ~= "" and frame then
insertion = insertion .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
insertion = insertion .. wrapReference(ref)
end
display = appendInsideTrailingBlock(display, insertion)
return display, #filteredNames
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local officialItems = nil
local officialRaw = getManual(args, {"çhengaghyn_oikoil", "çhengey_oikoil"})
if not officialRaw then
officialItems = getWikidataLanguageItems("P37")
officialRaw = itemsToRaw(officialItems)
end
local regionalRaw = getManual(args, {"çhengaghyn_ardjynagh", "çhengey_ardjynagh"})
local minorityRaw = getManual(args, {"mynçhengaghyn", "mynçhengey"})
local otherRaw = getManual(args, {"çhengaghyn", "çhengey"})
local official, offCount = buildLanguageValue(officialRaw, getManual(args, {"imraa_çhengaghyn_oikoil", "imraa_çhengey_oikoil"}), getManual(args, {"noteyn_çhengaghyn_oikoil", "noteyn_çhengey_oikoil"}), frame)
local regional, regCount = buildLanguageValue(regionalRaw, getManual(args, {"imraa_çhengaghyn_ardjynagh", "imraa_çhengey_ardjynagh"}), getManual(args, {"noteyn_çhengaghyn_ardjynagh", "noteyn_çhengey_ardjynagh"}), frame)
local minority, minCount = buildLanguageValue(minorityRaw, getManual(args, {"imraa_mynçhengaghyn", "imraa_mynçhengey"}), getManual(args, {"noteyn_mynçhengaghyn", "noteyn_mynçhengey"}), frame)
local other, othCount = buildLanguageValue(otherRaw, getManual(args, {"imraa_çhengaghyn", "imraa_çhengey"}), getManual(args, {"noteyn_çhengaghyn", "noteyn_çhengey"}), frame)
local subRows = {}
if official then
local label = offCount > 1 and "[[Çhengey oikoil|Çhengaghyn oikoil]]" or "[[Çhengey oikoil]]"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. label .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. official .. '</td></tr>')
if regional then
-- No white-space:nowrap here, unlike every other <th> in this file
local rLabel = regCount > 1 and "Çhengaghyn ardjynagh er enney" or "Çhengey ardjynagh er enney"
table.insert(subRows, '<tr><th style="vertical-align:top; text-align:left; font-weight:normal; padding-left:0.4em; padding-right:0.4em;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. regional .. '</td></tr>')
end
elseif regional then
-- Same wrap handling as the nested case above -- no nowrap,
-- pairs forcing the break to fall only between "ardjynagh" and "er".
local rLabel = regCount > 1 and "Çhengaghyn ardjynagh er enney" or "Çhengey ardjynagh er enney"
table.insert(subRows, '<tr><th style="vertical-align:top; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. regional .. '</td></tr>')
end
if minority then
local mLabel = minCount > 1 and "[[Mynçhengey|Mynçhengaghyn]]" or "[[Mynçhengey]]"
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. mLabel .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. minority .. '</td></tr>')
end
if other then
local oLabel = args["sorçh_çhengaghyn"] or (othCount > 1 and "Çhengaghyn" or "Çhengey")
table.insert(subRows, '<tr><th style="vertical-align:top; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">' .. oLabel .. '</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">' .. other .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
s4j6vldkcifiuqr32pt70wh5sbffddr
Module:Kishtey fys çheer/caslyssyn-çheerey
828
55834
394565
393993
2026-10-16T17:33:46Z
MacTire02
219
-chaghteraghtyn
394565
Scribunto
text/plain
local p = {}
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then return mw.text.trim(value) end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Only map 1 has a Wikidata fallback; maps 2/3 are manual-only.
local function getWikidataLocatorMap()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P242")
if not statements or #statements == 0 then return nil end
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue and mainsnak.datavalue.type == "string" then
local file = mainsnak.datavalue.value
if file and file ~= "" then return file end
end
end
return nil
end
-- Builds one map <tr>, or nil if this slot has no image. `topClass` is
-- applied unconditionally (matching the old template), not just when an
-- earlier map slot is actually present.
local function buildMapRow(map, width, caption, topClass)
if not map then return nil end
local mapHtml = '[[Coadan:' .. map .. '|' .. width .. '|center]]'
if caption then
mapHtml = mapHtml .. '<div style="position:relative; top:0.3em;"><small>' .. caption .. '</small></div>'
end
local classAttr = topClass and (' class="' .. topClass .. '"') or ""
return '<tr' .. classAttr .. '><td colspan="2" style="text-align:center; padding:0.2em 0.4em;">' .. mapHtml .. '</td></tr>'
end
function p.main(frame, args)
local rows = {}
-- Map 1: manual, else Wikidata P242.
local map1 = getManual(args, {"caslys-çheerey1", "jalloo_caslys-çheerey", "jalloo_caslys"})
if not isNone(map1) then
if not map1 then map1 = getWikidataLocatorMap() end
if map1 then
local width1 = getManual(args, {"lheead-çheerey1", "lheead_caslys-çheerey", "lheead_caslys"}) or "250px"
local caption1 = getManual(args, {"fo-heidyl-çheerey1", "fo-heidyl_caslys-çheerey", "fo-heidyl_caslys"})
table.insert(rows, buildMapRow(map1, width1, caption1, nil))
end
end
-- Map 2: manual-only; old default width was 280px, kept as-is.
local map2 = getManual(args, {"caslys-çheerey2", "jalloo_caslys2"})
if map2 and not isNone(map2) then
local width2 = getManual(args, {"lheead-çheerey2", "lheead_caslys2"}) or "280px"
local caption2 = getManual(args, {"fo-heidyl-çheerey2", "fo-heidyl_caslys2"})
table.insert(rows, buildMapRow(map2, width2, caption2, "mergedtoprow"))
end
-- Map 3: manual-only, folded in from the old template's "Caslys heese"
-- section. `caslys_fo-heidyl3` (word order swapped vs. maps 1/2) is the
-- old template's own naming, kept verbatim.
local map3 = getManual(args, {"caslys-çheerey3", "jalloo_caslys3"})
if map3 and not isNone(map3) then
local width3 = getManual(args, {"lheead-çheerey3", "lheead_caslys3"}) or "250px"
local caption3 = getManual(args, {"fo-heidyl-çheerey3", "caslys_fo-heidyl3"})
table.insert(rows, buildMapRow(map3, width3, caption3, "mergedtoprow"))
end
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
63lnca1h9hsacd4d9n3wlm8y3xxrx1t
Module:Kishtey fys çheer/reiltys
828
55837
394541
394348
2026-10-16T12:04:09Z
MacTire02
219
imraaghyn
394541
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module (replaces Module:WikidataIB).
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated forms, e.g. Mannin -> Vannin.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Manx-label-or-linked-Wikidata-fallback helper; last rung of getWdItemManxLink.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local aarheynnOK, Aarheynn = pcall(require, "Module:Kishtey fys çheer/aarheynn")
-- Returns the first non-empty manual parameter from a list of names.
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Shared innards of getWdProperty/getWdPropertyWithCitation.
local function getWdPropertyRaw(property, flags, includeReference)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(flags or {}) do table.insert(callArgs, f) end
if includeReference then table.insert(callArgs, "reference") end
table.insert(callArgs, "best") -- single best-ranked value
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
local function getWdPropertyWithCitation(property, flags)
local base = getWdPropertyRaw(property, flags, false)
if not base then return nil, nil end
local withRef = getWdPropertyRaw(property, flags, true)
if not withRef or withRef == base then return base, nil end
if withRef:sub(1, #base) == base then
local citation = withRef:sub(#base + 1)
if citation ~= "" then return base, citation end
return base, nil
end
return withRef, nil
end
local function ensureLinked(value)
if not value or value == "" then return value end
local label, refSuffix = value:match("^(.-)(<ref.*)$")
if not label then
label = value
refSuffix = ""
end
if label:find("%[%[") or label:match("^%[https?://") then
return value
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY (e.g. P35 -> "head of state"), title
-- fallback. getLabelByLang avoids leaking an English fallback.
local function getWikidataPropertyLabel(property)
local ok, label = pcall(mw.wikibase.getLabelByLang, property, "gv")
if ok and label and label ~= "" then return label end
return nil
end
-- Raw QID of an entity-valued property on the current page's own item.
local function getWdRawPropertyId(property, extraFlags)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, "best")
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawPropertyIds(property, extraFlags)
if not wdOK or not Wd or not Wd._properties then return {} end
local callArgs = {"raw"}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, property)
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
local function getWdQualifierRawId(property, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdQualifierRawIdForValue(property, valueQid, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier or not valueQid then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, valueQid, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawForeignPropertyIds(eid, property, extraFlags, qualifiers)
if not wdOK or not Wd or not Wd._properties or not eid then return {} end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, property)
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
for qid, value in pairs(qualifiers or {}) do
callArgs[qid] = value
end
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- QID of the Wikidata item connected to the current page.
local function getCurrentCountryQid()
local ok, id = pcall(mw.wikibase.getEntityIdForCurrentPage)
if ok and id and id ~= "" then return id end
return nil
end
local function getCurrentCountryGenitive()
if not enmynOK or not EnmynCheerey or not EnmynCheerey.genitive then return nil end
local okTitle, title = pcall(function() return mw.title.getCurrentTitle().text end)
if not okTitle or not title or title == "" then return nil end
local okGen, genitive = pcall(EnmynCheerey.genitive, title)
if okGen and genitive and genitive ~= "" then return genitive end
return nil
end
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
["Ree ny Belgee"] = true,
["Benrein ny Belgee"] = true,
}
local function stripCountryGenitiveSuffix(text, countryGenitive)
if not text or not countryGenitive then return nil end
local suffix = " " .. countryGenitive
if #text > #suffix and text:sub(-#suffix) == suffix then
return text:sub(1, #text - #suffix)
end
local bareNoun = countryGenitive:match("^yn%s+(.+)$") or countryGenitive:match("^y%s+(.+)$")
if bareNoun and bareNoun ~= "" then
local suffix2 = " " .. bareNoun
if #text > #suffix2 and text:sub(-#suffix2) == suffix2 then
local remainder = text:sub(1, #text - #suffix2)
if remainder:sub(-3) == " yn" then
return remainder:sub(1, #remainder - 3)
elseif remainder:sub(-2) == " y" then
return remainder:sub(1, #remainder - 2)
end
return remainder
end
end
return nil
end
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(title, countryGenitive)
if stripped then return stripped end
local short = title:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = title:match("^(.-)%syn%s")
if short and short ~= "" then return short end
-- "ny" is the plural/genitive connector (e.g. "Steatyn Unnaneysit" ->
-- "ny Steatyn Unnaneysit", "of the United States") -- confirmed live:
-- "Eaghtyrane ny Steatyn Unnaneysit" was falling through to the blind
-- last-word rung below, which only strips "Unnaneysit", leaving a
-- dangling "Eaghtyrane ny Steatyn" instead of "Eaghtyrane". "%sy%s"/
-- "%syn%s" can never match "ny" (the character before "y" there is
-- "n", not whitespace), so this rung is purely additive.
short = title:match("^(.-)%sny%s")
if short and short ~= "" then return short end
short = title:match("^(.+)%s%S+$")
if short and short ~= "" then return short end
return title
end
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(name, countryGenitive)
if stripped then return stripped end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%syn%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%sny%s")
if short and short ~= "" then return short end
return name
end
local function shortenLinkedCountryName(value)
if not value or value == "" then return value end
local main, refSuffix = value:match("^(.-)(<ref.*)$")
if not main then
main = value
refSuffix = ""
end
local target, display = main:match("^%[%[([^%[%]|]+)|([^%[%]|]+)%]%]$")
if not target then
target = main:match("^%[%[([^%[%]|]+)%]%]$")
display = target
end
if not target then return value end
local short = shortenCountrySuffixedName(display)
if short ~= display then
return "[[" .. target .. "|" .. short .. "]]" .. refSuffix
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("%]%]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
local function getWdItemManxLink(qid, shorten, capitalize, forceRedlink)
if not qid then return nil end
if capitalize == nil then capitalize = true end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if okLabel and gvLabel and gvLabel ~= "" then
if capitalize then
gvLabel = wikiUcfirst(gvLabel)
end
else
gvLabel = nil
end
if not sitelinkTitle and not gvLabel then
if forceRedlink then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, _, _, rawLabel = pcall(EnnymWd.labelWithFallback, qid)
if ok and rawLabel and rawLabel ~= "" then
return "[[" .. wikiUcfirst(mw.text.nowiki(rawLabel)) .. "]]"
end
end
return nil
end
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
local target = sitelinkTitle or gvLabel
local displayBase = gvLabel or sitelinkTitle
if shorten == false then
if target == displayBase then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. displayBase .. "]]"
end
local short = shortManxForm(displayBase)
if short ~= target then
return "[[" .. target .. "|" .. short .. "]]"
end
return "[[" .. target .. "]]"
end
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdOfficeItemTitle, but the office property is read off a
-- FOREIGN entity (eid) rather than the current page's own item -- needed
-- for US territories, whose own Wikidata item never carries a P1906/P35
-- of its own; the office has to be resolved off the United States' item
-- (Q30) instead.
local function getWdForeignOfficeItemTitle(eid, officeProperty)
local officeQid = getWdRawForeignPropertyIds(eid, officeProperty, {"best"})[1]
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
local function getWdPositionTitleForPerson(personQid)
if not personQid then return nil end
local countryQid = getCurrentCountryQid()
local candidates = {}
if countryQid then
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"}, {["P1001"] = countryQid})) do
table.insert(candidates, id)
end
end
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"})) do
table.insert(candidates, id)
end
local tried = {}
for _, qid in ipairs(candidates) do
if not tried[qid] then
tried[qid] = true
local link = getWdItemManxLink(qid)
if link then return link end
end
end
return nil
end
local function getWdPositionTitle(headProperty)
return getWdPositionTitleForPerson(getWdRawPropertyId(headProperty))
end
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
local CLASS_WALK_DEPTH = 3
local function classReaches(classQid, targetQid, depth, seen)
if classQid == targetQid then return true end
if depth <= 0 then return false end
seen = seen or {}
if seen[classQid] then return false end
seen[classQid] = true
for _, superQid in ipairs(getWdRawForeignPropertyIds(classQid, "P279")) do
if classReaches(superQid, targetQid, depth - 1, seen) then return true end
end
return false
end
local function getWdChambers(legislatureQid)
if not legislatureQid then return nil, nil end
local partQids = getWdRawForeignPropertyIds(legislatureQid, "P527")
local upperQid, lowerQid = nil, nil
local upperAmbiguous, lowerAmbiguous = false, false
for _, partQid in ipairs(partQids) do
local isUpper, isLower = false, false
for _, classQid in ipairs(getWdRawForeignPropertyIds(partQid, "P31")) do
if classQid == UPPER_HOUSE_QID or classReaches(classQid, UPPER_HOUSE_QID, CLASS_WALK_DEPTH) then
isUpper = true
elseif classQid == LOWER_HOUSE_QID or classReaches(classQid, LOWER_HOUSE_QID, CLASS_WALK_DEPTH) then
isLower = true
end
end
if isUpper then
if upperQid and upperQid ~= partQid then upperAmbiguous = true end
upperQid = partQid
end
if isLower then
if lowerQid and lowerQid ~= partQid then lowerAmbiguous = true end
lowerQid = partQid
end
end
local upperLink = (upperQid and not upperAmbiguous) and getWdItemManxLink(upperQid, false) or nil
local lowerLink = (lowerQid and not lowerAmbiguous) and getWdItemManxLink(lowerQid, false) or nil
return upperLink, lowerLink
end
local JULIAN_CALENDAR_QID = "Q1985786"
local function getJulianCalendarSuffixLink()
local link = getWdItemManxLink(JULIAN_CALENDAR_QID, false)
if link then
local target = link:match("^%[%[([^%[%]|]+)") or link:match("^%[%[([^%[%]|]+)%]%]$")
if target then
return "[[" .. target .. "|Joolagh]]"
end
return link
end
return "Joolagh"
end
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW_WRAP = '<tr%s><th style="vertical-align:top; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
-- Builds a class="..." attribute, or an empty string.
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
local function appendIndentRun(rows, items, wrap)
local template = wrap and SUBROW_WRAP or SUBROW
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(template, trClass(class), item[1], item[2]))
end
end
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
function p.main(frame, args)
-- Allow being called as p.main(args) with no frame (used by tests).
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
local govRows = {}
local quaiylRows = {}
local foundingRows = {}
local govTypeRaw = getManual(args, {"sorçh_reiltys", "government_type"})
local govRef = getManual(args, {"imraa_reiltys"})
local govNote = getManual(args, {"noteyn_reiltys"})
if not govTypeRaw then
local govTypeQids = getWdRawPropertyIds("P122")
local govTypeParts = {}
for _, qid in ipairs(govTypeQids) do
local link = getWdItemManxLink(qid, false, false)
if link then table.insert(govTypeParts, link) end
end
if #govTypeParts > 0 then
govTypeRaw = capitalizeFirstLetter(table.concat(govTypeParts, ", "))
end
end
local govShown = govTypeRaw and not isNone(govTypeRaw)
local leaderPairs = {}
local manualLeaderGiven = false
for i = 1, 5 do
local title = getManual(args, {"enmys_toshiagh" .. i, "enmys" .. i .. "_fer-toshee"})
local name = getManual(args, {"ennym_toshiagh" .. i, "ennym" .. i .. "_fer-toshee"})
if title or name then
manualLeaderGiven = true
if not isNone(name) then
table.insert(leaderPairs, {title = title or "", name = name or ""})
end
end
end
local leaderRef = getManual(args, {"imraa_toshiagh", "imraa_fer-toshee"})
local leaderNote = getManual(args, {"noteyn_toshiagh", "noteyn_fer-toshee"})
local leadersSuppressed = isNone(getManual(args, {"fir_hoshee", "toshiaghyn"}))
local function resolvePersonName(qid)
if not qid then return nil end
return shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
end
local councillors = {}
for i = 1, 7 do
local name = getManual(args, {"ennym_coonseilagh" .. i})
if name and not isNone(name) then
table.insert(councillors, {slot = i, name = name})
end
end
local manualCouncillorsGiven = #councillors > 0
local swissBodyQid = getWdRawPropertyId("P35") or getWdRawPropertyId("P6")
local isSwissFederalCouncil = swissBodyQid == "Q30917"
if (manualCouncillorsGiven or isSwissFederalCouncil) and not leadersSuppressed then
manualLeaderGiven = true
local presidentAnnotation = ' ([[Eaghtyrane Chochiangle yn Elveeish|Eaghtyrane]])'
local vpAnnotation = ' ([[Lhiass-eaghtyrane yn Elveeish|Lhiass-eaghtyrane]])'
local nameLines = {}
local chancellor = nil
if manualCouncillorsGiven then
local presidentSlot = tonumber(getManual(args, {"eaghtyrane_coonseilagh"}))
local vicePresidentSlot = tonumber(getManual(args, {"lhiass-eaghtyrane_coonseilagh"}))
for _, entry in ipairs(councillors) do
local line = entry.name
if presidentSlot and entry.slot == presidentSlot then
line = line .. presidentAnnotation
elseif vicePresidentSlot and entry.slot == vicePresidentSlot then
line = line .. vpAnnotation
end
table.insert(nameLines, line)
end
chancellor = getManual(args, {"shansyleyr_conastagh"})
else
local presidentOverride = getManual(args, {"eaghtyrane_coonseilagh"})
local vpOverride = getManual(args, {"lhiass-eaghtyrane_coonseilagh"})
local chancellorOverride = getManual(args, {"shansyleyr_conastagh"})
local councillorQids = getWdRawForeignPropertyIds("Q30917", "P3320", {"best", "current"})
local presidentQid = not isNone(presidentOverride) and getWdRawForeignPropertyIds("Q688230", "P1308", {"best"})[1] or nil
local vpQid = not isNone(vpOverride) and getWdRawForeignPropertyIds("Q25550811", "P1308", {"best"})[1] or nil
for _, qid in ipairs(councillorQids) do
local name = resolvePersonName(qid)
if name then
if qid == presidentQid then
name = name .. presidentAnnotation
elseif qid == vpQid then
name = name .. vpAnnotation
end
table.insert(nameLines, name)
end
end
if chancellorOverride and not isNone(chancellorOverride) then
chancellor = chancellorOverride
elseif not isNone(chancellorOverride) then
local chancellorQid = getWdRawForeignPropertyIds("Q687810", "P1308", {"best"})[1]
chancellor = resolvePersonName(chancellorQid)
end
end
if #nameLines > 0 then
table.insert(leaderPairs, {
title = '[[Coonseil Chonastagh yn Elveeish|Coonseilee Chonastagh]]',
name = table.concat(nameLines, '<br/>'),
})
end
if chancellor and chancellor ~= "" then
table.insert(leaderPairs, {
title = '[[Shansyleyr yn Elveeish|Shansyleyr Conastagh]]',
name = chancellor,
})
end
end
local function isSanMarinoPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "San Marino"
end
local function isNorthernIrelandPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nerin Hwoaie"
end
local function isNicaraguaPage()
if getCurrentCountryQid() == "Q811" then return true end
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nickeraag"
end
-- US unincorporated territories: the President of the United States is
-- each territory's head of state, but this is never recorded on the
-- territory's own Wikidata item -- confirmed directly against Puerto
-- Rico's own item, which carries only "instance of" classification
-- statements (e.g. "unincorporated territory of the United States",
-- "insular area of the United States"), no P35 at all. The President
-- has to be fetched off the United States' own item (Q30) instead --
-- same foreign-entity pattern as Nicaragua's co-presidents and
-- Northern Ireland's Deputy First Minister above. Detected by an
-- explicit page-title list (matching the San Marino/Northern Ireland
-- convention), confirmed directly rather than guessed, since a
-- territory's own P17 isn't something this module can reliably key
-- automatic detection off.
local US_QID = "Q30"
local usTerritoryTitles = {
["Yn Phurt Verçhagh"] = true, -- Puerto Rico
["Guam"] = true, -- Guam
["Ellanyn Americaanagh y Voidyn"] = true, -- US Virgin Islands
["Samoa Americaanagh"] = true, -- American Samoa
}
local function isUSTerritoryPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title ~= nil and usTerritoryTitles[title] == true
end
local sanMarinoCaptains = {}
for i = 1, 2 do
local name = getManual(args, {"ennym_captan_reiree" .. i})
if name and not isNone(name) then
table.insert(sanMarinoCaptains, name)
end
end
local manualSanMarinoGiven = #sanMarinoCaptains > 0
if (manualSanMarinoGiven or isSanMarinoPage()) and not leadersSuppressed and not manualLeaderGiven then
manualLeaderGiven = true
local nameLines = {}
if manualSanMarinoGiven then
nameLines = sanMarinoCaptains
else
local captainQids = getWdRawPropertyIds("P35", {"best", "current"})
for _, qid in ipairs(captainQids) do
local name = resolvePersonName(qid)
if name then table.insert(nameLines, name) end
end
end
if #nameLines > 0 then
local title = getManual(args, {"sorçh_kione_steat"}) or '[[Captanyn Reiree]]'
table.insert(leaderPairs, {
title = title,
name = table.concat(nameLines, '<br/>'),
})
end
end
if not manualLeaderGiven and not leadersSuppressed then
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
-- "current" matters here, not just "best": confirmed live on Benin,
-- whose P6 (head of government) statements have no preferred rank
-- at all (three past/present holders all tied at normal rank) --
-- Module:Wd's singular _property command has no way to break that
-- tie chronologically, so without "current" filtering out the
-- already-ended ones it can return an arbitrary past holder.
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked", "current"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6", {"current"})
if isNicaraguaPage() then
-- Nicaragua is a diarchy: two co-presidents, listed on Wikidata not
-- as the country's own P35/P6 statements but as P1308 ("position
-- holder") values on the "President of Nicaragua" OFFICE item
-- itself (Q852448) -- same foreign-entity pattern as Northern
-- Ireland's Deputy First Minister and Switzerland's councillors
-- above. "best" (rank) and "current" (time period) are
-- independent Wd flags, not alternatives -- both are needed
-- together to get exactly the presently-serving, non-deprecated
-- co-presidents, matching this file's existing convention
-- (San Marino's Captains Regent, the Swiss Federal Council).
local presidentQids = getWdRawForeignPropertyIds("Q852448", "P1308", {"best", "current"})
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local sameHeadOfStateAndGovernment = false
local presidentNames = {}
for _, qid in ipairs(presidentQids) do
local name = ensureLinked(getWdItemManxLink(qid, false, nil, true))
if name then
table.insert(leaderPairs, {title = presidentTitle, name = name})
end
if name then table.insert(presidentNames, name) end
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
if #presidentNames > 0 then
table.insert(leaderPairs, {
title = presidentTitle,
name = table.concat(presidentNames, '<br/>'),
})
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or getWdOfficeItemTitle("P1313")
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
elseif #hosQids > 1 then
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
local officeQids = getWdRawPropertyIds("P1906")
local pairsBuilt = 0
if #officeQids > 1 then
for _, officeQid in ipairs(officeQids) do
local personQid = getWdQualifierRawIdForValue("P1906", officeQid, "P1308")
local name = personQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(personQid, false, nil, true))) or nil
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink(officeQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
pairsBuilt = pairsBuilt + 1
end
end
end
if pairsBuilt == 0 then
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
end
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or getWdOfficeItemTitle("P1313") -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
else
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked", "current"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hosQid = getWdRawPropertyId("P35", {"current"})
-- Some countries (Benin since its 2016 constitutional reform)
-- have literally merged the head-of-state and head-of-
-- government OFFICES into one -- confirmed directly on
-- Wikidata, not guessed: Benin's own "office held by head of
-- state" (P1906) and "office held by head of government"
-- (P1313) both resolve to the identical item, "President of
-- the Republic of Benin". Comparing only the PEOPLE
-- (hosQid == hogQid) isn't enough to catch this: a merged-
-- office country's P6 statement can easily be stale (an
-- outgoing office-holder's statement left with no end-date
-- after a transition, since "head of government" stops being
-- tracked as a genuinely separate role once the offices
-- merge) and so resolve to the wrong, out-of-date person --
-- but even then, a second row for an office already shown
-- under the head-of-state row would always be redundant, so
-- the OFFICES themselves are compared too, not just the
-- people.
local hosOfficeQid = getWdRawPropertyId("P1906")
local hogOfficeQid = getWdRawPropertyId("P1313")
local sameOffice = hosOfficeQid and hogOfficeQid and hosOfficeQid == hogOfficeQid
local sameHeadOfStateAndGovernment = sameOffice
or (hos and hog and hosQid and hogQid and hosQid == hogQid)
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or (hosOfficeQid and getWdItemManxLink(hosOfficeQid)) -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
if not isNone(getManual(args, {"ynnydee_kione_steat"})) then
local proxyOfficeQid = getWdQualifierRawId("P35", "P1393")
if proxyOfficeQid then
local proxyPersonIds = getWdRawForeignPropertyIds(proxyOfficeQid, "P1308", {"best"})
local proxyPersonQid = proxyPersonIds[1]
local proxyName = proxyPersonQid and ensureLinked(getWdItemManxLink(proxyPersonQid, false, nil, true)) or nil
if proxyName then
local proxyTitle = getManual(args, {"sorçh_ynnydee"})
or getWdItemManxLink(proxyOfficeQid)
or "Ynnydee"
table.insert(leaderPairs, {title = proxyTitle, name = proxyName})
end
end
end
elseif isUSTerritoryPage() then
-- No P35 at all on the territory's own item (confirmed
-- above) -- fetch the sitting President straight off the
-- United States' own item (Q30) instead. Priority order
-- for the title mirrors every other country's head-of-
-- state title exactly, just sourced from Q30 rather than
-- the current page: manual override, then the office
-- actually set on the US's own item (P1906), then the
-- person-chain heuristic (P39 on the President himself --
-- eid-agnostic, so it works unchanged here), then the
-- property's own label, then the generic hardcoded word.
local presidentQid = getWdRawForeignPropertyIds(US_QID, "P35", {"best", "current"})[1]
local presidentName = resolvePersonName(presidentQid)
if presidentName then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdForeignOfficeItemTitle(US_QID, "P1906")
or getWdPositionTitleForPerson(presidentQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = presidentTitle, name = presidentName})
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or (hogOfficeQid and getWdItemManxLink(hogOfficeQid)) -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
if isNorthernIrelandPage() then
local dfmPersonQid = getWdRawForeignPropertyIds("Q11954685", "P1308", {"best"})[1]
local dfmName = dfmPersonQid and ensureLinked(getWdItemManxLink(dfmPersonQid, false, nil, true)) or nil
local dfmTitle = getWdItemManxLink("Q11954685")
if dfmName and dfmTitle then
table.insert(leaderPairs, {title = dfmTitle, name = dfmName})
end
end
end
end
end
local reiltysLabel = getGenitiveLinkedLabel("Reiltys")
if govShown then
local govClass = (#leaderPairs > 0) and "mergedtoprow" or ""
table.insert(govRows, string.format(ROW, trClass(govClass), reiltysLabel, applyRefNote(govTypeRaw, govRef, govNote, frame)))
elseif #leaderPairs > 0 then
table.insert(govRows, string.format(HEADER, reiltysLabel))
end
if isNicaraguaPage() and #leaderPairs > 1 then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local combinedNames, seenNames = {}, {}
local firstPresidentIndex = nil
local filteredLeaderPairs = {}
for _, leader in ipairs(leaderPairs) do
if leader.title == presidentTitle then
if not firstPresidentIndex then firstPresidentIndex = #filteredLeaderPairs + 1 end
local remaining = leader.name or ""
while true do
local name, rest = remaining:match("^(.-)<br%s*/>(.*)$")
if not name then name = remaining end
name = mw.text.trim(name)
if name ~= "" and not seenNames[name] then
seenNames[name] = true
table.insert(combinedNames, name)
end
if not rest then break end
remaining = rest
end
else
table.insert(filteredLeaderPairs, leader)
end
end
if firstPresidentIndex and #combinedNames > 0 then
table.insert(filteredLeaderPairs, firstPresidentIndex, {
title = presidentTitle,
name = table.concat(combinedNames, "<br/>"),
})
leaderPairs = filteredLeaderPairs
end
end
if #leaderPairs > 0 then
local last = leaderPairs[#leaderPairs]
last.name = applyRefNote(last.name, leaderRef, leaderNote, frame)
local items = {}
for _, leader in ipairs(leaderPairs) do
table.insert(items, {leader.title, leader.name})
end
appendIndentRun(govRows, items)
end
local quaiyl = getManual(args, {"çhionnal", "quaiyl"})
local quaiylSyrjey = getManual(args, {"thie_heose", "quaiyl_syrjey"})
local quaiylInshley = getManual(args, {"thie_heese", "quaiyl_s'inshley", "quaiyl_sinshley"})
local quaiylRef = getManual(args, {"imraa_çhionnal", "imraa_quaiyl"})
local quaiylNote = getManual(args, {"noteyn_çhionnal", "noteyn_quaiyl"})
local quaiylQid = nil
if not quaiyl then
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
local legislatureQid = quaiylQid or getWdRawPropertyId("P194")
if legislatureQid then
local wdUpper, wdLower = getWdChambers(legislatureQid)
if not quaiylSyrjey then quaiylSyrjey = wdUpper end
if not quaiylInshley then quaiylInshley = wdLower end
end
end
if quaiyl and not isNone(quaiyl) then
local houseItems = {}
if quaiylSyrjey and not isNone(quaiylSyrjey) then
table.insert(houseItems, {"[[Thie heose]]", quaiylSyrjey})
end
if quaiylInshley and not isNone(quaiylInshley) then
table.insert(houseItems, {"[[Thie heese]]", quaiylInshley})
end
local quaiylClass = (#houseItems > 0) and "mergedtoprow" or ""
table.insert(quaiylRows, string.format(ROW, trClass(quaiylClass), "[[Çhionnal slattyssagh]]", applyRefNote(quaiyl, quaiylRef, quaiylNote, frame)))
appendIndentRun(quaiylRows, houseItems)
end
local foundingLabel = getManual(args, {"sorçh_kionedeeaght", "sorçh_kiondeeaght"}) or "Bunneeaght"
local foundingValue = getManual(args, {"bunnit"})
local foundingQualifier = getManual(args, {"note_kionedeeaght", "note_kiondeeaght"})
local foundingFootnote = getManual(args, {"noteyn_kionedeeaght", "noteyn_kiondeeaght"})
local foundingRef = getManual(args, {"imraa_kionedeeaght", "imraa_kiondeeaght"})
local function foundingLabelWithQualifier(label)
local linked = wikilinkLabel(label)
if foundingQualifier and foundingQualifier ~= "" then
return linked .. ' <span style="font-weight:normal;">' .. foundingQualifier .. '</span>'
end
return linked
end
local establishmentRows = {}
for i = 1, 9 do
local event = getManual(args, {"taghyrt_bunneeaght" .. i, "taghyrt" .. i .. "_bunnit"})
local date = getManual(args, {"date_bunneeaght" .. i, "date" .. i .. "_bunnit"})
if event then
table.insert(establishmentRows, {event, date or ""})
end
end
if foundingValue or #establishmentRows > 0 then
if foundingValue and not isNone(foundingValue) then
local foundingClass = (#establishmentRows > 0) and "mergedtoprow" or ""
table.insert(foundingRows, string.format(ROW, trClass(foundingClass), foundingLabelWithQualifier(foundingLabel), applyRefNote(foundingValue, foundingRef, foundingFootnote, frame)))
elseif #establishmentRows > 0 then
local headerLabel = applyRefNote(foundingLabelWithQualifier(foundingLabel), foundingRef, foundingFootnote, frame)
table.insert(foundingRows, string.format(HEADER, headerLabel))
end
appendIndentRun(foundingRows, establishmentRows, true)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when unset (not none).
local inception = getWdProperty("P571")
if inception and inception:find(" (Joolagh)", 1, true) then
inception = inception:gsub(" %(Joolagh%)", " (" .. getJulianCalendarSuffixLink() .. ")", 1)
end
if inception then
table.insert(foundingRows, string.format(ROW, "", foundingLabelWithQualifier(foundingLabel), applyRefNote(inception, foundingRef, foundingFootnote, frame)))
end
end
local aarheynnRows = {}
if aarheynnOK and Aarheynn and Aarheynn.main then
local okAarheynn, resultAarheynn = pcall(Aarheynn.main, frame, args)
if okAarheynn and resultAarheynn then aarheynnRows = resultAarheynn end
end
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, aarheynnRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
ov16lpxkauvnh70p4gllxm9d1ajm604
394543
394541
2026-10-16T12:29:38Z
MacTire02
219
+kianglaghyn roosht dys WD
394543
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module (replaces Module:WikidataIB).
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated forms, e.g. Mannin -> Vannin.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Manx-label-or-linked-Wikidata-fallback helper; last rung of getWdItemManxLink.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local aarheynnOK, Aarheynn = pcall(require, "Module:Kishtey fys çheer/aarheynn")
-- Returns the first non-empty manual parameter from a list of names.
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Shared innards of getWdProperty/getWdPropertyWithCitation.
local function getWdPropertyRaw(property, flags, includeReference)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(flags or {}) do table.insert(callArgs, f) end
if includeReference then table.insert(callArgs, "reference") end
table.insert(callArgs, "best") -- single best-ranked value
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
local function getWdPropertyWithCitation(property, flags)
local base = getWdPropertyRaw(property, flags, false)
if not base then return nil, nil end
local withRef = getWdPropertyRaw(property, flags, true)
if not withRef or withRef == base then return base, nil end
if withRef:sub(1, #base) == base then
local citation = withRef:sub(#base + 1)
if citation ~= "" then return base, citation end
return base, nil
end
return withRef, nil
end
local function ensureLinked(value)
if not value or value == "" then return value end
local label, refSuffix = value:match("^(.-)(<ref.*)$")
if not label then
label = value
refSuffix = ""
end
if label:find("%[%[") or label:match("^%[https?://") then
return value
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY (e.g. P35 -> "head of state"), title
-- fallback. getLabelByLang avoids leaking an English fallback.
local function getWikidataPropertyLabel(property)
local ok, label = pcall(mw.wikibase.getLabelByLang, property, "gv")
if ok and label and label ~= "" then return label end
return nil
end
-- Raw QID of an entity-valued property on the current page's own item.
local function getWdRawPropertyId(property, extraFlags)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, "best")
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawPropertyIds(property, extraFlags)
if not wdOK or not Wd or not Wd._properties then return {} end
local callArgs = {"raw"}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, property)
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
local function getWdQualifierRawId(property, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdQualifierRawIdForValue(property, valueQid, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier or not valueQid then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, valueQid, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawForeignPropertyIds(eid, property, extraFlags, qualifiers)
if not wdOK or not Wd or not Wd._properties or not eid then return {} end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, property)
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
for qid, value in pairs(qualifiers or {}) do
callArgs[qid] = value
end
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- QID of the Wikidata item connected to the current page.
local function getCurrentCountryQid()
local ok, id = pcall(mw.wikibase.getEntityIdForCurrentPage)
if ok and id and id ~= "" then return id end
return nil
end
local function getCurrentCountryGenitive()
if not enmynOK or not EnmynCheerey or not EnmynCheerey.genitive then return nil end
local okTitle, title = pcall(function() return mw.title.getCurrentTitle().text end)
if not okTitle or not title or title == "" then return nil end
local okGen, genitive = pcall(EnmynCheerey.genitive, title)
if okGen and genitive and genitive ~= "" then return genitive end
return nil
end
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
["Ree ny Belgee"] = true,
["Benrein ny Belgee"] = true,
}
local function stripCountryGenitiveSuffix(text, countryGenitive)
if not text or not countryGenitive then return nil end
local suffix = " " .. countryGenitive
if #text > #suffix and text:sub(-#suffix) == suffix then
return text:sub(1, #text - #suffix)
end
local bareNoun = countryGenitive:match("^yn%s+(.+)$") or countryGenitive:match("^y%s+(.+)$")
if bareNoun and bareNoun ~= "" then
local suffix2 = " " .. bareNoun
if #text > #suffix2 and text:sub(-#suffix2) == suffix2 then
local remainder = text:sub(1, #text - #suffix2)
if remainder:sub(-3) == " yn" then
return remainder:sub(1, #remainder - 3)
elseif remainder:sub(-2) == " y" then
return remainder:sub(1, #remainder - 2)
end
return remainder
end
end
return nil
end
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(title, countryGenitive)
if stripped then return stripped end
local short = title:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = title:match("^(.-)%syn%s")
if short and short ~= "" then return short end
-- "ny" is the plural/genitive connector (e.g. "Steatyn Unnaneysit" ->
-- "ny Steatyn Unnaneysit", "of the United States") -- confirmed live:
-- "Eaghtyrane ny Steatyn Unnaneysit" was falling through to the blind
-- last-word rung below, which only strips "Unnaneysit", leaving a
-- dangling "Eaghtyrane ny Steatyn" instead of "Eaghtyrane". "%sy%s"/
-- "%syn%s" can never match "ny" (the character before "y" there is
-- "n", not whitespace), so this rung is purely additive.
short = title:match("^(.-)%sny%s")
if short and short ~= "" then return short end
short = title:match("^(.+)%s%S+$")
if short and short ~= "" then return short end
return title
end
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(name, countryGenitive)
if stripped then return stripped end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%syn%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%sny%s")
if short and short ~= "" then return short end
return name
end
local function shortenLinkedCountryName(value)
if not value or value == "" then return value end
local main, refSuffix = value:match("^(.-)(<ref.*)$")
if not main then
main = value
refSuffix = ""
end
local target, display = main:match("^%[%[([^%[%]|]+)|([^%[%]|]+)%]%]$")
if not target then
target = main:match("^%[%[([^%[%]|]+)%]%]$")
display = target
end
if not target then return value end
local short = shortenCountrySuffixedName(display)
if short ~= display then
return "[[" .. target .. "|" .. short .. "]]" .. refSuffix
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("%]%]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
local function getWdItemManxLink(qid, shorten, capitalize, forceRedlink, preferExternalForLabel)
if not qid then return nil end
if capitalize == nil then capitalize = true end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if okLabel and gvLabel and gvLabel ~= "" then
if capitalize then
gvLabel = wikiUcfirst(gvLabel)
end
else
gvLabel = nil
end
if not sitelinkTitle and not gvLabel then
if forceRedlink then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, _, _, rawLabel = pcall(EnnymWd.labelWithFallback, qid)
if ok and rawLabel and rawLabel ~= "" then
return "[[" .. wikiUcfirst(mw.text.nowiki(rawLabel)) .. "]]"
end
end
return nil
end
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
-- No gv sitelink yet: this item has no article of its own, so a
-- same-named wikilink would redlink to a GENERIC title (e.g. "Çhionnal
-- ashoonagh"/"National Assembly") that many unrelated countries'
-- legislative bodies share via an identical gv label. Creating that one
-- shared article later would wrongly merge every one of those distinct
-- bodies into it. preferExternalForLabel routes around that: link
-- straight to THIS item on Wikidata instead, which is always specific
-- to one body no matter how many others carry the same label.
if not sitelinkTitle and preferExternalForLabel then
local display = (shorten == false) and gvLabel or shortManxForm(gvLabel)
return "[https://www.wikidata.org/wiki/" .. qid .. " " .. display .. "]"
end
local target = sitelinkTitle or gvLabel
local displayBase = gvLabel or sitelinkTitle
if shorten == false then
if target == displayBase then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. displayBase .. "]]"
end
local short = shortManxForm(displayBase)
if short ~= target then
return "[[" .. target .. "|" .. short .. "]]"
end
return "[[" .. target .. "]]"
end
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdOfficeItemTitle, but the office property is read off a
-- FOREIGN entity (eid) rather than the current page's own item -- needed
-- for US territories, whose own Wikidata item never carries a P1906/P35
-- of its own; the office has to be resolved off the United States' item
-- (Q30) instead.
local function getWdForeignOfficeItemTitle(eid, officeProperty)
local officeQid = getWdRawForeignPropertyIds(eid, officeProperty, {"best"})[1]
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
local function getWdPositionTitleForPerson(personQid)
if not personQid then return nil end
local countryQid = getCurrentCountryQid()
local candidates = {}
if countryQid then
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"}, {["P1001"] = countryQid})) do
table.insert(candidates, id)
end
end
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"})) do
table.insert(candidates, id)
end
local tried = {}
for _, qid in ipairs(candidates) do
if not tried[qid] then
tried[qid] = true
local link = getWdItemManxLink(qid)
if link then return link end
end
end
return nil
end
local function getWdPositionTitle(headProperty)
return getWdPositionTitleForPerson(getWdRawPropertyId(headProperty))
end
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
local CLASS_WALK_DEPTH = 3
local function classReaches(classQid, targetQid, depth, seen)
if classQid == targetQid then return true end
if depth <= 0 then return false end
seen = seen or {}
if seen[classQid] then return false end
seen[classQid] = true
for _, superQid in ipairs(getWdRawForeignPropertyIds(classQid, "P279")) do
if classReaches(superQid, targetQid, depth - 1, seen) then return true end
end
return false
end
local function getWdChambers(legislatureQid)
if not legislatureQid then return nil, nil end
local partQids = getWdRawForeignPropertyIds(legislatureQid, "P527")
local upperQid, lowerQid = nil, nil
local upperAmbiguous, lowerAmbiguous = false, false
for _, partQid in ipairs(partQids) do
local isUpper, isLower = false, false
for _, classQid in ipairs(getWdRawForeignPropertyIds(partQid, "P31")) do
if classQid == UPPER_HOUSE_QID or classReaches(classQid, UPPER_HOUSE_QID, CLASS_WALK_DEPTH) then
isUpper = true
elseif classQid == LOWER_HOUSE_QID or classReaches(classQid, LOWER_HOUSE_QID, CLASS_WALK_DEPTH) then
isLower = true
end
end
if isUpper then
if upperQid and upperQid ~= partQid then upperAmbiguous = true end
upperQid = partQid
end
if isLower then
if lowerQid and lowerQid ~= partQid then lowerAmbiguous = true end
lowerQid = partQid
end
end
local upperLink = (upperQid and not upperAmbiguous) and getWdItemManxLink(upperQid, false, nil, nil, true) or nil
local lowerLink = (lowerQid and not lowerAmbiguous) and getWdItemManxLink(lowerQid, false, nil, nil, true) or nil
return upperLink, lowerLink
end
local JULIAN_CALENDAR_QID = "Q1985786"
local function getJulianCalendarSuffixLink()
local link = getWdItemManxLink(JULIAN_CALENDAR_QID, false)
if link then
local target = link:match("^%[%[([^%[%]|]+)") or link:match("^%[%[([^%[%]|]+)%]%]$")
if target then
return "[[" .. target .. "|Joolagh]]"
end
return link
end
return "Joolagh"
end
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW_WRAP = '<tr%s><th style="vertical-align:top; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
-- Builds a class="..." attribute, or an empty string.
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
local function appendIndentRun(rows, items, wrap)
local template = wrap and SUBROW_WRAP or SUBROW
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(template, trClass(class), item[1], item[2]))
end
end
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
function p.main(frame, args)
-- Allow being called as p.main(args) with no frame (used by tests).
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
local govRows = {}
local quaiylRows = {}
local foundingRows = {}
local govTypeRaw = getManual(args, {"sorçh_reiltys", "government_type"})
local govRef = getManual(args, {"imraa_reiltys"})
local govNote = getManual(args, {"noteyn_reiltys"})
if not govTypeRaw then
local govTypeQids = getWdRawPropertyIds("P122")
local govTypeParts = {}
for _, qid in ipairs(govTypeQids) do
local link = getWdItemManxLink(qid, false, false)
if link then table.insert(govTypeParts, link) end
end
if #govTypeParts > 0 then
govTypeRaw = capitalizeFirstLetter(table.concat(govTypeParts, ", "))
end
end
local govShown = govTypeRaw and not isNone(govTypeRaw)
local leaderPairs = {}
local manualLeaderGiven = false
for i = 1, 5 do
local title = getManual(args, {"enmys_toshiagh" .. i, "enmys" .. i .. "_fer-toshee"})
local name = getManual(args, {"ennym_toshiagh" .. i, "ennym" .. i .. "_fer-toshee"})
if title or name then
manualLeaderGiven = true
if not isNone(name) then
table.insert(leaderPairs, {title = title or "", name = name or ""})
end
end
end
local leaderRef = getManual(args, {"imraa_toshiagh", "imraa_fer-toshee"})
local leaderNote = getManual(args, {"noteyn_toshiagh", "noteyn_fer-toshee"})
local leadersSuppressed = isNone(getManual(args, {"fir_hoshee", "toshiaghyn"}))
local function resolvePersonName(qid)
if not qid then return nil end
return shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
end
local councillors = {}
for i = 1, 7 do
local name = getManual(args, {"ennym_coonseilagh" .. i})
if name and not isNone(name) then
table.insert(councillors, {slot = i, name = name})
end
end
local manualCouncillorsGiven = #councillors > 0
local swissBodyQid = getWdRawPropertyId("P35") or getWdRawPropertyId("P6")
local isSwissFederalCouncil = swissBodyQid == "Q30917"
if (manualCouncillorsGiven or isSwissFederalCouncil) and not leadersSuppressed then
manualLeaderGiven = true
local presidentAnnotation = ' ([[Eaghtyrane Chochiangle yn Elveeish|Eaghtyrane]])'
local vpAnnotation = ' ([[Lhiass-eaghtyrane yn Elveeish|Lhiass-eaghtyrane]])'
local nameLines = {}
local chancellor = nil
if manualCouncillorsGiven then
local presidentSlot = tonumber(getManual(args, {"eaghtyrane_coonseilagh"}))
local vicePresidentSlot = tonumber(getManual(args, {"lhiass-eaghtyrane_coonseilagh"}))
for _, entry in ipairs(councillors) do
local line = entry.name
if presidentSlot and entry.slot == presidentSlot then
line = line .. presidentAnnotation
elseif vicePresidentSlot and entry.slot == vicePresidentSlot then
line = line .. vpAnnotation
end
table.insert(nameLines, line)
end
chancellor = getManual(args, {"shansyleyr_conastagh"})
else
local presidentOverride = getManual(args, {"eaghtyrane_coonseilagh"})
local vpOverride = getManual(args, {"lhiass-eaghtyrane_coonseilagh"})
local chancellorOverride = getManual(args, {"shansyleyr_conastagh"})
local councillorQids = getWdRawForeignPropertyIds("Q30917", "P3320", {"best", "current"})
local presidentQid = not isNone(presidentOverride) and getWdRawForeignPropertyIds("Q688230", "P1308", {"best"})[1] or nil
local vpQid = not isNone(vpOverride) and getWdRawForeignPropertyIds("Q25550811", "P1308", {"best"})[1] or nil
for _, qid in ipairs(councillorQids) do
local name = resolvePersonName(qid)
if name then
if qid == presidentQid then
name = name .. presidentAnnotation
elseif qid == vpQid then
name = name .. vpAnnotation
end
table.insert(nameLines, name)
end
end
if chancellorOverride and not isNone(chancellorOverride) then
chancellor = chancellorOverride
elseif not isNone(chancellorOverride) then
local chancellorQid = getWdRawForeignPropertyIds("Q687810", "P1308", {"best"})[1]
chancellor = resolvePersonName(chancellorQid)
end
end
if #nameLines > 0 then
table.insert(leaderPairs, {
title = '[[Coonseil Chonastagh yn Elveeish|Coonseilee Chonastagh]]',
name = table.concat(nameLines, '<br/>'),
})
end
if chancellor and chancellor ~= "" then
table.insert(leaderPairs, {
title = '[[Shansyleyr yn Elveeish|Shansyleyr Conastagh]]',
name = chancellor,
})
end
end
local function isSanMarinoPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "San Marino"
end
local function isNorthernIrelandPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nerin Hwoaie"
end
local function isNicaraguaPage()
if getCurrentCountryQid() == "Q811" then return true end
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nickeraag"
end
-- US unincorporated territories: the President of the United States is
-- each territory's head of state, but this is never recorded on the
-- territory's own Wikidata item -- confirmed directly against Puerto
-- Rico's own item, which carries only "instance of" classification
-- statements (e.g. "unincorporated territory of the United States",
-- "insular area of the United States"), no P35 at all. The President
-- has to be fetched off the United States' own item (Q30) instead --
-- same foreign-entity pattern as Nicaragua's co-presidents and
-- Northern Ireland's Deputy First Minister above. Detected by an
-- explicit page-title list (matching the San Marino/Northern Ireland
-- convention), confirmed directly rather than guessed, since a
-- territory's own P17 isn't something this module can reliably key
-- automatic detection off.
local US_QID = "Q30"
local usTerritoryTitles = {
["Yn Phurt Verçhagh"] = true, -- Puerto Rico
["Guam"] = true, -- Guam
["Ellanyn Americaanagh y Voidyn"] = true, -- US Virgin Islands
["Samoa Americaanagh"] = true, -- American Samoa
}
local function isUSTerritoryPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title ~= nil and usTerritoryTitles[title] == true
end
local sanMarinoCaptains = {}
for i = 1, 2 do
local name = getManual(args, {"ennym_captan_reiree" .. i})
if name and not isNone(name) then
table.insert(sanMarinoCaptains, name)
end
end
local manualSanMarinoGiven = #sanMarinoCaptains > 0
if (manualSanMarinoGiven or isSanMarinoPage()) and not leadersSuppressed and not manualLeaderGiven then
manualLeaderGiven = true
local nameLines = {}
if manualSanMarinoGiven then
nameLines = sanMarinoCaptains
else
local captainQids = getWdRawPropertyIds("P35", {"best", "current"})
for _, qid in ipairs(captainQids) do
local name = resolvePersonName(qid)
if name then table.insert(nameLines, name) end
end
end
if #nameLines > 0 then
local title = getManual(args, {"sorçh_kione_steat"}) or '[[Captanyn Reiree]]'
table.insert(leaderPairs, {
title = title,
name = table.concat(nameLines, '<br/>'),
})
end
end
if not manualLeaderGiven and not leadersSuppressed then
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
-- "current" matters here, not just "best": confirmed live on Benin,
-- whose P6 (head of government) statements have no preferred rank
-- at all (three past/present holders all tied at normal rank) --
-- Module:Wd's singular _property command has no way to break that
-- tie chronologically, so without "current" filtering out the
-- already-ended ones it can return an arbitrary past holder.
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked", "current"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6", {"current"})
if isNicaraguaPage() then
-- Nicaragua is a diarchy: two co-presidents, listed on Wikidata not
-- as the country's own P35/P6 statements but as P1308 ("position
-- holder") values on the "President of Nicaragua" OFFICE item
-- itself (Q852448) -- same foreign-entity pattern as Northern
-- Ireland's Deputy First Minister and Switzerland's councillors
-- above. "best" (rank) and "current" (time period) are
-- independent Wd flags, not alternatives -- both are needed
-- together to get exactly the presently-serving, non-deprecated
-- co-presidents, matching this file's existing convention
-- (San Marino's Captains Regent, the Swiss Federal Council).
local presidentQids = getWdRawForeignPropertyIds("Q852448", "P1308", {"best", "current"})
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local sameHeadOfStateAndGovernment = false
local presidentNames = {}
for _, qid in ipairs(presidentQids) do
local name = ensureLinked(getWdItemManxLink(qid, false, nil, true))
if name then
table.insert(leaderPairs, {title = presidentTitle, name = name})
end
if name then table.insert(presidentNames, name) end
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
if #presidentNames > 0 then
table.insert(leaderPairs, {
title = presidentTitle,
name = table.concat(presidentNames, '<br/>'),
})
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or getWdOfficeItemTitle("P1313")
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
elseif #hosQids > 1 then
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
local officeQids = getWdRawPropertyIds("P1906")
local pairsBuilt = 0
if #officeQids > 1 then
for _, officeQid in ipairs(officeQids) do
local personQid = getWdQualifierRawIdForValue("P1906", officeQid, "P1308")
local name = personQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(personQid, false, nil, true))) or nil
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink(officeQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
pairsBuilt = pairsBuilt + 1
end
end
end
if pairsBuilt == 0 then
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
end
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or getWdOfficeItemTitle("P1313") -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
else
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked", "current"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hosQid = getWdRawPropertyId("P35", {"current"})
-- Some countries (Benin since its 2016 constitutional reform)
-- have literally merged the head-of-state and head-of-
-- government OFFICES into one -- confirmed directly on
-- Wikidata, not guessed: Benin's own "office held by head of
-- state" (P1906) and "office held by head of government"
-- (P1313) both resolve to the identical item, "President of
-- the Republic of Benin". Comparing only the PEOPLE
-- (hosQid == hogQid) isn't enough to catch this: a merged-
-- office country's P6 statement can easily be stale (an
-- outgoing office-holder's statement left with no end-date
-- after a transition, since "head of government" stops being
-- tracked as a genuinely separate role once the offices
-- merge) and so resolve to the wrong, out-of-date person --
-- but even then, a second row for an office already shown
-- under the head-of-state row would always be redundant, so
-- the OFFICES themselves are compared too, not just the
-- people.
local hosOfficeQid = getWdRawPropertyId("P1906")
local hogOfficeQid = getWdRawPropertyId("P1313")
local sameOffice = hosOfficeQid and hogOfficeQid and hosOfficeQid == hogOfficeQid
local sameHeadOfStateAndGovernment = sameOffice
or (hos and hog and hosQid and hogQid and hosQid == hogQid)
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or (hosOfficeQid and getWdItemManxLink(hosOfficeQid)) -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
if not isNone(getManual(args, {"ynnydee_kione_steat"})) then
local proxyOfficeQid = getWdQualifierRawId("P35", "P1393")
if proxyOfficeQid then
local proxyPersonIds = getWdRawForeignPropertyIds(proxyOfficeQid, "P1308", {"best"})
local proxyPersonQid = proxyPersonIds[1]
local proxyName = proxyPersonQid and ensureLinked(getWdItemManxLink(proxyPersonQid, false, nil, true)) or nil
if proxyName then
local proxyTitle = getManual(args, {"sorçh_ynnydee"})
or getWdItemManxLink(proxyOfficeQid)
or "Ynnydee"
table.insert(leaderPairs, {title = proxyTitle, name = proxyName})
end
end
end
elseif isUSTerritoryPage() then
-- No P35 at all on the territory's own item (confirmed
-- above) -- fetch the sitting President straight off the
-- United States' own item (Q30) instead. Priority order
-- for the title mirrors every other country's head-of-
-- state title exactly, just sourced from Q30 rather than
-- the current page: manual override, then the office
-- actually set on the US's own item (P1906), then the
-- person-chain heuristic (P39 on the President himself --
-- eid-agnostic, so it works unchanged here), then the
-- property's own label, then the generic hardcoded word.
local presidentQid = getWdRawForeignPropertyIds(US_QID, "P35", {"best", "current"})[1]
local presidentName = resolvePersonName(presidentQid)
if presidentName then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdForeignOfficeItemTitle(US_QID, "P1906")
or getWdPositionTitleForPerson(presidentQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = presidentTitle, name = presidentName})
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or (hogOfficeQid and getWdItemManxLink(hogOfficeQid)) -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
if isNorthernIrelandPage() then
local dfmPersonQid = getWdRawForeignPropertyIds("Q11954685", "P1308", {"best"})[1]
local dfmName = dfmPersonQid and ensureLinked(getWdItemManxLink(dfmPersonQid, false, nil, true)) or nil
local dfmTitle = getWdItemManxLink("Q11954685")
if dfmName and dfmTitle then
table.insert(leaderPairs, {title = dfmTitle, name = dfmName})
end
end
end
end
end
local reiltysLabel = getGenitiveLinkedLabel("Reiltys")
if govShown then
local govClass = (#leaderPairs > 0) and "mergedtoprow" or ""
table.insert(govRows, string.format(ROW, trClass(govClass), reiltysLabel, applyRefNote(govTypeRaw, govRef, govNote, frame)))
elseif #leaderPairs > 0 then
table.insert(govRows, string.format(HEADER, reiltysLabel))
end
if isNicaraguaPage() and #leaderPairs > 1 then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local combinedNames, seenNames = {}, {}
local firstPresidentIndex = nil
local filteredLeaderPairs = {}
for _, leader in ipairs(leaderPairs) do
if leader.title == presidentTitle then
if not firstPresidentIndex then firstPresidentIndex = #filteredLeaderPairs + 1 end
local remaining = leader.name or ""
while true do
local name, rest = remaining:match("^(.-)<br%s*/>(.*)$")
if not name then name = remaining end
name = mw.text.trim(name)
if name ~= "" and not seenNames[name] then
seenNames[name] = true
table.insert(combinedNames, name)
end
if not rest then break end
remaining = rest
end
else
table.insert(filteredLeaderPairs, leader)
end
end
if firstPresidentIndex and #combinedNames > 0 then
table.insert(filteredLeaderPairs, firstPresidentIndex, {
title = presidentTitle,
name = table.concat(combinedNames, "<br/>"),
})
leaderPairs = filteredLeaderPairs
end
end
if #leaderPairs > 0 then
local last = leaderPairs[#leaderPairs]
last.name = applyRefNote(last.name, leaderRef, leaderNote, frame)
local items = {}
for _, leader in ipairs(leaderPairs) do
table.insert(items, {leader.title, leader.name})
end
appendIndentRun(govRows, items)
end
local quaiyl = getManual(args, {"çhionnal", "quaiyl"})
local quaiylSyrjey = getManual(args, {"thie_heose", "quaiyl_syrjey"})
local quaiylInshley = getManual(args, {"thie_heese", "quaiyl_s'inshley", "quaiyl_sinshley"})
local quaiylRef = getManual(args, {"imraa_çhionnal", "imraa_quaiyl"})
local quaiylNote = getManual(args, {"noteyn_çhionnal", "noteyn_quaiyl"})
local quaiylQid = nil
if not quaiyl then
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false, nil, nil, true)
end
end
if not quaiylSyrjey or not quaiylInshley then
local legislatureQid = quaiylQid or getWdRawPropertyId("P194")
if legislatureQid then
local wdUpper, wdLower = getWdChambers(legislatureQid)
if not quaiylSyrjey then quaiylSyrjey = wdUpper end
if not quaiylInshley then quaiylInshley = wdLower end
end
end
if quaiyl and not isNone(quaiyl) then
local houseItems = {}
if quaiylSyrjey and not isNone(quaiylSyrjey) then
table.insert(houseItems, {"[[Thie heose]]", quaiylSyrjey})
end
if quaiylInshley and not isNone(quaiylInshley) then
table.insert(houseItems, {"[[Thie heese]]", quaiylInshley})
end
local quaiylClass = (#houseItems > 0) and "mergedtoprow" or ""
table.insert(quaiylRows, string.format(ROW, trClass(quaiylClass), "[[Çhionnal slattyssagh]]", applyRefNote(quaiyl, quaiylRef, quaiylNote, frame)))
appendIndentRun(quaiylRows, houseItems)
end
local foundingLabel = getManual(args, {"sorçh_kionedeeaght", "sorçh_kiondeeaght"}) or "Bunneeaght"
local foundingValue = getManual(args, {"bunnit"})
local foundingQualifier = getManual(args, {"note_kionedeeaght", "note_kiondeeaght"})
local foundingFootnote = getManual(args, {"noteyn_kionedeeaght", "noteyn_kiondeeaght"})
local foundingRef = getManual(args, {"imraa_kionedeeaght", "imraa_kiondeeaght"})
local function foundingLabelWithQualifier(label)
local linked = wikilinkLabel(label)
if foundingQualifier and foundingQualifier ~= "" then
return linked .. ' <span style="font-weight:normal;">' .. foundingQualifier .. '</span>'
end
return linked
end
local establishmentRows = {}
for i = 1, 9 do
local event = getManual(args, {"taghyrt_bunneeaght" .. i, "taghyrt" .. i .. "_bunnit"})
local date = getManual(args, {"date_bunneeaght" .. i, "date" .. i .. "_bunnit"})
if event then
table.insert(establishmentRows, {event, date or ""})
end
end
if foundingValue or #establishmentRows > 0 then
if foundingValue and not isNone(foundingValue) then
local foundingClass = (#establishmentRows > 0) and "mergedtoprow" or ""
table.insert(foundingRows, string.format(ROW, trClass(foundingClass), foundingLabelWithQualifier(foundingLabel), applyRefNote(foundingValue, foundingRef, foundingFootnote, frame)))
elseif #establishmentRows > 0 then
local headerLabel = applyRefNote(foundingLabelWithQualifier(foundingLabel), foundingRef, foundingFootnote, frame)
table.insert(foundingRows, string.format(HEADER, headerLabel))
end
appendIndentRun(foundingRows, establishmentRows, true)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when unset (not none).
local inception = getWdProperty("P571")
if inception and inception:find(" (Joolagh)", 1, true) then
inception = inception:gsub(" %(Joolagh%)", " (" .. getJulianCalendarSuffixLink() .. ")", 1)
end
if inception then
table.insert(foundingRows, string.format(ROW, "", foundingLabelWithQualifier(foundingLabel), applyRefNote(inception, foundingRef, foundingFootnote, frame)))
end
end
local aarheynnRows = {}
if aarheynnOK and Aarheynn and Aarheynn.main then
local okAarheynn, resultAarheynn = pcall(Aarheynn.main, frame, args)
if okAarheynn and resultAarheynn then aarheynnRows = resultAarheynn end
end
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, aarheynnRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
8rj451n16ff63skchhxgt2rdgxhse0e
394572
394543
2026-10-16T17:36:45Z
MacTire02
219
-chaghteraghtyn
394572
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module (replaces Module:WikidataIB).
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated forms, e.g. Mannin -> Vannin.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Manx-label-or-linked-Wikidata-fallback helper; last rung of getWdItemManxLink.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local aarheynnOK, Aarheynn = pcall(require, "Module:Kishtey fys çheer/aarheynn")
-- Returns the first non-empty manual parameter from a list of names.
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Shared innards of getWdProperty/getWdPropertyWithCitation.
local function getWdPropertyRaw(property, flags, includeReference)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(flags or {}) do table.insert(callArgs, f) end
if includeReference then table.insert(callArgs, "reference") end
table.insert(callArgs, "best") -- single best-ranked value
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
local function getWdPropertyWithCitation(property, flags)
local base = getWdPropertyRaw(property, flags, false)
if not base then return nil, nil end
local withRef = getWdPropertyRaw(property, flags, true)
if not withRef or withRef == base then return base, nil end
if withRef:sub(1, #base) == base then
local citation = withRef:sub(#base + 1)
if citation ~= "" then return base, citation end
return base, nil
end
return withRef, nil
end
local function ensureLinked(value)
if not value or value == "" then return value end
local label, refSuffix = value:match("^(.-)(<ref.*)$")
if not label then
label = value
refSuffix = ""
end
if label:find("%[%[") or label:match("^%[https?://") then
return value
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY (e.g. P35 -> "head of state"), title
-- fallback. getLabelByLang avoids leaking an English fallback.
local function getWikidataPropertyLabel(property)
local ok, label = pcall(mw.wikibase.getLabelByLang, property, "gv")
if ok and label and label ~= "" then return label end
return nil
end
-- Raw QID of an entity-valued property on the current page's own item.
local function getWdRawPropertyId(property, extraFlags)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, "best")
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawPropertyIds(property, extraFlags)
if not wdOK or not Wd or not Wd._properties then return {} end
local callArgs = {"raw"}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, property)
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
local function getWdQualifierRawId(property, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdQualifierRawIdForValue(property, valueQid, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier or not valueQid then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, valueQid, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawForeignPropertyIds(eid, property, extraFlags, qualifiers)
if not wdOK or not Wd or not Wd._properties or not eid then return {} end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, property)
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
for qid, value in pairs(qualifiers or {}) do
callArgs[qid] = value
end
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- QID of the Wikidata item connected to the current page.
local function getCurrentCountryQid()
local ok, id = pcall(mw.wikibase.getEntityIdForCurrentPage)
if ok and id and id ~= "" then return id end
return nil
end
local function getCurrentCountryGenitive()
if not enmynOK or not EnmynCheerey or not EnmynCheerey.genitive then return nil end
local okTitle, title = pcall(function() return mw.title.getCurrentTitle().text end)
if not okTitle or not title or title == "" then return nil end
local okGen, genitive = pcall(EnmynCheerey.genitive, title)
if okGen and genitive and genitive ~= "" then return genitive end
return nil
end
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
["Ree ny Belgee"] = true,
["Benrein ny Belgee"] = true,
-- Togo's head of government is titled "President of the Council of
-- Ministers" (no separate Prime Minister); "ny Shirveishee" here is
-- part of the office's own fixed name, not a country-genitive suffix,
-- so the " ny " token-split rung below must not fire on it.
["Eaghtyrane Choonseil ny Shirveishee"] = true,
}
local function stripCountryGenitiveSuffix(text, countryGenitive)
if not text or not countryGenitive then return nil end
local suffix = " " .. countryGenitive
if #text > #suffix and text:sub(-#suffix) == suffix then
return text:sub(1, #text - #suffix)
end
local bareNoun = countryGenitive:match("^yn%s+(.+)$") or countryGenitive:match("^y%s+(.+)$")
if bareNoun and bareNoun ~= "" then
local suffix2 = " " .. bareNoun
if #text > #suffix2 and text:sub(-#suffix2) == suffix2 then
local remainder = text:sub(1, #text - #suffix2)
if remainder:sub(-3) == " yn" then
return remainder:sub(1, #remainder - 3)
elseif remainder:sub(-2) == " y" then
return remainder:sub(1, #remainder - 2)
end
return remainder
end
end
return nil
end
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(title, countryGenitive)
if stripped then return stripped end
local short = title:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = title:match("^(.-)%syn%s")
if short and short ~= "" then return short end
-- "ny" is the plural/genitive connector (e.g. "Steatyn Unnaneysit" ->
-- "ny Steatyn Unnaneysit", "of the United States"). "%sy%s"/"%syn%s"
-- can never match "ny" (the character before "y" there is "n", not
-- whitespace), so this rung is purely additive, catching titles that
-- would otherwise fall through to the blind last-word rung below.
short = title:match("^(.-)%sny%s")
if short and short ~= "" then return short end
short = title:match("^(.+)%s%S+$")
if short and short ~= "" then return short end
return title
end
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(name, countryGenitive)
if stripped then return stripped end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%syn%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%sny%s")
if short and short ~= "" then return short end
return name
end
local function shortenLinkedCountryName(value)
if not value or value == "" then return value end
local main, refSuffix = value:match("^(.-)(<ref.*)$")
if not main then
main = value
refSuffix = ""
end
local target, display = main:match("^%[%[([^%[%]|]+)|([^%[%]|]+)%]%]$")
if not target then
target = main:match("^%[%[([^%[%]|]+)%]%]$")
display = target
end
if not target then return value end
local short = shortenCountrySuffixedName(display)
if short ~= display then
return "[[" .. target .. "|" .. short .. "]]" .. refSuffix
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("%]%]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
local function getWdItemManxLink(qid, shorten, capitalize, forceRedlink, preferExternalForLabel)
if not qid then return nil end
if capitalize == nil then capitalize = true end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if okLabel and gvLabel and gvLabel ~= "" then
if capitalize then
gvLabel = wikiUcfirst(gvLabel)
end
else
gvLabel = nil
end
if not sitelinkTitle and not gvLabel then
if forceRedlink then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, _, _, rawLabel = pcall(EnnymWd.labelWithFallback, qid)
if ok and rawLabel and rawLabel ~= "" then
return "[[" .. wikiUcfirst(mw.text.nowiki(rawLabel)) .. "]]"
end
end
return nil
end
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
-- No gv sitelink yet: this item has no article of its own, so a
-- same-named wikilink would redlink to a GENERIC title (e.g. "Çhionnal
-- ashoonagh"/"National Assembly") that many unrelated countries'
-- legislative bodies share via an identical gv label. Creating that one
-- shared article later would wrongly merge every one of those distinct
-- bodies into it. preferExternalForLabel routes around that: link
-- straight to THIS item on Wikidata instead, which is always specific
-- to one body no matter how many others carry the same label.
if not sitelinkTitle and preferExternalForLabel then
local display = (shorten == false) and gvLabel or shortManxForm(gvLabel)
return "[https://www.wikidata.org/wiki/" .. qid .. " " .. display .. "]"
end
local target = sitelinkTitle or gvLabel
local displayBase = gvLabel or sitelinkTitle
if shorten == false then
if target == displayBase then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. displayBase .. "]]"
end
local short = shortManxForm(displayBase)
if short ~= target then
return "[[" .. target .. "|" .. short .. "]]"
end
return "[[" .. target .. "]]"
end
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdOfficeItemTitle, but the office property is read off a
-- FOREIGN entity (eid) rather than the current page's own item -- needed
-- for US territories, whose own Wikidata item never carries a P1906/P35
-- of its own; the office has to be resolved off the United States' item
-- (Q30) instead.
local function getWdForeignOfficeItemTitle(eid, officeProperty)
local officeQid = getWdRawForeignPropertyIds(eid, officeProperty, {"best"})[1]
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
local function getWdPositionTitleForPerson(personQid)
if not personQid then return nil end
local countryQid = getCurrentCountryQid()
local candidates = {}
if countryQid then
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"}, {["P1001"] = countryQid})) do
table.insert(candidates, id)
end
end
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"})) do
table.insert(candidates, id)
end
local tried = {}
for _, qid in ipairs(candidates) do
if not tried[qid] then
tried[qid] = true
local link = getWdItemManxLink(qid)
if link then return link end
end
end
return nil
end
local function getWdPositionTitle(headProperty)
return getWdPositionTitleForPerson(getWdRawPropertyId(headProperty))
end
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
local CLASS_WALK_DEPTH = 3
local function classReaches(classQid, targetQid, depth, seen)
if classQid == targetQid then return true end
if depth <= 0 then return false end
seen = seen or {}
if seen[classQid] then return false end
seen[classQid] = true
for _, superQid in ipairs(getWdRawForeignPropertyIds(classQid, "P279")) do
if classReaches(superQid, targetQid, depth - 1, seen) then return true end
end
return false
end
local function getWdChambers(legislatureQid)
if not legislatureQid then return nil, nil end
local partQids = getWdRawForeignPropertyIds(legislatureQid, "P527")
local upperQid, lowerQid = nil, nil
local upperAmbiguous, lowerAmbiguous = false, false
for _, partQid in ipairs(partQids) do
local isUpper, isLower = false, false
for _, classQid in ipairs(getWdRawForeignPropertyIds(partQid, "P31")) do
if classQid == UPPER_HOUSE_QID or classReaches(classQid, UPPER_HOUSE_QID, CLASS_WALK_DEPTH) then
isUpper = true
elseif classQid == LOWER_HOUSE_QID or classReaches(classQid, LOWER_HOUSE_QID, CLASS_WALK_DEPTH) then
isLower = true
end
end
if isUpper then
if upperQid and upperQid ~= partQid then upperAmbiguous = true end
upperQid = partQid
end
if isLower then
if lowerQid and lowerQid ~= partQid then lowerAmbiguous = true end
lowerQid = partQid
end
end
local upperLink = (upperQid and not upperAmbiguous) and getWdItemManxLink(upperQid, false, nil, nil, true) or nil
local lowerLink = (lowerQid and not lowerAmbiguous) and getWdItemManxLink(lowerQid, false, nil, nil, true) or nil
return upperLink, lowerLink
end
local JULIAN_CALENDAR_QID = "Q1985786"
local function getJulianCalendarSuffixLink()
local link = getWdItemManxLink(JULIAN_CALENDAR_QID, false)
if link then
local target = link:match("^%[%[([^%[%]|]+)") or link:match("^%[%[([^%[%]|]+)%]%]$")
if target then
return "[[" .. target .. "|Joolagh]]"
end
return link
end
return "Joolagh"
end
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW_WRAP = '<tr%s><th style="vertical-align:top; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
-- Builds a class="..." attribute, or an empty string.
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
local function appendIndentRun(rows, items, wrap)
local template = wrap and SUBROW_WRAP or SUBROW
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(template, trClass(class), item[1], item[2]))
end
end
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
function p.main(frame, args)
-- Allow being called as p.main(args) with no frame (used by tests).
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
local govRows = {}
local quaiylRows = {}
local foundingRows = {}
local govTypeRaw = getManual(args, {"sorçh_reiltys", "government_type"})
local govRef = getManual(args, {"imraa_reiltys"})
local govNote = getManual(args, {"noteyn_reiltys"})
if not govTypeRaw then
local govTypeQids = getWdRawPropertyIds("P122")
local govTypeParts = {}
for _, qid in ipairs(govTypeQids) do
local link = getWdItemManxLink(qid, false, false)
if link then table.insert(govTypeParts, link) end
end
if #govTypeParts > 0 then
govTypeRaw = capitalizeFirstLetter(table.concat(govTypeParts, ", "))
end
end
local govShown = govTypeRaw and not isNone(govTypeRaw)
local leaderPairs = {}
local manualLeaderGiven = false
for i = 1, 5 do
local title = getManual(args, {"enmys_toshiagh" .. i, "enmys" .. i .. "_fer-toshee"})
local name = getManual(args, {"ennym_toshiagh" .. i, "ennym" .. i .. "_fer-toshee"})
if title or name then
manualLeaderGiven = true
if not isNone(name) then
table.insert(leaderPairs, {title = title or "", name = name or ""})
end
end
end
local leaderRef = getManual(args, {"imraa_toshiagh", "imraa_fer-toshee"})
local leaderNote = getManual(args, {"noteyn_toshiagh", "noteyn_fer-toshee"})
local leadersSuppressed = isNone(getManual(args, {"fir_hoshee", "toshiaghyn"}))
local function resolvePersonName(qid)
if not qid then return nil end
return shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
end
local councillors = {}
for i = 1, 7 do
local name = getManual(args, {"ennym_coonseilagh" .. i})
if name and not isNone(name) then
table.insert(councillors, {slot = i, name = name})
end
end
local manualCouncillorsGiven = #councillors > 0
local swissBodyQid = getWdRawPropertyId("P35") or getWdRawPropertyId("P6")
local isSwissFederalCouncil = swissBodyQid == "Q30917"
if (manualCouncillorsGiven or isSwissFederalCouncil) and not leadersSuppressed then
manualLeaderGiven = true
local presidentAnnotation = ' ([[Eaghtyrane Chochiangle yn Elveeish|Eaghtyrane]])'
local vpAnnotation = ' ([[Lhiass-eaghtyrane yn Elveeish|Lhiass-eaghtyrane]])'
local nameLines = {}
local chancellor = nil
if manualCouncillorsGiven then
local presidentSlot = tonumber(getManual(args, {"eaghtyrane_coonseilagh"}))
local vicePresidentSlot = tonumber(getManual(args, {"lhiass-eaghtyrane_coonseilagh"}))
for _, entry in ipairs(councillors) do
local line = entry.name
if presidentSlot and entry.slot == presidentSlot then
line = line .. presidentAnnotation
elseif vicePresidentSlot and entry.slot == vicePresidentSlot then
line = line .. vpAnnotation
end
table.insert(nameLines, line)
end
chancellor = getManual(args, {"shansyleyr_conastagh"})
else
local presidentOverride = getManual(args, {"eaghtyrane_coonseilagh"})
local vpOverride = getManual(args, {"lhiass-eaghtyrane_coonseilagh"})
local chancellorOverride = getManual(args, {"shansyleyr_conastagh"})
local councillorQids = getWdRawForeignPropertyIds("Q30917", "P3320", {"best", "current"})
local presidentQid = not isNone(presidentOverride) and getWdRawForeignPropertyIds("Q688230", "P1308", {"best"})[1] or nil
local vpQid = not isNone(vpOverride) and getWdRawForeignPropertyIds("Q25550811", "P1308", {"best"})[1] or nil
for _, qid in ipairs(councillorQids) do
local name = resolvePersonName(qid)
if name then
if qid == presidentQid then
name = name .. presidentAnnotation
elseif qid == vpQid then
name = name .. vpAnnotation
end
table.insert(nameLines, name)
end
end
if chancellorOverride and not isNone(chancellorOverride) then
chancellor = chancellorOverride
elseif not isNone(chancellorOverride) then
local chancellorQid = getWdRawForeignPropertyIds("Q687810", "P1308", {"best"})[1]
chancellor = resolvePersonName(chancellorQid)
end
end
if #nameLines > 0 then
table.insert(leaderPairs, {
title = '[[Coonseil Chonastagh yn Elveeish|Coonseilee Chonastagh]]',
name = table.concat(nameLines, '<br/>'),
})
end
if chancellor and chancellor ~= "" then
table.insert(leaderPairs, {
title = '[[Shansyleyr yn Elveeish|Shansyleyr Conastagh]]',
name = chancellor,
})
end
end
local function isSanMarinoPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "San Marino"
end
local function isNorthernIrelandPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nerin Hwoaie"
end
local function isNicaraguaPage()
if getCurrentCountryQid() == "Q811" then return true end
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nickeraag"
end
-- US unincorporated territories: the President of the United States is
-- each territory's head of state, but this is never recorded on the
-- territory's own Wikidata item (it carries only "instance of"
-- classification statements, no P35). The President has to be fetched
-- off the United States' own item (Q30) instead -- same foreign-entity
-- pattern as Nicaragua's co-presidents and Northern Ireland's Deputy
-- First Minister above. Detected by an explicit page-title list
-- (matching the San Marino/Northern Ireland convention).
local US_QID = "Q30"
local usTerritoryTitles = {
["Yn Phurt Verçhagh"] = true, -- Puerto Rico
["Guam"] = true, -- Guam
["Ellanyn Americaanagh y Voidyn"] = true, -- US Virgin Islands
["Samoa Americaanagh"] = true, -- American Samoa
}
local function isUSTerritoryPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title ~= nil and usTerritoryTitles[title] == true
end
local sanMarinoCaptains = {}
for i = 1, 2 do
local name = getManual(args, {"ennym_captan_reiree" .. i})
if name and not isNone(name) then
table.insert(sanMarinoCaptains, name)
end
end
local manualSanMarinoGiven = #sanMarinoCaptains > 0
if (manualSanMarinoGiven or isSanMarinoPage()) and not leadersSuppressed and not manualLeaderGiven then
manualLeaderGiven = true
local nameLines = {}
if manualSanMarinoGiven then
nameLines = sanMarinoCaptains
else
local captainQids = getWdRawPropertyIds("P35", {"best", "current"})
for _, qid in ipairs(captainQids) do
local name = resolvePersonName(qid)
if name then table.insert(nameLines, name) end
end
end
if #nameLines > 0 then
local title = getManual(args, {"sorçh_kione_steat"}) or '[[Captanyn Reiree]]'
table.insert(leaderPairs, {
title = title,
name = table.concat(nameLines, '<br/>'),
})
end
end
if not manualLeaderGiven and not leadersSuppressed then
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
-- "current" matters here, not just "best": a country whose P6
-- (head of government) statements have no preferred rank at all
-- (several past/present holders tied at normal rank) would
-- otherwise let Module:Wd's singular _property command return an
-- arbitrary past holder, with no way to break the tie
-- chronologically.
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked", "current"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6", {"current"})
if isNicaraguaPage() then
-- Nicaragua is a diarchy: two co-presidents, listed on Wikidata not
-- as the country's own P35/P6 statements but as P1308 ("position
-- holder") values on the "President of Nicaragua" OFFICE item
-- itself (Q852448) -- same foreign-entity pattern as Northern
-- Ireland's Deputy First Minister and Switzerland's councillors
-- above. "best" and "current" are independent Wd flags, both
-- needed to get exactly the presently-serving co-presidents.
local presidentQids = getWdRawForeignPropertyIds("Q852448", "P1308", {"best", "current"})
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local sameHeadOfStateAndGovernment = false
local presidentNames = {}
for _, qid in ipairs(presidentQids) do
local name = ensureLinked(getWdItemManxLink(qid, false, nil, true))
if name then
table.insert(leaderPairs, {title = presidentTitle, name = name})
end
if name then table.insert(presidentNames, name) end
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
if #presidentNames > 0 then
table.insert(leaderPairs, {
title = presidentTitle,
name = table.concat(presidentNames, '<br/>'),
})
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or getWdOfficeItemTitle("P1313")
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
elseif #hosQids > 1 then
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
local officeQids = getWdRawPropertyIds("P1906")
local pairsBuilt = 0
if #officeQids > 1 then
for _, officeQid in ipairs(officeQids) do
local personQid = getWdQualifierRawIdForValue("P1906", officeQid, "P1308")
local name = personQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(personQid, false, nil, true))) or nil
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink(officeQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
pairsBuilt = pairsBuilt + 1
end
end
end
if pairsBuilt == 0 then
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
end
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or getWdOfficeItemTitle("P1313") -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
else
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked", "current"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hosQid = getWdRawPropertyId("P35", {"current"})
-- Some countries (e.g. Benin since 2016) have literally merged
-- the head-of-state and head-of-government OFFICES into one:
-- "office held by head of state" (P1906) and "office held by
-- head of government" (P1313) both resolve to the same item.
-- Comparing only the PEOPLE (hosQid == hogQid) isn't enough --
-- a merged-office country's P6 statement can be stale (left
-- over from before the merge) and resolve to the wrong person
-- -- so the OFFICES themselves are compared too, not just the
-- people.
local hosOfficeQid = getWdRawPropertyId("P1906")
local hogOfficeQid = getWdRawPropertyId("P1313")
local sameOffice = hosOfficeQid and hogOfficeQid and hosOfficeQid == hogOfficeQid
local sameHeadOfStateAndGovernment = sameOffice
or (hos and hog and hosQid and hogQid and hosQid == hogQid)
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or (hosOfficeQid and getWdItemManxLink(hosOfficeQid)) -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
if not isNone(getManual(args, {"ynnydee_kione_steat"})) then
local proxyOfficeQid = getWdQualifierRawId("P35", "P1393")
if proxyOfficeQid then
local proxyPersonIds = getWdRawForeignPropertyIds(proxyOfficeQid, "P1308", {"best"})
local proxyPersonQid = proxyPersonIds[1]
local proxyName = proxyPersonQid and ensureLinked(getWdItemManxLink(proxyPersonQid, false, nil, true)) or nil
if proxyName then
local proxyTitle = getManual(args, {"sorçh_ynnydee"})
or getWdItemManxLink(proxyOfficeQid)
or "Ynnydee"
table.insert(leaderPairs, {title = proxyTitle, name = proxyName})
end
end
end
elseif isUSTerritoryPage() then
-- No P35 at all on the territory's own item -- fetch the
-- sitting President straight off the United States' own
-- item (Q30) instead. Title priority mirrors every other
-- country's head-of-state title, just sourced from Q30.
local presidentQid = getWdRawForeignPropertyIds(US_QID, "P35", {"best", "current"})[1]
local presidentName = resolvePersonName(presidentQid)
if presidentName then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdForeignOfficeItemTitle(US_QID, "P1906")
or getWdPositionTitleForPerson(presidentQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = presidentTitle, name = presidentName})
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or (hogOfficeQid and getWdItemManxLink(hogOfficeQid)) -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
if isNorthernIrelandPage() then
local dfmPersonQid = getWdRawForeignPropertyIds("Q11954685", "P1308", {"best"})[1]
local dfmName = dfmPersonQid and ensureLinked(getWdItemManxLink(dfmPersonQid, false, nil, true)) or nil
local dfmTitle = getWdItemManxLink("Q11954685")
if dfmName and dfmTitle then
table.insert(leaderPairs, {title = dfmTitle, name = dfmName})
end
end
end
end
end
local reiltysLabel = getGenitiveLinkedLabel("Reiltys")
if govShown then
local govClass = (#leaderPairs > 0) and "mergedtoprow" or ""
table.insert(govRows, string.format(ROW, trClass(govClass), reiltysLabel, applyRefNote(govTypeRaw, govRef, govNote, frame)))
elseif #leaderPairs > 0 then
table.insert(govRows, string.format(HEADER, reiltysLabel))
end
if isNicaraguaPage() and #leaderPairs > 1 then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local combinedNames, seenNames = {}, {}
local firstPresidentIndex = nil
local filteredLeaderPairs = {}
for _, leader in ipairs(leaderPairs) do
if leader.title == presidentTitle then
if not firstPresidentIndex then firstPresidentIndex = #filteredLeaderPairs + 1 end
local remaining = leader.name or ""
while true do
local name, rest = remaining:match("^(.-)<br%s*/>(.*)$")
if not name then name = remaining end
name = mw.text.trim(name)
if name ~= "" and not seenNames[name] then
seenNames[name] = true
table.insert(combinedNames, name)
end
if not rest then break end
remaining = rest
end
else
table.insert(filteredLeaderPairs, leader)
end
end
if firstPresidentIndex and #combinedNames > 0 then
table.insert(filteredLeaderPairs, firstPresidentIndex, {
title = presidentTitle,
name = table.concat(combinedNames, "<br/>"),
})
leaderPairs = filteredLeaderPairs
end
end
if #leaderPairs > 0 then
local last = leaderPairs[#leaderPairs]
last.name = applyRefNote(last.name, leaderRef, leaderNote, frame)
local items = {}
for _, leader in ipairs(leaderPairs) do
table.insert(items, {leader.title, leader.name})
end
appendIndentRun(govRows, items)
end
local quaiyl = getManual(args, {"çhionnal", "quaiyl"})
local quaiylSyrjey = getManual(args, {"thie_heose", "quaiyl_syrjey"})
local quaiylInshley = getManual(args, {"thie_heese", "quaiyl_s'inshley", "quaiyl_sinshley"})
local quaiylRef = getManual(args, {"imraa_çhionnal", "imraa_quaiyl"})
local quaiylNote = getManual(args, {"noteyn_çhionnal", "noteyn_quaiyl"})
local quaiylQid = nil
if not quaiyl then
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false, nil, nil, true)
end
end
if not quaiylSyrjey or not quaiylInshley then
local legislatureQid = quaiylQid or getWdRawPropertyId("P194")
if legislatureQid then
local wdUpper, wdLower = getWdChambers(legislatureQid)
if not quaiylSyrjey then quaiylSyrjey = wdUpper end
if not quaiylInshley then quaiylInshley = wdLower end
end
end
if quaiyl and not isNone(quaiyl) then
local houseItems = {}
if quaiylSyrjey and not isNone(quaiylSyrjey) then
table.insert(houseItems, {"[[Thie heose]]", quaiylSyrjey})
end
if quaiylInshley and not isNone(quaiylInshley) then
table.insert(houseItems, {"[[Thie heese]]", quaiylInshley})
end
local quaiylClass = (#houseItems > 0) and "mergedtoprow" or ""
table.insert(quaiylRows, string.format(ROW, trClass(quaiylClass), "[[Çhionnal slattyssagh]]", applyRefNote(quaiyl, quaiylRef, quaiylNote, frame)))
appendIndentRun(quaiylRows, houseItems)
end
local foundingLabel = getManual(args, {"sorçh_kionedeeaght", "sorçh_kiondeeaght"}) or "Bunneeaght"
local foundingValue = getManual(args, {"bunnit"})
local foundingQualifier = getManual(args, {"note_kionedeeaght", "note_kiondeeaght"})
local foundingFootnote = getManual(args, {"noteyn_kionedeeaght", "noteyn_kiondeeaght"})
local foundingRef = getManual(args, {"imraa_kionedeeaght", "imraa_kiondeeaght"})
local function foundingLabelWithQualifier(label)
local linked = wikilinkLabel(label)
if foundingQualifier and foundingQualifier ~= "" then
return linked .. ' <span style="font-weight:normal;">' .. foundingQualifier .. '</span>'
end
return linked
end
local establishmentRows = {}
for i = 1, 9 do
local event = getManual(args, {"taghyrt_bunneeaght" .. i, "taghyrt" .. i .. "_bunnit"})
local date = getManual(args, {"date_bunneeaght" .. i, "date" .. i .. "_bunnit"})
if event then
table.insert(establishmentRows, {event, date or ""})
end
end
if foundingValue or #establishmentRows > 0 then
if foundingValue and not isNone(foundingValue) then
local foundingClass = (#establishmentRows > 0) and "mergedtoprow" or ""
table.insert(foundingRows, string.format(ROW, trClass(foundingClass), foundingLabelWithQualifier(foundingLabel), applyRefNote(foundingValue, foundingRef, foundingFootnote, frame)))
elseif #establishmentRows > 0 then
local headerLabel = applyRefNote(foundingLabelWithQualifier(foundingLabel), foundingRef, foundingFootnote, frame)
table.insert(foundingRows, string.format(HEADER, headerLabel))
end
appendIndentRun(foundingRows, establishmentRows, true)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when unset (not none).
local inception = getWdProperty("P571")
if inception and inception:find(" (Joolagh)", 1, true) then
inception = inception:gsub(" %(Joolagh%)", " (" .. getJulianCalendarSuffixLink() .. ")", 1)
end
if inception then
table.insert(foundingRows, string.format(ROW, "", foundingLabelWithQualifier(foundingLabel), applyRefNote(inception, foundingRef, foundingFootnote, frame)))
end
end
local aarheynnRows = {}
if aarheynnOK and Aarheynn and Aarheynn.main then
local okAarheynn, resultAarheynn = pcall(Aarheynn.main, frame, args)
if okAarheynn and resultAarheynn then aarheynnRows = resultAarheynn end
end
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, aarheynnRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
lgikncnjk2b7lmz2u20hna7ho93h4ku
394576
394572
2026-10-16T18:04:32Z
MacTire02
219
++
394576
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module (replaces Module:WikidataIB).
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated forms, e.g. Mannin -> Vannin.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Manx-label-or-linked-Wikidata-fallback helper; last rung of getWdItemManxLink.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local aarheynnOK, Aarheynn = pcall(require, "Module:Kishtey fys çheer/aarheynn")
-- Returns the first non-empty manual parameter from a list of names.
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Shared innards of getWdProperty/getWdPropertyWithCitation.
local function getWdPropertyRaw(property, flags, includeReference)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(flags or {}) do table.insert(callArgs, f) end
if includeReference then table.insert(callArgs, "reference") end
table.insert(callArgs, "best") -- single best-ranked value
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
local function getWdPropertyWithCitation(property, flags)
local base = getWdPropertyRaw(property, flags, false)
if not base then return nil, nil end
local withRef = getWdPropertyRaw(property, flags, true)
if not withRef or withRef == base then return base, nil end
if withRef:sub(1, #base) == base then
local citation = withRef:sub(#base + 1)
if citation ~= "" then return base, citation end
return base, nil
end
return withRef, nil
end
local function ensureLinked(value)
if not value or value == "" then return value end
local label, refSuffix = value:match("^(.-)(<ref.*)$")
if not label then
label = value
refSuffix = ""
end
if label:find("%[%[") or label:match("^%[https?://") then
return value
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY (e.g. P35 -> "head of state"), title
-- fallback. getLabelByLang avoids leaking an English fallback.
local function getWikidataPropertyLabel(property)
local ok, label = pcall(mw.wikibase.getLabelByLang, property, "gv")
if ok and label and label ~= "" then return label end
return nil
end
-- Raw QID of an entity-valued property on the current page's own item.
local function getWdRawPropertyId(property, extraFlags)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, "best")
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawPropertyIds(property, extraFlags)
if not wdOK or not Wd or not Wd._properties then return {} end
local callArgs = {"raw"}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, property)
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
local function getWdQualifierRawId(property, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdQualifierRawIdForValue(property, valueQid, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier or not valueQid then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, valueQid, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawForeignPropertyIds(eid, property, extraFlags, qualifiers)
if not wdOK or not Wd or not Wd._properties or not eid then return {} end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, property)
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
for qid, value in pairs(qualifiers or {}) do
callArgs[qid] = value
end
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- QID of the Wikidata item connected to the current page.
local function getCurrentCountryQid()
local ok, id = pcall(mw.wikibase.getEntityIdForCurrentPage)
if ok and id and id ~= "" then return id end
return nil
end
local function getCurrentCountryGenitive()
if not enmynOK or not EnmynCheerey or not EnmynCheerey.genitive then return nil end
local okTitle, title = pcall(function() return mw.title.getCurrentTitle().text end)
if not okTitle or not title or title == "" then return nil end
local okGen, genitive = pcall(EnmynCheerey.genitive, title)
if okGen and genitive and genitive ~= "" then return genitive end
return nil
end
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
["Ree ny Belgee"] = true,
["Benrein ny Belgee"] = true,
-- Togo's head of government is titled "President of the Council of
-- Ministers" (no separate Prime Minister); "ny Shirveishee" here is
-- part of the office's own fixed name, not a country-genitive suffix,
-- so the " ny " token-split rung below must not fire on it.
["Eaghtyrane Choonseil ny Shirveishee"] = true,
}
local function stripCountryGenitiveSuffix(text, countryGenitive)
if not text or not countryGenitive then return nil end
local suffix = " " .. countryGenitive
if #text > #suffix and text:sub(-#suffix) == suffix then
return text:sub(1, #text - #suffix)
end
local bareNoun = countryGenitive:match("^yn%s+(.+)$") or countryGenitive:match("^y%s+(.+)$")
if bareNoun and bareNoun ~= "" then
local suffix2 = " " .. bareNoun
if #text > #suffix2 and text:sub(-#suffix2) == suffix2 then
local remainder = text:sub(1, #text - #suffix2)
if remainder:sub(-3) == " yn" then
return remainder:sub(1, #remainder - 3)
elseif remainder:sub(-2) == " y" then
return remainder:sub(1, #remainder - 2)
end
return remainder
end
end
return nil
end
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(title, countryGenitive)
if stripped then return stripped end
local short = title:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = title:match("^(.-)%syn%s")
if short and short ~= "" then return short end
-- "ny" is the plural/genitive connector (e.g. "Steatyn Unnaneysit" ->
-- "ny Steatyn Unnaneysit", "of the United States"). "%sy%s"/"%syn%s"
-- can never match "ny" (the character before "y" there is "n", not
-- whitespace), so this rung is purely additive, catching titles that
-- would otherwise fall through to the blind last-word rung below.
short = title:match("^(.-)%sny%s")
if short and short ~= "" then return short end
short = title:match("^(.+)%s%S+$")
if short and short ~= "" then return short end
return title
end
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(name, countryGenitive)
if stripped then return stripped end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%syn%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%sny%s")
if short and short ~= "" then return short end
return name
end
local function shortenLinkedCountryName(value)
if not value or value == "" then return value end
local main, refSuffix = value:match("^(.-)(<ref.*)$")
if not main then
main = value
refSuffix = ""
end
local target, display = main:match("^%[%[([^%[%]|]+)|([^%[%]|]+)%]%]$")
if not target then
target = main:match("^%[%[([^%[%]|]+)%]%]$")
display = target
end
if not target then return value end
local short = shortenCountrySuffixedName(display)
if short ~= display then
return "[[" .. target .. "|" .. short .. "]]" .. refSuffix
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("]]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
local function getWdItemManxLink(qid, shorten, capitalize, forceRedlink, preferExternalForLabel)
if not qid then return nil end
if capitalize == nil then capitalize = true end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if okLabel and gvLabel and gvLabel ~= "" then
if capitalize then
gvLabel = wikiUcfirst(gvLabel)
end
else
gvLabel = nil
end
if not sitelinkTitle and not gvLabel then
if forceRedlink then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, _, _, rawLabel = pcall(EnnymWd.labelWithFallback, qid)
if ok and rawLabel and rawLabel ~= "" then
return "[[" .. wikiUcfirst(mw.text.nowiki(rawLabel)) .. "]]"
end
end
return nil
end
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
-- No gv sitelink yet: this item has no article of its own, so a
-- same-named wikilink would redlink to a GENERIC title (e.g. "Çhionnal
-- ashoonagh"/"National Assembly") that many unrelated countries'
-- legislative bodies share via an identical gv label. Creating that one
-- shared article later would wrongly merge every one of those distinct
-- bodies into it. preferExternalForLabel routes around that: link
-- straight to THIS item on Wikidata instead, which is always specific
-- to one body no matter how many others carry the same label.
if not sitelinkTitle and preferExternalForLabel then
local display = (shorten == false) and gvLabel or shortManxForm(gvLabel)
return "[https://www.wikidata.org/wiki/" .. qid .. " " .. display .. "]"
end
local target = sitelinkTitle or gvLabel
local displayBase = gvLabel or sitelinkTitle
if shorten == false then
if target == displayBase then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. displayBase .. "]]"
end
local short = shortManxForm(displayBase)
if short ~= target then
return "[[" .. target .. "|" .. short .. "]]"
end
return "[[" .. target .. "]]"
end
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdOfficeItemTitle, but the office property is read off a
-- FOREIGN entity (eid) rather than the current page's own item -- needed
-- for US territories, whose own Wikidata item never carries a P1906/P35
-- of its own; the office has to be resolved off the United States' item
-- (Q30) instead.
local function getWdForeignOfficeItemTitle(eid, officeProperty)
local officeQid = getWdRawForeignPropertyIds(eid, officeProperty, {"best"})[1]
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
local function getWdPositionTitleForPerson(personQid)
if not personQid then return nil end
local countryQid = getCurrentCountryQid()
local candidates = {}
if countryQid then
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"}, {["P1001"] = countryQid})) do
table.insert(candidates, id)
end
end
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"})) do
table.insert(candidates, id)
end
local tried = {}
for _, qid in ipairs(candidates) do
if not tried[qid] then
tried[qid] = true
local link = getWdItemManxLink(qid)
if link then return link end
end
end
return nil
end
local function getWdPositionTitle(headProperty)
return getWdPositionTitleForPerson(getWdRawPropertyId(headProperty))
end
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
local CLASS_WALK_DEPTH = 3
local function classReaches(classQid, targetQid, depth, seen)
if classQid == targetQid then return true end
if depth <= 0 then return false end
seen = seen or {}
if seen[classQid] then return false end
seen[classQid] = true
for _, superQid in ipairs(getWdRawForeignPropertyIds(classQid, "P279")) do
if classReaches(superQid, targetQid, depth - 1, seen) then return true end
end
return false
end
local function getWdChambers(legislatureQid)
if not legislatureQid then return nil, nil end
local partQids = getWdRawForeignPropertyIds(legislatureQid, "P527")
local upperQid, lowerQid = nil, nil
local upperAmbiguous, lowerAmbiguous = false, false
for _, partQid in ipairs(partQids) do
local isUpper, isLower = false, false
for _, classQid in ipairs(getWdRawForeignPropertyIds(partQid, "P31")) do
if classQid == UPPER_HOUSE_QID or classReaches(classQid, UPPER_HOUSE_QID, CLASS_WALK_DEPTH) then
isUpper = true
elseif classQid == LOWER_HOUSE_QID or classReaches(classQid, LOWER_HOUSE_QID, CLASS_WALK_DEPTH) then
isLower = true
end
end
if isUpper then
if upperQid and upperQid ~= partQid then upperAmbiguous = true end
upperQid = partQid
end
if isLower then
if lowerQid and lowerQid ~= partQid then lowerAmbiguous = true end
lowerQid = partQid
end
end
local upperLink = (upperQid and not upperAmbiguous) and getWdItemManxLink(upperQid, false, nil, nil, true) or nil
local lowerLink = (lowerQid and not lowerAmbiguous) and getWdItemManxLink(lowerQid, false, nil, nil, true) or nil
return upperLink, lowerLink
end
local JULIAN_CALENDAR_QID = "Q1985786"
local function getJulianCalendarSuffixLink()
local link = getWdItemManxLink(JULIAN_CALENDAR_QID, false)
if link then
local target = link:match("^%[%[([^%[%]|]+)") or link:match("^%[%[([^%[%]|]+)%]%]$")
if target then
return "[[" .. target .. "|Joolagh]]"
end
return link
end
return "Joolagh"
end
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW_WRAP = '<tr%s><th style="vertical-align:top; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
-- Builds a class="..." attribute, or an empty string.
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
local function appendIndentRun(rows, items, wrap)
local template = wrap and SUBROW_WRAP or SUBROW
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(template, trClass(class), item[1], item[2]))
end
end
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
function p.main(frame, args)
-- Allow being called as p.main(args) with no frame (used by tests).
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
local govRows = {}
local quaiylRows = {}
local foundingRows = {}
local govTypeRaw = getManual(args, {"sorçh_reiltys", "government_type"})
local govRef = getManual(args, {"imraa_reiltys"})
local govNote = getManual(args, {"noteyn_reiltys"})
if not govTypeRaw then
local govTypeQids = getWdRawPropertyIds("P122")
local govTypeParts = {}
for _, qid in ipairs(govTypeQids) do
local link = getWdItemManxLink(qid, false, false)
if link then table.insert(govTypeParts, link) end
end
if #govTypeParts > 0 then
govTypeRaw = capitalizeFirstLetter(table.concat(govTypeParts, ", "))
end
end
local govShown = govTypeRaw and not isNone(govTypeRaw)
local leaderPairs = {}
local manualLeaderGiven = false
for i = 1, 5 do
local title = getManual(args, {"enmys_toshiagh" .. i, "enmys" .. i .. "_fer-toshee"})
local name = getManual(args, {"ennym_toshiagh" .. i, "ennym" .. i .. "_fer-toshee"})
if title or name then
manualLeaderGiven = true
if not isNone(name) then
table.insert(leaderPairs, {title = title or "", name = name or ""})
end
end
end
local leaderRef = getManual(args, {"imraa_toshiagh", "imraa_fer-toshee"})
local leaderNote = getManual(args, {"noteyn_toshiagh", "noteyn_fer-toshee"})
local leadersSuppressed = isNone(getManual(args, {"fir_hoshee", "toshiaghyn"}))
local function resolvePersonName(qid)
if not qid then return nil end
return shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
end
local councillors = {}
for i = 1, 7 do
local name = getManual(args, {"ennym_coonseilagh" .. i})
if name and not isNone(name) then
table.insert(councillors, {slot = i, name = name})
end
end
local manualCouncillorsGiven = #councillors > 0
local swissBodyQid = getWdRawPropertyId("P35") or getWdRawPropertyId("P6")
local isSwissFederalCouncil = swissBodyQid == "Q30917"
if (manualCouncillorsGiven or isSwissFederalCouncil) and not leadersSuppressed then
manualLeaderGiven = true
local presidentAnnotation = ' ([[Eaghtyrane Chochiangle yn Elveeish|Eaghtyrane]])'
local vpAnnotation = ' ([[Lhiass-eaghtyrane yn Elveeish|Lhiass-eaghtyrane]])'
local nameLines = {}
local chancellor = nil
if manualCouncillorsGiven then
local presidentSlot = tonumber(getManual(args, {"eaghtyrane_coonseilagh"}))
local vicePresidentSlot = tonumber(getManual(args, {"lhiass-eaghtyrane_coonseilagh"}))
for _, entry in ipairs(councillors) do
local line = entry.name
if presidentSlot and entry.slot == presidentSlot then
line = line .. presidentAnnotation
elseif vicePresidentSlot and entry.slot == vicePresidentSlot then
line = line .. vpAnnotation
end
table.insert(nameLines, line)
end
chancellor = getManual(args, {"shansyleyr_conastagh"})
else
local presidentOverride = getManual(args, {"eaghtyrane_coonseilagh"})
local vpOverride = getManual(args, {"lhiass-eaghtyrane_coonseilagh"})
local chancellorOverride = getManual(args, {"shansyleyr_conastagh"})
local councillorQids = getWdRawForeignPropertyIds("Q30917", "P3320", {"best", "current"})
local presidentQid = not isNone(presidentOverride) and getWdRawForeignPropertyIds("Q688230", "P1308", {"best"})[1] or nil
local vpQid = not isNone(vpOverride) and getWdRawForeignPropertyIds("Q25550811", "P1308", {"best"})[1] or nil
for _, qid in ipairs(councillorQids) do
local name = resolvePersonName(qid)
if name then
if qid == presidentQid then
name = name .. presidentAnnotation
elseif qid == vpQid then
name = name .. vpAnnotation
end
table.insert(nameLines, name)
end
end
if chancellorOverride and not isNone(chancellorOverride) then
chancellor = chancellorOverride
elseif not isNone(chancellorOverride) then
local chancellorQid = getWdRawForeignPropertyIds("Q687810", "P1308", {"best"})[1]
chancellor = resolvePersonName(chancellorQid)
end
end
if #nameLines > 0 then
table.insert(leaderPairs, {
title = '[[Coonseil Chonastagh yn Elveeish|Coonseilee Chonastagh]]',
name = table.concat(nameLines, '<br/>'),
})
end
if chancellor and chancellor ~= "" then
table.insert(leaderPairs, {
title = '[[Shansyleyr yn Elveeish|Shansyleyr Conastagh]]',
name = chancellor,
})
end
end
local function isSanMarinoPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "San Marino"
end
local function isNorthernIrelandPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nerin Hwoaie"
end
local function isNicaraguaPage()
if getCurrentCountryQid() == "Q811" then return true end
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nickeraag"
end
-- US unincorporated territories: the President of the United States is
-- each territory's head of state, but this is never recorded on the
-- territory's own Wikidata item (it carries only "instance of"
-- classification statements, no P35). The President has to be fetched
-- off the United States' own item (Q30) instead -- same foreign-entity
-- pattern as Nicaragua's co-presidents and Northern Ireland's Deputy
-- First Minister above. Detected by an explicit page-title list
-- (matching the San Marino/Northern Ireland convention).
local US_QID = "Q30"
local usTerritoryTitles = {
["Yn Phurt Verçhagh"] = true, -- Puerto Rico
["Guam"] = true, -- Guam
["Ellanyn Americaanagh y Voidyn"] = true, -- US Virgin Islands
["Samoa Americaanagh"] = true, -- American Samoa
}
local function isUSTerritoryPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title ~= nil and usTerritoryTitles[title] == true
end
local sanMarinoCaptains = {}
for i = 1, 2 do
local name = getManual(args, {"ennym_captan_reiree" .. i})
if name and not isNone(name) then
table.insert(sanMarinoCaptains, name)
end
end
local manualSanMarinoGiven = #sanMarinoCaptains > 0
if (manualSanMarinoGiven or isSanMarinoPage()) and not leadersSuppressed and not manualLeaderGiven then
manualLeaderGiven = true
local nameLines = {}
if manualSanMarinoGiven then
nameLines = sanMarinoCaptains
else
local captainQids = getWdRawPropertyIds("P35", {"best", "current"})
for _, qid in ipairs(captainQids) do
local name = resolvePersonName(qid)
if name then table.insert(nameLines, name) end
end
end
if #nameLines > 0 then
local title = getManual(args, {"sorçh_kione_steat"}) or '[[Captanyn Reiree]]'
table.insert(leaderPairs, {
title = title,
name = table.concat(nameLines, '<br/>'),
})
end
end
if not manualLeaderGiven and not leadersSuppressed then
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
-- "current" matters here, not just "best": a country whose P6
-- (head of government) statements have no preferred rank at all
-- (several past/present holders tied at normal rank) would
-- otherwise let Module:Wd's singular _property command return an
-- arbitrary past holder, with no way to break the tie
-- chronologically.
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked", "current"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6", {"current"})
-- No P6 on the item: take the holder (P1308) of the office item named by
-- P1313, or of a known office for countries that lack both.
local hogFallbackTitle = nil
if not hog and not isNone(getManual(args, {"sorçh_kione_reiltys"})) then
local HOG_OFFICE_FALLBACK = {
Q9648 = { office = "Q3064699", manx = "[[Ard-heckter ny Malveenaghyn]]" }, -- Falkland Islands
}
local known = HOG_OFFICE_FALLBACK[getCurrentCountryQid() or ""]
local officeQid = getWdRawPropertyId("P1313") or (known and known.office)
if officeQid then
local holderQid = getWdRawForeignPropertyIds(officeQid, "P1308", {"best", "current"})[1]
local holderName = holderQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(holderQid, false, nil, true))) or nil
if holderName then
hog, hogQid = holderName, holderQid
hogFallbackTitle = getWdItemManxLink(officeQid) or (known and known.office == officeQid and known.manx) or nil
end
end
end
if isNicaraguaPage() then
-- Nicaragua is a diarchy: two co-presidents, listed on Wikidata not
-- as the country's own P35/P6 statements but as P1308 ("position
-- holder") values on the "President of Nicaragua" OFFICE item
-- itself (Q852448) -- same foreign-entity pattern as Northern
-- Ireland's Deputy First Minister and Switzerland's councillors
-- above. "best" and "current" are independent Wd flags, both
-- needed to get exactly the presently-serving co-presidents.
local presidentQids = getWdRawForeignPropertyIds("Q852448", "P1308", {"best", "current"})
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local sameHeadOfStateAndGovernment = false
local presidentNames = {}
for _, qid in ipairs(presidentQids) do
local name = ensureLinked(getWdItemManxLink(qid, false, nil, true))
if name then
table.insert(leaderPairs, {title = presidentTitle, name = name})
end
if name then table.insert(presidentNames, name) end
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
if #presidentNames > 0 then
table.insert(leaderPairs, {
title = presidentTitle,
name = table.concat(presidentNames, '<br/>'),
})
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or hogFallbackTitle
or getWdOfficeItemTitle("P1313")
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
elseif #hosQids > 1 then
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
local officeQids = getWdRawPropertyIds("P1906")
local pairsBuilt = 0
if #officeQids > 1 then
for _, officeQid in ipairs(officeQids) do
local personQid = getWdQualifierRawIdForValue("P1906", officeQid, "P1308")
local name = personQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(personQid, false, nil, true))) or nil
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink(officeQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
pairsBuilt = pairsBuilt + 1
end
end
end
if pairsBuilt == 0 then
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
end
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or hogFallbackTitle
or getWdOfficeItemTitle("P1313") -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
else
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked", "current"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hosQid = getWdRawPropertyId("P35", {"current"})
-- Some countries (e.g. Benin since 2016) have literally merged
-- the head-of-state and head-of-government OFFICES into one:
-- "office held by head of state" (P1906) and "office held by
-- head of government" (P1313) both resolve to the same item.
-- Comparing only the PEOPLE (hosQid == hogQid) isn't enough --
-- a merged-office country's P6 statement can be stale (left
-- over from before the merge) and resolve to the wrong person
-- -- so the OFFICES themselves are compared too, not just the
-- people.
local hosOfficeQid = getWdRawPropertyId("P1906")
local hogOfficeQid = getWdRawPropertyId("P1313")
local sameOffice = hosOfficeQid and hogOfficeQid and hosOfficeQid == hogOfficeQid
local sameHeadOfStateAndGovernment = sameOffice
or (hos and hog and hosQid and hogQid and hosQid == hogQid)
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or (hosOfficeQid and getWdItemManxLink(hosOfficeQid)) -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
if not isNone(getManual(args, {"ynnydee_kione_steat"})) then
local proxyOfficeQid = getWdQualifierRawId("P35", "P1393")
if proxyOfficeQid then
local proxyPersonIds = getWdRawForeignPropertyIds(proxyOfficeQid, "P1308", {"best"})
local proxyPersonQid = proxyPersonIds[1]
local proxyName = proxyPersonQid and ensureLinked(getWdItemManxLink(proxyPersonQid, false, nil, true)) or nil
if proxyName then
local proxyTitle = getManual(args, {"sorçh_ynnydee"})
or getWdItemManxLink(proxyOfficeQid)
or "Ynnydee"
table.insert(leaderPairs, {title = proxyTitle, name = proxyName})
end
end
end
elseif isUSTerritoryPage() then
-- No P35 at all on the territory's own item -- fetch the
-- sitting President straight off the United States' own
-- item (Q30) instead. Title priority mirrors every other
-- country's head-of-state title, just sourced from Q30.
local presidentQid = getWdRawForeignPropertyIds(US_QID, "P35", {"best", "current"})[1]
local presidentName = resolvePersonName(presidentQid)
if presidentName then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdForeignOfficeItemTitle(US_QID, "P1906")
or getWdPositionTitleForPerson(presidentQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = presidentTitle, name = presidentName})
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or (hogOfficeQid and getWdItemManxLink(hogOfficeQid)) -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
if isNorthernIrelandPage() then
local dfmPersonQid = getWdRawForeignPropertyIds("Q11954685", "P1308", {"best"})[1]
local dfmName = dfmPersonQid and ensureLinked(getWdItemManxLink(dfmPersonQid, false, nil, true)) or nil
local dfmTitle = getWdItemManxLink("Q11954685")
if dfmName and dfmTitle then
table.insert(leaderPairs, {title = dfmTitle, name = dfmName})
end
end
end
end
end
local reiltysLabel = getGenitiveLinkedLabel("Reiltys")
if govShown then
local govClass = (#leaderPairs > 0) and "mergedtoprow" or ""
table.insert(govRows, string.format(ROW, trClass(govClass), reiltysLabel, applyRefNote(govTypeRaw, govRef, govNote, frame)))
elseif #leaderPairs > 0 then
table.insert(govRows, string.format(HEADER, reiltysLabel))
end
if isNicaraguaPage() and #leaderPairs > 1 then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local combinedNames, seenNames = {}, {}
local firstPresidentIndex = nil
local filteredLeaderPairs = {}
for _, leader in ipairs(leaderPairs) do
if leader.title == presidentTitle then
if not firstPresidentIndex then firstPresidentIndex = #filteredLeaderPairs + 1 end
local remaining = leader.name or ""
while true do
local name, rest = remaining:match("^(.-)<br%s*/>(.*)$")
if not name then name = remaining end
name = mw.text.trim(name)
if name ~= "" and not seenNames[name] then
seenNames[name] = true
table.insert(combinedNames, name)
end
if not rest then break end
remaining = rest
end
else
table.insert(filteredLeaderPairs, leader)
end
end
if firstPresidentIndex and #combinedNames > 0 then
table.insert(filteredLeaderPairs, firstPresidentIndex, {
title = presidentTitle,
name = table.concat(combinedNames, "<br/>"),
})
leaderPairs = filteredLeaderPairs
end
end
if #leaderPairs > 0 then
local last = leaderPairs[#leaderPairs]
last.name = applyRefNote(last.name, leaderRef, leaderNote, frame)
local items = {}
for _, leader in ipairs(leaderPairs) do
table.insert(items, {leader.title, leader.name})
end
appendIndentRun(govRows, items)
end
local quaiyl = getManual(args, {"çhionnal", "quaiyl"})
local quaiylSyrjey = getManual(args, {"thie_heose", "quaiyl_syrjey"})
local quaiylInshley = getManual(args, {"thie_heese", "quaiyl_s'inshley", "quaiyl_sinshley"})
local quaiylRef = getManual(args, {"imraa_çhionnal", "imraa_quaiyl"})
local quaiylNote = getManual(args, {"noteyn_çhionnal", "noteyn_quaiyl"})
local quaiylQid = nil
if not quaiyl then
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false, nil, nil, true)
end
end
if not quaiylSyrjey or not quaiylInshley then
local legislatureQid = quaiylQid or getWdRawPropertyId("P194")
if legislatureQid then
local wdUpper, wdLower = getWdChambers(legislatureQid)
if not quaiylSyrjey then quaiylSyrjey = wdUpper end
if not quaiylInshley then quaiylInshley = wdLower end
end
end
if quaiyl and not isNone(quaiyl) then
local houseItems = {}
if quaiylSyrjey and not isNone(quaiylSyrjey) then
table.insert(houseItems, {"[[Thie heose]]", quaiylSyrjey})
end
if quaiylInshley and not isNone(quaiylInshley) then
table.insert(houseItems, {"[[Thie heese]]", quaiylInshley})
end
local quaiylClass = (#houseItems > 0) and "mergedtoprow" or ""
table.insert(quaiylRows, string.format(ROW, trClass(quaiylClass), "[[Çhionnal slattyssagh]]", applyRefNote(quaiyl, quaiylRef, quaiylNote, frame)))
appendIndentRun(quaiylRows, houseItems)
end
local foundingLabel = getManual(args, {"sorçh_kionedeeaght", "sorçh_kiondeeaght"}) or "Bunneeaght"
local foundingValue = getManual(args, {"bunnit"})
local foundingQualifier = getManual(args, {"note_kionedeeaght", "note_kiondeeaght"})
local foundingFootnote = getManual(args, {"noteyn_kionedeeaght", "noteyn_kiondeeaght"})
local foundingRef = getManual(args, {"imraa_kionedeeaght", "imraa_kiondeeaght"})
local function foundingLabelWithQualifier(label)
local linked = wikilinkLabel(label)
if foundingQualifier and foundingQualifier ~= "" then
return linked .. ' <span style="font-weight:normal;">' .. foundingQualifier .. '</span>'
end
return linked
end
local establishmentRows = {}
for i = 1, 9 do
local event = getManual(args, {"taghyrt_bunneeaght" .. i, "taghyrt" .. i .. "_bunnit"})
local date = getManual(args, {"date_bunneeaght" .. i, "date" .. i .. "_bunnit"})
if event then
table.insert(establishmentRows, {event, date or ""})
end
end
if foundingValue or #establishmentRows > 0 then
if foundingValue and not isNone(foundingValue) then
local foundingClass = (#establishmentRows > 0) and "mergedtoprow" or ""
table.insert(foundingRows, string.format(ROW, trClass(foundingClass), foundingLabelWithQualifier(foundingLabel), applyRefNote(foundingValue, foundingRef, foundingFootnote, frame)))
elseif #establishmentRows > 0 then
local headerLabel = applyRefNote(foundingLabelWithQualifier(foundingLabel), foundingRef, foundingFootnote, frame)
table.insert(foundingRows, string.format(HEADER, headerLabel))
end
appendIndentRun(foundingRows, establishmentRows, true)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when unset (not none).
local inception = getWdProperty("P571")
if inception and inception:find(" (Joolagh)", 1, true) then
inception = inception:gsub(" %(Joolagh%)", " (" .. getJulianCalendarSuffixLink() .. ")", 1)
end
if inception then
table.insert(foundingRows, string.format(ROW, "", foundingLabelWithQualifier(foundingLabel), applyRefNote(inception, foundingRef, foundingFootnote, frame)))
end
end
local aarheynnRows = {}
if aarheynnOK and Aarheynn and Aarheynn.main then
local okAarheynn, resultAarheynn = pcall(Aarheynn.main, frame, args)
if okAarheynn and resultAarheynn then aarheynnRows = resultAarheynn end
end
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, aarheynnRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
1pyvytpsq9csezar0wnmmdb7pgryxj6
394583
394576
2026-10-17T00:55:36Z
MacTire02
219
++
394583
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module (replaces Module:WikidataIB).
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated forms, e.g. Mannin -> Vannin.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Manx-label-or-linked-Wikidata-fallback helper; last rung of getWdItemManxLink.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local aarheynnOK, Aarheynn = pcall(require, "Module:Kishtey fys çheer/aarheynn")
-- Returns the first non-empty manual parameter from a list of names.
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Shared innards of getWdProperty/getWdPropertyWithCitation.
local function getWdPropertyRaw(property, flags, includeReference)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(flags or {}) do table.insert(callArgs, f) end
if includeReference then table.insert(callArgs, "reference") end
table.insert(callArgs, "best") -- single best-ranked value
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
local function getWdPropertyWithCitation(property, flags)
local base = getWdPropertyRaw(property, flags, false)
if not base then return nil, nil end
local withRef = getWdPropertyRaw(property, flags, true)
if not withRef or withRef == base then return base, nil end
if withRef:sub(1, #base) == base then
local citation = withRef:sub(#base + 1)
if citation ~= "" then return base, citation end
return base, nil
end
return withRef, nil
end
local function ensureLinked(value)
if not value or value == "" then return value end
local label, refSuffix = value:match("^(.-)(<ref.*)$")
if not label then
label = value
refSuffix = ""
end
if label:find("%[%[") or label:match("^%[https?://") then
return value
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY (e.g. P35 -> "head of state"), title
-- fallback. getLabelByLang avoids leaking an English fallback.
local function getWikidataPropertyLabel(property)
local ok, label = pcall(mw.wikibase.getLabelByLang, property, "gv")
if ok and label and label ~= "" then return label end
return nil
end
-- Raw QID of an entity-valued property on the current page's own item.
local function getWdRawPropertyId(property, extraFlags)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, "best")
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawPropertyIds(property, extraFlags)
if not wdOK or not Wd or not Wd._properties then return {} end
local callArgs = {"raw"}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, property)
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
local function getWdQualifierRawId(property, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdQualifierRawIdForValue(property, valueQid, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier or not valueQid then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, valueQid, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawForeignPropertyIds(eid, property, extraFlags, qualifiers)
if not wdOK or not Wd or not Wd._properties or not eid then return {} end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, property)
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
for qid, value in pairs(qualifiers or {}) do
callArgs[qid] = value
end
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- QID of the Wikidata item connected to the current page.
local function getCurrentCountryQid()
local ok, id = pcall(mw.wikibase.getEntityIdForCurrentPage)
if ok and id and id ~= "" then return id end
return nil
end
local function getCurrentCountryGenitive()
if not enmynOK or not EnmynCheerey or not EnmynCheerey.genitive then return nil end
local okTitle, title = pcall(function() return mw.title.getCurrentTitle().text end)
if not okTitle or not title or title == "" then return nil end
local okGen, genitive = pcall(EnmynCheerey.genitive, title)
if okGen and genitive and genitive ~= "" then return genitive end
return nil
end
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
["Ree ny Belgee"] = true,
["Benrein ny Belgee"] = true,
-- Togo's head of government is titled "President of the Council of
-- Ministers" (no separate Prime Minister); "ny Shirveishee" here is
-- part of the office's own fixed name, not a country-genitive suffix,
-- so the " ny " token-split rung below must not fire on it.
["Eaghtyrane Choonseil ny Shirveishee"] = true,
}
local function stripCountryGenitiveSuffix(text, countryGenitive)
if not text or not countryGenitive then return nil end
local suffix = " " .. countryGenitive
if #text > #suffix and text:sub(-#suffix) == suffix then
return text:sub(1, #text - #suffix)
end
local bareNoun = countryGenitive:match("^yn%s+(.+)$") or countryGenitive:match("^y%s+(.+)$")
if bareNoun and bareNoun ~= "" then
local suffix2 = " " .. bareNoun
if #text > #suffix2 and text:sub(-#suffix2) == suffix2 then
local remainder = text:sub(1, #text - #suffix2)
if remainder:sub(-3) == " yn" then
return remainder:sub(1, #remainder - 3)
elseif remainder:sub(-2) == " y" then
return remainder:sub(1, #remainder - 2)
end
return remainder
end
end
return nil
end
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(title, countryGenitive)
if stripped then return stripped end
local short = title:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = title:match("^(.-)%syn%s")
if short and short ~= "" then return short end
-- "ny" is the plural/genitive connector (e.g. "Steatyn Unnaneysit" ->
-- "ny Steatyn Unnaneysit", "of the United States"). "%sy%s"/"%syn%s"
-- can never match "ny" (the character before "y" there is "n", not
-- whitespace), so this rung is purely additive, catching titles that
-- would otherwise fall through to the blind last-word rung below.
short = title:match("^(.-)%sny%s")
if short and short ~= "" then return short end
short = title:match("^(.+)%s%S+$")
if short and short ~= "" then return short end
return title
end
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(name, countryGenitive)
if stripped then return stripped end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%syn%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%sny%s")
if short and short ~= "" then return short end
return name
end
local function shortenLinkedCountryName(value)
if not value or value == "" then return value end
local main, refSuffix = value:match("^(.-)(<ref.*)$")
if not main then
main = value
refSuffix = ""
end
local target, display = main:match("^%[%[([^%[%]|]+)|([^%[%]|]+)%]%]$")
if not target then
target = main:match("^%[%[([^%[%]|]+)%]%]$")
display = target
end
if not target then return value end
local short = shortenCountrySuffixedName(display)
if short ~= display then
return "[[" .. target .. "|" .. short .. "]]" .. refSuffix
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("]]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
local function getWdItemManxLink(qid, shorten, capitalize, forceRedlink, preferExternalForLabel)
if not qid then return nil end
if capitalize == nil then capitalize = true end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if okLabel and gvLabel and gvLabel ~= "" then
if capitalize then
gvLabel = wikiUcfirst(gvLabel)
end
else
gvLabel = nil
end
if not sitelinkTitle and not gvLabel then
if forceRedlink then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, _, _, rawLabel = pcall(EnnymWd.labelWithFallback, qid)
if ok and rawLabel and rawLabel ~= "" then
return "[[" .. wikiUcfirst(mw.text.nowiki(rawLabel)) .. "]]"
end
end
return nil
end
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
-- No gv sitelink yet: this item has no article of its own, so a
-- same-named wikilink would redlink to a GENERIC title (e.g. "Çhionnal
-- ashoonagh"/"National Assembly") that many unrelated countries'
-- legislative bodies share via an identical gv label. Creating that one
-- shared article later would wrongly merge every one of those distinct
-- bodies into it. preferExternalForLabel routes around that: link
-- straight to THIS item on Wikidata instead, which is always specific
-- to one body no matter how many others carry the same label.
if not sitelinkTitle and preferExternalForLabel then
local display = (shorten == false) and gvLabel or shortManxForm(gvLabel)
return "[https://www.wikidata.org/wiki/" .. qid .. " " .. display .. "]"
end
local target = sitelinkTitle or gvLabel
local displayBase = gvLabel or sitelinkTitle
if shorten == false then
if target == displayBase then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. displayBase .. "]]"
end
local short = shortManxForm(displayBase)
if short ~= target then
return "[[" .. target .. "|" .. short .. "]]"
end
return "[[" .. target .. "]]"
end
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdOfficeItemTitle, but the office property is read off a
-- FOREIGN entity (eid) rather than the current page's own item -- needed
-- for US territories, whose own Wikidata item never carries a P1906/P35
-- of its own; the office has to be resolved off the United States' item
-- (Q30) instead.
local function getWdForeignOfficeItemTitle(eid, officeProperty)
local officeQid = getWdRawForeignPropertyIds(eid, officeProperty, {"best"})[1]
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
local function getWdPositionTitleForPerson(personQid)
if not personQid then return nil end
local countryQid = getCurrentCountryQid()
local candidates = {}
if countryQid then
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"}, {["P1001"] = countryQid})) do
table.insert(candidates, id)
end
end
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"})) do
table.insert(candidates, id)
end
local tried = {}
for _, qid in ipairs(candidates) do
if not tried[qid] then
tried[qid] = true
local link = getWdItemManxLink(qid)
if link then return link end
end
end
return nil
end
local function getWdPositionTitle(headProperty)
return getWdPositionTitleForPerson(getWdRawPropertyId(headProperty))
end
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
local CLASS_WALK_DEPTH = 3
local function classReaches(classQid, targetQid, depth, seen)
if classQid == targetQid then return true end
if depth <= 0 then return false end
seen = seen or {}
if seen[classQid] then return false end
seen[classQid] = true
for _, superQid in ipairs(getWdRawForeignPropertyIds(classQid, "P279")) do
if classReaches(superQid, targetQid, depth - 1, seen) then return true end
end
return false
end
local function getWdChambers(legislatureQid)
if not legislatureQid then return nil, nil end
local partQids = getWdRawForeignPropertyIds(legislatureQid, "P527")
local upperQid, lowerQid = nil, nil
local upperAmbiguous, lowerAmbiguous = false, false
for _, partQid in ipairs(partQids) do
local isUpper, isLower = false, false
for _, classQid in ipairs(getWdRawForeignPropertyIds(partQid, "P31")) do
if classQid == UPPER_HOUSE_QID or classReaches(classQid, UPPER_HOUSE_QID, CLASS_WALK_DEPTH) then
isUpper = true
elseif classQid == LOWER_HOUSE_QID or classReaches(classQid, LOWER_HOUSE_QID, CLASS_WALK_DEPTH) then
isLower = true
end
end
if isUpper then
if upperQid and upperQid ~= partQid then upperAmbiguous = true end
upperQid = partQid
end
if isLower then
if lowerQid and lowerQid ~= partQid then lowerAmbiguous = true end
lowerQid = partQid
end
end
local upperLink = (upperQid and not upperAmbiguous) and getWdItemManxLink(upperQid, false, nil, nil, true) or nil
local lowerLink = (lowerQid and not lowerAmbiguous) and getWdItemManxLink(lowerQid, false, nil, nil, true) or nil
return upperLink, lowerLink
end
local JULIAN_CALENDAR_QID = "Q1985786"
local function getJulianCalendarSuffixLink()
local link = getWdItemManxLink(JULIAN_CALENDAR_QID, false)
if link then
local target = link:match("^%[%[([^%[%]|]+)") or link:match("^%[%[([^%[%]|]+)%]%]$")
if target then
return "[[" .. target .. "|Joolagh]]"
end
return link
end
return "Joolagh"
end
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW_WRAP = '<tr%s><th style="vertical-align:top; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
-- Builds a class="..." attribute, or an empty string.
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
local function appendIndentRun(rows, items, wrap)
local template = wrap and SUBROW_WRAP or SUBROW
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(template, trClass(class), item[1], item[2]))
end
end
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
function p.main(frame, args)
-- Allow being called as p.main(args) with no frame (used by tests).
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
local govRows = {}
local quaiylRows = {}
local foundingRows = {}
local govTypeRaw = getManual(args, {"sorçh_reiltys", "government_type"})
local govRef = getManual(args, {"imraa_reiltys"})
local govNote = getManual(args, {"noteyn_reiltys"})
if not govTypeRaw then
local govTypeQids = getWdRawPropertyIds("P122")
local govTypeParts = {}
for _, qid in ipairs(govTypeQids) do
local link = getWdItemManxLink(qid, false, false)
if link then table.insert(govTypeParts, link) end
end
if #govTypeParts > 0 then
govTypeRaw = capitalizeFirstLetter(table.concat(govTypeParts, ", "))
end
end
local govShown = govTypeRaw and not isNone(govTypeRaw)
local leaderPairs = {}
local manualLeaderGiven = false
for i = 1, 5 do
local title = getManual(args, {"enmys_toshiagh" .. i, "enmys" .. i .. "_fer-toshee"})
local name = getManual(args, {"ennym_toshiagh" .. i, "ennym" .. i .. "_fer-toshee"})
if title or name then
manualLeaderGiven = true
if not isNone(name) then
table.insert(leaderPairs, {title = title or "", name = name or ""})
end
end
end
local leaderRef = getManual(args, {"imraa_toshiagh", "imraa_fer-toshee"})
local leaderNote = getManual(args, {"noteyn_toshiagh", "noteyn_fer-toshee"})
local leadersSuppressed = isNone(getManual(args, {"fir_hoshee", "toshiaghyn"}))
local function resolvePersonName(qid)
if not qid then return nil end
return shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
end
local councillors = {}
for i = 1, 7 do
local name = getManual(args, {"ennym_coonseilagh" .. i})
if name and not isNone(name) then
table.insert(councillors, {slot = i, name = name})
end
end
local manualCouncillorsGiven = #councillors > 0
local swissBodyQid = getWdRawPropertyId("P35") or getWdRawPropertyId("P6")
local isSwissFederalCouncil = swissBodyQid == "Q30917"
if (manualCouncillorsGiven or isSwissFederalCouncil) and not leadersSuppressed then
manualLeaderGiven = true
local presidentAnnotation = ' ([[Eaghtyrane Chochiangle yn Elveeish|Eaghtyrane]])'
local vpAnnotation = ' ([[Lhiass-eaghtyrane yn Elveeish|Lhiass-eaghtyrane]])'
local nameLines = {}
local chancellor = nil
if manualCouncillorsGiven then
local presidentSlot = tonumber(getManual(args, {"eaghtyrane_coonseilagh"}))
local vicePresidentSlot = tonumber(getManual(args, {"lhiass-eaghtyrane_coonseilagh"}))
for _, entry in ipairs(councillors) do
local line = entry.name
if presidentSlot and entry.slot == presidentSlot then
line = line .. presidentAnnotation
elseif vicePresidentSlot and entry.slot == vicePresidentSlot then
line = line .. vpAnnotation
end
table.insert(nameLines, line)
end
chancellor = getManual(args, {"shansyleyr_conastagh"})
else
local presidentOverride = getManual(args, {"eaghtyrane_coonseilagh"})
local vpOverride = getManual(args, {"lhiass-eaghtyrane_coonseilagh"})
local chancellorOverride = getManual(args, {"shansyleyr_conastagh"})
local councillorQids = getWdRawForeignPropertyIds("Q30917", "P3320", {"best", "current"})
local presidentQid = not isNone(presidentOverride) and getWdRawForeignPropertyIds("Q688230", "P1308", {"best"})[1] or nil
local vpQid = not isNone(vpOverride) and getWdRawForeignPropertyIds("Q25550811", "P1308", {"best"})[1] or nil
for _, qid in ipairs(councillorQids) do
local name = resolvePersonName(qid)
if name then
if qid == presidentQid then
name = name .. presidentAnnotation
elseif qid == vpQid then
name = name .. vpAnnotation
end
table.insert(nameLines, name)
end
end
if chancellorOverride and not isNone(chancellorOverride) then
chancellor = chancellorOverride
elseif not isNone(chancellorOverride) then
local chancellorQid = getWdRawForeignPropertyIds("Q687810", "P1308", {"best"})[1]
chancellor = resolvePersonName(chancellorQid)
end
end
if #nameLines > 0 then
table.insert(leaderPairs, {
title = '[[Coonseil Chonastagh yn Elveeish|Coonseilee Chonastagh]]',
name = table.concat(nameLines, '<br/>'),
})
end
if chancellor and chancellor ~= "" then
table.insert(leaderPairs, {
title = '[[Shansyleyr yn Elveeish|Shansyleyr Conastagh]]',
name = chancellor,
})
end
end
local function isSanMarinoPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "San Marino"
end
local function isNorthernIrelandPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nerin Hwoaie"
end
local function isNicaraguaPage()
if getCurrentCountryQid() == "Q811" then return true end
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nickeraag"
end
-- US unincorporated territories: the President of the United States is
-- each territory's head of state, but this is never recorded on the
-- territory's own Wikidata item (it carries only "instance of"
-- classification statements, no P35). The President has to be fetched
-- off the United States' own item (Q30) instead -- same foreign-entity
-- pattern as Nicaragua's co-presidents and Northern Ireland's Deputy
-- First Minister above. Detected by an explicit page-title list
-- (matching the San Marino/Northern Ireland convention).
local US_QID = "Q30"
local usTerritoryTitles = {
["Yn Phurt Verçhagh"] = true, -- Puerto Rico
["Guam"] = true, -- Guam
["Ellanyn Americaanagh y Voidyn"] = true, -- US Virgin Islands
["Samoa Americaanagh"] = true, -- American Samoa
}
local function isUSTerritoryPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title ~= nil and usTerritoryTitles[title] == true
end
local sanMarinoCaptains = {}
for i = 1, 2 do
local name = getManual(args, {"ennym_captan_reiree" .. i})
if name and not isNone(name) then
table.insert(sanMarinoCaptains, name)
end
end
local manualSanMarinoGiven = #sanMarinoCaptains > 0
if (manualSanMarinoGiven or isSanMarinoPage()) and not leadersSuppressed and not manualLeaderGiven then
manualLeaderGiven = true
local nameLines = {}
if manualSanMarinoGiven then
nameLines = sanMarinoCaptains
else
local captainQids = getWdRawPropertyIds("P35", {"best", "current"})
for _, qid in ipairs(captainQids) do
local name = resolvePersonName(qid)
if name then table.insert(nameLines, name) end
end
end
if #nameLines > 0 then
local title = getManual(args, {"sorçh_kione_steat"}) or '[[Captanyn Reiree]]'
table.insert(leaderPairs, {
title = title,
name = table.concat(nameLines, '<br/>'),
})
end
end
if not manualLeaderGiven and not leadersSuppressed then
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
-- "current" matters here, not just "best": a country whose P6
-- (head of government) statements have no preferred rank at all
-- (several past/present holders tied at normal rank) would
-- otherwise let Module:Wd's singular _property command return an
-- arbitrary past holder, with no way to break the tie
-- chronologically.
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked", "current"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6", {"current"})
-- No P6 on the item: take the holder (P1308) of the office item named by
-- P1313, or of a known office for countries that lack both.
local hogFallbackTitle = nil
if not hog and not isNone(getManual(args, {"sorçh_kione_reiltys"})) then
local HOG_OFFICE_FALLBACK = {
Q9648 = { office = "Q3064699", manx = "[[Ard-heckter ny Malveenaghyn]]" }, -- Falkland Islands
}
local known = HOG_OFFICE_FALLBACK[getCurrentCountryQid() or ""]
local officeQid = getWdRawPropertyId("P1313") or (known and known.office)
if officeQid then
local holderQid = getWdRawForeignPropertyIds(officeQid, "P1308", {"best", "current"})[1]
local holderName = holderQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(holderQid, false, nil, true))) or nil
if holderName then
hog, hogQid = holderName, holderQid
hogFallbackTitle = getWdItemManxLink(officeQid) or (known and known.office == officeQid and known.manx) or nil
end
end
end
if isNicaraguaPage() then
-- Nicaragua is a diarchy: two co-presidents, listed on Wikidata not
-- as the country's own P35/P6 statements but as P1308 ("position
-- holder") values on the "President of Nicaragua" OFFICE item
-- itself (Q852448) -- same foreign-entity pattern as Northern
-- Ireland's Deputy First Minister and Switzerland's councillors
-- above. "best" and "current" are independent Wd flags, both
-- needed to get exactly the presently-serving co-presidents.
local presidentQids = getWdRawForeignPropertyIds("Q852448", "P1308", {"best", "current"})
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local sameHeadOfStateAndGovernment = false
local presidentNames = {}
for _, qid in ipairs(presidentQids) do
local name = ensureLinked(getWdItemManxLink(qid, false, nil, true))
if name then
table.insert(leaderPairs, {title = presidentTitle, name = name})
end
if name then table.insert(presidentNames, name) end
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
if #presidentNames > 0 then
table.insert(leaderPairs, {
title = presidentTitle,
name = table.concat(presidentNames, '<br/>'),
})
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or hogFallbackTitle
or getWdOfficeItemTitle("P1313")
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
elseif #hosQids > 1 then
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
local officeQids = getWdRawPropertyIds("P1906")
local pairsBuilt = 0
if #officeQids > 1 then
for _, officeQid in ipairs(officeQids) do
local personQid = getWdQualifierRawIdForValue("P1906", officeQid, "P1308")
local name = personQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(personQid, false, nil, true))) or nil
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink(officeQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
pairsBuilt = pairsBuilt + 1
end
end
end
if pairsBuilt == 0 then
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
end
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or hogFallbackTitle
or getWdOfficeItemTitle("P1313") -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
else
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked", "current"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hosQid = getWdRawPropertyId("P35", {"current"})
-- Some countries (e.g. Benin since 2016) have literally merged
-- the head-of-state and head-of-government OFFICES into one:
-- "office held by head of state" (P1906) and "office held by
-- head of government" (P1313) both resolve to the same item.
-- Comparing only the PEOPLE (hosQid == hogQid) isn't enough --
-- a merged-office country's P6 statement can be stale (left
-- over from before the merge) and resolve to the wrong person
-- -- so the OFFICES themselves are compared too, not just the
-- people.
local hosOfficeQid = getWdRawPropertyId("P1906")
local hogOfficeQid = getWdRawPropertyId("P1313")
local sameOffice = hosOfficeQid and hogOfficeQid and hosOfficeQid == hogOfficeQid
local sameHeadOfStateAndGovernment = sameOffice
or (hos and hog and hosQid and hogQid and hosQid == hogQid)
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or (hosOfficeQid and getWdItemManxLink(hosOfficeQid)) -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
if not isNone(getManual(args, {"ynnydee_kione_steat"})) then
local proxyOfficeQid = getWdQualifierRawId("P35", "P1393")
if proxyOfficeQid then
local proxyPersonIds = getWdRawForeignPropertyIds(proxyOfficeQid, "P1308", {"best"})
local proxyPersonQid = proxyPersonIds[1]
local proxyName = proxyPersonQid and ensureLinked(getWdItemManxLink(proxyPersonQid, false, nil, true)) or nil
if proxyName then
local proxyTitle = getManual(args, {"sorçh_ynnydee"})
or getWdItemManxLink(proxyOfficeQid)
or "Ynnydee"
table.insert(leaderPairs, {title = proxyTitle, name = proxyName})
end
end
end
elseif isUSTerritoryPage() then
-- No P35 at all on the territory's own item -- fetch the
-- sitting President straight off the United States' own
-- item (Q30) instead. Title priority mirrors every other
-- country's head-of-state title, just sourced from Q30.
local presidentQid = getWdRawForeignPropertyIds(US_QID, "P35", {"best", "current"})[1]
local presidentName = resolvePersonName(presidentQid)
if presidentName then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdForeignOfficeItemTitle(US_QID, "P1906")
or getWdPositionTitleForPerson(presidentQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = presidentTitle, name = presidentName})
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or (hogOfficeQid and getWdItemManxLink(hogOfficeQid)) -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
if isNorthernIrelandPage() then
local dfmPersonQid = getWdRawForeignPropertyIds("Q11954685", "P1308", {"best"})[1]
local dfmName = dfmPersonQid and ensureLinked(getWdItemManxLink(dfmPersonQid, false, nil, true)) or nil
local dfmTitle = getWdItemManxLink("Q11954685")
if dfmName and dfmTitle then
table.insert(leaderPairs, {title = dfmTitle, name = dfmName})
end
end
end
end
end
local reiltysLabel = getGenitiveLinkedLabel("Reiltys")
if govShown then
local govClass = (#leaderPairs > 0) and "mergedtoprow" or ""
table.insert(govRows, string.format(ROW, trClass(govClass), reiltysLabel, applyRefNote(govTypeRaw, govRef, govNote, frame)))
elseif #leaderPairs > 0 then
table.insert(govRows, string.format(HEADER, reiltysLabel))
end
if isNicaraguaPage() and #leaderPairs > 1 then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local combinedNames, seenNames = {}, {}
local firstPresidentIndex = nil
local filteredLeaderPairs = {}
for _, leader in ipairs(leaderPairs) do
if leader.title == presidentTitle then
if not firstPresidentIndex then firstPresidentIndex = #filteredLeaderPairs + 1 end
local remaining = leader.name or ""
while true do
local name, rest = remaining:match("^(.-)<br%s*/>(.*)$")
if not name then name = remaining end
name = mw.text.trim(name)
if name ~= "" and not seenNames[name] then
seenNames[name] = true
table.insert(combinedNames, name)
end
if not rest then break end
remaining = rest
end
else
table.insert(filteredLeaderPairs, leader)
end
end
if firstPresidentIndex and #combinedNames > 0 then
table.insert(filteredLeaderPairs, firstPresidentIndex, {
title = presidentTitle,
name = table.concat(combinedNames, "<br/>"),
})
leaderPairs = filteredLeaderPairs
end
end
if #leaderPairs > 0 then
local last = leaderPairs[#leaderPairs]
last.name = applyRefNote(last.name, leaderRef, leaderNote, frame)
local items = {}
for _, leader in ipairs(leaderPairs) do
table.insert(items, {leader.title, leader.name})
end
appendIndentRun(govRows, items, true)
end
local quaiyl = getManual(args, {"çhionnal", "quaiyl"})
local quaiylSyrjey = getManual(args, {"thie_heose", "quaiyl_syrjey"})
local quaiylInshley = getManual(args, {"thie_heese", "quaiyl_s'inshley", "quaiyl_sinshley"})
local quaiylRef = getManual(args, {"imraa_çhionnal", "imraa_quaiyl"})
local quaiylNote = getManual(args, {"noteyn_çhionnal", "noteyn_quaiyl"})
local quaiylQid = nil
if not quaiyl then
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false, nil, nil, true)
end
end
if not quaiylSyrjey or not quaiylInshley then
local legislatureQid = quaiylQid or getWdRawPropertyId("P194")
if legislatureQid then
local wdUpper, wdLower = getWdChambers(legislatureQid)
if not quaiylSyrjey then quaiylSyrjey = wdUpper end
if not quaiylInshley then quaiylInshley = wdLower end
end
end
if quaiyl and not isNone(quaiyl) then
local houseItems = {}
if quaiylSyrjey and not isNone(quaiylSyrjey) then
table.insert(houseItems, {"[[Thie heose]]", quaiylSyrjey})
end
if quaiylInshley and not isNone(quaiylInshley) then
table.insert(houseItems, {"[[Thie heese]]", quaiylInshley})
end
local quaiylClass = (#houseItems > 0) and "mergedtoprow" or ""
table.insert(quaiylRows, string.format(ROW, trClass(quaiylClass), "[[Çhionnal slattyssagh]]", applyRefNote(quaiyl, quaiylRef, quaiylNote, frame)))
appendIndentRun(quaiylRows, houseItems)
end
local foundingLabel = getManual(args, {"sorçh_kionedeeaght", "sorçh_kiondeeaght"}) or "Bunneeaght"
local foundingValue = getManual(args, {"bunnit"})
local foundingQualifier = getManual(args, {"note_kionedeeaght", "note_kiondeeaght"})
local foundingFootnote = getManual(args, {"noteyn_kionedeeaght", "noteyn_kiondeeaght"})
local foundingRef = getManual(args, {"imraa_kionedeeaght", "imraa_kiondeeaght"})
local function foundingLabelWithQualifier(label)
local linked = wikilinkLabel(label)
if foundingQualifier and foundingQualifier ~= "" then
return linked .. ' <span style="font-weight:normal;">' .. foundingQualifier .. '</span>'
end
return linked
end
local establishmentRows = {}
for i = 1, 9 do
local event = getManual(args, {"taghyrt_bunneeaght" .. i, "taghyrt" .. i .. "_bunnit"})
local date = getManual(args, {"date_bunneeaght" .. i, "date" .. i .. "_bunnit"})
if event then
table.insert(establishmentRows, {event, date or ""})
end
end
if foundingValue or #establishmentRows > 0 then
if foundingValue and not isNone(foundingValue) then
local foundingClass = (#establishmentRows > 0) and "mergedtoprow" or ""
table.insert(foundingRows, string.format(ROW, trClass(foundingClass), foundingLabelWithQualifier(foundingLabel), applyRefNote(foundingValue, foundingRef, foundingFootnote, frame)))
elseif #establishmentRows > 0 then
local headerLabel = applyRefNote(foundingLabelWithQualifier(foundingLabel), foundingRef, foundingFootnote, frame)
table.insert(foundingRows, string.format(HEADER, headerLabel))
end
appendIndentRun(foundingRows, establishmentRows, true)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when unset (not none).
local inception = getWdProperty("P571")
if inception and inception:find(" (Joolagh)", 1, true) then
inception = inception:gsub(" %(Joolagh%)", " (" .. getJulianCalendarSuffixLink() .. ")", 1)
end
if inception then
table.insert(foundingRows, string.format(ROW, "", foundingLabelWithQualifier(foundingLabel), applyRefNote(inception, foundingRef, foundingFootnote, frame)))
end
end
local aarheynnRows = {}
if aarheynnOK and Aarheynn and Aarheynn.main then
local okAarheynn, resultAarheynn = pcall(Aarheynn.main, frame, args)
if okAarheynn and resultAarheynn then aarheynnRows = resultAarheynn end
end
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, aarheynnRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
58r08tre72aic9lj3m633flqiyqc41a
394623
394583
2026-10-17T04:42:41Z
MacTire02
219
earroo ny taghyrtyn
394623
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module (replaces Module:WikidataIB).
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated forms, e.g. Mannin -> Vannin.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Manx-label-or-linked-Wikidata-fallback helper; last rung of getWdItemManxLink.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local aarheynnOK, Aarheynn = pcall(require, "Module:Kishtey fys çheer/aarheynn")
-- Returns the first non-empty manual parameter from a list of names.
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Shared innards of getWdProperty/getWdPropertyWithCitation.
local function getWdPropertyRaw(property, flags, includeReference)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(flags or {}) do table.insert(callArgs, f) end
if includeReference then table.insert(callArgs, "reference") end
table.insert(callArgs, "best") -- single best-ranked value
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
local function getWdPropertyWithCitation(property, flags)
local base = getWdPropertyRaw(property, flags, false)
if not base then return nil, nil end
local withRef = getWdPropertyRaw(property, flags, true)
if not withRef or withRef == base then return base, nil end
if withRef:sub(1, #base) == base then
local citation = withRef:sub(#base + 1)
if citation ~= "" then return base, citation end
return base, nil
end
return withRef, nil
end
local function ensureLinked(value)
if not value or value == "" then return value end
local label, refSuffix = value:match("^(.-)(<ref.*)$")
if not label then
label = value
refSuffix = ""
end
if label:find("%[%[") or label:match("^%[https?://") then
return value
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY (e.g. P35 -> "head of state"), title
-- fallback. getLabelByLang avoids leaking an English fallback.
local function getWikidataPropertyLabel(property)
local ok, label = pcall(mw.wikibase.getLabelByLang, property, "gv")
if ok and label and label ~= "" then return label end
return nil
end
-- Raw QID of an entity-valued property on the current page's own item.
local function getWdRawPropertyId(property, extraFlags)
if not wdOK or not Wd or not Wd._property then return nil end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, "best")
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawPropertyIds(property, extraFlags)
if not wdOK or not Wd or not Wd._properties then return {} end
local callArgs = {"raw"}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, property)
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
local function getWdQualifierRawId(property, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdQualifierRawIdForValue(property, valueQid, qualifierProperty)
if not wdOK or not Wd or not Wd._qualifier or not valueQid then return nil end
local ok, result = pcall(Wd._qualifier, {"raw", "best", property, valueQid, qualifierProperty})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function getWdRawForeignPropertyIds(eid, property, extraFlags, qualifiers)
if not wdOK or not Wd or not Wd._properties or not eid then return {} end
local callArgs = {}
for _, f in ipairs(extraFlags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "raw")
table.insert(callArgs, property)
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
for qid, value in pairs(qualifiers or {}) do
callArgs[qid] = value
end
local ok, result = pcall(Wd._properties, callArgs)
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- QID of the Wikidata item connected to the current page.
local function getCurrentCountryQid()
local ok, id = pcall(mw.wikibase.getEntityIdForCurrentPage)
if ok and id and id ~= "" then return id end
return nil
end
local function getCurrentCountryGenitive()
if not enmynOK or not EnmynCheerey or not EnmynCheerey.genitive then return nil end
local okTitle, title = pcall(function() return mw.title.getCurrentTitle().text end)
if not okTitle or not title or title == "" then return nil end
local okGen, genitive = pcall(EnmynCheerey.genitive, title)
if okGen and genitive and genitive ~= "" then return genitive end
return nil
end
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
["Ree ny Belgee"] = true,
["Benrein ny Belgee"] = true,
-- Togo's head of government is titled "President of the Council of Ministers"
["Eaghtyrane Choonseil ny Shirveishee"] = true,
}
local function stripCountryGenitiveSuffix(text, countryGenitive)
if not text or not countryGenitive then return nil end
local suffix = " " .. countryGenitive
if #text > #suffix and text:sub(-#suffix) == suffix then
return text:sub(1, #text - #suffix)
end
local bareNoun = countryGenitive:match("^yn%s+(.+)$") or countryGenitive:match("^y%s+(.+)$")
if bareNoun and bareNoun ~= "" then
local suffix2 = " " .. bareNoun
if #text > #suffix2 and text:sub(-#suffix2) == suffix2 then
local remainder = text:sub(1, #text - #suffix2)
if remainder:sub(-3) == " yn" then
return remainder:sub(1, #remainder - 3)
elseif remainder:sub(-2) == " y" then
return remainder:sub(1, #remainder - 2)
end
return remainder
end
end
return nil
end
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(title, countryGenitive)
if stripped then return stripped end
local short = title:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = title:match("^(.-)%syn%s")
if short and short ~= "" then return short end
-- "ny" is the plural/genitive connector
short = title:match("^(.-)%sny%s")
if short and short ~= "" then return short end
short = title:match("^(.+)%s%S+$")
if short and short ~= "" then return short end
return title
end
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
local stripped = stripCountryGenitiveSuffix(name, countryGenitive)
if stripped then return stripped end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%syn%s")
if short and short ~= "" then return short end
short = name:match("^(.-)%sny%s")
if short and short ~= "" then return short end
return name
end
local function shortenLinkedCountryName(value)
if not value or value == "" then return value end
local main, refSuffix = value:match("^(.-)(<ref.*)$")
if not main then
main = value
refSuffix = ""
end
local target, display = main:match("^%[%[([^%[%]|]+)|([^%[%]|]+)%]%]$")
if not target then
target = main:match("^%[%[([^%[%]|]+)%]%]$")
display = target
end
if not target then return value end
local short = shortenCountrySuffixedName(display)
if short ~= display then
return "[[" .. target .. "|" .. short .. "]]" .. refSuffix
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("]]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
local function getWdItemManxLink(qid, shorten, capitalize, forceRedlink, preferExternalForLabel)
if not qid then return nil end
if capitalize == nil then capitalize = true end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if okLabel and gvLabel and gvLabel ~= "" then
if capitalize then
gvLabel = wikiUcfirst(gvLabel)
end
else
gvLabel = nil
end
if not sitelinkTitle and not gvLabel then
if forceRedlink then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, _, _, rawLabel = pcall(EnnymWd.labelWithFallback, qid)
if ok and rawLabel and rawLabel ~= "" then
return "[[" .. wikiUcfirst(mw.text.nowiki(rawLabel)) .. "]]"
end
end
return nil
end
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
-- No gv sitelink yet
if not sitelinkTitle and preferExternalForLabel then
local display = (shorten == false) and gvLabel or shortManxForm(gvLabel)
return "[https://www.wikidata.org/wiki/" .. qid .. " " .. display .. "]"
end
local target = sitelinkTitle or gvLabel
local displayBase = gvLabel or sitelinkTitle
if shorten == false then
if target == displayBase then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. displayBase .. "]]"
end
local short = shortManxForm(displayBase)
if short ~= target then
return "[[" .. target .. "|" .. short .. "]]"
end
return "[[" .. target .. "]]"
end
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdOfficeItemTitle, but the office property is read off a FOREIGN entity (eid) rather
local function getWdForeignOfficeItemTitle(eid, officeProperty)
local officeQid = getWdRawForeignPropertyIds(eid, officeProperty, {"best"})[1]
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
local function getWdPositionTitleForPerson(personQid)
if not personQid then return nil end
local countryQid = getCurrentCountryQid()
local candidates = {}
if countryQid then
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"}, {["P1001"] = countryQid})) do
table.insert(candidates, id)
end
end
for _, id in ipairs(getWdRawForeignPropertyIds(personQid, "P39", {"current"})) do
table.insert(candidates, id)
end
local tried = {}
for _, qid in ipairs(candidates) do
if not tried[qid] then
tried[qid] = true
local link = getWdItemManxLink(qid)
if link then return link end
end
end
return nil
end
local function getWdPositionTitle(headProperty)
return getWdPositionTitleForPerson(getWdRawPropertyId(headProperty))
end
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
local CLASS_WALK_DEPTH = 3
local function classReaches(classQid, targetQid, depth, seen)
if classQid == targetQid then return true end
if depth <= 0 then return false end
seen = seen or {}
if seen[classQid] then return false end
seen[classQid] = true
for _, superQid in ipairs(getWdRawForeignPropertyIds(classQid, "P279")) do
if classReaches(superQid, targetQid, depth - 1, seen) then return true end
end
return false
end
local function getWdChambers(legislatureQid)
if not legislatureQid then return nil, nil end
local partQids = getWdRawForeignPropertyIds(legislatureQid, "P527")
local upperQid, lowerQid = nil, nil
local upperAmbiguous, lowerAmbiguous = false, false
for _, partQid in ipairs(partQids) do
local isUpper, isLower = false, false
for _, classQid in ipairs(getWdRawForeignPropertyIds(partQid, "P31")) do
if classQid == UPPER_HOUSE_QID or classReaches(classQid, UPPER_HOUSE_QID, CLASS_WALK_DEPTH) then
isUpper = true
elseif classQid == LOWER_HOUSE_QID or classReaches(classQid, LOWER_HOUSE_QID, CLASS_WALK_DEPTH) then
isLower = true
end
end
if isUpper then
if upperQid and upperQid ~= partQid then upperAmbiguous = true end
upperQid = partQid
end
if isLower then
if lowerQid and lowerQid ~= partQid then lowerAmbiguous = true end
lowerQid = partQid
end
end
local upperLink = (upperQid and not upperAmbiguous) and getWdItemManxLink(upperQid, false, nil, nil, true) or nil
local lowerLink = (lowerQid and not lowerAmbiguous) and getWdItemManxLink(lowerQid, false, nil, nil, true) or nil
return upperLink, lowerLink
end
local JULIAN_CALENDAR_QID = "Q1985786"
local function getJulianCalendarSuffixLink()
local link = getWdItemManxLink(JULIAN_CALENDAR_QID, false)
if link then
local target = link:match("^%[%[([^%[%]|]+)") or link:match("^%[%[([^%[%]|]+)%]%]$")
if target then
return "[[" .. target .. "|Joolagh]]"
end
return link
end
return "Joolagh"
end
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW_WRAP = '<tr%s><th style="vertical-align:top; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
-- Builds a class="..." attribute, or an empty string.
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
local function appendIndentRun(rows, items, wrap)
local template = wrap and SUBROW_WRAP or SUBROW
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(template, trClass(class), item[1], item[2]))
end
end
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
function p.main(frame, args)
-- Allow being called as p.main(args) with no frame (used by tests).
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
local govRows = {}
local quaiylRows = {}
local foundingRows = {}
local govTypeRaw = getManual(args, {"sorçh_reiltys", "government_type"})
local govRef = getManual(args, {"imraa_reiltys"})
local govNote = getManual(args, {"noteyn_reiltys"})
if not govTypeRaw then
local govTypeQids = getWdRawPropertyIds("P122")
local govTypeParts = {}
for _, qid in ipairs(govTypeQids) do
local link = getWdItemManxLink(qid, false, false)
if link then table.insert(govTypeParts, link) end
end
if #govTypeParts > 0 then
govTypeRaw = capitalizeFirstLetter(table.concat(govTypeParts, ", "))
end
end
local govShown = govTypeRaw and not isNone(govTypeRaw)
local leaderPairs = {}
local manualLeaderGiven = false
for i = 1, 5 do
local title = getManual(args, {"enmys_toshiagh" .. i, "enmys" .. i .. "_fer-toshee"})
local name = getManual(args, {"ennym_toshiagh" .. i, "ennym" .. i .. "_fer-toshee"})
if title or name then
manualLeaderGiven = true
if not isNone(name) then
table.insert(leaderPairs, {title = title or "", name = name or ""})
end
end
end
local leaderRef = getManual(args, {"imraa_toshiagh", "imraa_fer-toshee"})
local leaderNote = getManual(args, {"noteyn_toshiagh", "noteyn_fer-toshee"})
local leadersSuppressed = isNone(getManual(args, {"fir_hoshee", "toshiaghyn"}))
local function resolvePersonName(qid)
if not qid then return nil end
return shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
end
local councillors = {}
for i = 1, 7 do
local name = getManual(args, {"ennym_coonseilagh" .. i})
if name and not isNone(name) then
table.insert(councillors, {slot = i, name = name})
end
end
local manualCouncillorsGiven = #councillors > 0
local swissBodyQid = getWdRawPropertyId("P35") or getWdRawPropertyId("P6")
local isSwissFederalCouncil = swissBodyQid == "Q30917"
if (manualCouncillorsGiven or isSwissFederalCouncil) and not leadersSuppressed then
manualLeaderGiven = true
local presidentAnnotation = ' ([[Eaghtyrane Chochiangle yn Elveeish|Eaghtyrane]])'
local vpAnnotation = ' ([[Lhiass-eaghtyrane yn Elveeish|Lhiass-eaghtyrane]])'
local nameLines = {}
local chancellor = nil
if manualCouncillorsGiven then
local presidentSlot = tonumber(getManual(args, {"eaghtyrane_coonseilagh"}))
local vicePresidentSlot = tonumber(getManual(args, {"lhiass-eaghtyrane_coonseilagh"}))
for _, entry in ipairs(councillors) do
local line = entry.name
if presidentSlot and entry.slot == presidentSlot then
line = line .. presidentAnnotation
elseif vicePresidentSlot and entry.slot == vicePresidentSlot then
line = line .. vpAnnotation
end
table.insert(nameLines, line)
end
chancellor = getManual(args, {"shansyleyr_conastagh"})
else
local presidentOverride = getManual(args, {"eaghtyrane_coonseilagh"})
local vpOverride = getManual(args, {"lhiass-eaghtyrane_coonseilagh"})
local chancellorOverride = getManual(args, {"shansyleyr_conastagh"})
local councillorQids = getWdRawForeignPropertyIds("Q30917", "P3320", {"best", "current"})
local presidentQid = not isNone(presidentOverride) and getWdRawForeignPropertyIds("Q688230", "P1308", {"best"})[1] or nil
local vpQid = not isNone(vpOverride) and getWdRawForeignPropertyIds("Q25550811", "P1308", {"best"})[1] or nil
for _, qid in ipairs(councillorQids) do
local name = resolvePersonName(qid)
if name then
if qid == presidentQid then
name = name .. presidentAnnotation
elseif qid == vpQid then
name = name .. vpAnnotation
end
table.insert(nameLines, name)
end
end
if chancellorOverride and not isNone(chancellorOverride) then
chancellor = chancellorOverride
elseif not isNone(chancellorOverride) then
local chancellorQid = getWdRawForeignPropertyIds("Q687810", "P1308", {"best"})[1]
chancellor = resolvePersonName(chancellorQid)
end
end
if #nameLines > 0 then
table.insert(leaderPairs, {
title = '[[Coonseil Chonastagh yn Elveeish|Coonseilee Chonastagh]]',
name = table.concat(nameLines, '<br/>'),
})
end
if chancellor and chancellor ~= "" then
table.insert(leaderPairs, {
title = '[[Shansyleyr yn Elveeish|Shansyleyr Conastagh]]',
name = chancellor,
})
end
end
local function isSanMarinoPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "San Marino"
end
local function isNorthernIrelandPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nerin Hwoaie"
end
local function isNicaraguaPage()
if getCurrentCountryQid() == "Q811" then return true end
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title == "Nickeraag"
end
-- US unincorporated territories
local US_QID = "Q30"
local usTerritoryTitles = {
["Yn Phurt Verçhagh"] = true, -- Puerto Rico
["Guam"] = true, -- Guam
["Ellanyn Americaanagh y Voidyn"] = true, -- US Virgin Islands
["Samoa Americaanagh"] = true, -- American Samoa
}
local function isUSTerritoryPage()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
return ok and title ~= nil and usTerritoryTitles[title] == true
end
local sanMarinoCaptains = {}
for i = 1, 2 do
local name = getManual(args, {"ennym_captan_reiree" .. i})
if name and not isNone(name) then
table.insert(sanMarinoCaptains, name)
end
end
local manualSanMarinoGiven = #sanMarinoCaptains > 0
if (manualSanMarinoGiven or isSanMarinoPage()) and not leadersSuppressed and not manualLeaderGiven then
manualLeaderGiven = true
local nameLines = {}
if manualSanMarinoGiven then
nameLines = sanMarinoCaptains
else
local captainQids = getWdRawPropertyIds("P35", {"best", "current"})
for _, qid in ipairs(captainQids) do
local name = resolvePersonName(qid)
if name then table.insert(nameLines, name) end
end
end
if #nameLines > 0 then
local title = getManual(args, {"sorçh_kione_steat"}) or '[[Captanyn Reiree]]'
table.insert(leaderPairs, {
title = title,
name = table.concat(nameLines, '<br/>'),
})
end
end
if not manualLeaderGiven and not leadersSuppressed then
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
-- "current" matters here, not just "best"
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked", "current"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6", {"current"})
-- No P6 on the item: take the holder (P1308) of the office item named by
-- P1313, or of a known office for countries that lack both.
local hogFallbackTitle = nil
if not hog and not isNone(getManual(args, {"sorçh_kione_reiltys"})) then
local HOG_OFFICE_FALLBACK = {
Q9648 = { office = "Q3064699", manx = "[[Ard-heckter ny Malveenaghyn]]" }, -- Falkland Islands
}
local known = HOG_OFFICE_FALLBACK[getCurrentCountryQid() or ""]
local officeQid = getWdRawPropertyId("P1313") or (known and known.office)
if officeQid then
local holderQid = getWdRawForeignPropertyIds(officeQid, "P1308", {"best", "current"})[1]
local holderName = holderQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(holderQid, false, nil, true))) or nil
if holderName then
hog, hogQid = holderName, holderQid
hogFallbackTitle = getWdItemManxLink(officeQid) or (known and known.office == officeQid and known.manx) or nil
end
end
end
if isNicaraguaPage() then
-- Nicaragua is a diarchy
local presidentQids = getWdRawForeignPropertyIds("Q852448", "P1308", {"best", "current"})
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local sameHeadOfStateAndGovernment = false
local presidentNames = {}
for _, qid in ipairs(presidentQids) do
local name = ensureLinked(getWdItemManxLink(qid, false, nil, true))
if name then
table.insert(leaderPairs, {title = presidentTitle, name = name})
end
if name then table.insert(presidentNames, name) end
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
if #presidentNames > 0 then
table.insert(leaderPairs, {
title = presidentTitle,
name = table.concat(presidentNames, '<br/>'),
})
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or hogFallbackTitle
or getWdOfficeItemTitle("P1313")
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
elseif #hosQids > 1 then
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
local officeQids = getWdRawPropertyIds("P1906")
local pairsBuilt = 0
if #officeQids > 1 then
for _, officeQid in ipairs(officeQids) do
local personQid = getWdQualifierRawIdForValue("P1906", officeQid, "P1308")
local name = personQid and shortenLinkedCountryName(ensureLinked(getWdItemManxLink(personQid, false, nil, true))) or nil
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink(officeQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
pairsBuilt = pairsBuilt + 1
end
end
end
if pairsBuilt == 0 then
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false, nil, true)))
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
end
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or hogFallbackTitle
or getWdOfficeItemTitle("P1313") -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
else
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked", "current"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hosQid = getWdRawPropertyId("P35", {"current"})
-- Some countries (e.g. Benin since 2016) have literally merged the head-of-state and
local hosOfficeQid = getWdRawPropertyId("P1906")
local hogOfficeQid = getWdRawPropertyId("P1313")
local sameOffice = hosOfficeQid and hogOfficeQid and hosOfficeQid == hogOfficeQid
local sameHeadOfStateAndGovernment = sameOffice
or (hos and hog and hosQid and hogQid and hosQid == hogQid)
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or (hosOfficeQid and getWdItemManxLink(hosOfficeQid)) -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
if not isNone(getManual(args, {"ynnydee_kione_steat"})) then
local proxyOfficeQid = getWdQualifierRawId("P35", "P1393")
if proxyOfficeQid then
local proxyPersonIds = getWdRawForeignPropertyIds(proxyOfficeQid, "P1308", {"best"})
local proxyPersonQid = proxyPersonIds[1]
local proxyName = proxyPersonQid and ensureLinked(getWdItemManxLink(proxyPersonQid, false, nil, true)) or nil
if proxyName then
local proxyTitle = getManual(args, {"sorçh_ynnydee"})
or getWdItemManxLink(proxyOfficeQid)
or "Ynnydee"
table.insert(leaderPairs, {title = proxyTitle, name = proxyName})
end
end
end
elseif isUSTerritoryPage() then
-- No P35 at all on the territory's own item
local presidentQid = getWdRawForeignPropertyIds(US_QID, "P35", {"best", "current"})[1]
local presidentName = resolvePersonName(presidentQid)
if presidentName then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdForeignOfficeItemTitle(US_QID, "P1906")
or getWdPositionTitleForPerson(presidentQid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = presidentTitle, name = presidentName})
end
end
if hog and not sameHeadOfStateAndGovernment then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"})
or (hogOfficeQid and getWdItemManxLink(hogOfficeQid)) -- office held by head of government
or getWdPositionTitle("P6")
or getWikidataPropertyLabel("P6")
or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
if isNorthernIrelandPage() then
local dfmPersonQid = getWdRawForeignPropertyIds("Q11954685", "P1308", {"best"})[1]
local dfmName = dfmPersonQid and ensureLinked(getWdItemManxLink(dfmPersonQid, false, nil, true)) or nil
local dfmTitle = getWdItemManxLink("Q11954685")
if dfmName and dfmTitle then
table.insert(leaderPairs, {title = dfmTitle, name = dfmName})
end
end
end
end
end
local reiltysLabel = getGenitiveLinkedLabel("Reiltys")
if govShown then
local govClass = (#leaderPairs > 0) and "mergedtoprow" or ""
table.insert(govRows, string.format(ROW, trClass(govClass), reiltysLabel, applyRefNote(govTypeRaw, govRef, govNote, frame)))
elseif #leaderPairs > 0 then
table.insert(govRows, string.format(HEADER, reiltysLabel))
end
if isNicaraguaPage() and #leaderPairs > 1 then
local presidentTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink("Q852448")
or getWikidataPropertyLabel("P35")
or "Kione steat"
local combinedNames, seenNames = {}, {}
local firstPresidentIndex = nil
local filteredLeaderPairs = {}
for _, leader in ipairs(leaderPairs) do
if leader.title == presidentTitle then
if not firstPresidentIndex then firstPresidentIndex = #filteredLeaderPairs + 1 end
local remaining = leader.name or ""
while true do
local name, rest = remaining:match("^(.-)<br%s*/>(.*)$")
if not name then name = remaining end
name = mw.text.trim(name)
if name ~= "" and not seenNames[name] then
seenNames[name] = true
table.insert(combinedNames, name)
end
if not rest then break end
remaining = rest
end
else
table.insert(filteredLeaderPairs, leader)
end
end
if firstPresidentIndex and #combinedNames > 0 then
table.insert(filteredLeaderPairs, firstPresidentIndex, {
title = presidentTitle,
name = table.concat(combinedNames, "<br/>"),
})
leaderPairs = filteredLeaderPairs
end
end
if #leaderPairs > 0 then
local last = leaderPairs[#leaderPairs]
last.name = applyRefNote(last.name, leaderRef, leaderNote, frame)
local items = {}
for _, leader in ipairs(leaderPairs) do
table.insert(items, {leader.title, leader.name})
end
appendIndentRun(govRows, items)
end
local quaiyl = getManual(args, {"çhionnal", "quaiyl"})
local quaiylSyrjey = getManual(args, {"thie_heose", "quaiyl_syrjey"})
local quaiylInshley = getManual(args, {"thie_heese", "quaiyl_s'inshley", "quaiyl_sinshley"})
local quaiylRef = getManual(args, {"imraa_çhionnal", "imraa_quaiyl"})
local quaiylNote = getManual(args, {"noteyn_çhionnal", "noteyn_quaiyl"})
local quaiylQid = nil
if not quaiyl then
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false, nil, nil, true)
end
end
if not quaiylSyrjey or not quaiylInshley then
local legislatureQid = quaiylQid or getWdRawPropertyId("P194")
if legislatureQid then
local wdUpper, wdLower = getWdChambers(legislatureQid)
if not quaiylSyrjey then quaiylSyrjey = wdUpper end
if not quaiylInshley then quaiylInshley = wdLower end
end
end
if quaiyl and not isNone(quaiyl) then
local houseItems = {}
if quaiylSyrjey and not isNone(quaiylSyrjey) then
table.insert(houseItems, {"[[Thie heose]]", quaiylSyrjey})
end
if quaiylInshley and not isNone(quaiylInshley) then
table.insert(houseItems, {"[[Thie heese]]", quaiylInshley})
end
local quaiylClass = (#houseItems > 0) and "mergedtoprow" or ""
table.insert(quaiylRows, string.format(ROW, trClass(quaiylClass), "[[Çhionnal slattyssagh]]", applyRefNote(quaiyl, quaiylRef, quaiylNote, frame)))
appendIndentRun(quaiylRows, houseItems)
end
local foundingLabel = getManual(args, {"sorçh_kionedeeaght", "sorçh_kiondeeaght"}) or "Bunneeaght"
local foundingValue = getManual(args, {"bunnit"})
local foundingQualifier = getManual(args, {"note_kionedeeaght", "note_kiondeeaght"})
local foundingFootnote = getManual(args, {"noteyn_kionedeeaght", "noteyn_kiondeeaght"})
local foundingRef = getManual(args, {"imraa_kionedeeaght", "imraa_kiondeeaght"})
local function foundingLabelWithQualifier(label)
local linked = wikilinkLabel(label)
if foundingQualifier and foundingQualifier ~= "" then
return linked .. ' <span style="font-weight:normal;">' .. foundingQualifier .. '</span>'
end
return linked
end
local establishmentRows = {}
for i = 1, 30 do
local event = getManual(args, {"taghyrt_bunneeaght" .. i, "taghyrt" .. i .. "_bunnit"})
local date = getManual(args, {"date_bunneeaght" .. i, "date" .. i .. "_bunnit"})
if event then
table.insert(establishmentRows, {event, date or ""})
end
end
if foundingValue or #establishmentRows > 0 then
if foundingValue and not isNone(foundingValue) then
local foundingClass = (#establishmentRows > 0) and "mergedtoprow" or ""
table.insert(foundingRows, string.format(ROW, trClass(foundingClass), foundingLabelWithQualifier(foundingLabel), applyRefNote(foundingValue, foundingRef, foundingFootnote, frame)))
elseif #establishmentRows > 0 then
local headerLabel = applyRefNote(foundingLabelWithQualifier(foundingLabel), foundingRef, foundingFootnote, frame)
table.insert(foundingRows, string.format(HEADER, headerLabel))
end
appendIndentRun(foundingRows, establishmentRows, true)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when unset (not none).
local inception = getWdProperty("P571")
if inception and inception:find(" (Joolagh)", 1, true) then
inception = inception:gsub(" %(Joolagh%)", " (" .. getJulianCalendarSuffixLink() .. ")", 1)
end
if inception then
table.insert(foundingRows, string.format(ROW, "", foundingLabelWithQualifier(foundingLabel), applyRefNote(inception, foundingRef, foundingFootnote, frame)))
end
end
local aarheynnRows = {}
if aarheynnOK and Aarheynn and Aarheynn.main then
local okAarheynn, resultAarheynn = pcall(Aarheynn.main, frame, args)
if okAarheynn and resultAarheynn then aarheynnRows = resultAarheynn end
end
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, aarheynnRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
pzqauu45bjd80sb44aoz5ofivf752ev
Module:Kishtey fys çheer/ennym-wd
828
55851
394570
393135
2026-10-16T17:35:58Z
MacTire02
219
-chaghteraghtyn
394570
Scribunto
text/plain
local p = {}
-- Shared helper: when a Wikidata item has no Manx (gv) label or sitelink at
-- all, only some other language, show that label linked straight to the
-- item on Wikidata (tier 3), tagged with its language. Tiers 1 (sitelink)
-- and 2 (gv label, as a redlink) are built by the CALLER (e.g. /reiltys's
-- getWdItemManxLink) before ever reaching this module.
-- getLabelWithLang (not plain getLabel/label) so a genuine Manx label can be
-- told apart from a same-shaped fallback in another language.
local function labelWithLang(entityID)
local ok, label, lang = pcall(mw.wikibase.getLabelWithLang, entityID)
if ok and label and label ~= "" then return label, lang end
return nil, nil
end
-- Wikidata URL in Manx UI language. propertyID (unused by any caller yet)
-- jumps to a specific statement rather than the item's own page.
local function wikidataUrl(entityID, propertyID)
local prefix = (entityID:sub(1, 1) == "P") and "Property:" or ""
local url = "https://www.wikidata.org/wiki/" .. prefix .. entityID .. "?uselang=gv"
if propertyID and propertyID ~= "" then
url = url .. "#" .. propertyID
end
return url
end
-- Returns display (nil, a plain Manx label, or an external-link+language-tag
-- fallback), isManx (true only for a genuine unannotated Manx label), and
-- rawLabel (the bare label text either way).
function p.labelWithFallback(entityID, propertyID)
if not entityID or entityID == "" then return nil, false, nil end
local label, lang = labelWithLang(entityID)
if not label then return nil, false, nil end
if lang == "gv" then return label, true, label end
local safeLabel = mw.text.nowiki(label) -- a raw label could contain "]" or other wikitext-breaking characters
local linked = "[" .. wikidataUrl(entityID, propertyID) .. " " .. safeLabel .. "]"
local annotated = linked .. " <sup>(" .. tostring(lang) .. ")</sup>"
return annotated, false, label
end
return p
rk1aireup42n0i0xejxlkpta0bezavd
Module:Kishtey fys çheer/craueeaght
828
55872
394537
393631
2026-10-16T12:02:21Z
MacTire02
219
imraaghyn
394537
Scribunto
text/plain
local p = {}
-- Shared "Manx label, else linked Wikidata fallback" helper, for a religion
-- item with no gv label at all.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>...</ref>, unless it's already fully
-- <ref>-tagged (Scribunto expands a literal <ref> in a parameter into an
-- opaque \127UNIQ...QINU\127 strip marker before this module sees it, so we
-- strip those out and check what's left -- nothing left means it was
-- already tag(s), pass through unchanged; real text left over -- e.g. a
-- bare {{cite web}} call whose own <templatestyles/> leaves an incidental
-- marker -- means it still needs wrapping).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe --
-- plain Lua string.upper mangles multi-byte characters).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
-- Capitalizes the first VISIBLE letter, even through a leading wikilink or
-- an ennym-wd external-link marker -- same logic as reiltys.lua's own
-- capitalizeFirstLetter, duplicated here per this project's convention of
-- not sharing small helpers across submodules. Unlike reiltys.lua's
-- comment on its own copy, this one IS applied to manual values too (that's
-- the whole point of this fix): a religion name is always capitalized,
-- whether it came from Wikidata or was typed by hand.
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("%]%]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
-- ennym-wd external link: "[url label] <sup>(lang)</sup>" --
-- capitalize the label, right after the URL's own space.
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
-- Splits a value on "<br/>" (and the "<br />"/"<br>" variants an editor
-- might type by hand -- this module's OWN output only ever uses the exact
-- "<br/>" spelling, but a manual |craueeaght= value is free text), trims
-- each piece, and capitalizes it individually -- so a hand-typed multi-line
-- value (e.g. "yn Islam<br/>yn Ewaghys") gets the same per-entry treatment
-- as the Wikidata fallback below, not just a single capitalization applied
-- to the very first character of the whole string.
local function capitalizeEachEntry(text)
if not text or text == "" then return text end
local pieces = {}
local lastEnd = 1
local searchStart = 1
while true do
local s, e = text:find("<%s*[Bb][Rr]%s*/?%s*>", searchStart)
if not s then
table.insert(pieces, text:sub(lastEnd))
break
end
table.insert(pieces, text:sub(lastEnd, s - 1))
lastEnd = e + 1
searchStart = e + 1
end
local capitalized = {}
for _, piece in ipairs(pieces) do
local trimmed = mw.text.trim(piece)
if trimmed ~= "" then
table.insert(capitalized, capitalizeFirstLetter(trimmed))
else
table.insert(capitalized, piece)
end
end
return table.concat(capitalized, "<br/>")
end
local ROW = '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
-- Resolves a religion item to a link: gv sitelink, else gv label (as a
-- redlink), else an ennym-wd external link to Wikidata.
local function getWdItemLink(qid)
if not qid then return nil end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if not (okLabel and gvLabel and gvLabel ~= "") then gvLabel = nil end
if not sitelinkTitle and not gvLabel then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
local target = sitelinkTitle or gvLabel
local display = gvLabel or sitelinkTitle
if target == display then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. display .. "]]"
end
-- e.g. 0.547 -> "54.7%"; drops a trailing ".0".
local function formatProportion(fraction)
local formatted = string.format("%.1f", fraction * 100)
return formatted:gsub("%.0$", "") .. "%"
end
-- Wikidata fallback: religion/worldview (P140), each optionally qualified
-- with a proportion (P1107). Sorted by proportion, largest first, only
-- when every entry has one; otherwise left in Wikidata's own statement
-- order. No auto-built citation (this module doesn't go through Module:Wd).
local function getWdReligions()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P140")
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local idValue = mainsnak.datavalue.value
local qid = idValue.id or ("Q" .. tostring(idValue["numeric-id"]))
local link = getWdItemLink(qid)
if link then link = capitalizeFirstLetter(link) end
if link then
local pct = nil
local quals = statement.qualifiers and statement.qualifiers.P1107
local qualSnak = quals and quals[1]
if qualSnak and qualSnak.datavalue and qualSnak.datavalue.value then
pct = tonumber(qualSnak.datavalue.value.amount)
end
table.insert(items, { link = link, pct = pct })
end
end
end
if #items == 0 then return nil end
local allHavePct = true
for _, item in ipairs(items) do
if not item.pct then allHavePct = false break end
end
if allHavePct then
table.sort(items, function(a, b) return a.pct > b.pct end)
end
local parts = {}
for _, item in ipairs(items) do
if item.pct then
table.insert(parts, formatProportion(item.pct) .. " " .. item.link)
else
table.insert(parts, item.link)
end
end
return table.concat(parts, "<br/>")
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local value = getManual(args, {"craueeaght"})
if value then
value = capitalizeEachEntry(value)
else
value = getWdReligions()
end
if not value or isNone(value) then return nil end
local year = getManual(args, {"blein_craueeaght"})
local ref = getManual(args, {"imraa_craueeaght"})
local note = getManual(args, {"noteyn_craueeaght"})
local label = "[[Craueeaght]]"
if year then
label = label .. " (" .. year .. ")"
end
label = applyRefNote(label, ref, note, frame)
return string.format(ROW, label, value)
end
return p
tdk3jw4qc4os5zhx3n8ia282i0qesnk
394567
394537
2026-10-16T17:34:41Z
MacTire02
219
-chaghteraghtyn
394567
Scribunto
text/plain
local p = {}
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>...</ref>, unless already fully <ref>-tagged
-- (Scribunto pre-expands a literal <ref> into a strip marker; if stripping
-- those markers leaves nothing, it was already tag(s)).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe --
-- plain Lua string.upper mangles multi-byte characters).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
-- Capitalizes the first VISIBLE letter, even through a leading wikilink or
-- an ennym-wd external-link marker. Applied to manual values too, not just
-- Wikidata ones -- a religion name is always capitalized either way.
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("%]%]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
-- ennym-wd external link: "[url label] <sup>(lang)</sup>" --
-- capitalize the label, right after the URL's own space.
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
-- Splits a value on "<br/>" (and the "<br />"/"<br>" variants an editor
-- might type by hand), trims and capitalizes each piece individually --
-- so a hand-typed multi-line value gets the same per-entry treatment as
-- the Wikidata fallback below.
local function capitalizeEachEntry(text)
if not text or text == "" then return text end
local pieces = {}
local lastEnd = 1
local searchStart = 1
while true do
local s, e = text:find("<%s*[Bb][Rr]%s*/?%s*>", searchStart)
if not s then
table.insert(pieces, text:sub(lastEnd))
break
end
table.insert(pieces, text:sub(lastEnd, s - 1))
lastEnd = e + 1
searchStart = e + 1
end
local capitalized = {}
for _, piece in ipairs(pieces) do
local trimmed = mw.text.trim(piece)
if trimmed ~= "" then
table.insert(capitalized, capitalizeFirstLetter(trimmed))
else
table.insert(capitalized, piece)
end
end
return table.concat(capitalized, "<br/>")
end
local ROW = '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
-- Resolves a religion item to a link: gv sitelink, else gv label (as a
-- redlink), else an ennym-wd external link to Wikidata.
local function getWdItemLink(qid)
if not qid then return nil end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if not (okLabel and gvLabel and gvLabel ~= "") then gvLabel = nil end
if not sitelinkTitle and not gvLabel then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
local target = sitelinkTitle or gvLabel
local display = gvLabel or sitelinkTitle
if target == display then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. display .. "]]"
end
-- e.g. 0.547 -> "54.7%"; drops a trailing ".0".
local function formatProportion(fraction)
local formatted = string.format("%.1f", fraction * 100)
return formatted:gsub("%.0$", "") .. "%"
end
-- Wikidata fallback: religion/worldview (P140), each optionally qualified
-- with a proportion (P1107). Sorted by proportion, largest first, only
-- when every entry has one; otherwise left in Wikidata's own statement
-- order. No auto-built citation (this module doesn't go through Module:Wd).
local function getWdReligions()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P140")
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local idValue = mainsnak.datavalue.value
local qid = idValue.id or ("Q" .. tostring(idValue["numeric-id"]))
local link = getWdItemLink(qid)
if link then link = capitalizeFirstLetter(link) end
if link then
local pct = nil
local quals = statement.qualifiers and statement.qualifiers.P1107
local qualSnak = quals and quals[1]
if qualSnak and qualSnak.datavalue and qualSnak.datavalue.value then
pct = tonumber(qualSnak.datavalue.value.amount)
end
table.insert(items, { link = link, pct = pct })
end
end
end
if #items == 0 then return nil end
local allHavePct = true
for _, item in ipairs(items) do
if not item.pct then allHavePct = false break end
end
if allHavePct then
table.sort(items, function(a, b) return a.pct > b.pct end)
end
local parts = {}
for _, item in ipairs(items) do
if item.pct then
table.insert(parts, formatProportion(item.pct) .. " " .. item.link)
else
table.insert(parts, item.link)
end
end
return table.concat(parts, "<br/>")
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local value = getManual(args, {"craueeaght"})
if value then
value = capitalizeEachEntry(value)
else
value = getWdReligions()
end
if not value or isNone(value) then return nil end
local year = getManual(args, {"blein_craueeaght"})
local ref = getManual(args, {"imraa_craueeaght"})
local note = getManual(args, {"noteyn_craueeaght"})
local label = "[[Craueeaght]]"
if year then
label = label .. " (" .. year .. ")"
end
label = applyRefNote(label, ref, note, frame)
return string.format(ROW, label, value)
end
return p
a7is0ikkp57kasbtdzdos78qy8cv56h
394577
394567
2026-10-16T18:04:58Z
MacTire02
219
++
394577
Scribunto
text/plain
local p = {}
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>...</ref>, unless already fully <ref>-tagged
-- (Scribunto pre-expands a literal <ref> into a strip marker; if stripping
-- those markers leaves nothing, it was already tag(s)).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Capitalizes via the content language's ucfirst (UTF-8/digraph-safe --
-- plain Lua string.upper mangles multi-byte characters).
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
-- Capitalizes the first VISIBLE letter, even through a leading wikilink or
-- an ennym-wd external-link marker. Applied to manual values too, not just
-- Wikidata ones -- a religion name is always capitalized either way.
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("]]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos -- piped: capitalize the display half only
else
splitPos = 2 -- unpiped: capitalize just past the leading "[["
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
-- ennym-wd external link: "[url label] <sup>(lang)</sup>" --
-- capitalize the label, right after the URL's own space.
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
-- Splits a value on "<br/>" (and the "<br />"/"<br>" variants an editor
-- might type by hand), trims and capitalizes each piece individually --
-- so a hand-typed multi-line value gets the same per-entry treatment as
-- the Wikidata fallback below.
local function capitalizeEachEntry(text)
if not text or text == "" then return text end
local pieces = {}
local lastEnd = 1
local searchStart = 1
while true do
local s, e = text:find("<%s*[Bb][Rr]%s*/?%s*>", searchStart)
if not s then
table.insert(pieces, text:sub(lastEnd))
break
end
table.insert(pieces, text:sub(lastEnd, s - 1))
lastEnd = e + 1
searchStart = e + 1
end
local capitalized = {}
for _, piece in ipairs(pieces) do
local trimmed = mw.text.trim(piece)
if trimmed ~= "" then
table.insert(capitalized, capitalizeFirstLetter(trimmed))
else
table.insert(capitalized, piece)
end
end
return table.concat(capitalized, "<br/>")
end
local ROW = '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
-- Resolves a religion item to a link: gv sitelink, else gv label (as a
-- redlink), else an ennym-wd external link to Wikidata.
local function getWdItemLink(qid)
if not qid then return nil end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if not (okLabel and gvLabel and gvLabel ~= "") then gvLabel = nil end
if not sitelinkTitle and not gvLabel then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
local target = sitelinkTitle or gvLabel
local display = gvLabel or sitelinkTitle
if target == display then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. display .. "]]"
end
-- e.g. 0.547 -> "54.7%"; drops a trailing ".0".
local function formatProportion(fraction)
local formatted = string.format("%.1f", fraction * 100)
return formatted:gsub("%.0$", "") .. "%"
end
-- Wikidata fallback: religion/worldview (P140), each optionally qualified
-- with a proportion (P1107). Sorted by proportion, largest first, only
-- when every entry has one; otherwise left in Wikidata's own statement
-- order. No auto-built citation (this module doesn't go through Module:Wd).
local function getWdReligions()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P140")
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local idValue = mainsnak.datavalue.value
local qid = idValue.id or ("Q" .. tostring(idValue["numeric-id"]))
local link = getWdItemLink(qid)
if link then link = capitalizeFirstLetter(link) end
if link then
local pct = nil
local quals = statement.qualifiers and statement.qualifiers.P1107
local qualSnak = quals and quals[1]
if qualSnak and qualSnak.datavalue and qualSnak.datavalue.value then
pct = tonumber(qualSnak.datavalue.value.amount)
end
table.insert(items, { link = link, pct = pct })
end
end
end
if #items == 0 then return nil end
local allHavePct = true
for _, item in ipairs(items) do
if not item.pct then allHavePct = false break end
end
if allHavePct then
table.sort(items, function(a, b) return a.pct > b.pct end)
end
local parts = {}
for _, item in ipairs(items) do
if item.pct then
table.insert(parts, formatProportion(item.pct) .. " " .. item.link)
else
table.insert(parts, item.link)
end
end
return table.concat(parts, "<br/>")
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local value = getManual(args, {"craueeaght"})
if value then
-- manual value is output exactly as entered
else
value = getWdReligions()
end
if not value or isNone(value) then return nil end
local year = getManual(args, {"blein_craueeaght"})
local ref = getManual(args, {"imraa_craueeaght"})
local note = getManual(args, {"noteyn_craueeaght"})
local label = "[[Craueeaght]]"
if year then
label = label .. " (" .. year .. ")"
end
label = applyRefNote(label, ref, note, frame)
return string.format(ROW, label, value)
end
return p
ab0sc57k3hg5o4yhzwca93ie2891bst
Module:Kishtey fys çheer/possanyn kynneeagh
828
55873
394540
393875
2026-10-16T12:03:43Z
MacTire02
219
imraaghyn
394540
Scribunto
text/plain
local p = {}
-- Shared "Manx label, else linked Wikidata fallback" helper, for an ethnic-
-- group item with no gv label at all.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>...</ref>, unless it's already fully
-- <ref>-tagged (Scribunto expands a literal <ref> in a parameter into an
-- opaque \127UNIQ...QINU\127 strip marker before this module sees it, so we
-- strip those out and check what's left -- nothing left means it was
-- already tag(s), pass through unchanged; real text left over -- e.g. a
-- bare {{cite web}} call whose own <templatestyles/> leaves an incidental
-- marker -- means it still needs wrapping).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Same plain 2-cell row grid as every other submodule (see Module:Kishtey
-- fys çheer/reiltys's own ROW comment for the full rationale).
local ROW = '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
-- Shortens a diaspora/subgroup ethnic-group display name by dropping a
-- trailing " 'sy <...>"/" 'syn <...>" locative qualifier -- the Manx "in the
-- <country>" construction (the same contraction already used elsewhere in
-- this project, e.g. reiltys.lua's founding-event text "...'syn Yugoslaavey"
-- = "...in Yugoslavia"; "'sy" before a consonant-initial word, "'syn" before
-- a vowel-initial one, per ordinary Manx grammar).
--
-- Reported live, with a screenshot: an ethnic-group entry rendered as
-- "[[Ookraanee 'sy Pholynn]]" -- the full, unshortened title ("Ukrainians in
-- Poland") shown as the VISIBLE text, when it should read just "Ookraanee"
-- ("Ukrainians"), still linking to the same full title. Unlike the
-- Luxembourg City capital/largest-city fix (balley.lua), where the item's
-- OWN Wikidata label already differed from its disambiguated sitelink, a
-- diaspora-specific Wikidata item like this one typically has no separate
-- "clean" label at all -- "Ookraanee 'sy Pholynn" most likely IS its actual
-- gv label, describing exactly what the item is (the Ukrainian community
-- specifically as it exists in Poland, a distinct Wikidata item from plain
-- "Ukrainians"). So there's no alternate label to fall back to here; the
-- qualifier has to be stripped out of the display text directly, since a
-- list that's already labelled "Possanyn kynneeagh" on the Poland article
-- doesn't need "in Poland" repeated on every one of its entries.
local function shortenDiasporaName(display)
if not display or display == "" then return display end
local short = display:match("^(.-)%s'syn%s.+$") or display:match("^(.-)%s'sy%s.+$")
if short and short ~= "" then return short end
return display
end
-- Resolves an ethnic-group item to a link: gv sitelink, else gv label (as a
-- redlink), else an ennym-wd external link to Wikidata.
local function getWdItemLink(qid)
if not qid then return nil end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if not (okLabel and gvLabel and gvLabel ~= "") then gvLabel = nil end
if not sitelinkTitle and not gvLabel then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
local target = sitelinkTitle or gvLabel
local display = shortenDiasporaName(gvLabel or sitelinkTitle)
if target == display then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. display .. "]]"
end
-- e.g. 0.947 -> "94.7%"; drops a trailing ".0".
local function formatProportion(fraction)
local formatted = string.format("%.1f", fraction * 100)
return formatted:gsub("%.0$", "") .. "%"
end
-- Wikidata fallback: ethnic groups (P172), each optionally qualified with a
-- proportion (P1107). Sorted by proportion, largest first, only when every
-- entry has one; otherwise left in Wikidata's own statement order. No
-- auto-built citation (this module doesn't go through Module:Wd).
local function getWdEthnicGroups()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P172")
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local idValue = mainsnak.datavalue.value
local qid = idValue.id or ("Q" .. tostring(idValue["numeric-id"]))
local link = getWdItemLink(qid)
if link then
local pct = nil
local quals = statement.qualifiers and statement.qualifiers.P1107
local qualSnak = quals and quals[1]
if qualSnak and qualSnak.datavalue and qualSnak.datavalue.value then
pct = tonumber(qualSnak.datavalue.value.amount)
end
table.insert(items, { link = link, pct = pct })
end
end
end
if #items == 0 then return nil end
local allHavePct = true
for _, item in ipairs(items) do
if not item.pct then allHavePct = false break end
end
if allHavePct then
table.sort(items, function(a, b) return a.pct > b.pct end)
end
local parts = {}
for _, item in ipairs(items) do
if item.pct then
table.insert(parts, formatProportion(item.pct) .. " " .. item.link)
else
table.insert(parts, item.link)
end
end
return table.concat(parts, "<br/>")
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local value = getManual(args, {"possanyn_kynneeagh"})
if not value then
value = getWdEthnicGroups()
end
if not value or isNone(value) then return nil end
local year = getManual(args, {"blein_possanyn_kynneeagh"})
local ref = getManual(args, {"imraa_possanyn_kynneeagh"})
local note = getManual(args, {"noteyn_possanyn_kynneeagh"})
local label = "[[Possan kynneeagh|Possanyn kynneeagh]]"
if year then
label = label .. " (" .. year .. ")"
end
label = applyRefNote(label, ref, note, frame)
return string.format(ROW, label, value)
end
return p
hun1rzvnfbljbyxihmos03sqgvdlbd3
394571
394540
2026-10-16T17:36:23Z
MacTire02
219
-chaghteraghtyn
394571
Scribunto
text/plain
local p = {}
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>...</ref>, unless already fully <ref>-tagged
-- (Scribunto pre-expands a literal <ref> into a strip marker; if stripping
-- those markers leaves nothing, it was already tag(s)).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- Same plain 2-cell row grid as every other submodule (see Module:Kishtey
-- fys çheer/reiltys's own ROW comment for the full rationale).
local ROW = '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
-- Drops a trailing " 'sy <...>"/" 'syn <...>" locative qualifier ("in the
-- <country>") from a diaspora/subgroup display name -- e.g. "Ookraanee 'sy
-- Pholynn" ("Ukrainians in Poland") displays as just "Ookraanee", still
-- linking to the full title. There's usually no separate "clean" label to
-- fall back to for these items, so the qualifier is stripped from the
-- display text directly.
local function shortenDiasporaName(display)
if not display or display == "" then return display end
local short = display:match("^(.-)%s'syn%s.+$") or display:match("^(.-)%s'sy%s.+$")
if short and short ~= "" then return short end
return display
end
-- Resolves an ethnic-group item to a link: gv sitelink, else gv label (as a
-- redlink), else an ennym-wd external link to Wikidata.
local function getWdItemLink(qid)
if not qid then return nil end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if not (okLabel and gvLabel and gvLabel ~= "") then gvLabel = nil end
if not sitelinkTitle and not gvLabel then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
local target = sitelinkTitle or gvLabel
local display = shortenDiasporaName(gvLabel or sitelinkTitle)
if target == display then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. display .. "]]"
end
-- e.g. 0.947 -> "94.7%"; drops a trailing ".0".
local function formatProportion(fraction)
local formatted = string.format("%.1f", fraction * 100)
return formatted:gsub("%.0$", "") .. "%"
end
-- Wikidata fallback: ethnic groups (P172), each optionally qualified with a
-- proportion (P1107). Sorted by proportion, largest first, only when every
-- entry has one; otherwise left in Wikidata's own statement order. No
-- auto-built citation (this module doesn't go through Module:Wd).
local function getWdEthnicGroups()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P172")
if not statements or #statements == 0 then return nil end
local items = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid" then
local idValue = mainsnak.datavalue.value
local qid = idValue.id or ("Q" .. tostring(idValue["numeric-id"]))
local link = getWdItemLink(qid)
if link then
local pct = nil
local quals = statement.qualifiers and statement.qualifiers.P1107
local qualSnak = quals and quals[1]
if qualSnak and qualSnak.datavalue and qualSnak.datavalue.value then
pct = tonumber(qualSnak.datavalue.value.amount)
end
table.insert(items, { link = link, pct = pct })
end
end
end
if #items == 0 then return nil end
local allHavePct = true
for _, item in ipairs(items) do
if not item.pct then allHavePct = false break end
end
if allHavePct then
table.sort(items, function(a, b) return a.pct > b.pct end)
end
local parts = {}
for _, item in ipairs(items) do
if item.pct then
table.insert(parts, formatProportion(item.pct) .. " " .. item.link)
else
table.insert(parts, item.link)
end
end
return table.concat(parts, "<br/>")
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local value = getManual(args, {"possanyn_kynneeagh"})
if not value then
value = getWdEthnicGroups()
end
if not value or isNone(value) then return nil end
local year = getManual(args, {"blein_possanyn_kynneeagh"})
local ref = getManual(args, {"imraa_possanyn_kynneeagh"})
local note = getManual(args, {"noteyn_possanyn_kynneeagh"})
local label = "[[Possan kynneeagh|Possanyn kynneeagh]]"
if year then
label = label .. " (" .. year .. ")"
end
label = applyRefNote(label, ref, note, frame)
return string.format(ROW, label, value)
end
return p
p5vb7vf70ch870wyj0ghmg721bbwagb
Module:Kishtey fys çheer/eaghtyr
828
55874
394538
393991
2026-10-16T12:02:51Z
MacTire02
219
imraaghyn
394538
Scribunto
text/plain
local p = {}
local KM2_PER_MI2 = 2.589988110336
-- Recognized Wikidata area units (P2046), mapped to their km² factor.
-- Q712226 = square kilometre, Q232291 = square mile. Anything else
-- (hectare, acre, m², ...) is left unconverted rather than risking a wrong
-- guess -- the manual |eaghtyr_km2= override always remains available.
local AREA_UNIT_FACTORS = {
Q712226 = 1,
Q232291 = KM2_PER_MI2,
}
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>...</ref>, unless it's already fully
-- <ref>-tagged (Scribunto expands a literal <ref> in a parameter into an
-- opaque \127UNIQ...QINU\127 strip marker before this module sees it, so we
-- strip those out and check what's left -- nothing left means it was
-- already tag(s), pass through unchanged; real text left over -- e.g. a
-- bare {{cite web}} call whose own <templatestyles/> leaves an incidental
-- marker -- means it still needs wrapping).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Strips trailing literal spaces and/or " " (in any mix or repeat --
-- e.g. a value that ends "... " with no rhenk actually appended after
-- it) so a note or reference glues directly onto the claim it belongs to,
-- with no visible or non-breaking gap in between.
local function stripTrailingSpace(value)
local changed = true
while changed do
local stripped = value:gsub("%s+$", ""):gsub(" $", "")
changed = (stripped ~= value)
value = stripped
end
return value
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
local hasNote = note and note ~= "" and frame
local hasRef = ref and ref ~= ""
if hasNote or hasRef then
value = stripTrailingSpace(value)
end
if hasNote then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if hasRef then
value = value .. wrapReference(ref)
end
return value
end
-- Same row grid as Module:Kishtey fys çheer/reiltys (header + bulleted
-- indented sub-rows), since Eaghtyr has the same shape: a section header
-- with several stat lines beneath it.
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function appendIndentRun(rows, items)
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(SUBROW, trClass(class), item[1], item[2]))
end
end
-- e.g. 1234567.5 -> "1,234,567.5"; drops a trailing ".0" and groups the
-- integer part in thousands. Only used for numbers this module computed
-- itself (Wikidata's raw amount, the auto-converted sq-mi figure) -- a
-- manual value is always passed through exactly as the editor typed it.
local function formatNumber(n)
local isNeg = n < 0
n = math.abs(n)
local formatted = string.format("%.2f", n):gsub("%.?0+$", "")
local intPart, decPart = formatted:match("^(%d+)%.?(%d*)$")
local grouped = intPart:reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
local result = (decPart and decPart ~= "") and (grouped .. "." .. decPart) or grouped
return isNeg and ("-" .. result) or result
end
-- Wikidata fallback: total area (P2046), converted to km² when the unit is
-- one this module recognizes (see AREA_UNIT_FACTORS). A country's area is
-- sometimes split into several best-rank statements by an "applies to part"
-- (P518) qualifier -- e.g. Bosnia and Herzegovina carries 10 km² (lake),
-- 51,187 km² (land) and 51,209.2 km² (whole) as three separate best-rank
-- P2046 statements. statements[1] isn't necessarily the whole-country
-- figure -- confirmed live, it was returning the 10 km² lake sub-area.
-- Never assume which "applies to part" QID means "whole" without verifying
-- it; a sub-area is always <= the country's real total by definition, so
-- the correct total is simply the LARGEST convertible value among them,
-- with no qualifier data needed at all. Returns a plain number, not a
-- formatted string -- the caller decides display/rounding.
local function getWdAreaKm2()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P2046")
if not statements or #statements == 0 then return nil end
local best = nil
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "quantity" then
local value = mainsnak.datavalue.value
local amount = tonumber(value.amount)
local unitQid = amount and value.unit and value.unit:match("Q%d+$")
local factor = unitQid and AREA_UNIT_FACTORS[unitQid]
if factor then
local km2 = amount * factor
if not best or km2 > best then best = km2 end
end
end
end
return best
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local headerLabel = getManual(args, {"sorçh_eaghtyr"}) or "Eaghtyr"
local ref = getManual(args, {"imraa_eaghtyr"})
local note = getManual(args, {"noteyn_eaghtyr"})
------------------------------------------------------------------
-- Total area ("Yn clane"): manual km² value, else Wikidata (P2046).
-- An explicit |eaghtyr_km2=none suppresses this row (and the sq-mi
-- conversion with it) without touching water%/the custom row below.
------------------------------------------------------------------
local km2Manual = getManual(args, {"eaghtyr_km2"})
local km2Str, km2Number
if km2Manual then
if not isNone(km2Manual) then
km2Str = km2Manual
km2Number = tonumber((km2Manual:gsub(",", "")))
end
else
km2Number = getWdAreaKm2()
if km2Number then km2Str = formatNumber(km2Number) end
end
local totalItem = nil
if km2Str then
local label = getManual(args, {"eaghtyr_lipaid"}) or "Yn clane"
local foScreeuyn = getManual(args, {"eaghtyr_fo-screeuyn"}) or ""
local rhenk = getManual(args, {"eaghtyr_rhenk"})
local miKerManual = getManual(args, {"eaghtyr_mi_ker"})
local miKerStr = miKerManual
if not miKerStr and km2Number then
miKerStr = formatNumber(math.floor(km2Number / KM2_PER_MI2 + 0.5))
end
local value = km2Str .. " [[km²|km<sup>2</sup>]] " .. foScreeuyn
if rhenk then
value = value .. "([[Rolley çheeraghyn as thallooyn foddey ersooyl rere eaghtyr|" .. rhenk .. "]]) "
end
if miKerStr then
value = value .. "<br/>" .. miKerStr .. " [[Meeiley cherrinagh|mi ker]] "
end
value = applyRefNote(value, ref, note, frame)
totalItem = {label, value}
end
------------------------------------------------------------------
-- Water (%): manual only -- no Wikidata property reliably covers this.
------------------------------------------------------------------
local waterItem = nil
local water = getManual(args, {"ushtey_sy_cheead"})
if water and not isNone(water) then
waterItem = {"[[Ushtey]] ([['Sy cheead|%]])", water}
end
------------------------------------------------------------------
-- Custom second stat row: fully manual, generic label/value pass-through.
------------------------------------------------------------------
local customItem = nil
local customLabel = getManual(args, {"eaghtyr_lipaid2"})
if customLabel then
local customValue = getManual(args, {"eaghtyr_fysseree2"}) or ""
customItem = {customLabel, customValue}
end
if not totalItem and not waterItem and not customItem then return nil end
local rows = {}
if totalItem then
table.insert(rows, string.format(HEADER, headerLabel))
else
-- No total row (e.g. |eaghtyr_km2=none with only water%/custom set):
-- attach the section's own citation to the header instead.
table.insert(rows, string.format(HEADER, applyRefNote(headerLabel, ref, note, frame)))
end
local items = {}
if totalItem then table.insert(items, totalItem) end
if waterItem then table.insert(items, waterItem) end
if customItem then table.insert(items, customItem) end
appendIndentRun(rows, items)
return table.concat(rows)
end
return p
9qzuc071kub70qb610dv7gnk7cl44at
394569
394538
2026-10-16T17:35:28Z
MacTire02
219
-chaghteraghtyn
394569
Scribunto
text/plain
local p = {}
local KM2_PER_MI2 = 2.589988110336
-- Recognized Wikidata area units (P2046), mapped to their km² factor.
-- Q712226 = square kilometre, Q232291 = square mile. Anything else
-- (hectare, acre, m², ...) is left unconverted rather than risking a wrong
-- guess -- the manual |eaghtyr_km2= override always remains available.
local AREA_UNIT_FACTORS = {
Q712226 = 1,
Q232291 = KM2_PER_MI2,
}
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>...</ref>, unless already fully <ref>-tagged
-- (Scribunto pre-expands a literal <ref> into a strip marker; if stripping
-- those markers leaves nothing, it was already tag(s)).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Strips trailing literal spaces and/or " " (in any mix or repeat --
-- e.g. a value that ends "... " with no rhenk actually appended after
-- it) so a note or reference glues directly onto the claim it belongs to,
-- with no visible or non-breaking gap in between.
local function stripTrailingSpace(value)
local changed = true
while changed do
local stripped = value:gsub("%s+$", ""):gsub(" $", "")
changed = (stripped ~= value)
value = stripped
end
return value
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
local hasNote = note and note ~= "" and frame
local hasRef = ref and ref ~= ""
if hasNote or hasRef then
value = stripTrailingSpace(value)
end
if hasNote then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if hasRef then
value = value .. wrapReference(ref)
end
return value
end
-- Same row grid as Module:Kishtey fys çheer/reiltys (header + bulleted
-- indented sub-rows), since Eaghtyr has the same shape: a section header
-- with several stat lines beneath it.
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function appendIndentRun(rows, items)
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(SUBROW, trClass(class), item[1], item[2]))
end
end
-- e.g. 1234567.5 -> "1,234,567.5"; drops a trailing ".0" and groups the
-- integer part in thousands. Only used for numbers this module computed
-- itself (Wikidata's raw amount, the auto-converted sq-mi figure) -- a
-- manual value is always passed through exactly as the editor typed it.
local function formatNumber(n)
local isNeg = n < 0
n = math.abs(n)
local formatted = string.format("%.2f", n):gsub("%.?0+$", "")
local intPart, decPart = formatted:match("^(%d+)%.?(%d*)$")
local grouped = intPart:reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
local result = (decPart and decPart ~= "") and (grouped .. "." .. decPart) or grouped
return isNeg and ("-" .. result) or result
end
-- Wikidata fallback: total area (P2046), converted to km² when the unit is
-- one this module recognizes. A country's area can be split into several
-- best-rank statements by an "applies to part" qualifier (e.g. lake/land/
-- whole) -- statements[1] isn't necessarily the whole-country figure, so
-- the correct total is simply the LARGEST convertible value among them.
-- Returns a plain number; the caller decides display/rounding.
local function getWdAreaKm2()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P2046")
if not statements or #statements == 0 then return nil end
local best = nil
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "quantity" then
local value = mainsnak.datavalue.value
local amount = tonumber(value.amount)
local unitQid = amount and value.unit and value.unit:match("Q%d+$")
local factor = unitQid and AREA_UNIT_FACTORS[unitQid]
if factor then
local km2 = amount * factor
if not best or km2 > best then best = km2 end
end
end
end
return best
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local headerLabel = getManual(args, {"sorçh_eaghtyr"}) or "Eaghtyr"
local ref = getManual(args, {"imraa_eaghtyr"})
local note = getManual(args, {"noteyn_eaghtyr"})
------------------------------------------------------------------
-- Total area ("Yn clane"): manual km² value, else Wikidata (P2046).
-- An explicit |eaghtyr_km2=none suppresses this row (and the sq-mi
-- conversion with it) without touching water%/the custom row below.
------------------------------------------------------------------
local km2Manual = getManual(args, {"eaghtyr_km2"})
local km2Str, km2Number
if km2Manual then
if not isNone(km2Manual) then
km2Str = km2Manual
km2Number = tonumber((km2Manual:gsub(",", "")))
end
else
km2Number = getWdAreaKm2()
if km2Number then km2Str = formatNumber(km2Number) end
end
local totalItem = nil
if km2Str then
local label = getManual(args, {"eaghtyr_lipaid"}) or "Yn clane"
local foScreeuyn = getManual(args, {"eaghtyr_fo-screeuyn"}) or ""
local rhenk = getManual(args, {"eaghtyr_rhenk"})
local miKerManual = getManual(args, {"eaghtyr_mi_ker"})
local miKerStr = miKerManual
if not miKerStr and km2Number then
miKerStr = formatNumber(math.floor(km2Number / KM2_PER_MI2 + 0.5))
end
local value = km2Str .. " [[km²|km<sup>2</sup>]] " .. foScreeuyn
if rhenk then
value = value .. "([[Rolley çheeraghyn as thallooyn foddey ersooyl rere eaghtyr|" .. rhenk .. "]]) "
end
if miKerStr then
value = value .. "<br/>" .. miKerStr .. " [[Meeiley cherrinagh|mi ker]] "
end
value = applyRefNote(value, ref, note, frame)
totalItem = {label, value}
end
------------------------------------------------------------------
-- Water (%): manual only -- no Wikidata property reliably covers this.
------------------------------------------------------------------
local waterItem = nil
local water = getManual(args, {"ushtey_sy_cheead"})
if water and not isNone(water) then
waterItem = {"[[Ushtey]] ([['Sy cheead|%]])", water}
end
------------------------------------------------------------------
-- Custom second stat row: fully manual, generic label/value pass-through.
------------------------------------------------------------------
local customItem = nil
local customLabel = getManual(args, {"eaghtyr_lipaid2"})
if customLabel then
local customValue = getManual(args, {"eaghtyr_fysseree2"}) or ""
customItem = {customLabel, customValue}
end
if not totalItem and not waterItem and not customItem then return nil end
local rows = {}
if totalItem then
table.insert(rows, string.format(HEADER, headerLabel))
else
-- No total row (e.g. |eaghtyr_km2=none with only water%/custom set):
-- attach the section's own citation to the header instead.
table.insert(rows, string.format(HEADER, applyRefNote(headerLabel, ref, note, frame)))
end
local items = {}
if totalItem then table.insert(items, totalItem) end
if waterItem then table.insert(items, waterItem) end
if customItem then table.insert(items, customItem) end
appendIndentRun(rows, items)
return table.concat(rows)
end
return p
irt8wjgp8dbpws9ty7dth0z2av1zql6
Module:Kishtey fys çheer/pobble
828
55875
394539
393990
2026-10-16T12:03:20Z
MacTire02
219
imraaghyn
394539
Scribunto
text/plain
local p = {}
local KM2_PER_MI2 = 2.589988110336
-- P459 (determination method) QIDs, verified on Wikidata. Anything that
-- isn't a census defaults to "estimate" in classify() below, so the
-- estimate-family QIDs aren't matched explicitly -- kept here for reference.
local CENSUS_QID = "Q39825"
local ESTIMATE_QID = "Q791801"
local DEMOGRAPHIC_BALANCE_QID = "Q15911027"
local POPULATION_ESTIMATE_QID = "Q29051383"
-- Same area units as eaghtyr.lua, for the density calc.
local AREA_UNIT_FACTORS = {
Q712226 = 1,
Q232291 = KM2_PER_MI2,
}
-- For Wikidata citations only.
local wdOK, Wd = pcall(require, "Module:Wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual ref in <ref> unless it's already tagged (Scribunto turns
-- a literal <ref> into a strip marker before this module sees it).
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Strips trailing literal spaces and/or " " (in any mix or repeat --
-- e.g. a value that ends "... " with no rhenk actually appended after
-- it) so a note, reference, or auto-citation glues directly onto the claim
-- it belongs to, with no visible or non-breaking gap in between.
local function stripTrailingSpace(value)
local changed = true
while changed do
local stripped = value:gsub("%s+$", ""):gsub(" $", "")
changed = (stripped ~= value)
value = stripped
end
return value
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
local hasNote = note and note ~= "" and frame
local hasRef = ref and ref ~= ""
if hasNote or hasRef then
value = stripTrailingSpace(value)
end
if hasNote then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if hasRef then
value = value .. wrapReference(ref)
end
return value
end
-- Same header + bulleted sub-rows grid as reiltys/eaghtyr.
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2" style="text-align:left; padding-left:0.4em; padding-right:0.4em;">%s</th></tr>'
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function appendIndentRun(rows, items)
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(SUBROW, trClass(class), item[1], item[2]))
end
end
-- e.g. 1234567.5 -> "1,234,567.5". Manual values are never touched by this.
local function formatNumber(n, decimals)
decimals = decimals or 2
local isNeg = n < 0
n = math.abs(n)
local formatted = string.format("%." .. decimals .. "f", n)
if formatted:find("%.") then
formatted = formatted:gsub("0+$", ""):gsub("%.$", "")
end
local intPart, decPart = formatted:match("^(%d+)%.?(%d*)$")
local grouped = intPart:reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
local result = (decPart and decPart ~= "") and (grouped .. "." .. decPart) or grouped
return isNeg and ("-" .. result) or result
end
-- Increase/decrease/steady arrow. No colour coding -- an increase isn't
-- universally good or bad, it depends on the country.
local function trendArrow(direction)
if direction == "up" then
return '<span title="Ardjaghey">▲</span>'
elseif direction == "down" then
return '<span title="Leodaghey">▼</span>'
elseif direction == "steady" then
return '<span title="Corrym">—</span>'
end
return ""
end
-- All P1082 statements, reduced to {amount, rawAmount, year, method},
-- sorted ascending by year.
local function getWdPopulationStatements()
local entity = mw.wikibase.getEntityObject()
if not entity then return {} end
-- getAllStatements, not getBestStatements: a single preferred-rank
-- statement (Wikidata often marks the latest one that way) would
-- otherwise hide every normal-rank statement, including the census.
-- Deprecated-rank statements are excluded by hand below instead.
local statements = entity:getAllStatements("P1082")
if not statements then return {} end
local results = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if statement.rank ~= "deprecated" and mainsnak and mainsnak.snaktype == "value"
and mainsnak.datavalue and mainsnak.datavalue.type == "quantity" then
local rawAmount = mainsnak.datavalue.value.amount
local amount = tonumber(rawAmount)
local timeQuals = statement.qualifiers and statement.qualifiers.P585
local timeSnak = timeQuals and timeQuals[1]
local timeValue = timeSnak and timeSnak.datavalue and timeSnak.datavalue.value
local year = timeValue and timeValue.time and tonumber(timeValue.time:match("(%-?%d+)%-"))
if amount and year then
local methodQuals = statement.qualifiers and statement.qualifiers.P459
local methodSnak = methodQuals and methodQuals[1]
local methodValue = methodSnak and methodSnak.datavalue and methodSnak.datavalue.value
local method = methodValue and (methodValue.id or ("Q" .. tostring(methodValue["numeric-id"])))
table.insert(results, {
amount = amount,
rawAmount = rawAmount and rawAmount:gsub("^%+", ""),
year = year,
method = method,
})
end
end
end
table.sort(results, function(a, b) return a.year < b.year end)
return results
end
-- Real census statements are usually tagged with a country-specific item,
-- not the generic QID -- fall back to checking the label for "census".
local function isCensusMethod(methodQid)
if not methodQid then return false end
if methodQid == CENSUS_QID then return true end
local ok, label = pcall(mw.wikibase.getLabelByLang, methodQid, "en")
return ok and label ~= nil and mw.ustring.find(mw.ustring.lower(label), "census", 1, true) ~= nil
end
local function classify(entry)
if isCensusMethod(entry.method) then return "census" end
return "estimate"
end
-- Compares `number` against whichever Wikidata P1082 statement (census or
-- estimate) is the closest one strictly before `year` -- or, with no year,
-- the single most recent Wikidata statement -- even when that statement
-- isn't itself shown as a row. Used for both manual and Wikidata-sourced
-- values, so a manual override is never compared to its sibling census/
-- estimate figure, only to Wikidata's own prior data for this property.
local function trendAgainstWikidata(number, year, allEntries)
if not number or not allEntries or #allEntries == 0 then return nil end
local prev = nil
for _, entry in ipairs(allEntries) do
if year then
if entry.year < year and (not prev or entry.year > prev.year) then prev = entry end
elseif not prev or entry.year > prev.year then
prev = entry
end
end
if not prev then return nil end
if number > prev.amount then return "up" end
if number < prev.amount then return "down" end
return "steady"
end
-- Matches the statement by its own value rather than re-matching P585/
-- P459 as strings, since dates can carry finer-than-year precision.
local function getWdReferenceForValue(property, rawAmount)
if not wdOK or not Wd or not Wd._reference or not rawAmount then return nil end
local ok, result = pcall(Wd._reference, {"best", property, rawAmount})
if ok and result and result ~= "" then return result end
return nil
end
-- Duplicated from eaghtyr.lua for the density calc.
local function getWdAreaKm2()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements("P2046")
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "quantity") then
return nil
end
local value = mainsnak.datavalue.value
local amount = tonumber(value.amount)
if not amount then return nil end
local unitQid = value.unit and value.unit:match("Q%d+$")
local factor = unitQid and AREA_UNIT_FACTORS[unitQid]
if not factor then return nil end
return amount * factor
end
-- Builds one census/estimate row from manual params, else Wikidata. A
-- trend arrow always compares against Wikidata's own prior P1082 data for
-- this property (never a sibling census/estimate value), even when that
-- prior statement isn't itself shown as a row.
local function buildPopulationItem(args, frame, paramPrefix, labelWord, methodQid, statements)
local manual = getManual(args, {"pobble_" .. paramPrefix})
local year = getManual(args, {"blein_" .. paramPrefix .. "_pobble"})
local rhenk = getManual(args, {"rhenk_" .. paramPrefix .. "_pobble"})
local ref = getManual(args, {"imraa_" .. paramPrefix .. "_pobble"})
local note = getManual(args, {"noteyn_" .. paramPrefix .. "_pobble"})
if manual then
if isNone(manual) then return nil, nil end
local number = tonumber((manual:gsub(",", "")))
local parsedYear = year and tonumber(year:match("%-?%d+"))
local trend = trendAgainstWikidata(number, parsedYear, statements)
local label = labelWord .. (year and (" " .. year) or "")
local value = (trend and trendArrow(trend) or "") .. manual .. " "
if rhenk then
value = value .. "([[Rolley çheeraghyn rere earroo yn phobble|" .. rhenk .. "]]) "
end
value = applyRefNote(value, ref, note, frame)
return {label, value}, number
end
local latest = nil
for _, entry in ipairs(statements) do
if classify(entry) == (methodQid == CENSUS_QID and "census" or "estimate") then
latest = entry
end
end
if not latest then return nil, nil end
local trend = trendAgainstWikidata(latest.amount, latest.year, statements)
local citation = getWdReferenceForValue("P1082", latest.rawAmount)
local label = labelWord .. " " .. latest.year
local value = (trend and trendArrow(trend) or "") .. formatNumber(latest.amount) .. " "
if rhenk then
value = value .. "([[Rolley çheeraghyn rere earroo yn phobble|" .. rhenk .. "]]) "
end
if citation then
value = stripTrailingSpace(value) .. citation
end
value = applyRefNote(value, ref, note, frame)
return {label, value}, latest.amount
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local headerLabel = getManual(args, {"sorçh_pobble"}) or "[[Earroo yn phobble]]"
local wdStatements = nil
local function statements()
if wdStatements == nil then wdStatements = getWdPopulationStatements() end
return wdStatements
end
-- Census, then estimate (old template's order). Each item's trend
-- compares against Wikidata's own prior data, not against the other.
local censusItem, censusNumber = buildPopulationItem(args, frame, "coontey", "Coontey-pobble", CENSUS_QID, statements())
local estimateItem, estimateNumber = buildPopulationItem(args, frame, "ooley", "Ooley-pobble", ESTIMATE_QID, statements())
-- Density: manual km², else population ÷ area. No auto citation --
-- a computed ratio isn't one citable statement.
local densityRef = getManual(args, {"imraa_glooaght_pobble"})
local densityNote = getManual(args, {"noteyn_glooaght_pobble"})
local densityManual = getManual(args, {"glooaght_pobble_km2"})
local densityItem = nil
local densityKm2Str, densityKm2Number
if densityManual then
if not isNone(densityManual) then
densityKm2Str = densityManual
densityKm2Number = tonumber((densityManual:gsub(",", "")))
end
else
local populationForDensity = estimateNumber or censusNumber
local areaKm2 = populationForDensity and getWdAreaKm2()
if populationForDensity and areaKm2 and areaKm2 > 0 then
densityKm2Number = populationForDensity / areaKm2
densityKm2Str = formatNumber(densityKm2Number, 1)
end
end
if densityKm2Str then
local foScreeuyn = getManual(args, {"gloo_pob_fo-screeuyn"}) or ""
local rhenk = getManual(args, {"rhenk_glooaght_pobble"})
local miKerManual = getManual(args, {"glooaght_pobble_mi_ker"})
local miKerStr = miKerManual
if not miKerStr and densityKm2Number then
miKerStr = formatNumber(densityKm2Number * KM2_PER_MI2, 1)
end
local value = densityKm2Str .. "/km<sup>2</sup> " .. foScreeuyn
if rhenk then
value = value .. "([[Rolley çheeraghyn rere glooaght y phobble|" .. rhenk .. "]]) "
end
if miKerStr then
value = value .. "<br/>" .. miKerStr .. "/mi ker"
end
value = applyRefNote(value, densityRef, densityNote, frame)
densityItem = {"[[Glooaght y phobble|Glooaght]]", value}
end
if not censusItem and not estimateItem and not densityItem then return nil end
local rows = {string.format(HEADER, headerLabel)}
local items = {}
if estimateItem then table.insert(items, estimateItem) end
if censusItem then table.insert(items, censusItem) end
if densityItem then table.insert(items, densityItem) end
appendIndentRun(rows, items)
return table.concat(rows)
end
return p
fnodmu7dn8ug52tg02uf2byh81csa4l
Module:Kishtey fys çheer/tarmaynys
828
55890
394542
393998
2026-10-16T12:04:36Z
MacTire02
219
imraaghyn
394542
Scribunto
text/plain
local p = {}
-- Wikidata properties, verified individually before use (never guessed):
-- P2131/P2132 nominal GDP total/per-capita, P4010/P2299 PPP GDP
-- total/per-capita, P1125 Gini, P1081 HDI, P38 currency, P498 ISO 4217 code.
local GDP_NOMINAL_TOTAL = "P2131"
local GDP_NOMINAL_PERCAPITA = "P2132"
local GDP_PPP_TOTAL = "P4010"
local GDP_PPP_PERCAPITA = "P2299"
local GINI_PROPERTY = "P1125"
local HDI_PROPERTY = "P1081"
local CURRENCY_PROPERTY = "P38"
local ISO_CODE_PROPERTY = "P498"
local UNIT_SYMBOL_PROPERTY = "P5061" -- confirmed against Module:WikidataIB's own usage
-- P1082 population -- not a new lookup: this is the exact same property
-- Module:Kishtey fys çheer/pobble already reads for its own census/
-- estimate rows, reused here (independently, per this project's
-- per-submodule duplication convention) only for the LTS-per-capita
-- computed fallback below.
local POPULATION_PROPERTY = "P1082"
local wdOK, Wd = pcall(require, "Module:Wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Capitalizes via the content language's own ucfirst (UTF-8/digraph-safe),
-- not a plain Lua upper() on byte 1. Duplicated from reiltys.lua.
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
-- Capitalizes the first letter a reader actually sees, even through a
-- leading wikilink or external-link marker (getCurrencyLink's two linked
-- shapes) -- Wikidata labels are commonly stored lower-case. Never applied
-- to manual values.
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("%]%]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos
else
splitPos = 2
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
-- Strips trailing literal spaces and/or " " (in any mix or repeat --
-- e.g. a value that ends "... " with no rhenk/band actually appended
-- after it) so a note, reference, or auto-citation glues directly onto the
-- claim it belongs to, with no visible or non-breaking gap in between.
local function stripTrailingSpace(value)
local changed = true
while changed do
local stripped = value:gsub("%s+$", ""):gsub(" $", "")
changed = (stripped ~= value)
value = stripped
end
return value
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
local hasNote = note and note ~= "" and frame
local hasRef = ref and ref ~= ""
if hasNote or hasRef then
value = stripTrailingSpace(value)
end
if hasNote then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if hasRef then
value = value .. wrapReference(ref)
end
return value
end
-- Same row grid as reiltys/pobble: ROW is a plain label+value row, SUBROW a
-- bulleted sub-item beneath a shared block.
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function appendIndentRun(rows, items)
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(SUBROW, trClass(class), item[1], item[2]))
end
end
-- Divider between this module's own internal blocks (CCC / LTS / Gini /
-- ALD / Argid) -- same rule as reiltys: only between two blocks that both
-- produced rows.
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
local function formatNumber(n, decimals)
decimals = decimals or 2
local isNeg = n < 0
n = math.abs(n)
local formatted = string.format("%." .. decimals .. "f", n)
if formatted:find("%.") then
formatted = formatted:gsub("0+$", ""):gsub("%.$", "")
end
local intPart, decPart = formatted:match("^(%d+)%.?(%d*)$")
local grouped = intPart:reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
local result = (decPart and decPart ~= "") and (grouped .. "." .. decPart) or grouped
return isNeg and ("-" .. result) or result
end
-- Large-number Manx words, as given directly by you. Applied only to GDP
-- TOTAL figures (not per-capita, not Gini/ALD) -- matching enwiki's own
-- convention of abbreviating a total ("$32.384 trillion") while showing
-- per-capita in full ("$94,430").
local SCALE_WORDS = {
{1e12, "trillioon"},
{1e9, "billoon"},
{1e6, "millioon"},
{1e3, "thousane"},
}
local function abbreviateNumber(n)
for _, scale in ipairs(SCALE_WORDS) do
local threshold, word = scale[1], scale[2]
if math.abs(n) >= threshold then
return formatNumber(n / threshold, 3) .. " " .. word
end
end
return formatNumber(n, 0)
end
-- Splits a manual numeric value into {number, tail}: strips comma
-- separators, then takes the leading numeric run. Anything left over (an
-- inline <ref>...</ref> -- already a UNIQ strip marker by the time this
-- module sees it -- or other trailing text) is kept, not discarded: the
-- OLD template had no separate citation parameter for these fields, so on
-- the existing 200+ articles a citation was the editor's only option
-- directly inside the value itself, e.g.
-- |LTS_ennymagh = 28,750,956,130,000<ref>...</ref>. Without this split,
-- tonumber() on the whole string fails outright and the value falls back
-- to unabbreviated raw text -- which is exactly what a plain
-- comma-stripped tonumber() was doing before this fix.
local function splitManualNumber(text)
local stripped = text:gsub(",", "")
local numStr, tail = stripped:match("^(%-?%d+%.?%d*)(.*)$")
if not numStr then return nil, nil end
tail = mw.text.trim(tail)
return tonumber(numStr), tail ~= "" and tail or nil
end
-- Applies to a GDP field's own number, whether manual or Wikidata-sourced
-- -- unlike every other manual value in this module, a manual GDP figure
-- IS reformatted (scaled/grouped), since the whole point of this feature
-- is the number's presentation, not just its source. `field.str` (the
-- manual text as typed) is the fallback only for the rare manual value
-- that doesn't parse as a plain number at all. Any trailing text captured
-- alongside the number (typically an inline citation) is preserved
-- immediately after the reformatted number.
local function formatGdpDisplay(field, abbreviate)
if not field.number then return field.str end
local numStr = abbreviate and abbreviateNumber(field.number) or formatNumber(field.number, 0)
if field.tail then return numStr .. field.tail end
return numStr
end
-- Matches the wiki's own {{Increase}}/{{Decrease}}/{{Steady}} styling exactly
-- (population deliberately uses no colour -- a separate, earlier decision
-- that does NOT generalise here). Increase/decrease use the site's actual
-- Coadan:Increase2.svg/Decrease2.svg icons, not hand-drawn coloured
-- triangles; steady is the site's blue ▬, per your template source.
local function trendArrow(direction)
if direction == "up" then
return "[[Coadan:Increase2.svg|11px|alt=Ardjaghey|link=|Ardjaghey]]"
elseif direction == "down" then
return "[[Coadan:Decrease2.svg|11px|alt=Leodaghey|link=|Leodaghey]]"
elseif direction == "steady" then
return '<span title="Corrym" style="color:#0AF; font-size: larger;">▬</span>'
end
return ""
end
-- A manual value can carry its OWN leading trend icon, typed by the editor
-- as {{increase}}/{{decrease}}/{{steady}} (old-template habit -- confirmed
-- live, e.g. |LTS_CCK={{increase}} $6.932 billoon<ref>...</ref>).
-- Those templates are already expanded by the time this module sees the
-- argument, so the value STARTS with a Coadan:Increase2.svg/Decrease2.svg
-- link (or the steady span) -- which also means it can never parse as a
-- plain number (see splitManualNumber), so field.number is nil and no
-- `trend` gets computed for it at all. Without this check the icon was
-- passed through as opaque, unwrapped text -- exactly the "icon strands on
-- its own line" bug the computed path was already fixed for. A bare
-- ▲/▼/▬/— glyph is matched too, in case an editor typed the character
-- directly instead of the template. Returns the marker text and whatever
-- follows it (nil, text if no marker is present).
local LEADING_TREND_PATTERNS = {
"^%[%[Coadan:Increase2%.svg.-%]%]",
"^%[%[Coadan:Decrease2%.svg.-%]%]",
"^%[%[File:Increase2%.svg.-%]%]",
"^%[%[File:Decrease2%.svg.-%]%]",
"^<span[^>]*>▬</span>",
}
local function splitLeadingTrendMarker(text)
if not text or text == "" then return nil, text end
for _, pattern in ipairs(LEADING_TREND_PATTERNS) do
local s, e = text:find(pattern)
if s then return text:sub(s, e), text:sub(e + 1) end
end
for _, marker in ipairs({"▲", "▼", "▬", "—"}) do
if text:sub(1, #marker) == marker then return marker, text:sub(#marker + 1) end
end
return nil, text
end
-- Strips whatever separator (plain spaces and/or a literal " ") an
-- editor already put between their hand-typed icon and the value, so
-- glueTrend can supply exactly one " " instead of stacking two.
local function stripLeadingSeparator(text)
if not text then return text end
while true do
local stripped = text:gsub("^%s+", ""):gsub("^ ", "")
if stripped == text then return stripped end
text = stripped
end
end
-- Glues a trend icon to the number it belongs to, with a visible space
-- between them, so a line-wrap can never separate icon from value; anything
-- appended after (rank, band) stays free to wrap onto its own line. Covers
-- both an icon THIS module generated (`trend` given) and one already
-- sitting at the front of manually-typed `text` (see
-- splitLeadingTrendMarker above).
local function glueTrend(trend, text)
if trend then
return '<span style="white-space:nowrap;">' .. trendArrow(trend) .. " " .. text .. '</span>'
end
local marker, rest = splitLeadingTrendMarker(text)
if marker then
return '<span style="white-space:nowrap;">' .. marker .. " " .. stripLeadingSeparator(rest) .. '</span>'
end
return text
end
-- All non-deprecated statements of a quantity property, reduced to
-- {amount, rawAmount, year}, sorted ascending by year.
local function getWdQuantityStatements(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return {} end
local statements = entity:getAllStatements(property)
if not statements then return {} end
local results = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if statement.rank ~= "deprecated" and mainsnak and mainsnak.snaktype == "value"
and mainsnak.datavalue and mainsnak.datavalue.type == "quantity" then
local rawAmount = mainsnak.datavalue.value.amount
local amount = tonumber(rawAmount)
local timeQuals = statement.qualifiers and statement.qualifiers.P585
local timeSnak = timeQuals and timeQuals[1]
local timeValue = timeSnak and timeSnak.datavalue and timeSnak.datavalue.value
local year = timeValue and timeValue.time and tonumber(timeValue.time:match("(%-?%d+)%-"))
-- The statement's OWN currency/unit (e.g. a specific country's
-- dollar, not necessarily USD) -- never assumed, always read off
-- this exact statement. Dimensionless properties (Gini, HDI)
-- simply never match "Q%d+$" here and stay nil.
local unitQid = mainsnak.datavalue.value.unit and mainsnak.datavalue.value.unit:match("Q%d+$")
if amount then
table.insert(results, {
amount = amount,
rawAmount = rawAmount and rawAmount:gsub("^%+", ""),
year = year,
unitQid = unitQid,
})
end
end
end
table.sort(results, function(a, b) return (a.year or 0) < (b.year or 0) end)
return results
end
-- Compares `number` against whichever fetched statement is the closest one
-- strictly before `year` -- or, with no year, the single most recent
-- statement -- even when that statement isn't itself shown as a row. Used
-- for both manual and Wikidata-sourced values alike.
local function trendAgainstWikidata(number, year, allEntries)
if not number or not allEntries or #allEntries == 0 then return nil end
local prev = nil
for _, entry in ipairs(allEntries) do
if year then
if entry.year and entry.year < year and (not prev or entry.year > prev.year) then prev = entry end
elseif not prev or (entry.year or 0) > (prev.year or 0) then
prev = entry
end
end
if not prev then return nil end
if number > prev.amount then return "up" end
if number < prev.amount then return "down" end
return "steady"
end
local function getWdReferenceForValue(property, rawAmount)
if not wdOK or not Wd or not Wd._reference or not rawAmount then return nil end
local ok, result = pcall(Wd._reference, {"best", property, rawAmount})
if ok and result and result ~= "" then return result end
return nil
end
-- Raw QIDs of EVERY value of an entity-valued property on the current
-- page's own item -- e.g. every P38 (currency) statement, for a country
-- using more than one.
local function getWdRawPropertyIds(property)
if not wdOK or not Wd or not Wd._properties then return {} end
local ok, result = pcall(Wd._properties, {"raw", property})
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- Raw value of a property on a FOREIGN Wikidata item (e.g. P498 on the
-- currency item, not the country's own item) -- same eid-keyed pattern as
-- reiltys.lua's getWdRawForeignPropertyIds, singular version.
local function getWdForeignPropertyRaw(eid, property)
if not wdOK or not Wd or not Wd._property or not eid then return nil end
local callArgs = {"raw", "best", property}
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result ~= "" then return result end
return nil
end
-- The short symbol (e.g. "$") of a currency/unit item, via P5061 -- read
-- directly off mw.wikibase (a monolingualtext value, so Wd's plain-string
-- commands don't fit), same technique as Module:WikidataIB. Prefers a
-- language-neutral ("mul") or English value; falls back to whichever
-- language is available rather than showing nothing.
local function getWdUnitSymbol(unitQid)
if not unitQid then return nil end
local ok, statements = pcall(mw.wikibase.getBestStatements, unitQid, UNIT_SYMBOL_PROPERTY)
if not ok or not statements then return nil end
local fallback = nil
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
local value = mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue and mainsnak.datavalue.value
if value and value.text then
if value.language == "mul" or value.language == "en" then return value.text end
fallback = fallback or value.text
end
end
return fallback
end
-- Manx sitelink -> Manx label (redlink) -> English (or other) label with a
-- language marker, linked to Wikidata directly. Capitalized -- Wikidata
-- labels are commonly stored lower-case ("dollar ny Steatyn Unnaneysit"),
-- but this is always the first word of the field.
local function getCurrencyLink(qid)
local sitelinkOk, sitelink = pcall(mw.wikibase.getSitelink, qid, "gvwiki")
local labelOk, label, lang = pcall(mw.wikibase.getLabelWithLang, qid)
local link
if sitelinkOk and sitelink then
local displayText = (labelOk and lang == "gv" and label) or sitelink
if displayText ~= sitelink then
link = "[[" .. sitelink .. "|" .. displayText .. "]]"
else
link = "[[" .. sitelink .. "]]"
end
elseif labelOk and label and lang == "gv" then
link = "[[" .. label .. "]]"
elseif labelOk and label then
link = "[https://www.wikidata.org/wiki/" .. qid .. "?uselang=gv " .. label .. "] <small>(" .. lang .. ")</small>"
end
return link and capitalizeFirstLetter(link) or nil
end
-- Resolves one quantity field: a manual override (or "none" suppression)
-- wins outright; otherwise the latest non-deprecated Wikidata statement.
-- Returns "none" (suppressed), nil (no data), or a table
-- {str, number, year, trend, citation}.
local function resolveQuantityField(args, names, yearNames, property, statements, decimals)
local manual = getManual(args, names)
if manual then
if isNone(manual) then return "none" end
-- splitManualNumber (not a plain tonumber) so a manual value with
-- trailing content -- typically an inline <ref>, already a UNIQ
-- strip marker by the time this module sees it, since the OLD
-- template had no separate citation parameter for these fields --
-- still parses as a number instead of falling back to raw,
-- unformatted text. The trailing content itself is preserved via
-- `tail`, not discarded.
local number, tail = splitManualNumber(manual)
local year = yearNames and getManual(args, yearNames)
local parsedYear = year and tonumber(year:match("%-?%d+"))
local trend = trendAgainstWikidata(number, parsedYear, statements)
return {str = manual, number = number, tail = tail, year = year, trend = trend, citation = nil}
end
local latest = nil
for _, entry in ipairs(statements) do
if not latest or (entry.year or 0) > (latest.year or 0) then latest = entry end
end
if not latest then return nil end
local trend = trendAgainstWikidata(latest.amount, latest.year, statements)
local citation = getWdReferenceForValue(property, latest.rawAmount)
return {
str = formatNumber(latest.amount, decimals),
number = latest.amount,
year = latest.year and tostring(latest.year) or nil,
trend = trend,
citation = citation,
unitQid = latest.unitQid,
}
end
-- All non-deprecated P1082 (population) statements on the current page's
-- own item, reduced to {amount, year} -- a smaller duplicate of
-- pobble.lua's own getWdPopulationStatements (kept independent, per this
-- project's per-submodule convention), since all this module needs is a
-- population figure for one specific year, not census/estimate
-- classification.
local function getWdPopulationStatements()
local entity = mw.wikibase.getEntityObject()
if not entity then return {} end
local statements = entity:getAllStatements(POPULATION_PROPERTY)
if not statements then return {} end
local results = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if statement.rank ~= "deprecated" and mainsnak and mainsnak.snaktype == "value"
and mainsnak.datavalue and mainsnak.datavalue.type == "quantity" then
local amount = tonumber(mainsnak.datavalue.value.amount)
local timeQuals = statement.qualifiers and statement.qualifiers.P585
local timeSnak = timeQuals and timeQuals[1]
local timeValue = timeSnak and timeSnak.datavalue and timeSnak.datavalue.value
local year = timeValue and timeValue.time and tonumber(timeValue.time:match("(%-?%d+)%-"))
if amount and year then
table.insert(results, {amount = amount, year = year})
end
end
end
return results
end
-- The population figure for an EXACT year, or nil if Wikidata has none for
-- that year -- deliberately no nearest-year fallback, per your own
-- instruction that the population year must match the GDP year, not just
-- be close to it. When more than one statement shares that year (e.g. a
-- census and an estimate both dated the same year), the later one found
-- wins -- an arbitrary but deterministic tie-break, since nothing here can
-- tell which one an editor would consider "the" figure for that year.
local function getWdPopulationForYear(year)
if not year then return nil end
local match = nil
for _, entry in ipairs(getWdPopulationStatements()) do
if entry.year == year then match = entry end
end
return match and match.amount or nil
end
-- Computed LTS-per-capita fallback ("yn dooinney"): when there's no manual
-- value and no Wikidata P2132 statement at all, GDP total divided by
-- population -- but ONLY when Wikidata has a population figure for the
-- EXACT SAME year as the GDP total being used. No citation is attached: a
-- computed ratio isn't one citable statement, same precedent as
-- pobble.lua's own population-density calculation. Scope: the nominal
-- ("ennymagh") block only, matching your own wording ("LTS per capita") --
-- not the PPP (CCC) block, which you didn't mention and which
-- conventionally isn't derived this way on enwiki either.
local function computeGdpPerCapita(total, decimals)
if not total or not total.number then return nil end
local year = total.year and tonumber(total.year:match("%-?%d+"))
if not year then return nil end
local population = getWdPopulationForYear(year)
if not population or population <= 0 then return nil end
local value = total.number / population
return {
str = formatNumber(value, decimals),
number = value,
year = total.year,
trend = nil,
citation = nil,
unitQid = total.unitQid,
}
end
-- One "total + per-capita" block (CCC/PPP or LTS/nominal): a top row with
-- the block's own year, then "Yn clane"/"Yn dooinney" bullet sub-rows --
-- matching the old template's own two labels, just on the project's
-- established 2-column grid instead of its old 3-column one.
local function buildGdpBlock(args, frame, spec)
local totalStatements = getWdQuantityStatements(spec.totalProperty)
local percapitaStatements = getWdQuantityStatements(spec.percapitaProperty)
local total = resolveQuantityField(args, spec.totalNames, spec.yearNames, spec.totalProperty, totalStatements, 0)
local percapita = resolveQuantityField(args, spec.percapitaNames, spec.yearNames, spec.percapitaProperty, percapitaStatements, 0)
-- Computed fallback (nominal/"ennymagh" block only -- see
-- computeGdpPerCapita's own comment). Only when there's genuinely no
-- manual value and no Wikidata statement at all: percapita == nil,
-- never "none" -- a manual |..._dooinney=none must still suppress the
-- row rather than being replaced by a computed one.
if percapita == nil and spec.populationFallback and type(total) == "table" then
percapita = computeGdpPerCapita(total, 0)
end
local totalShown = type(total) == "table"
local percapitaShown = type(percapita) == "table"
if not totalShown and not percapitaShown then return nil end
local year = getManual(args, spec.yearNames)
or (totalShown and total.year)
or (percapitaShown and percapita.year)
local rows = {}
local headerLabel = getManual(args, spec.headerOverrideNames) or spec.headerLabel
table.insert(rows, string.format(ROW, trClass("mergedtoprow"), headerLabel, year and ("Ooley " .. year) or ""))
local items = {}
if totalShown then
local rhenk = getManual(args, spec.totalRhenkNames)
local ref = getManual(args, spec.totalRefNames)
local note = getManual(args, spec.totalNoteNames)
-- Symbol from THIS statement's own currency (never assumed) --
-- manual entries carry no unit data, so no symbol unless the
-- editor includes one themselves in the manual value.
local symbol = getWdUnitSymbol(total.unitQid) or ""
local value = glueTrend(total.trend, symbol .. formatGdpDisplay(total, true)) .. " "
if rhenk then value = value .. "([[" .. spec.totalRhenkLink .. "|" .. rhenk .. "]]) " end
if total.citation then value = stripTrailingSpace(value) .. total.citation end
value = applyRefNote(value, ref, note, frame)
table.insert(items, {"Yn clane", value})
end
if percapitaShown then
local rhenk = getManual(args, spec.percapitaRhenkNames)
local ref = getManual(args, spec.percapitaRefNames)
local note = getManual(args, spec.percapitaNoteNames)
local symbol = getWdUnitSymbol(percapita.unitQid) or ""
-- Per-capita stays a plain grouped number, matching enwiki's own
-- convention (only the TOTAL gets abbreviated to trillion/billion/
-- million/thousand words).
local value = glueTrend(percapita.trend, symbol .. formatGdpDisplay(percapita, false)) .. " "
if rhenk then value = value .. "([[" .. spec.percapitaRhenkLink .. "|" .. rhenk .. "]]) " end
if percapita.citation then value = stripTrailingSpace(value) .. percapita.citation end
value = applyRefNote(value, ref, note, frame)
table.insert(items, {"Yn dooinney", value})
end
appendIndentRun(rows, items)
return table.concat(rows)
end
-- HDI (ALD) bands: thresholds, Manx labels, and font colours exactly as
-- given directly by you.
local function classifyHdiBand(value)
if not value then return nil end
if value >= 0.800 then return "feer ard", "darkgreen" end
if value >= 0.700 then return "ard", "green" end
if value >= 0.550 then return "meanagh", "orange" end
return "injil", "red"
end
-- Gini can be recorded as either a 0-1 fraction or a 0-100 percentage on
-- Wikidata (and by a manual override) -- normalise to a fraction first so
-- the same thresholds apply regardless of which scale the source used.
local function normalizeGiniFraction(value)
if value > 1 then return value / 100 end
return value
end
-- Gini bands: thresholds, Manx labels, and font colours exactly as given
-- directly by you. The medium band is the closed interval [0.30, 0.40] --
-- low is strictly below it, high strictly above -- so the three bands
-- partition the whole range with no gap and no overlap.
local function classifyGiniBand(value)
if not value then return nil end
local fraction = normalizeGiniFraction(value)
if fraction < 0.30 then return "anchorrymid injil", "green" end
if fraction <= 0.40 then return "anchorrymid veanagh", "dimgray" end
return "anchorrymid ard", "red"
end
-- One flat label+value row (Gini, ALD): matches the old template's shape
-- but on the project's established 2-column ROW grid, not its old
-- colspan="2"-label-plus-separate-value-cell layout.
local function buildSingleRow(args, frame, spec)
local statements = getWdQuantityStatements(spec.property)
local field = resolveQuantityField(args, spec.valueNames, spec.yearNames, spec.property, statements, spec.decimals)
if not field or field == "none" then return nil end
local label = getManual(args, spec.headerOverrideNames) or spec.headerLabel
local year = getManual(args, spec.yearNames) or field.year
if year then label = label .. " (" .. year .. ")" end
local rhenk = getManual(args, spec.rhenkNames)
local ref = getManual(args, spec.refNames)
local note = getManual(args, spec.noteNames)
-- Band: a manual value always wins outright, including
-- |..._ronney=none to suppress the band entirely (same manual-beats-
-- everything philosophy as the rest of this module, e.g. Slovakia's
-- motto override) -- in neither case does it fall through to automatic
-- classification. Only with no manual value at all does the band get
-- computed automatically from whatever number is actually being
-- shown, whether that number came from Wikidata or a manual override.
local rawBand = spec.bandNames and getManual(args, spec.bandNames)
local band, bandColor
if rawBand then
if not isNone(rawBand) then band = rawBand end
elseif spec.classifyBand and field.number then
band, bandColor = spec.classifyBand(field.number)
end
local value = glueTrend(field.trend, field.str) .. " "
if band then
-- Nowrapped so the band's own words (e.g. "anchorrymid ard") can't
-- split across lines -- the whole "(...)" is free to wrap onto its
-- own line instead, same principle as glueTrend for the value itself.
local bandText = bandColor and ('<span style="color:' .. bandColor .. ';">' .. band .. "</span>") or band
value = value .. '<span style="white-space:nowrap;">(' .. bandText .. ")</span> "
end
if rhenk then value = value .. "([[" .. spec.rhenkLink .. "|" .. rhenk .. "]]) " end
if field.citation then value = stripTrailingSpace(value) .. field.citation end
value = applyRefNote(value, ref, note, frame)
return string.format(ROW, "", label, value)
end
-- One "name ($) (CODE)" line for a single currency item.
local function buildCurrencyLine(qid, codeOverride)
local nameStr = getCurrencyLink(qid)
if not nameStr then return nil end
local symbol = getWdUnitSymbol(qid)
local codeStr = codeOverride or getWdForeignPropertyRaw(qid, ISO_CODE_PROPERTY)
local line = nameStr
if symbol then line = line .. " (" .. symbol .. ")" end
if codeStr then line = line .. " (<code>[[ISO 4217|" .. codeStr .. "]]</code>)" end
return line
end
local function buildCurrencyRow(args, frame)
local nameManual = getManual(args, {"argid"})
local codeManual = getManual(args, {"coad_argid"})
local ref = getManual(args, {"imraa_argid"})
local note = getManual(args, {"noteyn_argid"})
local headerLabel = getManual(args, {"sorçh_argid"}) or "[[Argid cadjin|Argid]]"
if isNone(nameManual) then return nil end
local value
if nameManual then
-- Manual text passes through as typed. Numbered slots (argid2,
-- coad_argid2, ...) support a second or further currency, e.g.
-- the Isle of Man or the Faroe Islands, joined like the Wikidata
-- multi-currency path below.
local line1 = nameManual
if codeManual then line1 = line1 .. " (<code>[[ISO 4217|" .. codeManual .. "]]</code>)" end
local lines = {line1}
local n = 2
while true do
local name = getManual(args, {"argid" .. n})
if not name then break end
local code = getManual(args, {"coad_argid" .. n})
local line = name
if code then line = line .. " (<code>[[ISO 4217|" .. code .. "]]</code>)" end
table.insert(lines, line)
n = n + 1
end
value = table.concat(lines, "<br/>")
else
-- Every P38 currency (a country can use more than one), each its
-- own line -- not just the single "best" one.
local currencyQids = getWdRawPropertyIds(CURRENCY_PROPERTY)
if #currencyQids == 0 then return nil end
local lines = {}
for _, qid in ipairs(currencyQids) do
local line = buildCurrencyLine(qid, #currencyQids == 1 and codeManual or nil)
if line then table.insert(lines, line) end
end
if #lines == 0 then return nil end
value = table.concat(lines, "<br/>")
end
value = applyRefNote(value, ref, note, frame)
return string.format(ROW, "", headerLabel, value)
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
-- Old template order: PPP (CCK/CCC) block first, nominal (ennymagh)
-- second, then Gini, ALD, Currency.
local cccBlock = buildGdpBlock(args, frame, {
totalNames = {"ccc", "LTS_CCK"},
percapitaNames = {"ccc_dooinney", "LTS_CCK_yn_dooinney"},
yearNames = {"blein_ccc", "blein_LTS_CCK"},
totalRhenkNames = {"rhenk_ccc", "rhenk_LTS_CCK"},
percapitaRhenkNames = {"rhenk_ccc_dooinney", "rhenk_LTS_CCK_yn_dooinney"},
totalRefNames = {"imraa_ccc"}, totalNoteNames = {"noteyn_ccc"},
percapitaRefNames = {"imraa_ccc_dooinney"}, percapitaNoteNames = {"noteyn_ccc_dooinney"},
headerOverrideNames = {"sorçh_ccc"},
headerLabel = "[[Lane troar sthie|LTS]] (CCC)",
totalProperty = GDP_PPP_TOTAL, percapitaProperty = GDP_PPP_PERCAPITA,
totalRhenkLink = "Rolley çheeraghyn rere LTS (CCC)",
percapitaRhenkLink = "Rolley çheeraghyn rere LTS (CCC) yn dooinney",
})
appendSection(rows, cccBlock and {cccBlock} or nil)
local ltsBlock = buildGdpBlock(args, frame, {
totalNames = {"lts_ennymagh", "LTS_ennymagh"},
percapitaNames = {"lts_ennymagh_dooinney", "LTS_ennymagh_yn_dooinney"},
yearNames = {"blein_lts_ennymagh", "blein_LTS_ennymagh"},
totalRhenkNames = {"rhenk_lts_ennymagh", "rhenk_LTS_ennymagh"},
percapitaRhenkNames = {"rhenk_lts_ennymagh_dooinney", "rhenk_LTS_ennymagh_yn_dooinney"},
totalRefNames = {"imraa_lts_ennymagh"}, totalNoteNames = {"noteyn_lts_ennymagh"},
percapitaRefNames = {"imraa_lts_ennymagh_dooinney"}, percapitaNoteNames = {"noteyn_lts_ennymagh_dooinney"},
headerOverrideNames = {"sorçh_lts_ennymagh"},
headerLabel = "[[Lane troar sthie|LTS]] (ennymagh)",
totalProperty = GDP_NOMINAL_TOTAL, percapitaProperty = GDP_NOMINAL_PERCAPITA,
totalRhenkLink = "Rolley çheeraghyn rere LTS (ennymagh)",
percapitaRhenkLink = "Rolley çheeraghyn rere LTS (ennymagh) yn dooinney",
populationFallback = true,
})
appendSection(rows, ltsBlock and {ltsBlock} or nil)
local giniRow = buildSingleRow(args, frame, {
valueNames = {"gini", "Gini"},
yearNames = {"blein_gini", "blein_Gini"},
bandNames = {"ronney_gini", "ronney_Gini"},
rhenkNames = {"rhenk_gini", "rhenk_Gini"},
refNames = {"imraa_gini"}, noteNames = {"noteyn_gini"},
headerOverrideNames = {"sorçh_gini"},
headerLabel = "[[Co-effaght Gini|Gini]]",
rhenkLink = "Rolley çheeraghyn rere co-chormid çheet stiagh",
property = GINI_PROPERTY, decimals = 1,
classifyBand = classifyGiniBand,
})
appendSection(rows, giniRow and {giniRow} or nil)
local aldRow = buildSingleRow(args, frame, {
valueNames = {"ald", "ALD"},
yearNames = {"blein_ald", "blein_ALD"},
bandNames = {"ronney_ald", "ronney_ALD"},
rhenkNames = {"rhenk_ald", "rhenk_ALD"},
refNames = {"imraa_ald"}, noteNames = {"noteyn_ald"},
headerOverrideNames = {"sorçh_ald"},
headerLabel = "[[Ayndagh Lhiasaghey Deiney|ALD]]",
rhenkLink = "Rolley çheeraghyn rere Ayndagh Lhiasaghey Deiney",
property = HDI_PROPERTY, decimals = 3,
classifyBand = classifyHdiBand,
})
appendSection(rows, aldRow and {aldRow} or nil)
local currencyRow = buildCurrencyRow(args, frame)
appendSection(rows, currencyRow and {currencyRow} or nil)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
6jp69ti0zqkpkr0d7lgh64j8hf9kl93
394573
394542
2026-10-16T17:37:11Z
MacTire02
219
-chaghteraghtyn
394573
Scribunto
text/plain
local p = {}
-- Wikidata properties, verified individually before use (never guessed):
-- P2131/P2132 nominal GDP total/per-capita, P4010/P2299 PPP GDP
-- total/per-capita, P1125 Gini, P1081 HDI, P38 currency, P498 ISO 4217 code.
local GDP_NOMINAL_TOTAL = "P2131"
local GDP_NOMINAL_PERCAPITA = "P2132"
local GDP_PPP_TOTAL = "P4010"
local GDP_PPP_PERCAPITA = "P2299"
local GINI_PROPERTY = "P1125"
local HDI_PROPERTY = "P1081"
local CURRENCY_PROPERTY = "P38"
local ISO_CODE_PROPERTY = "P498"
local UNIT_SYMBOL_PROPERTY = "P5061" -- confirmed against Module:WikidataIB's own usage
-- P1082 population -- same property pobble.lua reads for its census/
-- estimate rows, reused here independently for the LTS-per-capita
-- computed fallback below.
local POPULATION_PROPERTY = "P1082"
local wdOK, Wd = pcall(require, "Module:Wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Capitalizes via the content language's own ucfirst (UTF-8/digraph-safe),
-- not a plain Lua upper() on byte 1. Duplicated from reiltys.lua.
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
-- Capitalizes the first letter a reader actually sees, even through a
-- leading wikilink or external-link marker (getCurrencyLink's two linked
-- shapes) -- Wikidata labels are commonly stored lower-case. Never applied
-- to manual values.
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("%]%]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos
else
splitPos = 2
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
-- Strips trailing literal spaces and/or " " (in any mix or repeat --
-- e.g. a value that ends "... " with no rhenk/band actually appended
-- after it) so a note, reference, or auto-citation glues directly onto the
-- claim it belongs to, with no visible or non-breaking gap in between.
local function stripTrailingSpace(value)
local changed = true
while changed do
local stripped = value:gsub("%s+$", ""):gsub(" $", "")
changed = (stripped ~= value)
value = stripped
end
return value
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
local hasNote = note and note ~= "" and frame
local hasRef = ref and ref ~= ""
if hasNote or hasRef then
value = stripTrailingSpace(value)
end
if hasNote then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if hasRef then
value = value .. wrapReference(ref)
end
return value
end
-- Same row grid as reiltys/pobble: ROW is a plain label+value row, SUBROW a
-- bulleted sub-item beneath a shared block.
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function appendIndentRun(rows, items)
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(SUBROW, trClass(class), item[1], item[2]))
end
end
-- Divider between this module's own internal blocks (CCC / LTS / Gini /
-- ALD / Argid) -- same rule as reiltys: only between two blocks that both
-- produced rows.
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
local function formatNumber(n, decimals)
decimals = decimals or 2
local isNeg = n < 0
n = math.abs(n)
local formatted = string.format("%." .. decimals .. "f", n)
if formatted:find("%.") then
formatted = formatted:gsub("0+$", ""):gsub("%.$", "")
end
local intPart, decPart = formatted:match("^(%d+)%.?(%d*)$")
local grouped = intPart:reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
local result = (decPart and decPart ~= "") and (grouped .. "." .. decPart) or grouped
return isNeg and ("-" .. result) or result
end
-- Large-number Manx words, as given directly by you. Applied only to GDP
-- TOTAL figures (not per-capita, not Gini/ALD) -- matching enwiki's own
-- convention of abbreviating a total ("$32.384 trillion") while showing
-- per-capita in full ("$94,430").
local SCALE_WORDS = {
{1e12, "trillioon"},
{1e9, "billoon"},
{1e6, "millioon"},
{1e3, "thousane"},
}
local function abbreviateNumber(n)
for _, scale in ipairs(SCALE_WORDS) do
local threshold, word = scale[1], scale[2]
if math.abs(n) >= threshold then
return formatNumber(n / threshold, 3) .. " " .. word
end
end
return formatNumber(n, 0)
end
-- Splits a manual numeric value into {number, tail}: strips comma
-- separators, then takes the leading numeric run. Anything left over (an
-- inline <ref>...</ref>, already a UNIQ strip marker by the time this
-- module sees it, or other trailing text) is kept, not discarded -- the
-- old template had no separate citation parameter for these fields, so on
-- existing articles a citation can sit directly inside the value itself,
-- e.g. |LTS_ennymagh = 28,750,956,130,000<ref>...</ref>.
local function splitManualNumber(text)
local stripped = text:gsub(",", "")
local numStr, tail = stripped:match("^(%-?%d+%.?%d*)(.*)$")
if not numStr then return nil, nil end
tail = mw.text.trim(tail)
return tonumber(numStr), tail ~= "" and tail or nil
end
-- Applies to a GDP field's own number, whether manual or Wikidata-sourced
-- -- unlike every other manual value in this module, a manual GDP figure
-- IS reformatted (scaled/grouped), since the whole point of this feature
-- is the number's presentation, not just its source. `field.str` (the
-- manual text as typed) is the fallback only for the rare manual value
-- that doesn't parse as a plain number at all. Any trailing text captured
-- alongside the number (typically an inline citation) is preserved
-- immediately after the reformatted number.
local function formatGdpDisplay(field, abbreviate)
if not field.number then return field.str end
local numStr = abbreviate and abbreviateNumber(field.number) or formatNumber(field.number, 0)
if field.tail then return numStr .. field.tail end
return numStr
end
-- Matches the wiki's own {{Increase}}/{{Decrease}}/{{Steady}} styling exactly
-- (population deliberately uses no colour -- a separate, earlier decision
-- that does NOT generalise here). Increase/decrease use the site's actual
-- Coadan:Increase2.svg/Decrease2.svg icons, not hand-drawn coloured
-- triangles; steady is the site's blue ▬, per your template source.
local function trendArrow(direction)
if direction == "up" then
return "[[Coadan:Increase2.svg|11px|alt=Ardjaghey|link=|Ardjaghey]]"
elseif direction == "down" then
return "[[Coadan:Decrease2.svg|11px|alt=Leodaghey|link=|Leodaghey]]"
elseif direction == "steady" then
return '<span title="Corrym" style="color:#0AF; font-size: larger;">▬</span>'
end
return ""
end
-- A manual value can carry its OWN leading trend icon, typed by the editor
-- as {{increase}}/{{decrease}}/{{steady}} (old-template habit, e.g.
-- |LTS_CCK={{increase}} $6.932 billoon<ref>...</ref>). Those templates
-- are already expanded by the time this module sees the argument, so the
-- value starts with a Coadan:Increase2.svg/Decrease2.svg link (or the
-- steady span) -- which also means it can never parse as a plain number
-- (see splitManualNumber), so field.number is nil and no `trend` is
-- computed for it. A bare ▲/▼/▬/— glyph is matched too, in case an editor
-- typed the character directly. Returns the marker text and whatever
-- follows it (nil, text if no marker is present).
local LEADING_TREND_PATTERNS = {
"^%[%[Coadan:Increase2%.svg.-%]%]",
"^%[%[Coadan:Decrease2%.svg.-%]%]",
"^%[%[File:Increase2%.svg.-%]%]",
"^%[%[File:Decrease2%.svg.-%]%]",
"^<span[^>]*>▬</span>",
}
local function splitLeadingTrendMarker(text)
if not text or text == "" then return nil, text end
for _, pattern in ipairs(LEADING_TREND_PATTERNS) do
local s, e = text:find(pattern)
if s then return text:sub(s, e), text:sub(e + 1) end
end
for _, marker in ipairs({"▲", "▼", "▬", "—"}) do
if text:sub(1, #marker) == marker then return marker, text:sub(#marker + 1) end
end
return nil, text
end
-- Strips whatever separator (plain spaces and/or a literal " ") an
-- editor already put between their hand-typed icon and the value, so
-- glueTrend can supply exactly one " " instead of stacking two.
local function stripLeadingSeparator(text)
if not text then return text end
while true do
local stripped = text:gsub("^%s+", ""):gsub("^ ", "")
if stripped == text then return stripped end
text = stripped
end
end
-- Glues a trend icon to the number it belongs to, with a visible space
-- between them, so a line-wrap can never separate icon from value; anything
-- appended after (rank, band) stays free to wrap onto its own line. Covers
-- both an icon THIS module generated (`trend` given) and one already
-- sitting at the front of manually-typed `text` (see
-- splitLeadingTrendMarker above).
local function glueTrend(trend, text)
if trend then
return '<span style="white-space:nowrap;">' .. trendArrow(trend) .. " " .. text .. '</span>'
end
local marker, rest = splitLeadingTrendMarker(text)
if marker then
return '<span style="white-space:nowrap;">' .. marker .. " " .. stripLeadingSeparator(rest) .. '</span>'
end
return text
end
-- All non-deprecated statements of a quantity property, reduced to
-- {amount, rawAmount, year}, sorted ascending by year.
local function getWdQuantityStatements(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return {} end
local statements = entity:getAllStatements(property)
if not statements then return {} end
local results = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if statement.rank ~= "deprecated" and mainsnak and mainsnak.snaktype == "value"
and mainsnak.datavalue and mainsnak.datavalue.type == "quantity" then
local rawAmount = mainsnak.datavalue.value.amount
local amount = tonumber(rawAmount)
local timeQuals = statement.qualifiers and statement.qualifiers.P585
local timeSnak = timeQuals and timeQuals[1]
local timeValue = timeSnak and timeSnak.datavalue and timeSnak.datavalue.value
local year = timeValue and timeValue.time and tonumber(timeValue.time:match("(%-?%d+)%-"))
-- The statement's OWN currency/unit (e.g. a specific country's
-- dollar, not necessarily USD) -- never assumed, always read off
-- this exact statement. Dimensionless properties (Gini, HDI)
-- simply never match "Q%d+$" here and stay nil.
local unitQid = mainsnak.datavalue.value.unit and mainsnak.datavalue.value.unit:match("Q%d+$")
if amount then
table.insert(results, {
amount = amount,
rawAmount = rawAmount and rawAmount:gsub("^%+", ""),
year = year,
unitQid = unitQid,
})
end
end
end
table.sort(results, function(a, b) return (a.year or 0) < (b.year or 0) end)
return results
end
-- Compares `number` against whichever fetched statement is the closest one
-- strictly before `year` -- or, with no year, the single most recent
-- statement -- even when that statement isn't itself shown as a row. Used
-- for both manual and Wikidata-sourced values alike.
local function trendAgainstWikidata(number, year, allEntries)
if not number or not allEntries or #allEntries == 0 then return nil end
local prev = nil
for _, entry in ipairs(allEntries) do
if year then
if entry.year and entry.year < year and (not prev or entry.year > prev.year) then prev = entry end
elseif not prev or (entry.year or 0) > (prev.year or 0) then
prev = entry
end
end
if not prev then return nil end
if number > prev.amount then return "up" end
if number < prev.amount then return "down" end
return "steady"
end
local function getWdReferenceForValue(property, rawAmount)
if not wdOK or not Wd or not Wd._reference or not rawAmount then return nil end
local ok, result = pcall(Wd._reference, {"best", property, rawAmount})
if ok and result and result ~= "" then return result end
return nil
end
-- Raw QIDs of EVERY value of an entity-valued property on the current
-- page's own item -- e.g. every P38 (currency) statement, for a country
-- using more than one.
local function getWdRawPropertyIds(property)
if not wdOK or not Wd or not Wd._properties then return {} end
local ok, result = pcall(Wd._properties, {"raw", property})
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- Raw value of a property on a FOREIGN Wikidata item (e.g. P498 on the
-- currency item, not the country's own item) -- same eid-keyed pattern as
-- reiltys.lua's getWdRawForeignPropertyIds, singular version.
local function getWdForeignPropertyRaw(eid, property)
if not wdOK or not Wd or not Wd._property or not eid then return nil end
local callArgs = {"raw", "best", property}
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result ~= "" then return result end
return nil
end
-- The short symbol (e.g. "$") of a currency/unit item, via P5061 -- read
-- directly off mw.wikibase (a monolingualtext value, so Wd's plain-string
-- commands don't fit), same technique as Module:WikidataIB. Prefers a
-- language-neutral ("mul") or English value; falls back to whichever
-- language is available rather than showing nothing.
local function getWdUnitSymbol(unitQid)
if not unitQid then return nil end
local ok, statements = pcall(mw.wikibase.getBestStatements, unitQid, UNIT_SYMBOL_PROPERTY)
if not ok or not statements then return nil end
local fallback = nil
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
local value = mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue and mainsnak.datavalue.value
if value and value.text then
if value.language == "mul" or value.language == "en" then return value.text end
fallback = fallback or value.text
end
end
return fallback
end
-- Manx sitelink -> Manx label (redlink) -> English (or other) label with a
-- language marker, linked to Wikidata directly. Capitalized -- Wikidata
-- labels are commonly stored lower-case ("dollar ny Steatyn Unnaneysit"),
-- but this is always the first word of the field.
local function getCurrencyLink(qid)
local sitelinkOk, sitelink = pcall(mw.wikibase.getSitelink, qid, "gvwiki")
local labelOk, label, lang = pcall(mw.wikibase.getLabelWithLang, qid)
local link
if sitelinkOk and sitelink then
local displayText = (labelOk and lang == "gv" and label) or sitelink
if displayText ~= sitelink then
link = "[[" .. sitelink .. "|" .. displayText .. "]]"
else
link = "[[" .. sitelink .. "]]"
end
elseif labelOk and label and lang == "gv" then
link = "[[" .. label .. "]]"
elseif labelOk and label then
link = "[https://www.wikidata.org/wiki/" .. qid .. "?uselang=gv " .. label .. "] <small>(" .. lang .. ")</small>"
end
return link and capitalizeFirstLetter(link) or nil
end
-- Resolves one quantity field: a manual override (or "none" suppression)
-- wins outright; otherwise the latest non-deprecated Wikidata statement.
-- Returns "none" (suppressed), nil (no data), or a table
-- {str, number, year, trend, citation}.
local function resolveQuantityField(args, names, yearNames, property, statements, decimals)
local manual = getManual(args, names)
if manual then
if isNone(manual) then return "none" end
-- splitManualNumber (not a plain tonumber) so a manual value with
-- trailing content (typically an inline <ref>, already a UNIQ
-- strip marker here) still parses as a number instead of falling
-- back to raw, unformatted text; the trailing content is preserved
-- via `tail`, not discarded.
local number, tail = splitManualNumber(manual)
local year = yearNames and getManual(args, yearNames)
local parsedYear = year and tonumber(year:match("%-?%d+"))
local trend = trendAgainstWikidata(number, parsedYear, statements)
return {str = manual, number = number, tail = tail, year = year, trend = trend, citation = nil}
end
local latest = nil
for _, entry in ipairs(statements) do
if not latest or (entry.year or 0) > (latest.year or 0) then latest = entry end
end
if not latest then return nil end
local trend = trendAgainstWikidata(latest.amount, latest.year, statements)
local citation = getWdReferenceForValue(property, latest.rawAmount)
return {
str = formatNumber(latest.amount, decimals),
number = latest.amount,
year = latest.year and tostring(latest.year) or nil,
trend = trend,
citation = citation,
unitQid = latest.unitQid,
}
end
-- All non-deprecated P1082 (population) statements on the current page's
-- own item, reduced to {amount, year} -- a smaller duplicate of pobble.lua's
-- own getWdPopulationStatements, since this module only needs a population
-- figure for one specific year, not census/estimate classification.
local function getWdPopulationStatements()
local entity = mw.wikibase.getEntityObject()
if not entity then return {} end
local statements = entity:getAllStatements(POPULATION_PROPERTY)
if not statements then return {} end
local results = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if statement.rank ~= "deprecated" and mainsnak and mainsnak.snaktype == "value"
and mainsnak.datavalue and mainsnak.datavalue.type == "quantity" then
local amount = tonumber(mainsnak.datavalue.value.amount)
local timeQuals = statement.qualifiers and statement.qualifiers.P585
local timeSnak = timeQuals and timeQuals[1]
local timeValue = timeSnak and timeSnak.datavalue and timeSnak.datavalue.value
local year = timeValue and timeValue.time and tonumber(timeValue.time:match("(%-?%d+)%-"))
if amount and year then
table.insert(results, {amount = amount, year = year})
end
end
end
return results
end
-- The population figure for an EXACT year, or nil if Wikidata has none for
-- that year -- deliberately no nearest-year fallback, since the population
-- year must match the GDP year, not just be close to it. When more than
-- one statement shares that year, the later one found wins (an arbitrary
-- but deterministic tie-break).
local function getWdPopulationForYear(year)
if not year then return nil end
local match = nil
for _, entry in ipairs(getWdPopulationStatements()) do
if entry.year == year then match = entry end
end
return match and match.amount or nil
end
-- Computed LTS-per-capita fallback ("yn dooinney"): when there's no manual
-- value and no Wikidata P2132 statement at all, GDP total divided by
-- population -- but only when Wikidata has a population figure for the
-- exact same year as the GDP total being used. No citation is attached (a
-- computed ratio isn't one citable statement, same as pobble.lua's own
-- population-density calc). Scope: the nominal ("ennymagh") block only,
-- not PPP (CCC), which conventionally isn't derived this way either.
local function computeGdpPerCapita(total, decimals)
if not total or not total.number then return nil end
local year = total.year and tonumber(total.year:match("%-?%d+"))
if not year then return nil end
local population = getWdPopulationForYear(year)
if not population or population <= 0 then return nil end
local value = total.number / population
return {
str = formatNumber(value, decimals),
number = value,
year = total.year,
trend = nil,
citation = nil,
unitQid = total.unitQid,
}
end
-- One "total + per-capita" block (CCC/PPP or LTS/nominal): a top row with
-- the block's own year, then "Yn clane"/"Yn dooinney" bullet sub-rows --
-- matching the old template's own two labels, just on the project's
-- established 2-column grid instead of its old 3-column one.
local function buildGdpBlock(args, frame, spec)
local totalStatements = getWdQuantityStatements(spec.totalProperty)
local percapitaStatements = getWdQuantityStatements(spec.percapitaProperty)
local total = resolveQuantityField(args, spec.totalNames, spec.yearNames, spec.totalProperty, totalStatements, 0)
local percapita = resolveQuantityField(args, spec.percapitaNames, spec.yearNames, spec.percapitaProperty, percapitaStatements, 0)
-- Computed fallback (nominal/"ennymagh" block only -- see
-- computeGdpPerCapita's own comment). Only when there's genuinely no
-- manual value and no Wikidata statement at all: percapita == nil,
-- never "none" -- a manual |..._dooinney=none must still suppress the
-- row rather than being replaced by a computed one.
if percapita == nil and spec.populationFallback and type(total) == "table" then
percapita = computeGdpPerCapita(total, 0)
end
local totalShown = type(total) == "table"
local percapitaShown = type(percapita) == "table"
if not totalShown and not percapitaShown then return nil end
local year = getManual(args, spec.yearNames)
or (totalShown and total.year)
or (percapitaShown and percapita.year)
local rows = {}
local headerLabel = getManual(args, spec.headerOverrideNames) or spec.headerLabel
table.insert(rows, string.format(ROW, trClass("mergedtoprow"), headerLabel, year and ("Ooley " .. year) or ""))
local items = {}
if totalShown then
local rhenk = getManual(args, spec.totalRhenkNames)
local ref = getManual(args, spec.totalRefNames)
local note = getManual(args, spec.totalNoteNames)
-- Symbol from THIS statement's own currency (never assumed) --
-- manual entries carry no unit data, so no symbol unless the
-- editor includes one themselves in the manual value.
local symbol = getWdUnitSymbol(total.unitQid) or ""
local value = glueTrend(total.trend, symbol .. formatGdpDisplay(total, true)) .. " "
if rhenk then value = value .. "([[" .. spec.totalRhenkLink .. "|" .. rhenk .. "]]) " end
if total.citation then value = stripTrailingSpace(value) .. total.citation end
value = applyRefNote(value, ref, note, frame)
table.insert(items, {"Yn clane", value})
end
if percapitaShown then
local rhenk = getManual(args, spec.percapitaRhenkNames)
local ref = getManual(args, spec.percapitaRefNames)
local note = getManual(args, spec.percapitaNoteNames)
local symbol = getWdUnitSymbol(percapita.unitQid) or ""
-- Per-capita stays a plain grouped number, matching enwiki's own
-- convention (only the TOTAL gets abbreviated to trillion/billion/
-- million/thousand words).
local value = glueTrend(percapita.trend, symbol .. formatGdpDisplay(percapita, false)) .. " "
if rhenk then value = value .. "([[" .. spec.percapitaRhenkLink .. "|" .. rhenk .. "]]) " end
if percapita.citation then value = stripTrailingSpace(value) .. percapita.citation end
value = applyRefNote(value, ref, note, frame)
table.insert(items, {"Yn dooinney", value})
end
appendIndentRun(rows, items)
return table.concat(rows)
end
-- HDI (ALD) bands: thresholds, Manx labels, and font colours exactly as
-- given directly by you.
local function classifyHdiBand(value)
if not value then return nil end
if value >= 0.800 then return "feer ard", "darkgreen" end
if value >= 0.700 then return "ard", "green" end
if value >= 0.550 then return "meanagh", "orange" end
return "injil", "red"
end
-- Gini can be recorded as either a 0-1 fraction or a 0-100 percentage on
-- Wikidata (and by a manual override) -- normalise to a fraction first so
-- the same thresholds apply regardless of which scale the source used.
local function normalizeGiniFraction(value)
if value > 1 then return value / 100 end
return value
end
-- Gini bands: thresholds, Manx labels, and font colours exactly as given
-- directly by you. The medium band is the closed interval [0.30, 0.40] --
-- low is strictly below it, high strictly above -- so the three bands
-- partition the whole range with no gap and no overlap.
local function classifyGiniBand(value)
if not value then return nil end
local fraction = normalizeGiniFraction(value)
if fraction < 0.30 then return "anchorrymid injil", "green" end
if fraction <= 0.40 then return "anchorrymid veanagh", "dimgray" end
return "anchorrymid ard", "red"
end
-- One flat label+value row (Gini, ALD): matches the old template's shape
-- but on the project's established 2-column ROW grid, not its old
-- colspan="2"-label-plus-separate-value-cell layout.
local function buildSingleRow(args, frame, spec)
local statements = getWdQuantityStatements(spec.property)
local field = resolveQuantityField(args, spec.valueNames, spec.yearNames, spec.property, statements, spec.decimals)
if not field or field == "none" then return nil end
local label = getManual(args, spec.headerOverrideNames) or spec.headerLabel
local year = getManual(args, spec.yearNames) or field.year
if year then label = label .. " (" .. year .. ")" end
local rhenk = getManual(args, spec.rhenkNames)
local ref = getManual(args, spec.refNames)
local note = getManual(args, spec.noteNames)
-- Band: a manual value always wins outright, including
-- |..._ronney=none to suppress it entirely (same manual-beats-Wikidata
-- philosophy as the rest of this module). Only with no manual value at
-- all does the band get computed automatically from whatever number is
-- actually being shown.
local rawBand = spec.bandNames and getManual(args, spec.bandNames)
local band, bandColor
if rawBand then
if not isNone(rawBand) then band = rawBand end
elseif spec.classifyBand and field.number then
band, bandColor = spec.classifyBand(field.number)
end
local value = glueTrend(field.trend, field.str) .. " "
if band then
-- Nowrapped so the band's own words (e.g. "anchorrymid ard") can't
-- split across lines -- the whole "(...)" is free to wrap onto its
-- own line instead, same principle as glueTrend for the value itself.
local bandText = bandColor and ('<span style="color:' .. bandColor .. ';">' .. band .. "</span>") or band
value = value .. '<span style="white-space:nowrap;">(' .. bandText .. ")</span> "
end
if rhenk then value = value .. "([[" .. spec.rhenkLink .. "|" .. rhenk .. "]]) " end
if field.citation then value = stripTrailingSpace(value) .. field.citation end
value = applyRefNote(value, ref, note, frame)
return string.format(ROW, "", label, value)
end
-- One "name ($) (CODE)" line for a single currency item.
local function buildCurrencyLine(qid, codeOverride)
local nameStr = getCurrencyLink(qid)
if not nameStr then return nil end
local symbol = getWdUnitSymbol(qid)
local codeStr = codeOverride or getWdForeignPropertyRaw(qid, ISO_CODE_PROPERTY)
local line = nameStr
if symbol then line = line .. " (" .. symbol .. ")" end
if codeStr then line = line .. " (<code>[[ISO 4217|" .. codeStr .. "]]</code>)" end
return line
end
local function buildCurrencyRow(args, frame)
local nameManual = getManual(args, {"argid"})
local codeManual = getManual(args, {"coad_argid"})
local ref = getManual(args, {"imraa_argid"})
local note = getManual(args, {"noteyn_argid"})
local headerLabel = getManual(args, {"sorçh_argid"}) or "[[Argid cadjin|Argid]]"
if isNone(nameManual) then return nil end
local value
if nameManual then
-- Manual text passes through as typed. Numbered slots (argid2,
-- coad_argid2, ...) support a second or further currency, e.g.
-- the Isle of Man or the Faroe Islands, joined like the Wikidata
-- multi-currency path below.
local line1 = nameManual
if codeManual then line1 = line1 .. " (<code>[[ISO 4217|" .. codeManual .. "]]</code>)" end
local lines = {line1}
local n = 2
while true do
local name = getManual(args, {"argid" .. n})
if not name then break end
local code = getManual(args, {"coad_argid" .. n})
local line = name
if code then line = line .. " (<code>[[ISO 4217|" .. code .. "]]</code>)" end
table.insert(lines, line)
n = n + 1
end
value = table.concat(lines, "<br/>")
else
-- Every P38 currency (a country can use more than one), each its
-- own line -- not just the single "best" one.
local currencyQids = getWdRawPropertyIds(CURRENCY_PROPERTY)
if #currencyQids == 0 then return nil end
local lines = {}
for _, qid in ipairs(currencyQids) do
local line = buildCurrencyLine(qid, #currencyQids == 1 and codeManual or nil)
if line then table.insert(lines, line) end
end
if #lines == 0 then return nil end
value = table.concat(lines, "<br/>")
end
value = applyRefNote(value, ref, note, frame)
return string.format(ROW, "", headerLabel, value)
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
-- Old template order: PPP (CCK/CCC) block first, nominal (ennymagh)
-- second, then Gini, ALD, Currency.
local cccBlock = buildGdpBlock(args, frame, {
totalNames = {"ccc", "LTS_CCK"},
percapitaNames = {"ccc_dooinney", "LTS_CCK_yn_dooinney"},
yearNames = {"blein_ccc", "blein_LTS_CCK"},
totalRhenkNames = {"rhenk_ccc", "rhenk_LTS_CCK"},
percapitaRhenkNames = {"rhenk_ccc_dooinney", "rhenk_LTS_CCK_yn_dooinney"},
totalRefNames = {"imraa_ccc"}, totalNoteNames = {"noteyn_ccc"},
percapitaRefNames = {"imraa_ccc_dooinney"}, percapitaNoteNames = {"noteyn_ccc_dooinney"},
headerOverrideNames = {"sorçh_ccc"},
headerLabel = "[[Lane troar sthie|LTS]] (CCC)",
totalProperty = GDP_PPP_TOTAL, percapitaProperty = GDP_PPP_PERCAPITA,
totalRhenkLink = "Rolley çheeraghyn rere LTS (CCC)",
percapitaRhenkLink = "Rolley çheeraghyn rere LTS (CCC) yn dooinney",
})
appendSection(rows, cccBlock and {cccBlock} or nil)
local ltsBlock = buildGdpBlock(args, frame, {
totalNames = {"lts_ennymagh", "LTS_ennymagh"},
percapitaNames = {"lts_ennymagh_dooinney", "LTS_ennymagh_yn_dooinney"},
yearNames = {"blein_lts_ennymagh", "blein_LTS_ennymagh"},
totalRhenkNames = {"rhenk_lts_ennymagh", "rhenk_LTS_ennymagh"},
percapitaRhenkNames = {"rhenk_lts_ennymagh_dooinney", "rhenk_LTS_ennymagh_yn_dooinney"},
totalRefNames = {"imraa_lts_ennymagh"}, totalNoteNames = {"noteyn_lts_ennymagh"},
percapitaRefNames = {"imraa_lts_ennymagh_dooinney"}, percapitaNoteNames = {"noteyn_lts_ennymagh_dooinney"},
headerOverrideNames = {"sorçh_lts_ennymagh"},
headerLabel = "[[Lane troar sthie|LTS]] (ennymagh)",
totalProperty = GDP_NOMINAL_TOTAL, percapitaProperty = GDP_NOMINAL_PERCAPITA,
totalRhenkLink = "Rolley çheeraghyn rere LTS (ennymagh)",
percapitaRhenkLink = "Rolley çheeraghyn rere LTS (ennymagh) yn dooinney",
populationFallback = true,
})
appendSection(rows, ltsBlock and {ltsBlock} or nil)
local giniRow = buildSingleRow(args, frame, {
valueNames = {"gini", "Gini"},
yearNames = {"blein_gini", "blein_Gini"},
bandNames = {"ronney_gini", "ronney_Gini"},
rhenkNames = {"rhenk_gini", "rhenk_Gini"},
refNames = {"imraa_gini"}, noteNames = {"noteyn_gini"},
headerOverrideNames = {"sorçh_gini"},
headerLabel = "[[Co-effaght Gini|Gini]]",
rhenkLink = "Rolley çheeraghyn rere co-chormid çheet stiagh",
property = GINI_PROPERTY, decimals = 1,
classifyBand = classifyGiniBand,
})
appendSection(rows, giniRow and {giniRow} or nil)
local aldRow = buildSingleRow(args, frame, {
valueNames = {"ald", "ALD"},
yearNames = {"blein_ald", "blein_ALD"},
bandNames = {"ronney_ald", "ronney_ALD"},
rhenkNames = {"rhenk_ald", "rhenk_ALD"},
refNames = {"imraa_ald"}, noteNames = {"noteyn_ald"},
headerOverrideNames = {"sorçh_ald"},
headerLabel = "[[Ayndagh Lhiasaghey Deiney|ALD]]",
rhenkLink = "Rolley çheeraghyn rere Ayndagh Lhiasaghey Deiney",
property = HDI_PROPERTY, decimals = 3,
classifyBand = classifyHdiBand,
})
appendSection(rows, aldRow and {aldRow} or nil)
local currencyRow = buildCurrencyRow(args, frame)
appendSection(rows, currencyRow and {currencyRow} or nil)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
15zp29nm0stm32n0telbh7omwxa1k1h
394575
394573
2026-10-16T18:04:12Z
MacTire02
219
++
394575
Scribunto
text/plain
local p = {}
-- Wikidata properties, verified individually before use (never guessed):
-- P2131/P2132 nominal GDP total/per-capita, P4010/P2299 PPP GDP
-- total/per-capita, P1125 Gini, P1081 HDI, P38 currency, P498 ISO 4217 code.
local GDP_NOMINAL_TOTAL = "P2131"
local GDP_NOMINAL_PERCAPITA = "P2132"
local GDP_PPP_TOTAL = "P4010"
local GDP_PPP_PERCAPITA = "P2299"
local GINI_PROPERTY = "P1125"
local HDI_PROPERTY = "P1081"
local CURRENCY_PROPERTY = "P38"
local ISO_CODE_PROPERTY = "P498"
local UNIT_SYMBOL_PROPERTY = "P5061" -- confirmed against Module:WikidataIB's own usage
-- P1082 population -- same property pobble.lua reads for its census/
-- estimate rows, reused here independently for the LTS-per-capita
-- computed fallback below.
local POPULATION_PROPERTY = "P1082"
local wdOK, Wd = pcall(require, "Module:Wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
-- Capitalizes via the content language's own ucfirst (UTF-8/digraph-safe),
-- not a plain Lua upper() on byte 1. Duplicated from reiltys.lua.
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
-- Capitalizes the first letter a reader actually sees, even through a
-- leading wikilink or external-link marker (getCurrencyLink's two linked
-- shapes) -- Wikidata labels are commonly stored lower-case. Never applied
-- to manual values.
local function capitalizeFirstLetter(text)
if not text or text == "" then return text end
if text:match("^%[%[") then
local closePos = text:find("]]", 3, true)
local pipePos = text:find("|", 1, true)
local splitPos
if pipePos and (not closePos or pipePos < closePos) then
splitPos = pipePos
else
splitPos = 2
end
return text:sub(1, splitPos) .. wikiUcfirst(text:sub(splitPos + 1))
elseif text:match("^%[https?://") then
local spacePos = text:find(" ", 2, true)
if spacePos then
return text:sub(1, spacePos) .. wikiUcfirst(text:sub(spacePos + 1))
end
return text
end
return wikiUcfirst(text)
end
-- Strips trailing literal spaces and/or " " (in any mix or repeat --
-- e.g. a value that ends "... " with no rhenk/band actually appended
-- after it) so a note, reference, or auto-citation glues directly onto the
-- claim it belongs to, with no visible or non-breaking gap in between.
local function stripTrailingSpace(value)
local changed = true
while changed do
local stripped = value:gsub("%s+$", ""):gsub(" $", "")
changed = (stripped ~= value)
value = stripped
end
return value
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
local hasNote = note and note ~= "" and frame
local hasRef = ref and ref ~= ""
if hasNote or hasRef then
value = stripTrailingSpace(value)
end
if hasNote then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if hasRef then
value = value .. wrapReference(ref)
end
return value
end
-- Same row grid as reiltys/pobble: ROW is a plain label+value row, SUBROW a
-- bulleted sub-item beneath a shared block.
local ROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local SUBROW = '<tr%s><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
local function trClass(name)
if name and name ~= "" then return ' class="' .. name .. '"' end
return ""
end
local function appendIndentRun(rows, items)
for idx, item in ipairs(items) do
local class = (idx == #items) and "mergedbottomrow" or "mergedrow"
table.insert(rows, string.format(SUBROW, trClass(class), item[1], item[2]))
end
end
-- Divider between this module's own internal blocks (CCC / LTS / Gini /
-- ALD / Argid) -- same rule as reiltys: only between two blocks that both
-- produced rows.
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
local function appendSection(rows, sectionRows)
if sectionRows and #sectionRows > 0 then
if #rows > 0 then table.insert(rows, dividerLine) end
for _, row in ipairs(sectionRows) do
table.insert(rows, row)
end
end
end
local function formatNumber(n, decimals)
decimals = decimals or 2
local isNeg = n < 0
n = math.abs(n)
local formatted = string.format("%." .. decimals .. "f", n)
if formatted:find("%.") then
formatted = formatted:gsub("0+$", ""):gsub("%.$", "")
end
local intPart, decPart = formatted:match("^(%d+)%.?(%d*)$")
local grouped = intPart:reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
local result = (decPart and decPart ~= "") and (grouped .. "." .. decPart) or grouped
return isNeg and ("-" .. result) or result
end
-- Large-number Manx words, as given directly by you. Applied only to GDP
-- TOTAL figures (not per-capita, not Gini/ALD) -- matching enwiki's own
-- convention of abbreviating a total ("$32.384 trillion") while showing
-- per-capita in full ("$94,430").
local SCALE_WORDS = {
{1e12, "trillioon"},
{1e9, "billoon"},
{1e6, "millioon"},
{1e3, "thousane"},
}
local function abbreviateNumber(n)
for _, scale in ipairs(SCALE_WORDS) do
local threshold, word = scale[1], scale[2]
if math.abs(n) >= threshold then
return formatNumber(n / threshold, 3) .. " " .. word
end
end
return formatNumber(n, 0)
end
-- Splits a manual numeric value into {number, tail}: strips comma
-- separators, then takes the leading numeric run. Anything left over (an
-- inline <ref>...</ref>, already a UNIQ strip marker by the time this
-- module sees it, or other trailing text) is kept, not discarded -- the
-- old template had no separate citation parameter for these fields, so on
-- existing articles a citation can sit directly inside the value itself,
-- e.g. |LTS_ennymagh = 28,750,956,130,000<ref>...</ref>.
local function splitManualNumber(text)
local stripped = text:gsub(",", "")
local numStr, tail = stripped:match("^(%-?%d+%.?%d*)(.*)$")
if not numStr then return nil, nil end
tail = mw.text.trim(tail)
return tonumber(numStr), tail ~= "" and tail or nil
end
-- Applies to a GDP field's own number, whether manual or Wikidata-sourced
-- -- unlike every other manual value in this module, a manual GDP figure
-- IS reformatted (scaled/grouped), since the whole point of this feature
-- is the number's presentation, not just its source. `field.str` (the
-- manual text as typed) is the fallback only for the rare manual value
-- that doesn't parse as a plain number at all. Any trailing text captured
-- alongside the number (typically an inline citation) is preserved
-- immediately after the reformatted number.
local function formatGdpDisplay(field, abbreviate)
if not field.number then return field.str end
local numStr = abbreviate and abbreviateNumber(field.number) or formatNumber(field.number, 0)
if field.tail then return numStr .. field.tail end
return numStr
end
-- Matches the wiki's own {{Increase}}/{{Decrease}}/{{Steady}} styling exactly
-- (population deliberately uses no colour -- a separate, earlier decision
-- that does NOT generalise here). Increase/decrease use the site's actual
-- Coadan:Increase2.svg/Decrease2.svg icons, not hand-drawn coloured
-- triangles; steady is the site's blue ▬, per your template source.
local function trendArrow(direction)
if direction == "up" then
return "[[Coadan:Increase2.svg|11px|alt=Ardjaghey|link=|Ardjaghey]]"
elseif direction == "down" then
return "[[Coadan:Decrease2.svg|11px|alt=Leodaghey|link=|Leodaghey]]"
elseif direction == "steady" then
return '<span title="Corrym" style="color:#0AF; font-size: larger;">▬</span>'
end
return ""
end
-- A manual value can carry its OWN leading trend icon, typed by the editor
-- as {{increase}}/{{decrease}}/{{steady}} (old-template habit, e.g.
-- |LTS_CCK={{increase}} $6.932 billoon<ref>...</ref>). Those templates
-- are already expanded by the time this module sees the argument, so the
-- value starts with a Coadan:Increase2.svg/Decrease2.svg link (or the
-- steady span) -- which also means it can never parse as a plain number
-- (see splitManualNumber), so field.number is nil and no `trend` is
-- computed for it. A bare ▲/▼/▬/— glyph is matched too, in case an editor
-- typed the character directly. Returns the marker text and whatever
-- follows it (nil, text if no marker is present).
local LEADING_TREND_PATTERNS = {
"^%[%[Coadan:Increase2%.svg.-%]%]",
"^%[%[Coadan:Decrease2%.svg.-%]%]",
"^%[%[File:Increase2%.svg.-%]%]",
"^%[%[File:Decrease2%.svg.-%]%]",
"^<span[^>]*>▬</span>",
}
local function splitLeadingTrendMarker(text)
if not text or text == "" then return nil, text end
for _, pattern in ipairs(LEADING_TREND_PATTERNS) do
local s, e = text:find(pattern)
if s then return text:sub(s, e), text:sub(e + 1) end
end
for _, marker in ipairs({"▲", "▼", "▬", "—"}) do
if text:sub(1, #marker) == marker then return marker, text:sub(#marker + 1) end
end
return nil, text
end
-- Strips whatever separator (plain spaces and/or a literal " ") an
-- editor already put between their hand-typed icon and the value, so
-- glueTrend can supply exactly one " " instead of stacking two.
local function stripLeadingSeparator(text)
if not text then return text end
while true do
local stripped = text:gsub("^%s+", ""):gsub("^ ", "")
if stripped == text then return stripped end
text = stripped
end
end
-- Glues a trend icon to the number it belongs to, with a visible space
-- between them, so a line-wrap can never separate icon from value; anything
-- appended after (rank, band) stays free to wrap onto its own line. Covers
-- both an icon THIS module generated (`trend` given) and one already
-- sitting at the front of manually-typed `text` (see
-- splitLeadingTrendMarker above).
local function glueTrend(trend, text)
if trend then
return '<span style="white-space:nowrap;">' .. trendArrow(trend) .. " " .. text .. '</span>'
end
local marker, rest = splitLeadingTrendMarker(text)
if marker then
return '<span style="white-space:nowrap;">' .. marker .. " " .. stripLeadingSeparator(rest) .. '</span>'
end
return text
end
-- All non-deprecated statements of a quantity property, reduced to
-- {amount, rawAmount, year}, sorted ascending by year.
local function getWdQuantityStatements(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return {} end
local statements = entity:getAllStatements(property)
if not statements then return {} end
local results = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if statement.rank ~= "deprecated" and mainsnak and mainsnak.snaktype == "value"
and mainsnak.datavalue and mainsnak.datavalue.type == "quantity" then
local rawAmount = mainsnak.datavalue.value.amount
local amount = tonumber(rawAmount)
local timeQuals = statement.qualifiers and statement.qualifiers.P585
local timeSnak = timeQuals and timeQuals[1]
local timeValue = timeSnak and timeSnak.datavalue and timeSnak.datavalue.value
local year = timeValue and timeValue.time and tonumber(timeValue.time:match("(%-?%d+)%-"))
-- The statement's OWN currency/unit (e.g. a specific country's
-- dollar, not necessarily USD) -- never assumed, always read off
-- this exact statement. Dimensionless properties (Gini, HDI)
-- simply never match "Q%d+$" here and stay nil.
local unitQid = mainsnak.datavalue.value.unit and mainsnak.datavalue.value.unit:match("Q%d+$")
if amount then
table.insert(results, {
amount = amount,
rawAmount = rawAmount and rawAmount:gsub("^%+", ""),
year = year,
unitQid = unitQid,
})
end
end
end
table.sort(results, function(a, b) return (a.year or 0) < (b.year or 0) end)
return results
end
-- Compares `number` against whichever fetched statement is the closest one
-- strictly before `year` -- or, with no year, the single most recent
-- statement -- even when that statement isn't itself shown as a row. Used
-- for both manual and Wikidata-sourced values alike.
local function trendAgainstWikidata(number, year, allEntries)
if not number or not allEntries or #allEntries == 0 then return nil end
local prev = nil
for _, entry in ipairs(allEntries) do
if year then
if entry.year and entry.year < year and (not prev or entry.year > prev.year) then prev = entry end
elseif not prev or (entry.year or 0) > (prev.year or 0) then
prev = entry
end
end
if not prev then return nil end
if number > prev.amount then return "up" end
if number < prev.amount then return "down" end
return "steady"
end
local function getWdReferenceForValue(property, rawAmount)
if not wdOK or not Wd or not Wd._reference or not rawAmount then return nil end
local ok, result = pcall(Wd._reference, {"best", property, rawAmount})
if ok and result and result ~= "" then return result end
return nil
end
-- Raw QIDs of EVERY value of an entity-valued property on the current
-- page's own item -- e.g. every P38 (currency) statement, for a country
-- using more than one.
local function getWdRawPropertyIds(property)
if not wdOK or not Wd or not Wd._properties then return {} end
local ok, result = pcall(Wd._properties, {"raw", property})
if not ok or not result or type(result) ~= "string" or result == "" then return {} end
local ids = {}
for id in result:gmatch("Q%d+") do
table.insert(ids, id)
end
return ids
end
-- Raw value of a property on a FOREIGN Wikidata item (e.g. P498 on the
-- currency item, not the country's own item) -- same eid-keyed pattern as
-- reiltys.lua's getWdRawForeignPropertyIds, singular version.
local function getWdForeignPropertyRaw(eid, property)
if not wdOK or not Wd or not Wd._property or not eid then return nil end
local callArgs = {"raw", "best", property}
callArgs[Wd.args and Wd.args.eid or "eid"] = eid
local ok, result = pcall(Wd._property, callArgs)
if ok and result and type(result) == "string" and result ~= "" then return result end
return nil
end
-- The short symbol (e.g. "$") of a currency/unit item, via P5061 -- read
-- directly off mw.wikibase (a monolingualtext value, so Wd's plain-string
-- commands don't fit), same technique as Module:WikidataIB. Prefers a
-- language-neutral ("mul") or English value; falls back to whichever
-- language is available rather than showing nothing.
local function getWdUnitSymbol(unitQid)
if not unitQid then return nil end
local ok, statements = pcall(mw.wikibase.getBestStatements, unitQid, UNIT_SYMBOL_PROPERTY)
if not ok or not statements then return nil end
local fallback = nil
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
local value = mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue and mainsnak.datavalue.value
if value and value.text then
if value.language == "mul" or value.language == "en" then return value.text end
fallback = fallback or value.text
end
end
return fallback
end
-- Manx sitelink -> Manx label (redlink) -> English (or other) label with a
-- language marker, linked to Wikidata directly. Capitalized -- Wikidata
-- labels are commonly stored lower-case ("dollar ny Steatyn Unnaneysit"),
-- but this is always the first word of the field.
local function getCurrencyLink(qid)
local sitelinkOk, sitelink = pcall(mw.wikibase.getSitelink, qid, "gvwiki")
local labelOk, label, lang = pcall(mw.wikibase.getLabelWithLang, qid)
local link
if sitelinkOk and sitelink then
local displayText = (labelOk and lang == "gv" and label) or sitelink
if displayText ~= sitelink then
link = "[[" .. sitelink .. "|" .. displayText .. "]]"
else
link = "[[" .. sitelink .. "]]"
end
elseif labelOk and label and lang == "gv" then
link = "[[" .. label .. "]]"
elseif labelOk and label then
link = "[https://www.wikidata.org/wiki/" .. qid .. "?uselang=gv " .. label .. "] <small>(" .. lang .. ")</small>"
end
return link and capitalizeFirstLetter(link) or nil
end
-- Resolves one quantity field: a manual override (or "none" suppression)
-- wins outright; otherwise the latest non-deprecated Wikidata statement.
-- Returns "none" (suppressed), nil (no data), or a table
-- {str, number, year, trend, citation}.
local function resolveQuantityField(args, names, yearNames, property, statements, decimals)
local manual = getManual(args, names)
if manual then
if isNone(manual) then return "none" end
-- splitManualNumber (not a plain tonumber) so a manual value with
-- trailing content (typically an inline <ref>, already a UNIQ
-- strip marker here) still parses as a number instead of falling
-- back to raw, unformatted text; the trailing content is preserved
-- via `tail`, not discarded.
local number, tail = splitManualNumber(manual)
local year = yearNames and getManual(args, yearNames)
local parsedYear = year and tonumber(year:match("%-?%d+"))
local trend = trendAgainstWikidata(number, parsedYear, statements)
return {str = manual, number = number, tail = tail, year = year, trend = trend, citation = nil}
end
local latest = nil
for _, entry in ipairs(statements) do
if not latest or (entry.year or 0) > (latest.year or 0) then latest = entry end
end
if not latest then return nil end
local trend = trendAgainstWikidata(latest.amount, latest.year, statements)
local citation = getWdReferenceForValue(property, latest.rawAmount)
return {
str = formatNumber(latest.amount, decimals),
number = latest.amount,
year = latest.year and tostring(latest.year) or nil,
trend = trend,
citation = citation,
unitQid = latest.unitQid,
}
end
-- All non-deprecated P1082 (population) statements on the current page's
-- own item, reduced to {amount, year} -- a smaller duplicate of pobble.lua's
-- own getWdPopulationStatements, since this module only needs a population
-- figure for one specific year, not census/estimate classification.
local function getWdPopulationStatements()
local entity = mw.wikibase.getEntityObject()
if not entity then return {} end
local statements = entity:getAllStatements(POPULATION_PROPERTY)
if not statements then return {} end
local results = {}
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
if statement.rank ~= "deprecated" and mainsnak and mainsnak.snaktype == "value"
and mainsnak.datavalue and mainsnak.datavalue.type == "quantity" then
local amount = tonumber(mainsnak.datavalue.value.amount)
local timeQuals = statement.qualifiers and statement.qualifiers.P585
local timeSnak = timeQuals and timeQuals[1]
local timeValue = timeSnak and timeSnak.datavalue and timeSnak.datavalue.value
local year = timeValue and timeValue.time and tonumber(timeValue.time:match("(%-?%d+)%-"))
if amount and year then
table.insert(results, {amount = amount, year = year})
end
end
end
return results
end
-- The population figure for an EXACT year, or nil if Wikidata has none for
-- that year -- deliberately no nearest-year fallback, since the population
-- year must match the GDP year, not just be close to it. When more than
-- one statement shares that year, the later one found wins (an arbitrary
-- but deterministic tie-break).
local function getWdPopulationForYear(year)
if not year then return nil end
local match = nil
for _, entry in ipairs(getWdPopulationStatements()) do
if entry.year == year then match = entry end
end
return match and match.amount or nil
end
-- Computed LTS-per-capita fallback ("yn dooinney"): when there's no manual
-- value and no Wikidata P2132 statement at all, GDP total divided by
-- population -- but only when Wikidata has a population figure for the
-- exact same year as the GDP total being used. No citation is attached (a
-- computed ratio isn't one citable statement, same as pobble.lua's own
-- population-density calc). Scope: the nominal ("ennymagh") block only,
-- not PPP (CCC), which conventionally isn't derived this way either.
local function computeGdpPerCapita(total, decimals)
if not total or not total.number then return nil end
local year = total.year and tonumber(total.year:match("%-?%d+"))
if not year then return nil end
local population = getWdPopulationForYear(year)
if not population or population <= 0 then return nil end
local value = total.number / population
return {
str = formatNumber(value, decimals),
number = value,
year = total.year,
trend = nil,
citation = nil,
unitQid = total.unitQid,
}
end
-- One "total + per-capita" block (CCC/PPP or LTS/nominal): a top row with
-- the block's own year, then "Yn clane"/"Yn dooinney" bullet sub-rows --
-- matching the old template's own two labels, just on the project's
-- established 2-column grid instead of its old 3-column one.
local function buildGdpBlock(args, frame, spec)
local totalStatements = getWdQuantityStatements(spec.totalProperty)
local percapitaStatements = getWdQuantityStatements(spec.percapitaProperty)
local total = resolveQuantityField(args, spec.totalNames, spec.yearNames, spec.totalProperty, totalStatements, 0)
local percapita = resolveQuantityField(args, spec.percapitaNames, spec.yearNames, spec.percapitaProperty, percapitaStatements, 0)
-- Computed fallback (nominal/"ennymagh" block only -- see
-- computeGdpPerCapita's own comment). Only when there's genuinely no
-- manual value and no Wikidata statement at all: percapita == nil,
-- never "none" -- a manual |..._dooinney=none must still suppress the
-- row rather than being replaced by a computed one.
if percapita == nil and spec.populationFallback and type(total) == "table" then
percapita = computeGdpPerCapita(total, 0)
end
local totalShown = type(total) == "table"
local percapitaShown = type(percapita) == "table"
if not totalShown and not percapitaShown then return nil end
local year = getManual(args, spec.yearNames)
or (totalShown and total.year)
or (percapitaShown and percapita.year)
local rows = {}
local headerLabel = getManual(args, spec.headerOverrideNames) or spec.headerLabel
table.insert(rows, string.format(ROW, trClass("mergedtoprow"), headerLabel, year and ("Ooley " .. year) or ""))
local items = {}
if totalShown then
local rhenk = getManual(args, spec.totalRhenkNames)
local ref = getManual(args, spec.totalRefNames)
local note = getManual(args, spec.totalNoteNames)
-- Symbol from THIS statement's own currency (never assumed) --
-- manual entries carry no unit data, so no symbol unless the
-- editor includes one themselves in the manual value.
local symbol = getWdUnitSymbol(total.unitQid) or ""
local value = glueTrend(total.trend, symbol .. formatGdpDisplay(total, true)) .. " "
if rhenk then value = value .. "([[" .. spec.totalRhenkLink .. "|" .. rhenk .. "]]) " end
if total.citation then value = stripTrailingSpace(value) .. total.citation end
value = applyRefNote(value, ref, note, frame)
table.insert(items, {"Yn clane", value})
end
if percapitaShown then
local rhenk = getManual(args, spec.percapitaRhenkNames)
local ref = getManual(args, spec.percapitaRefNames)
local note = getManual(args, spec.percapitaNoteNames)
local symbol = getWdUnitSymbol(percapita.unitQid) or ""
-- Per-capita stays a plain grouped number, matching enwiki's own
-- convention (only the TOTAL gets abbreviated to trillion/billion/
-- million/thousand words).
local value = glueTrend(percapita.trend, symbol .. formatGdpDisplay(percapita, false)) .. " "
if rhenk then value = value .. "([[" .. spec.percapitaRhenkLink .. "|" .. rhenk .. "]]) " end
if percapita.citation then value = stripTrailingSpace(value) .. percapita.citation end
value = applyRefNote(value, ref, note, frame)
table.insert(items, {"Yn dooinney", value})
end
appendIndentRun(rows, items)
return table.concat(rows)
end
-- HDI (ALD) bands: thresholds, Manx labels, and font colours exactly as
-- given directly by you.
local function classifyHdiBand(value)
if not value then return nil end
if value >= 0.800 then return "feer ard", "darkgreen" end
if value >= 0.700 then return "ard", "green" end
if value >= 0.550 then return "meanagh", "orange" end
return "injil", "red"
end
-- Gini can be recorded as either a 0-1 fraction or a 0-100 percentage on
-- Wikidata (and by a manual override) -- normalise to a fraction first so
-- the same thresholds apply regardless of which scale the source used.
local function normalizeGiniFraction(value)
if value > 1 then return value / 100 end
return value
end
-- Gini bands: thresholds, Manx labels, and font colours exactly as given
-- directly by you. The medium band is the closed interval [0.30, 0.40] --
-- low is strictly below it, high strictly above -- so the three bands
-- partition the whole range with no gap and no overlap.
local function classifyGiniBand(value)
if not value then return nil end
local fraction = normalizeGiniFraction(value)
if fraction < 0.30 then return "anchorrymid injil", "green" end
if fraction <= 0.40 then return "anchorrymid veanagh", "dimgray" end
return "anchorrymid ard", "red"
end
-- One flat label+value row (Gini, ALD): matches the old template's shape
-- but on the project's established 2-column ROW grid, not its old
-- colspan="2"-label-plus-separate-value-cell layout.
local function buildSingleRow(args, frame, spec)
local statements = getWdQuantityStatements(spec.property)
local field = resolveQuantityField(args, spec.valueNames, spec.yearNames, spec.property, statements, spec.decimals)
if not field or field == "none" then return nil end
local label = getManual(args, spec.headerOverrideNames) or spec.headerLabel
local year = getManual(args, spec.yearNames) or field.year
if year then label = label .. " (" .. year .. ")" end
local rhenk = getManual(args, spec.rhenkNames)
local ref = getManual(args, spec.refNames)
local note = getManual(args, spec.noteNames)
-- Band: a manual value always wins outright, including
-- |..._ronney=none to suppress it entirely (same manual-beats-Wikidata
-- philosophy as the rest of this module). Only with no manual value at
-- all does the band get computed automatically from whatever number is
-- actually being shown.
local rawBand = spec.bandNames and getManual(args, spec.bandNames)
local band, bandColor
if rawBand then
if not isNone(rawBand) then band = rawBand end
elseif spec.classifyBand and field.number then
band, bandColor = spec.classifyBand(field.number)
end
local value = glueTrend(field.trend, field.str) .. " "
if band then
-- Nowrapped so the band's own words (e.g. "anchorrymid ard") can't
-- split across lines -- the whole "(...)" is free to wrap onto its
-- own line instead, same principle as glueTrend for the value itself.
local bandText = bandColor and ('<span style="color:' .. bandColor .. ';">' .. band .. "</span>") or band
value = value .. '<span style="white-space:nowrap;">(' .. bandText .. ")</span> "
end
if rhenk then value = value .. "([[" .. spec.rhenkLink .. "|" .. rhenk .. "]]) " end
if field.citation then value = stripTrailingSpace(value) .. field.citation end
value = applyRefNote(value, ref, note, frame)
return string.format(ROW, "", label, value)
end
-- One "name ($) (CODE)" line for a single currency item.
local function buildCurrencyLine(qid, codeOverride)
local nameStr = getCurrencyLink(qid)
if not nameStr then return nil end
local symbol = getWdUnitSymbol(qid)
local codeStr = codeOverride or getWdForeignPropertyRaw(qid, ISO_CODE_PROPERTY)
local line = nameStr
if symbol then line = line .. " (" .. symbol .. ")" end
if codeStr then line = line .. " (<code>[[ISO 4217|" .. codeStr .. "]]</code>)" end
return line
end
local function buildCurrencyRow(args, frame)
local nameManual = getManual(args, {"argid"})
local codeManual = getManual(args, {"coad_argid"})
local ref = getManual(args, {"imraa_argid"})
local note = getManual(args, {"noteyn_argid"})
local headerLabel = getManual(args, {"sorçh_argid"}) or "[[Argid cadjin|Argid]]"
if isNone(nameManual) then return nil end
local value
if nameManual then
-- Manual text passes through as typed. Numbered slots (argid2,
-- coad_argid2, ...) support a second or further currency, e.g.
-- the Isle of Man or the Faroe Islands, joined like the Wikidata
-- multi-currency path below.
local line1 = nameManual
if codeManual then line1 = line1 .. " (<code>[[ISO 4217|" .. codeManual .. "]]</code>)" end
local lines = {line1}
local n = 2
while true do
local name = getManual(args, {"argid" .. n})
if not name then break end
local code = getManual(args, {"coad_argid" .. n})
local line = name
if code then line = line .. " (<code>[[ISO 4217|" .. code .. "]]</code>)" end
table.insert(lines, line)
n = n + 1
end
value = table.concat(lines, "<br/>")
else
-- Every P38 currency (a country can use more than one), each its
-- own line -- not just the single "best" one.
local currencyQids = getWdRawPropertyIds(CURRENCY_PROPERTY)
if #currencyQids == 0 then return nil end
local lines = {}
for _, qid in ipairs(currencyQids) do
local line = buildCurrencyLine(qid, #currencyQids == 1 and codeManual or nil)
if line then table.insert(lines, line) end
end
if #lines == 0 then return nil end
value = table.concat(lines, "<br/>")
end
value = applyRefNote(value, ref, note, frame)
return string.format(ROW, "", headerLabel, value)
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
-- Old template order: PPP (CCK/CCC) block first, nominal (ennymagh)
-- second, then Gini, ALD, Currency.
local cccBlock = buildGdpBlock(args, frame, {
totalNames = {"ccc", "LTS_CCK"},
percapitaNames = {"ccc_dooinney", "LTS_CCK_yn_dooinney"},
yearNames = {"blein_ccc", "blein_LTS_CCK"},
totalRhenkNames = {"rhenk_ccc", "rhenk_LTS_CCK"},
percapitaRhenkNames = {"rhenk_ccc_dooinney", "rhenk_LTS_CCK_yn_dooinney"},
totalRefNames = {"imraa_ccc"}, totalNoteNames = {"noteyn_ccc"},
percapitaRefNames = {"imraa_ccc_dooinney"}, percapitaNoteNames = {"noteyn_ccc_dooinney"},
headerOverrideNames = {"sorçh_ccc"},
headerLabel = "[[Lane troar sthie|LTS]] (CCC)",
totalProperty = GDP_PPP_TOTAL, percapitaProperty = GDP_PPP_PERCAPITA,
totalRhenkLink = "Rolley çheeraghyn rere LTS (CCC)",
percapitaRhenkLink = "Rolley çheeraghyn rere LTS (CCC) yn dooinney",
})
appendSection(rows, cccBlock and {cccBlock} or nil)
local ltsBlock = buildGdpBlock(args, frame, {
totalNames = {"lts_ennymagh", "LTS_ennymagh"},
percapitaNames = {"lts_ennymagh_dooinney", "LTS_ennymagh_yn_dooinney"},
yearNames = {"blein_lts_ennymagh", "blein_LTS_ennymagh"},
totalRhenkNames = {"rhenk_lts_ennymagh", "rhenk_LTS_ennymagh"},
percapitaRhenkNames = {"rhenk_lts_ennymagh_dooinney", "rhenk_LTS_ennymagh_yn_dooinney"},
totalRefNames = {"imraa_lts_ennymagh"}, totalNoteNames = {"noteyn_lts_ennymagh"},
percapitaRefNames = {"imraa_lts_ennymagh_dooinney"}, percapitaNoteNames = {"noteyn_lts_ennymagh_dooinney"},
headerOverrideNames = {"sorçh_lts_ennymagh"},
headerLabel = "[[Lane troar sthie|LTS]] (ennymagh)",
totalProperty = GDP_NOMINAL_TOTAL, percapitaProperty = GDP_NOMINAL_PERCAPITA,
totalRhenkLink = "Rolley çheeraghyn rere LTS (ennymagh)",
percapitaRhenkLink = "Rolley çheeraghyn rere LTS (ennymagh) yn dooinney",
populationFallback = true,
})
appendSection(rows, ltsBlock and {ltsBlock} or nil)
local giniRow = buildSingleRow(args, frame, {
valueNames = {"gini", "Gini"},
yearNames = {"blein_gini", "blein_Gini"},
bandNames = {"ronney_gini", "ronney_Gini"},
rhenkNames = {"rhenk_gini", "rhenk_Gini"},
refNames = {"imraa_gini"}, noteNames = {"noteyn_gini"},
headerOverrideNames = {"sorçh_gini"},
headerLabel = "[[Co-effaght Gini|Gini]]",
rhenkLink = "Rolley çheeraghyn rere co-chormid çheet stiagh",
property = GINI_PROPERTY, decimals = 1,
classifyBand = classifyGiniBand,
})
appendSection(rows, giniRow and {giniRow} or nil)
local aldRow = buildSingleRow(args, frame, {
valueNames = {"ald", "ALD"},
yearNames = {"blein_ald", "blein_ALD"},
bandNames = {"ronney_ald", "ronney_ALD"},
rhenkNames = {"rhenk_ald", "rhenk_ALD"},
refNames = {"imraa_ald"}, noteNames = {"noteyn_ald"},
headerOverrideNames = {"sorçh_ald"},
headerLabel = "[[Ayndagh Lhiasaghey Deiney|ALD]]",
rhenkLink = "Rolley çheeraghyn rere Ayndagh Lhiasaghey Deiney",
property = HDI_PROPERTY, decimals = 3,
classifyBand = classifyHdiBand,
})
appendSection(rows, aldRow and {aldRow} or nil)
local currencyRow = buildCurrencyRow(args, frame)
appendSection(rows, currencyRow and {currencyRow} or nil)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
f25xij6kgch5yf2ben5j9gocqi1mnk4
Module:Kishtey fys çheer/coadyn
828
55892
394535
394014
2026-10-16T12:01:25Z
MacTire02
219
imraaghyn
394535
Scribunto
text/plain
local p = {}
--------------------------------------------------
-- Wikidata properties
--------------------------------------------------
local TIMEZONE_PROPERTY = "P421"
local DATE_FORMAT_PARAM = "format_date"
local CALLING_CODE_PROPERTY = "P474"
local ISO_CODE_PROPERTY = "P297"
local TLD_PROPERTY = "P78"
local WEBSITE_PROPERTY = "P856"
local VALID_PERIOD_QUALIFIER = "P1264"
local UTC_OFFSET_PROPERTY = "P2907"
--------------------------------------------------
-- Helpers
--------------------------------------------------
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function wrapReference(ref)
if not ref or ref == "" then
return nil
end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function stripTrailingSpace(value)
local changed = true
while changed do
local stripped = value:gsub("%s+$", ""):gsub(" $", "")
changed = (stripped ~= value)
value = stripped
end
return value
end
local function appendInsideTrailingBlock(text, insertion)
if not insertion or insertion == "" then return text end
local trailingTags = {}
local rest = text
while true do
local tag = rest:match("(</%a[%w]*>)%s*$")
if not tag then break end
local tagStart = rest:find(tag .. "%s*$")
table.insert(trailingTags, 1, tag)
rest = rest:sub(1, tagStart - 1)
end
if #trailingTags == 0 then
return text .. insertion
end
return rest .. insertion .. table.concat(trailingTags)
end
local function applyRefNote(value, ref, note, frame)
if not value then
return value
end
local hasNote = note and note ~= "" and frame
local hasRef = ref and ref ~= ""
if hasNote or hasRef then
value = stripTrailingSpace(value)
end
if hasNote then
value = appendInsideTrailingBlock(value, frame:expandTemplate{ title = "efn", args = { note } })
end
if hasRef then
value = appendInsideTrailingBlock(value, wrapReference(ref))
end
return value
end
local function getEntity()
local ok, entity = pcall(mw.wikibase.getEntityObject)
if ok then
return entity
end
return nil
end
local function getStatements(property)
local entity = getEntity()
if not entity then
return {}
end
local statements = entity:getAllStatements(property)
if not statements then
return {}
end
local result = {}
for _, statement in ipairs(statements) do
if statement.rank ~= "deprecated"
and statement.mainsnak
and statement.mainsnak.snaktype == "value"
and statement.mainsnak.datavalue then
table.insert(result, statement)
end
end
return result
end
--------------------------------------------------
-- Wikidata item label
--------------------------------------------------
local function getLabel(qid)
if not qid then
return nil
end
local ok, label, lang =
pcall(mw.wikibase.getLabelWithLang, qid)
if ok and label then
return label, lang
end
return nil
end
--------------------------------------------------
-- UTC offset formatting
--------------------------------------------------
local function parseUtcOffset(label)
if not label then
return nil
end
local sign, hh, mm = mw.ustring.match(label, "^UTC(%+)(%d%d):(%d%d)$")
if not sign then
sign, hh, mm = mw.ustring.match(label, "^UTC(%-)(%d%d):(%d%d)$")
end
if not sign then
sign, hh, mm = mw.ustring.match(label, "^UTC(\226\136\146)(%d%d):(%d%d)$")
end
if not sign then
return nil
end
local totalMinutes = tonumber(hh) * 60 + tonumber(mm)
if sign ~= "+" then
totalMinutes = -totalMinutes
end
return {
minutes = totalMinutes,
offsetText = sign .. hh .. ":" .. mm,
}
end
local function formatUTCLabel(label)
if not label then
return nil
end
local parsed = parseUtcOffset(label)
if parsed then
return "[[UTC" .. parsed.offsetText .. "]]"
end
return label
end
local function roundHalfAwayFromZero(n)
if n >= 0 then
return math.floor(n + 0.5)
end
return -math.floor(-n + 0.5)
end
local function getWdUtcOffsetProperty(qid)
if not qid then
return nil
end
local ok, statements = pcall(mw.wikibase.getBestStatements, qid, UTC_OFFSET_PROPERTY)
if not ok or not statements then
return nil
end
for _, statement in ipairs(statements) do
local mainsnak = statement.mainsnak
local datavalue = mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
if datavalue and datavalue.type == "quantity" and datavalue.value then
local amount = tonumber(datavalue.value.amount)
if amount then
local totalMinutes = roundHalfAwayFromZero(amount * 60)
local sign = totalMinutes < 0 and "-" or "+"
local absMinutes = math.abs(totalMinutes)
local hh = math.floor(absMinutes / 60)
local mm = absMinutes % 60
return {
minutes = totalMinutes,
offsetText = sign .. string.format("%02d", hh) .. ":" .. string.format("%02d", mm),
}
end
elseif datavalue and datavalue.type == "string" and datavalue.value then
local fromString = parseUtcOffset(datavalue.value) or parseUtcOffset("UTC" .. datavalue.value)
if fromString then
return fromString
end
end
end
return nil
end
local function getEffectiveOffset(zone)
if not zone then
return nil
end
return parseUtcOffset(zone.label) or getWdUtcOffsetProperty(zone.qid)
end
local function formatManualOffset(rawValue)
if not rawValue then
return nil
end
local withoutPrefix = mw.ustring.match(rawValue, "^UTC(.+)$") or rawValue
local sign, hh, mm = mw.ustring.match(withoutPrefix, "^(%+)(%d%d?):(%d%d)$")
if not sign then
sign, hh, mm = mw.ustring.match(withoutPrefix, "^(%-)(%d%d?):(%d%d)$")
end
if not sign then
sign, hh, mm = mw.ustring.match(withoutPrefix, "^(\226\136\146)(%d%d?):(%d%d)$")
end
if sign then
return "[[UTC" .. sign .. string.format("%02d", tonumber(hh)) .. ":" .. mm .. "]]"
end
return rawValue
end
local function combineNameAndOffset(offsetValue, nameValue)
local offsetDisplay = offsetValue and formatManualOffset(offsetValue)
if offsetDisplay and nameValue then
return offsetDisplay .. " (" .. nameValue .. ")"
end
return offsetDisplay or nameValue
end
--------------------------------------------------
-- Time-zone formatting
--------------------------------------------------
local function getTimeZoneData()
local statements = getStatements(TIMEZONE_PROPERTY)
local standard = nil
local daylight = nil
local ordinary = {}
for _, statement in ipairs(statements) do
local value = statement.mainsnak.datavalue.value
local qid = value and value.id
if qid then
local label = getLabel(qid)
local periodQualifiers =
statement.qualifiers
and statement.qualifiers[VALID_PERIOD_QUALIFIER]
local periodQid = nil
if periodQualifiers and periodQualifiers[1] then
local periodValue =
periodQualifiers[1].datavalue
and periodQualifiers[1].datavalue.value
periodQid = periodValue and periodValue.id
end
if periodQid == "Q1777301" then
-- Standard time
standard = {
qid = qid,
label = label,
}
elseif periodQid == "Q36669" then
-- Daylight saving time
daylight = {
qid = qid,
label = label,
}
else
table.insert(ordinary, {
qid = qid,
label = label,
})
end
end
end
return standard, daylight, ordinary
end
--------------------------------------------------
-- Time-zone line
--------------------------------------------------
local function formatZone(zone)
if not zone then
return nil
end
local label = zone.label
if not label then
return nil
end
--------------------------------------------------
-- Short name (P1813) -- read regardless of which path below applies,
-- since a named-zone item can carry one too.
--------------------------------------------------
local shortName = nil
local ok, statements =
pcall(
mw.wikibase.getBestStatements,
zone.qid,
"P1813"
)
if ok and statements then
for _, statement in ipairs(statements) do
local value =
statement.mainsnak
and statement.mainsnak.datavalue
and statement.mainsnak.datavalue.value
if value and value.text then
if value.language == "en"
or value.language == "mul" then
shortName = value.text
break
end
shortName = shortName or value.text
end
end
end
--------------------------------------------------
-- (a) the label is already offset-shaped
--------------------------------------------------
local parsedFromLabel = parseUtcOffset(label)
if parsedFromLabel then
local utcLabel = "[[UTC" .. parsedFromLabel.offsetText .. "]]"
if shortName then
return utcLabel .. " (" .. shortName .. ")"
end
return utcLabel
end
--------------------------------------------------
-- (b) the label is a NAME -- try P2907 on the same item
--------------------------------------------------
local fromProperty = getWdUtcOffsetProperty(zone.qid)
if fromProperty then
return "[[UTC" .. fromProperty.offsetText .. "]] (" .. (shortName or label) .. ")"
end
-- No numeric offset available anywhere -- fall back to the bare name
-- (better than nothing, but still missing the offset).
return label
end
local function formatOrdinaryZones(ordinary)
if not ordinary or #ordinary == 0 then
return nil
end
if #ordinary == 1 then
return formatZone(ordinary[1])
end
local parsed = {}
for _, zone in ipairs(ordinary) do
local p = getEffectiveOffset(zone)
if not p then
return formatZone(ordinary[1])
end
table.insert(parsed, p)
end
table.sort(parsed, function(a, b) return a.minutes < b.minutes end)
local lowest = parsed[1]
local highest = parsed[#parsed]
if lowest.minutes == highest.minutes then
return "[[UTC" .. lowest.offsetText .. "]]"
end
return "[[UTC" .. lowest.offsetText .. "]]" ..
" dys " ..
"[[UTC" .. highest.offsetText .. "|" .. highest.offsetText .. "]]"
end
local function buildTimezone()
local standard, daylight, ordinary = getTimeZoneData()
if not standard then
-- No period-qualified (standard/daylight-saving) statement at
-- all -- either exactly one plain zone, or several genuinely
-- different ones, both handled by formatOrdinaryZones.
return formatOrdinaryZones(ordinary), nil
end
local standardText = formatZone(standard)
if not standardText then
return nil, nil
end
return standardText, formatZone(daylight)
end
--------------------------------------------------
-- Simple Wikidata string property
--------------------------------------------------
local function getStringProperty(property)
local statements = getStatements(property)
for _, statement in ipairs(statements) do
local value =
statement.mainsnak.datavalue
and statement.mainsnak.datavalue.value
if type(value) == "string" then
return value
end
end
return nil
end
--------------------------------------------------
-- Internet TLD
--------------------------------------------------
local function getTld()
local statements = getStatements(TLD_PROPERTY)
local values = {}
for _, statement in ipairs(statements) do
local value =
statement.mainsnak.datavalue
and statement.mainsnak.datavalue.value
if value and value.id then
local label = getLabel(value.id)
if label then
table.insert(values, label)
end
end
end
if #values == 0 then
return nil
end
return table.concat(values, "<br/>")
end
--------------------------------------------------
-- Official website
--------------------------------------------------
local function getWebsite()
local statements = getStatements(WEBSITE_PROPERTY)
local urls = {}
for _, statement in ipairs(statements) do
local value =
statement.mainsnak.datavalue
and statement.mainsnak.datavalue.value
if type(value) == "string" and value ~= "" then
table.insert(urls, value)
end
end
if #urls == 0 then
return nil
end
local links = {}
for _, url in ipairs(urls) do
table.insert(
links,
'<span class="url">[' ..
url ..
' ' ..
mw.text.encode(
url:gsub("^https?://", "")
) ..
']</span>'
)
end
return table.concat(links, "<br/>")
end
--------------------------------------------------
-- Row builder
--------------------------------------------------
local function buildRow(label, value)
if not value or value == "" then
return nil
end
return '<tr>' ..
'<th style="vertical-align:top; white-space:nowrap; ' ..
'text-align:left; font-weight:bold; padding-left:0.4em; ' ..
'padding-right:0.4em; border-bottom:1px solid #a2a9b1;">' ..
label ..
'</th>' ..
'<td style="vertical-align:top; padding-left:0.4em; ' ..
'padding-right:0.4em; border-bottom:1px solid #a2a9b1;">' ..
value ..
'</td>' ..
'</tr>'
end
local function appendGroupedRows(rows, items)
local present = {}
for _, item in ipairs(items) do
if item.value and item.value ~= "" then
table.insert(present, item)
end
end
for idx, item in ipairs(present) do
local border = (idx == #present)
and "border-bottom:1px solid #a2a9b1;"
or ""
if item.indent then
table.insert(
rows,
'<tr><th style="vertical-align:top; white-space:nowrap; ' ..
'text-align:left; font-weight:normal; padding-left:0.9em; ' ..
'padding-right:0.4em; ' .. border .. '">' ..
'• ' .. item.label .. '</th>' ..
'<td style="vertical-align:top; padding-left:0.4em; ' ..
'padding-right:0.4em; ' .. border .. '">' ..
item.value .. '</td></tr>'
)
else
table.insert(
rows,
'<tr><th style="vertical-align:top; white-space:nowrap; ' ..
'text-align:left; font-weight:bold; padding-left:0.4em; ' ..
'padding-right:0.4em; ' .. border .. '">' ..
item.label .. '</th>' ..
'<td style="vertical-align:top; padding-left:0.4em; ' ..
'padding-right:0.4em; ' .. border .. '">' ..
item.value .. '</td></tr>'
)
end
end
end
--------------------------------------------------
-- Website row
--------------------------------------------------
local function buildWebsiteRow(value)
if not value or value == "" then
return nil
end
return '<tr>' ..
'<td colspan="2" style="text-align:center; ' ..
'padding:0.4em;">' ..
value ..
'</td>' ..
'</tr>'
end
--------------------------------------------------
-- Main
--------------------------------------------------
function p.main(frame, args)
if not args then
args = frame:getParent().args
end
local rows = {}
--------------------------------------------------
-- Time zone (+ THHL, a subset/nested row -- never shown on its own)
--------------------------------------------------
local manualZoneName = getManual(args, {
"cryss_hraa",
"traa_ynnydagh"
})
local manualZoneOffset = getManual(args, {
"ashchur",
"ashchur_utc"
})
local imraaCryssHraa = getManual(args, {
"imraa_cryss_hraa",
"imraa_ashchur_utc",
"imraa_ashchur"
})
local noteynCryssHraa = getManual(args, {
"noteyn_cryss_hraa",
"noteyn_ashchur_utc",
"noteyn_ashchur"
})
local mainZoneValue = nil
local wikidataDaylightValue = nil
if manualZoneName or manualZoneOffset then
mainZoneValue = applyRefNote(
combineNameAndOffset(manualZoneOffset, manualZoneName),
imraaCryssHraa,
noteynCryssHraa,
frame
)
else
local standardText, daylightText = buildTimezone()
if standardText then
mainZoneValue = applyRefNote(standardText, imraaCryssHraa, noteynCryssHraa, frame)
wikidataDaylightValue = daylightText
end
end
local manualTtlsName = getManual(args, {
"cryss_hraa_thhl",
"traa_ynnydagh_TTLS"
})
local manualTtlsOffset = getManual(args, {
"ashchur_TTLS",
"ashchur_utc_TTLS"
})
local noteTTLS = getManual(args, {
"noteyn_cryss_hraa_thhl",
"note_TTLS",
"noteyn_ashchur_TTLS",
"noteyn_ashchur_utc_TTLS"
})
local imraaTTLS = getManual(args, {
"imraa_cryss_hraa_thhl",
"imraa_ashchur_TTLS",
"imraa_ashchur_utc_TTLS"
})
local thhlValue = nil
if mainZoneValue then
if manualTtlsName or manualTtlsOffset then
thhlValue = applyRefNote(
combineNameAndOffset(manualTtlsOffset, manualTtlsName),
imraaTTLS,
nil,
frame
)
else
thhlValue = wikidataDaylightValue
end
end
appendGroupedRows(rows, {
{ label = "[[Cryss hraa]]", value = mainZoneValue },
{
label = "Sourey ([[Traa hashtee hollys y laa|THHL]])",
value = thhlValue,
indent = true
},
})
if noteTTLS then
table.insert(
rows,
buildRow(
"",
noteTTLS
)
)
end
--------------------------------------------------
-- Date format
--------------------------------------------------
local dateFormat = getManual(args, {
"format_date",
"date_format"
})
if dateFormat then
table.insert(
rows,
buildRow(
"Cummey date",
dateFormat
)
)
end
--------------------------------------------------
-- Calling code
--------------------------------------------------
local callingCode = getManual(args, {
"coad_çhellvane"
}) or getStringProperty(CALLING_CODE_PROPERTY)
if callingCode then
if not callingCode:match("^%+") then
callingCode = "+" .. callingCode
end
callingCode = applyRefNote(
callingCode,
getManual(args, { "imraa_coad_çhellvane" }),
getManual(args, { "noteyn_coad_çhellvane" }),
frame
)
table.insert(
rows,
buildRow(
"[[Rolley coadyn çhellvane eddyr-ashoonagh|Coad çhellvane]]",
callingCode
)
)
end
--------------------------------------------------
-- ISO 3166-1 alpha-2
--------------------------------------------------
local isoCode = getManual(args, {
"coad_ISO",
"iso3166code"
}) or getStringProperty(ISO_CODE_PROPERTY)
if isoCode then
isoCode = applyRefNote(
isoCode,
getManual(args, { "imraa_coad_iso" }),
getManual(args, { "noteyn_coad_iso" }),
frame
)
table.insert(
rows,
buildRow(
"[[ISO 3166|Coad ISO 3166]]",
isoCode
)
)
end
--------------------------------------------------
-- Internet TLD
--------------------------------------------------
local tld = getManual(args, {
"tld",
"cctld"
}) or getTld()
if tld then
tld = applyRefNote(
tld,
getManual(args, { "imraa_tld" }),
getManual(args, { "noteyn_tld" }),
frame
)
table.insert(
rows,
buildRow(
"[[TLD yn eddyr-voggyl]]",
tld
)
)
end
--------------------------------------------------
-- Official website
--------------------------------------------------
local website = getManual(args, {
"ynnyd-eggey",
"duillag",
"duillag_oikoil"
}) or getWebsite()
if website then
website = applyRefNote(
website,
getManual(args, { "imraa_ynnyd-eggey" }),
getManual(args, { "noteyn_ynnyd-eggey" }),
frame
)
table.insert(
rows,
buildWebsiteRow(website)
)
end
--------------------------------------------------
-- Nothing to display
--------------------------------------------------
if #rows == 0 then
return nil
end
return table.concat(rows)
end
return p
fxyzqh77b87lb6skqtvzedi1ws4p8f1
Module:Kishtey fys çheer/aarheynn
828
55930
394533
393922
2026-10-16T12:00:06Z
MacTire02
219
imraaghyn
394533
Scribunto
text/plain
local p = {}
-- Sovereignty/subdivision membership (enwiki's subdivision_type/
-- subdivision_name, e.g. "Sovereign state | Kingdom of the Netherlands").
-- Its own file since it's a separate concern from reiltys.lua, but its
-- rendered position sits directly between the legislature and founding
-- sections with no divider of its own -- so reiltys.lua requires this
-- module and splices its rows into its own list at that point, instead of
-- the dispatcher treating it as an independently-divided section.
--
-- Duplicates a few small reiltys.lua helpers rather than sharing a utils
-- module, per this project's per-file convention.
local wdOK, Wd = pcall(require, "Module:Wd")
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>, tolerating a value Scribunto already
-- pre-expanded into rendered "[N]" marker(s) or UNIQ...QINU strip markers.
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- The row label is shown exactly as given -- NOT auto-wikilinked. Linking
-- is entirely the editor's own choice: a manual |sorçh_aarheynn= that's
-- already typed as a full wikilink (e.g. "[[Steat kionedeeagh]]") is left
-- alone, and a plain, unbracketed label (whether manually typed or the
-- LEVEL1_FALLBACK_LABEL default below) is shown as plain text, with no link
-- added on its behalf. This function's only remaining job is passthrough;
-- kept as a named call (rather than inlining `label` directly) so this
-- "never auto-link" decision stays documented at the one call site that
-- matters, instead of being implicit.
local function wikilinkLabel(label)
return label
end
local function getWdRawPropertyId(property)
if not wdOK or not Wd or not Wd._property then return nil end
local ok, result = pcall(Wd._property, {"raw", "best", property})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
-- Three-tier Wikidata-entity-to-Manx-link resolver: gv sitelink + gv label
-- (preferred as display text) -> label-only redlink -> ennym-wd's
-- external-link-to-Wikidata fallback. No "role + country" shortening rung
-- (reiltys.lua's shortManxForm) -- a name like "Kingdom of the
-- Netherlands" is a plain proper name.
local function getWdItemManxLink(qid)
if not qid then return nil end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if okLabel and gvLabel and gvLabel ~= "" then
gvLabel = wikiUcfirst(gvLabel)
else
gvLabel = nil
end
if not sitelinkTitle and not gvLabel then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
local target = sitelinkTitle or gvLabel
local displayBase = gvLabel or sitelinkTitle
if target == displayBase then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. displayBase .. "]]"
end
-- Current page's own title, for the self-link guard below.
local function getCurrentPageTitle()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
if ok and title and title ~= "" then return title end
return nil
end
-- Strips a leading Manx definite article ("Yn "/"Y ") for self-link
-- comparison only. Manx alternates "y"/"yn" grammatically (by the
-- following sound), so the same country can be the target of a link
-- written with one article form while the article's own page title uses
-- the other -- e.g. Wikidata's gv label for Denmark reads "y Rank" where
-- the article itself sits at "Yn Rank". Without this, those compare as
-- different strings and the self-link goes undetected. Mirrors the same
-- yn/y alternation reiltys.lua already handles in
-- stripCountryGenitiveSuffix, just applied to a leading article instead of
-- a trailing genitive.
local function stripLeadingArticle(text)
if not text then return text end
local stripped = text:match("^[Yy]n%s+(.+)$") or text:match("^[Yy]%s+(.+)$")
return stripped or text
end
-- True when a "[[Target]]"/"[[Target|Display]]" wikilink points at the
-- current page itself -- e.g. a Wikidata P17 value that loops back to the
-- current article (bad/unexpected data, but not impossible). Compares with
-- and without a leading "y"/"yn" article, so an article-form mismatch
-- (see stripLeadingArticle above) doesn't let a genuine self-link slip
-- through. Never fires on the ennym-wd external-link fallback
-- ("[url label]"), which can't self-reference an internal page anyway.
-- Only ever applied to the WIKIDATA-DERIVED value below -- a manual
-- |ennym_aarheynn= that happens to match the current page is left alone,
-- same as every other manual override in this project winning outright
-- over automatic behavior.
local function isSelfLink(link)
if not link then return false end
local target = link:match("^%[%[([^%[%]|]+)")
if not target then return false end
local current = getCurrentPageTitle()
if not current then return false end
if target == current then return true end
return stripLeadingArticle(target) == stripLeadingArticle(current)
end
-- No `white-space:nowrap` on the label cell -- unlike reiltys.lua's short,
-- fixed role words ("Monark", "Kione steat"), |sorçh_aarheynn= is editor-
-- typed free text (and the LEVEL1_FALLBACK_LABEL default, "Steat
-- kionedeeagh", is itself two words) with no guaranteed short length.
-- Forcing it onto one line is exactly the bug already fixed once for
-- reiltys.lua's establishment-event labels (see that module's design notes,
-- "establishment-event rows forcing the infobox too wide") -- a long label
-- here would stretch this table, and the whole infobox, to fit it. Letting
-- it wrap keeps the column width sane regardless of how long the editor's
-- own label text runs.
local ROW = '<tr><th style="vertical-align:top; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
-- Numbered levels supported (enwiki's own subdivision_type1/_2/_3...).
local MAX_LEVELS = 5
-- Level-1-only fallback label, used when |sorçh_aarheynn= isn't set but a
-- Wikidata P17 value is found -- confirmed directly by you (the same
-- wording you used for the Netherlands), not guessed. Only ever shown
-- paired with an actual resolved value; never shown alone. Shown as plain,
-- unlinked text (see wikilinkLabel above) -- it's a generic descriptive
-- label, not a specific article title, so it's never auto-linked.
local LEVEL1_FALLBACK_LABEL = "Steat kionedeeagh"
-- Returns an array of row strings (or nil), for reiltys.lua to splice into
-- its own row list -- not a joined string, since the caller places these
-- rows in among its own sections.
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
for i = 1, MAX_LEVELS do
local suffix = tostring(i)
local typeNames = { "sorçh_aarheynn" .. suffix }
local nameNames = { "ennym_aarheynn" .. suffix }
local refNames = { "imraa_aarheynn" .. suffix }
local noteNames = { "noteyn_aarheynn" .. suffix }
if i == 1 then
-- Bare, unnumbered form (as used on the Netherlands article) is
-- a synonym for level 1.
table.insert(typeNames, 1, "sorçh_aarheynn")
table.insert(nameNames, 1, "ennym_aarheynn")
table.insert(refNames, 1, "imraa_aarheynn")
table.insert(noteNames, 1, "noteyn_aarheynn")
end
-- The type/label is always manual if given -- no Wikidata property
-- reliably maps to a short relationship label like "Sovereign
-- state". |sorçh_aarheynnN=none suppresses the level outright, WD
-- included. Level 1 with NO manual type at all still gets a row
-- when Wikidata resolves a name, using LEVEL1_FALLBACK_LABEL.
local typeRaw = getManual(args, typeNames)
if not isNone(typeRaw) then
local nameRaw = getManual(args, nameNames)
if isNone(nameRaw) then
nameRaw = nil
elseif not nameRaw and i == 1 then
-- Wikidata fallback (P17, "country") -- level 1 only.
-- Deeper levels would need chaining through unconfirmed
-- properties, too article-specific to trust to Wikidata.
local qid = getWdRawPropertyId("P17")
if qid then
local link = getWdItemManxLink(qid)
-- Skip a self-link automatically (e.g. P17 looping back
-- to the current article) -- same end result as
-- |ennym_aarheynnN=none, without needing it typed by
-- hand. |sorçh_aarheynnN=none still works exactly as
-- before for every other case.
if link and not isSelfLink(link) then
nameRaw = link
end
end
end
local label = typeRaw
if not label and i == 1 and nameRaw then
label = LEVEL1_FALLBACK_LABEL
end
if label and nameRaw then
local ref = getManual(args, refNames)
local note = getManual(args, noteNames)
table.insert(rows, string.format(ROW, wikilinkLabel(label), applyRefNote(nameRaw, ref, note, frame)))
end
end
end
if #rows == 0 then return nil end
return rows
end
return p
0vizdff9z1z84fw0ggxj826ied548ed
394562
394533
2026-10-16T17:32:25Z
MacTire02
219
-chaghteraghtyn
394562
Scribunto
text/plain
local p = {}
-- Sovereignty/subdivision membership (enwiki's subdivision_type/
-- subdivision_name, e.g. "Sovereign state | Kingdom of the Netherlands").
-- reiltys.lua requires this module and splices its rows into its own list
-- between the legislature and founding sections, with no divider of its
-- own. Duplicates a few small reiltys.lua helpers per this project's
-- per-file convention.
local wdOK, Wd = pcall(require, "Module:Wd")
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Wraps a manual citation in <ref>, tolerating a value Scribunto already
-- pre-expanded into rendered "[N]" marker(s) or UNIQ...QINU strip markers.
local function wrapReference(ref)
if not ref or ref == "" then return nil end
local withoutMarkers = mw.ustring.gsub(ref, "\127UNIQ.-QINU\127", "")
if mw.ustring.gsub(withoutMarkers, "%s+", "") == "" then
return ref
end
if mw.ustring.find(mw.ustring.lower(ref), "<ref", 1, true) then
return ref
end
-- One or more <ref> tags (named or not) in the param value arrive here
-- already expanded into rendered footnote marker(s), e.g. "[6][7][8][9]".
local withoutRenderedMarkers = mw.ustring.gsub(ref, "%[%d+%]", "")
if mw.ustring.gsub(withoutRenderedMarkers, "%s+", "") == "" then
return ref
end
return "<ref>" .. ref .. "</ref>"
end
local function applyRefNote(value, ref, note, frame)
if not value then return value end
if note and note ~= "" and frame then
value = value .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref and ref ~= "" then
value = value .. wrapReference(ref)
end
return value
end
-- The row label is shown exactly as given -- never auto-wikilinked.
-- Linking is entirely the editor's own choice.
local function wikilinkLabel(label)
return label
end
local function getWdRawPropertyId(property)
if not wdOK or not Wd or not Wd._property then return nil end
local ok, result = pcall(Wd._property, {"raw", "best", property})
if ok and result and type(result) == "string" and result:match("^Q%d+$") then return result end
return nil
end
local function wikiUcfirst(text)
if not text or text == "" then return text end
local ok, result = pcall(function() return mw.language.getContentLanguage():ucfirst(text) end)
if ok and result and result ~= "" then return result end
return text
end
-- Three-tier Wikidata-entity-to-Manx-link resolver: gv sitelink + gv label
-- -> label-only redlink -> ennym-wd's external-link-to-Wikidata fallback.
-- No "role + country" shortening rung -- a name like "Kingdom of the
-- Netherlands" is a plain proper name.
local function getWdItemManxLink(qid)
if not qid then return nil end
local okSite, sitelinkTitle = pcall(mw.wikibase.sitelink, qid)
if not okSite then sitelinkTitle = nil end
sitelinkTitle = (sitelinkTitle and sitelinkTitle ~= "") and sitelinkTitle or nil
local okLabel, gvLabel = pcall(mw.wikibase.getLabelByLang, qid, "gv")
if okLabel and gvLabel and gvLabel ~= "" then
gvLabel = wikiUcfirst(gvLabel)
else
gvLabel = nil
end
if not sitelinkTitle and not gvLabel then
if ennymWdOK and EnnymWd and EnnymWd.labelWithFallback then
local ok, annotated = pcall(EnnymWd.labelWithFallback, qid)
if ok and annotated then return annotated end
end
return nil
end
local target = sitelinkTitle or gvLabel
local displayBase = gvLabel or sitelinkTitle
if target == displayBase then return "[[" .. target .. "]]" end
return "[[" .. target .. "|" .. displayBase .. "]]"
end
-- Current page's own title, for the self-link guard below.
local function getCurrentPageTitle()
local ok, title = pcall(function() return mw.title.getCurrentTitle().text end)
if ok and title and title ~= "" then return title end
return nil
end
-- Strips a leading Manx definite article ("Yn "/"Y ") for self-link
-- comparison only -- e.g. Wikidata's gv label for Denmark reads "y Rank"
-- where the article itself sits at "Yn Rank"; without this they'd compare
-- as different strings and the self-link would go undetected.
local function stripLeadingArticle(text)
if not text then return text end
local stripped = text:match("^[Yy]n%s+(.+)$") or text:match("^[Yy]%s+(.+)$")
return stripped or text
end
-- True when a "[[Target]]"/"[[Target|Display]]" wikilink points at the
-- current page itself -- e.g. a Wikidata P17 value looping back to the
-- current article. Compares with and without a leading "y"/"yn" article.
-- Only ever applied to the Wikidata-derived value -- a matching manual
-- |ennym_aarheynn= is left alone, like any other manual override here.
local function isSelfLink(link)
if not link then return false end
local target = link:match("^%[%[([^%[%]|]+)")
if not target then return false end
local current = getCurrentPageTitle()
if not current then return false end
if target == current then return true end
return stripLeadingArticle(target) == stripLeadingArticle(current)
end
-- No `white-space:nowrap` on the label cell: |sorçh_aarheynn= is editor-
-- typed free text with no guaranteed short length, so it's allowed to wrap
-- rather than stretching the table to fit one long line (same class of fix
-- as reiltys.lua's establishment-event labels).
local ROW = '<tr><th style="vertical-align:top; text-align:left; font-weight:bold; padding-left:0.4em; padding-right:0.4em;">%s</th><td style="vertical-align:top; padding-left:0.4em; padding-right:0.4em;">%s</td></tr>'
-- Numbered levels supported (enwiki's own subdivision_type1/_2/_3...).
local MAX_LEVELS = 5
-- Level-1-only fallback label when |sorçh_aarheynn= isn't set but a
-- Wikidata P17 value is found. Only shown paired with a resolved value, as
-- plain unlinked text (a generic descriptive label, not an article title).
local LEVEL1_FALLBACK_LABEL = "Steat kionedeeagh"
-- Returns an array of row strings (or nil), for reiltys.lua to splice into
-- its own row list -- not a joined string, since the caller places these
-- rows in among its own sections.
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
for i = 1, MAX_LEVELS do
local suffix = tostring(i)
local typeNames = { "sorçh_aarheynn" .. suffix }
local nameNames = { "ennym_aarheynn" .. suffix }
local refNames = { "imraa_aarheynn" .. suffix }
local noteNames = { "noteyn_aarheynn" .. suffix }
if i == 1 then
-- Bare, unnumbered form (as used on the Netherlands article) is
-- a synonym for level 1.
table.insert(typeNames, 1, "sorçh_aarheynn")
table.insert(nameNames, 1, "ennym_aarheynn")
table.insert(refNames, 1, "imraa_aarheynn")
table.insert(noteNames, 1, "noteyn_aarheynn")
end
-- The type/label is always manual if given -- no Wikidata property
-- reliably maps to a short relationship label like "Sovereign
-- state". |sorçh_aarheynnN=none suppresses the level outright, WD
-- included. Level 1 with NO manual type at all still gets a row
-- when Wikidata resolves a name, using LEVEL1_FALLBACK_LABEL.
local typeRaw = getManual(args, typeNames)
if not isNone(typeRaw) then
local nameRaw = getManual(args, nameNames)
if isNone(nameRaw) then
nameRaw = nil
elseif not nameRaw and i == 1 then
-- Wikidata fallback (P17, "country") -- level 1 only.
-- Deeper levels would need chaining through unconfirmed
-- properties, too article-specific to trust to Wikidata.
local qid = getWdRawPropertyId("P17")
if qid then
local link = getWdItemManxLink(qid)
-- Skip a self-link automatically (e.g. P17 looping back
-- to the current article) -- same end result as
-- |ennym_aarheynnN=none, without needing it typed by
-- hand. |sorçh_aarheynnN=none still works exactly as
-- before for every other case.
if link and not isSelfLink(link) then
nameRaw = link
end
end
end
local label = typeRaw
if not label and i == 1 and nameRaw then
label = LEVEL1_FALLBACK_LABEL
end
if label and nameRaw then
local ref = getManual(args, refNames)
local note = getManual(args, noteNames)
table.insert(rows, string.format(ROW, wikilinkLabel(label), applyRefNote(nameRaw, ref, note, frame)))
end
end
end
if #rows == 0 then return nil end
return rows
end
return p
5s96l4o510jyx6y2v0gc0rdulni1jy1
Module:ISO 639 name/ISO 639-2B
828
56217
394549
2026-10-16T14:38:57Z
MacTire02
219
clowan noa
394549
Scribunto
text/plain
-- File-Date: 2013-01-11
return { -- 639-2B
["alb"] = {"Albaanish"},
["arm"] = {"Armeanish"},
["baq"] = {"Bascish"},
["bur"] = {"Burmish"},
["chi"] = {"Sheenish"},
["cze"] = {"Sheckish"},
["dut"] = {"Ollanish", "Flandrynish"},
["fre"] = {"Frangish"},
["geo"] = {"Shorshish"},
["ger"] = {"Germaanish"},
["gre"] = {"Greagish, Noa-emshiragh (1453-)"},
["ice"] = {"Eeslynnish"},
["mac"] = {"Massadoanish"},
["mao"] = {"Maorish"},
["may"] = {"Malayish"},
["per"] = {"Pershish"},
["rum"] = {"Romaanish", "Moldaavish", "Moldovish"},
["slo"] = {"Slovackish"},
["tib"] = {"Tibetish"},
["wel"] = {"Bretnish"}
}
0rqq0zbcn53k7xctyphk1nqydx7ab11
394550
394549
2026-10-16T14:39:22Z
MacTire02
219
MacTire02 moved page [[Module:Language/data/ISO 639-2B]] to [[Module:ISO 639 name/ISO 639-2B]]
394549
Scribunto
text/plain
-- File-Date: 2013-01-11
return { -- 639-2B
["alb"] = {"Albaanish"},
["arm"] = {"Armeanish"},
["baq"] = {"Bascish"},
["bur"] = {"Burmish"},
["chi"] = {"Sheenish"},
["cze"] = {"Sheckish"},
["dut"] = {"Ollanish", "Flandrynish"},
["fre"] = {"Frangish"},
["geo"] = {"Shorshish"},
["ger"] = {"Germaanish"},
["gre"] = {"Greagish, Noa-emshiragh (1453-)"},
["ice"] = {"Eeslynnish"},
["mac"] = {"Massadoanish"},
["mao"] = {"Maorish"},
["may"] = {"Malayish"},
["per"] = {"Pershish"},
["rum"] = {"Romaanish", "Moldaavish", "Moldovish"},
["slo"] = {"Slovackish"},
["tib"] = {"Tibetish"},
["wel"] = {"Bretnish"}
}
0rqq0zbcn53k7xctyphk1nqydx7ab11
Module:Language/data/ISO 639-2B
828
56218
394551
2026-10-16T14:39:22Z
MacTire02
219
MacTire02 moved page [[Module:Language/data/ISO 639-2B]] to [[Module:ISO 639 name/ISO 639-2B]]
394551
Scribunto
text/plain
return require [[Module:ISO 639 name/ISO 639-2B]]
8rr38c704cuy63f0zn8f4bedp9bc0lt
Module:ISO 639 name/ISO 639-5
828
56219
394552
2026-10-16T14:40:19Z
MacTire02
219
++
394552
Scribunto
text/plain
-- File-Date: 2013-02-11
return {
["aav"] = {"Austro-Asiatic languages"},
["afa"] = {"Afro-Asiatic languages"},
["alg"] = {"Algonquian languages"},
["alv"] = {"Atlantic-Congo languages"},
["apa"] = {"Apache languages"},
["aqa"] = {"Alacalufan languages"},
["aql"] = {"Algic languages"},
["art"] = {"Artificial languages"},
["ath"] = {"Athapascan languages"},
["auf"] = {"Arauan languages"},
["aus"] = {"Australian languages"},
["awd"] = {"Arawakan languages"},
["azc"] = {"Uto-Aztecan languages"},
["bad"] = {"Banda languages"},
["bai"] = {"Bamileke languages"},
["bat"] = {"Baltic languages"},
["ber"] = {"Berber languages"},
["bih"] = {"Bihari languages"},
["bnt"] = {"Bantu languages"},
["btk"] = {"Batak languages"},
["cai"] = {"Central American Indian languages"},
["cau"] = {"Caucasian languages"},
["cba"] = {"Chibchan languages"},
["ccn"] = {"North Caucasian languages"},
["ccs"] = {"South Caucasian languages"},
["cdc"] = {"Chadic languages"},
["cdd"] = {"Caddoan languages"},
["cel"] = {"Celtic languages"},
["cmc"] = {"Chamic languages"},
["cpe"] = {"Creoles and pidgins, English-based"},
["cpf"] = {"Creoles and pidgins, French-based"},
["cpp"] = {"Creoles and pidgins, Portuguese-based"},
["crp"] = {"Creoles and pidgins"},
["csu"] = {"Central Sudanic languages"},
["cus"] = {"Cushitic languages"},
["day"] = {"Land Dayak languages"},
["dmn"] = {"Mande languages"},
["dra"] = {"Dravidian languages"},
["egx"] = {"Egyptian languages"},
["esx"] = {"Eskimo-Aleut languages"},
["euq"] = {"Basque (family)"},
["fiu"] = {"Finno-Ugrian languages"},
["fox"] = {"Formosan languages"},
["gem"] = {"Germanic languages"},
["gme"] = {"East Germanic languages"},
["gmq"] = {"North Germanic languages"},
["gmw"] = {"West Germanic languages"},
["grk"] = {"Greek languages"},
["hmx"] = {"Hmong-Mien languages"},
["hok"] = {"Hokan languages"},
["hyx"] = {"Armenian (family)"},
["iir"] = {"Indo-Iranian languages"},
["ijo"] = {"Ijo languages"},
["inc"] = {"Indic languages"},
["ine"] = {"Indo-European languages"},
["ira"] = {"Iranian languages"},
["iro"] = {"Iroquoian languages"},
["itc"] = {"Italic languages"},
["jpx"] = {"Japanese (family)"},
["kar"] = {"Karen languages"},
["kdo"] = {"Kordofanian languages"},
["khi"] = {"Khoisan languages"},
["kro"] = {"Kru languages"},
["map"] = {"Austronesian languages"},
["mkh"] = {"Mon-Khmer languages"},
["mno"] = {"Manobo languages"},
["mun"] = {"Munda languages"},
["myn"] = {"Mayan languages"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["ngf"] = {"Trans-New Guinea languages"},
["nic"] = {"Niger-Kordofanian languages"},
["nub"] = {"Nubian languages"},
["omq"] = {"Oto-Manguean languages"},
["omv"] = {"Omotic languages"},
["oto"] = {"Otomian languages"},
["paa"] = {"Papuan languages"},
["phi"] = {"Philippine languages"},
["plf"] = {"Central Malayo-Polynesian languages"},
["poz"] = {"Malayo-Polynesian languages"},
["pqe"] = {"Eastern Malayo-Polynesian languages"},
["pqw"] = {"Western Malayo-Polynesian languages"},
["pra"] = {"Prakrit languages"},
["qwe"] = {"Quechuan (family)"},
["roa"] = {"Romance languages"},
["sai"] = {"South American Indian languages"},
["sal"] = {"Salishan languages"},
["sdv"] = {"Eastern Sudanic languages"},
["sem"] = {"Semitic languages"},
["sgn"] = {"sign languages"},
["sio"] = {"Siouan languages"},
["sit"] = {"Sino-Tibetan languages"},
["sla"] = {"Slavic languages"},
["smi"] = {"Sami languages"},
["son"] = {"Songhai languages"},
["sqj"] = {"Albanian languages"},
["ssa"] = {"Nilo-Saharan languages"},
["syd"] = {"Samoyedic languages"},
["tai"] = {"Tai languages"},
["tbq"] = {"Tibeto-Burman languages"},
["trk"] = {"Turkic languages"},
["tup"] = {"Tupi languages"},
["tut"] = {"Altaic languages"},
["tuw"] = {"Tungus languages"},
["urj"] = {"Uralic languages"},
["wak"] = {"Wakashan languages"},
["wen"] = {"Sorbian languages"},
["xgn"] = {"Mongolian languages"},
["xnd"] = {"Na-Dene languages"},
["ypk"] = {"Yupik languages"},
["zhx"] = {"Chinese (family)"},
["zle"] = {"East Slavic languages"},
["zls"] = {"South Slavic languages"},
["zlw"] = {"West Slavic languages"},
["znd"] = {"Zande languages"}
}
cuy098mavdbzysd78ximwvnfoiwwba5
394553
394552
2026-10-16T14:40:32Z
MacTire02
219
MacTire02 moved page [[Module:Language/data/ISO 639-5]] to [[Module:Module:ISO 639 name/ISO 639-5]]
394552
Scribunto
text/plain
-- File-Date: 2013-02-11
return {
["aav"] = {"Austro-Asiatic languages"},
["afa"] = {"Afro-Asiatic languages"},
["alg"] = {"Algonquian languages"},
["alv"] = {"Atlantic-Congo languages"},
["apa"] = {"Apache languages"},
["aqa"] = {"Alacalufan languages"},
["aql"] = {"Algic languages"},
["art"] = {"Artificial languages"},
["ath"] = {"Athapascan languages"},
["auf"] = {"Arauan languages"},
["aus"] = {"Australian languages"},
["awd"] = {"Arawakan languages"},
["azc"] = {"Uto-Aztecan languages"},
["bad"] = {"Banda languages"},
["bai"] = {"Bamileke languages"},
["bat"] = {"Baltic languages"},
["ber"] = {"Berber languages"},
["bih"] = {"Bihari languages"},
["bnt"] = {"Bantu languages"},
["btk"] = {"Batak languages"},
["cai"] = {"Central American Indian languages"},
["cau"] = {"Caucasian languages"},
["cba"] = {"Chibchan languages"},
["ccn"] = {"North Caucasian languages"},
["ccs"] = {"South Caucasian languages"},
["cdc"] = {"Chadic languages"},
["cdd"] = {"Caddoan languages"},
["cel"] = {"Celtic languages"},
["cmc"] = {"Chamic languages"},
["cpe"] = {"Creoles and pidgins, English-based"},
["cpf"] = {"Creoles and pidgins, French-based"},
["cpp"] = {"Creoles and pidgins, Portuguese-based"},
["crp"] = {"Creoles and pidgins"},
["csu"] = {"Central Sudanic languages"},
["cus"] = {"Cushitic languages"},
["day"] = {"Land Dayak languages"},
["dmn"] = {"Mande languages"},
["dra"] = {"Dravidian languages"},
["egx"] = {"Egyptian languages"},
["esx"] = {"Eskimo-Aleut languages"},
["euq"] = {"Basque (family)"},
["fiu"] = {"Finno-Ugrian languages"},
["fox"] = {"Formosan languages"},
["gem"] = {"Germanic languages"},
["gme"] = {"East Germanic languages"},
["gmq"] = {"North Germanic languages"},
["gmw"] = {"West Germanic languages"},
["grk"] = {"Greek languages"},
["hmx"] = {"Hmong-Mien languages"},
["hok"] = {"Hokan languages"},
["hyx"] = {"Armenian (family)"},
["iir"] = {"Indo-Iranian languages"},
["ijo"] = {"Ijo languages"},
["inc"] = {"Indic languages"},
["ine"] = {"Indo-European languages"},
["ira"] = {"Iranian languages"},
["iro"] = {"Iroquoian languages"},
["itc"] = {"Italic languages"},
["jpx"] = {"Japanese (family)"},
["kar"] = {"Karen languages"},
["kdo"] = {"Kordofanian languages"},
["khi"] = {"Khoisan languages"},
["kro"] = {"Kru languages"},
["map"] = {"Austronesian languages"},
["mkh"] = {"Mon-Khmer languages"},
["mno"] = {"Manobo languages"},
["mun"] = {"Munda languages"},
["myn"] = {"Mayan languages"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["ngf"] = {"Trans-New Guinea languages"},
["nic"] = {"Niger-Kordofanian languages"},
["nub"] = {"Nubian languages"},
["omq"] = {"Oto-Manguean languages"},
["omv"] = {"Omotic languages"},
["oto"] = {"Otomian languages"},
["paa"] = {"Papuan languages"},
["phi"] = {"Philippine languages"},
["plf"] = {"Central Malayo-Polynesian languages"},
["poz"] = {"Malayo-Polynesian languages"},
["pqe"] = {"Eastern Malayo-Polynesian languages"},
["pqw"] = {"Western Malayo-Polynesian languages"},
["pra"] = {"Prakrit languages"},
["qwe"] = {"Quechuan (family)"},
["roa"] = {"Romance languages"},
["sai"] = {"South American Indian languages"},
["sal"] = {"Salishan languages"},
["sdv"] = {"Eastern Sudanic languages"},
["sem"] = {"Semitic languages"},
["sgn"] = {"sign languages"},
["sio"] = {"Siouan languages"},
["sit"] = {"Sino-Tibetan languages"},
["sla"] = {"Slavic languages"},
["smi"] = {"Sami languages"},
["son"] = {"Songhai languages"},
["sqj"] = {"Albanian languages"},
["ssa"] = {"Nilo-Saharan languages"},
["syd"] = {"Samoyedic languages"},
["tai"] = {"Tai languages"},
["tbq"] = {"Tibeto-Burman languages"},
["trk"] = {"Turkic languages"},
["tup"] = {"Tupi languages"},
["tut"] = {"Altaic languages"},
["tuw"] = {"Tungus languages"},
["urj"] = {"Uralic languages"},
["wak"] = {"Wakashan languages"},
["wen"] = {"Sorbian languages"},
["xgn"] = {"Mongolian languages"},
["xnd"] = {"Na-Dene languages"},
["ypk"] = {"Yupik languages"},
["zhx"] = {"Chinese (family)"},
["zle"] = {"East Slavic languages"},
["zls"] = {"South Slavic languages"},
["zlw"] = {"West Slavic languages"},
["znd"] = {"Zande languages"}
}
cuy098mavdbzysd78ximwvnfoiwwba5
394555
394553
2026-10-16T14:41:00Z
MacTire02
219
MacTire02 moved page [[Module:Module:ISO 639 name/ISO 639-5]] to [[Module:ISO 639 name/ISO 639-5]]
394552
Scribunto
text/plain
-- File-Date: 2013-02-11
return {
["aav"] = {"Austro-Asiatic languages"},
["afa"] = {"Afro-Asiatic languages"},
["alg"] = {"Algonquian languages"},
["alv"] = {"Atlantic-Congo languages"},
["apa"] = {"Apache languages"},
["aqa"] = {"Alacalufan languages"},
["aql"] = {"Algic languages"},
["art"] = {"Artificial languages"},
["ath"] = {"Athapascan languages"},
["auf"] = {"Arauan languages"},
["aus"] = {"Australian languages"},
["awd"] = {"Arawakan languages"},
["azc"] = {"Uto-Aztecan languages"},
["bad"] = {"Banda languages"},
["bai"] = {"Bamileke languages"},
["bat"] = {"Baltic languages"},
["ber"] = {"Berber languages"},
["bih"] = {"Bihari languages"},
["bnt"] = {"Bantu languages"},
["btk"] = {"Batak languages"},
["cai"] = {"Central American Indian languages"},
["cau"] = {"Caucasian languages"},
["cba"] = {"Chibchan languages"},
["ccn"] = {"North Caucasian languages"},
["ccs"] = {"South Caucasian languages"},
["cdc"] = {"Chadic languages"},
["cdd"] = {"Caddoan languages"},
["cel"] = {"Celtic languages"},
["cmc"] = {"Chamic languages"},
["cpe"] = {"Creoles and pidgins, English-based"},
["cpf"] = {"Creoles and pidgins, French-based"},
["cpp"] = {"Creoles and pidgins, Portuguese-based"},
["crp"] = {"Creoles and pidgins"},
["csu"] = {"Central Sudanic languages"},
["cus"] = {"Cushitic languages"},
["day"] = {"Land Dayak languages"},
["dmn"] = {"Mande languages"},
["dra"] = {"Dravidian languages"},
["egx"] = {"Egyptian languages"},
["esx"] = {"Eskimo-Aleut languages"},
["euq"] = {"Basque (family)"},
["fiu"] = {"Finno-Ugrian languages"},
["fox"] = {"Formosan languages"},
["gem"] = {"Germanic languages"},
["gme"] = {"East Germanic languages"},
["gmq"] = {"North Germanic languages"},
["gmw"] = {"West Germanic languages"},
["grk"] = {"Greek languages"},
["hmx"] = {"Hmong-Mien languages"},
["hok"] = {"Hokan languages"},
["hyx"] = {"Armenian (family)"},
["iir"] = {"Indo-Iranian languages"},
["ijo"] = {"Ijo languages"},
["inc"] = {"Indic languages"},
["ine"] = {"Indo-European languages"},
["ira"] = {"Iranian languages"},
["iro"] = {"Iroquoian languages"},
["itc"] = {"Italic languages"},
["jpx"] = {"Japanese (family)"},
["kar"] = {"Karen languages"},
["kdo"] = {"Kordofanian languages"},
["khi"] = {"Khoisan languages"},
["kro"] = {"Kru languages"},
["map"] = {"Austronesian languages"},
["mkh"] = {"Mon-Khmer languages"},
["mno"] = {"Manobo languages"},
["mun"] = {"Munda languages"},
["myn"] = {"Mayan languages"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["ngf"] = {"Trans-New Guinea languages"},
["nic"] = {"Niger-Kordofanian languages"},
["nub"] = {"Nubian languages"},
["omq"] = {"Oto-Manguean languages"},
["omv"] = {"Omotic languages"},
["oto"] = {"Otomian languages"},
["paa"] = {"Papuan languages"},
["phi"] = {"Philippine languages"},
["plf"] = {"Central Malayo-Polynesian languages"},
["poz"] = {"Malayo-Polynesian languages"},
["pqe"] = {"Eastern Malayo-Polynesian languages"},
["pqw"] = {"Western Malayo-Polynesian languages"},
["pra"] = {"Prakrit languages"},
["qwe"] = {"Quechuan (family)"},
["roa"] = {"Romance languages"},
["sai"] = {"South American Indian languages"},
["sal"] = {"Salishan languages"},
["sdv"] = {"Eastern Sudanic languages"},
["sem"] = {"Semitic languages"},
["sgn"] = {"sign languages"},
["sio"] = {"Siouan languages"},
["sit"] = {"Sino-Tibetan languages"},
["sla"] = {"Slavic languages"},
["smi"] = {"Sami languages"},
["son"] = {"Songhai languages"},
["sqj"] = {"Albanian languages"},
["ssa"] = {"Nilo-Saharan languages"},
["syd"] = {"Samoyedic languages"},
["tai"] = {"Tai languages"},
["tbq"] = {"Tibeto-Burman languages"},
["trk"] = {"Turkic languages"},
["tup"] = {"Tupi languages"},
["tut"] = {"Altaic languages"},
["tuw"] = {"Tungus languages"},
["urj"] = {"Uralic languages"},
["wak"] = {"Wakashan languages"},
["wen"] = {"Sorbian languages"},
["xgn"] = {"Mongolian languages"},
["xnd"] = {"Na-Dene languages"},
["ypk"] = {"Yupik languages"},
["zhx"] = {"Chinese (family)"},
["zle"] = {"East Slavic languages"},
["zls"] = {"South Slavic languages"},
["zlw"] = {"West Slavic languages"},
["znd"] = {"Zande languages"}
}
cuy098mavdbzysd78ximwvnfoiwwba5
Module:Language/data/ISO 639-5
828
56220
394554
2026-10-16T14:40:32Z
MacTire02
219
MacTire02 moved page [[Module:Language/data/ISO 639-5]] to [[Module:Module:ISO 639 name/ISO 639-5]]
394554
Scribunto
text/plain
return require [[Module:Module:ISO 639 name/ISO 639-5]]
g3dbrfjmb1ns7yalmg603tqk6lx76jg
394557
394554
2026-10-16T14:41:31Z
MacTire02
219
++
394557
Scribunto
text/plain
return require [[Module:ISO 639 name/ISO 639-5]]
120p8vdv67axgza2rs08glnhdd3110n
Module:Module:ISO 639 name/ISO 639-5
828
56221
394556
2026-10-16T14:41:00Z
MacTire02
219
MacTire02 moved page [[Module:Module:ISO 639 name/ISO 639-5]] to [[Module:ISO 639 name/ISO 639-5]]
394556
Scribunto
text/plain
return require [[Module:ISO 639 name/ISO 639-5]]
120p8vdv67axgza2rs08glnhdd3110n
Ronney:Artyn lesh teks ayns Wolofish
14
56222
394559
2026-10-16T16:37:57Z
MacTire02
219
ronney noa
394559
wikitext
text/x-wiki
{{Non-Manx-language text category}}
ftm4vo8zcojmgp8zf3wygcgvg0ztoi7
Ronney:Geillyn CS1 ayns Wolofish (wo)
14
56223
394560
2026-10-16T16:38:42Z
MacTire02
219
ronney noa
394560
wikitext
text/x-wiki
{{CS1 language sources}}
r2upptk2cpczj7nm3zkocg7u05li8il
Pooja Hegde
0
56224
394588
2026-10-17T01:42:20Z
MacTire02
219
toshiaght art
394588
wikitext
text/x-wiki
{{WD Kishtey Fys Dooinney
| ennym = Pooja Hegde
| jalloo = Pooja Hegde at Beast Telugu press meet (1).jpg
| fo-heidyl = Hegde 'sy vlein 2022
| date_ruggyr = {{date_ruggyr|df=yes|1990|10|13}}
| boayl_ruggyr = [[Mumbai]], Maharashtra, yn Injey
}}
{{Çhyndaait|1=en|2=Pooja Hegde|lhieggan=1380519562}}
She ben-aghteyr Injinagh ee '''Pooja Hegde''' (ruggit er 13 Jerrey Fouyir 1990). Er y chooid smoo, t'ee cloie ayns filmyn [[scannaneaght y Teloogooish|Teloogooish]], [[scannaneaght y Hindish|Hindish]], as [[scannaneaght y Tamilish|Tamilish]]. She nane jeh ny ben-aghteyryn smoo eeckit ayns [[scannaneaght yn Injey Yiass]] t'ee,<ref name="hedgepay" /> as she fowder kiare [[Aundyryn Fillym Eddyrashoonagh yn Injey Yiass|Aundyr SIIMA]] myrane lesh kiare enmyssaght da [[Aundyryn Filmfare Yiass]].
Erreish da ren ee goaill ayrn 'sy tostyl aalid [[I Am She–Miss Universe India|Miss Universe India]] 'sy vlein 2010, ren Hegde e kied çheet-magh 'sy scannaneaght tra chloie ee 'sy fillym Tamilish ''[[Mugamoodi]]'' (2012). Hooar ee enney ayns scannaneaght y Teloogooish lesh e paartyn ayns ''[[Oka Laila Kosam]]'' as ''[[Mukunda]]'' (y daa jeu 'sy vlein 2014), as hooar ee enney s'odjey 'syn aittys jantys ''[[DJ: Duvvada Jagannadham]]'' (2017). Haink e çheet-magh Bollywood tra chloie ee ayns ''[[Mohenjo Daro (fillym)|Mohenjo Daro]]'' (2016) marish [[Hrithik Roshan]], as haink rah traghtee 'syn aittys skimmee ''[[Housefull 4]]'' (2019).
Ren Hegde mooar jeh'n ennym eck ayns filmyn Teloogooish rahoil lheid as ''[[Aravinda Sametha Veera Raghava]]'' (2018), ''[[Maharshi (fillym 2019)|Maharshi]]'' (2019), ''[[Ala Vaikunthapurramuloo]]'' (2020), as ''[[Most Eligible Bachelor]]'' (2021). Lurg shen, haink kuse veg dy filmyn neurahoil, agh ren ee feddyn rah reesht 'sy fillym ''[[Retro (fillym)|Retro]]'' (2025).
== Imraaghyn ==
{{reflist}}
== Kianglaghyn magh ==
* {{IMDb name}}
* {{Instagram}}
* {{Bollywood Hungama person}}
{{Aundyr SIIMA da'n Ven-aghteyr Share – Teloogooish}}
{{Aundyr Chremeyderyn SIIMA da'n Ven-aghteyr Share – Teloogooish}}
{{Subject bar
|commons = yes
|commons-search = Category:Pooja Hegde
|q =yes
|q-search = Pooja Hegde
|d = yes
|d-search = Q7228519
}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Hegde, Pooja}}
[[Ronney:Ruggyryn 'sy vlein 1990]]
[[Ronney:Feallee vio]]
[[Ronney:Aghteyryn bwoirrin Tuluagh]]
[[Ronney:Aghteyryn bwoirrin Injinagh y 21d eash]]
[[Ronney:Cosneyderyn tostyl aalid Injinagh]]
[[Ronney:Aghteyryn ass Maharashtra]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Teloogooish]]
[[Ronney:Aghteyryn bwoirrin Injinagh]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Tamilish]]
[[Ronney:Aghteyryn bwoirrin ayns scanneaght y Hindish]]
[[Ronney:Craishteyderyn bwoirrin Injinagh]]
[[Ronney:Craishteyderyn ass Maharashtra]]
[[Ronney:Feallee ass Mumbai]]
[[Ronney:Cosneyderyn aundyr SIIMA]]
[[Ronney:Cosneyderyn Aundyryn Teloogooish Zee Cine]]
kvv7sse4tv7us8b558cik998rwdcqfr
394589
394588
2026-10-17T01:43:44Z
MacTire02
219
++
394589
wikitext
text/x-wiki
{{WD Kishtey Fys Dooinney
| ennym = Pooja Hegde
| jalloo = Pooja Hegde at Beast Telugu press meet (1).jpg
| fo-heidyl = Hegde 'sy vlein 2022
| date_ruggyr = {{date_ruggyr|df=yes|1990|10|13}}
| boayl_ruggyr = [[Mumbai]], Maharashtra, yn Injey
}}
{{Çhyndaait|1=en|2=Pooja Hegde|lhieggan=1380519562}}
She ben-aghteyr Injinagh ee '''Pooja Hegde''' (ruggit er 13 Jerrey Fouyir 1990). Er y chooid smoo, t'ee cloie ayns filmyn [[scannaneaght y Teloogooish|Teloogooish]], [[scannaneaght y Hindish|Hindish]], as [[scannaneaght y Tamilish|Tamilish]]. She nane jeh ny ben-aghteyryn smoo eeckit ayns [[scannaneaght yn Injey Yiass]] t'ee,<ref name="hedgepay">{{Cite news |last=Mathur |first=Kajol |date=13 Mean Souree 2022 |title=Nayanthara to Samantha Prabhu: Check out the 10 highest-paid South actresses right now |url=https://www.gqindia.com/entertainment/content/nayanthara-to-samantha-prabhu-check-out-10-highest-paid-south-actresses-right-now |url-status=live |archive-url=https://web.archive.org/web/20230214193137/https://www.gqindia.com/entertainment/content/nayanthara-to-samantha-prabhu-check-out-10-highest-paid-south-actresses-right-now |archive-date=14 Toshiaght Arree 2023 |access-date=19 Mee ny Nollick 2024 |work=[[GQ India]]}}</ref> as she fowder kiare [[Aundyryn Fillym Eddyrashoonagh yn Injey Yiass|Aundyr SIIMA]] myrane lesh kiare enmyssaght da [[Aundyryn Filmfare Yiass]].
Erreish da ren ee goaill ayrn 'sy tostyl aalid [[I Am She–Miss Universe India|Miss Universe India]] 'sy vlein 2010, ren Hegde e kied çheet-magh 'sy scannaneaght tra chloie ee 'sy fillym Tamilish ''[[Mugamoodi]]'' (2012). Hooar ee enney ayns scannaneaght y Teloogooish lesh e paartyn ayns ''[[Oka Laila Kosam]]'' as ''[[Mukunda]]'' (y daa jeu 'sy vlein 2014), as hooar ee enney s'odjey 'syn aittys jantys ''[[DJ: Duvvada Jagannadham]]'' (2017). Haink e çheet-magh Bollywood tra chloie ee ayns ''[[Mohenjo Daro (fillym)|Mohenjo Daro]]'' (2016) marish [[Hrithik Roshan]], as haink rah traghtee 'syn aittys skimmee ''[[Housefull 4]]'' (2019).
Ren Hegde mooar jeh'n ennym eck ayns filmyn Teloogooish rahoil lheid as ''[[Aravinda Sametha Veera Raghava]]'' (2018), ''[[Maharshi (fillym 2019)|Maharshi]]'' (2019), ''[[Ala Vaikunthapurramuloo]]'' (2020), as ''[[Most Eligible Bachelor]]'' (2021). Lurg shen, haink kuse veg dy filmyn neurahoil, agh ren ee feddyn rah reesht 'sy fillym ''[[Retro (fillym)|Retro]]'' (2025).
== Imraaghyn ==
{{reflist}}
== Kianglaghyn magh ==
* {{IMDb name}}
* {{Instagram}}
* {{Bollywood Hungama person}}
{{Aundyr SIIMA da'n Ven-aghteyr Share – Teloogooish}}
{{Aundyr Chremeyderyn SIIMA da'n Ven-aghteyr Share – Teloogooish}}
{{Subject bar
|commons = yes
|commons-search = Category:Pooja Hegde
|q =yes
|q-search = Pooja Hegde
|d = yes
|d-search = Q7228519
}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Hegde, Pooja}}
[[Ronney:Ruggyryn 'sy vlein 1990]]
[[Ronney:Feallee vio]]
[[Ronney:Aghteyryn bwoirrin Tuluagh]]
[[Ronney:Aghteyryn bwoirrin Injinagh y 21d eash]]
[[Ronney:Cosneyderyn tostyl aalid Injinagh]]
[[Ronney:Aghteyryn ass Maharashtra]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Teloogooish]]
[[Ronney:Aghteyryn bwoirrin Injinagh]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Tamilish]]
[[Ronney:Aghteyryn bwoirrin ayns scanneaght y Hindish]]
[[Ronney:Craishteyderyn bwoirrin Injinagh]]
[[Ronney:Craishteyderyn ass Maharashtra]]
[[Ronney:Feallee ass Mumbai]]
[[Ronney:Cosneyderyn aundyr SIIMA]]
[[Ronney:Cosneyderyn Aundyryn Teloogooish Zee Cine]]
6ridnpq9pixqm00gi5uqr7q717n58zr
394594
394589
2026-10-17T01:49:06Z
MacTire02
219
+yrjid
394594
wikitext
text/x-wiki
{{WD Kishtey Fys Dooinney
| ennym = Pooja Hegde
| jalloo = Pooja Hegde at Beast Telugu press meet (1).jpg
| fo-heidyl = Hegde 'sy vlein 2022
| date_ruggyr = {{date_ruggyr|df=yes|1990|10|13}}
| boayl_ruggyr = [[Mumbai]], Maharashtra, yn Injey
|yrjid = {{yrjid|m=1.75}}
}}
{{Çhyndaait|1=en|2=Pooja Hegde|lhieggan=1380519562}}
She ben-aghteyr Injinagh ee '''Pooja Hegde''' (ruggit er 13 Jerrey Fouyir 1990). Er y chooid smoo, t'ee cloie ayns filmyn [[scannaneaght y Teloogooish|Teloogooish]], [[scannaneaght y Hindish|Hindish]], as [[scannaneaght y Tamilish|Tamilish]]. She nane jeh ny ben-aghteyryn smoo eeckit ayns [[scannaneaght yn Injey Yiass]] t'ee,<ref name="hedgepay">{{Cite news |last=Mathur |first=Kajol |date=13 Mean Souree 2022 |title=Nayanthara to Samantha Prabhu: Check out the 10 highest-paid South actresses right now |url=https://www.gqindia.com/entertainment/content/nayanthara-to-samantha-prabhu-check-out-10-highest-paid-south-actresses-right-now |url-status=live |archive-url=https://web.archive.org/web/20230214193137/https://www.gqindia.com/entertainment/content/nayanthara-to-samantha-prabhu-check-out-10-highest-paid-south-actresses-right-now |archive-date=14 Toshiaght Arree 2023 |access-date=19 Mee ny Nollick 2024 |work=[[GQ India]]}}</ref> as she fowder kiare [[Aundyryn Fillym Eddyrashoonagh yn Injey Yiass|Aundyr SIIMA]] myrane lesh kiare enmyssaght da [[Aundyryn Filmfare Yiass]].
Erreish da ren ee goaill ayrn 'sy tostyl aalid [[I Am She–Miss Universe India|Miss Universe India]] 'sy vlein 2010, ren Hegde e kied çheet-magh 'sy scannaneaght tra chloie ee 'sy fillym Tamilish ''[[Mugamoodi]]'' (2012). Hooar ee enney ayns scannaneaght y Teloogooish lesh e paartyn ayns ''[[Oka Laila Kosam]]'' as ''[[Mukunda]]'' (y daa jeu 'sy vlein 2014), as hooar ee enney s'odjey 'syn aittys jantys ''[[DJ: Duvvada Jagannadham]]'' (2017). Haink e çheet-magh Bollywood tra chloie ee ayns ''[[Mohenjo Daro (fillym)|Mohenjo Daro]]'' (2016) marish [[Hrithik Roshan]], as haink rah traghtee 'syn aittys skimmee ''[[Housefull 4]]'' (2019).
Ren Hegde mooar jeh'n ennym eck ayns filmyn Teloogooish rahoil lheid as ''[[Aravinda Sametha Veera Raghava]]'' (2018), ''[[Maharshi (fillym 2019)|Maharshi]]'' (2019), ''[[Ala Vaikunthapurramuloo]]'' (2020), as ''[[Most Eligible Bachelor]]'' (2021). Lurg shen, haink kuse veg dy filmyn neurahoil, agh ren ee feddyn rah reesht 'sy fillym ''[[Retro (fillym)|Retro]]'' (2025).
== Imraaghyn ==
{{reflist}}
== Kianglaghyn magh ==
* {{IMDb name}}
* {{Instagram}}
* {{Bollywood Hungama person}}
{{Aundyr SIIMA da'n Ven-aghteyr Share – Teloogooish}}
{{Aundyr Chremeyderyn SIIMA da'n Ven-aghteyr Share – Teloogooish}}
{{Subject bar
|commons = yes
|commons-search = Category:Pooja Hegde
|q =yes
|q-search = Pooja Hegde
|d = yes
|d-search = Q7228519
}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Hegde, Pooja}}
[[Ronney:Ruggyryn 'sy vlein 1990]]
[[Ronney:Feallee vio]]
[[Ronney:Aghteyryn bwoirrin Tuluagh]]
[[Ronney:Aghteyryn bwoirrin Injinagh y 21d eash]]
[[Ronney:Cosneyderyn tostyl aalid Injinagh]]
[[Ronney:Aghteyryn ass Maharashtra]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Teloogooish]]
[[Ronney:Aghteyryn bwoirrin Injinagh]]
[[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Tamilish]]
[[Ronney:Aghteyryn bwoirrin ayns scanneaght y Hindish]]
[[Ronney:Craishteyderyn bwoirrin Injinagh]]
[[Ronney:Craishteyderyn ass Maharashtra]]
[[Ronney:Feallee ass Mumbai]]
[[Ronney:Cosneyderyn aundyr SIIMA]]
[[Ronney:Cosneyderyn Aundyryn Teloogooish Zee Cine]]
r83pywlutkcteo9o7fnn4u5t58k0y1m
Clowan:Aundyr SIIMA da'n Ven-aghteyr Share – Teloogooish
10
56225
394590
2026-10-17T01:44:29Z
MacTire02
219
clowan noa
394590
wikitext
text/x-wiki
{{navbox
| name = Aundyr SIIMA da'n Ven-aghteyr Share – Teloogooish
| title = [[Aundyr SIIMA da'n Ven-aghteyr Share – Teloogooish]]
| state = {{{state|autocollapse}}}
| listclass = hlist
| group1 = 2011–2020
| list1 =
* [[Nayanthara]] (2011)
* [[Shruti Haasan]] (2012)
* [[Samantha Ruth Prabhu]] (2013)
* [[Shruti Haasan]] (2014)
* [[Shruti Haasan]] (2015)
* [[Rakul Preet Singh]] (2016)
* [[Kajal Aggarwal]] (2017)
* [[Keerthy Suresh]] (2018)
* [[Samantha Ruth Prabhu]] (2019)
* [[Pooja Hegde]] (2020)
| group2 = 2021–jiu
| list2 =
* [[Pooja Hegde]] (2021)
* [[Sreeleela]] (2022)
* [[Keerthy Suresh]] (2023)
* [[Rashmika Mandanna]] (2024)
}}<noinclude>
{{collapsible option}}
[[Category:South Indian International Movie Awards navigational boxes|Telugu Actress]]
</noinclude>
23ngwc1bce2g3k88agaqgiyaf46jyz7
394591
394590
2026-10-17T01:44:51Z
MacTire02
219
ronney elley
394591
wikitext
text/x-wiki
{{navbox
| name = Aundyr SIIMA da'n Ven-aghteyr Share – Teloogooish
| title = [[Aundyr SIIMA da'n Ven-aghteyr Share – Teloogooish]]
| state = {{{state|autocollapse}}}
| listclass = hlist
| group1 = 2011–2020
| list1 =
* [[Nayanthara]] (2011)
* [[Shruti Haasan]] (2012)
* [[Samantha Ruth Prabhu]] (2013)
* [[Shruti Haasan]] (2014)
* [[Shruti Haasan]] (2015)
* [[Rakul Preet Singh]] (2016)
* [[Kajal Aggarwal]] (2017)
* [[Keerthy Suresh]] (2018)
* [[Samantha Ruth Prabhu]] (2019)
* [[Pooja Hegde]] (2020)
| group2 = 2021–jiu
| list2 =
* [[Pooja Hegde]] (2021)
* [[Sreeleela]] (2022)
* [[Keerthy Suresh]] (2023)
* [[Rashmika Mandanna]] (2024)
}}<noinclude>
{{collapsible option}}
[[Ronney:Kishtaghyn stiuree bentyn rish SIIMA|Teloogooish]]
</noinclude>
0faxzo7bjhksqu3vih2im6qdv2leg15
Clowan:Aundyr Chremeyderyn SIIMA da'n Ven-aghteyr Share – Teloogooish
10
56226
394592
2026-10-17T01:46:33Z
MacTire02
219
clowan noa
394592
wikitext
text/x-wiki
{{navbox
| name = Aundyr Chremeyderyn SIIMA da'n Ven-aghteyr Share – Teloogooish
| title = [[Aundyr Chremeyderyn SIIMA da'n Ven-aghteyr Share – Teloogooish]]
| state = {{{state|autocollapse}}}
| listclass = hlist
| group1 = 2011–2020
| list1 =
* [[Hansika Motwani]] (2011)
* [[Nayanthara]] (2012)
* [[Tamannaah Bhatia]] (2013)
* [[Samantha Ruth Prabhu]] (2014)
* [[Anushka Shetty]] (2015)
* {{ndash}} (2016)
* [[Ritika Singh]] (2017)
* [[Samantha Ruth Prabhu]] (2018)
* [[Rashmika Mandanna]] (2019)
* [[Aishwarya Rajesh]] (2020)
| group2 = 2021–jiu
| list2 =
* [[Pooja Hegde]] (2021)
* [[Mrunal Thakur]] (2022)
* [[Mrunal Thakur]] (2023)
* [[Meenakshi Chaudhary]] (2024)
* [[Aishwarya Rajesh]] (2025)
}}<noinclude>
{{collapsible option}}
[[Ronney:Kishtaghyn stiuree bentyn rish SIIMA|Chremeyderyn Teloogooish]]
</noinclude>
7vkutqojv712f2bujkkreghwc5kxcne
Ronney:Artyn lesh teks ayns Creeole Mwirrishagh
14
56227
394614
2026-10-17T03:46:39Z
MacTire02
219
ronney noa
394614
wikitext
text/x-wiki
{{Non-Manx-language text category}}
ftm4vo8zcojmgp8zf3wygcgvg0ztoi7
Ronney:Artyn lesh teks ayns Sangoish
14
56228
394618
2026-10-17T04:02:27Z
MacTire02
219
ronney noa
394618
wikitext
text/x-wiki
{{Non-Manx-language text category}}
ftm4vo8zcojmgp8zf3wygcgvg0ztoi7
Ronney:Yn Tomaalee
14
56229
394624
2026-10-17T04:44:36Z
MacTire02
219
ronney noa
394624
wikitext
text/x-wiki
{{Commons category|Somaliland|y Tomaalee}}
{{DEFAULTSORT:Tomaalee, yn}}
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn Chayrn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Arganeyssyn thallooin y Tomaal]]
[[Ronney:Ardjyn De facto yn Tomaal]]
34a7ctvb2uq52uk79mrno0pg3771t0l
394625
394624
2026-10-17T04:45:02Z
MacTire02
219
++
394625
wikitext
text/x-wiki
{{Commons category|Somaliland|y Tomaalee}}
{{DEFAULTSORT:Tomaalee, yn}}
[[Ronney:Çheeraghyn yn Affrick Hiar]]
[[Ronney:Çheeraghyn Chayrn yn Affrick]]
[[Ronney:Çheeraghyn yn Affrick]]
[[Ronney:Arganeyssyn thallooin y Tomaal]]
[[Ronney:Ardjyn de facto yn Tomaal]]
q3rbkfly2fu2r3uwchyv3bxbvvjnkjf
Ronney:Ardjyn de facto yn Tomaal
14
56230
394626
2026-10-17T04:45:34Z
MacTire02
219
ronney noa
394626
wikitext
text/x-wiki
[[Ronney:Ardjyn y Tomaal|*]]
iqgxbt54ki85y86qyejuagl9h6i8dix
Ronney:Ardjyn y Tomaal
14
56231
394627
2026-10-17T04:46:53Z
MacTire02
219
ronney noa
394627
wikitext
text/x-wiki
{{Commons category|Regions of Somalia|Ardjyn y Tomaal}}
{{Cat main|Ardjyn y Tomaal}}
[[Ronney:Aarheynnyn y Tomaal]]
[[Ronney:Rheynnyn reiragh jeh'n chied cheim rere çheer|Tomaal]]
[[Ronney:Ardjyn yn Affrick rere çheer|Tomaal]]
dxua6hyri44r8kel1xrehkz5ehpb3vo
Ronney:Aarheynnyn y Tomaal
14
56232
394628
2026-10-17T04:48:09Z
MacTire02
219
ronney noa
394628
wikitext
text/x-wiki
{{Commons category|Subdivisions of Somalia|Aarheynnyn y Tomaal}}
[[Ronney:Rheynnyn reiragh rere çheer|Tomaal]]
[[Ronney:Çheer-oaylleeaght y Tomaal]]
[[Ronney:Rheynnyn reiragh 'syn Affrick|Tomaal]]
7qc3i06eg6w3j6t5f0pf88f8kglr7od
Ronney:Çheer-oaylleeaght y Tomaal
14
56233
394629
2026-10-17T04:49:35Z
MacTire02
219
ronney noa
394629
wikitext
text/x-wiki
{{Commons cat|Geography of Somalia|Çheer-oaylleeaght y Tomaal}}
{{cat main}}
{{DEFAULTSORT:Tomaal}}
[[Ronney:Yn Tomaal|Cheer-oaylleeaght]]
[[Ronney:Çheer-oaylleeaght yn Affrick rere çheer]]
[[Ronney:Çheer-oaylleeaght yn Affrick Hiar]]
[[Ronney:Çheer-oaylleeaght rere çheer]]
2zmhu9dzx4ftzj0wv7g4bqsulrhvsxt
Ronney:Geillyn CS1 ayns Arabish (ar)
14
56234
394634
2026-10-17T05:38:12Z
MacTire02
219
ronney noa
394634
wikitext
text/x-wiki
{{CS1 language sources}}
r2upptk2cpczj7nm3zkocg7u05li8il
Ronney:Pobblaght Gheynlagh Arabagh y Tahara
14
56235
394636
2026-10-17T05:41:14Z
MacTire02
219
ronney noa
394636
wikitext
text/x-wiki
{{Commons category|Sahrawi Arab Democratic Republic|{{PAGENAME}}}}
{{Cat main}}
{{DEFAULTSORT:Tahara, Pobblaght Gheynlagh Arabagh}}
[[Ronney:Çheeraghyn yn Affrick Hwoaie]]
[[Ronney:Yn Sahara Heear| ]]
[[Ronney:Çheeraghyn Maghrebagh]]
[[Ronney:Pobblaghtyn Arabagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Affrickagh]]
[[Ronney:Steatyn soshiallagh]]
t9o0htj2thexrpwgu7xq2ahbwqzk1qu