Wikipedia
gvwiki
https://gv.wikipedia.org/wiki/Ard-ghuillag
MediaWiki 1.47.0-wmf.20
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 Reeriaght Unnaneysit
0
979
393396
393308
2026-09-19T16:05:43Z
MacTire02
219
++
393396
wikitext
text/x-wiki
{{Art reiht rollage}}
{{Kishtey fys çheer
|ennym = Reeriaght Unnaneysit y Vretyn Vooar as Nerin Hwoaie
|jalloo_cleinney = Royal Coat of Arms of the United Kingdom.svg
|sorçh_cowrey = Armys reeoil
<!--cha nel jarroo-raa ec y Reeriaght Unnaneysit; she jarroo-raa y vonarkaght eh Dieu et mon droit-->
|jarroo-raa = none
|arrane_ashoonagh = [[God Save the King]]
|noteyn_arrane_ashoonagh = She "God Save the King" ("Dy Sauail Jee yn Ree" 'sy Ghaelg) yn [[arrane ashoonagh]] rere cadjinchliaghtey, cha rere yn leigh, as cha nel lhieggan eaghtyrit ayn. Dy cadjin, cha nel agh y chied rane er ghoaill, ga dy vel y nah rane er ghoaill keayrtyn ec taghyrtyn steat as theayagh.<ref>{{Cite web |title=National Anthem |url=https://www.royal.uk/encyclopedia/national-anthem |access-date=10 Averil 2024 |website=The Royal Family |archive-date=20 Boaldyn 2024 |archive-url=https://web.archive.org/web/20240520130352/https://www.royal.uk/encyclopedia/national-anthem |url-status=live }}</ref> Ta ny focklyn ''King, he, him, his'', ta ymmydit jiu, scughit as ny focklyn ''Queen, she, her'' currit stiagh 'syn ynnyd oc tra she ben y monark.
|coadan_arrane_ashoonagh = United_States_Navy_Band_-_God_Save_the_Queen.ogg
|sorçh_çhengaghyn = [[Çhengey ashoonagh]]
|çhengey_oikoil = none
|çhengaghyn = [[Baarle]]
|noteyn_çhengaghyn = Ga nagh vel [[çhengey oikoil|staydys oikoil]] ''[[de jure]]'' ec y Vaarle, ta staydys er lheh currit da'n [[Baarle Albinagh|Vaarle Albinagh]], da'n [[Baarle Albinagh Ultagh|Vaarle Albinagh Ultagh]], da'n [[Bretnish|Vretnish]], da'n [[Cornish|Chornish]], da [[Gaelg ny h-Albey]], as da'n [[Yernish]] myr [[çhengey ardjynagh|çhengaghyn ardjynagh]] ny [[myn-çhengey|myn-çhengaghyn]] rere y [[Kaart Oarpagh cour Çhengaghyn Ardjynagh as Myn-çhengaghyn|Chaart Oarpagh cour Çhengaghyn Ardjynagh ny Myn-çhengaghyn]] lesh [[Coonseil yn Oarpey]].<ref name="reglang">{{Cite web |title=List of declarations made with respect to treaty No. 148 |url=http://conventions.coe.int/treaty/Commun/ListeDeclarations.asp?CL=ENG&NT=148&VL=1 |access-date=12 Mee ny Nollick 2013 |publisher=[[Coonseil yn Oarpey]] |archive-date=12 Mee ny Nollick 2013 |archive-url=https://web.archive.org/web/20131212175720/http://conventions.coe.int/treaty/Commun/ListeDeclarations.asp?CL=ENG&NT=148&VL=1 |url-status=dead }}</ref> T'ad goaill stiagh currymyn ry hoi cur-er-oaie ny çhengaghyn shen.<ref>{{Cite web |title=Welsh language on GOV.UK – Content design: planning, writing and managing content – Guidance |url=https://www.gov.uk/guidance/content-design/welsh-language-on-gov-uk |access-date=3 Luanistyn 2018 |website=gov.uk |archive-date=4 Luanistyn 2018 |archive-url=https://web.archive.org/web/20180804014121/https://www.gov.uk/guidance/content-design/welsh-language-on-gov-uk |url-status=live }}</ref><ref>{{Cite news |title=Welsh language scheme |work=GOV.UK |url=https://www.gov.uk/government/organisations/department-for-transport/about/welsh-language-scheme |access-date=3 Luanistyn 2018 |archive-date=4 Luanistyn 2018 |archive-url=https://web.archive.org/web/20180804014119/https://www.gov.uk/government/organisations/department-for-transport/about/welsh-language-scheme |url-status=live }}</ref><ref>{{Cite news |title=Welsh language scheme |work=GOV.UK |url=https://www.gov.uk/government/organisations/home-office/about/welsh-language-scheme |access-date=3 Luanistyn 2018 |archive-date=2 Luanistyn 2018 |archive-url=https://web.archive.org/web/20180802010917/https://www.gov.uk/government/organisations/home-office/about/welsh-language-scheme |url-status=live }}</ref> Chammah's shen, ta staydys enmyssit currit da'n [[Çhengey Chowree Ghoaldagh]]. Jeeagh er [[Çhengaghyn y Reeriaght Unnaneysit]] chammah.
|sorçh_reiltys = [[Monarkaght vunraghtoil#Nalbin, Sostyn, as y Reeriaght Unnaneysit|Monarkaght vunraghtoil pharlamaidagh]] unnaneagh
|ushtey_sy_cheead = 1.34
|blein_LTS_CCK = 2006
|LTS_CCK = $2.270 trillioon
|rhenk_LTS_CCK = 6oo
|LTS_CCK_yn_dooinney = $37,328
|rhenk_LTS_CCK_yn_dooinney = 13oo
|sorçh_kiondeeaght = [[Shennaghys y Reeriaght Unnaneysit|Crooaght]]
|taghyrt1_bunnit = [[Slattyssyn yn Unnaneys 1707]]
|date1_bunnit = 1 Boaldyn 1707
|taghyrt2_bunnit = [[Slattyssyn yn Unnaneys 1800]]
|date2_bunnit = 1 Jerrey Geuree 1801
|taghyrt3_bunnit = [[Conaant Anglo-Yernagh]]
|date3_bunnit = 12 Averil 1922
|traa_ynnydagh = [[Traa Mean Greenwich|GMT]]
|ashchur_utc = +00:00
|traa_ynnydagh_TTLS = [[Traa Souree Goaldagh|BST]]
|ashchur_utc_TTLS = +01:00
}}
She çheer ayns sheear hwoaie yn [[Yn Oarpey|Oarpey]] ee '''Reeriaght Unnaneysit y Vretyn Vooar as Nerin Hwoaie''' ({{langx|en|United Kingdom of Great Britain and Northern Ireland}}) ny '''yn Reeriaght Unnaneysit''', yn '''RU''', '''yn Vretyn Vooar''' ny '''Çheer ny Goal''' ny keayrtyn. T'eh ny heer ellanagh<ref>{{cite web | url = http://www.britannica.com/EBchecked/topic/615557/United-Kingdom | title = Encyclopaedia Britannica | quote = Island country located off the north-western coast of mainland Europe | access-date=25 Mean Fouyir 2007}}</ref><ref name="Countries">{{cite web |url=http://www.number10.gov.uk/Page823 |title=Countries within a country |publisher=www.number-10.gov.uk |access-date=13 Mean Souree 2007 |quote=Countries within a country| archiveurl=http://webarchive.nationalarchives.gov.uk/20080909013512/http://www.number10.gov.uk/Page823 |archivedate=2008-09-09}}</ref> ta goll reish [[y Vretyn Vooar]], shiar hwoaie [[Nerin]], as ram ellanyn beggey. Cha nel joarey thallooin ayns y Reeriaght Unnaneysit agh ayns [[Nerin Hwoaie]] liorish [[Pobblaght Nerin]].<ref>{{Cite web|url = http://www.eu2005.gov.uk/servlet/Front?pagename=OpenMarket/Xcelerate/ShowPage&c=Page&cid=1115141709899|title = Member States: United Kingdom|access-date = 29 Boaldyn 2006 |publisher = UK Presidency of the EU 2005 |archivedate = 2006-03-14|archiveurl = https://web.archive.org/web/20060314081107/http://www.eu2005.gov.uk/servlet/Front?pagename=OpenMarket/Xcelerate/ShowPage&c=Page&cid=1115141709899}}</ref> Faagail magh y joarey shoh, ta'n RU caglit liorish [[Yn Keayn Sheear|y Cheayn Sheear]], [[Mooir Hostyn]], [[Mooir yn Eeaght]], as [[Mooir Vannin]]. Ta'n ellan smoo, yn Vretyn Vooar, kianglt rish [[y Rank]] liorish [[Thiollane Vooir Eeaght]].
Ta'n Reeriaght Unnaneysit ny steat unnaneagh as t'eh jeant seose jeh kiare [[Çheeraghyn y Reeriaght Unnaneysit|çheeraghyn]]: [[Bretin]], [[Nalbin]], [[Nerin Hwoaie]] as [[Sostyn]].<ref>{{cite web|url=http://www.statistics.gov.uk/geography/uk_countries.asp|title=The Countries of the UK|publisher=www.statistics.gov.uk|access-date = 10 Jerrey Fouyir 2008|archiveurl=http://webarchive.nationalarchives.gov.uk/20020329130655/http://www.statistics.gov.uk/geography/uk_countries.asp|archive-date=2002-03-29}}</ref> T'eh reillit liorish [[corys ard-whaiylagh]] lesh soiaghey yn reiltys ayns y [[preeu-valley]] [[Lunnin]], agh ta tree [[reirey jeeveanit|reiraghyn ashoonagh jee-veanit]] ayns [[Beeal Feirshtey]], [[Cayr Deeth]] as [[Doon Edin]], preeu-valjyn Nerin Hwoaie, Vretin, as ny h-Albey. Ta'n RU ny [[reeriaght vunraghtoil]] lesh [[Çhalse III y Reeriaght Unnaneysit|Ree Çhalse III]] myr fer toshee y steat. She [[Croghaneyn-crooin]] [[Bayleeaght Guernsey]], [[Bayleeaght Yersee]], as [[Mannin]] as cha nel ad coontit myr ayrn jeh'n RU, agh t'ad jannoo conastey lesh.<ref>{{cite web| url = http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517| title = Key facts about the United Kingdom| access-date = 26 Mean Souree 2008| work = Government, citizens and rights| publisher = [[Directgov]]| quote = The full title of this country is 'the United Kingdom of Great Britain and Northern Ireland'. 'The UK' is made up of England, Scotland, Wales and Northern Ireland. 'Great Britain' (or just 'Britain') does not include Northern Ireland. The Channel Islands and the Isle of Man are not part of the UK.| access-date = 2008-11-14| archivedate = 2008-11-15| archiveurl = https://web.archive.org/web/20081115150128/http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517}}</ref> Ta kiare [[Thallooyn Harrish Mooir Goaldagh]] jeig ec yn RU,<ref>{{cite web | url = http://www.fco.gov.uk/en/fco-in-action/global-network/ | title = FCO global network | work = FCO in Action | publisher = [[Foreign and Commonwealth Office]] | access-date = 26 Mean Souree 2008 |archive-url=http://webarchive.nationalarchives.gov.uk/20080331091058/http://www.fco.gov.uk/en/fco-in-action/global-network/|archive-date=2008-03-31}}</ref> as t'ad nyn remladyn jeh'n [[Impiraght Ghoaldagh]], yn impiraght smoo ayns shennaghys y theihll. Ta Ree Çhalse III foast ny 'er toshee er [[Co-unnaneys ny h-Ashoonyn]] as ny 'er toshee er dagh ream y cho-unnaneys.
== Shennaghys ==
{{ardart|Shennaghys y Reeriaght Unnaneysit}}
[[Coadan:Sadler, Battle of Waterloo.jpg|left|thumb|Va [[Cah Waterloo]] jerrey [[ny Caggaghyn Napoleonagh]]]]
Er 1 Boaldyn 1707, va [[Reeriaght y Vretyn Vooar]]<ref>{{cite web|url=http://www.parliament.uk/actofunion/ |title=Welcome |publisher=www.parliament.uk |access-date = 7 Jerrey Fouyir 2008}}</ref><ref>{{cite web |url=http://www.scotshistoryonline.co.uk/union.html |title=THE TREATY or Act of the Union |publisher=www.scotshistoryonline.co.uk |accessdate= 27 Luanistyn 2008 |archive-date=2019-05-27 |archive-url=https://web.archive.org/web/20190527074630/http://www.scotshistoryonline.co.uk/union.html |url-status=dead }}</ref> crooit rere [[unnaneys politickagh]] eddyr [[Reeriaght Hostyn]] (as eh goaill stiagh [[Bretyn]]) as [[Reeriaght ny h-Albey]]. Va'n taghyrt shen ny eiyrtys jeh [[Conaant yn Unnaneys]] as eh fo-screeuit er 22 Jerrey Souree 1706,<ref>{{cite web|url=http://www.nationalarchives.gov.uk/pathways/citizenship/rise_parliament/docs/articles_union.htm |title=Articles of Union with Scotland 1707 |publisher=www.parliament.uk |access-date = 19 Jerrey Fouyir 2008}}</ref> as eh shickyrit liorish [[Ard-whaiyl Hostyn]] as [[Ard-whaiyl ny h-Albey]] lesh goaill rish [[Slattyssyn yn Unnaneys 1707|Slattys yn Unnaneys]] ayns 1707. Begnagh keead bleeaney ny s'anmey, va [[Reeriaght Nerin]] kianglt rish Reeriaght y Vretyn Vooar liorish goaill rish [[Slattys yn Unnaneys 1800]].<ref>{{cite web |url=http://www.actofunion.ac.uk/actofunion.htm#act | title=The Act of Union |publisher=Act of Union Virtual Library |access-date=15 Boaldyn 2006}}</ref> Faagail magh dy row Sostyn as Nalbin nyn steatyn anchaslagh roish 1707, v'ad ayns [[unnaneys persoonagh]] veih [[Unnaneys ny Crooinyn]] ayns 1603, tra va troyn Reeriaghtyn Hostyn as Nerin eirit ec [[Jamys I Hostyn|Jamys VI Ree ny h-Albey]] as va'n cooyrt reeoil arraghit veih Doon Edin gys Lunnin.<ref>{{cite book |title=Chronology of Scottish History |publisher=Geddes & Grosset |isbn=1855343800 |last=Ross |first=David |date=2002 |quote=''1603:'' James VI becomes James I of England in the Union of the Crowns, and leaves Edinburgh for London |page=56}}</ref><ref>{{cite book |title=Claiming Scotland: National Identity and Liberal Culture |publisher=Edinburgh University Press |isbn=1902930169 |last=Hearn |first=Jonathan |date=2002 |quote=Inevitably, James moved his court to London|page=104}}</ref>
[[Coadan:British Empire 1897.jpg|thumb|left|Yn [[Impiraght Ghoaldagh]] ayns 1897. Ayns 1920 haink urree dy ve ny h-impiraght smoo er y theihll.]]
'Sy chied cheead, va paart mooar ayns lhiasaghey eieyn heear y [[corys ard-whaiylagh|chorys ard-whaiylagh]] as va cohortysyn mooarey jeant ec y çheer ayns lettyraght, ellynyn as oaylleeaght.<ref>{{cite book |last=Ferguson |first=Niall |authorlink=Niall Ferguson |year=2003 |title=Empire: The Rise and Demise of the British World Order |publisher=Basic Books |isbn=0465023282}}</ref> Cheaghil [[y Çhyndaa Çhynskylagh]] y çheer as hug eh cooney er lhiasaghey [[yn Impiraght Ghoaldagh]]. Ec y traa shen, chammah as çheeraghyn mooarey elley, va paart ec yn RU ayns y [[Coloinaghys|choloinaghys]], goaill stiagh [[cochionneeaght sleab yn Atlantagh]], ga dy dy hie [[Slattys Cochionneeaght Sleab 1807]] ny hrooid. Va'n RU ny chied çheer dy chur jerrey lesh cochionneeaght sleabyn.<ref>[http://www.bbc.co.uk/devon/content/articles/2007/03/20/abolition_navy_feature.shtml Sailing against slavery. Liorish Jo Loosemore] BBC</ref>
Lurg traastagh [[Napoleon I ny Frank|Napoleon]] ayns ny [[Caggaghyn Napoleonagh]], dirree yn RU dy ve ny phreeu-chummaght lhuingyssagh y 19oo eash as hannee yn stayd shen echey derrey yn 20oo eash meanagh. Daase yn Impiraght Ghoaldagh gys y cheim smoo ayns 1921, as hooar eh anney [[Leeg ny h-Ashoonyn]] harrish shen-choloinyn ny Germaan as yn Impiraght Turkagh lurg [[Yn Chied Chaggey Dowanagh|y Chied Chaggey Dowanagh]].
She trooid çhionnidyn broie ayns Nerin, haghyr [[Slattys Reiltys Nerin 1920|rheynn magh]] yn ellan ayns 1920, as seyrsnys [[Steat Seyr Nerin]] ayns 1922 ny lurg. Hannee Nerin Hwoaie lesh yn RU. Myr eiyrtys, ayns 1927, va ennym formoil ny çheerey çhyndaait gys y lhieggan roie, Reeriaght Unnaneysit y Vretyn Vooar as Nerin Hwoaie.<ref name="CAIN">{{cite web |url=http://cain.ulst.ac.uk/issues/politics/docs/ait1921.htm |title=The Anglo-Irish Treaty, 6 December 1921 |publisher=CAIN |access-date=14 Mee Houney 2008 |archive-date=14 Boaldyn 2012 |archive-url=https://web.archive.org/web/20120514145108/http://cain.ulst.ac.uk/issues/politics/docs/ait1921.htm |url-status=dead }}</ref>
[[Coadan:Supermarinespitfire.JPG|thumb|right|[[Cah yn Vretyn Vooar]]. Hannee yn RU ynrican, mastey çheeraghyn cochaarjagh Oarpagh [[Yn Nah Chaggey Dowanagh|y Nah Chaggey Dowanagh]], seyr veih cumaltys ny Natseeyn.]]
Rish ny 1920yn, va'n [[BBC]], y chied ghreasane scaalheanee eddyrashoonagh 'sy theihll, currit er bun. Ren yn RU caggey rish [[Yn Ghermaan Natseeagh|y Ghermaan Natseeagh]] myr nane jeh cummaghtyn Cochaarjagh [[Yn Nah Chaggey Dowanagh|y Nah Chaggey Dowanagh]] as hug eh cooney da'n theihll heear-chaggeeagh. By chyndagh rish y Nah Chaggey Dowanagh va'n Reeriaght Unnaneysit jeeyllit rere argidys. Hug eeasaghtyn costallagh veih'n [[Yn Chanadey|Chanadey]] as veih [[ny Steatyn Unnaneysit]] cooney da'n RU as eh geearree slaanaghey.
Ayns bleeantyn jeeragh ny lurg y chaggey, va'n [[steat lhiasee]] Goaldagh currit er bun, goaill stiagh [[Shirveish Ashoonagh ny Slaynt]], nane jeh ny kied corysyn ooilley-ghoaillagh y torçh shen. Rere aggyrtysyn y claanaghey, haink earroo mooar dy 'leih veih'n [[Co-unnaneys ny h-Ashoonyn|Cho-unnaneys]] as va'n Vretyn Vooar yl-chynneeagh currit er bun. Faagail magh dy row joaraghyn heear-chaggeeagh noa phaart [[Jee-choloinaghey|politickagh]] ny Bretyn Mooar shickyrit liorish [[Geyre-ghaue Huez]] ny bleeaney 1956, va sheeyney magh eddyr-ashoonagh ny [[Baarle]] çheet er cleayney beaynagh [[Lettyragh Ghoaldagh|lettyraght]] as [[Cultoor y Reeriaght Unnaneysit|cultoor]] Goaldagh. Veih ny 1960yn hooar [[cultoor yn phobbyl|cultoor phobble Ghoaldagh]] cleayney ass y çheer.
Lurg keyllaghey tarmaynagh dowanagh as boirey çhynskylagh ayns ny 1970yn, va bishaghey çheetyn stiagh [[ooill Vooir Hostyn]] as lhiasaghey tarmaynagh ayns ny 1980yn. Car toshiaghys [[Margaret Thatcher]] va çhyndaa ayns troa politickagh as tarmaynagh y Reeriaght Unnaneysit; troa t'ayn derrey yn laa t'ain fo currym reiltys [[Partee yn Lught Obbyr (RU)#Partee yn Lught Obbyr Noa|Phartee yn Lught Obbyr Noa]] fo stiurey [[Tony Blair]] as [[Gordon Brown]] veih 1997.
Va'n Reeriaght Unnaneysit nane jeh 12 chiaddeyder [[yn Unnaneys Oarpagh]] ec y toshiaght ayns 1992 lesh fo-screeuyn [[Conaant Vaastricht]]. Roish shen, v'eh ny oltey jeh'n çheshaght roish shen, y [[Boodeeys Tarmaynagh Oarpagh]] (BTO), veih 1973. Ta ymmyrkey reiltys [[Partee yn Lught Obbyr (RU)|Phartee yn Lught Obbyr]] rish mestey stiagh lesh y çheshaght mestit,<ref name=Times>{{cite web |url=http://www.timesonline.co.uk/tol/news/politics/article775115.ece |title=Modest progress but always on back foot |publisher=Times Online |date=21 Mee ny Nollick 2005 |access-date= 16 Boaldyn 2006 |access-date=2008-11-14 |archive-date=2011-07-17 |archive-url=https://web.archive.org/web/20110717104113/http://www.timesonline.co.uk/tol/news/politics/article775115.ece |url-status=dead }}</ref> lesh [[Ny Condaigee (Reeriaght Unnaneysit)|ny Condaigee]], yn [[Partee Cumaadagh (RU)|Partee Cumaadagh]], as ad shassoo er son freayltys cummaghtyn as cummeydysyn.<ref>{{cite web |url=http://www.conservatives.com/Policy/Where_we_stand/Foreign_Affairs_and_Europe.aspx |title=Foreign Affairs and Europe |publisher=Conservative Party |access-date=17 Jerrey Fouyir 2008 |archivedate=2008-09-29 |archiveurl=https://web.archive.org/web/20080929133409/http://www.conservatives.com/Policy/Where_we_stand/Foreign_Affairs_and_Europe.aspx }}</ref>
Ec jerrey yn 20oo eash haghyr ceaghlaghyn mooarey ayns reiltys y Reeriaght Unnaneysit lesh bunneeaght reiltysyn ashoonagh [[jee-veanaghey|jee-veanit]] da Nerin Hwoaie, Nalbin as Bretin ny lurg [[Refraneyn 'sy Reeriaght Unnaneysit|refraneyn]] roie-slattyssagh.<ref>{{cite web|url=http://publius.oxfordjournals.org/cgi/content/abstract/28/1/217 |title=Reforging the Union: Devolution and Constitutional Change in the United Kingdom|publisher= publius.oxfordjournals.org|access-date=7 Jerrey Fouyir 2008}}</ref>
== Reiltys as politickaght ==
{{ardart|Reeaghyn as benreinyn y Reeriaght Unnaneysit|Politickaght y Reeriaght Unnaneysit|Reihyssyn 'sy Reeriaght Unnaneysit}}
Ta'n Reeriaght Unnaneysit ny [[reeriaght vunraghtoil]]: ta [[Çhalse III y Reeriaght Unnaneysit|Ree Çhalse III]] ny 'er toshee er yn RU chammah as er kiare [[Ream y Cho-unnaneys|çheeraghyn]] jeig y [[Co-unnaneys ny h-Ashoonyn|Cho-unnaneys]], as eh cur yn RU ayns [[unnaneys persoonagh]] lesh ny steatyn shen. Ta ny [[Croghane-Crooin|Croghaneyn-Crooin]] [[Mannin]], [[Jersee]] as [[Guernsey]] fo reealtys y Chrooin, as cha nel ad nyn gooid jeh'n Reeriaght Unnaneysit ga-reih ta cooishyn joarree as coadey fo stiurey reiltys yn RU.
Ta'n Reeriaght Unnaneysit nane jeh tree çheeraghyn y theihill lesh bunraght nagh vel currit ayns coad.<ref>{{cite web |url=http://www.llrx.com/features/uk2.htm#UK%20Legal%20System |title=A Guide To the UK Legal System |author=Sarah Carter |publisher=[[University of Kent|University of Kent at Canterbury]] |access-date=16 Boaldyn 2006 |archivedate=2012-06-03 |archiveurl=https://web.archive.org/web/20120603172102/http://www.llrx.com/features/uk2.htm#UK%20Legal%20System }}</ref> Ta [[Bunraght y Reeriaght Unnaneysit]] jeant seose, son y chooid smoo, jeh geillyn screeuit, goaill stiagh slattysyn, leigh caseyn briwnyssit, as conaantyn eddyr-ashoonagh. Er y fa nagh vel anchaslysyn eddyr slattysyn cadjin as "leigh bunraghtoil", foddee [[Ard-whaiyl y Reeriaght Unnaneysit|Ard-whaiyl yn RU]] "aachroo bunraghtoil" y yannoo rere çheet [[Aght yn Ard-whaiyl|Aghtyn yn Ard-whaiyl]] ny hrooid, as myr shen ta niart echey geillyn screeuit ny neu-screeuit y vunraght dy cheaghley ny dy scryssey magh. Ansherbee, cha nel Ard-whaiylyn billaghyn goll er hrooid y yannoo as ad noi-cheaghlagh.<ref>{{cite web|url=http://www.parliament.uk/about/how/laws/sovereignty.cfm|title=Ynnyd eggey oikoil Ard-whaiyl yn RU}}</ref>
[[Coadan:Location of the BOTs.png|thumb|right|[[Thallooin har mooir Goaldagh|Thallooin har mooir]] faagit y Reeriaght Unnaneysit]]
Ta [[corys ard-whaiylagh]] ec y Reeriaght Unnaneysit as eh bunnit er [[corys y Vannishter Heear]], as t'eh eiyrtit mygeayrt ny Cruinney – sheckteraght yn [[Impiraght Ghoaldagh]]. Ta daa hie – [[Quaiyl Hostyn]] reiht as [[Quaiyl ny Çhiarnyn]] teihyssagh – ayns [[Ard-whaiyl y Reeriaght Unnaneysit]] as t'ad çheet ry-cheilley ayns [[Plaase y Vannishter Heear]]. T'eh ny reiltys slattyssagh jerrinagh 'sy Reeriaght Unnaneysit er y fa nagh vel ard-whaiyl jee-veanit ayns [[Ard-whaiyl ny h-Albey|Nalbin]] as cruinnaghtyn jee-veanit ayns [[Kiannoortys Nerin Hwoaie|Nerin Hwoaie]] as [[Reiltys Chruinnaght Vretyn|Bretyn]] seyr as foddee reiltys yn RU adsyn y ghooney, faagail magh dy row ad currit er bun rere coontey theayagh ayns [[refrane]]yn.
[[Coadan:Westminster palace.jpg|thumb|[[Plaase y Vannishter Heear|Thieyn yn Ard-whaiyl]]]]
Ta ynnyd yn [[Ard-vinishter y Reeriaght Unnaneysit|Ard-vinishter]], fir toshee y reiltys, bentyn da Oltey yn Ard-whaiyl quoi ec ta smaght echey er y chooid smoo ayns [[Quaiyl Hostyn]]. Dy cadjin ta'n Ard-vinishter ny 'er toshee er y phartee politickagh smoo 'sy thie. Ta'n Ard-vinishter as Lugh ny h-Airaghtyn enmyssit ec y Venrein dy chroo [[Reiltys yn Ard Ooashley]]. Ta olteynyn ny h-Airaghtyn reiht veih olteynyn partee yn Ard-vinishter ayns y daa hie slattyssagh, agh veih [[Quail Hostyn]] son y chooid smoo.
Er son reihysyn da [[Quaiyl Hostyn]], ta'n RU rheynnit magh ayns [[Co-heiyderysyn y Reeriaght Unnaneysit|646 co-heiyderysyn]], lesh 529 jeu ayns Sostyn, 18 ayns Nerin Hwoaie, 59 ayns Nalbin as 40 ayns Bretin,<ref>[http://webarchive.nationalarchives.gov.uk/20020518024611/http://www.statistics.gov.uk/geography/westminster.asp Westminster Parliamentary Constituencies] statistics.gov.uk, feddynit magh er 10 Jerrey Fouyir, 2008</ref> agh bee 650 co-heiyderysyn veih'n Ard-reihys s'niessey. Ta un Oltey yn Ard-whaiyl reiht ec dagh co-heiyderys rere yl-raght neuchramp. Ta ard-reihysyn eieit ec y Venrein lurg coyrle yn Ard-vinishter. Cha nel çheorey er traa yn Ard-whaiyl, agh rere [[Aght yn Ard-whaiyl 1911|Aght yn Ard-whaiyl (1911)]] shegin reihysyn noa dy ve ayn çheusthie jeh queig bleeaney veih'n reihys jerrinagh.
T'ad [[Partee yn Lugh Obbyr (RU)|Partee yn Lught Obbyr]], [[Partee Cumaadagh (RU)|y Partee Cumaadagh]] as [[Partee Libraalagh Deynlagh (RU)|y Partee Libraalagh Deynlagh]] ny tree [[Rolley parteeghyn politickagh 'sy Reeriaght Unnaneysit#Parteeghyn politickagh smoo 'sy Reeriaght Unnaneysit|parteeghyn politickagh smoo]] 'sy Reeriaght Unnaneysit, as va 616 ass 646 ynnydyn cosnit ec ny tree parteeghyn shen 'sy reihys jerrinagh. Va'n chooid smoo jeh ny h-ynnydyn faagit cosnit ec parteeghyn slystagh yn RU lheid as [[Partee Ashoonagh ny h-Albey]] (Nalbin ynrican), [[Plaid Cymru]] (Bretin ynrican), as [[Partee Unnaneysagh Deynlagh]], [[Partee Soshiallagh Deynlagh y Lught Obbyr]], [[Partee Unnaneysagh Ullee]], as [[Sinn Féin]] (Nerin Hwoaie ynrican, agh ta olteynyn y phartee gleckey noi ynnydyn ayns [[Pobblaght Nerin|Nerin]] myrgeddin). Ayns freggyrtys politickaght y phartee, cha ghow oltey erbee yn phartee ynnyd ayns Quaiyl Hostyn er y fa dy shegin daue guee er y Ree ny er y Venrein.<ref>Ansherbee, ta ny queig OAyn jannoo ymmyd jeh ny h-oikyn as ny so-lhoobaghtyn elley ry gheddyn 'sy Vannishter Heear veih'n vlein 2002.{{cite web|url=http://news.bbc.co.uk/1/hi/uk_politics/1771635.stm |title=Sinn Fein moves into Westminster|publisher=BBC|date=21 Jerrey Geuree 2002|access-date=17 Jerrey Fouyir 2008}}</ref>
=== Reirey ashoonagh jee-veanit ===
{{ardart|Çhionnal Nerin Hwoaie|Reiltys ny h-Albey|Reiltys Cruinnaght Vretin}}
[[Coadan:Edinburgh Scottish Parliament01 2006-04-29.jpg|thumb|220px|Ta [[Ard-whaiyl ny h-Albey]] ny whaiyl ashoonagh ny h-Albey.]]
[[Coadan:Stormont Parliamentary Building 01.JPG|thumb|220px|[[Thieyn Parlamaid (Nerin Hwoaie)|Thieyn Parlamaid]] ayns [[Stormont, Beeal Feirshtey]], ynnyd y Çhionnal]]
Ta [[Kiannoortys|reiltys ny kiannoortys]] ec [[Bretin]], [[Nalbin]] as [[Nerin Hwoaie]], as t'ad fo stiurey [[Kied-vinishter]], as quaiyl [[Un-hamyraghys|un-hamyragh]] [[jee-veanaghey|jee-veanit]]. Cha nel kiannoortys ny quaiyl jee-veanit ec Sostyn, y çheer smoo 'syn RU, as t'ee jeeragh fo reirey reiltys as parlamaid yn RU ayns dagh keisht. Ta'n stayd shen enmyssit myr [[Feysht Lodainn Heear]] as eh mychione y nhee dy vel OAyn veih Bretin, Nalbin as Nerin Hwoaie abyl votal, dy briwnyssagh ny keayrtyn,<ref>{{cite web|url=http://news.bbc.co.uk/1/hi/scotland/3432767.stm|title=Scots MPs attacked over fees vote|publisher=BBC News|date=27 Jerrey Geuree 2004|access-date=21 Jerrey Fouyir 2008}}</ref> er nheeghyn bentyn rish Sostyn quoi ta loaghtit liorish cruinnaghtyn jee-veanit da ny co-heiyderysyn oc hene.<ref>{{cite web|url=http://news.bbc.co.uk/1/hi/uk_politics/talking_politics/82358.stm|title=UK Politics: Talking Politics The West Lothian Question|publisher=BBC News|date=1 Mean Souree 1998|access-date=21 Jerrey Fouyir 2008}}</ref>
Ta cummaghtyn lheeadagh er dagh nhee nagh vel 'freaylt' ec Parlamaid yn RU ec [[Reiltys ny h-Albey|Reiltys]] as [[Parlamaid ny h-Albey]]. Ta ny cumaghtyn shen goaill stiagh nheeghyn lheid as [[Ynsagh ayns Nalbin|ynsagh]], [[SSA ny h-Albey|currym slaynt]], [[leigh ny h-Albey|leigh]] as [[Gurneilys ynnydagh ayns Nalbin|gurneilys ynnydagh]].<ref>{{cite web|url=http://news.bbc.co.uk/1/hi/events/scotland_99/the_scottish_parliament/310036.stm|title=Scotland's Parliament - powers and structures|publisher=BBC News|date=8 Averil 1999|access-date=21 Jerrey Fouyir 2008}}</ref> Lurg barriaght [[seyrsnys ny h-Albey|partee ashoonagh ny h-Albey]], [[Partee Ashoonagh ny h-Albey]], ayns [[reihys Parlamaid ny h-Albey, 2007]], va [[reiltys 3oo Parlamaid ny h-Albey|reiltys mynlagh]] fo reirey yn PAA currit er bun fo stiurey yn 'er toshee, [[Alex Salmond]], as haink er dy ve ny [[Kied-vinishter ny h-Albey|Chied-vinishter]].<ref>{{cite web|url=http://news.bbc.co.uk/1/hi/scotland/6659531.stm|title=Salmond elected as first minister|publisher=BBC News|date=16 Boaldyn 2007|access-date = 21 Jerrey Fouyir 2008}}</ref>
Ta cummaghtyn ny s'jeorit na t'ayns Nalbin ec [[Reiltys Cruinnaght Vretin]] as [[Çhionnal Ashoonagh Vretin]]<ref>{{cite web |url=http://news.bbc.co.uk/1/hi/events/wales_99/the_welsh_assembly/309033.stm |title=Structure and powers of the Assembly |publisher=BBC News |date=9 Averil 1999|access-date=21 Jerrey Fouyir 2008}}</ref> agh ny lurg çheet [[Aght Reiltys Vretin 2006]] ny hrooid, foddee yn Chruinnaght jannoo slattys er nheeghyn ennagh trooid [[Oardagh Cummeydys Slattyssagh|Oardee Cummeydys Slattyssagh]] as ad giootit er bunneydys case er chase.<ref>{{cite web |url=http://www.guardian.co.uk/politics/2007/jul/16/wales.devolution |title=What powers does the Welsh Assembly have? |publisher=Guardian |date=16 Jerrey Souree 2007|access-date=21 Jerrey Fouyir 2008}}</ref> Va [[Reiltys Cruinnaght Vretin]] roie crooit shiartanse shiaghtinyn ny yei [[reihys da Çhionnal Ashoonagh Vretin, 2007]], lurg traa giare reirey mynlagh. Ta'n reiltys roie ny [[Reiltys 3oo Çhionnal Ashoonagh Vretin|cho-chiangley]] eddyr [[Plaid Cymru]] as [[Partee Lught Obbyr Vretin|Partee yn Lught Obbyr]] as she Kied-vinishter [[Rhodri Morgan]].
Ta cummaghtyn begnagh myr ta jee-veanit ayns Nalbin ec [[Kiannoortys Nerin Hwoaie]] as [[Çhionnal Nerin Hwoaie]]. Ec y traa t'ayn ta Kiannoortys Nerin Hwoaie fo stiurey yn Chied-vinishter [[Peter Robinson (politickeyr)|Peter Robinson]] ([[Partee Unnaneysagh Deynlagh]]) as y lhiass Chied-vinishter [[Martin McGuinness]] ([[Sinn Féin]]).<ref name="northernireland1">{{cite web|url=http://www.northernireland.gov.uk/index/your-government/devolved-government.htm|title=Devolved Government - Ministers and their departments|publisher=Northern Ireland Executive|access-date=17 Jerrey Fouyir 2008 |archiveurl=https://web.archive.org/web/20070822230925/http://www.northernireland.gov.uk/index/your-government/devolved-government.htm|archivedate=2007-08-22}}</ref>
=== Gurneilys ynnydagh ===
{{ardart|Shennaghys gurneilys ynnydagh 'sy Reeriaght Unnaneysit}}
{{jeeagh|Gurneilys ynnydagh ayns Sostyn|Gurneilys ynnydagh ayns Nerin Hwoaie|Gurneilys ynnydagh ayns Nalbin|Gurneilys ynnydagh ayns Bretyn}}
[[Coadan:ManchesterTownHall OwlofDoom.jpg|thumb|[[Halley Baljey Vanchuin]], ymmydit ry hoi gurneilys ynnydagh ayns Manchuin.]]
Ta [[shennaghys gurneilys ynnydagh 'sy Reeriaght Unnaneysit]] cowrit liorish ceaghlaghyn beggey ayns reaghysyn roish yn Unnaneys derrey yn 19oo eash. Veih shen ta aafilley beayn ayns paart as obbraghey.<ref name=barlow>Barlow, I., ''Metropolitan Government'', (1991)</ref> Cha haghyr ny ceaghlaghyn ayns oash cullee ayns Bretin, Nalbin, Nerin Hwoaie as Bretin as ta jee-veanaghey cummaght harrish gurneilys ynnydagh gys Bretin, Nalbin as Nerin Hwoaie keayllaghey nagh vel ceaghlaghyn ry-heet ayns oash cullee.
Ta reagheydys [[gurneilys ynnydagh ayns Sostyn]] co-chast, lesh livrey-ys obbraghey anchasley rere reaghysyn ynnydagh. Ta slattyssyn kianglt lesh gurneilys ynnydagh ayns [[Sostyn]] reaghit liorish parlamaid yn RU as [[Reiltys yn Ard Ooashley|reiltys y Reeriaght Unnaneysit]], er y fa nagh vel parlamaid jee-veanit ec Sostyn. Ta'd ny [[Aarheynnyn Hostyn|h-aarheynnyn ayns Sostyn]] na ny nuy [[Ardjyn Hostyn|ardjyn oik y Reiltys]] ny ardjyn oik reiltys yn Unnaneys Oarpagh.<ref>{{cite web|url=http://www.gos.gov.uk/national/|publisher=gos.gov.uk|access-date=31 Jerrey Souree 2008|title=Welcome to the national site of the Government Office Network}}</ref> Ta cruinnaght as meoir jeeragh-reiht veih'n vlein 2000 ec un ard ny çheerey, [[Lught-reill Lunnin Vooar]] ny yei bhut er son y treealtys ayns refrane 'sy vlein 1998.<ref>{{cite web|url=http://www.london.gov.uk/london-life/city-government/history.jsp|title=A short history of London government|publisher=www.london.gov.uk|access-date=4 Jerrey Fouyir 2008|archiveurl=https://www.webarchive.org.uk/wayback/archive/20100107035814/http://www.london.gov.uk/london-life/city-government/history.jsp|archivedate=2010-01-07}}</ref> V'eh kiarit dy vel cruinnaghtyn ardjynagh ennagh ec ny h-ardjyn elley, agh va'n eie shen jiooldit ny yei refrane ayns [[Shiar Hwoaie Hostyn]] 'sy vlein 2004.<ref>"The Government is now expected to tear up its twelve-year-old plan to create eight or nine regional assemblies in England to mirror devolution in Scotland and Wales."{{cite web|url=http://www.timesonline.co.uk/tol/news/uk/article503255.ece|title=Prescott's dream in tatters as North East rejects assembly|access-date=15 Toshiaght Arree 2008|publisher=The Times|access-date=2008-11-15|archive-date=2010-05-25|archive-url=https://web.archive.org/web/20100525121618/http://www.timesonline.co.uk/tol/news/uk/article503255.ece|url-status=dead}}</ref> Heese veih'n leval ardjynagh, ta Lunnin jeant seose jeh 32 [[Balley corpagh Lunnin|valley corpagh]] as ta'n chooid elley dy Hostyn jeant seose jeh [[coondaeghyn moirvaljagh as neu-voirvaljagh Hostyn|coonseilyn coontae]] as coonseilyn ardjynagh ny [[lught-reill unnaneagh]]. Ta ny cooinseilee reiht ayns wardysyn un-oltey as wardysyn yl-oltey.<ref>{{cite web|url=http://www.lga.gov.uk/lga/aio/39780|title=Local Authority Elections|publisher=Local Government Association|access-date=3 Jerrey Fouyir 2008|archiveurl=https://www.webarchive.org.uk/wayback/archive/20081027151017/http://www.lga.gov.uk/lga/aio/39780|archivedate=2008-10-27}}</ref>
Ta [[gurneilys ynnydagh ayns Nerin Hwoaie]], veih'n vlein 1973, reaghit ayns 26 coonseilyn ardjynagh, as ad reiht liorish [[un-vote yn-astreeaghey]] lesh cummaghtyn ta jeorit da shirvishyn lheid as çhaglym smooirlagh, stiuree moddee, as meansalaght pairkyn as ruillickyn.<ref>{{cite web|url=http://news.bbc.co.uk/1/hi/northern_ireland/4449092.stm|title=NI local government set for shake-up|publisher=BBC|date=18 Mee Houney 2005|access-date=15 Jerrey Fouyir 2008}}</ref> Er 13 Mart 2008, ansherbee, va'n kiannoortys ayns coardailys rish treealtysyn un choonseil jeig y chroo as ad y chur ayns ynnyd y chorys roie<ref>{{cite web|url=http://www.northernireland.gov.uk/news/news-doe/news-doe-130308-foster-announces-the.htm|title=''Foster announces the future shape of local government''|publisher=NI Executive|access-date=20 Jerrey Fouyir 2008|archive-date=2008-07-25|archive-url=https://web.archive.org/web/20080725002254/http://www.northernireland.gov.uk/news/news-doe/news-doe-130308-foster-announces-the.htm}}</ref> as bee ny reihysyn s'niessey shlearit gys 2011 dy chooney lesh y çhyndaa.<ref>{{cite web|url=http://www.nio.gov.uk/local-government-elections-to-be-aligned-with-review-of-public-administration/media-detail.htm?newsID=15153|title=Local Government elections to be aligned with review of public administration|publisher=www.nio.gov.uk|access-date=2 Luanistyn 2008 |archivedate=2013-02-17|archiveurl=https://web.archive.org/web/20130217174725/http://www.nio.gov.uk/local-government-elections-to-be-aligned-with-review-of-public-administration/media-detail.htm?newsID=15153}}</ref>
Ta [[gurneilys ynnydagh ayns Nalbin]] rheynnit er bunneydys [[Aarheynnyn ny h-Albey|32 ard conseilagh]] lesh anchaslysyn mooarey ayns mooadys as earroo yn phobble. Ta ard-valjyn [[Glaschu]], [[Doon Edin]], [[Aberdon]] as [[Dùn Dèagh]] nyn ardjyn coonseilagh lhieu hene chammah as [[Politickaght Cooinseil ny Gaeltaght|Cooinseil ny Gaeltaght]] as goaill stiagh un trass eaghtyr ny h-Albey agh lesh 200,000 cummaltee. Ta'n cummaght currymit ayns ny lughtyn-reill ynnydagh fo stiurey coonseilee reiht, as ta 1,222<ref>{{cite web|url=http://www.psa.ac.uk/2007/pps/Bennie.pdf|title=STV in Scotland:Local Government Elections 2007|publisher=Political Studies Association|access-date=2 Luanistyn 2008|archivedate=2011-03-10|archiveurl=https://web.archive.org/web/20110310194256/http://www.psa.ac.uk/2007/pps/Bennie.pdf}}</ref> jeu ec y traa t'ayn. T'ad geddyn çheet stiagh paart-emshiragh. Ta ny reihysyn gurneilit liorish [[un-vote yn-astreeaghey]] ayns wardysyn yl-olteynagh as ad reih tree ny kiare coonseilee. Ta Smaghteyr ny Symneyder reiht dy stiurey cruinnaghtyn. Ta ny coonseilee biallagh da coad aghtey as eh currit ayns bree liorish [[Commishoon Stundayrtyn ny h-Albey]].<ref>Ethical Standards in Public Life framework: {{cite web |title=Ethical Standards in Public Life |url=http://www.scotland.gov.uk/Topics/Government/local-government/ethical-standards |publisher=The Scottish Government |accessdate=2008-10-03 |archivedate=2014-12-11 |archiveurl=https://web.archive.org/web/20141211075152/http://www.scotland.gov.uk/Topics/Government/local-government/ethical-standards }}</ref> She [[Co-chruinnaght Lughtyn-reill Ynnydagh ny h-Albey]] (CLYA) sheshaght reihdagh coonseilyn ynnydagh ny h-Albey.<ref>{{cite web|url=http://www.cosla.gov.uk/index.asp?leftId=10001D0EF-10766726|title=About COSLA|publisher=cosla.gov.uk|access-date=3 Jerrey Fouyir 2008|archivedate=2008-09-21|archiveurl=https://web.archive.org/web/20080921104646/http://www.cosla.gov.uk/index.asp?leftId=10001D0EF-10766726}}</ref>
Ta [[gurneilys ynnydagh ayns Bretin]] jeant seose jeh 22 choonseil unnaneagh, goaill stiagh ard-valjyn [[Cayr Deeth]], [[Abertawe]] as [[Casnewydd]], as ad nyn goonseilyn ynnydagh lheu hene.<ref>{{cite web|url=http://new.wales.gov.uk/topics/localgovernment/localauthorities/?lang=en|title=Local Authorities in Wales|publisher=new.wales.gov.uk|access-date=31 Jerrey Souree 2008 |archivedate=2014-05-30|archiveurl=https://web.archive.org/web/20140530004428/http://new.wales.gov.uk/topics/localgovernment/localauthorities/?lang=en}}</ref> Ta reihysyn ayn dagh kiare bleeaney liorish [[voteyn singil neu-astreeaghey]].<ref>{{cite web|url=http://www.aboutmyvote.co.uk/how_do_i_vote/voting_systems/local_government_elections_i-3.aspx|title=How do I vote?|publisher=www.aboutmyvote.co.uk|access-date=3 Jerrey Fouyir 2008|archivedate=2008-10-19|archiveurl=https://web.archive.org/web/20081019215436/http://www.aboutmyvote.co.uk/how_do_i_vote/voting_systems/local_government_elections_i-3.aspx}}</ref> Va ny reihysyn jerrinagh ayns Mee Voaldyn ny bleeaney 2008. Ta [[Sheshaght Gurneilys Ynnydagh Vretin]] soiaghey magh parteeasyn ny coonseilyn ynnydagh ayns Bretin.<ref>{{cite web|url=http://www.wlga.gov.uk/|title=Welsh Local Government Association|publisher=Welsh Local Government Association|access-date=3 Jerrey Fouyir 2008 |archive-date=2008-11-11|archive-url=https://web.archive.org/web/20081111154039/http://www.wlga.gov.uk/|url-status=dead}}</ref>
== Çheer-oaylleeaght ==
{{ardart|Çheer-oaylleeaght y Reeriaght Unnaneysit|Speyr y Reeriaght Unnaneysit}}
[[Coadan:uk topo en.jpg|thumb|Boayloaylleeaght y Reeriaght Unnaneysit]]
Ta'n Reeriaght Unnaneysit mygeayrt 245,000 kilomeadaryn kerrinagh (94,600 mi ker) er eaghtyr slane as eshyn jeant seose jeh ellan ny Bretyn Mooar, çheu hiar hwoaie ellan Nerin (Nerin Hwoaie) as ellanyn beggey elley.<ref name=factbook/> T'eh soit eddyr [[Yn Keayn Sheear|y Cheayn Sheear]] as [[Mooir Hostyn]], as eh 35 kilomeadaryn magh veih slyst hwoaie ny Frank ec boayl unnaneagh. Eddyr y daa heer ta [[Mooir yn Eeaght]].<ref name=factbook/> Ta'n Vretyn Vooar soit ayns dowan-lheeadyn eddyr 49° as 59° Hwoaie (ta Shetlynn sheeyney magh da 61° Hwoaie), as ayns dowan-liuridyn eddyr 8° Heear gys 2° Hiar. She boayl meenaghey y [[Preeu-linney Vunlaa|Phreeu-linney Vunlaa]] Thie Rollageydys Reeoil Ghreenwich, faggys da Lunnin. Ta'n Vretyn Vooar beggan ny smoo na 1,100 km (700 mi) er liurid as begnagh 500 km (300 mi) er lheead ayns y boayl s'lhea, agh she 1,350 km (840 mi) yn 'oddeeaght s'liurey eddyr daa voayl as ee ny foddeeaght eddyr [[Penn an Wlas]] 'sy [[Yn Chorn|Chorn]] as [[Thie Yuan Ghroat]] ayns [[Gallaibh]] ny h-Albey. Ta'n joarey thallooin eddyr Nerin Hwoaie as [[Pobblaght Nerin]] 360 kilomeadaryn (224 mi) er liurid.<ref name=factbook/>
Ta [[speyr]] tempreilagh 'sy Reeriaght Unnaneysit, lesh palçhid dy 'liaghee car ny bleeaney.<ref name=factbook/> Ta'n çhiassid arraghey rish ny raiee, agh t'eh neuchadjin çhiassidyn ny sloo na -10 °C (14.0 °F) ny ny smoo na 35 °C (95 °F) dy gheddyn. Ta ny geayaghyn baardee çheet veih'n sheear yiass, as ad cur emshyr fliugh as bog lheu veih'n Cheayn Sheear.<ref name=factbook/> Ta ny ronnaghyn hiar ny smoo fasteeagh veih'n gheay shoh, as myr shen t'ad nyn muill smoo çhirrym. Ta ny strooghyn Atlantagh, as adsyn çhiowit liorish [[Stroo yn Eearvooir]], cur lheu geuraghyn boggey, ayns y çheu heear er lheh, raad dy vel ny geuraghyn fliughey, er thalloo ard er lheh. Ta ny souraghyn ny s'çhoe ayns shiar yiass Hostyn, as y boayl shen ny s'faggys da'n vooarheer Oarpagh, as ny s'feayrey ayns y twoaie. Ta'n ceau niaghtee jantagh 'sy gheurey as ayns arragh gheuree.
Ta lieh chooid eaghtyr y Reeriaght Unnaneysit jeant seose jeh [[Sostyn]], as ee 130,410 kilomeadaryn kerrinagh (50,350 mi ker) er eaghtyr. Çheer injil t'aynjee son y chooid smoo agh ta çheer sleitagh ry gheddyn sheear hwoaie jeh [[linney Tees-Exe]] as goaill stiagh [[Sleityn Cumbria]] ayns Slyst ny Loghyn, [[Sleityn Pennine]] as cruink chlagh eayil ayns [[Slyst ny Binn]], [[Exmoor]] as [[Dartmoor]]. She [[Yn Thaimish|y Thaimish]], [[yn Severn|y Severn]] as [[Yn Humber|y Humber]] preeu-awinyn as inveryn Hostyn. She [[Scafell Pike]] (978 m er yrjid), as eh soit ayns [[Slyst ny Loghyn]], y slieau s'yrjey. Ta ram baljyn as ard-valjyn mooarey ayns Sostyn as, rere [[Cryssyn Baljagh Mooarey]], ta shey jeh ny 50 Cryssyn smoo yn Unnaneys Oarpagh soit aynjee.
[[Coadan:BenNevis2005.jpg|thumb|She [[Beinn Nivish]], ayns [[Sleityn Grampiagh]] ny h-Albey, yn slieau s'yrjey ayns [[ny h-Ellanyn Goaldagh]].]]
Trass eaghtyr y Reeriaght Unnaneysit t'ayns [[Nalbin]] as ee 78,772 kilomeadaryn kerrinagh (30,410 mi ker) er eaghtyr<ref>{{cite web |url=http://www.scotland.org/about/fact-file/index.html |title=Scotland Facts |publisher=www.scotland.org |access-date=16 Jerrey Souree 2008 |archivedate=2008-06-21 |archiveurl=https://web.archive.org/web/20080621045248/http://www.scotland.org/about/fact-file/index.html }}</ref> as t'ee goaill stiagh begnagh 800 ellanyn, çheu heear as hwoaie jeh'n vooarheer son y chooid smoo, [[ny h-Ellanyn Heear]], [[yn Orkaid]] as [[Shetlynn]] er lheh. Ta boayloaylleeaght ny h-Albey cowrit liorish [[Scoltey Joaree ny Gaeltaght]] - scoltey creggey creg-oaylleeagh – ta goll harrish mooarheer ny h-Albey veih [[Balley Eaylee]] gys [[Cala na Creige]]. Ta'n linney scoltey rheynn magh daa ard anchasley; [[yn Ghaeltaght]] ayns y twoaie as y sheear as [[Goaltaght ny h-Albey|y Ghoaltaght]] ayns y jiass as y shiar. Ta'n Ghaeltaght chregganagh goaill stiagh y chooid smoo jeh çheer sleitagh ny h-Albey, goaill stiagh slieau s'yrjey [[ny h-Ellanyn Goaldagh]] [[Beinn Nivish]] as ee 1,343 m (4,406 tr) er yrjid.<ref>{{cite web |url=http://www.bennevisweather.co.uk/index.asp |title=Ben Nevis Weather |publisher=www.bennevisweather.co.uk |access-date=26 Jerrey Fouyir 2008 |archivedate=2018-09-24 |archiveurl=https://web.archive.org/web/20180924202417/http://www.bennevisweather.co.uk/index.asp }}</ref> Ta'n Ghoaltaght, y chryss cheyll eddyr [[Keyllys y Chleayee]] as [[Linne Foirthe]] enmyssit myr "y Chryss Veanagh", ny s'inshley as ny s'rea as ta'n chooid smoo dy 'leih nyn gummal ayn goaill stiagh [[Glaschu]], yn ard-valley smoo ayns Nalbin, as [[Doon Edin]], preeu-valley as ynnyd politickagh ny h-Albey.
Cha nel [[Bretin]] agh 20,758 kilomeadaryn kerrinagh (8,010 mi ker) er eaghtyr, ny jeihoo eaghtyr y Reeriaght Unnaneysit. Çheer sleitagh t'aynjee son y chooid smoo, agh cha nel Bretin Jiass cho sleitagh na myr t'ayns y twoaie. Ta ny preeu-ardjyn çhynskylagh as y chooid smoo dy chummaltee ayns jiass Vretin, as ee goaill stiagh baljyn slystagh lheid as [[Cayr Deeth]] (preeu-valley as ynnyd politickagh as tarmaynagh), [[Abertawe]], [[Casnewydd]] as [[Glionyn Vretin Yiass]]. Ta ny sleityn s'yrjey ayns Bretin ayns [[Eryri]] (Baarle: ''Snowdonia'') as t'ad goaill stiagh [[yr Wyddfa]] as eh 1,085 m er yrjid – y slieau s'yrjey ayns Bretin. Ta ny smoo na 1,200 km (750 mi) oirr ny marrey ec Bretin. Ta shiartanse ellanyn magh ass mooarheer Vretin, as t'eh [[Moan]] (Bretnish: ''Ynys Môn'', Baarle: ''Anglesey'') yn ellan smoo as eh soit sheear hwoaie veih'n çheer.
Çheer sleitagh beggey ta [[Nerin Hwoaie]] ta 14,160 kilomeadaryn kerrinagh (5,470 mi ker) er eaghtyr. Ta [[Logh Nay]], ta 388 kilomeadaryn kerrinagh, ny logh smoo ayns ny h-Ellanyn Goaldagh.<ref>{{cite web |url=http://cain.ulst.ac.uk/ni/geog.htm |title=Geography of Northern Ireland |publisher=University of Ulster |access-date = 22 Boaldyn 2006 |archive-date=2012-01-18 |archive-url=https://web.archive.org/web/20120118133131/http://cain.ulst.ac.uk/ni/geog.htm |url-status=dead }}</ref> She [[Slieau Dónairt]] (849 m) y slieau s'yrjey 'sy çheer.
=== Ard-valjyn as covaljyssyn ===
{{ardart|Rolley ny baljyn smoo rere earroo yn phobble 'sy Reeriaght Unnaneysit|Rolley covaljyssyn 'sy Reeriaght Unnaneysit}}
T'ad preeu-valjyn ny çheeraghyn ennagh 'syn RU na: Beeal Feirshtey (Nerin Hwoaie), Cayr Deeth (Bretin), Doon Edin (Nalbin) as Lunnin (Sostyn); ta Lunnin ny phreeu-valley er y çheer slane.<ref name=factbook/>
{{Baljyn smoo y Reeriaght Unnaneysit}}
T'ad ny covaljyssyn smoo na:
* [[Slyst Baljagh Lunnin Mooar]] – 8.5 millioon;
* [[Covaljys West Midlands]] – 2.3 millioon;
* [[Slyst Baljagh Vanchuin Mooar]] – 2.2 millioon;
* [[Slyst Baljagh West Yorkshire]] – 1.5 millioon;
* [[Glaschu Mooar]] – 1.2 millioon.
== Sleih ==
Ta coontey-pobble ayns dagh çheer yn Reeriaght Unnaneysit dagh jeih bleeaney.<ref>{{cite web|url=http://www.statistics.gov.uk/geography/census_geog.asp|title=Census Geography|publisher=www.statistics.gov.uk |access-date=10 Jerrey Fouyir 2008 |archiveurl=http://webarchive.nationalarchives.gov.uk/20020607155455/http://www.statistics.gov.uk/geography/census_geog.asp |archivedate=2002-06-07}}</ref> Ta [[Oik ry hoi Staydraa Ashoonagh]] freggyrtagh er son çhaglym fysseree ayns Sostyn as Bretin, as ta [[Offish Chadjin Recortyssyn ny h-Albey]] freggyrtagh er son Nalbin as [[Jantys Staydraa as Ronsee Nerin Hwoaie]] er son Nerin Hwoaie.<ref>{{cite web|url=http://www.ons.gov.uk/about/surveys/census/index.html|title=Census|publisher=www.ons.gov.uk|access-date=11 Jerrey Fouyir 2008|archiveurl=https://web.archive.org/web/20081201132440/http://www.ons.gov.uk/about/surveys/census/index.html|archivedate=2008-12-01}}</ref>
=== Earroo yn phobble ===
Rere coontey-pobble ny bleeaney 2001, va 58,789,194 cummaltee 'sy Reeriaght Unnaneysit, y treeoo çheer smoo 'syn [[Yn Unnaneys Oarpagh|Unnaneys Oarpagh]], y wheigoo çheer smoo 'sy [[Co-unnaneys ny h-Ashoonyn|Cho-unnaneys]] as y chied çheer as feed smoo er y theihll. Ec lieh vlein 2007, v'eh er credjal dy row 60,975,000 cummaltee 'sy çheer.<ref name="Population2007">{{cite news|url=http://www.statistics.gov.uk/CCI/nugget.asp?ID=6|title=Population estimates: UK population grows to 60,975,000|date=21 Luanistyn 2008|publisher=Office for National Statistics|access-date=23 Luanistyn 2008 |archiveurl=http://webarchive.nationalarchives.gov.uk/20021202165044/http://www.statistics.gov.uk/CCI/nugget.asp?ID=6|archivedate=2 December 2002}}</ref> Ta'n inymmyrkey, yn [[Rolley çheeraghyn as thallooyn rere leahys troaraght|leahys ruggyryn]] as jerkallys-vea ny share cur lesh bishaghey roie earroo yn phobble.<ref>{{cite web |url=http://www.guardian.co.uk/business/2006/aug/25/immigrationasylumandrefugees.asylum |title=Rising birth rate, longevity and migrants push population to more than 60 million |publisher=The Guardian |date=25 Luanistyn 2006|access-date= 25 Luanistyn 2006}}</ref> Hug staydraa shen er fys dooin, son y chied cheayrt, dy row ny smoo penshyneyryn na paitçhyn ny s'aa na 16 bleeaney d'eash.<ref>{{cite news|url=http://www.guardian.co.uk/world/2008/aug/22/population.socialtrends|title=Ageing Britain: Pensioners outnumber under-16s for first time|last=Travis|first=Alan|date=22 Luanistyn 2008|work=The Guardian|access-date=23 Luanistyn 2008}}</ref>
Rere staydraa ny bleeaney 2007, v'eh er credjal dy row 51.1 millioonyn dy chummaltee ayns Sostyn.<ref name="natpop">{{cite news|url=http://www.statistics.gov.uk/pdfdir/popest0808.pdf|title=Population estimates: UK population approaches 61 million in 2007|date=21 Luanistyn 2007|publisher=Office for National Statistics|access-date=28 Luanistyn 2008 |archiveurl=http://webarchive.nationalarchives.gov.uk/20080821110543/http://www.statistics.gov.uk/pdfdir/popest0808.pdf|archivedate=2008-08-21}}</ref> T'ee nane jeh ny çheeraghyn smoo clannit er feie ny cruinney lesh 383 cummaltee ayns dagh kilomeadar kerrinagh ayns 2003,<ref name=2003density>{{cite news|url=http://www.statistics.gov.uk/cci/nugget.asp?id=760|title=Population: UK population grows to 59.6 million|date=28 Jerrey Geuree 2005|publisher=Office for National Statistics|access-date= 20 Luanistyn 2008}}</ref> lesh co-ghlooaghey er lheh ayns Lunnin as y shiar yiass. Ta oolaghyn ny bleeaney 2007 cur sleih-earroo ny h-Albey ec 5.1 millioon dy chummaltee, Vretin ec 3 millioonyn as Nerin Hwoaie ec 1.8 millioonyn<ref name=natpop/> lesh glooaghtyn foddey ny sloo na Sostyn. Cosoylit rish glooaght pobble Hostyn (383 cummaltee/km²) t'ad shoh ny h-earrooyn co-reggyrtagh: Bretin (142 cummaltee/km²), Nerin Hwoaie (125 cummaltee/km²) as Nalbin (65 cummaltee/km²).<ref name=2003density/>
'Sy vlein 2007, v'eh mean-[[leahys slane troaraght]] (LST) harrish y Reeriaght Unnaneysit na 1.90 paitçhyn da dagh ben.<ref name=Fertility2007>{{cite news|url=http://www.statistics.gov.uk/cci/nugget.asp?ID=951|title=Fertility: Rise in UK fertility continues|publisher=Office for National Statistics|date=21 Luanistyn 2008|access-date=23 Luanistyn 2008}}</ref> V'eh oolit 'sy vlein 2008 dy daase troaraght yn RU gys 1.91 paitçhyn ny ben.<ref>{{cite web|url=http://www.guardian.co.uk/world/2008/aug/22/population.immigrationandpublicservices |title=UK population has increased to almost 61m|publisher=The Guardian |first=Alan |last=Travis |access-date=15 Jerrey Fouyir 2008}}</ref> Choud's ta'n leahys troaraght ta gaase cur lesh bishaghey earroo yn phobble, t'eh foddey ny sloo na binn "visheydys ny lhiennoo" ec 2.95 ayns 1964,<ref name=Fertility2007/> ny sloo na leahys son cur er ash (2.1), agh t'eh ny smoo na'n earroo ayns 2001 (1.63 – yn earroo s'loo).<ref name=Fertility2007/> She 1.92 as 1.90 ny leahysyn troaraght ayns Sostyn as Bretin, 1.73 ayns Nalbin, as 2.02 ayns Nerin Hwoaie.<ref name=Fertility2007/> Ta leahys ruggyryn ny s'yrjey mastey mraane joarree-ruggit na mraane Goaldagh, agh ta'n leahys gaase mastey mraane Goaldagh ynrican.<ref name=Fertility2007/>
=== Arraghey ===
Ta kiart ec seyranee [[yn Unnaneys Oarpagh]] cummal as obbraghey 'sy Reeriaght Unnaneysit<ref>[http://europa.eu/scadplus/leg/en/lvb/l33152.htm Right of Union citizens and their family members to move and reside freely within the territory of the Member States] europa.eu, feddynit er 6 Mee Houney 2008</ref> agh ta oardee shallidagh currit ayns bree lesh [[Yn Romaain|Romaainee]] as [[Yn Vulgeyr|Bulgeyree]], çheeraghyn v'er heet stiagh ayns yn UO ayns Jerrey Geuree ny bleeaney 2007.<ref>{{cite news|url=http://www.guardian.co.uk/uk/2007/sep/23/immigration.eu|title=Home Office shuts the door on Bulgaria and Romania|last=Doward|first=Jamie|coauthors=Temko, Ned|date=2007-09-23|work=The Observer|page=2|accessdate=2008-08-23}}</ref>
Cosoylit rish çheeraghyn Oarpagh elley, ta'n inymmyrkey cur lesh bishaghey earroo yn phobble<ref>[https://web.archive.org/web/20081210072321/http://www.thisislondon.co.uk/news/article-23542455-details/Immigration+and+births+to+non-British+mothers+pushes+British+population+to+record+high/article.do Immigration and births to non-British mothers pushes British population to record high], This is London, 22 Luanistyn 2008</ref> as eh freggyrtagh er son lieh y visheydys ayns ny bleeantyn eddyr 1991 as 2001. Va nane ass shey jeh ny sthie-arree ass [[yn Oarpey Hiar]], lesh y chooid vooar çheet ass çheeraghyn y [[Co-unnaneys Noa|Cho-unnaneys Noa]].<ref>
{{cite web
|url=http://www.telegraph.co.uk/news/uknews/1569400/Emigration-soars-as-Britons-desert-the-UK.html
|title=Emigration soars as Britons desert the UK}}
</ref> Ta earrooyn oikoil taishbyney dy haink 2.3 millioonyn arree gleney<ref>[http://www.dailymail.co.uk/news/article-1023512/Third-World-migrants-2-3m-population-boom.html Third World migrants behind our 2.3m population boom], Daily Mail, 3 Mean Souree, 2008</ref> gys yn RU veih'n vlein 1997,<ref>[https://web.archive.org/web/20081021051705/http://www.thisislondon.co.uk/standard/article-23575160-details/Tories+get+tough+on+immigration+after+Labour%27s+U-turn/article.do Tories call for tougher control of immigration], This is London, 20 Jerrey Fouyir, 2008</ref> as va 84% jeu ass çheeraghyn çheumooie jeh'n Oarpey,<ref>[http://www.telegraph.co.uk/news/newstopics/politics/labour/3230463/Immigration-Phil-Woolas-admits-Labour-responsible-for-string-of-failures.html Immigration: Phil Woolas admits Labour responsible for string of failures], Telegraph, 21 Jerrey Fouyir, 2008</ref> as ta 7 millioonyn ny smoo jeu jerkit roish ny bleeaney 2031.<ref>[http://news.bbc.co.uk/2/hi/uk_news/7602526.stm Minister rejects migrant cap plan], BBC News, 8 Mean Fouyir, 2008</ref> Ta ny h-earrooyn by yerree (2006) taishbyney inymmyrkey glen gys yn RU fo 191,000, ny smoo na'n 185,000 'sy vlein 2005.<ref>
{{cite web
|url=http://www.dailymail.co.uk/news/article-494235/Half-million-migrants-pour-Britain-year-200-000-leave.html
|title=Half a million migrants pour into Britain in a year}}
</ref><ref name=ONS>
{{cite web
|url=http://www.statistics.gov.uk/cci/nugget.asp?id=1311
|title=International migration: Net inflow rose in 2004
|publisher=Office for National Statistics
|date=15 Mee ny Nollick 2005
|access-date = 22 Mee Houney 2006}}
</ref><ref>{{cite web
|url=http://www.statistics.gov.uk/CCI/nugget.asp?ID=260&Pos=2&ColRank=2&Rank=224
|title=International migration 2005: Net inflow 185,000
|publisher=Office for National Statistics
|date=2006-11-02
|accessdate=2006-11-22
|archiveurl=https://web.archive.org/web/20070705200424/http://www.statistics.gov.uk/CCI/nugget.asp?ID=260&Pos=2&ColRank=2&Rank=224
|archivedate=2007-07-05
}}</ref> Ansherbee, rere yn arraghey magh, ta ny smoo na 5.5 millioonyn Goaldee nyn gummal ass y çheer,<ref>{{cite web |url=http://www.ippr.org/publicationsandreports/publication.asp?id=509 |title=Brits Abroad: Mapping the scale and nature of British emigration |author=Dhananjayan Sriskandarajah and Catherine Drew |publisher=Institute for Public Policy Research |date=2006-12-11 |accessdate=2007-01-20 |archivedate=2007-08-28 |archiveurl=https://web.archive.org/web/20070828011816/http://www.ippr.org/publicationsandreports/publication.asp?id=509 }}</ref><ref>{{cite web |url=http://news.bbc.co.uk/1/shared/spl/hi/in_depth/brits_abroad/html/default.stm |title=Brits Abroad |publisher=BBC News |accessdate = 2007-04-20}}</ref><ref>{{cite web |url=http://news.bbc.co.uk/2/hi/uk_news/6210358.stm |title=5.5 m Britons 'opt to live abroad' |publisher=BBC|date=2006-12-11 |accessdate = 2007-04-20}}</ref> as t'ad ny king jurnaa ennoil na'n [[Yn Austrail|Austrail]], [[y Spaainey]], [[y Rank]], [[Yn Teelynn Noa|y Teelynn Noa]] as [[ny Steatyn Unnaneysit]].<ref>{{cite web|url=http://www.aol.in/news/story/2007042004189012000001/index.html|title=Indians largest group among new immigrants to UK|access-date=2008-11-17|archive-date=2008-12-24|archive-url=https://web.archive.org/web/20081224222353/http://www.aol.in/news/story/2007042004189012000001/index.html|url-status=dead}}</ref><ref>{{cite web |url=http://www.guardian.co.uk/world/2006/jul/26/spain.gilestremlett |title=Spain attracts record levels of immigrants seeking jobs and sun |publisher=The Guardian |date=2006-07-26 |accessdate = 2007-04-20}}</ref>
Ansherbee, ta studeyrys liorish faaishneyder yn ard-valley soilshaghey magh nagh vel earrooyn yn inymmyrkey shoh heose barrantoil as va mygeayrt 400,000 sthie-arree gleney 'sy vlein 2005.<ref>{{cite web |url=http://www.telegraph.co.uk/news/uknews/1538598/Immigration-%27far-higher%27-than-figures-say.html |title=Immigration 'far higher' than figures say |publisher=The Telegraph |date=2007-01-05 |accessdate = 2007-04-20}}</ref> Ta coreir 'ir quaagh 'sy Reeriaght Unnaneysit beggan ny sloo na t'ayns çheeraghyn Oarpagh ennagh elley, ansherbee.<ref>{{cite web |url=http://www.migrationinformation.org/Feature/display.cfm?id=402 |title=Europe: Population and Migration in 2005 |author=Rainer Muenz |publisher=Migration Policy Institute |date=Mean Souree 2006 |accessdate = 2007-04-02}}</ref> Bee yn inymmyrkey daa cheayrt ny smoo harrish y daa yeihaght ry heet gys 9.1 millioonyn, er coontey veih 31 Jerrey Geuree ny bleeaney 2008.<ref name=immigrants>
{{cite web|url=http://www.telegraph.co.uk/news/uknews/1577120/Britain-to-have-'9.1m-immigrants-by-2030'.html|title=Britain to have '9.1 m immigrants by 2030'|publisher=Daily Telegraph}}</ref>
=== Possanyn kynneeagh ===
{{ardart|Possanyn kynneeagh 'sy Reeriaght Unnaneysit}}
Ta pobble roie yn RU ny sluight jeh kynneeyn fuilleeaght anchasley, [[roie-Celtiee]], [[Celtiee]], [[Seyraanaght Romanagh|Romanee]], [[Anglo-Hostnee]] as [[Normanee]] son y chooid smoo. She sheckteraght kianglaghyn va crooit liorish yn [[Impiraght Ghoaldagh]] inymmyrkey soogh veih'n [[Yn Affrick|Affrick]], [[Ny Çheeraghyn Caribagh|y Charib]] as [[yn Aishey Yiass]] veih'n vlein 1945. Veih'n vlein 2004 haink mooarane dy 'leih veih'n [[Yn Oarpey Veanagh|Oarpey Veanagh]] as [[yn Oarpey Hiar]], agh, ays 2008, ta'n troa goll ergooyl as ta ram jeh ny sthie-arree shoh goll er ash dy valley, as adsyn faagail mooadys ny kynneeyn shen gyn fys.<ref>[http://news.bbc.co.uk/1/hi/england/7374683.stm 'Why I left UK to return to Poland'], BBC News</ref> Rere coontey-pobble ny bleeaney 2001, va 92.1% sleih-earroo ny çheerey nyn vir baney as 7.9%<ref>{{cite web |url=http://www.statistics.gov.uk/CCI/nugget.asp?ID=764&Pos=4&ColRank=1&Rank=176 |title=Ethnicity: 7.9% from a non-White ethnic group |publisher=Office for National Statistics |date=2004-06-24 |accessdate = 2007-04-02|archiveurl=http://webarchive.nationalarchives.gov.uk/20090909132851/http://www.statistics.gov.uk/CCI/nugget.asp?ID=764&Pos=4&ColRank=1&Rank=176|archivedate=2009-09-09}}</ref> cur enney orroo hene myr fir mestit ny jeh mynlagh kynneeagh.
{| class="wikitable sortable" style="text-align:right; font-size:100%;"
|-
!width="200px"| [[Possan kynneeagh]] !! [[Earroo yn phobble]] !! % y clane*
|-
| align = "left"| Kynneeyn baney || 54,153,898 || 92.1%</tr>
| align = "left"| Kynneeyn gorryn || 1,148,738 || 2.0%</tr>
| align = "left"| Injinee || 1,053,411 || 1.8%</tr>
| align = "left"| Pakistaanee || 747,285 || 1.3%</tr>
| align = "left"| Kynneeyn mestit || 677,117 || 1.2%</tr>
| align = "left"| Bengaalee || 283,063 || 0.5%</tr>
| align = "left"| Aishanee elley (neu-Heenee) || 247,644 || 0.4%</tr>
| align = "left"| Sheenee || 247,403 || 0.4%</tr>
| align = "left"| Elley || 230,615 || 0.4%</tr>
|-
|colspan="3" align="left"| {{smaller|* % sleih-earroo yn RU}}
|}
Ta'n neuchaslid kynneeagh anchasley harrish yn RU. Ayns Mean Souree ny bleeaney 2005, rere oolaghyn she possanyn kynneeagh neu-vaney 30.4% sleih-earroo Lunnin<ref>{{cite web|url=http://neighbourhood.statistics.gov.uk/dissemination/LeadTableView.do;jsessionid=ac1f930dce6eace0153cf12440ca609dc762c8ae598.e38OaNuRbNuSbi0Ma3aNaxiQbNiLe6fznA5Pp7ftolbGmkTy?a=3&b=276743&c=London&d=13&e=13&g=325264&i=1001x1003x1004&m=0&r=1&s=1201351285750&enc=1&dsFamilyId=1812&bhcp=1|title=Resident population estimates by ethnic group (percentages): London|publisher=Office for National Statistics|accessdate = 2008-04-23}}</ref> as 37.4% sleih-earroo [[Leicester]]<ref>{{cite web|url=http://www.neighbourhood.statistics.gov.uk/dissemination/LeadTableView.do?a=3&b=276827&c=Leicester&d=13&e=13&g=394575&i=1001x1003x1004&m=0&r=1&s=1208962134759&enc=1&dsFamilyId=1812|title=Resident population estimates by ethnic group (percentages): Leicester|publisher=Office for National Statistics|accessdate=2008-04-23|archivedate=2019-04-18|archiveurl=https://web.archive.org/web/20190418200442/http://www.neighbourhood.statistics.gov.uk/dissemination/LeadTableView.do?a=3}}</ref>, raad nagh vel agh 5% sleih-earrooyn [[Shiar Hwoaie Hostyn|Hiar Hwoaie Hostyn]], Vretin as [[Sheear Yiass Hostyn|Heear Yiass Hostyn]] jeh mynlee kynneeagh rere coontey-pobble ny bleeaney 2001.<ref>{{cite web|url=http://www.statistics.gov.uk/census2001/profiles/commentaries/ethnicity.asp|title=Census 2001 - Ethnicity and religion in England and Wales|publisher=Office for National Statistics|accessdate=2008-04-23|archive-date=2012-06-30|archive-url=https://web.archive.org/web/20120630185133/http://www.ons.gov.uk/ons/guide-method/census/2011/index.html|url-status=dead}}</ref> 'Sy vlein 2007, va 22% scollagyn ny [[bun-scoill]]yn as 17.7% scollagyn ny [[mean-scoill]]yn ayns [[Scoill y steat|scoillyn pohlldit]] [[Sostyn|Hostyn]] jeh sluight kynneeagh mynlagh.<ref>{{cite web|url=http://www.dcsf.gov.uk/rsgateway/DB/SFR/s000744/UPDATEDSFR30_2007.pdf |title=Schools and Pupils in England|date=January 2007|format=PDF |accessdate=2008-10-17}}</ref><ref>{{cite web|url=http://www.telegraph.co.uk/news/uknews/1564365/One-fifth-of-children-from-ethnic-minorities.html |title=One fifth of children from ethnic minorities |publisher=The Daily Telegraph |author=Graeme Paton |date=2007-10-01 |accessdate = 2008-03-28}}</ref>
=== Çhengaghyn ===
{{ardart|Çhengaghyn y Reeriaght Unnaneysit}}
[[Coadan:Anglospeak (subnational version).svg|thumb|Çheeraghyn as y [[Baarle|Vaarle]] loayrit ayndaue myr çhengey oikoil ''de facto'' ny ''de jure''.]]
Cha nel çhengey oikoil ''[[de facto|de jure]]'' 'sy Reeriaght Unnaneysit agh she [[Baarle]], [[Çhengaghyn Germaanagh|çhengey Ghermaanagh]], preeu-çhengey ny çheerey. Myr eiyrtys yn Impiraght Ghoaldagh son y chooid smoo, ren y çhengey skeaylley tessen y dowan, as haink urree dy ve çhengey eddyr-ashoonagh dellal chammah as çhengey ynsit smoo lheeadagh.<ref>{{cite web |url=http://www.cepr.org/pubs/new-dps/dplist.asp?dpno=2055 |title=English-Language Dominance, Literature and Welfare |author=Jacques Melitz |publisher=Centre for Economic Policy Research |date=1999 |accessdate=2006-05-26 |archivedate=2012-05-12 |archiveurl=https://web.archive.org/web/20120512123906/http://www.cepr.org/pubs/new-dps/dplist.asp?dpno=2055 }}</ref> Ta'n [[Baarle Albinagh|Vaarle Albinagh]], çhengey ta çheet magh ass [[Mean-Vaarle|Mean-Vaarle Hwoaie]], er enney ec y leval Oarpagh<ref>{{cite web|url=http://www.eurolang.net/index.php?option=com_content&task=view&id=2449&Itemid=52&lang=en |title=Eurolang - Language Data - Scots |publisher=Eurolang.net |date= |accessdate=2008-11-02}}</ref> as cha nel ee ny h-abbyrt jeh'n Vaarle. Ta kiare [[çhengaghyn Celtiagh]] ymmydit 'syn RU: [[Bretnish]], [[Cornish]], [[Gaelg Albinagh]] as [[Yernish]]. 'Sy vlein 2001 dooyrt 21% sleih-earroo Vretin dy row ad abyl loayrt trooid Bretnish,<ref>[https://web.archive.org/web/20070312085119/http://www.statistics.gov.uk/CCI/nugget.asp?ID=447&Pos=6&ColRank=1&Rank=192 National Statistics Online] at www.statistics.gov.uk</ref> earroo ta ny smoo na'n 18% ayns Coontey-pobble ny bleeaney 1991.<ref>{{cite web|url=http://www.statistics.gov.uk/downloads/theme_compendia/fow/WelshLanguage.pdf|title=Differences in estimates of Welsh Language Skills|archiveurl=http://webarchive.nationalarchives.gov.uk/20040722055520/http://www.statistics.gov.uk/downloads/theme_compendia/fow/WelshLanguage.pdf|archivedate=2004-07-22}}</ref> Chammah as shen, t'eh oolit dy vel 200,000 loayreyderyn ny Bretnish nyn gummal ayns Sostyn.<ref>[http://www.bbc.co.uk/voices/multilingual/welsh.shtml Welsh today by Prof. Peter Wynn Thomas]bbc.co.uk</ref> Va ablid ennagh ny Gaelg Albinagh ec 92,000 cummaltee ny h-Albey (ny begnagh 2% sleih-earroo ny h-Albey), goaill stiagh 72% dy chummaltee ayns [[ny h-Ellanyn Heear]].<ref>[https://web.archive.org/web/20130522110328/http://www.gro-scotland.gov.uk/press/news2005/scotlands-census-2001-gaelic-report.html Scotland's Census 2001 - Gaelic Report] gro-scotland.gov.uk, feddynit magh er 15 Jerrey Fouyir 2008</ref> Ta'n Vretnish as y Ghaelg Albinagh loayrit mygeayrt ny cruinney lesh beggan [[Gaelg Chanadagh|Ghaelg]] foast ry-gheddyn ayns [[Nalbin Noa]], [[Yn Chanadey|y Chanadey]], as y Vretnish ayns [[Patagonia]] ny [[Yn Argenteen|h-Argenteen]].
Harrish y Reeriaght Unnaneysit, dy chadjin t'eh eginagh da scollagyn studeyrys y yannoo er nah çhengey: gys 14 bleeaney d'eash ayns Sosyn,<ref>[http://news.bbc.co.uk/1/hi/education/3983713.stm Fall in compulsory language lessons] BNC News 4 Mee Houney 2004</ref> as gys 16 bleeaney d'eash ayns Nalbin. T'ad [[Frangish]] as [[Germaanish]] ny nah çhengaghyn smoo ynsit ayns Sostyn as Nalbin. Ayns Bretin ta lesoonyn gys 16 bleeaney d'eash ynsit trooid Bretnish ny ta'n Vretnish ynsit myr nah çhengey.<ref>[https://web.archive.org/web/20120310162644/http://www.bbc.co.uk/wales/schoolgate/aboutschool/content/inwelsh.shtml The School Gate for parents in Wales] BBC Wales, feddynit magh er 11 Jerrey Fouyir, 2008</ref>
=== Craueeaght ===
{{ardart|Craueeaght 'sy Reeriaght Unnaneysit}}
Ta tradishoonyn foddey ny [[Creestiaght]] 'sy Reeriaght Unnaneysit as ayns ny çheeraghyn er gholl roish crooaght yn RU as ta kiangley eddyr yn agglish as y steat foast ayn. Ta ronsee coyrlaghey dy vel credjue ayns [[Jee]] ec 38% sleih-earroo ny çheerey as dy vel 40% ny smoo credjal ayns "spyrryd ny bea-lajerys".<ref name=Eurobarometer>{{PDFlink|[http://ec.europa.eu/public_opinion/archives/ebs/ebs_225_report_en.pdf Eurobarometer poll conducted in 2005]|1.64 MB}}. Page 9. European Commission. Feddynit er 7 Mee ny Nollick 2006</ref> Ta'n pobble cur adsyn hene er enney lesh [[craueeaght]] er son cooishyn cultooragh as crauee as t'eh aahoilshit ayns meereggyraght eddyr earrooyn sleih as ad fockley magh credjue ayns Jee as sleih as ad cur adsyn hene er enney lesh craueeaght unnaneagh. Ta'n [[Creestiaght|Chreestiaght]] ny preeu-chraueeaght: er Creearey [[Tearfund]] ny bleeaney 2007<ref name=Tearfund_Survey>{{cite web |url=http://www.tearfund.org/webdocs/Website/News/Final%20churchgoing%20report.pdf |title=Tearfund Survey 2007 |accessdate=2007-05-05 |archivedate=2007-06-14 |archiveurl=https://web.archive.org/web/20070614005402/http://www.tearfund.org/webdocs/Website/News/Final%20churchgoing%20report.pdf }}</ref> dooyrt 53% dy reggyrtee dy row ad nyn Greestee as ny h-earrooyn shen cosoylit rish creearey British Social Attitudes Survey ny bleeaney 2004,<ref name=BSAS2004>{{Cite web
|publication-date = 2006-02-20
|year = 2004
|title = British Social Attitudes Survey
|publisher = National Centre for Social Research
|url = http://www.data-archive.ac.uk/findingData/snDescription.asp?sn=5329
|accessdate = 2008-02-25
}}</ref> as rish Coontey-pobble ny bleeaney 2001 as eh gra dy vel 71.6% sleih-earroo ny çheerey nyn Greestee,<ref>{{cite web |url=http://www.statistics.gov.uk/cci/nugget.asp?id=293 |title=UK Census 2001 |accessdate=2007-04-22}}</ref> (faagail magh dy vel y feysht 'sy Choontey-pobble ny s'boggey). Ny yei'n Chreestiaght ta'n Islam, y Hindooghys, y Seeckaghys as yn Ewaghys rere earroo eiyrtyssee.
==== Creestiaght ====
[[Coadan:Westminster abbey west.jpg|thumb|upright|Ta [[Abban ny Mannishter Heear]] ymmydit da [[crooinaghey]] [[Reeaghyn as benreinyn y Reeriaght Unnaneysit|Reeaghyn as Benreinyn Goaldagh]], nar t'ad jeant fir ny mraane toshee er [[Agglish Hostyn]].]]
Ta [[Agglish Hostyn]], quoi va scarrit magh veih [[Agglish ny Raue]] ayns 1534 (jeeagh er [[Aachummey Hostyn]]), ny h-Agglish 'steat' ayns Sostyn: ta'n agglish freayll [[Çhiarnyn Spyrrydoil|tuarystallys]] ayns [[Parlamaid y Reeriaght Unnaneysit|Parlamaid yn RU]] as ta'n [[Reeaghyn as benreinyn y Reeriaght Unnaneysit|ree ny yn venrein Goaldagh]] ny oltey jeh'n Agglish (shirrit fo Olt 2 jeh [[Conaant yn Unnaneys]]) chammah as ny [[Ard-chiannoort Agglish Hostyn|Ard-chiannoort]]. Ayns ny bleeantyn shoh caie ta cummaght yeeragh ny h-agglish goll sheese agh ta kiart towseyn slattyssagh (bentyn rish reirey crauee) freaylt eck trooid yn [[Ard-choyrle Chadjin Agglish Hostyn|Ard-choyrle Chadjin]] as foddee orroo dy v'er heet nyn drooid liorish y Pharlamaid.
Ta'n [[Agglish Albinagh]] (enmyssit dy neuformoil myr y [[Kirk]]), quoi va scarrit magh veih'n Raue ayns 1560 (jeeagh er [[Calveenaghys]] as [[Aachummey ny h-Albey]]) ny h-agglish [[Presbyteyraght|Phresbyteyragh]], as t'ee er enney myr [[agglish ashoonagh]] ny h-Albey, as cha nel ee fo smaght y steat. Ta'n venrein ny h-oltey chadjin jeh'n Agglish, as ta shirreydys urree guee er shickyrys ny h-Agglish y choadey ec y chrooinaghey. Ta [[Agglish Aspickagh ny h-Albey]], quoi ta ny cooid jeh'n Chommeeys Anglicaanagh, goaill toshiaght veih bunneeaght yerrinagh ny Presbyteyraght ayns Nalbin ayns 1690 nar v'ee rheynnit magh veih'n Agglish Albinagh, as cha nel ee ny 'fo-agglish' Agglish Hostyn. Myr eiyrtys skeiltyn elley 'syn Agglish Albinagh, 'sy nuyoo eash jeig er lheh, va agglishyn Presbyteyragh anchasley elley, goaill stiagh [[Agglish Heyr ny h-Albey (ny yei 1900)|Agglish Heyr ny h-Albey]], currit er bun.
Ayns ny 1920yn, va'n [[Agglish ayns Bretin]] scarrit magh veih Agglish Hostyn as haink urree dy ve "[[Jee-vunneydaght|jee-vunnit]]". Ta'n Agglish ayns Bretin foast 'sy [[Commeeys Anglicaanagh|Chommeeys Anglicaanagh]]. Ta'n [[Saasilaght]] as agglishyn seyrey elley troshtagh dy tradishoonagh ayns Bretin.
Va'n agglish Anglicaanagh, [[Agglish Nerin]] jee-vunnit 'sy nuyoo eash jeig. T'ee goaill stiagh ellan slane [[Nerin]] ([[Nerin Hwoaie]] hene as [[Pobblaght Nerin]] hene). Ayns Nerin Hwoaie, ta ny [[Protestoonys|Protestoonee]] nyn mooar-chooid.<ref>[http://www.statistics.gov.uk/cci/nugget.asp?id=980 Communities in Northern Ireland] statistics.gov.uk, feddynit er 29 Jerrey Fouyir 2008</ref> agh ta Agglish ny Raue ny h-Agglish smoo. Ta'n [[Agglish Phresbyteyragh ayns Nerin]], as ee bentyn rish yn Agglish Albinagh rere jeeoilys as shennaghys, ny h-Agglish Phrotestoonagh smoo.
Ta Agglish ny Raue ny nah rheynn chredjue ny Creestiaght smoo 'syn RU. Lurg yn [[Aachummey Protestoonagh]], va leighyn geyrey currit ayns bree nyn oi, agh v'ad scughit liorish leighyn [[Seyrey ny Catolee]] ayns 1829. Ta reiltysyn Catoleagh er lheh ayn da Sostyn as Bretin, Nalbin, as Nerin.
T'ad agglishyn Creestee mooarey elley na [[Saasilaght|Saasilee]], bunnit ec [[John Wesley]] ayns Lunnin, as [[Bashtee]]. Ta agglishyn [[Sushtallaght|Sushtallagh]] as [[Kingeeshaghys|Kingeeshagh]] aasagh chammah, as y chooid smoo jeu bishaghey lesh inymmyrkey veih'n [[Co-unnaneys ny h-Ashoonyn|Cho-unnaneys]] as çheu hoal. Ta ny h-agglishyn Kingeeshagh 'sy treeoo ynnyd ny yei Agglish Hostyn as Agglish ny Raue rere fieaumanys.<ref>[https://web.archive.org/web/20110814125609/http://www.timesonline.co.uk/tol/news/uk/article757934.ece 'Fringe' Church winning the believers] Timesonline, 19 Mee ny Nollick 2006</ref>
==== Craueeaghtyn elley ====
[[Coadan:ELM and LMC Angled View 1.jpg|thumb|[[Mosk Lunnin Hiar]], nane jeh ynnydyn ooashlee Islamagh smoo 'sy çheer.]]
T'eh er credjal dy vel mygeayrt 1.8 millioonyn [[Islam|Moslymee]].<ref>{{cite web |url=http://www.timesonline.co.uk/tol/comment/faith/article700684.ece |title=We need imams who can speak to young Muslims in their own words |accessdate=2006-08-09 |date=2006-08-05 |publisher=The Times}}</ref> Ta [[mosk]]yn ry gheddyn ayns dagh ard. T'ad ny possanyn islamagh smoo jeh'n sluight [[Yn Phakistaan|Pakistaanagh]], [[Yn Vangladesh|Bengaalagh]] as [[Yn Injey|Injinagh]]. Er y gherrid, ta kemmyrkee veih'n [[Yn Tomaal|Tomaal]], [[Pobblaght Hurkagh ny Cyprys Hwoaie|y Chyprys Hwoaie]], [[ny Çheeraghyn Balkanagh]] as çheeraghyn Arabagh cur lesh bishaghey mooad ny Moslymee Goaldagh. Ta arganys ny bleeaney 2006 fo'n [[burqa]], ayns cohaggloo liorish y pholitickeyr [[Jack Straw]], aahoilshaghey scarrey eddyr Goaldee ennagh as ad cur feyshtyn er mestey stiagh ny Moslymee lesh y çheshaght Ghoaldagh, as ad t'er credjal dy vel ceau ny breid freggyrtagh lhee, 'syn RU.<ref>{{cite web |url=http://www.cnn.com/2006/WORLD/europe/10/07/uk.straw/ |title=Veil: British papers back Straw |accessdate=2006-05-11 |date=2006-07-10 |publisher=CNN}}</ref>
Ta craueeaghtyn Injinagh ry-gheddyn foast, lheid as [[Hindooghys]], [[Seeckaghys]], [[Buddhaghys]] as [[Jainaghys]]. Rere coontey-pobble ny bleeaney 2001, va mygeayrt 560,000 Hindooee as 340,000 Seeckee 'syn RU. Ta'n Buddhaghys cliaghtit ec 150,000 dy 'leih.<ref>{{cite web |url=http://www.statistics.gov.uk/census2001/profiles/uk.asp |title=Census 2001 - Profiles |accessdate=2007-01-27 |publisher=Office for National Statistics |archive-date=2007-07-17 |archive-url=https://web.archive.org/web/20070717035415/http://www.statistics.gov.uk/census2001/profiles/uk.asp |url-status=dead }}</ref> Ta un reagheydys neu-reiltysagh ooley dy vel 800,000 Hindooee 'syn RU.<ref>{{cite web |url=http://hinduism.iskcon.com/tradition/1212.htm |title=Hinduism in Britain today |publisher=International Society for Krishna Consciousness |accessdate=2007-04-22 |archivedate=2010-12-17 |archiveurl=https://web.archive.org/web/20101217230639/http://hinduism.iskcon.com/tradition/1212.htm }}</ref> Ta nane jeh ny çhiambleyn gonney çheu mooie jeh'n [[Yn Injey|Injey]] soit ayns [[Leicester]].<ref>[https://web.archive.org/web/20100921091924/http://www.jaincentre.com/ The Jain Centre, Leicester. UK] jaincentre.com, feddynit magh er 29 Jerrey Fouyir 2008</ref>
Ta mygeayrt 270,000 Ewnyn 'sy Vretyn Vooar, rere coontey-pobble ny bleeaney 2001.<ref>{{cite web |url=http://www.statistics.gov.uk/census2001/profiles/uk.asp |title=Census 2001 - Profiles |accessdate=2007-12-02 |publisher=Office for National Statistics |archive-date=2007-07-17 |archive-url=https://web.archive.org/web/20070717035415/http://www.statistics.gov.uk/census2001/profiles/uk.asp |url-status=dead }}</ref>
Ta co-phobble anjee as meechredjuagh aasagh lesh mygeayrt 9.1 millioonyn dy 'leih (15% sleih-earroo yn RU) gaggyrt nagh vel craueeaght erbee oc ayns coontey-pobble ny bleeaney 2001.<ref>[http://webarchive.nationalarchives.gov.uk/20031221054139/http://www.statistics.gov.uk/STATBASE/ssdataset.asp?vlnk=6590 Religion: 2001 Census] National Statistics website.</ref>
== Tarmaynys ==
{{ardart|Tarmaynys y Reeriaght Unnaneysit}}
[[Coadan:City of London Skyline from Canary Wharf - Sept 2008.jpg|thumb|Ta Lunnin ny ynnyd argidoil smoo 'syn Oarpey as nane jeh ny tree ynnydyn argidoil smoo er y theihll myrane lesh [[York Noa (balley)|York Noa]] as [[Tokyo]].<ref name="London's place in economy">{{cite web|url=http://www.cityoflondon.gov.uk/NR/rdonlyres/2CAE66FB-2DD5-41A5-B916-8FFC37276059/0/BC_RS_lpuk_0511_FR.pdf|title=London's place in the UK economy, 2005–06|publisher=City of London|accessdate=2008-03-11|archive-date=2006-05-25|archive-url=https://web.archive.org/web/20060525075622/http://www.cityoflondon.gov.uk/NR/rdonlyres/2CAE66FB-2DD5-41A5-B916-8FFC37276059/0/BC_RS_lpuk_0511_FR.pdf|url-status=dead}}</ref>]]
Ta tarmaynys yn RU jeant seose (ayns oardagh lhargee mooadys) jeh tarmaynysyn [[Tarmaynys Hostyn|Hostyn]], [[Tarmaynys ny h-Albey|ny h-Albey]], [[Tarmaynys Vretin|Vretin]] as [[Tarmaynys Nerin Hwoaie|Nerin Hwoaie]]. Rere [[leahys coonree|leahysyn coonree]] margee, ta'n Reeriaght Unnaneysit ny wheigoo tarmaynys smoo er y theihll<ref>{{cite web |url=http://www.imf.org/external/pubs/ft/weo/2006/01/data/dbcoutm.cfm?SD=2005&ED=2005&R1=1&R2=1&CS=3&SS=2&OS=C&DD=0&OUT=1&C=512-941-914-446-612-666-614-672-311-946-213-137-911-962-193-674-122-676-912-548-313-556-419-678-513-181-316-682-913-684-124-273-339-921-638-948-514-686-218-688-963-518-616-728-223-558-516-138-918-353-748-196-618-278-522-692-622-694-156-142-624-449-626-564-628-283-228-853-924-288-233-293-632-566-636-964-634-182-238-453-662-968-960-922-423-714-935-862-128-716-611-456-321-722-243-965-248-718-469-724-253-576-642-936-643-961-939-813-644-199-819-184-172-524-132-361-646-362-648-364-915-732-134-366-652-734-174-144-328-146-258-463-656-528-654-923-336-738-263-578-268-537-532-742-944-866-176-369-534-744-536-186-429-925-178-746-436-926-136-466-343-112-158-111-439-298-916-927-664-846-826-299-542-582-443-474-917-754-544-698&S=NGDPD&CMP=0&x=31&y=8 |title=Report for Selected Countries and Subjects |publisher=International Monetary Fund |date=2005 |accessdate=2006-05-15}}</ref> as ny nah harmaynys moo 'syn Oarpey lurg y [[Yn Ghermaan|Ghermaan]].
Hoshee [[yn Çhyndaa Çhynskylagh]] 'sy Reeriaght Unnaneysit lesh co-ghlooaghey toshee er çhynskylyn eddrymey lheid as troggal lhongyn, meaineyrys geayil, obbragh staillin, as çhynskyl ny feederaght. Chroo yn impiraght margey har mooir da troaryn Goaldagh, as eh lhiggey da'n RU jannoo kioneys er traght eddyr-ashoonagh 'sy 19oo eas. Ansherbee, lesh çhynskylaghey çheeraghyn elley, myrane lesh parail tarmaynagh ny yei daa chaggey dowanagh, hoshee yn Reeriaght Unnaneysit e vondeish chohirreydagh y choayl as haghyr parail ayns çhynskyl eddrym veggan as ny veggan, trooid y 20oo eash. Ta'n jantyssaght foast ny chooid trome-cheeallagh y tarmaynys, agh cha row eh coontit agh er son sheyoo y troar ashoonagh 'sy vlein 2003.<ref>{{cite web |url=http://www.dti.gov.uk/ministers/speeches/hewitt150704b.html |title=TUC Manufacturing Conference |author=Patricia Hewitt |publisher=Department for Trade and Industry |date=2004-07-15 |accessdate=2006-05-16 |archivedate=2007-06-03 |archiveurl=http://webarchive.nationalarchives.gov.uk/20070603191213/http://www.dti.gov.uk/ministers/speeches/hewitt150704b.html }}</ref> Ta'n çhynskyl gleashtanagh Goaldagh ny vooar-chooid jeh'n ronney shoh, agh haghyr pareil ayn lesh cohuittym yn [[MG Rover Group|''MG Rover Group'']], ansherbee, as ec y traa t'ayn ta'n chooid smoo jeh'n çhynskyl fo shellooderaght colughtyn joarree. She [[BAE Systems|''BAE Systems'']], y colught Oarpagh [[EADS]], shellooder ''[[Airbus]]'', ny colughtyn smoo ayns obbragh etlanyn theayagh as coadee. Ta ronney mooar margee jeshaghtyn etlanys y theihill ec [[Rolls-Royce plc|''Rolls-Royce'']]. Ta'n çhynskyl kemmigagh as potacareeagh lajer 'syn RU, lesh y nah as y sheyoo colught potacareeagh er y theihll, ''[[GlaxoSmithKline]]'' as ''[[AstraZeneca]]''.<ref>{{cite web |url=http://www.dti.gov.uk/sectors/biotech/pharmaceutical/page10219.html |title=The Pharmaceutical sector in the UK |accessdate=2007-02-27 |publisher=Department of Trade and Industry |archivedate=2007-02-05 |archiveurl=https://web.archive.org/web/20070205141427/http://www.dti.gov.uk/sectors/biotech/pharmaceutical/page10219.html }}</ref>
[[Coadan:London.bankofengland.arp.jpg|thumb|left|[[Banc Hostyn]]; [[bank meanagh]] y Reeriaght Unnaneysit.]]
Ta ronney shirveishyn yn RU bishaghey, ansherbee, as nish t'eh freggyrtagh son 73% LTS ny çheerey.<ref>{{cite web |date=2006-04-26 |url=http://www.statistics.gov.uk/statbase/Product.asp?vlnk=9333 |title=Index of Services (experimental) |publisher=Office for National Statistics |accessdate=2006-05-24}}</ref> Ta'n ronney shirveishyn jannoo kioneys er [[shirveishyn argidoil]], ayns bancaght as urryssaght er lheh. Ta Lunnin ny ynnyd argidoil smoo er y theihll lesh [[Boorse Lunnin]], [[Boorse Lunnin ry hoi Conaantyn ry-heet Argidoil as Reihyn Eddyr-ashoonagh]] (LIFFE), as y margey urryssagh [[Lloyd's of London|''Lloyd's of London'']] bunnit ayns [[Ard-valley Lunnin]]. Ta Lunnin ny ynnyd scanshoil ry hoi [[dellal eddyr-ashoonagh]] as cochionneeaght as t'eh ny valley toshee er tree "ynnydyn anney" ry hoi [[Yn Tarmaynys Dowanagh|y tarmaynys dowanagh]] (myrane lesh [[York Noa (balley)|York Noa]] as [[Tokyo]]).<ref>{{cite book|author=[[Saskia Sassen|Sassen, Saskia]]|title=The Global City: New York, London, Tokyo|year=2001|publisher=Princeton University Press|edition=2h}}</ref> Ta'n co-ghlooaghey banglaneyn bancyn joarree smoo er y theihll ayn. 'Sy yeihaght jerrinagh, ta ynnyd argidoil trughanagh gaase ayns ny [[Lhonglannyn Lunnin|Lhonglannyn]], lesh [[HSBC]] as [[Barclays plc|''Barclays Bank'']] aahoiaghey ny h-ard-offishyn ayns shen. Ta mooarane colughtyn eddyr-ashoonagh nagh vel bunnit 'syn RU son y chooid smoo, lheid as ''[[Citigroup]]'', aahoiaghey ny kione-cherrooyn Oarpagh gys Lunnin. Ta nane jeh ny h-ynnydyn argidoil smoo 'syn Oarpey 'sy phreeu-valley Albinagh, Doon Edin<ref>{{cite web |url=http://www.publications.parliament.uk/pa/cm200203/cmhansrd/vo030430/halltext/30430h05.htm#30430h05_spnew0|title=Financial Services Industry |first=Mark |last=Lazarowicz (Labour MP) |date=2003-04-30|publisher=United Kingdom Parliament |accessdate=2008-10-17}}</ref> as ta kione-cherroo yn [[Royal Bank of Scotland Group|''Royal Bank of Scotland Group'']], nane jeh ny bancyn smoo 'sy dowan, soit ayn.
[[Coadan:Oil_platform_under_repair_at_Gdańsk_Shipyard,_Poland_-_20070504.jpg|thumb|Ta [[Ooill Vooir Hostyn|ooill as gas Vooir Hostyn]] cur cooid da feme bree yn RU.]]
Ta'n turrysid feer feer scanshoil da tarmaynys y Reeriaght Unnaneysit. Lesh çheet ny smoo na 27 millioonyn turryssee 'sy vlein 2004, ta'n Reeriaght Unnaneysit rang-oardraghit myr y sheyoo kione jurnaa smoo scanshoil 'sy dowan.<ref>{{PDFlink|[http://www.world-tourism.org/facts/eng/pdf/highlights/2005_eng_high.pdf International Tourism Receipts]|1.10 MB}}. UNWTO Tourism Highlights, Edition 2005 Duillag 12. World Tourism Organisation. Feddynit magh er 24 Boaldyn 2006</ref> Ta Lunnin, er oirr mooar, ny valley smoo shirrit 'sy dowan lesh 15.6 millioonyn keayrtee ayns 2006, roish Bangkok (10.4 millioonyn) as [[Paarys]] (9.7 millioonyn).<ref>{{cite news|url=http://www.euromonitor.com/Top_150_City_Destinations_London_Leads_the_Way|title=Top 150 city destinations: London leads the way|first=Caroline|last=Bremner|publisher=Euromonitor International|date-2007-10-11|accessdate=2008-08-28}}</ref>
Ta ny çhynskylyn crootagh freggyrtagh son 7% [[Lane Tooilliu Feeuid|LTF]] ny çheerey ayns 2005 as daase eh er mean-leahys 6% 'sy vlein eddyr 1997 as 2005.<ref>{{cite web |date=2007-03-09 |url=http://www.culture.gov.uk/reference_library/media_releases/2132.aspx |title=From the Margins to the Mainstream - Government unveils new action plan for the creative industries |publisher=DCMS |accessdate=2007-03-09 |archiveurl=https://archive.ph/20120628214959/http://webarchive.nationalarchives.gov.uk/+/http://www.culture.gov.uk/reference_library/media_releases/2132.aspx |archivedate=2012-06-28 }}</ref>
Ta ronney eirinagh yn RU coontit er son 0.9% LTS ny çheerey.<ref name=factbook/>
Ta tashtey beg geayil 'syn RU myrane lesh tashtaghyn tuittymagh<ref>{{cite web |date=2006-11-30 |url=http://europe.theoildrum.com/story/2006/11/19/135819/75 |title=The architecture of UK offshore oil production in relation to future production models |publisher=The Oil Drum |accessdate=2008-08-27}}</ref> [[gas najooragh]] as [[tashtaghyn ooill]]. Ta ny smoo na 400 millioonyn thunnaghyn dy hashtaghyn geayil er enney 'syn RU.<ref name="Coal 1">{{cite web|title=Coal Around the World|author=UK Coal|url=http://www.ukcoal.com/coal-around-the-world|accessdate=2008-09-23|publisher=UK Coal|year=2007|work=UK Coal website|archivedate=2008-10-13|archiveurl=https://web.archive.org/web/20081013045749/http://www.ukcoal.com/coal-around-the-world}}</ref> 'Sy vlein 2004, va lane ymmyd geayil yn RU (goaill stiagh cooid kionnit stiagh) mygeayrt 61 millioonyn hunnaghyn,<ref name="BERR 1">{{cite web|title=Chapter 2: Long term trends Solid fuels and derived gases|author=UK Coal|url=http://www.berr.gov.uk/files/file19261.pdf|accessdate=2008-09-23|publisher=Department for Business Enterprise & Regulatory Reform|year=2008|work=BERR website|archivedate=2008-09-23|archiveurl=https://web.archive.org/web/20080923193134/http://www.berr.gov.uk/files/file19261.pdf}}</ref> as eh lhiggey da'n RU dy ve hene-haieagh ayns geayl er feie 6.5 bleeaney, ansherbee rere leahysyn tayrn magh roie, bee ny meainyn foast tayrn geayl magh ayns 20 bleeantyn.<ref name="Coal 1"/> She caghlaays lostit lectraghys gientyn geayl-lostit gasaghey geayil keillit (GGK). She tilgey stiagh gaal as ocsygien trooid towl meainey GGK, as eh tilgey magh gas veih'n gheayl as cur y mestey gys y thalloo - foddee saase seyrey geayil lesh towseyn injil carboan. T'eh er credjal dy vel eddyr 7 billioonyn as 16 billioonyn thunnaghyn GGK ayns eaghtyryn er çheer, foddee.<ref name="Coal 2">{{cite web|title=Coal Reserves in the United Kingdom|author=The Coal Authority|url=http://www.coal.gov.uk/media//860AD/Response%20to%20Energy%20Review%20-%20Appendix%202.pdf|accessdate=2008-09-23|publisher=The Coal Authority|year=2007|work=Response to Energy Review|archiveurl=https://web.archive.org/web/20080923193135/http://www.coal.gov.uk/media//860AD/Response%20to%20Energy%20Review%20-%20Appendix%202.pdf|archivedate=2008-09-23}}</ref> Er ymmyd roie geayil 'syn RU, ta ny towseyn shoh cowraghey tashtaghyn as ad abyl cour er feie 200 as 400 bleeantyn ec yn RU.<ref name="Coal 3">{{cite web|title=BBC News England Expert predicts 'coal revolution'|author=BBC|url=http://news.bbc.co.uk/1/hi/england/7046981.stm|accessdate=2008-09-23|publisher=BBC|date=2007-10-16|work=Ynnyd-eggey BBC News}}</ref>
Ta cassey yn reiltys 'sy tarmaynys fo stiurey [[Shansyleyr y Rheynn Argidys]] as eh ny 'er toshee er [[Staaitchishtey yn AO]], agh ta'n [[Ard-vinishter y Reeriaght Unnaneysit|Ard-vinishter]] ny [[Kied-hiarn y Staaitchishtey|Chied-hiarn y Staaitchishtey]]; ta Shansyleyr y Rheynn Argidys ny Nah-hiarn y Staaitchishtey. Ayns ny bleeantyn jerrinagh, va'n RU stiurit ayns freggyrtys lesh prinsabylyn feoiltaghey margee as keeshyn as curmaghey injil. Veih'n vlein 1997, ta [[Bing Pholasee Argidoil]] [[Banc Hostyn|Vanc Hostyn]], fo stiurey [[Kiannoort Vanc Hostyn|Chiannoort Vanc Hostyn]], freggyrtagh son lhie [[leahys banc oikoil|leahysyn use]] ec cormidyn as ad ymmyrçhagh dy chooilleeney lane deanyn bolgey da'n tarmaynys. Ta ny leahysyn shen currit nyn lhie ec y Shansyler dagh blein.<ref>[https://web.archive.org/web/20080312060011/http://www.bankofengland.co.uk/about/more_about.htm More About the Bank] www.bankofengland.co.uk, feddynit magh er 8 Luanistyn 2008</ref> Ta Reiltys ny h-Albey, rere lowal rish Parlamaid ny h-Albey, abyl leahys bunneydagh keeshyn er çheet stiagh ry-eeck ayns Nalbin y chaghlaa rere 3 pingyn ny smoo ny ny sloo 'sy phunt, agh cha row y cummaght shen cliaghtit derrey yn laa t'ayn.
'Sy vlein 2007, va [[feeaghan reiltys]] yn RU fo 44% [[Lane Troar Sthie|LTS]].<ref name=factbook>[https://web.archive.org/web/20090513124910/https://www.cia.gov/library/publications/the-world-factbook/fields/2172.html CIA World Factbook][Rhenk-oardraghey Gini]</ref>
She [[punt Sostynagh]], cowrit liorish y chowrey '''[[Cowrey yn phunt|£]]''' argid oikoil yn RU. She [[Banc Hostyn]] y [[banc meanagh]] as t'eh freggyrtagh er son cur magh yn argid. Ta bancyn ayns Nalbin as Nerin Hwoaie freayll kiart noteyn hene y chur magh, as ad smaghtit fo freaylley mie dy liooar noteyn Vanc Hostyn ayns tashtaghyn. Ec launshey yn [[euro]] v'eh reiht ec yn RU çheet lesh yn argid shen, as er yn Ard-vinishter Goaldagh, Tony Brown, ta olteynys y phossan argidoil reillt magh lesh ny bleeantyn ry heet. Dooyrt eh dy re eshyn y briwnys kiart da'n Vretyn Vooar as yn Oarpey.<ref>{{cite web |date=2007-07-24 |url=http://www.timesonline.co.uk/tol/news/politics/article2127640.ece |title=Puritanism comes too naturally for 'Huck' Brown |publisher=Times Online |accessdate=2007-07-24 |archive-date=2011-08-14 |archive-url=https://web.archive.org/web/20110814094905/http://www.timesonline.co.uk/tol/news/politics/article2127640.ece |url-status=dead }}</ref> Ren reiltys Tony Blair gioal refrane y ghoaill er olteynys y phossan argidoil my vel "[[queig prowalyn tarmaynagh]]" er n'gheddyn. Ayns 2005, va 55% sleih-earroo yn RU noi'n argid, as va 30% son yn argid.<ref>{{cite web |date=2005-02-28 |url=http://www.ipsos-mori.com/content/polls-05/emu-entry-and-eu-constitution.ashx|title=EMU Entry And EU Constitution |publisher=MORI |accessdate=2006-05-17}}</ref>
== Ynsagh ==
{{ardart|Ynsagh 'sy Reeriaght Unnaneysit}}
{{jeeagh|Ynsagh ayns Sostyn|Ynsagh ayns Nalbin|Ynsagh ayns Bretin|Ynsagh ayns Nerin Hwoaie}}
[[Coadan:KingsCollegeChapelWest.jpg|thumb|[[King's College, Cambridge|King's College]], cooid jeh [[Ollooscoill Chambridge]]]]
[[Coadan:Tom Quad, Christ Church 2004-01-21.jpg|thumb|right|[[Christ Church, Aah yn Ollee|Christ Church]], cooid jeh [[Ollooscoill Aah yn Ollee]]]]
Ta [[ynsagh 'sy Reeriaght Unnaneysit]] ny red jee-veanit lesh corysyn er lheh ayns Bretin, Nalbin, Nerin Hwoaie as Sostyn.
Ta [[Screeudeyr y Steat ry hoi Lhiennoo, Scoillyn as Lught-thie]] as [[Screeudeyr y Steat ry hoi Noaid, Ollooscoillyn as Schleiyn]] freggyrtagh son [[ynsagh ayns Sostyn]], agh ta [[Lught-reill Ynnydagh Ynsee]] freggyrtagh ry hoi stiurey laa dy laa as argid. Va ynsagh steat cadjin currit stiagh ayns Sostyn as Bretin 'sy vlein 1870 da scollagyn ny bunscoillyn as 'sy vlein 1900 da scollagyn ny meanscoillyn.<ref>{{cite web |url=http://www.humana.org/Article.asp?TxtID=223&SubMenuItemID=183&MenuItemID=43 |title=United Kingdom |publisher=Humana |accessdate=2006-05-18 |archivedate=2006-10-03 |archiveurl=https://web.archive.org/web/20061003010910/http://www.humana.org/Article.asp?TxtID=223&SubMenuItemID=183&MenuItemID=43 }}</ref> Ta'n ynsagh anneydagh da scollagyn eddyr queig bleeaney as shey bleeaney jeig d'eash (15 my vel ad ruggit ayns Jerrey Souree jeianagh ny Luanistyn). Ta'n chooid smoo dy scollagyn ynsit ayns scoillyn y steat, as coreir beg jeu reih scoillyn er bun ablid acadoil. Faagail magh dy row parail ayns earrooyn ny scollagyn as ad goll gys scoillyn preevaadjagh, ta coreir scollagyn ayns Sostyn ayns ny scoillyn shen ny yei er heet ny smoo na 7%.<ref>{{cite web |url=http://www.guardian.co.uk/education/2007/nov/09/schools.uk |title=Private school pupil numbers in decline] |publisher=Guardian |date=2007-11-09}}</ref> Va beggan ny smoo na lieh-chooid dy scollagyn ny h-ollooscoillyn [[Ollooscoill Chambridge|Chambridge]] as [[Ollooscoill Aah yn Ollee|Aah yn Ollee]] nyn eear-scollagyn scoillyn y steat.<ref>{{cite web |url=http://news.bbc.co.uk/1/hi/education/6905288.stm |title=More state pupils in universities |publisher=BBC News |date=2007-07-19}}</ref> Ta shiartanse dy ny h-ollooscoillyn share er y theihll ayns Sostyn; ta [[Ollooscoill Chambridge]], [[Ollooscoill Aah yn Ollee]], as [[Ollooscoill Lunnin]] rang-oardit mastey ny 20 ollooscoilyn share ayns [[THES - QS World University Rankings|''THES – QS World University Rankings'']] ny bleeaney 2007.<ref>{{cite web|url=http://www.timeshighereducation.co.uk/hybrid.asp?typeCode=144|title=The top 200 world universities|publisher=Times Higher Education|date=2007-11-09|accessdate=2008-02-19}}</ref> Ansherbee, rere parail ayns earrooyn ny scollagyn ta gynsaghey çhengaghyn joarree, ta aggle ayn dy beagh eiyrtys jiooldagh er dellal, as nish ta yllee ayn tosheeaght ny smoo dy chur er çhengaghyn.<ref>{{cite web|url=http://news.bbc.co.uk/2/hi/uk_news/education/4442223.stm |title=Fear over poor UK language skills |publisher=BBC|accessdate=2008-10-17}} Jeeagh er neesht: {{cite web|url=http://news.bbc.co.uk/2/hi/uk_news/education/6960432.stm |title=Row over fall in language studies |publisher=BBC|accessdate=2008-10-17}}</ref>
Ta [[Screeudeyr Arrey ry hoi Ynsagh as Ynsaght Seihill]] freggyrtagh son [[ynsagh ayns Nalbin]], agh ta Lught-reill Ynnydagh freggyrtagh ry hoi stiurey laa dy laa as argid. Ta paartyn ogheragh ayns ynsagh ny h-Albey ec colughtyn theayagh neu-rheynnagh: ta [[Lught-reill Qualleeaghtyn ny h-Albey]] freggyrtagh er son lhiasaghey, credjoonaght, scrutaght as teishtys qualleeaghtyn faagail magh keimyn as ad seyrit ayns mean-scoillyn, colaashtaghyn ynsee sodjey [[Ynsagh trassagh|eear-vean-scoillaragh]] as ynnydyn elley;<ref>[http://www.sqa.org.uk/sqa/5656.html Mysh SQA] sqa.org.uk, feddynit magh er 7 Jerrey Fouyir, 2008</ref> as ta [[Learning and Teaching Scotland]] kiarail coyrle, cooid as lhiasaghey fwirran da'n lught ynsee dy cur lhiasaghey coorse er oaie as dy chroo cultoor noaid, gloyrvian as erbaghtallys.<ref>[https://web.archive.org/web/20120401140609/http://www.ltscotland.org.uk/aboutlts/index.asp Mysh Learning and Teaching Scotland] ltscotland.org.uk, feddynit magh er 7 Jerrey Fouyir, 2008</ref> Va ynsagh anneydagh currit ayns leigh ayns Nalbin 'sy vlein 1496.<ref>[https://web.archive.org/web/20071204064525/http://www.scotland.org/about/innovation-and-creativity/features/education/e_brain_drain.html Brain drain in reverse] scotland.org, feddynit magh er 7 Jerrey Fouyir, 2008</ref> Ta beggan ny smoo na 4% dy scollagyn ny h-Albey, agh ta'n earroo shen gaase ayns ny bleeantyn jerrinagh.<ref>{{cite web |url=http://news.bbc.co.uk/1/hi/scotland/6563167.stm |title=Increase in private school intake |publisher=BBC News |date=2007-04-17}}</ref>
Ta [[Arrey Ynsee (Nerin Hwoaie)|Arrey Ynsee]], [[Caitríona Ruane]] ([[Sinn Féin]]) ec y traa t'ayn, freggyrtagh son [[ynsagh ayns NerinHwoaie]],<ref name="northernireland1"/> agh er y leval ynnydagh t'eh fo stiurey queig Boayrdyn Ynsee as Lioarlannyn. Ta'n [[Cooinseil ry hoi Coorse, Scrutaght as Meihaghey]] freggyrtagh er son coyrle er coorse ny scoillyn ayns Nerin Hwoaie, stundayrtyn scrialtee as cur magh qualleeaghtyn.<ref>[http://www.ccea.org.uk/ About Us - What we do] ccea.org.uk, feddynit magh er 7 Jerrey Fouyir, 2008</ref>
T'eh lesh [[Çhionnal Ashoonagh Vretin]] freggyrtys [[ynsagh ayns Bretyn|ynsee ayns Bretyn]]. Ta mooarane dy scollagyn ynsit dy bollagh ny son y chooid smoo ayns [[Bretnish]];ta lessoonyn ayns Bretnish anneydagh da scollagyn ny s'aa na 16 bleeaney d'eash. Ta planyn ayn bishaghey kiarail scoillyn Bretnish dy chur ayn as y plan shen ny choid jeh'n pholasee Bretin ghaa-hengagh y chroo.
Rere [[Claare ry hoi Scrutaght Eddyr-ashoonagh ny Scollagyn]] ta'n RU 'sy 14oo ynnyd ayns oaylleeaght, as eh ny s'yrjey na mean yn RCTL.<ref>{{cite web|url=http://www.oecd.org/dataoecd/42/8/39700724.pdf|title=Range of rank on the PISA 2006 science scale}}</ref>
== Arraghey ==
{{ardart|Arraghey 'sy Reeriaght Unnaneysit}}
[[Coadan:London Heathrow T5 AB1.JPG|thumb|[[Purt Aeragh Lunnin-Heathrow#Terminal 5|Heathrow Terminal 5]]. Ta ny smoo troailtee aeragh eddyr-ashoonagh goll trooid [[Purt Aeragh Lunnin-Heathrow]] na trooid purt aeragh elley erbee er feie ny cruinney.<ref name="bbc1">{{cite web|url=http://news.bbc.co.uk/1/hi/business/7472432.stm|title=Heathrow 'needs a third runway' |publisher=BBC|accessdate=2008-10-17}}</ref><ref name=airport>{{cite web|url=http://www.aci.aero/aci/aci/file/Press%20Releases/2008/TOP30_International%20Passengers_2007.pdf|title=Statistics: Top 30 World airports|format=PDF|publisher=Airports Council International|accessdate=2008-10-15}}</ref>]]
[[Coadan:Bb-forthrailbridge.jpg|thumb|Ta [[Droghad Raad Yiarn Foirthe]], Nalbin, ny cowrey jallooagh y [[Network Rail|voggyl raad yiarn]].]]
Ta'n [[Jantys Raaidyn Mooarey]] ny jantys obbree ry hoi raaidyn mooarey as bayryn gleashtanagh ayns Sostyn faagail magh y raad preevaadjagh [[M6 Keesh]].<ref>[https://web.archive.org/web/20130113225031/http://www.m6toll.co.uk/faqs/default.asp?mainmenuid=6 M6Toll Frequently asked questions] www.m6toll.co.uk, feddynit erash er 13 Jerrey Souree 2008</ref> Ta'n Rheynn Arraghey gra dy vel gloo traght nane jeh ny crampysyn traght smoo trome-chooishagh, as mannagh vel red erbee jeant ayn, bee eh costal Sostyn £22 villioon brash rere traa juaillit.<ref>{{cite web|title = Tackling congestion on our roads|url = http://www.dft.gov.uk/pgr/roads/introtoroads/roadcongestion/
|publisher = Department for Transport}}</ref> Rere [[Studeyrys Traght Eddington|tuarastyl y reiltys Eddington]] ny bleeaney 2006, bee yn tarmaynys jeeyllit liorish y ghloo traght, mannagh vel laue currit rish liorish priseil raaidyn as bishaghey yn voggyl arraghey.<ref>{{cite web|title = Delivering choice and reliability|url = http://www.dft.gov.uk/press/speechesstatements/speeches/congestion|publisher = Department for Transport|archiveurl = https://web.archive.org/web/20081122094312/http://www.dft.gov.uk/press/speechesstatements/speeches/congestion|archivedate = 2008-11-22|accessdate = 2008-11-29}}</ref><ref>
{{ cite web|title = The Eddington Transport Study|first= Rod |last= Eddington |date = Mee ny Nollick 2006 |url = http://www.dft.gov.uk/about/strategy/transportstrategy/eddingtonstudy/ |publisher = UK Treasury |archiveurl=http://archive.is/5bkpn|archivedate=2007-11-04}} </ref>
Ta [[Rheynn Treealys, Arraghey as Ynsaghey Beayn ny h-Albey]] freggyrtagh son moggyl arraghey ny h-Albey, as she [[Transport Scotland]] (Arraghey ny h-Albey) yn jantys ta freggyrtagh rish [[Screeudeyr Arrey Argidys as Bishaghey Yn-Ymmyrkey]] ry hoi raaidyn mooarey as moggylyn raaidyn yiarn ny h-Albey.<ref>[http://www.transportscotland.gov.uk/ Transport Scotland - Keeping Scotland moving] www.transportscotland.gov.uk, feddyniy erash er 1 Jerrey Souree 2008 </ref> Ta mygeayrt 340 stashoonyn traenagh ayns moggyl raad yiarn ny h-Albey as 3,000 kilomeadaryn raaidyn yiarn lesh ny smoo na 62 villioon troailtee er dagh blein.<ref>[http://www.transportscotland.gov.uk/rail Transport Scotland - Rail] www.transportscotland.gov.uk, feddynit erash er 10 Jerrey Souree 2008</ref>
Harrish yn RU, ta moggyl raaidyn lieh-chrantessenagh lesh 46,904 kilomeadaryn (29,145 mi) dy raaidyn mooarey as moggyl bayryn gleashtanagh ta 3,497 kilomeadaryn (2,173 mi) er lhiurid. Ta 213,750 kilomeadaryn (132,818 mi) dy raaidyn peamadit ayn foast. Ta'n [[Network Rail|moggyl raaidyn yiarn]], ta 16,116 km (10,072 mi) er lhiurid 'sy Vretyn Vooar as 303 km (189 mi) er lhiurid ayns Nerin Hwoaie, ymmyrkey ny smoo na 18,000 traenyn troailtee as 1,000 traenyn traghtee dagh laa. Ta moggylyn raaidyn yiarn baljagh mie lhiasit ayns Lunnin as ayns baljyn elley. Va ny smoo na 48,000 km (30,000 mi) dy raaidyn yiarn 'syn RU, agh eddyr ny bleeantyn 1955 as 1975, va'n chooid smoo jeh'n voggyl leodit, as y leodaghey shen lurg tuarastyl liorish yn 'er-choyrlee reiltys [[Richard Beeching]] ayns ny mean 1960yn (currit er enney myr [[Giarrey Beeching]]). Ta'n lught reill smooinaghtyn er raaidyn yiarn ard-vieauid dy hroggal roish ny bleeaney 2025.<ref>[http://news.bbc.co.uk/1/hi/uk/7467203.stm Major new rail lines considered] BBC News, 21 Mean Souree 2008 </ref>
Ta [[Purt Aeragh Lunnin-Heathrow]], ta soit 24 km (15 mi) eear veih'n phreeu-valley, ny purt aeragh smoo tarrooagh 'syn RU as ta ny smoo troailtee eddyr-ashoonagh aynjee na t'ayns purt aeragh elley erbee er feie ny cruinney.<ref name="bbc1"/><ref name=airport/>
== Spoyrt ==
{{ardart|Spoyrt 'sy Reeriaght Unnaneysit}}
Ghow [[spoyrt]]yn mooarey, goaill stiagh [[soccer]], [[ruggyr]], [[criggad]], [[tennys]] as [[golf]], toshiaght 'sy Reeriaght Unnaneysit. Rere co-earroo ny bleeaney 2006, she soccer y spoyrt smoo ennoil 'sy Reeriaght Unnaneysit.<ref>{{cite web|url=http://www.ipsospublicaffairs.co.uk/content/crowded-summer-of-sport.ashx|title=Crowded Summer Of Sport|publisher=Ipsos Mori|accessdate=2008-10-17|archivedate=2009-06-18|archiveurl=https://web.archive.org/web/20090618163751/http://www.ipsospublicaffairs.co.uk/content/crowded-summer-of-sport.ashx}}</ref>
Er yn ardan eddyr-ashoonagh, ta [[Bretin]], [[Nalbin]], [[Nerin Hwoaie]], as [[Sostyn]] cohirrey ayns ram sleih-ghammanyn, chammah as ayns [[Cloiaghyn y Cho-unnaneys]], as ayns co-hecks spoyrt ta'n ennym ny [[Ashoonyn Thie|h-Ashoonyn Thie]] currit orroo. Ta fwirranyn ashoonagh ayns [[bluckan bascaidagh]] as ayns ny [[Cloiaghyn Olympagh]] shassoo er son y Reeriaght Unnaneysit.
=== Bluckan coshey ===
{{ardart|Soccer 'sy Reeriaght Unnaneysit}}
[[Coadan:Wembley Stadium closeup.jpg|thumb|right|[[Staid Wembley]] noa ayns Lunnin. T'eh ny staid smoo deyr er feie ny cruinney.<ref name="Daily Mail - stadium ready">{{cite news | date=2007-03-09 | url=http://www.dailymail.co.uk/news/article-441182/Wembley-kick-Stadium-ready-England-play-game-fortnight.html | title=Wembley kick-off: Stadium is ready and England play first game in fortnight | work=[[Daily Mail]] | accessdate=2007-03-19}}</ref>]]
[[Coadan:Hampden Stadium.jpg|thumb|right|[[Pairk Hampden]], [[Glaschu]] - staid sockyr ashoonagh ny h-Albey.]]
Ta sheshaght sockyr, fwirran ashoonagh as corys leeg ec dagh çheer yn RU, agh ta clubyn ennagh cloie magh veih ny corysyn ashoonagh oc er oyryn shendeeagh as losteeagh, ansherbee.
Ta [[Fwirran ashoonagh sockyr Hostyn|Sostyn]], [[Fwirran ashoonagh sockyr ny h-Albey|Nalbin]], [[Fwirran ashoonagh sockyr Vretin|Bretin]] as [[Fwirran ashoonagh sockyr Nerin Hwoaie|Nerin Hwoaie]] cloie myr çheeraghyn ennagh ayns cohirraghyn eddyrashoonagh as, myr eiyrtys, cha nel fwirran sockyr er lheh ec yn RU. Ta treealtysyn ayn fwirran ashoonagh sockyr da'n RU dy chroo ayns Cloiaghyn Olympagh ny bleeaney 2012 agh ta sheshaghtyn ny h-Albey, Vretin as Nerin Hwoaie ny yei commeeys y yiooldey, as ad credjal dy vel y stayd oc er nyn maggyrt – baggyrt ta feeraghit liorish eaghtyrane FIFA, Sepp Blatter.<ref>{{cite news|url=http://news.bbc.co.uk/sport1/hi/olympics/football/7286011.stm|title=Blatter against British 2012 team|publisher=BBC News|date=2008-03-09|accessdate=2008-04-02}}</ref> Ta Sostyn ny fwirran ashoonagh smoo ladoosagh mastey ny çheeraghyn thie, lesh Cappan y Dowan ny bleeaney 1966 cosnit eck. Ta trughanys lajer ayns soccer eddyr Sostyn as Nalbin.
Ta corys leeg sockyr Hostyn goaill stiagh keeadyn dy leegyn eddyr-chianglt as ad jeant seose jeh thousaneyn dy rheynnyn. Ta [[Preeu-rheynn Hostyn|Preeu-rheynn Hostyn (''Premiership'')]] ec baare y leeg ny leeg smoo ard-ghooagh er feie ny cruinney<ref>[https://web.archive.org/web/20081205073341/http://www.watch-football.net/articles/premier_league.html Premier and Champions League history] watch-football.net, feddynit magh er 1 Jerrey Souree, 2008</ref> as t'eh feer ennoil 'syn [[Yn Aishey|Aishey]].<ref>{{cite news |url=http://news.bbc.co.uk/1/hi/business/3207829.stm |title=Chinese phone maker's fancy footwork |publisher=BBC News |date=2003-10-27 |accessdate=2006-08-09}}</ref> Sheese, ta'n [[The Football League|Leeg Sockyr (''The Football League'')]] jeant seose jeh tree rheynnyn as ta rheynn ashoonagh ec y [[Football Conference|''Football Conference'']] lesh daa leeg ardjynagh artagh. Ny yei shen ta'n structoor ny smoo ardjynagh. Ta clubyn mooarey ennoil lheid as [[Liverpool F.C.|Liverpool]], [[Manchester United F.C.|Manchester United]], [[Chelsea F.C.|Chelsea]], as [[Arsenal F.C.|Arsenal]]. Va clubyn Sostynagh feer ladoosagh ayns Cohirraghyn Oarpagh lheid as cosneyderyn y Chappan Oarpagh/Leeg Fenee UEFA: [[Liverpool F.C.|Liverpool]] (queig keayrtyn), [[Manchester United F.C.|Manchester United]] (tree keayrtyn), [[Nottingham Forest F.C.|Nottingham Forest]] (daa cheayrt) as [[Aston Villa F.C.|Aston Villa]]. Ta'n Cappan Oarpagh cosnit ec ny smoo clubyn Sostynagh na ec clubyn ass çheeraghyn elley (kiare fwirranyn cosoylagh rish tree ass yn Iddaal, y Ghermaan, as y Çheer Injil). Erskyn ooilley, ta Sostyn 'sy nah rhenk ayns rolley cosneyderyn cappanyn Oarpagh lesh 35 cohirraghyn cosnit oc (ta 36 ec clubyn ny h-Iddaal). Ta cohirrey yn Chappan Oarpagh çheet magh myr eiyrtys speeideilys club Sostynagh elley, [[Wolverhampton Wanderers F.C.|''Wolverhampton Wanderers'']] noi clubyn Oarpagh mooarey<ref>{{cite web|url=http://galeb.etf.bg.ac.yu/~mirad/archive.html|archiveurl=https://web.archive.org/web/20071001212711/http://galeb.etf.bg.ac.yu/~mirad/archive.html|archivedate=2007-10-01|title=The Beginning of Champions Cup|accessdate=2008-12-05}}</ref> ayns ny 1950yn. She [[Staid Wembley]], lesh soiagyn da 90,000 cronneyderyn, preeu staid spoyrtagh Hostyn.
Ta daa leeg ashoonagh ayns corys leeg sockyr ny h-Albey: [[Preeu-rheynn ny h-Albey]], yn ard rheynn, as [[Leeg Sockyr ny h-Albey]], lesh tree rheynnyn. Sheese jeu, ta tree leegyn ardjynagh ayn agh cha nel ad kianglt lesh ny leegyn ashoonagh: [[Leeg Sockyr ny Gaeltaght]], [[Leeg Sockyr ny h-Albey Hiar]] as [[Leeg Sockyr ny h-Albey Yiass]]. Ta un chlub Sostynagh, [[Berwick Rangers F.C.|Berwick Rangers]], cloie ayns y chorys Albinagh. Ta daa chlub mooarey ard-ghooagh ayns Nalbin as enney orroo er feie ny cruinney, [[Celtic F.C.|''Celtic'']] as [[Rangers F.C.|''Rangers'']]. Ta clubyn Albinagh lesh speeideilys ayns Cohirraghyn Oarpagh goaill stiagh lheid as ''Celtic'' (y Cappan Oarpagh ayns 1967), ''Rangers'' (Cappan Cosneyderyn Cappanyn UEFA ayns 1972) as [[Aberdeen F.C.|Aberdeen]] (Cappan Cosneyderyn Cappanyn UEFA ayns 1983 as Ard-chappan Oarpagh ayns 1983). Va Celtic ny chied chlub Goaldagh y Cappan Oarpagh y chosney.
Ta corys leeg sockyr Bretnagh goaill stiagh [[Preeu-rheynn Vretin]] as leegyn ardjynagh. Ta'n club Bretnagh [[The New Saints F.C.|The New Saints]] cloie nyn gloiaghyn er çheu Hostynagh y joarey ayns [[Oswestry]]. Ta ny clubyn Bretnagh [[Cardiff City F.C.]], [[Colwyn Bay F.C.]], [[Merthyr Tydfil F.C.]], [[Newport County A.F.C.]], [[Swansea City A.F.C.]] as [[Wrexham F.C.]] cloie 'sy chorys Sostynagh. She [[Staid y Villey Bleeaney]] ayns Cayr Deeth, lesh soiagyn da 76,250 cronneyderyn, preeu-staid spoyrtagh Vretin.
Ta corys leeg sockyr Nerin Hwoaie goaill stiagh [[Preeu-rheynn yn IFA]]. Ta un chlub ass Nerin Hwoaie, [[Derry City F.C.|Derry City]] cloie nyn gloiaghyn çheu mooie jeh'n RU ayns [[Leeg FAI Nerin|corys leeg sockyr Phobblaght Nerin]].
=== Spoyrtyn elley ===
[[Coadan:Wimbledon Grojean 2004 RJL.JPG|thumb|Ta ny [[The Championships, Wimbledon|Feniaghtysyn Wimbledon]], tournamint [[Grand Slam (tennys)|Grand Slam]], cloiet ayns [[Wimbledon, Lunnin]] ayns Mean Souree as Jerrey Souree]]
[[Coadan:Royal & Ancient Clubhouse.jpg|thumb|T'eh er credjal dy vel [[The Royal and Ancient Golf Club of St Andrews]] "Thie Golf" y dowan.]]
Ta [[Ruggyr yn Unnaneys]] reaghit er bun er lheh da [[Ruggyr yn Unnaneys ayns Sostyn|Sostyn]], [[Ruggyr yn Unnaneys ayns Nalbin|Nalbin]], [[Ruggyr yn Unnaneys ayns Bretin|Bretin]] as [[Ruggyr yn Unnaneys ayns Nerin|Nerin]] as ta corys leeg as fwirran eddyr-ashoonagh er lheh oc, agh dagh kiare bleeaney ta fwirran ny [[Leionyn Goaldagh as Yernagh]] cloie 'syn Austrail, 'sy Teelynn Noa ny 'syn Affrick Yiass, as ny cloiederyn reiht veih ny h-Ashoonyn Thie. Va Cappan Ruggyr Unnaneys y Dowan cosnit ec Sostyn ayns 2003, agh she yn treeoo ynnyd y boayl s'yrjey ec Bretin, as y kiaroo ynnyd ec Nalbin. Cha jagh Nerin gys ny kerrooghyn-yerrinagh rieau. Ta bun [[Ruggyr y Leeg]] ayns [[Sostyn Hwoaie]] as va fwirran singyl 'ny Bretyn Mooar' cloie ayns Cappan Ruggyr Leeg y Dowan derrey 2008, tra chloie Sostyn, Nalbin as Nerin myr fwirranyn er lheh.<ref>{{cite web|url=http://www.rlwc08.com/|title=Ynnyd-eggey Cappan Ruggyr Leeg y Dowan 2008}}</ref>
Va'n [[criggad]] currit er bun ayns Sostyn as she [[fwirran criggad Hostyn]], ta fo stiurey [[Boayrd Criggad Hostyn as Vretin]],<ref>[http://www.ecb.co.uk/ecb/about-ecb/ About ECB] www.ecb.co.uk, feddynit magh er 4 Luanistyn 2008 </ref> fwirran ashoonagh ynrican 'syn RU lesh stayd prowallagh. Ta ny h-olteynyn çheet magh ass ny fwirranyn coontae mooarey, as t'ad goaill stiagh criggadee Sostynagh as Bretnagh. Ta'n criggad anchasley rish Soccer as Ruggyr c'raad dy vel fwirranyn ashoonagh er lheh cloie. Chloie criggadee [[Spoyrt ayns Nerin|Yernagh]] as [[Criggad ayns Nalbin|Albinagh]] lesh fwirran Hostyn er y fa nagh vel stayd prowallagh ec [[Fwirran ashoonagh criggad ny h-Albey|Nalbin]] ny ec [[Fwirran criggad Nerin|Nerin]]. Er y gherrid, hoshee ad cloie ayns Cloiaghyn Eddyr-ashoonagh Un-laa. Chloie Nalbin, Sostyn (goaill stiagh Bretin), as Nerin (goaill stiagh Nerin Hwoaie) ayns [[Cappan Criggad y Dowan]], as raink Sostyn tree keayrtyn gys y kione-chloie. Ta feniaghtys leeg gerrymoil ayn c'raad dy vel clubyn ass 17 coondaeghyn Sostynagh as 1 choontae Bretnagh cohirrey.
Ta [[snooker]] nane jeh assphurtanyn ny Bretyn Mooar. Ta feniaghtysyn y dowan cloiet dagh blein ayns [[Sheffield]]. Ta'n spoyrt bishaghey er feie ny cruinney, lesh bishaghey mooar 'sy Çheen.
Va [[tennys]] currit er bun ayns [[Birmingham]] eddyr ny bleeantyn 1859 as 1865. Ta [[The Championships, Wimbledon]] ny taghyrtyn tennys ayns [[Wimbledon, Lunnin|Wimbledon]] ayns jiass [[Lunnin]] dagh sourey as t'eh er credjal dy vel ad nyn daghyrt smoo ooashley ayns lioar imbee tennys ny cruinney.
Ta'n ratçhal cabbil fuilloilagh, lesh y bun echey fo [[Çhalse II Hostyn]] myr "spoyrt ny reeaghyn", feer ennymoil harrish yn RU lesh ratçhalyn mooarey lheid as y [[Grand National]], yn [[Epsom Derby]] as [[Coorse Ratçhal Ascot#Royal Ascot|Royal Ascot]]. T'eh er credjal dy vel [[Newmarket, Suffolk|Newmarket]] ny chree ratçhal Hostyn, er bun [[Coorse Ratçhal Newmarket]].
Ta golf ny sheyoo spoyrt smoo ennoil, rere commeeys, 'syn RU as ta [[The Royal and Ancient Golf Club of St Andrews]], ayns Nalbin, coorse thie yn spoyrt.<ref>{{cite web|url=http://www.ipsospublicaffairs.co.uk/_assets/newsletters/tracking-the-field.pdf|title=Tracking the Field|format=PDF|publisher=Ipsos MORI|accessdate=2008-10-17|archivedate=2009-02-05|archiveurl=https://web.archive.org/web/20090205004856/http://www.ipsospublicaffairs.co.uk/_assets/newsletters/tracking-the-field.pdf}}</ref>
Ta'n [[cammag Albinagh]] (ny ''camanachd'') feer ennoil ayns [[Gaeltaght ny h-Albey]], as ta thousaneyn dy chronneyderyn ec ram cloiaghyn, chammah as ec kione-chloie yn phreeu-hournamint, y [[Cappan Camanachd]].<ref>[https://web.archive.org/web/20171010105806/http://www.scottishsport.co.uk/othersports/shinty.htm Shinty] scottishsport.co.uk, feddynit magh er 2 Jerrey Fouyir, 2008</ref>
Ayns Nerin Hwoaie, ta'n [[bluckaneyrys Gaelgagh]] as yn [[immanaght]] nyn sleih-ghammanyn ennoil, rere commeeys as cronneyderyn.
== Cultoor ==
{{Ardart|Cultoor y Reeriaght Unnaneysit}}
Ta cultoor y Reeriaght Unnaneysit – y cultoor Goaldagh – çheet magh ass [[shennaghys y Reeriaght Unnaneysit]] myr çheer ellanagh lhiasit, reeriaght, cummaght impiroil as, son y chooid smoo, myr unnaneys politickagh jeh kiare çheeraghyn, lesh eiraght er lheh, oashyn as cosoyley. Myr eiyrtys ny [[yn Impiraght Ghoaldagh|h-Impiraght Goaldagh]], ta cleayney Goaldagh ry-akin ayns çhengey, cultoor as corysyn leighoil ny shenn-choloinyn lheid as [[Yn Chanadey|y Chanadey]], [[yn Austrail]], [[yn Injey]] as [[ny Steatyn Unnaneysit]].
=== Scannaneaght ===
{{Ardart|Scannaneaght y Reeriaght Unnaneysit}}
Va'n Reeriaght Unnaneysit cummaghtagh ayns lhiasaghey ny scannaneaght, lesh [[Ealing Studios]] gaggyrt dy vel ad nyn seyrlanyn shinney er y theihll. Faagail magh dy vel shennaghys fillmyn scanshoil as ladoosagh 'syn RU, ta'n çhynskyl cowrit lesh resoonaght veayn er yn enney echey, as cleayney ny scannaneaght Americaanagh as Oarpagh.
=== Lettyraght ===
{{ardart|Lettyraght Ghoaldagh}}
[[Coadan:Shakespeare.jpg|thumb|upright|Y [[cochaslys Chandos]], as eh er credjal dy vel eh soilshaghey magh [[William Shakespeare]].]]
[[Coadan:Robert burns.jpg|thumb|upright|[[Robert Burns]] - ammyssit myr [[bard ashoonagh]] ny [[Nalbin|h-Albey]]]]
Ta "lettyraght Ghoaldagh" cur sheese da'n lettyraght ta kianglt lesh y Reeriaght Unnaneysit, [[Mannin]] as Ellanyn Vooir Eeaght, chammah as da'n lettyraght t'er heet magh ass Sostyn, Bretin as Nalbin roish crooaght y Reeriaght Unnaneysit. Ta'n chooid smoo jeh'n lettyraght Ghoaldagh ayns [[Baarle]].
Tan bard as y screeudeyr cloie Sostynagh [[William Shakespeare]] ammyssit myr y dramadeyr share 'sy çhennaghys.<ref>{{cite web |url=http://www.britannica.com/EBchecked/topic/537853/William-Shakespeare |title=Encyclopedia Britannica article on Shakespeare |accessdate=2006-02-26}}</ref><ref>{{cite web |url=http://encarta.msn.com/encyclopedia_761562101/Shakespeare.html |title=MSN Encarta Encyclopedia article on Shakespeare |accessdate=2006-02-26 |archivedate=2006-02-09 |archiveurl=https://web.archive.org/web/20060209154055/http://encarta.msn.com/encyclopedia_761562101/Shakespeare.html }}</ref><ref>{{cite web |url=http://encyclopedia2.thefreedictionary.com/Shakespeare%2c+William |title=Columbia Electronic Encyclopedia article on Shakespeare |accessdate=2006-02-26}}</ref> Ta [[Geoffrey ass Monmouth]] (12-oo eash), [[Geoffrey Chaucer]] (14-oo eash), as [[Thomas Malory]] (15-oo eash) mastey ny screeudeyryn Sostynagh s'lheah. 'Sy 18-oo eash, va [[Samuel Richardson]] treishtit lesh crooaght y noaskeeal noa-emshiragh. 'Sy 19-oo eash, haghyr noaidyn ny smoo liorish [[Jane Austin]], ny [[Brontë|shuyryn Brontë]], yn troddanagh sheshoil [[Charles Dickens]], y [[najooraghys (lettyrght)|najooree]] [[Thomas Hardy]], y bard ashlinagh [[William Blake]] as y bard romansagh [[William Wordsworth]]. Ta screeudeyryn y 20-oo eash goaill stiagh lheid as screeudeyr far-skeealyn skeeandagh [[H. G. Wells]], [[D. H. Lawrence]] arganagh, y [[noa-emshiraght|noa-emshiragh]] [[Virginia Woolf]], y noa-skeealagh faaishnagh [[George Orwell]] as y bard [[John Betjeman]]. Er y gherrid ta screeudeyr lioaryn ny far-skeealyn sheiltynys paitçhyn [[Harry Potter]] liorish [[J. K. Rowling]] aachooinaghtyn er ennoilid [[J. R. R. Tolkien]].
Ta [[lettyraght ny h-Albey|cohortys ny h-Albey]] goaill stiagh y screeudeyr cronneydagh [[Arthur Conan Doyle]], lettyraght romansagh liorish y Reejerey [[Walter Scott]] as contoyrtysyn [[Robert Louis Stevenson]]. Ta'n bard ennoil [[Robert Burns]], chammah as [[William McGonagall]] ass Nalbin myrgeddin. Er y gherrid, hug ny noa-emshiree as yn h-ashooneyderyn [[Hugh MacDiarmid]] as [[Neil M. Gunn]] mooarane da [[Aavioghey ny h-Albey]]. Ta reayrt groamagh ry-gheddyn ayns skeealyn [[Ian Rankin]] as 'sy chloie shicklaagagh aitt-grayn liorish [[Iain Banks]]. Ta preeu-valley ny h-Albey, Doon Edin, enmyssit myr kied ard-valley ny lettyraght liorish UNESCO.<ref>[http://portal.unesco.org/culture/en/ev.php-URL_ID=27852&URL_DO=DO_TOPIC&URL_SECTION=201.html Edinburgh, UK appointed first UNESCO City of Literature] unesco.org, feddynit magh er 20 Luanistyn 2008</ref>
'Sy vean-eash lheah, screeu screeudeyryn Bretnagh y [[Mabinogi]]. 'Syn eash noa-emshiragh, hug ny bardyn [[R. S. Thomas]] as [[Dylan Thomas]] cultoor Vretin gys y lught eaishtagh eddyr-ashoonagh.
Va cummal er screeudeyryn ass çheeraghyn elley, ass Nerin dy mynchooishagh, ny ass çheeraghyn y Cho-unnaneys, 'syn RU. Ta sampleyryn ennoil jeu goaill stiagh lheid as [[Jonathan Swift]], [[Oscar Wilde]], [[Bram Stoker]], [[George Bernard Shaw]], [[Joseph Conrad]], [[T. S. Eliot]] as [[Ezra Pound]], as er y gherrid ughtaryn Goaldagh va ruggit ass y çheer lheid as [[Kazuo Ishiguro]] as y Reejerey [[Salman Rushdie]].
Ayns theater, hug co-emshiree Shakespeare [[Christopher Marlowe]] as [[Ben Jonson]] ny smoo da. Er y gherrid ren [[Alan Ayckbourn]], [[Harold Pinter]], [[Michael Frayn]], [[Tom Stoppard]] as [[David Edgar (screeudeyr cloie)|David Edgar]] cochiangle ass elmintyn sur-rieughid, rieughid as fraueoilaght.
=== Kiaull ===
[[Coadan:The Fabs.JPG|thumb|Ta [[The Beatles]] nane jeh ny bannyn smoo scanshoil as ennoil er feie ny cruinney, lesh ny smoo na billioon recortyssyn er ny creck eu.<ref name="uktvrecording">{{cite web |first= |last= |url=http://uktv.co.uk/history/gallery/aid/601378/multipageid/5823 |title=In This Month: June |publisher=uktv |accessdate=2008-08-15}}</ref>]]
Ta aghtyn eigsoylagh kiaull ennoil 'sy Reeriaght Unnaneysit, [[kiaull çheerey Hostynagh|kiaull çheerey Hostyn]], Nerin Hwoaie, Vretyn as ny h-Albey, as kiaull veain hrome ny mast'oc. Va cohortys [[Glaschu]] ayns kiaull currit er enney 'sy vlein nar v'eh enmyssit myr Ard-valley Kiaull jeh cooid ny h-Ashoonyn Unnaneysit, as eh nane jeh tree ard-valjyn ynrican er feie ny cruinney lesh yn aundyr shen.<ref>[http://news.bbc.co.uk/1/hi/scotland/glasgow_and_west/7570915.stm Glasgow gets city of music honour] bbc.co.uk, feddynit magh er 20 Luanistyn 2008 </ref>
Va [[The Beatles]], [[Pink Floyd]], [[Eric Clapton]], [[The Rolling Stones]], [[Status Quo]],<ref>[https://web.archive.org/web/20091226090132/http://www.statusquo.co.uk/factsheet.htm Quo Facts] statusquo.co.uk, feddynit magh er 14 Jerrey Fouyir 2008</ref> [[Slade]],<ref>[http://news.bbc.co.uk/1/hi/england/2245820.stm Honorary award for glam rockers] BBC News, 9 Mean Fouyir, 2002 </ref> [[Led Zeppelin]], [[The Who]], [[Queen (bann)|Queen]], as [[Black Sabbath]] mastey ny cohoyrtee ayns ny 1960yn as ny 1970yn ayns lhiasaghey ny [[craa-chiaull]]. Haink kiaull veain hrome, [[craa-chiaul chraaee]], [[craa-chiaull sponk]] as [[kiaull honn noa]] ny yei myr eiyrtys. Ayns ny 1980yn leah, haink rah er bannyn kiaull Romansagh Noa Goaldagh lheid as [[Duran Duran]], [[Depeche Mode]], [[Spandau Ballet]], [[Soft Cell]] as [[Ultravox]]. Ayns ny 1990yn, va rah eddyr-ashoonagh fowit ec bannyn [[Britpop]] as kiaull [[electronica]]. Ta kiaulleyderyn Goaldagh jeianagh ayns pop-chiaull goaill stiagh [[The Smiths]], [[Oasis (bann)|Oasis]], [[Amy Winehouse]], [[Leona Lewis]], [[Coldplay]], as ny [[Spice Girls]].
Ta cummeyderyn kiaull chlassicagh ennoil ass y Reeriaght Unnaneysit as ny çheeraghyn v'ayn roish goaill stiagh [[William Byrd]], [[Henry Purcell]], y Reejerey [[Edward Elgar]], [[Gustav Holst]], y Reejerey [[Arthur Sullivan]] (kiaulleyder ard-ghooagh er son yn obbyr echey lesh y screeuder levreag, y Reejerey [[W. S. Gilbert]]) [[Ralph Vaughan Williams]], as [[Benjamin Britten]], kioneraadagh y chiaulldramey Goaldagh noa-emshiragh.
=== Fallsoonys ===
Ta enney share er y Reeriaght Unnaneysit er son y tradishoon "Treealaght Ghoaldagh", banglane jeh fallsoonys fys ta gra nagh vel fys gyn taghyrt breeoil. T'ad ny fallsoonee smoo scanshoil jeh'n tradishoon shen na [[John Locke]], [[George Berkeley]] as [[David Hume]]. Ta enney share er y Vretyn Vooar er son çhoarym fallsoonys moralagh, Vondeishaghys, as eh ymmydit da'n chied cheayrt liorish [[Jeremy Bentham]] as, ny s'anmey, liorish [[John Stuart Mill]] 'syn obbyr giare echey ''[[Utilitarianism]]''. Ta fallsoonee ard-ennymagh elley ass y Reeriaght Unnaneysit goaill stiagh [[Duns Scotus]], [[William ass Ockham]], [[Thomas Hobbes]], [[Bertrand Russell]], [[Adam Smith]] as [[Alfred Ayer]]. Ta fallsoonee quaagh as cummal orroo 'syn RU goaill stiagh [[Isaiah Berlin]], [[Karl Marx]], [[Karl Popper]], as [[Ludwig Wittgenstein]].
=== Oaylleeaght, jeshaghteyrys as noaid ===
[[Coadan:GodfreyKneller-IsaacNewton-1689.jpg|thumb|right|upright|Y Reejerey [[Isaac Newton]]]]
[[Coadan:Charles Darwin aged 51.jpg|thumb|right|upright|[[Charles Darwin]]]]
Rug ram oaylleeyn as jeshaghteyryn as obbyr scanshoil jeant oc 'sy Reeriaght Unnaneysit. T'ad goaill stiagh lheid as.
* Y [[fishigagh]], [[maddaghteyr]], [[Rollageydys|rollageyder]], [[Fallsoonys najooragh|fallsoonagh najooragh]], [[Far-chemmig|far-chemmicagh]] as [[Jeeaghtys|jeeaghteyr]], y Reejerey [[Isaac Newton]].
* Co-unnaneyssey [[magnaidys lectragh]], liorish [[James Clerk Maxwell]].
* Feddyn magh [[hiddragien]], liorish [[Henry Cavendish]].
* Y [[gaal-ghleashagh]], liorish [[Richard Trevithick]] as [[Andrew Vivian]].
* Y chied chorys [[çhellveeish]], liorish [[John Logie Baird]].
* Aafilley rere [[reih najooragh]], liorish [[Charles Darwin]].
* Y [[jeshaght Turing]], liorish [[Alan Turing]], bun co-earrooderyn noa-emshiragh.
* Troggal [[GDN]], liorish [[Francis Crick]] as sleih elley.
* Lhiasaghey [[Moggyl ny Cruinney#Bunneydys|Moggyl ny Cruinney]], currit gys lieh [[Tim Berners-Lee]].
* Feddyn magh [[penisillin]], liorish y Reejerey [[Alexander Fleming]].
* Feddyn magh y chied [[çhellvane]], liorish [[Alexander Graham Bell]].
=== Ellyn reayrtagh ===
{{ardart|Ellyn y Reeriaght Unnaneysit}}
Ta'n [[Colaashtey Reeoil]] soit ayns Lunnin. Ta scoillyn mooarey ellyn elley goaill stiagh [[Slade School of Fine Art|''Slade School of Fine Art'']]; ny shey scoillyn ayns [[Ollooscoill yn Ellyn Lunnin]], as ad goaill stiagh [[Central Saint Martins College of Art and Design|''Central Saint Martins College of Art and Design'']] as [[Chelsea College of Art and Design]]; [[Scoill Ellyn Ghlaschu]], as [[Goldsmiths, Ollooscoill Lunnin]]. Ta'n ventyr traghtee shoh nane jeh sheshaghtyn toshee ny Bretyn Mooar ayns ellyn reayrtagh. Ta ellyneyryn Goaldagh goaill stiagh y Reejerey [[Joshua Reynolds]], [[Thomas Gainsborough]], [[John Constable]], [[William Blake]], [[J. M. W. Turner]], [[William Morris]], [[L. S. Lowry]], [[Francis Bacon]], [[Lucian Freud]], [[David Hockney]], [[Gilbert as George]], [[Richard Hamilton (ellyneyr)|Richard Hamilton]], [[Peter Blake (ellyneyr)|Peter Blake]], [[Howard Hodgkin]], [[Antony Gormley]], as [[Anish Kapoor]]. Rish ny 1980yn as ny 1990yn, hug y [[Saatchi Gallery]] ayns Lunnin possan ellyneyryn yl-cheirdagh gys arrey yn phobble as yn ennym [[Ellyneyryn Aegey Goaldagh]] currit orroo. Tan possan shoh goaill stiagh lheid as [[Damien Hirst]], [[Chris Ofili]], [[Rachel Whiteread]], [[Tracey Emin]], [[Mark Wallinger]], [[Steve McQueen (ellyneyr)|Steve McQueen]], [[Sam Taylor-Wood]], as ny [[Jake as Dinos Chapman|Braaryn Chapman]].
== Noteyn ==
{{notelist}}
== Imraaghyn ==
{{reflist}}
== Kianglaghyn magh ==
; Reiltys
* [https://web.archive.org/web/20090213150954/http://www.royal.gov.uk/output/Page1.asp Ynnyd-eggey oikoil y Reeriaght Ghoaldagh] ('''en''')
* [http://www.direct.gov.uk/en/index.htm Ynnyd-eggey oikoil Reiltys y Reeriaght Unnaneysit] ('''en''')
* [https://web.archive.org/web/20100528055441/https://www.cia.gov/library/publications/world-leaders-1/world-leaders-u/united-kingdom.html Toshiagh y Steat as Olteynyn ny h-Airaghtyn] ('''en''')
* [http://webarchive.nationalarchives.gov.uk/20011119164232/http://www.statistics.gov.uk/StatBase/Product.asp?vlnk=5703 Staydraa Lioar Vleeaney Oikoil y Reeriaght Unnaneysit] ('''en''')
* [http://webarchive.nationalarchives.gov.uk/20080909013512/http://www.number10.gov.uk/Page823 "Countries within a country"] ass [http://www.number10.gov.uk/ Ynnyd-eggey oikoil yn Ard-vinishter Goaldagh] ('''en''')
; Oayllys cadjin
* [https://web.archive.org/web/20081010152137/http://dataranking.com/country.cgi?LG=e&CO=29 Oardaghey Fysserree Tarmaynagh as Sheshoil] ('''en''')
* [https://web.archive.org/web/20090406224510/http://ucblibraries.colorado.edu/govpubs/for/british.htm Reeriaght Unnaneysit] veih ''UCB Libraries GovPubs'' ('''en''')
; Troailt
* [http://www.visitbritain.com/ Stiurag Turryssagh Oikoil da'n Vretyn Vooar] ('''en''')
{{-}}
{{commons|Category:United Kingdom|Reeriaght Unnaneyssit}}
{{Yn Europey}}
{{Co-rheynnyn y Reeriaght Unnaneysit}}
{{RCAH}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Reeriaght Unnaneysit}}
[[Ronney:Yn Reeriaght Unnaneysit| ]]
[[Ronney:Ellanyn Goaldagh]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn y G20]]
[[Ronney:Çheeraghyn ellanagh]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant yn Atlantagh Hwoaie]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey yn RCTL]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1801]]
asbl7rtb5vvc5xee1pttmhs9g9j4diy
Ard-valley yn Phaab
0
1902
393410
383567
2026-09-19T18:45:11Z
MacTire02
219
++
393410
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Steat Ard-valley yn Phaab
|ennym_foddey_cadjincliaghtagh= {{nobold|Stato della Città del Vaticano {{small|([[Iddaalish]])}}<br/>Status Civitatis Vaticanae {{small|([[Ladjyn]])}}}}
|ennym_gienneydagh = Ard-valley yn Phaab
|jalloo_brattagh = Flag of the Vatican City - 2001 version.svg
|jalloo_cleinney = Coat of arms of the Vatican City.svg
|jalloo_caslys = Vatican_Europe_Location.svg
|jarroo-raa = none
|arrane_ashoonagh = [[Anthym Paabagh|Inno e Marcia Pontificale]]
|çhengey_arrane_ashoonagh = Iddaalish
|çhyndaa_arrane-ashoonagh = Anthym as Marçh y Phaab
|coadan = United States Navy Band - Inno e Marcia Pontificale.ogg
|çhengaghyn_oikoil = [[Iddaalish]]<ref>{{cite news |url=https://www.reuters.com/article/us-pope-latin/pope-ditches-latin-as-official-language-of-vatican-synod-idUSKCN0HV1O220141006 |title=Pope ditches Latin as official language of Vatican synod |work=Reuters |author=(Fwirran Reuters) |date=6 Jerrey Fouyir 2014 |access-date=23 Boaldyn 2023 |archive-date=4 Averil 2023 |archive-url=https://web.archive.org/web/20230404073852/https://www.reuters.com/article/us-pope-latin/pope-ditches-latin-as-official-language-of-vatican-synod-idUSKCN0HV1O220141006 |url-status=live }}</ref><ref>{{cite web |title=What language is spoken at the Vatican? |website=Visiting The Vatican |date=13 Averil 2023 |url=https://visitingthevatican.com/what-language-is-spoken-at-the-vatican/ |access-date=5 Mee Houney 2023 |archive-date=5 Mee Houney 2023 |archive-url=https://web.archive.org/web/20231105022349/https://visitingthevatican.com/what-language-is-spoken-at-the-vatican/ |url-status=live }}</ref>
|sorçh_reiltys = [[Monarkaght reihagh|Monarkaght ard-chummaghtagh reihagh]] Chatoleagh [[Jeelaghys|yeelagh]]<ref>{{cite web |url=https://www.vaticanstate.va/EN/State_and_Government/StateDepartments/index.htm |title=Internet Portal of Vatican City State |publisher=Steat Ard-valley yn Phaab |access-date=9 Jerrey Souree 2011 |url-status=dead |archive-url=https://web.archive.org/web/20110524030947/https://www.vaticanstate.va/EN/State_and_Government/StateDepartments/index.htm |archive-date=24 Boaldyn 2011}}</ref><ref>Robbers, Gerhard (2006) [https://books.google.com/books?id=M3A-xgf1yM4C&pg=PA1009 ''Encyclopedia of World Constitutions''] {{Webarchive|url=https://web.archive.org/web/20160429130728/https://books.google.com/books?id=M3A-xgf1yM4C&pg=PA1009 |date=29 Averil 2016 }}. Infobase Publishing. {{ISBN|978-0-81606078-8}}. dg. 1009</ref><ref>Nick Megoran (2009) [https://www.staff.ncl.ac.uk/nick.megoran/pdf/theocracy.pdf "Theocracy"] {{Webarchive|url=https://web.archive.org/web/20200804152755/https://www.staff.ncl.ac.uk/nick.megoran/pdf/theocracy.pdf |date=4 Luanistyn 2020 }}, dg. 226 ayns ''International Encyclopedia of Human Geography'', yml. 11, Elsevier {{ISBN|978-0-08-044911-1}}</ref>
|enmys1_fer-toshee = [[Kionedeeaght|Unnid kionedeeagh]]
|ennym1_fer-toshee = [[Yn Toiag Chasherick]]
|enmys2_fer-toshee = [[Paab]]
|ennym2_fer-toshee = [[Paab Leon XIV]]
|enmys3_fer-toshee = [[Eaghtyrane y Chommishoon Paabagh cour Steat Ard-valley yn Phaab|Eaghtyrane y Chiannoortys]]
|ennym3_fer-toshee = [[Raffaella Petrini]]
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih [[Reeriaght yn Iddaal]]
|taghyrt1_bunnit = [[Conaant Lateran]]
|date1_bunnit = 11 Toshiaght Arree 1929
|noteyn_argid = Roish 1999 va'n [[lira Vaticanagh]] as y [[lira Iddaalagh]] ymmydit.
|coad_argid = EUR
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Meanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Meanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|cctld = [[.va]]
|coad_çhellvane = 379
}}
Ta '''Ard-valley yn Phaab''' ny '''Ard-valley yn Vatican''' ({{lang-it|Stato della Città del Vaticano}}) ny steat baljagh thallooinit çheu sthie jeh'n [[Yn Raue|Raue]]. T'eh ny steat sloo er y chruinney rere earroo yn phobble (mysh 800 cummaltee) as rere eaghtyr (0.44 km²).
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
==Kianglaghyn magh==
{{commonscat|Vatican City|Ard-valley yn Phaab}}
* {{Official website|https://www.vaticanstate.va/en/}}
* {{official website|https://www.vatican.va/content/vatican/en.html}} y Toiag Chasherick
* {{Osmrelation-inline|36989|bullet=no}}
{{Yn Europey}}
{{Preeu-valjyn ny h-Oarpey}}
{{Gurneil eaghtyrys}}
{{Coord|41|54|09|N|12|27|09|E|type:city|display=title}}
{{bun}}
[[Ronney:Ard-valley yn Phaab| ]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1929]]
[[Ronney:Bunneeaghtyn ayns Ard-valley yn Phaab 'sy vlein 1929| ]]
[[Ronney:Laaraghyn Eiraght Dowanagh 'syn Oarpey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Steatyn Creestee]]
[[Ronney:Laaraghyn pirgrinys Catoleagh]]
[[Ronney:Baljyn casherick]]
[[Ronney:Shellooghyssyn y Toiag Chasherick]]
[[Ronney:Monarkaghtyn yn Oarpey]]
[[Ronney:Yn Agglish Chatoleagh 'syn Oarpey]]
[[Ronney:Yn Agglish Chatoleagh 'syn Iddaal]]
[[Ronney:Steatyn ard-valjagh]]
[[Ronney:Çheeraghyn croait]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Cryssyn seyr veih keesh yn Oarpey]]
[[Ronney:Croayn sthie as mooie]]
[[Ronney:Craueeaght as politickaght]]
[[Ronney:Jeelaghtyn]]
[[Ronney:Yn Raue| ]]
[[Ronney:Preeu-valjyn 'syn Oarpey]]
[[Ronney:Meegrasteatyn yn Oarpey]]
9zuuk0nh0dmiqkvkbhfe256t8dpklxs
393411
393410
2026-09-19T18:45:39Z
MacTire02
219
+coadan
393411
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Steat Ard-valley yn Phaab
|ennym_foddey_cadjincliaghtagh= {{nobold|Stato della Città del Vaticano {{small|([[Iddaalish]])}}<br/>Status Civitatis Vaticanae {{small|([[Ladjyn]])}}}}
|ennym_gienneydagh = Ard-valley yn Phaab
|jalloo_brattagh = Flag of the Vatican City - 2001 version.svg
|jalloo_cleinney = Coat of arms of the Vatican City.svg
|jalloo_caslys = Vatican_Europe_Location.svg
|jarroo-raa = none
|arrane_ashoonagh = [[Anthym Paabagh|Inno e Marcia Pontificale]]
|çhengey_arrane_ashoonagh = Iddaalish
|çhyndaa_arrane-ashoonagh = Anthym as Marçh y Phaab
|coadan_arrane_ashoonagh = United States Navy Band - Inno e Marcia Pontificale.ogg
|çhengaghyn_oikoil = [[Iddaalish]]<ref>{{cite news |url=https://www.reuters.com/article/us-pope-latin/pope-ditches-latin-as-official-language-of-vatican-synod-idUSKCN0HV1O220141006 |title=Pope ditches Latin as official language of Vatican synod |work=Reuters |author=(Fwirran Reuters) |date=6 Jerrey Fouyir 2014 |access-date=23 Boaldyn 2023 |archive-date=4 Averil 2023 |archive-url=https://web.archive.org/web/20230404073852/https://www.reuters.com/article/us-pope-latin/pope-ditches-latin-as-official-language-of-vatican-synod-idUSKCN0HV1O220141006 |url-status=live }}</ref><ref>{{cite web |title=What language is spoken at the Vatican? |website=Visiting The Vatican |date=13 Averil 2023 |url=https://visitingthevatican.com/what-language-is-spoken-at-the-vatican/ |access-date=5 Mee Houney 2023 |archive-date=5 Mee Houney 2023 |archive-url=https://web.archive.org/web/20231105022349/https://visitingthevatican.com/what-language-is-spoken-at-the-vatican/ |url-status=live }}</ref>
|sorçh_reiltys = [[Monarkaght reihagh|Monarkaght ard-chummaghtagh reihagh]] Chatoleagh [[Jeelaghys|yeelagh]]<ref>{{cite web |url=https://www.vaticanstate.va/EN/State_and_Government/StateDepartments/index.htm |title=Internet Portal of Vatican City State |publisher=Steat Ard-valley yn Phaab |access-date=9 Jerrey Souree 2011 |url-status=dead |archive-url=https://web.archive.org/web/20110524030947/https://www.vaticanstate.va/EN/State_and_Government/StateDepartments/index.htm |archive-date=24 Boaldyn 2011}}</ref><ref>Robbers, Gerhard (2006) [https://books.google.com/books?id=M3A-xgf1yM4C&pg=PA1009 ''Encyclopedia of World Constitutions''] {{Webarchive|url=https://web.archive.org/web/20160429130728/https://books.google.com/books?id=M3A-xgf1yM4C&pg=PA1009 |date=29 Averil 2016 }}. Infobase Publishing. {{ISBN|978-0-81606078-8}}. dg. 1009</ref><ref>Nick Megoran (2009) [https://www.staff.ncl.ac.uk/nick.megoran/pdf/theocracy.pdf "Theocracy"] {{Webarchive|url=https://web.archive.org/web/20200804152755/https://www.staff.ncl.ac.uk/nick.megoran/pdf/theocracy.pdf |date=4 Luanistyn 2020 }}, dg. 226 ayns ''International Encyclopedia of Human Geography'', yml. 11, Elsevier {{ISBN|978-0-08-044911-1}}</ref>
|enmys1_fer-toshee = [[Kionedeeaght|Unnid kionedeeagh]]
|ennym1_fer-toshee = [[Yn Toiag Chasherick]]
|enmys2_fer-toshee = [[Paab]]
|ennym2_fer-toshee = [[Paab Leon XIV]]
|enmys3_fer-toshee = [[Eaghtyrane y Chommishoon Paabagh cour Steat Ard-valley yn Phaab|Eaghtyrane y Chiannoortys]]
|ennym3_fer-toshee = [[Raffaella Petrini]]
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih [[Reeriaght yn Iddaal]]
|taghyrt1_bunnit = [[Conaant Lateran]]
|date1_bunnit = 11 Toshiaght Arree 1929
|noteyn_argid = Roish 1999 va'n [[lira Vaticanagh]] as y [[lira Iddaalagh]] ymmydit.
|coad_argid = EUR
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Meanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Meanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|cctld = [[.va]]
|coad_çhellvane = 379
}}
Ta '''Ard-valley yn Phaab''' ny '''Ard-valley yn Vatican''' ({{lang-it|Stato della Città del Vaticano}}) ny steat baljagh thallooinit çheu sthie jeh'n [[Yn Raue|Raue]]. T'eh ny steat sloo er y chruinney rere earroo yn phobble (mysh 800 cummaltee) as rere eaghtyr (0.44 km²).
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
==Kianglaghyn magh==
{{commonscat|Vatican City|Ard-valley yn Phaab}}
* {{Official website|https://www.vaticanstate.va/en/}}
* {{official website|https://www.vatican.va/content/vatican/en.html}} y Toiag Chasherick
* {{Osmrelation-inline|36989|bullet=no}}
{{Yn Europey}}
{{Preeu-valjyn ny h-Oarpey}}
{{Gurneil eaghtyrys}}
{{Coord|41|54|09|N|12|27|09|E|type:city|display=title}}
{{bun}}
[[Ronney:Ard-valley yn Phaab| ]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1929]]
[[Ronney:Bunneeaghtyn ayns Ard-valley yn Phaab 'sy vlein 1929| ]]
[[Ronney:Laaraghyn Eiraght Dowanagh 'syn Oarpey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Steatyn Creestee]]
[[Ronney:Laaraghyn pirgrinys Catoleagh]]
[[Ronney:Baljyn casherick]]
[[Ronney:Shellooghyssyn y Toiag Chasherick]]
[[Ronney:Monarkaghtyn yn Oarpey]]
[[Ronney:Yn Agglish Chatoleagh 'syn Oarpey]]
[[Ronney:Yn Agglish Chatoleagh 'syn Iddaal]]
[[Ronney:Steatyn ard-valjagh]]
[[Ronney:Çheeraghyn croait]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Cryssyn seyr veih keesh yn Oarpey]]
[[Ronney:Croayn sthie as mooie]]
[[Ronney:Craueeaght as politickaght]]
[[Ronney:Jeelaghtyn]]
[[Ronney:Yn Raue| ]]
[[Ronney:Preeu-valjyn 'syn Oarpey]]
[[Ronney:Meegrasteatyn yn Oarpey]]
2zt9ej8x1b3kc90faln2vj6biz6vpq9
393412
393411
2026-09-19T18:45:55Z
MacTire02
219
chyndaa
393412
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Steat Ard-valley yn Phaab
|ennym_foddey_cadjincliaghtagh= {{nobold|Stato della Città del Vaticano {{small|([[Iddaalish]])}}<br/>Status Civitatis Vaticanae {{small|([[Ladjyn]])}}}}
|ennym_gienneydagh = Ard-valley yn Phaab
|jalloo_brattagh = Flag of the Vatican City - 2001 version.svg
|jalloo_cleinney = Coat of arms of the Vatican City.svg
|jalloo_caslys = Vatican_Europe_Location.svg
|jarroo-raa = none
|arrane_ashoonagh = [[Anthym Paabagh|Inno e Marcia Pontificale]]
|çhengey_arrane_ashoonagh = Iddaalish
|çhyndaa_arrane_ashoonagh = Anthym as Marçh y Phaab
|coadan_arrane_ashoonagh = United States Navy Band - Inno e Marcia Pontificale.ogg
|çhengaghyn_oikoil = [[Iddaalish]]<ref>{{cite news |url=https://www.reuters.com/article/us-pope-latin/pope-ditches-latin-as-official-language-of-vatican-synod-idUSKCN0HV1O220141006 |title=Pope ditches Latin as official language of Vatican synod |work=Reuters |author=(Fwirran Reuters) |date=6 Jerrey Fouyir 2014 |access-date=23 Boaldyn 2023 |archive-date=4 Averil 2023 |archive-url=https://web.archive.org/web/20230404073852/https://www.reuters.com/article/us-pope-latin/pope-ditches-latin-as-official-language-of-vatican-synod-idUSKCN0HV1O220141006 |url-status=live }}</ref><ref>{{cite web |title=What language is spoken at the Vatican? |website=Visiting The Vatican |date=13 Averil 2023 |url=https://visitingthevatican.com/what-language-is-spoken-at-the-vatican/ |access-date=5 Mee Houney 2023 |archive-date=5 Mee Houney 2023 |archive-url=https://web.archive.org/web/20231105022349/https://visitingthevatican.com/what-language-is-spoken-at-the-vatican/ |url-status=live }}</ref>
|sorçh_reiltys = [[Monarkaght reihagh|Monarkaght ard-chummaghtagh reihagh]] Chatoleagh [[Jeelaghys|yeelagh]]<ref>{{cite web |url=https://www.vaticanstate.va/EN/State_and_Government/StateDepartments/index.htm |title=Internet Portal of Vatican City State |publisher=Steat Ard-valley yn Phaab |access-date=9 Jerrey Souree 2011 |url-status=dead |archive-url=https://web.archive.org/web/20110524030947/https://www.vaticanstate.va/EN/State_and_Government/StateDepartments/index.htm |archive-date=24 Boaldyn 2011}}</ref><ref>Robbers, Gerhard (2006) [https://books.google.com/books?id=M3A-xgf1yM4C&pg=PA1009 ''Encyclopedia of World Constitutions''] {{Webarchive|url=https://web.archive.org/web/20160429130728/https://books.google.com/books?id=M3A-xgf1yM4C&pg=PA1009 |date=29 Averil 2016 }}. Infobase Publishing. {{ISBN|978-0-81606078-8}}. dg. 1009</ref><ref>Nick Megoran (2009) [https://www.staff.ncl.ac.uk/nick.megoran/pdf/theocracy.pdf "Theocracy"] {{Webarchive|url=https://web.archive.org/web/20200804152755/https://www.staff.ncl.ac.uk/nick.megoran/pdf/theocracy.pdf |date=4 Luanistyn 2020 }}, dg. 226 ayns ''International Encyclopedia of Human Geography'', yml. 11, Elsevier {{ISBN|978-0-08-044911-1}}</ref>
|enmys1_fer-toshee = [[Kionedeeaght|Unnid kionedeeagh]]
|ennym1_fer-toshee = [[Yn Toiag Chasherick]]
|enmys2_fer-toshee = [[Paab]]
|ennym2_fer-toshee = [[Paab Leon XIV]]
|enmys3_fer-toshee = [[Eaghtyrane y Chommishoon Paabagh cour Steat Ard-valley yn Phaab|Eaghtyrane y Chiannoortys]]
|ennym3_fer-toshee = [[Raffaella Petrini]]
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih [[Reeriaght yn Iddaal]]
|taghyrt1_bunnit = [[Conaant Lateran]]
|date1_bunnit = 11 Toshiaght Arree 1929
|noteyn_argid = Roish 1999 va'n [[lira Vaticanagh]] as y [[lira Iddaalagh]] ymmydit.
|coad_argid = EUR
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Meanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Meanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|cctld = [[.va]]
|coad_çhellvane = 379
}}
Ta '''Ard-valley yn Phaab''' ny '''Ard-valley yn Vatican''' ({{lang-it|Stato della Città del Vaticano}}) ny steat baljagh thallooinit çheu sthie jeh'n [[Yn Raue|Raue]]. T'eh ny steat sloo er y chruinney rere earroo yn phobble (mysh 800 cummaltee) as rere eaghtyr (0.44 km²).
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
==Kianglaghyn magh==
{{commonscat|Vatican City|Ard-valley yn Phaab}}
* {{Official website|https://www.vaticanstate.va/en/}}
* {{official website|https://www.vatican.va/content/vatican/en.html}} y Toiag Chasherick
* {{Osmrelation-inline|36989|bullet=no}}
{{Yn Europey}}
{{Preeu-valjyn ny h-Oarpey}}
{{Gurneil eaghtyrys}}
{{Coord|41|54|09|N|12|27|09|E|type:city|display=title}}
{{bun}}
[[Ronney:Ard-valley yn Phaab| ]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1929]]
[[Ronney:Bunneeaghtyn ayns Ard-valley yn Phaab 'sy vlein 1929| ]]
[[Ronney:Laaraghyn Eiraght Dowanagh 'syn Oarpey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Steatyn Creestee]]
[[Ronney:Laaraghyn pirgrinys Catoleagh]]
[[Ronney:Baljyn casherick]]
[[Ronney:Shellooghyssyn y Toiag Chasherick]]
[[Ronney:Monarkaghtyn yn Oarpey]]
[[Ronney:Yn Agglish Chatoleagh 'syn Oarpey]]
[[Ronney:Yn Agglish Chatoleagh 'syn Iddaal]]
[[Ronney:Steatyn ard-valjagh]]
[[Ronney:Çheeraghyn croait]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Cryssyn seyr veih keesh yn Oarpey]]
[[Ronney:Croayn sthie as mooie]]
[[Ronney:Craueeaght as politickaght]]
[[Ronney:Jeelaghtyn]]
[[Ronney:Yn Raue| ]]
[[Ronney:Preeu-valjyn 'syn Oarpey]]
[[Ronney:Meegrasteatyn yn Oarpey]]
g6msk0sew27kkgtlyeuza5oghfq09nm
393413
393412
2026-09-19T18:47:35Z
MacTire02
219
{{lang}} kiartit
393413
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Steat Ard-valley yn Phaab
|ennym_foddey_cadjincliaghtagh= {{nobold|Stato della Città del Vaticano {{small|([[Iddaalish]])}}<br/>Status Civitatis Vaticanae {{small|([[Ladjyn]])}}}}
|ennym_gienneydagh = Ard-valley yn Phaab
|jalloo_brattagh = Flag of the Vatican City - 2001 version.svg
|jalloo_cleinney = Coat of arms of the Vatican City.svg
|jalloo_caslys = Vatican_Europe_Location.svg
|jarroo-raa = none
|arrane_ashoonagh = [[Anthym Paabagh|Inno e Marcia Pontificale]]
|çhengey_arrane_ashoonagh = Iddaalish
|çhyndaa_arrane_ashoonagh = Anthym as Marçh y Phaab
|coadan_arrane_ashoonagh = United States Navy Band - Inno e Marcia Pontificale.ogg
|çhengaghyn_oikoil = [[Iddaalish]]<ref>{{cite news |url=https://www.reuters.com/article/us-pope-latin/pope-ditches-latin-as-official-language-of-vatican-synod-idUSKCN0HV1O220141006 |title=Pope ditches Latin as official language of Vatican synod |work=Reuters |author=(Fwirran Reuters) |date=6 Jerrey Fouyir 2014 |access-date=23 Boaldyn 2023 |archive-date=4 Averil 2023 |archive-url=https://web.archive.org/web/20230404073852/https://www.reuters.com/article/us-pope-latin/pope-ditches-latin-as-official-language-of-vatican-synod-idUSKCN0HV1O220141006 |url-status=live }}</ref><ref>{{cite web |title=What language is spoken at the Vatican? |website=Visiting The Vatican |date=13 Averil 2023 |url=https://visitingthevatican.com/what-language-is-spoken-at-the-vatican/ |access-date=5 Mee Houney 2023 |archive-date=5 Mee Houney 2023 |archive-url=https://web.archive.org/web/20231105022349/https://visitingthevatican.com/what-language-is-spoken-at-the-vatican/ |url-status=live }}</ref>
|sorçh_reiltys = [[Monarkaght reihagh|Monarkaght ard-chummaghtagh reihagh]] Chatoleagh [[Jeelaghys|yeelagh]]<ref>{{cite web |url=https://www.vaticanstate.va/EN/State_and_Government/StateDepartments/index.htm |title=Internet Portal of Vatican City State |publisher=Steat Ard-valley yn Phaab |access-date=9 Jerrey Souree 2011 |url-status=dead |archive-url=https://web.archive.org/web/20110524030947/https://www.vaticanstate.va/EN/State_and_Government/StateDepartments/index.htm |archive-date=24 Boaldyn 2011}}</ref><ref>Robbers, Gerhard (2006) [https://books.google.com/books?id=M3A-xgf1yM4C&pg=PA1009 ''Encyclopedia of World Constitutions''] {{Webarchive|url=https://web.archive.org/web/20160429130728/https://books.google.com/books?id=M3A-xgf1yM4C&pg=PA1009 |date=29 Averil 2016 }}. Infobase Publishing. {{ISBN|978-0-81606078-8}}. dg. 1009</ref><ref>Nick Megoran (2009) [https://www.staff.ncl.ac.uk/nick.megoran/pdf/theocracy.pdf "Theocracy"] {{Webarchive|url=https://web.archive.org/web/20200804152755/https://www.staff.ncl.ac.uk/nick.megoran/pdf/theocracy.pdf |date=4 Luanistyn 2020 }}, dg. 226 ayns ''International Encyclopedia of Human Geography'', yml. 11, Elsevier {{ISBN|978-0-08-044911-1}}</ref>
|enmys1_fer-toshee = [[Kionedeeaght|Unnid kionedeeagh]]
|ennym1_fer-toshee = [[Yn Toiag Chasherick]]
|enmys2_fer-toshee = [[Paab]]
|ennym2_fer-toshee = [[Paab Leon XIV]]
|enmys3_fer-toshee = [[Eaghtyrane y Chommishoon Paabagh cour Steat Ard-valley yn Phaab|Eaghtyrane y Chiannoortys]]
|ennym3_fer-toshee = [[Raffaella Petrini]]
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih [[Reeriaght yn Iddaal]]
|taghyrt1_bunnit = [[Conaant Lateran]]
|date1_bunnit = 11 Toshiaght Arree 1929
|noteyn_argid = Roish 1999 va'n [[lira Vaticanagh]] as y [[lira Iddaalagh]] ymmydit.
|coad_argid = EUR
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Meanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Meanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|cctld = [[.va]]
|coad_çhellvane = 379
}}
Ta '''Ard-valley yn Phaab''' ny '''Ard-valley yn Vatican''' ({{langx|it|Stato della Città del Vaticano}}) ny steat baljagh thallooinit çheu sthie jeh'n [[Yn Raue|Raue]]. T'eh ny steat sloo er y chruinney rere earroo yn phobble (mysh 800 cummaltee) as rere eaghtyr (0.44 km²).
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
==Kianglaghyn magh==
{{commonscat|Vatican City|Ard-valley yn Phaab}}
* {{Official website|https://www.vaticanstate.va/en/}}
* {{official website|https://www.vatican.va/content/vatican/en.html}} y Toiag Chasherick
* {{Osmrelation-inline|36989|bullet=no}}
{{Yn Europey}}
{{Preeu-valjyn ny h-Oarpey}}
{{Gurneil eaghtyrys}}
{{Coord|41|54|09|N|12|27|09|E|type:city|display=title}}
{{bun}}
[[Ronney:Ard-valley yn Phaab| ]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1929]]
[[Ronney:Bunneeaghtyn ayns Ard-valley yn Phaab 'sy vlein 1929| ]]
[[Ronney:Laaraghyn Eiraght Dowanagh 'syn Oarpey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Steatyn Creestee]]
[[Ronney:Laaraghyn pirgrinys Catoleagh]]
[[Ronney:Baljyn casherick]]
[[Ronney:Shellooghyssyn y Toiag Chasherick]]
[[Ronney:Monarkaghtyn yn Oarpey]]
[[Ronney:Yn Agglish Chatoleagh 'syn Oarpey]]
[[Ronney:Yn Agglish Chatoleagh 'syn Iddaal]]
[[Ronney:Steatyn ard-valjagh]]
[[Ronney:Çheeraghyn croait]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Cryssyn seyr veih keesh yn Oarpey]]
[[Ronney:Croayn sthie as mooie]]
[[Ronney:Craueeaght as politickaght]]
[[Ronney:Jeelaghtyn]]
[[Ronney:Yn Raue| ]]
[[Ronney:Preeu-valjyn 'syn Oarpey]]
[[Ronney:Meegrasteatyn yn Oarpey]]
eng0j3ea0htmihpfmpa49em67nj5c3p
Yn Austeyr
0
1903
393428
359009
2026-09-19T20:14:49Z
MacTire02
219
++
393428
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght yn Austeyr
|ennym_foddey_cadjincliaghtagh= {{nobold|Republik Österreich {{small|([[Germaanish]])}}}}
|ennym_gienneydagh = yn Austeyr
|jalloo_caslys = EU-Austria (orthographic projection).svg
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh Phobblaght yn Austeyr|Bundeshymne der Republik Österreich]]
|çhyndaa_arrane_ashoonagh = Arrane ashoonagh Phobblaght yn Austeyr
|coadan_arrane_ashoonagh = Land der Berge Land am Strome instrumental.ogg
|çhengey_arrane_ashoonagh = Germaanish
|çhengaghyn_oikoil = [[Germaanish]]
|sorçh_çhengaghyn = Çhengey ashoonagh
|çhengaghyn = [[Germaanish Austeyragh]]
|çhengaghyn_ardjynagh= {{hlist|[[Croitish Burgenland]]|[[Sloveanish]]|[[Ungaarish]]}}
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] chonastagh
|dateEUentreilys = 1 Jerrey Geuree 1995
|ushtey_sy_cheead = 1.7
|blein_LTS_CCK = 2006
|LTS_CCK = $279.5 billioon
|rhenk_LTS_CCK = 34oo
|LTS_CCK_yn_dooinney = $36,000
|rhenk_LTS_CCK_yn_dooinney= 8oo
|sorçh_kiondeeaght = [[Conaant Steat yn Austeyr|Seyrsnys]]
|taghyrt1_bunnit = [[Conaant Steat yn Austeyr|Conaant Steat yn Austeyr]]
|date1_bunnit = 27 Jerrey Souree 1955
|noteyn_argid = Va'n [[schilling Austeyragh]] ymmydit roish 1999.
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS= [[Traa souree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|tld = [[.at]]
|noteyn_told = Ta [[.eu]] ymmydit myrane lesh çheeraghyn elley [[yn Unnaneys Oarpagh]].
|coad_çhellvane = 43
}}
She [[pobblaght chonastagh]] as [[çheer hallooinit]] 'syn [[Yn Oarpey Veanagh|Oarpey Veanagh]] ee '''yn Austeyr''' ({{lang-de|Österreich }} [ˈøːstɐˌʁaɪç]), ny '''Pobblaght yn Austeyr''' (Germaanish: {{lang|de|''Republik Österreich''}}). T'ee çhemmal rish [[yn Phobblaght Çheck|y Phobblaght Çheck]] as [[Yn Ghermaan|y Ghermaan]] 'sy twoaie, rish [[yn Ungaar]] as [[Yn Clovack|y Clovack]] 'sy niar, rish [[Yn Clovean|y Clovean]] as [[yn Iddaal]] 'sy jiass, as rish [[yn Elveeish]] as [[Liechtenstein]] 'sy neear. Ta'n Austeyr 83,879 km<sup>2</sup> (32,386 mi ker) er eaghtyr as 'sy vlein 2015 va ny smoo na 8.66 millioon dooinney cummal ayn. She çheer leitagh t'ayn, as y chooid smoo jeh'n çheer ny lhie çheusthie jeh [[ny Beinnyn Alpagh]]; cha nel agh 32% jeh'n çheer ny lhie ny s'inshley na 500 m (1,640 tr). She [[Großglockner]], 3,798 m (12,461 tr) er yrjid, y poynt s'yrjey ayn. She [[Veen]] preeu-valley yn çheer as ish ny caayr smoo 'sy çheer chammah. Ta mooinjer y çheer loayrt abbyrtyn ynnydagh y [[Germaanish|Ghermaanish]] myr çhengey ny mayrey, as she [[Germaanish]] y [[çhengey oikoil]]. Ta staydys oikoil ynnydagh ec yn [[Ungaarish]], [[Croitish Burgenland]] as y [[Sloveanish|Cloveanish]] chammah.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{commonscat|Austria|yn Austeyr}}
{{Yn Europey}}
{{Çheeraghyn yn Unnaneys Oarpagh}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Austeyr, yn}}
{{bun}}
[[Ronney:Yn Austeyr| ]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Pobblaghtyn bunraghtoil conastagh]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Oarpagh]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Ventyrys ny Tree Mooiraghyn]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey yn RCTL]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1955]]
[[Ronney:Ny çheeraghyn Alpagh]]
{{Coord|47|20|N|13|20|E|type:country_region:AT|display=title}}
rp200wjfwki03qp8jgkopreeiq54btl
393429
393428
2026-09-19T20:15:44Z
MacTire02
219
++
393429
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght yn Austeyr
|ennym_foddey_cadjincliaghtagh= {{nobold|Republik Österreich {{small|([[Germaanish]])}}}}
|ennym_gienneydagh = yn Austeyr
|jalloo_caslys = EU-Austria (orthographic projection).svg
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh Phobblaght yn Austeyr|Bundeshymne der Republik Österreich]]
|çhyndaa_arrane_ashoonagh = Arrane ashoonagh Phobblaght yn Austeyr
|coadan_arrane_ashoonagh = Land der Berge Land am Strome instrumental.ogg
|çhengey_arrane_ashoonagh = Germaanish
|çhengaghyn_oikoil = [[Germaanish]]
|sorçh_çhengaghyn = Çhengey ashoonagh
|çhengaghyn = [[Germaanish Austeyragh]]
|çhengaghyn_ardjynagh= {{hlist|[[Croitish Burgenland]]|[[Sloveanish]]|[[Ungaarish]]}}
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] chonastagh
|dateEUentreilys = 1 Jerrey Geuree 1995
|ushtey_sy_cheead = 1.7
|blein_LTS_CCK = 2006
|LTS_CCK = $279.5 billioon
|rhenk_LTS_CCK = 34oo
|LTS_CCK_yn_dooinney = $36,000
|rhenk_LTS_CCK_yn_dooinney= 8oo
|sorçh_kiondeeaght = [[Conaant Steat yn Austeyr|Seyrsnys]]
|taghyrt1_bunnit = [[Conaant Steat yn Austeyr|Conaant Steat yn Austeyr]]
|date1_bunnit = 27 Jerrey Souree 1955
|noteyn_argid = Va'n [[schilling Austeyragh]] ymmydit roish 1999.
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS= [[Traa souree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|tld = [[.at]]
|noteyn_told = Ta [[.eu]] ymmydit myrane lesh çheeraghyn elley [[yn Unnaneys Oarpagh]].
|coad_çhellvane = 43
}}
She [[pobblaght chonastagh]] as [[çheer hallooinit]] 'syn [[Yn Oarpey Veanagh|Oarpey Veanagh]] ee '''yn Austeyr''' ({{langx|de|Österreich }} [ˈøːstɐˌʁaɪç]), ny '''Pobblaght yn Austeyr''' ({{langx|de|Republik Österreich}}). T'ee çhemmal rish [[yn Phobblaght Çheck|y Phobblaght Çheck]] as [[Yn Ghermaan|y Ghermaan]] 'sy twoaie, rish [[yn Ungaar]] as [[Yn Clovack|y Clovack]] 'sy niar, rish [[Yn Clovean|y Clovean]] as [[yn Iddaal]] 'sy jiass, as rish [[yn Elveeish]] as [[Liechtenstein]] 'sy neear. Ta'n Austeyr 83,879 km<sup>2</sup> (32,386 mi ker) er eaghtyr as 'sy vlein 2015 va ny smoo na 8.66 millioon dooinney cummal ayn. She çheer leitagh t'ayn, as y chooid smoo jeh'n çheer ny lhie çheusthie jeh [[ny Beinnyn Alpagh]]; cha nel agh 32% jeh'n çheer ny lhie ny s'inshley na 500 m (1,640 tr). She [[Großglockner]], 3,798 m (12,461 tr) er yrjid, y poynt s'yrjey ayn. She [[Veen]] preeu-valley yn çheer as ish ny caayr smoo 'sy çheer chammah. Ta mooinjer y çheer loayrt abbyrtyn ynnydagh y [[Germaanish|Ghermaanish]] myr çhengey ny mayrey, as she [[Germaanish]] y [[çhengey oikoil]]. Ta staydys oikoil ynnydagh ec yn [[Ungaarish]], [[Croitish Burgenland]] as y [[Sloveanish|Cloveanish]] chammah.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{commonscat|Austria|yn Austeyr}}
{{Yn Europey}}
{{Çheeraghyn yn Unnaneys Oarpagh}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Austeyr, yn}}
{{bun}}
[[Ronney:Yn Austeyr| ]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Pobblaghtyn bunraghtoil conastagh]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Oarpagh]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Ventyrys ny Tree Mooiraghyn]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey yn RCTL]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1955]]
[[Ronney:Ny çheeraghyn Alpagh]]
{{Coord|47|20|N|13|20|E|type:country_region:AT|display=title}}
qghfy2sykiokttmgy56v0ctqav6m75f
393430
393429
2026-09-19T20:20:34Z
MacTire02
219
++
393430
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght yn Austeyr
|ennym_foddey_cadjincliaghtagh= {{nobold|Republik Österreich {{small|([[Germaanish]])}}}}
|ennym_gienneydagh = yn Austeyr
|jalloo_caslys = EU-Austria (orthographic projection).svg
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh Phobblaght yn Austeyr|Bundeshymne der Republik Österreich]]
|çhyndaa_arrane_ashoonagh = Arrane ashoonagh Phobblaght yn Austeyr
|coadan_arrane_ashoonagh = Land der Berge Land am Strome instrumental.ogg
|çhengey_arrane_ashoonagh = Germaanish
|çhengaghyn_oikoil = [[Germaanish]]
|sorçh_çhengaghyn = Çhengey ashoonagh
|çhengaghyn = [[Germaanish Austeyragh]]
|çhengaghyn_ardjynagh= {{hlist|[[Croitish Burgenland]]|[[Sloveanish]]|[[Ungaarish]]}}
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] chonastagh
|dateEUentreilys = 1 Jerrey Geuree 1995
|ushtey_sy_cheead = 1.7
|blein_LTS_CCK = 2006
|LTS_CCK = $279.5 billioon
|rhenk_LTS_CCK = 34oo
|LTS_CCK_yn_dooinney = $36,000
|rhenk_LTS_CCK_yn_dooinney= 8oo
|sorçh_kiondeeaght = [[Conaant Steat yn Austeyr|Seyrsnys]]
|taghyrt1_bunnit = [[Conaant Steat yn Austeyr|Conaant Steat yn Austeyr]]
|date1_bunnit = 27 Jerrey Souree 1955
|noteyn_argid = Va'n [[schilling Austeyragh]] ymmydit roish 1999.
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS= [[Traa souree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|tld = [[.at]]
|noteyn_tld = Ta [[.eu]] ymmydit myrane lesh çheeraghyn elley [[yn Unnaneys Oarpagh]].
|coad_çhellvane = 43
}}
She [[pobblaght chonastagh]] as [[çheer hallooinit]] 'syn [[Yn Oarpey Veanagh|Oarpey Veanagh]] ee '''yn Austeyr''' ({{langx|de|Österreich }} [ˈøːstɐˌʁaɪç]), ny '''Pobblaght yn Austeyr''' ({{langx|de|Republik Österreich}}). T'ee çhemmal rish [[yn Phobblaght Çheck|y Phobblaght Çheck]] as [[Yn Ghermaan|y Ghermaan]] 'sy twoaie, rish [[yn Ungaar]] as [[Yn Clovack|y Clovack]] 'sy niar, rish [[Yn Clovean|y Clovean]] as [[yn Iddaal]] 'sy jiass, as rish [[yn Elveeish]] as [[Liechtenstein]] 'sy neear. Ta'n Austeyr 83,879 km<sup>2</sup> (32,386 mi ker) er eaghtyr as 'sy vlein 2015 va ny smoo na 8.66 millioon dooinney cummal ayn. She çheer leitagh t'ayn, as y chooid smoo jeh'n çheer ny lhie çheusthie jeh [[ny Beinnyn Alpagh]]; cha nel agh 32% jeh'n çheer ny lhie ny s'inshley na 500 m (1,640 tr). She [[Großglockner]], 3,798 m (12,461 tr) er yrjid, y poynt s'yrjey ayn. She [[Veen]] preeu-valley yn çheer as ish ny caayr smoo 'sy çheer chammah. Ta mooinjer y çheer loayrt abbyrtyn ynnydagh y [[Germaanish|Ghermaanish]] myr çhengey ny mayrey, as she [[Germaanish]] y [[çhengey oikoil]]. Ta staydys oikoil ynnydagh ec yn [[Ungaarish]], [[Croitish Burgenland]] as y [[Sloveanish|Cloveanish]] chammah.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{commonscat|Austria|yn Austeyr}}
{{Yn Europey}}
{{Çheeraghyn yn Unnaneys Oarpagh}}
{{Gurneil eaghtyrys}}
{{DEFAULTSORT:Austeyr, yn}}
{{bun}}
[[Ronney:Yn Austeyr| ]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Pobblaghtyn bunraghtoil conastagh]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Oarpagh]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Ventyrys ny Tree Mooiraghyn]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey yn RCTL]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1955]]
[[Ronney:Ny çheeraghyn Alpagh]]
{{Coord|47|20|N|13|20|E|type:country_region:AT|display=title}}
jxvilwwycwzvh99qfnx3xi2fcc8murj
Yn Çheck
0
1908
393445
358616
2026-09-19T21:59:18Z
MacTire02
219
++
393445
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Y Phobblaght Çheck
|ennym_foddey_cadjincliaghtagh= {{nobold|Česká republika {{small|([[Sheckish]])}}}}
|ennym_gienneydagh = y Çheck
|jalloo_caslys = EU-Czech Republic.svg
|jarroo-raa = [[Ta firrinys goaill niart|Pravda vítězí]]
|çhengey_jarroo-raa = Sheckish
|çhydnaa_jarroo-raa = Ta firrinys goaill niart
|arrane_ashoonagh = [[Kde domov můj]]
|çhengey_arrane_ashoonagh = Sheckish
|çnhyndaa_arrane_ashoonagh = Raad Ta My Hie
|coadan_arrane_ashoonagh = Czech anthem.ogg
|çhengaghyn_oikoil = [[Sheckish]]
|sorçh_reiltys = [[Pobblaght pharlamaidagh unnaneagh]]
|dateEUentreilys = 1 Boaldyn 2004
|ushtey_sy_cheead = 2.0
|blein_LTS_CCK = 2007
|LTS_CCK = $248.902 billioon
|rhenk_LTS_CCK = 39oo
|LTS_CCK_yn_dooinney = $24,236
|rhenk_LTS_CCK_yn_dooinney = 35oo
|sorçh_kiondeeaght = [[Shennaghys ny thallooyn Sheckagh|Bunneeaght]]
|note_kiondeeaght =
|taghyrt1_bunnit = [[Diucaght Bohemia]]
|date1_bunnit = {{circa|870}}
|taghyrt2_bunnit = [[Reeriaght Bohemia]]
|date2_bunnit = 1198
|taghyrt3_bunnit = [[Kied Phobblaght y Çheckoslovack]]
|date3_bunnit = 28 Jerrey Fouyir 1918
|taghyrt4_bunnit = [[Skeaylley yn Çheckoslovack]]
|date4_bunnit = 1 Jerrey Geuree 1993
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|tld = [[.cz]]
|noteyn_tld = Ta [[.eu]] ymmydit myrane lesh çheeraghyn elley [[yn Unnaneys Oarpagh]].
|coad_çhellvane = 420
}}
She çheer ayns [[yn Oarpey]] ee '''yn Çheck''' ny yn '''Phobblaght Çheck'''.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Europey}}
{{Çheeraghyn yn Unnaneys Oarpagh}}
{{RCAH}}
{{Gurneil eaghtyrys}}
{{Coord|49|45|N|15|30|E|type:country_region:CZ_scale:9000000|display=title}}
{{DEFAULTSORT:Check}}
[[Ronney:Yn Çheck| ]]
[[Ronney:Yn Oarpey Veanagh]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant yn Atlantagh Hwoaie]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Oarpagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Ventyrys ny Tree Mooiraghyn]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey yn RCTL]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1993]]
{{bun}}
drcyolqypu7w8zebpz6zo3cwyz8e5i0
393446
393445
2026-09-19T21:59:41Z
MacTire02
219
++
393446
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Y Phobblaght Çheck
|ennym_foddey_cadjincliaghtagh= {{nobold|Česká republika {{small|([[Sheckish]])}}}}
|ennym_gienneydagh = y Çheck
|jalloo_caslys = EU-Czech Republic.svg
|jarroo-raa = [[Ta firrinys goaill niart|Pravda vítězí]]
|çhengey_jarroo-raa = Sheckish
|çhyndaa_jarroo-raa = Ta firrinys goaill niart
|arrane_ashoonagh = [[Kde domov můj]]
|çhengey_arrane_ashoonagh = Sheckish
|çhyndaa_arrane_ashoonagh = Raad Ta My Hie
|coadan_arrane_ashoonagh = Czech anthem.ogg
|çhengaghyn_oikoil = [[Sheckish]]
|sorçh_reiltys = [[Pobblaght pharlamaidagh unnaneagh]]
|dateEUentreilys = 1 Boaldyn 2004
|ushtey_sy_cheead = 2.0
|blein_LTS_CCK = 2007
|LTS_CCK = $248.902 billioon
|rhenk_LTS_CCK = 39oo
|LTS_CCK_yn_dooinney = $24,236
|rhenk_LTS_CCK_yn_dooinney = 35oo
|sorçh_kiondeeaght = [[Shennaghys ny thallooyn Sheckagh|Bunneeaght]]
|note_kiondeeaght =
|taghyrt1_bunnit = [[Diucaght Bohemia]]
|date1_bunnit = {{circa|870}}
|taghyrt2_bunnit = [[Reeriaght Bohemia]]
|date2_bunnit = 1198
|taghyrt3_bunnit = [[Kied Phobblaght y Çheckoslovack]]
|date3_bunnit = 28 Jerrey Fouyir 1918
|taghyrt4_bunnit = [[Skeaylley yn Çheckoslovack]]
|date4_bunnit = 1 Jerrey Geuree 1993
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|tld = [[.cz]]
|noteyn_tld = Ta [[.eu]] ymmydit myrane lesh çheeraghyn elley [[yn Unnaneys Oarpagh]].
|coad_çhellvane = 420
}}
She çheer ayns [[yn Oarpey]] ee '''yn Çheck''' ny yn '''Phobblaght Çheck'''.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Europey}}
{{Çheeraghyn yn Unnaneys Oarpagh}}
{{RCAH}}
{{Gurneil eaghtyrys}}
{{Coord|49|45|N|15|30|E|type:country_region:CZ_scale:9000000|display=title}}
{{DEFAULTSORT:Check}}
[[Ronney:Yn Çheck| ]]
[[Ronney:Yn Oarpey Veanagh]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant yn Atlantagh Hwoaie]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Oarpagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Ventyrys ny Tree Mooiraghyn]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey yn RCTL]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1993]]
{{bun}}
5rp632j847iukmv2yqz4ceznxr6v44c
393447
393446
2026-09-19T22:03:33Z
MacTire02
219
++
393447
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Y Phobblaght Çheck
|ennym_foddey_cadjincliaghtagh= {{nobold|Česká republika {{small|([[Sheckish]])}}}}
|ennym_gienneydagh = y Çheck
|jalloo_caslys = EU-Czech Republic.svg
|jarroo-raa = [[Ta firrinys goaill niart|Pravda vítězí]]
|çhengey_jarroo-raa = Sheckish
|çhyndaa_jarroo-raa = Ta firrinys goaill niart
|arrane_ashoonagh = [[Kde domov můj]]
|çhengey_arrane_ashoonagh = Sheckish
|çhyndaa_arrane_ashoonagh = Raad Ta My Hie
|coadan_arrane_ashoonagh = Czech anthem.ogg
|çhengaghyn_oikoil = [[Sheckish]]
|sorçh_reiltys = [[Pobblaght pharlamaidagh unnaneagh]]
|dateEUentreilys = 1 Boaldyn 2004
|ushtey_sy_cheead = 2.0
|blein_LTS_CCK = 2007
|LTS_CCK = $248.902 billoon
|rhenk_LTS_CCK = 39oo
|LTS_CCK_yn_dooinney = $24,236
|rhenk_LTS_CCK_yn_dooinney = 35oo
|sorçh_kiondeeaght = [[Shennaghys ny thallooyn Sheckagh|Bunneeaght]]
|note_kiondeeaght =
|taghyrt1_bunnit = [[Diucaght Bohemia]]
|date1_bunnit = {{circa|870}}
|taghyrt2_bunnit = [[Reeriaght Bohemia]]
|date2_bunnit = 1198
|taghyrt3_bunnit = [[Kied Phobblaght y Çheckoslovack]]
|date3_bunnit = 28 Jerrey Fouyir 1918
|taghyrt4_bunnit = [[Skeaylley yn Çheckoslovack]]
|date4_bunnit = 1 Jerrey Geuree 1993
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|tld = [[.cz]]
|noteyn_tld = Ta [[.eu]] ymmydit myrane lesh çheeraghyn elley [[yn Unnaneys Oarpagh]].
|coad_çhellvane = 420
}}
She çheer ayns [[yn Oarpey]] ee '''yn Çheck''' ny yn '''Phobblaght Çheck'''.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Europey}}
{{Çheeraghyn yn Unnaneys Oarpagh}}
{{RCAH}}
{{Gurneil eaghtyrys}}
{{Coord|49|45|N|15|30|E|type:country_region:CZ_scale:9000000|display=title}}
{{DEFAULTSORT:Check}}
[[Ronney:Yn Çheck| ]]
[[Ronney:Yn Oarpey Veanagh]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant yn Atlantagh Hwoaie]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Oarpagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Ventyrys ny Tree Mooiraghyn]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey yn RCTL]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1993]]
{{bun}}
9meg5c4l0wtt61cb99qevmjjntrscst
Andorra
0
2272
393400
358792
2026-09-19T17:26:21Z
MacTire02
219
++
393400
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Prinsaght Andorra
|ennym_foddey_cadjincliaghtagh= {{nobold|Principat d'Andorra {{small|([[Catalaanish]])}}}}
|ennym_gienneydagh = Andorra
|jalloo_caslys = Andorra in Europe (zoomed).svg
|jarroo-raa = Virtus Unita Fortior
|çhengey_jarroo-raa = Ladjyn
|çhyndaa_jarroo-raa = Ta'n grayse unnaneysit ny s'troshey
|arrane_ashoonagh = [[El Gran Carlemany]]
|çhengey_arrane_ashoonagh = Catalaanish
|çhyndaa_arrane_ashoonagh = [[Çhalse Mooar]] Urrymagh
|çhengaghyn_oikoil = [[Catalaanish]]
|imraa_çhengaghyn_oikoil = {{cite web |title=Constitution of the Principality of Andorra |url=https://www.consellgeneral.ad/fitxers/documents/constitucio/const-en |publisher=[[Yn Ard-choonseil (Andorra)|Yn Ard-choonseil]] |language=en |format=PDF |at=art. 2.1 |quote=Catalan is the official language of the State. |access-date=7 Jerrey Souree 2026}}
|sorçh_reiltys = [[Co-lhiass-reeaght]] vunraghtoil daa-arcagh [[corys parlamaidagh|pharlamaidagh]] unnaneagh
|blein_LTS_CCK = 2026
|LTS_CCK = {{increase}} $6.932 billoon<ref name="IMF-WEO-April-2026-Andorra">{{cite web |title=Andorra |url=https://www.imf.org/external/datamapper/profile/AND |website=IMF DataMapper |publisher=[[Yn Tashtey Argidoil Eddyrashoonagh]] |at=World Economic Outlook (April 2026) |access-date=21 Jerrey Souree 2026}}</ref>
|rhenk_LTS_CCK = 168oo
|LTS_CCK_yn_dooinney = {{increase}} $75,988<ref name="IMF-WEO-April-2026-Andorra"/>
|rhenk_LTS_CCK_yn_dooinney = 23oo
|sorçh_kiondeeaght = Neuchrogheydys
|taghyrt1_bunnit = Veih [[Crooin Aragón]]
|date1_bunnit = 8 Mean Fouyir 1278
|taghyrt2_bunnit = Veih [[Reeriaght y Rank]]
|date2_bunnit = 12 Jerrey Fouyir 1652
|taghyrt3_bunnit = Veih [[Sègre (rheynn)|Impiraght y Rank]]
|date3_bunnit = 1814
|taghyrt4_bunnit = [[Bunraght Andorra|Bunraght roie]]
|date4_bunnit = 2 Toshiaght Arree 1993
|noteyn_argid = Roish 1 Jerrey Geuree 2002, va'n [[peseta Spaainagh]] as y [[franc Frangagh]] ymmydit ''[[De facto currency|de facto]]'' ayns Andorra; Haink noataghyn banc as cooinaghyn stiagh ayns nyn ynnyd er y date shen.<ref>{{cite web |title=Monetary Agreement between the European Union and the Principality of Andorra |url=https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02011A1217(01)-20260324 |website=EUR-Lex |publisher=[[European Union]] |access-date=21 July 2026}}</ref> Va [[diner Andorragh|dineryn Andoragh]] ymmydit keayrtyn lurg 1982.
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +1
|traa_ynnydagh_TTLS = [[Traa souree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +2
|tld = [[.ad]]
|noteyn_tld = Ta [[.cat]] ymmydit myrgeddin, myrane lesh çheeraghyn [[Catalaanish|Catalaanagh]] elley.
|coad_çhellvane = 376
}}
Ta '''Andorra''', ny '''Prinsaght Andorra''' ({{langx|ca|Principat d'Andorra}}), ny çheer thallooinit 'syn [[Yn Oarpey Heear|Oarpey Heear]], soit ayns [[ny Sleityn Pyreanagh]] eddyr [[Yn Rank|y Rank]] as [[yn Spaainey|y Spaainey]]. T'ee ny çheer vaghtal nish er son y turryssid as e staydys myr kemmyrk cheesh.
== Skeeraghyn ==
<imagemap>
Image:Andorramap.png|thumb|left|300px|Caslys çheerey Andorra lesh ny shiaght skeeraghyn taishbynit
rect 34 350 121 404 [[Andorra la Vella]]
rect 443 148 519 172 [[Canillo]]
rect 437 363 520 389 [[Encamp]]
rect 352 443 464 498 [[Escaldes-Engordany]]
rect 36 223 155 247 [[La Massana]]
rect 284 78 354 103 [[Ordino]]
rect 208 567 304 618 [[Sant Julià de Lòria]]
rect 651 54 745 83 [[Yn Rank]]
rect 484 583 560 619 [[Yn Spaainey]]
</imagemap>
{{Ardart|Skeeraghyn Andorra}}
Ta Andorra rheynnit ayns shiaght skeeraghyn:
* [[Andorra la Vella]]
* [[Canillo]]
* [[Encamp]]
* [[Escaldes-Engordany]]
* [[La Massana]]
* [[Ordino]]
* [[Sant Julià de Lòria]]
<br clear="left"/>
== Çheeroaylleeaght ==
{{Ardart|Çheeroaylleeaght Andorra}}
Rere y soiaghey eck ayns [[ny Sleityn Pyreanagh|ny Sleityn Pyreanagh my hiar]], ta Andorra jeant seose er y chooid smoo jeh sleityn as ad 1,966 m er mean-yrjid. She [[Coma Pedrosa]] y fer jeu s'yrjey as eh 2,946 m er yrjid. T'ad rheynnit liorish tree glionteeyn ayns cummey Y ta çheet ry-cheilley ayns un awin, yn awin [[Valira]]. Ta Andorra 468 km² er eaghtyr. Ta speyr tempreilagh gollrish speyr ny Frank as ny Spaainey ayns Andorra, agh ta ny smoo sniaghtey 'sy Gheuree rere yrjid ny çheerey.
== Deyn-oaylleeaght ==
{{Ardart|Deynoaylleeaght Andora}}
Ta ny h-Andorree nyn mynlagh ayns nyn jeer hene oc; ta 51.7% jeh ny cummaltee jeant seose jeh [[Spaainee]], [[Portiugee]], [[Frangee]], [[Goaldee]] as [[Iddaalee]]. Rere Oik Coontey-pobble SUA, ta'n jerkallys-vea oc (83.5 bleeaney) nane jeh ny jerkallysyn s'odjey er feie ny cruinney.
=== Çhengaghyn ===
{{Ardart|Çhengaghyn Andorra}}
She [[Catalaanish]] çhengey oikoil ny çheerey. Ta Andorra nane jeh kiare steatyn nagh vel [[Cochruinnagh Crauelagh Mynlughtyn Ashoonagh Choonseil ny h-Oarpey]] fo-screeuit eck, lesh y Rank, Monaco, as y Turkee.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Çheeraghyn Cataloanagh}}
{{Yn Europey}}
{{Gurneil eaghtyrys}}
{{coord|42|33|N|1|35|E|type:country_region:AD|display=title}}
{{bun}}
[[Ronney:Andorra| ]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1278]]
[[Ronney:Ny Çheeraghyn Catalaanagh]]
[[Ronney:Steatyn Creestee]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Daa-arcaghtyn]]
[[Ronney:Cryssyn seyr veih keesh yn Oarpey]]
[[Ronney:Çheeraghyn Lieh-innys yn Ibeir]]
[[Ronney:Ardjyn Ushagyn Scanshoil Andorra]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Monarkaghtyn yn Oarpey]]
[[Ronney:Prinse-aspickyssyn]]
[[Ronney:Prinsaghtyn]]
[[Ronney:Ny Sleityn Pyreanagh]]
[[Ronney:Craueeaght as politickaght]]
[[Ronney:Cryssyn tarmaynagh er lheh]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1278]]
[[Ronney:Meegrasteatyn yn Oarpey]]
ltgj9c84ovrm2z7gjilrzbyhe2v17yg
393401
393400
2026-09-19T17:28:22Z
MacTire02
219
Gaelg
393401
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Prinsaght Andorra
|ennym_foddey_cadjincliaghtagh= {{nobold|Principat d'Andorra {{small|([[Catalaanish]])}}}}
|ennym_gienneydagh = Andorra
|jalloo_caslys = Andorra in Europe (zoomed).svg
|jarroo-raa = Virtus Unita Fortior
|çhengey_jarroo-raa = Ladjyn
|çhyndaa_jarroo-raa = Ta'n grayse unnaneysit ny s'troshey
|arrane_ashoonagh = [[El Gran Carlemany]]
|çhengey_arrane_ashoonagh = Catalaanish
|çhyndaa_arrane_ashoonagh = [[Çhalse Mooar]] Urrymagh
|çhengaghyn_oikoil = [[Catalaanish]]
|imraa_çhengaghyn_oikoil = {{cite web |title=Constitution of the Principality of Andorra |url=https://www.consellgeneral.ad/fitxers/documents/constitucio/const-en |publisher=[[Yn Ard-choonseil (Andorra)|Yn Ard-choonseil]] |language=en |format=PDF |at=art. 2.1 |quote=Catalan is the official language of the State. |access-date=7 Jerrey Souree 2026}}
|sorçh_reiltys = [[Co-lhiass-reeaght]] vunraghtoil daa-arcagh [[corys parlamaidagh|pharlamaidagh]] unnaneagh
|blein_LTS_CCK = 2026
|LTS_CCK = {{increase}} $6.932 billoon<ref name="IMF-WEO-April-2026-Andorra">{{cite web |title=Andorra |url=https://www.imf.org/external/datamapper/profile/AND |website=IMF DataMapper |publisher=[[Yn Tashtey Argidoil Eddyrashoonagh]] |at=World Economic Outlook (April 2026) |access-date=21 Jerrey Souree 2026}}</ref>
|rhenk_LTS_CCK = 168oo
|LTS_CCK_yn_dooinney = {{increase}} $75,988<ref name="IMF-WEO-April-2026-Andorra"/>
|rhenk_LTS_CCK_yn_dooinney = 23oo
|sorçh_kiondeeaght = Neuchrogheydys
|taghyrt1_bunnit = Veih [[Crooin Aragón]]
|date1_bunnit = 8 Mean Fouyir 1278
|taghyrt2_bunnit = Veih [[Reeriaght y Rank]]
|date2_bunnit = 12 Jerrey Fouyir 1652
|taghyrt3_bunnit = Veih [[Sègre (rheynn)|Impiraght y Rank]]
|date3_bunnit = 1814
|taghyrt4_bunnit = [[Bunraght Andorra|Bunraght roie]]
|date4_bunnit = 2 Toshiaght Arree 1993
|noteyn_argid = Roish 1 Jerrey Geuree 2002, va'n [[peseta Spaainagh]] as y [[franc Frangagh]] ymmydit ''[[argid de facto|de facto]]'' ayns Andorra; Haink noataghyn banc as cooinaghyn stiagh ayns nyn ynnyd er y date shen.<ref>{{cite web |title=Monetary Agreement between the European Union and the Principality of Andorra |url=https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02011A1217(01)-20260324 |website=EUR-Lex |publisher=[[Yn Unnaneys Oarpagh]] |access-date=21 Jerrey Souree 2026}}</ref> Va [[diner Andorragh|dineryn Andoragh]] ymmydit keayrtyn lurg 1982.
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +1
|traa_ynnydagh_TTLS = [[Traa souree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +2
|tld = [[.ad]]
|noteyn_tld = Ta [[.cat]] ymmydit myrgeddin, myrane lesh çheeraghyn [[Catalaanish|Catalaanagh]] elley.
|coad_çhellvane = 376
}}
Ta '''Andorra''', ny '''Prinsaght Andorra''' ({{langx|ca|Principat d'Andorra}}), ny çheer thallooinit 'syn [[Yn Oarpey Heear|Oarpey Heear]], soit ayns [[ny Sleityn Pyreanagh]] eddyr [[Yn Rank|y Rank]] as [[yn Spaainey|y Spaainey]]. T'ee ny çheer vaghtal nish er son y turryssid as e staydys myr kemmyrk cheesh.
== Skeeraghyn ==
<imagemap>
Image:Andorramap.png|thumb|left|300px|Caslys çheerey Andorra lesh ny shiaght skeeraghyn taishbynit
rect 34 350 121 404 [[Andorra la Vella]]
rect 443 148 519 172 [[Canillo]]
rect 437 363 520 389 [[Encamp]]
rect 352 443 464 498 [[Escaldes-Engordany]]
rect 36 223 155 247 [[La Massana]]
rect 284 78 354 103 [[Ordino]]
rect 208 567 304 618 [[Sant Julià de Lòria]]
rect 651 54 745 83 [[Yn Rank]]
rect 484 583 560 619 [[Yn Spaainey]]
</imagemap>
{{Ardart|Skeeraghyn Andorra}}
Ta Andorra rheynnit ayns shiaght skeeraghyn:
* [[Andorra la Vella]]
* [[Canillo]]
* [[Encamp]]
* [[Escaldes-Engordany]]
* [[La Massana]]
* [[Ordino]]
* [[Sant Julià de Lòria]]
<br clear="left"/>
== Çheeroaylleeaght ==
{{Ardart|Çheeroaylleeaght Andorra}}
Rere y soiaghey eck ayns [[ny Sleityn Pyreanagh|ny Sleityn Pyreanagh my hiar]], ta Andorra jeant seose er y chooid smoo jeh sleityn as ad 1,966 m er mean-yrjid. She [[Coma Pedrosa]] y fer jeu s'yrjey as eh 2,946 m er yrjid. T'ad rheynnit liorish tree glionteeyn ayns cummey Y ta çheet ry-cheilley ayns un awin, yn awin [[Valira]]. Ta Andorra 468 km² er eaghtyr. Ta speyr tempreilagh gollrish speyr ny Frank as ny Spaainey ayns Andorra, agh ta ny smoo sniaghtey 'sy Gheuree rere yrjid ny çheerey.
== Deyn-oaylleeaght ==
{{Ardart|Deynoaylleeaght Andora}}
Ta ny h-Andorree nyn mynlagh ayns nyn jeer hene oc; ta 51.7% jeh ny cummaltee jeant seose jeh [[Spaainee]], [[Portiugee]], [[Frangee]], [[Goaldee]] as [[Iddaalee]]. Rere Oik Coontey-pobble SUA, ta'n jerkallys-vea oc (83.5 bleeaney) nane jeh ny jerkallysyn s'odjey er feie ny cruinney.
=== Çhengaghyn ===
{{Ardart|Çhengaghyn Andorra}}
She [[Catalaanish]] çhengey oikoil ny çheerey. Ta Andorra nane jeh kiare steatyn nagh vel [[Cochruinnagh Crauelagh Mynlughtyn Ashoonagh Choonseil ny h-Oarpey]] fo-screeuit eck, lesh y Rank, Monaco, as y Turkee.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Çheeraghyn Cataloanagh}}
{{Yn Europey}}
{{Gurneil eaghtyrys}}
{{coord|42|33|N|1|35|E|type:country_region:AD|display=title}}
{{bun}}
[[Ronney:Andorra| ]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1278]]
[[Ronney:Ny Çheeraghyn Catalaanagh]]
[[Ronney:Steatyn Creestee]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Daa-arcaghtyn]]
[[Ronney:Cryssyn seyr veih keesh yn Oarpey]]
[[Ronney:Çheeraghyn Lieh-innys yn Ibeir]]
[[Ronney:Ardjyn Ushagyn Scanshoil Andorra]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Organisation internationale de la Francophonie]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Monarkaghtyn yn Oarpey]]
[[Ronney:Prinse-aspickyssyn]]
[[Ronney:Prinsaghtyn]]
[[Ronney:Ny Sleityn Pyreanagh]]
[[Ronney:Craueeaght as politickaght]]
[[Ronney:Cryssyn tarmaynagh er lheh]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1278]]
[[Ronney:Meegrasteatyn yn Oarpey]]
i4ese3q4wnymy07rxuw610ywjgihlfj
Yn Albaan
0
2274
393394
358563
2026-09-19T15:10:17Z
MacTire02
219
++
393394
wikitext
text/x-wiki
{{Ymmydcosoylagh|yn çheer Valkanagh|çheer 'syn Oarpey Heear Hwoaie|Nalbin}}
{{Kishtey fys çheer
|ennym = Pobblaght yn Albaan
|ennym_foddey_cadjincliaghtagh= {{nobold|Republika e Shqipërisë {{small|([[Albaanish]])}}}}
|ennym_gienneydagh = yn Albaan
|jarroo-raa = [[Ti Shqipëri, më jep nder, më jep emrin Shqipëtar]]
|çhyndaa_jarroo-raa = Ta shiu, yn Albaan, cur onnor dou, ta shiu cur yn ennym Albaanagh orrym
|arrane_ashoonagh = [[Himni i Flamurit]]
|çhyndaa_arrane_ashoonagh = Arrane da'n Vrattagh
|coadan_arrane_ashoonagh = Hymni i Flamurit instrumental.ogg
|çhengaghyn_oikoil = [[Albaanish]]
|çhengaghyn_ardjynagh = {{hlist|[[Aromaanish]]|[[Greagish]]|[[Massadoanish]]}}
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] unnaneagh
|dateEUentreilys =
|ushtey_sy_cheead = 4.7
|blein_LTS_CCK = 2008
|LTS_CCK = $21.160 billioon
|LTS_CCK_yn_dooinney = $6,649
|sorçh_kiondeeaght = Bunneeaght
|note_kiondeeaght =
|taghyrt1_bunnit = [[Yn Albaan Heuchrogheydagh]]
|date1_bunnit = 28 Sauin 1912
|taghyrt2_bunnit = [[Prinsaght yn Albaan]]
|date2_bunnit = 29 Jerrey Souree 1913
|taghyrt3_bunnit = [[Pobblaght yn Albaan (1925–1928)|Kied Phobblaght yn Albaan]]
|date3_bunnit = 31 Jerrey Geuree 1925
|taghyrt4_bunnit = [[Reeriaght yn Albaan]]
|date4_bunnit = 1 Mean Fouyir 1946
|taghyrt5_bunnit = [[Deynphobblaght yn Albaan|Nah Phobblaght yn Albaan]]
|date5_bunnit = 10 Jerrey Geuree 1946
|taghyrt6_bunnit = [[Bunraght Gheynphobblaght Hoshiallagh yn Albaan|Trass Pobblaght yn Albaan]]
|date6_bunnit = 28 Nollick 1976
|taghyrt7_bunnit = Kiarroo Pobblaght yn Albaan
|date7_bunnit = 29 Averil 1991
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|cctld = [[.al]]
|coad_çhellvane = 355
}}
She çheer 'syn [[yn Oarpey|Oarpey]] ee '''yn Albaan''' ({{langx|sq|Shqipëria}}) ny '''Pobblaght yn Albaan''' dy h-oikoil ({{langx|sq|Republika e Shqipërisë}}). T'ee soit ayns [[ny çheeraghyn Balkanagh]] as t'ee çhemmal rish [[Montenegro]] 'sy twoaie, rish [[Kosovo]] 'sy niar hwoaie, rish y [[yn Vassadoan Hwoaie|Vassadoan Hwoaie]] 'sy niar, as rish y [[yn Ghreag|y Ghreag]] 'sy jiass. 'Sy neear, ta'n Albaan çhemmal rish y [[Yn Vooir Aidreeatagh|Vooir Aidreeatagh]] 'sy neear as rish y [[Yn Vooir Ioonagh|Vooir Ionagh]] 'sy neear yiass. She [[Tiranë]] yn preeu-valley, as ta [[Durrës]], [[Elbasan]], as [[Vlora]] coontit mastey ny h-ard-valjyn scanshoil elley. Ta {{WD Earroo yn Phobble}} sleih cummal 'sy çheer ta {{cvt|28748|km2|sqmi}} er eaghtyr. She [[Yn Islam|Moslymee]] 55% jeh'n phobble, [[Cair-chredjue yn Niar|Cair-chredjuee]] 23% jeh'n phobble, as [[Catoleaghys Raueagh|Catolee Raueagh]] 15% jeh'n phobble. She [[Albaanish]] y çhengey oikoil.
==Shennaghys==
Va'n Albaan coontit myr yn ayrn jiass jeh ''Illyria'' car [[Impiraght y Raue]]. Ayns ny Mean Eashyn, va ny h-Albaanee reirit liorish ram pooaraghyn joarree, goaill stiagh ny h-impiraghtyn [[Yn Impiraght Vaisantagh|Baisantagh]] as [[Stato da Màr|Veneeshagh]]. Car y 16oo eash va'n shassoo noi reill yn [[Yn Impiraght Ottomanagh|Impiraght Ottomanagh]] stiurit liorish [[Skanderbeg]]. Lurg kiare eashyn fo chosh ny Turkee, va hooar yn Albaan e neuchrogheydys ayns 1912. Ayns 1939, ren forsaghyn yn [[Yn Iddaal Ashistagh|Iddaal Ashistagh]] goaill yn Albaan as va'n çheer coontit myr ayrn jeh Reeriaght yn Iddaal derrey 1943. Lurg y [[Yn Nah Chaggey Dowanagh|Nah Chaggey Dowanagh]] haink yn Albaan dy ve ny steat neuchrogheydagh reesht, fo reill [[cummynys|chummynagh]]. Ren [[Enver Hoxha]] reirey yn çheer derrey laa e vaaish ayns 1985. Haink [[Ramiz Alia]] stiagh ayns e ynnyd as ren eh stiurey yn çheer trooid lhing chaghlaaee derrey ren yn Albaan filley er-ash dys y deynlaghys ayns 1992.
== Coondaeghyn as slystyn ==
[[Coadan:AlbaniaNumberedPrefectures.png|120px|thumb|Coondaeghyn ny h-Albaan]]
Ta'n Albaan rheynnit magh ayns 12 choontae ([[Albaanish]]: ''qark''/''qarku''). Ta dagh coontae fo-rheynnit magh ayns slystyn:
{| class="wikitable"
! !! Coontae
! Slystyn
! Preeu-valley
|-
| 1 || [[Coontae Berat|Berat]]
| [[Slyst Berat|Berat]], [[Slyst Kuçovë|Kuçovë]], [[Slyst Skrapar|Skrapar]]
| [[Berat]]
|-
| 2 || [[Coontae Dibër|Dibër]]
| [[Slyst Bulqizë|Bulqizë]], [[Slyst Dibër|Dibër]], [[Slyst Mat|Mat]]
| [[Peshkopi]]
|-
| 3 || [[Coontae Durrës|Durrës]]
| [[Slyst Durrës|Durrës]], [[Slyst Krujët|Krujë]]
| [[Durrës]]
|-
| 4 || [[Coontae Elbasan|Elbasan]]
| [[Slyst Elbasan|Elbasan]], [[Slyst Gramsh|Gramsh]], [[Slyst Librazhd|Librazhd]], [[Slyst Peqin|Peqin]]
| [[Elbasan]]
|-
| 5 || [[Coontae Fier|Fier]]
| [[Slyst Fier|Fier]], [[Slyst Lushnjë|Lushnjë]], [[Slyst Mallakastër|Mallakastër]]
| [[Fier]]
|-
| 6 || [[Coontae Gjirokastër|Gjirokastër]]
| [[Slyst Gjirokastër|Gjirokastër]], [[Slyst Përmet|Përmet]], [[Slyst Tepelenë|Tepelenë]]
| [[Gjirokastër]]
|-
| 7 || [[Coontae Korçë|Korçë]]
| [[Slyst Devoll|Devoll]], [[Slyst Kolonjë|Kolonjë]], [[Slyst Korçë|Korçë]], [[Slyst Pogradec|Pogradec]]
| [[Korçë]]
|-
| 8 || [[Coontae Kukës|Kukës]]
| [[Slyst Has|Has]], [[Slyst Kukës|Kukës]], [[Slyst Tropojë|Tropojë]]
| [[Kukës]]
|-
| 9 || [[Coontae Lezhë|Lezhë]]
| [[Slyst Kurbin|Kurbin]], [[Slyst Lezhë|Lezhë]], [[Slyst Mirditë|Mirditë]]
| [[Lezhë]]
|-
| 10 || [[Coontae Shkodër|Shkodër]]
| [[Slyst Malësi e Madhe|Malësi e Madhe]], [[Slyst Pukë|Pukë]], [[Slyst Shkodër|Shkodër]]
| [[Shkodër]]
|-
| 11 || [[Coontae Tirana|Tirana]]
| [[Slyst Kavajë|Kavajë]], [[Slyst Tirana|Tirana]]
| [[Tirana]]
|-
| 12 || [[Coontae Vlorë|Vlorë]]
| [[Slyst Delvinë|Delvinë]], [[Slyst Sarandë|Sarandë]], [[Slyst Vlorë|Vlorë]]
| [[Vlorë]]
|}
==Imraaghyn==
{{commonscat|Albania|yn Albaan}}
{{reflist}}
{{Yn Europey}}
{{RCAH}}
{{Gurneil eaghtyrys}}
{{Coord|41|N|20|E|type:country_region:AL|display=title}}
{{DEFAULTSORT:Albaan, yn}}
[[Ronney:Yn Albaan| ]]
[[Ronney:Ny çheeraghyn Balkanagh]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant yn Atlantagh Hwoaie]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[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:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1912]]
g1j0yetjeq8puqopc5ob1j7vlmwa073
393409
393394
2026-09-19T18:33:57Z
MacTire02
219
chengey ny jarroo-raaghyn as ny h-arraneyn
393409
wikitext
text/x-wiki
{{Ymmydcosoylagh|yn çheer Valkanagh|çheer 'syn Oarpey Heear Hwoaie|Nalbin}}
{{Kishtey fys çheer
|ennym = Pobblaght yn Albaan
|ennym_foddey_cadjincliaghtagh= {{nobold|Republika e Shqipërisë {{small|([[Albaanish]])}}}}
|ennym_gienneydagh = yn Albaan
|jarroo-raa = [[Ti Shqipëri, më jep nder, më jep emrin Shqipëtar]]
|çhengey_jarroo-raa = Albaanish
|çhyndaa_jarroo-raa = Ta shiu, yn Albaan, cur onnor dou, ta shiu cur yn ennym Albaanagh orrym
|arrane_ashoonagh = [[Himni i Flamurit]]
|çhengey_arrane_ashoonagh = Albaanish
|çhyndaa_arrane_ashoonagh = Arrane da'n Vrattagh
|coadan_arrane_ashoonagh = Hymni i Flamurit instrumental.ogg
|çhengaghyn_oikoil = [[Albaanish]]
|çhengaghyn_ardjynagh = {{hlist|[[Aromaanish]]|[[Greagish]]|[[Massadoanish]]}}
|sorçh_reiltys = [[Pobblaght pharlamaidagh]] unnaneagh
|dateEUentreilys =
|ushtey_sy_cheead = 4.7
|blein_LTS_CCK = 2008
|LTS_CCK = $21.160 billioon
|LTS_CCK_yn_dooinney = $6,649
|sorçh_kiondeeaght = Bunneeaght
|note_kiondeeaght =
|taghyrt1_bunnit = [[Yn Albaan Heuchrogheydagh]]
|date1_bunnit = 28 Sauin 1912
|taghyrt2_bunnit = [[Prinsaght yn Albaan]]
|date2_bunnit = 29 Jerrey Souree 1913
|taghyrt3_bunnit = [[Pobblaght yn Albaan (1925–1928)|Kied Phobblaght yn Albaan]]
|date3_bunnit = 31 Jerrey Geuree 1925
|taghyrt4_bunnit = [[Reeriaght yn Albaan]]
|date4_bunnit = 1 Mean Fouyir 1946
|taghyrt5_bunnit = [[Deynphobblaght yn Albaan|Nah Phobblaght yn Albaan]]
|date5_bunnit = 10 Jerrey Geuree 1946
|taghyrt6_bunnit = [[Bunraght Gheynphobblaght Hoshiallagh yn Albaan|Trass Pobblaght yn Albaan]]
|date6_bunnit = 28 Nollick 1976
|taghyrt7_bunnit = Kiarroo Pobblaght yn Albaan
|date7_bunnit = 29 Averil 1991
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|cctld = [[.al]]
|coad_çhellvane = 355
}}
She çheer 'syn [[yn Oarpey|Oarpey]] ee '''yn Albaan''' ({{langx|sq|Shqipëria}}) ny '''Pobblaght yn Albaan''' dy h-oikoil ({{langx|sq|Republika e Shqipërisë}}). T'ee soit ayns [[ny çheeraghyn Balkanagh]] as t'ee çhemmal rish [[Montenegro]] 'sy twoaie, rish [[Kosovo]] 'sy niar hwoaie, rish y [[yn Vassadoan Hwoaie|Vassadoan Hwoaie]] 'sy niar, as rish y [[yn Ghreag|y Ghreag]] 'sy jiass. 'Sy neear, ta'n Albaan çhemmal rish y [[Yn Vooir Aidreeatagh|Vooir Aidreeatagh]] 'sy neear as rish y [[Yn Vooir Ioonagh|Vooir Ionagh]] 'sy neear yiass. She [[Tiranë]] yn preeu-valley, as ta [[Durrës]], [[Elbasan]], as [[Vlora]] coontit mastey ny h-ard-valjyn scanshoil elley. Ta {{WD Earroo yn Phobble}} sleih cummal 'sy çheer ta {{cvt|28748|km2|sqmi}} er eaghtyr. She [[Yn Islam|Moslymee]] 55% jeh'n phobble, [[Cair-chredjue yn Niar|Cair-chredjuee]] 23% jeh'n phobble, as [[Catoleaghys Raueagh|Catolee Raueagh]] 15% jeh'n phobble. She [[Albaanish]] y çhengey oikoil.
==Shennaghys==
Va'n Albaan coontit myr yn ayrn jiass jeh ''Illyria'' car [[Impiraght y Raue]]. Ayns ny Mean Eashyn, va ny h-Albaanee reirit liorish ram pooaraghyn joarree, goaill stiagh ny h-impiraghtyn [[Yn Impiraght Vaisantagh|Baisantagh]] as [[Stato da Màr|Veneeshagh]]. Car y 16oo eash va'n shassoo noi reill yn [[Yn Impiraght Ottomanagh|Impiraght Ottomanagh]] stiurit liorish [[Skanderbeg]]. Lurg kiare eashyn fo chosh ny Turkee, va hooar yn Albaan e neuchrogheydys ayns 1912. Ayns 1939, ren forsaghyn yn [[Yn Iddaal Ashistagh|Iddaal Ashistagh]] goaill yn Albaan as va'n çheer coontit myr ayrn jeh Reeriaght yn Iddaal derrey 1943. Lurg y [[Yn Nah Chaggey Dowanagh|Nah Chaggey Dowanagh]] haink yn Albaan dy ve ny steat neuchrogheydagh reesht, fo reill [[cummynys|chummynagh]]. Ren [[Enver Hoxha]] reirey yn çheer derrey laa e vaaish ayns 1985. Haink [[Ramiz Alia]] stiagh ayns e ynnyd as ren eh stiurey yn çheer trooid lhing chaghlaaee derrey ren yn Albaan filley er-ash dys y deynlaghys ayns 1992.
== Coondaeghyn as slystyn ==
[[Coadan:AlbaniaNumberedPrefectures.png|120px|thumb|Coondaeghyn ny h-Albaan]]
Ta'n Albaan rheynnit magh ayns 12 choontae ([[Albaanish]]: ''qark''/''qarku''). Ta dagh coontae fo-rheynnit magh ayns slystyn:
{| class="wikitable"
! !! Coontae
! Slystyn
! Preeu-valley
|-
| 1 || [[Coontae Berat|Berat]]
| [[Slyst Berat|Berat]], [[Slyst Kuçovë|Kuçovë]], [[Slyst Skrapar|Skrapar]]
| [[Berat]]
|-
| 2 || [[Coontae Dibër|Dibër]]
| [[Slyst Bulqizë|Bulqizë]], [[Slyst Dibër|Dibër]], [[Slyst Mat|Mat]]
| [[Peshkopi]]
|-
| 3 || [[Coontae Durrës|Durrës]]
| [[Slyst Durrës|Durrës]], [[Slyst Krujët|Krujë]]
| [[Durrës]]
|-
| 4 || [[Coontae Elbasan|Elbasan]]
| [[Slyst Elbasan|Elbasan]], [[Slyst Gramsh|Gramsh]], [[Slyst Librazhd|Librazhd]], [[Slyst Peqin|Peqin]]
| [[Elbasan]]
|-
| 5 || [[Coontae Fier|Fier]]
| [[Slyst Fier|Fier]], [[Slyst Lushnjë|Lushnjë]], [[Slyst Mallakastër|Mallakastër]]
| [[Fier]]
|-
| 6 || [[Coontae Gjirokastër|Gjirokastër]]
| [[Slyst Gjirokastër|Gjirokastër]], [[Slyst Përmet|Përmet]], [[Slyst Tepelenë|Tepelenë]]
| [[Gjirokastër]]
|-
| 7 || [[Coontae Korçë|Korçë]]
| [[Slyst Devoll|Devoll]], [[Slyst Kolonjë|Kolonjë]], [[Slyst Korçë|Korçë]], [[Slyst Pogradec|Pogradec]]
| [[Korçë]]
|-
| 8 || [[Coontae Kukës|Kukës]]
| [[Slyst Has|Has]], [[Slyst Kukës|Kukës]], [[Slyst Tropojë|Tropojë]]
| [[Kukës]]
|-
| 9 || [[Coontae Lezhë|Lezhë]]
| [[Slyst Kurbin|Kurbin]], [[Slyst Lezhë|Lezhë]], [[Slyst Mirditë|Mirditë]]
| [[Lezhë]]
|-
| 10 || [[Coontae Shkodër|Shkodër]]
| [[Slyst Malësi e Madhe|Malësi e Madhe]], [[Slyst Pukë|Pukë]], [[Slyst Shkodër|Shkodër]]
| [[Shkodër]]
|-
| 11 || [[Coontae Tirana|Tirana]]
| [[Slyst Kavajë|Kavajë]], [[Slyst Tirana|Tirana]]
| [[Tirana]]
|-
| 12 || [[Coontae Vlorë|Vlorë]]
| [[Slyst Delvinë|Delvinë]], [[Slyst Sarandë|Sarandë]], [[Slyst Vlorë|Vlorë]]
| [[Vlorë]]
|}
==Imraaghyn==
{{commonscat|Albania|yn Albaan}}
{{reflist}}
{{Yn Europey}}
{{RCAH}}
{{Gurneil eaghtyrys}}
{{Coord|41|N|20|E|type:country_region:AL|display=title}}
{{DEFAULTSORT:Albaan, yn}}
[[Ronney:Yn Albaan| ]]
[[Ronney:Ny çheeraghyn Balkanagh]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant yn Atlantagh Hwoaie]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[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:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1912]]
4lgzy7qvw90fgd7oer5qr0zcmrtdd0t
Clowan:Yn Oarpey
10
2334
393444
372958
2026-09-19T21:52:15Z
MacTire02
219
+art
393444
wikitext
text/x-wiki
{{Navbox
|name = Yn Oarpey
|title = [[Çheeraghyn]] yn [[Yn Oarpey|Oarpey]]
|state = collapsed
|bodyclass = hlist
| group1 = [[Steat kionedeeagh|Steatyn kionedeeagh]]
| list1 =
[[yn Albaan]]{{·}} [[Andorra]]{{·}} [[Ard-valley yn Phaab]]{{sup|4}}{{·}} [[yn Armeain]]{{sup|2}}{{·}} [[yn Asserbajaan]]{{sup|1}}{{·}} [[yn Austeyr]]{{·}} [[Bosnia as Herzegovina]]{{·}} [[Yn Chassaghstaan|y Chassaghstaan]]{{sup|1}}{{·}} [[Yn Çheck|y Çheck]]{{·}} [[Yn Cheeprey|y Cheeprey]]{{sup|2}}{{·}} [[Yn Çheer Injil|y Çheer Injil]]{{·}} [[Yn Çhorshey|y Çhorshey]]{{sup|1}}{{·}} [[Yn Chroit|y Chroit]]{{·}} [[Yn Clovack|y Clovack]]{{·}} [[Yn Clovean|y Clovean]]{{·}} [[Yn Danvarg|y Danvarg]]{{·}} [[yn Eeslynn]]{{sup|3}}{{·}} [[yn Elveeish]]{{·}} [[yn Estaan]]{{·}} [[Finnlynn]]{{·}} [[Yn Ghermaan|y Ghermaan]]{{·}} [[Yn Ghreag|y Ghreag]]{{·}} [[yn Iddaal]]{{·}} [[Yn Latvey|y Latvey]]{{·}} [[Liechtenstein]]{{·}} [[Yn Litaan|y Litaan]]{{·}} [[Lucsemburg]]{{·}} [[Moldova]]{{·}} [[Monaco]]{{·}} [[Montenegro]]{{·}} [[Pobblaght Nerin|Nerin]]{{·}} [[Norlynn]]{{·}} [[yn Ookraan]]{{·}} [[Yn Pholynn|y Pholynn]]{{·}} [[Yn Phortiugal|y Phortiugal]]{{·}} [[Yn Rank|y Rank]]{{·}} [[Yn Reeriaght Unnaneysit|y Reeriaght Unnaneysit]]{{·}} [[Yn Romaan|y Romaan]]{{·}} [[Yn Roosh|y Roosh]]{{sup|1}}{{·}} [[San Marino]]{{·}} [[Yn Serb|y Serb]]{{·}} [[Yn Spaainey|y Spaainey]]{{·}} [[Yn Toolynn|y Toolynn]]{{·}} [[Yn Turkee|y Turkee]]{{sup|1}}{{·}} [[yn Ungaar]]{{·}} [[Yn Valta|y Valta]]{{·}} [[Yn Vassadoan Hwoaie|y Vassadoan Hwoaie]]{{·}} [[Yn Velaroosh|y Velaroosh]]{{·}} [[Yn Velg|y Velg]]{{·}} [[Yn Vulgeyr|y Vulgeyr]]
| group2 = {{longitem|[[Rolley steatyn as lieh-enney oc|Steatyn as lieh-enney oc]]}}
| list2 =
[[yn Abcaaish]]{{sup|2}}{{·}} [[Yn Cheeprey Hwoaie|y Cheeprey Hwoaie]]{{sup|2}}{{·}} [[Kosovo]]{{·}} [[Ossetia Yiass]]{{sup|2}}{{·}} [[Transnistria]]
| group3 = {{longitem|[[Croghane|Croghaneyn]]}}
| list3 =
{{Navbox|child
| group1 = Y Danvarg
| list1 = [[Ellanyn ny Geyrragh]]{{sup|3}} ([[Rheaym y Danvarg|çheer hene-reiltagh lesh Reeriaght y Danvarg]]
| group2 = Reeriaght Unnaneysit
| list2 =
{{Navbox|child
| list1 =
* [[Akrotiri as Dhekelia]]{{sup|2}} (Ardjyn Bunvuill Chionedeeagh){{·}} [[Gibraaltar]] ([[Thallooyn Harrish Mooir Goaldagh|Thalloo Harrish Mooir Ghoaldagh]])
| group2 = [[Croghane-crooin|Croghaneyn-crooin]]
| list2 = [[Bayleeaght Guernsey]] ([[Alderney]]{{·}} [[Guernsey]]{{·}} [[Yn Tark|y Tark]]){{·}} [[Jersee|Bayleeaght Yersee]]{{·}} [[Mannin]]
}}
}}
| group4 = {{longitem|Ardjyn er lheh as<br />kionedeeaght sthie oc}}<!--These are considered integral parts of their controlling state, but have a political arrangement which was decided through an international agreement.-->
| list4 =
{{Navbox|subgroup
| group1 = Finnlynn
| list1 =
* [[Åland]] ([[rheynn reiragh hene-reiltagh|ard hene-reiltagh]] fo [[coardail Åland]] jeh'n vlein 1921)
| group2 = Norlynn
| list2 =
* [[Svalbard]] ([[ard neu-chorpit]] fo [[Conaant Svalbard]])
| group3 = Reeriaght Unnaneysit
| list3 = [[Bretyn]]{{·}} [[Nalbin]]{{·}} [[Sostyn]]{{·}} [[Nerin Hwoaie]] ([[Çheeraghyn y Reeriaght Unnaneysit|çheer çheusthie jeh'n Reeriaght Unnaneysit]] fo'n [[Coardailys Jeheiney Caisht|Choardailys Goaldagh-Yernagh]])
}}
| below = {{Ubl
|{{sup|1}} Goll tessen y joarey cliaghtagh eddyr yn Oarpey as mooar-rheynn elley.
|{{sup|2}} Coontit myr ayrn jeh'n Oarpey son cooishyn cultooragh, politickagh, as shenndeeagh agh ta soit 'syn Aishey Heear.
|{{sup|3}} Ta [[Ellan#Ellanyn keayin|ellanyn keayin]] ayns naboonys yn Oarpey rang-oardit marish y vooar-rheynn hene ga nagh vel ad soit er yn ymmyr vooarheeragh.
|{{sup|4}} Gurnit lesh y [[Yn Toiag Chasherick|Toiag Chasherick]] ta kionedeeaght eck son Ard-valley yn Phaab.}}
{{icon|category}} '''[[:Ronney:Yn Oarpey|Ronney]]'''
}}<noinclude>
{{docamadys}}
<!-- Please add metadata to the <includeonly> section at the bottom of the /doc subpage -->
</noinclude>
p2rcgwylvhhurft5ys2uq7we3fvlnv4
393449
393444
2026-09-19T22:18:16Z
MacTire02
219
++
393449
wikitext
text/x-wiki
{{Navbox
|name = Yn Oarpey
|title = [[Çheer|Çheeraghyn]] yn [[Yn Oarpey|Oarpey]]
|state = autocollapse
|bodyclass = hlist
| group1 = [[Steat kionedeeagh|Steatyn kionedeeagh]]
| list1 =
[[yn Albaan]]{{·}} [[Andorra]]{{·}} [[Ard-valley yn Phaab]]{{sup|4}}{{·}} [[yn Armeain]]{{sup|2}}{{·}} [[yn Asserbajaan]]{{sup|1}}{{·}} [[yn Austeyr]]{{·}} [[Bosnia as Herzegovina]]{{·}} [[Yn Chassaghstaan|y Chassaghstaan]]{{sup|1}}{{·}} [[Yn Çheck|y Çheck]]{{·}} [[Yn Cheeprey|y Cheeprey]]{{sup|2}}{{·}} [[Yn Çheer Injil|y Çheer Injil]]{{·}} [[Yn Çhorshey|y Çhorshey]]{{sup|1}}{{·}} [[Yn Chroit|y Chroit]]{{·}} [[Yn Clovack|y Clovack]]{{·}} [[Yn Clovean|y Clovean]]{{·}} [[Yn Danvarg|y Danvarg]]{{·}} [[yn Eeslynn]]{{sup|3}}{{·}} [[yn Elveeish]]{{·}} [[yn Estaan]]{{·}} [[Finnlynn]]{{·}} [[Yn Ghermaan|y Ghermaan]]{{·}} [[Yn Ghreag|y Ghreag]]{{·}} [[yn Iddaal]]{{·}} [[Yn Latvey|y Latvey]]{{·}} [[Liechtenstein]]{{·}} [[Yn Litaan|y Litaan]]{{·}} [[Lucsemburg]]{{·}} [[Moldova]]{{·}} [[Monaco]]{{·}} [[Montenegro]]{{·}} [[Pobblaght Nerin|Nerin]]{{·}} [[Norlynn]]{{·}} [[yn Ookraan]]{{·}} [[Yn Pholynn|y Pholynn]]{{·}} [[Yn Phortiugal|y Phortiugal]]{{·}} [[Yn Rank|y Rank]]{{·}} [[Yn Reeriaght Unnaneysit|y Reeriaght Unnaneysit]]{{·}} [[Yn Romaan|y Romaan]]{{·}} [[Yn Roosh|y Roosh]]{{sup|1}}{{·}} [[San Marino]]{{·}} [[Yn Serb|y Serb]]{{·}} [[Yn Spaainey|y Spaainey]]{{·}} [[Yn Toolynn|y Toolynn]]{{·}} [[Yn Turkee|y Turkee]]{{sup|1}}{{·}} [[yn Ungaar]]{{·}} [[Yn Valta|y Valta]]{{·}} [[Yn Vassadoan Hwoaie|y Vassadoan Hwoaie]]{{·}} [[Yn Velaroosh|y Velaroosh]]{{·}} [[Yn Velg|y Velg]]{{·}} [[Yn Vulgeyr|y Vulgeyr]]
| group2 = {{longitem|[[Rolley steatyn as lieh-enney oc|Steatyn as lieh-enney oc]]}}
| list2 =
[[yn Abcaaish]]{{sup|2}}{{·}} [[Yn Cheeprey Hwoaie|y Cheeprey Hwoaie]]{{sup|2}}{{·}} [[Kosovo]]{{·}} [[Ossetia Yiass]]{{sup|2}}{{·}} [[Transnistria]]
| group3 = {{longitem|[[Croghane|Croghaneyn]]}}
| list3 =
{{Navbox|child
| group1 = Y Danvarg
| list1 = [[Ellanyn ny Geyrragh]]{{sup|3}} ([[Rheaym y Danvarg|çheer hene-reiltagh lesh Reeriaght y Danvarg]]
| group2 = Reeriaght Unnaneysit
| list2 =
{{Navbox|child
| list1 =
* [[Akrotiri as Dhekelia]]{{sup|2}} (Ardjyn Bunvuill Chionedeeagh){{·}} [[Gibraaltar]] ([[Thallooyn Harrish Mooir Goaldagh|Thalloo Harrish Mooir Ghoaldagh]])
| group2 = [[Croghane-crooin|Croghaneyn-crooin]]
| list2 = [[Bayleeaght Guernsey]] ([[Alderney]]{{·}} [[Guernsey]]{{·}} [[Yn Tark|y Tark]]){{·}} [[Jersee|Bayleeaght Yersee]]{{·}} [[Mannin]]
}}
}}
| group4 = {{longitem|Ardjyn er lheh as<br />kionedeeaght sthie oc}}<!--These are considered integral parts of their controlling state, but have a political arrangement which was decided through an international agreement.-->
| list4 =
{{Navbox|subgroup
| group1 = Finnlynn
| list1 =
* [[Åland]] ([[rheynn reiragh hene-reiltagh|ard hene-reiltagh]] fo [[coardail Åland]] jeh'n vlein 1921)
| group2 = Norlynn
| list2 =
* [[Svalbard]] ([[ard neu-chorpit]] fo [[Conaant Svalbard]])
| group3 = Reeriaght Unnaneysit
| list3 = [[Bretyn]]{{·}} [[Nalbin]]{{·}} [[Sostyn]]{{·}} [[Nerin Hwoaie]] ([[Çheeraghyn y Reeriaght Unnaneysit|çheer çheusthie jeh'n Reeriaght Unnaneysit]] fo'n [[Coardailys Jeheiney Caisht|Choardailys Goaldagh-Yernagh]])
}}
| below = {{Ubl
|{{sup|1}} Goll tessen y joarey cliaghtagh eddyr yn Oarpey as mooar-rheynn elley.
|{{sup|2}} Coontit myr ayrn jeh'n Oarpey son cooishyn cultooragh, politickagh, as shenndeeagh agh ta soit 'syn Aishey Heear.
|{{sup|3}} Ta [[Ellan#Ellanyn keayin|ellanyn keayin]] ayns naboonys yn Oarpey rang-oardit marish y vooar-rheynn hene ga nagh vel ad soit er yn ymmyr vooarheeragh.
|{{sup|4}} Gurnit lesh y [[Yn Toiag Chasherick|Toiag Chasherick]] ta kionedeeaght eck son Ard-valley yn Phaab.}}
{{icon|category}} '''[[:Ronney:Yn Oarpey|Ronney]]'''
}}<noinclude>
{{docamadys}}
<!-- Please add metadata to the <includeonly> section at the bottom of the /doc subpage -->
</noinclude>
a623wbik2ofxx0z23xf5lfeoupranb0
Yn Armeain
0
2434
393415
358326
2026-09-19T18:59:12Z
MacTire02
219
++
393415
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght yn Armeain
|ennym_foddey_cadjincliaghtagh= {{nobold|Հայաստանի Հանրապետություն {{small|([[Armeainish]])<br/>''Hayastani Hanrapetut'yun''}}}}
|ennym_gienneydagh = yn Armeain
|jalloo_brattagh = Flag of Armenia.svg
|jalloo_cleinney = Coat of arms of Armenia.svg
|jalloo_caslys = Armenia_(orthographic_projection).svg
|jarroo-raa = none
|arrane_ashoonagh = [[Mer Hayrenik|Մեր Հայրենիք]]
|tessen-lettyraghey_arrane_ashoonagh = Mer Hayrenik
|çhyndaa_arrane_ashoonagh = Y Çheer Dooie Ain
|çhengey_arrane_ashoonagh = Armeainish
|coadan = Mer Hayrenik instrumental.ogg
|çhengaghyn_oikoil = [[Armeainish]]
|sorçh_çhengaghyn = Çhengaghyn er-enney
|çhengaghyn = {{rolley yn-filley|title=Rolley:|[[Assyrianish]]|[[Germaanish]]|[[Greagish]]|[[Kurdish]]{{efn|Ta'n rolley gra dy nee çhengey er lheh anchasley rish y Churdish ee çhengey ny Yazidee}}|[[Ookraanish]]|[[Rooshish]]}}
|çhengaghyn_ardjynagh =
|sorçh_reiltys = [[Pobblaght pharlamaidagh unnaneagh]]
|dateEUentreilys =
|eaghtyr_km2 = 29,800
|ushtey_sy_cheead = 4.71
|blein_LTS_CCK = 2007
|LTS_CCK = $17.1 billioon
|rhenk_LTS_CCK =
|LTS_CCK_yn_dooinney = $4,941
|rhenk_LTS_CCK_yn_dooinney =
|sorçh_kiondeeaght = Crooaght as seyrsnys
|note_kiondeeaght =
|taghyrt1_bunnit = Tradishoonagh
|date1_bunnit = 11 Luanistyn, 2492 RC
|taghyrt2_bunnit = [[Urartu]] fo stiurey [[Aramu]]
|date2_bunnit = 840yn RC
|taghyrt3_bunnit = [[Reeriaght Orontid]]
|date3_bunnit = 560 RC
|taghyrt4_bunnit = [[Reeriaght yn Armeain]]
|date4_bunnit = 190 RC
|taghyrt5_bunnit = [[Agglish Ostyllagh yn Armeain]]
|date5_bunnit = 301 BNJ
|taghyrt6_bunnit = [[Pobblaght Gheynlagh yn Armeain]]
|date6_bunnit = 28 Boaldyn 1918
|taghyrt7_bunnit = Seyrsnys veih'n [[UPSS]]<br />- Fogrit magh<br />- Er enney<br />- Jeant
|date7_bunnit = <br />23 Luanistyn 1990<br />21 Mean Fouyir 1991<br />25 Nollick 1991
|cctld = [[.am]]
|coad_çhellvane = 374
}}
She çheer ayns [[yn Aishey]] ee yn '''Armeain''' ({{langx|hy|Հայաստան}} {{tessen-lettyraghey|hy|Hayastan}}) ny '''Pobblaght yn Armeain''' ({{lang|hy|Հայաստանի Հանրապետություն}} {{tessen-lettyraghey|hy|Hayastani Hanrapetut'yun}}). Hooar yn Armeain e neuchrogheydys veih'n [[UPSS]] ayns 1991. Ta'n Armeain çhemmit liorish [[yn Turkee|y Turkee]], [[yn Çhorshey|y Çhorshey]], [[yn Asserbajaan]], as [[yn Eeraan]]. She [[Yerevan]] [[preeu-valley]] ny çheerey.
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{Yn Aishey}}
{{Yn Europey}}
{{gurneil eaghtyrys}}
{{DEFAULTSORT:Armeain, yn}}
{{bun}}
[[Ronney:Yn Armeain| ]]
[[Ronney:Yn Choagaash]]
[[Ronney:Steatyn Creestee]]
[[Ronney:Çheeraghyn yn Aishey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn thallooinit|Armeain]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny Steatyn Seyrey]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Tarmaynagh Oaraishanagh]]
[[Ronney:Pobblaghtyn|Armeain]]
[[Ronney:Yn Choagaash Yiass]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1918]]
[[Ronney:Steatyn as thallooyn jee-vunnit 'sy vlein 1920]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1991]]
[[Ronney:Çheeraghyn yn Aishey Heear]]
[[Ronney:Steatyn as lieh-enney oc]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1918]]
[[Ronney:Bunneeaghtyn 'syn Aishey 'sy vlein 1918]]
[[Ronney:Jee-vunneeaghtyn 'syn Oarpey 'sy vlein 1920]]
[[Ronney:Jee-vunneeaghtyn 'syn Aishey 'sy vlein 1920]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'syn Aishey 'sy vlein 1991]]
nnnvxiccf7lurkm7vdcbidmmxjbpqts
Montenegro
0
2451
393443
358806
2026-09-19T21:51:50Z
MacTire02
219
++
393443
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym_dooghyssagh = Montenegro
|ennym_foddey_cadjincliaghtagh= {{nobold|Crna Gora<br />Црна Гора {{small|([[Montenegrish]])}}<br/>{{small|{{Rolley yn-filley
|titlestyle = background:transparent;text-align:center;line-height:normal;
|title=4 çhengey ayns ymmyd oikoil{{efn|Çhengaghyn as ymmyd oikoil oc: [[Serbish]], [[Bosnish]], [[Albaanish]], as [[Croitish]]<ref name="Constitution of Montenegro">{{cite book|url=http://www.wipo.int/wipolex/en/text.jsp?file_id=187544|title=Bunraght Montenegro|chapter-url=http://www.wipo.int/wipolex/en/text.jsp?file_id=187544#LinkTarget_1506|chapter=Language and alphabet Article 13 |publisher=[[WIPO]]|date=19 Jerrey Fouyir 2007}}</ref>}}|
Црна Гора<br/>Crna Gora {{small|([[Serbish]])}}|Crna Gora {{small|([[Bosnish]])}}|Crna Gora {{small|([[Croitish]])}}|Mali i Zi {{small|([[Albaanish]])}}}}
}}
}}
|ennym_gienneydagh = Montenegro
|jalloo_brattagh = Flag of Montenegro.svg
|jalloo_cleinney = Coat of arms of Montenegro.svg
|jalloo_caslys = Europe-Montenegro.svg
|jarroo-raa =
|arrane_ashoonagh = "[[Oj, svijetla majska zoro]]"<br />"O, Madran Gial dy Voaldyn"{{parabr}}{{center|[[Coadan:National Anthem of Montenegro.ogg]]}}
|çhengaghyn_oikoil = [[Montenegrish]]
|sorçh_çhengaghyn = Çhengaghyn as<br/>ymmyd oikoil oc
|çhengaghyn = {{hlist|[[Serbish]]|[[Bosnish]]|[[Croitish]]|[[Albaanish]]}}
|preeu-valley = [[Podgorica]]
|noteyn_preeu-valley =She Podgorica yn preeu-valley reiragh as ta [[Cetinje]] coontit myr y shenn phreeu-valley reeoil.
|latd=42 |latm=47 |latNS=N |longd=19 |longm=28 |longEW=E |latNSgael=Hwoaie |longEWgael=Hiar
|balley_smoo = preeu-valley
|sorçh_reiltys = [[Pobblaght pharlamaidagh unnaneagh]]
|enmys1_fer-toshee = [[Eaghtyrane Montenegro|Eaghtyrane]]
|ennym1_fer-toshee = [[Jakov Milatović]]
|enmys2_fer-toshee = [[Ard-vinishter Montenegro|Ard-vinishter]]
|ennym2_fer-toshee = [[Milojko Spajić]]
|enmys3_fer-toshee = [[Eaghtyrane Pharlamaid Montenegro|Eaghtyrane y Pharlamaid]]
|ennym3_fer-toshee = [[Andrija Mandić]]
|eaghtyr_km2 = 13,812
|eaghtyr_mi_ker = 5,019
|eaghtyr_rhenk = 160oo
|ushtey_sy_cheead = 1.5
|pobble_ooley = 678,177
|blein_ooley_pobble = 2008
|rhenk_ooley_pobble = 162h
|pobble_coontey = {{WD Earroo yn Phobble cour Kishtey Fys}}
|blein_coontey_pobble =
|rhenk_coontey_pobble =
|glooaght_pobble_km2 = 50
|glooaght_pobble_mi_ker = 115.6
|rhenk_glooaght_pobble = 121d
|blein_LTS_CCK = 2007
|LTS_CCK = $6.135 billioon
|rhenk_LTS_CCK = 144oo
|LTS_CCK_yn_dooinney = $10,225
|rhenk_LTS_CCK_yn_dooinney = 60oo
|LTS_ennymagh = $3.557 billioon
|rhenk_LTS_ennymagh = 138oo
|blein_LTS_ennymagh = 2007
|LTS_ennymagh_yn_dooinney = $5,928
|rhenk_LTS_ennymagh_yn_dooinney = 58oo
|blein_ALD = 2004
|ALD = 0.788
|rhenk_ALD = 72h
|ronney_ALD = <font color="#FFCC00">meanagh</font>
|Gini =
|blein_Gini =
|sorçh_kiondeeaght = Bunneeaght
|taghyrt1_bunnit = [[Prinsaght Zeta|Zeta]]
|date1_bunnit = 1356
|taghyrt2_bunnit = [[Prinse-Aspickys Montenegro]]
|date2_bunnit = 1516
|taghyrt3_bunnit = [[Prinsaght Montenegro]]
|date3_bunnit = 13 Mayrnt 1852
|taghyrt4_bunnit = [[Conaant Verleen (1878)|Conaant Verleen]]
|date4_bunnit = 13 Jerrey Souree 1878
|taghyrt5_bunnit = [[Reeriaght Montenegro]]
|date5_bunnit = 28 Luanistyn 1910
|taghyrt6_bunnit = [[Reeriaght yn Yugoslaavey]]
|date6_bunnit = 26 Sauin 1918
|taghyrt7_bunnit = [[Pobblaght Chonastagh Hoshiallagh yn Yugoslaavey|PCH yn Yugoslaavey]]
|date7_bunnit = 29 Sauin 1945
|taghyrt8_bunnit = [[Yn Serb as Montenegro|Y Serb as Montenegro]]
|date8_bunnit = 27 Averil 1992
|taghyrt9_bunnit = [[Refrane cour Neuchrogheydys Montenegro, 2006|Refrane cour neuchrogheydys]]
|date9_bunnit = 21 Boaldyn 2006
|dateEUentreilys =
|argid = [[euro]]{{efn|Ta'n [[euro]] ymmydit myr argid oikoil ny çheerey, shaghrey magh nagh vel Montenegro soit 'sy [[Eurozone]]}}
|coad_argid = EUR
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +1
|traa_ynnydagh_TTLS = [[Traa souree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +2
|cctld = [[.me]]
|coad_çhellvane = 382
}}
She çheer 'syn [[yn Oarpey|Oarpey]] eh '''Montenegro'''. T'eh çhemmit liorish [[Bosnia as Herzegovina]] 'sy twoaie, [[Yn Serb|y Serb]] 'sy niar hwoaie, [[Kosovo]] 'sy niar, [[yn Albaan]] 'sy niar yiass, as [[Yn Chroit|y Chroit]] 'sy neear hwoaie. She [[Podgorica]] ([[Abbyrlhit Kyrillagh|Kyrillagh]]: Подгорица) yn preeu-valley.
== Bun-ocklaght ==
Ta'n fockle "Montenegro" hene çheet ass çhyndaays lettyroil y [[Veneeshish]] jeh'n abbyrt Herbagh "''Crna Gora''", ta meanal "Slieau Doo."
== Noteyn ==
{{notelist}}
== Imraaghyn ==
{{reflist}}
{{Yn Europey}}
{{RCAH}}
{{Gurneil eaghtyrys}}
{{bun}}
[[Ronney:Montenegro| ]]
[[Ronney:Ny çheeraghyn Balkanagh]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant yn Atlantagh Hwoaie]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 2006]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 2006]]
p7cc74xkkk67xph1exn8c57j37x2k2n
Yn Çheer Injil
0
2591
393453
374056
2026-09-20T02:26:24Z
MacTire02
219
++
393453
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Y Çheer Injil
|ennym_foddey_cadjincliaghtagh= {{nobold|Nederland {{small|([[Ollanish]])}}}}
|ennym_gienneydagh = y Çheer Injil
|jalloo_brattagh = Flag of the Netherlands.svg
|jalloo_cleinney = Rijkswapen_der_Nederlanden.svg
|jalloo_caslys = EU-Netherlands.svg
|jarroo-raa = [[Armys y Çheer Injil|Je maintiendrai]]
|çhyndaa_jarroo-raa = Shassee mee dy shickyr
|çhengey_jarroo-raa = Frangish
|arrane_ashoonagh = [[Wilhelmus]]
|çhyndaa_arrane_ashoonagh = Illiam
|coadan_arrane_ashoonagh = United States Navy Band - Het Wilhelmus (tempo corrected).ogg
|çhengey_arrane_ashoonagh = Ollanish
|çhengaghyn_oikoil = [[Ollanish]]
|çhengaghyn_ardjynagh = {{hlist|[[Freeshlannish Heear]]|[[Papiamento]]|[[Baarle 'sy Çheer Injil|Baarle]]}}
|sorçh_reiltys = [[Monarkaght vunraghtoil]] [[Corys parlamaidagh|pharlamaidagh]] [[steat unnaneagh|unnaneagh]]
|dateEUentreilys = 25 Mayrnt 1957
|ushtey_sy_cheead = 18.41
|blein_LTS_CCK = 2008
|LTS_CCK = $677.490 billoon<ref name=imf2>{{cite web|url=http://www.imf.org/external/pubs/ft/weo/2009/02/weodata/weorept.aspx?sy=2006&ey=2009&scsm=1&ssd=1&sort=country&ds=.&br=1&c=138&s=NGDPD%2CNGDPDPC%2CPPPGDP%2CPPPPC%2CLP&grp=0&a=&pr.x=80&pr.y=13 |title=Netherlands|publisher=International Monetary Fund|accessdate=01-10-2009|language=Baarle}}</ref>
|rhenk_LTS_CCK =
|LTS_CCK_yn_dooinney = $40,558<ref name=imf2/>
|rhenk_LTS_CCK_yn_dooinney = 10oo
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[Yn Spaainey|Spaainey]]
|taghyrt1_bunnit = Fogrit
|date1_bunnit = 26 Jerrey Souree 1581
|taghyrt2_bunnit = Er enney
|date2_bunnit = 30 Jerrey Geuree 1648
|noteyn_argid = Va'n [[guilder Ollanagh]] ymmydit roish 2002.
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|tld = [[.nl]]
|noteyn_tld = Ta [[.eu]] ymmydit myrane lesh çheeraghyn elley [[yn Unnaneys Oarpagh]].
|coad_çhellvane = 31
}}
Ta'n '''Çheer Injil''' ny '''Çheer y Vagheragh''' ({{langx|nl|Nederland}}, {{ASE-nl|ˈneːdərlɑnt|pron|Nl-Nederland.ogg}}) ny çheer 'syn [[Yn Oarpey Heear|Oarpey Heear]], as t'ee jannoo seose y chooid vooar jeh [[Reeriaght y Çheer Injil]]. T'ee ny [[reeriaght vunraghtoil]] [[deynlagh|gheynlagh]] [[pharlamaidagh]]. Ta'n Çheer Injil çhemmit liorish [[Mooir Hostyn]] da'n twoaie as da'n sheear, liorish [[Yn Velg|y Velg]] da'n jiass, as liorish [[Yn Ghermaan|y Ghermaan]] da'n shiar. She [[Amsterdam]] y [[preeu-valley]] as she ynnyd y reiltys [[yn Haag]].
Ta'n ennym '''[[yn Ollan]]''' currit er y Çheer Injil dy mennick, agh cha nel eh shen kiart - ta'n [[Yn Ollan Hwoaie|Ollan Hwoaie]] as [[yn Ollan Yiass]] nyn gueiggaghyn ta jannoo seose y Çheer Injil. Ta ny focklyn ''Ollanagh'' ny ''Ollanish'' ymmydit son cur sheese er pobble, çhengey, as dagh red bentyn rish y Çheer Injil.
Va'n Çheer Injil nane jeh ny kied [[deynlaghys ard-whaiylagh|deynlaghtyn ard-whaiylagh]], as v'ee ny çheer noa-emshiragh veih'n toshiaght. Mastey ught-lhiannooyn elley ta'n çheer ny bun-oltey jeh'n [[Unnaneys Oarpagh]] (UO), yn [[RCAH]], yn [[RCTL]], yn [[Reagheydys Traghtee yn Theihill|SHT]], as ta [[reill Kyoto]] fo-screeuit eck. Myrane lesh [[Yn Velg|y Velg]] as [[Lucsemburg]] t'ee jannoo seose yn unnaneys tarmaynagh [[Benelux]]. Ta'n çheer myr oalan son queig quaiylyn eddyrashoonagh: [[Quaiyl Veayn son Eddyr-Chiartaghey]], [[Quaiyl Eddyrashoonagh y Chairys]], [[Yn Ving Chimmeeagh Eddyrashoonagh son yn Eear-Yugoslaavey|y Ving Chimmeeagh Eddyrashoonagh son yn Eear-Yugoslaavey]], [[Yn Whaiyl Chimmeeagh Eddyrashoonagh|y Whaiyl Chimmeeagh Eddyrashoonagh]] as [[Yn Ving Er Lheh son y Livaan|y Ving Er Lheh son y Livaan]]. Ta ny kied kaire jeu nyn soie 'syn [[Yn Haag|Haag]] myrane lesh y jantys fys kimmeeagh jeh'n UO, [[Europol]]. Lesh shen hooar y çheer yn ennym "preeu-valley leighoil y theihll".<ref>{{cite book | last = van Krieken | first = Peter J. | coauthors = David McKay | title = The Hague: Legal Capital of the World | publisher = Cambridge University Press | year= 2005 | isbn = 9067041858 }}, er lheh, ''"In the 1990s, during his term as United Nations Secretary-General, Boutros Boutros-Ghali started calling The Hague the world's legal capital"''</ref>
Ta'n Çheer Injil ny çheer injil dy çheeroaylleagh, lesh 27% jeh eaghtyr as 60% jeh sleih-earroo ny çheerey fo ardjid ny marrey.<ref name=brit>{{cite web
| title = The Netherlands: The land » Relief
| publisher = [[Encyclopædia Britannica]]
| url = http://www.britannica.com/EBchecked/topic/409956/The-Netherlands
| accessdate = 2008-08-25}}</ref><ref name=geog>{{cite web
| last = Rosenberg
| first = Matt
| title = Polders and Dykes of the Netherlands
| publisher = About.com: Geography
| url = http://geography.about.com/od/specificplacesofinterest/a/dykes.htm
| accessdate = 2008-08-23
| archive-date = 2009-02-01
| archive-url = https://web.archive.org/web/20090201074700/http://geography.about.com/od/specificplacesofinterest/a/dykes.htm
| url-status = dead
}}</ref> Va ardjyn mooarey mooadit trooid [[lhiasaghey thallooin]] as freilt trooid corys yl-chast jeh [[claddagh|claddee]] as [[cleigh]]yn. Ta cooid vooar jeh'n Çheer Injil jeant seose jeh inveryn da tree awinyn Oarpagh mooarey, as ad jannoo seose [[deltey ny Rhiney-Meuse-Scheldt]]. Ta'n chooid smoo jeh'n çheer feer rea, agh ta cruink veggey ry-akin 'sy niar yiass as ta reaynyn jeh cruink injil ayns mean y çheer.
Ta'n Çheer Injil feer cummaltit lesh glooaght ard y phobble. T'ee dy mie er enney son ny [[mwyllin geayee|mwyljyn geayee]], [[laayl]]yn, [[braag vaidjagh|braaigyn maidjagh]], [[crockanys Ollanagh]], [[gouda (caashey)|caashey Gouda]], [[ellyn reayrtagh|ellyneyryn reayrtagh]], [[daawheeyl]]yn, as ayns bishaght, towseyn tradishoonagh as grayseyn theayagh lheid as y [[fuillaghtys|fuillaghtys soshialagh]]. Ayns ny bleeantyn shoh chaie haink er y çheer dy ve mie er enney er son ny polaaseeyn libraalagh lesh [[Polasee druggaghyn 'sy Çheer Injil|druggaghyn]], [[Streebeeys 'sy Çheer Injil|streebeeys]], [[Kiartyn LGDH 'sy Çheer Injil|homocheintys]], [[Myghin-varroo 'sy Çheer Injil|myghin-varroo]] as [[geayrtnys 'sy Çheer Injil|geayrtnys]].
Ta'n Çheer Injil rang-oardit 'sy 12-h ynnyd mastey 157 çheeraghyn myr nane jeh ny tarmaynyssyn capitlagh smoo seyr-vargagh 'sy theihll rere [[Rolley çheeraghyn rere seyrsnys tarmaynagh|Ayndagh Seyrsnys Tarmaynagh]].<ref>[https://web.archive.org/web/20080823212557/http://www.heritage.org/Index/country.cfm?id=Netherlands Netherlands], [[Ayndagh Seyrsnys Tarmaynagh]]</ref>
==Noteyn==
{{notelist}}
== Imraaghyn ==
{{reflist}}
{{Yn Europey}}
{{Çheeraghyn yn Unnaneys Oarpagh}}
{{RCAH}}
{{Gurneil eaghtyrys}}
{{Coord|52|N|6|E|type:country|display=title}}
{{DEFAULTSORT:Cheer Injil, Yn}}
{{bun}}
[[Ronney:Yn Çheer Injil| ]]
[[Ronney:Benelux|*Che]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Reeriaght y Çheer Injil]]
[[Ronney:Ny Çheeraghyn Injil|*]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant yn Atlantagh Hwoaie]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Oarpagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey yn RCTL]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1815]]
30fgluser7ok55z9m1ddn0fv1ig6655
Bosnia as Herzegovina
0
2631
393431
360879
2026-09-19T20:37:20Z
MacTire02
219
++; ny smoo ry-yannoo
393431
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Bosna as Herzegovina
|ennym_foddey_cadjincliaghtagh= {{nobold|Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Bosnish]])}}<br/>Bosna i Hercegovina {{small|([[Croitish]])}}<br/>Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Serbish]])}}}}
|ennym_gienneydagh = Bosnia as Herzegovina
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh Bosnia as Herzegovina|Državna himna Bosne i Hercegovine"<br/>"Државна химна Босне и Херцеговине]]
|çhyndaa_arrane_ashoonagh = Arrane ashoonagh Bosnia as Herzegovina
|çhengaghyn_oikoil = Çhengey oikoil erbee<ref name="rights">{{cite journal|title=Language rights and language justice in the constitutions of the world|journal=Language Problems & Language Planning|volume=28|issue=1|pages=11–24|first=Eduardo D.|last=Faingold|doi=10.1075/lplp.28.1.03fai|date=2004|s2cid=144311672|url=https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|archive-url=https://web.archive.org/web/20200213004700/https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|url-status=dead|archive-date=2020-02-13| issn = 0272-2690 }}</ref><ref>{{cite book|title=Rights Before Courts: A Study of Constitutional Courts in Postcommunist States of Central and Eastern Europe|url=https://archive.org/details/rightsbeforecour00sadu|url-access=limited|first=Wojciech|last=Sadurski|author-link=Wojciech Sadurski|date=2005|publisher=Springer|page=[https://archive.org/details/rightsbeforecour00sadu/page/n357 342]|isbn=1402030061}}</ref><ref name="Footitt">{{cite book|title=Languages at War: Policies and Practices of Language Contacts in Conflict|first1=Hilary|last1=Footitt|first2=Michael|last2=Kelly|date=2012|location=Basingstoke|publisher=Palgrave Macmillan|pages=111–120|isbn=978-0230368774}}</ref>
|çhengaghyn_ardjynagh = {{hlist|[[Bosnish]]|[[Croitish]]|[[Serbish]]}}
|sorçh_reiltys = [[Corys stiureydagh|Pobblaght stiureydagh]] pharlamaidagh [[pobblaght chonastagh|chonastagh]]
|enmys1_fer-toshee = [[Ard-reihdagh ry hoi Bosnia as Herzegovina|Ard-reihdagh]]
|ennym1_fer-toshee = [[Christian Schmidt]]
|enmys2_fer-toshee = [[Caairliagh Eaghtyraneys Bosnia as Herzegovina|Caairliagh yn Eaghtyraneagh]]
|ennym2_fer-toshee = [[Željka Cvijanović]]
|enmys3_fer-toshee = [[Eaghtyraneys Bosnia as Herzegovina]]
|ennym3_fer-toshee = {{ubl|[[Denis Bećirović]]|[[Željka Cvijanović]]|[[Željko Komšić]]}}
|dateEUentreilys =
|blein_LTS_CCK = 2008
|LTS_CCK = $42.998 billioon
|rhenk_LTS_CCK = 94oo
|LTS_CCK_yn_dooinney = $10,714
|rhenk_LTS_CCK_yn_dooinney = 87oo
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght =
|taghyrt1_bunnit = Crooit
|date1_bunnit = 29 Luanistyn 1189
|taghyrt2_bunnit = Reeriaght bunnit
|date2_bunnit = 26 Jerrey Fouyir 1377
|taghyrt3_bunnit = Cummaltys ny [[Yn Impiraght Ottomanagh|Turkee]]
|date3_bunnit = 1463
|taghyrt4_bunnit = Laa Ashoonagh
|date4_bunnit = 25 Mee Houney 1943
|taghyrt5_bunnit = Seyrsnys veih'n [[Yn Yugoslaavey|Yugoslaavey]]
|date5_bunnit = 1 Mayrnt 1992
|taghyrt6_bunnit = Er enney
|date6_bunnit = 6 Averil 1992
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|cctld = [[.ba]]
|coad_çhellvane = 387
}}
[[Coadan:Map Bih entities.png|thumb|250px|right]]
She çheer 'syn [[yn Europey|Europey]] ee '''Bosnia as Herzegovina'''. T'ee soit ayns [[ny Çheeraghyn Balkanagh]]. She [[Sarajevo]] yn preeu-valley.
==Imraaghyn==
{{reflist}}
{{Yn Europey}}
{{gurneil eaghtyrys}}
{{coord|44|N|18|E|region:BA_type:country_scale:5000000|display=title}}
{{bun}}
[[Ronney:Bosnia as Herzegovina| ]]
[[Ronney:Ny çheeraghyn Balkanagh]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Ardjyn rheynnit]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1992]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
16rauyfhate8goe9a8ubsmlbezb4m4q
393432
393431
2026-09-19T20:38:16Z
MacTire02
219
++
393432
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Bosna as Herzegovina
|ennym_foddey_cadjincliaghtagh= {{nobold|Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Bosnish]])}}<br/>Bosna i Hercegovina {{small|([[Croitish]])}}<br/>Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Serbish]])}}}}
|ennym_gienneydagh = Bosnia as Herzegovina
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh Bosnia as Herzegovina|Državna himna Bosne i Hercegovine"<br/>"Државна химна Босне и Херцеговине]]
|çhyndaa_arrane_ashoonagh = Arrane ashoonagh Bosnia as Herzegovina
|çhengaghyn_oikoil = Çhengey oikoil erbee<ref name="rights">{{cite journal|title=Language rights and language justice in the constitutions of the world|journal=Language Problems & Language Planning|volume=28|issue=1|pages=11–24|first=Eduardo D.|last=Faingold|doi=10.1075/lplp.28.1.03fai|date=2004|s2cid=144311672|url=https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|archive-url=https://web.archive.org/web/20200213004700/https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|url-status=dead|archive-date=2020-02-13| issn = 0272-2690 }}</ref><ref>{{cite book|title=Rights Before Courts: A Study of Constitutional Courts in Postcommunist States of Central and Eastern Europe|url=https://archive.org/details/rightsbeforecour00sadu|url-access=limited|first=Wojciech|last=Sadurski|author-link=Wojciech Sadurski|date=2005|publisher=Springer|page=[https://archive.org/details/rightsbeforecour00sadu/page/n357 342]|isbn=1402030061}}</ref><ref name="Footitt">{{cite book|title=Languages at War: Policies and Practices of Language Contacts in Conflict|first1=Hilary|last1=Footitt|first2=Michael|last2=Kelly|date=2012|location=Basingstoke|publisher=Palgrave Macmillan|pages=111–120|isbn=978-0230368774}}</ref>
|çhengaghyn_ardjynagh = {{hlist|[[Bosnish]]|[[Croitish]]|[[Serbish]]}}
|sorçh_reiltys = [[Corys stiureydagh|Pobblaght stiureydagh]] pharlamaidagh [[pobblaght chonastagh|chonastagh]]
|enmys1_fer-toshee = [[Ard-reihdagh ry hoi Bosnia as Herzegovina|Ard-reihdagh]]
|ennym1_fer-toshee = [[Christian Schmidt]]
|enmys2_fer-toshee = [[Caairliagh Eaghtyraneys Bosnia as Herzegovina|Caairliagh yn Eaghtyraneagh]]
|ennym2_fer-toshee = [[Željka Cvijanović]]
|enmys3_fer-toshee = [[Eaghtyraneys Bosnia as Herzegovina]]
|ennym3_fer-toshee = {{ubl|[[Denis Bećirović]]|[[Željka Cvijanović]]|[[Željko Komšić]]}}
|dateEUentreilys =
|blein_LTS_CCK = 2008
|LTS_CCK = $42.998 billioon
|rhenk_LTS_CCK = 94oo
|LTS_CCK_yn_dooinney = $10,714
|rhenk_LTS_CCK_yn_dooinney = 87oo
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght =
|taghyrt1_bunnit = Crooit
|date1_bunnit = 29 Luanistyn 1189
|taghyrt2_bunnit = Reeriaght bunnit
|date2_bunnit = 26 Jerrey Fouyir 1377
|taghyrt3_bunnit = Cummaltys ny [[Yn Impiraght Ottomanagh|Turkee]]
|date3_bunnit = 1463
|taghyrt4_bunnit = Laa Ashoonagh
|date4_bunnit = 25 Mee Houney 1943
|taghyrt5_bunnit = Seyrsnys veih'n [[Yn Yugoslaavey|Yugoslaavey]]
|date5_bunnit = 1 Mayrnt 1992
|taghyrt6_bunnit = Er enney
|date6_bunnit = 6 Averil 1992
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|argid = [[Mark so-çhyndaa Bosnia as Herzegovina|Mark so-çhyndaa]]
|cctld = [[.ba]]
|coad_çhellvane = 387
}}
[[Coadan:Map Bih entities.png|thumb|250px|right]]
She çheer 'syn [[yn Europey|Europey]] ee '''Bosnia as Herzegovina'''. T'ee soit ayns [[ny Çheeraghyn Balkanagh]]. She [[Sarajevo]] yn preeu-valley.
==Imraaghyn==
{{reflist}}
{{Yn Europey}}
{{gurneil eaghtyrys}}
{{coord|44|N|18|E|region:BA_type:country_scale:5000000|display=title}}
{{bun}}
[[Ronney:Bosnia as Herzegovina| ]]
[[Ronney:Ny çheeraghyn Balkanagh]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Ardjyn rheynnit]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1992]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
maglve2ho3aqcigum9u05gmtznpt4tb
393437
393432
2026-09-19T21:20:09Z
MacTire02
219
++
393437
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Bosna as Herzegovina
|ennym_foddey_cadjincliaghtagh= {{nobold|Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Bosnish]])}}<br/>Bosna i Hercegovina {{small|([[Croitish]])}}<br/>Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Serbish]])}}}}
|ennym_gienneydagh = Bosnia as Herzegovina
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh Bosnia as Herzegovina|Državna himna Bosne i Hercegovine"<br/>"Државна химна Босне и Херцеговине]]
|çhyndaa_arrane_ashoonagh = Arrane ashoonagh Bosnia as Herzegovina
|çhengaghyn_oikoil = Çhengey oikoil erbee<ref name="rights">{{cite journal|title=Language rights and language justice in the constitutions of the world|journal=Language Problems & Language Planning|volume=28|issue=1|pages=11–24|first=Eduardo D.|last=Faingold|doi=10.1075/lplp.28.1.03fai|date=2004|s2cid=144311672|url=https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|archive-url=https://web.archive.org/web/20200213004700/https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|url-status=dead|archive-date=2020-02-13| issn = 0272-2690 }}</ref><ref>{{cite book|title=Rights Before Courts: A Study of Constitutional Courts in Postcommunist States of Central and Eastern Europe|url=https://archive.org/details/rightsbeforecour00sadu|url-access=limited|first=Wojciech|last=Sadurski|author-link=Wojciech Sadurski|date=2005|publisher=Springer|page=[https://archive.org/details/rightsbeforecour00sadu/page/n357 342]|isbn=1402030061}}</ref><ref name="Footitt">{{cite book|title=Languages at War: Policies and Practices of Language Contacts in Conflict|first1=Hilary|last1=Footitt|first2=Michael|last2=Kelly|date=2012|location=Basingstoke|publisher=Palgrave Macmillan|pages=111–120|isbn=978-0230368774}}</ref>
|çhengaghyn_ardjynagh = {{hlist|[[Bosnish]]|[[Croitish]]|[[Serbish]]}}
|sorçh_reiltys = [[Corys stiureydagh|Pobblaght stiureydagh]] pharlamaidagh [[pobblaght chonastagh|chonastagh]]
|enmys1_fer-toshee = [[Ard-reihdagh ry hoi Bosnia as Herzegovina|Ard-reihdagh]]
|ennym1_fer-toshee = [[Christian Schmidt]]
|enmys2_fer-toshee = [[Caairliagh Eaghtyraneys Bosnia as Herzegovina|Caairliagh yn Eaghtyraneys]]
|ennym2_fer-toshee = [[Željka Cvijanović]]
|enmys3_fer-toshee = [[Eaghtyraneys Bosnia as Herzegovina|Yn Eaghtyraneys]]
|ennym3_fer-toshee = {{ubl|[[Denis Bećirović]]|[[Željka Cvijanović]]|[[Željko Komšić]]}}
|dateEUentreilys =
|blein_LTS_CCK = 2008
|LTS_CCK = $42.998 billioon
|rhenk_LTS_CCK = 94oo
|LTS_CCK_yn_dooinney = $10,714
|rhenk_LTS_CCK_yn_dooinney = 87oo
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght =
|taghyrt1_bunnit = Crooit
|date1_bunnit = 29 Luanistyn 1189
|taghyrt2_bunnit = Reeriaght bunnit
|date2_bunnit = 26 Jerrey Fouyir 1377
|taghyrt3_bunnit = Cummaltys ny [[Yn Impiraght Ottomanagh|Turkee]]
|date3_bunnit = 1463
|taghyrt4_bunnit = Laa Ashoonagh
|date4_bunnit = 25 Mee Houney 1943
|taghyrt5_bunnit = Seyrsnys veih'n [[Yn Yugoslaavey|Yugoslaavey]]
|date5_bunnit = 1 Mayrnt 1992
|taghyrt6_bunnit = Er enney
|date6_bunnit = 6 Averil 1992
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|argid = [[Mark so-çhyndaa Bosnia as Herzegovina|Mark so-çhyndaa]]
|cctld = [[.ba]]
|coad_çhellvane = 387
}}
[[Coadan:Map Bih entities.png|thumb|250px|right]]
She çheer 'syn [[yn Europey|Europey]] ee '''Bosnia as Herzegovina'''. T'ee soit ayns [[ny Çheeraghyn Balkanagh]]. She [[Sarajevo]] yn preeu-valley.
==Imraaghyn==
{{reflist}}
{{Yn Europey}}
{{gurneil eaghtyrys}}
{{coord|44|N|18|E|region:BA_type:country_scale:5000000|display=title}}
{{bun}}
[[Ronney:Bosnia as Herzegovina| ]]
[[Ronney:Ny çheeraghyn Balkanagh]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Ardjyn rheynnit]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1992]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
ng3ffjktohmh9ngmuaaue65ggn3kvjs
393438
393437
2026-09-19T21:22:15Z
MacTire02
219
+arrane ashoonagh
393438
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Bosna as Herzegovina
|ennym_foddey_cadjincliaghtagh= {{nobold|Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Bosnish]])}}<br/>Bosna i Hercegovina {{small|([[Croitish]])}}<br/>Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Serbish]])}}}}
|ennym_gienneydagh = Bosnia as Herzegovina
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh Bosnia as Herzegovina|Državna himna Bosne i Hercegovine"<br/>"Државна химна Босне и Херцеговине]]
|çhyndaa_arrane_ashoonagh = Arrane ashoonagh Bosnia as Herzegovina
|coadan_arrane_ashoonagh = Bosnia and Herzegovina's national anthem.ogg
|çhengaghyn_oikoil = Çhengey oikoil erbee<ref name="rights">{{cite journal|title=Language rights and language justice in the constitutions of the world|journal=Language Problems & Language Planning|volume=28|issue=1|pages=11–24|first=Eduardo D.|last=Faingold|doi=10.1075/lplp.28.1.03fai|date=2004|s2cid=144311672|url=https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|archive-url=https://web.archive.org/web/20200213004700/https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|url-status=dead|archive-date=2020-02-13| issn = 0272-2690 }}</ref><ref>{{cite book|title=Rights Before Courts: A Study of Constitutional Courts in Postcommunist States of Central and Eastern Europe|url=https://archive.org/details/rightsbeforecour00sadu|url-access=limited|first=Wojciech|last=Sadurski|author-link=Wojciech Sadurski|date=2005|publisher=Springer|page=[https://archive.org/details/rightsbeforecour00sadu/page/n357 342]|isbn=1402030061}}</ref><ref name="Footitt">{{cite book|title=Languages at War: Policies and Practices of Language Contacts in Conflict|first1=Hilary|last1=Footitt|first2=Michael|last2=Kelly|date=2012|location=Basingstoke|publisher=Palgrave Macmillan|pages=111–120|isbn=978-0230368774}}</ref>
|çhengaghyn_ardjynagh = {{hlist|[[Bosnish]]|[[Croitish]]|[[Serbish]]}}
|sorçh_reiltys = [[Corys stiureydagh|Pobblaght stiureydagh]] pharlamaidagh [[pobblaght chonastagh|chonastagh]]
|enmys1_fer-toshee = [[Ard-reihdagh ry hoi Bosnia as Herzegovina|Ard-reihdagh]]
|ennym1_fer-toshee = [[Christian Schmidt]]
|enmys2_fer-toshee = [[Caairliagh Eaghtyraneys Bosnia as Herzegovina|Caairliagh yn Eaghtyraneys]]
|ennym2_fer-toshee = [[Željka Cvijanović]]
|enmys3_fer-toshee = [[Eaghtyraneys Bosnia as Herzegovina|Yn Eaghtyraneys]]
|ennym3_fer-toshee = {{ubl|[[Denis Bećirović]]|[[Željka Cvijanović]]|[[Željko Komšić]]}}
|dateEUentreilys =
|blein_LTS_CCK = 2008
|LTS_CCK = $42.998 billioon
|rhenk_LTS_CCK = 94oo
|LTS_CCK_yn_dooinney = $10,714
|rhenk_LTS_CCK_yn_dooinney = 87oo
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght =
|taghyrt1_bunnit = Crooit
|date1_bunnit = 29 Luanistyn 1189
|taghyrt2_bunnit = Reeriaght bunnit
|date2_bunnit = 26 Jerrey Fouyir 1377
|taghyrt3_bunnit = Cummaltys ny [[Yn Impiraght Ottomanagh|Turkee]]
|date3_bunnit = 1463
|taghyrt4_bunnit = Laa Ashoonagh
|date4_bunnit = 25 Mee Houney 1943
|taghyrt5_bunnit = Seyrsnys veih'n [[Yn Yugoslaavey|Yugoslaavey]]
|date5_bunnit = 1 Mayrnt 1992
|taghyrt6_bunnit = Er enney
|date6_bunnit = 6 Averil 1992
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|argid = [[Mark so-çhyndaa Bosnia as Herzegovina|Mark so-çhyndaa]]
|cctld = [[.ba]]
|coad_çhellvane = 387
}}
[[Coadan:Map Bih entities.png|thumb|250px|right]]
She çheer 'syn [[yn Europey|Europey]] ee '''Bosnia as Herzegovina'''. T'ee soit ayns [[ny Çheeraghyn Balkanagh]]. She [[Sarajevo]] yn preeu-valley.
==Imraaghyn==
{{reflist}}
{{Yn Europey}}
{{gurneil eaghtyrys}}
{{coord|44|N|18|E|region:BA_type:country_scale:5000000|display=title}}
{{bun}}
[[Ronney:Bosnia as Herzegovina| ]]
[[Ronney:Ny çheeraghyn Balkanagh]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Ardjyn rheynnit]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1992]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
kop1haust5eexp9cj14mhbeh8scnlxq
393439
393438
2026-09-19T21:22:54Z
MacTire02
219
--
393439
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Bosna as Herzegovina
|ennym_foddey_cadjincliaghtagh= {{nobold|Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Bosnish]])}}<br/>Bosna i Hercegovina {{small|([[Croitish]])}}<br/>Bosna i Hercegovina<br/>Босна и Херцеговина {{small|([[Serbish]])}}}}
|ennym_gienneydagh = Bosnia as Herzegovina
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh Bosnia as Herzegovina|Državna himna Bosne i Hercegovine"<br/>"Државна химна Босне и Херцеговине]]
|çhyndaa_arrane_ashoonagh = Arrane ashoonagh Bosnia as Herzegovina
|coadan_arrane_ashoonagh =
|çhengaghyn_oikoil = Çhengey oikoil erbee<ref name="rights">{{cite journal|title=Language rights and language justice in the constitutions of the world|journal=Language Problems & Language Planning|volume=28|issue=1|pages=11–24|first=Eduardo D.|last=Faingold|doi=10.1075/lplp.28.1.03fai|date=2004|s2cid=144311672|url=https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|archive-url=https://web.archive.org/web/20200213004700/https://pdfs.semanticscholar.org/4520/3d23862ea794af0a9dd4dde606b76c02a47d.pdf|url-status=dead|archive-date=2020-02-13| issn = 0272-2690 }}</ref><ref>{{cite book|title=Rights Before Courts: A Study of Constitutional Courts in Postcommunist States of Central and Eastern Europe|url=https://archive.org/details/rightsbeforecour00sadu|url-access=limited|first=Wojciech|last=Sadurski|author-link=Wojciech Sadurski|date=2005|publisher=Springer|page=[https://archive.org/details/rightsbeforecour00sadu/page/n357 342]|isbn=1402030061}}</ref><ref name="Footitt">{{cite book|title=Languages at War: Policies and Practices of Language Contacts in Conflict|first1=Hilary|last1=Footitt|first2=Michael|last2=Kelly|date=2012|location=Basingstoke|publisher=Palgrave Macmillan|pages=111–120|isbn=978-0230368774}}</ref>
|çhengaghyn_ardjynagh = {{hlist|[[Bosnish]]|[[Croitish]]|[[Serbish]]}}
|sorçh_reiltys = [[Corys stiureydagh|Pobblaght stiureydagh]] pharlamaidagh [[pobblaght chonastagh|chonastagh]]
|enmys1_fer-toshee = [[Ard-reihdagh ry hoi Bosnia as Herzegovina|Ard-reihdagh]]
|ennym1_fer-toshee = [[Christian Schmidt]]
|enmys2_fer-toshee = [[Caairliagh Eaghtyraneys Bosnia as Herzegovina|Caairliagh yn Eaghtyraneys]]
|ennym2_fer-toshee = [[Željka Cvijanović]]
|enmys3_fer-toshee = [[Eaghtyraneys Bosnia as Herzegovina|Yn Eaghtyraneys]]
|ennym3_fer-toshee = {{ubl|[[Denis Bećirović]]|[[Željka Cvijanović]]|[[Željko Komšić]]}}
|dateEUentreilys =
|blein_LTS_CCK = 2008
|LTS_CCK = $42.998 billioon
|rhenk_LTS_CCK = 94oo
|LTS_CCK_yn_dooinney = $10,714
|rhenk_LTS_CCK_yn_dooinney = 87oo
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght =
|taghyrt1_bunnit = Crooit
|date1_bunnit = 29 Luanistyn 1189
|taghyrt2_bunnit = Reeriaght bunnit
|date2_bunnit = 26 Jerrey Fouyir 1377
|taghyrt3_bunnit = Cummaltys ny [[Yn Impiraght Ottomanagh|Turkee]]
|date3_bunnit = 1463
|taghyrt4_bunnit = Laa Ashoonagh
|date4_bunnit = 25 Mee Houney 1943
|taghyrt5_bunnit = Seyrsnys veih'n [[Yn Yugoslaavey|Yugoslaavey]]
|date5_bunnit = 1 Mayrnt 1992
|taghyrt6_bunnit = Er enney
|date6_bunnit = 6 Averil 1992
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Veanagh|CET]]
|ashchur_utc = +01:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Veanagh|CEST]]
|ashchur_utc_TTLS = +02:00
|argid = [[Mark so-çhyndaa Bosnia as Herzegovina|Mark so-çhyndaa]]
|cctld = [[.ba]]
|coad_çhellvane = 387
}}
[[Coadan:Map Bih entities.png|thumb|250px|right]]
She çheer 'syn [[yn Europey|Europey]] ee '''Bosnia as Herzegovina'''. T'ee soit ayns [[ny Çheeraghyn Balkanagh]]. She [[Sarajevo]] yn preeu-valley.
==Imraaghyn==
{{reflist}}
{{Yn Europey}}
{{gurneil eaghtyrys}}
{{coord|44|N|18|E|region:BA_type:country_scale:5000000|display=title}}
{{bun}}
[[Ronney:Bosnia as Herzegovina| ]]
[[Ronney:Ny çheeraghyn Balkanagh]]
[[Ronney:Pobblaghtyn conastagh]]
[[Ronney:Ardjyn rheynnit]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1992]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn-baght Reagheydys y Cho-obbraghey Islamagh]]
7q3j6nd8iiggxgolz5jwz5rflzdmuis
Yn Asserbajaan
0
2763
393425
358224
2026-09-19T20:02:03Z
MacTire02
219
parameadar elley
393425
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght yn Asserbajaan
|ennym_foddey_cadjincliaghtagh= {{nobold|Azərbaycan Respublikası {{small|([[Asserbajaanish]])}}}}
|ennym_gienneydagh = yn Asserbajaan
|jalloo_caslys = Azerbaijan (orthographic projection).svg
|jarroo-raa = none
|arrane_ashoonagh = [[Azərbaycan marşı]]
|çhyndaa_arrane_ashoonagh = Marçhal yn Asserbajaan
|çhengey_arrane_ashoonagh = Asserbajaanish
|coadan_arrane_ashoonagh = Azərbaycan marşı instrumental.ogg
|çhengaghyn_oikoil = [[Asserbajaanish]]
|sorçh_reiltys = [[Corys lieh-eaghtyraneagh|Pobblaght lieh-eaghtyraneagh unnaneagh]] fo [[jaghteyraght eiraghtagh]]
|blein_LTS_CCK = 2011
|LTS_CCK = $94.318 billioon<ref name="imf2">{{cite web|url=http://www.imf.org/external/pubs/ft/weo/2011/01/weodata/weorept.aspx?sy=2008&ey=2011&scsm=1&ssd=1&sort=country&ds=.&br=1&c=912&s=NGDPD%2CNGDPDPC%2CPPPGDP%2CPPPPC%2CLP&grp=0&a=&pr.x=45&pr.y=0 |title=Azerbaijan:Report for Selected Countries and Subjects|publisher=International Monetary Fund|accessdate=April 12, 2011}}</ref>
|LTS_CCK_yn_dooinney = $10,340<ref name=imf2/>
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[UPSS]]
|taghyrt1_bunnit = Fogrit magh
|date1_bunnit = 30 Luanistyn 1991
|taghyrt2_bunnit = Creaghnit
|date2_bunnit = 18 Jerrey Fouyir 1991
|cctld = [[.az]]
|coad_çhellvane = 994
}}
She çheer 'sy [[Yn Choagaash|Choagaash]] ny [[yn Oaraishey|h-Oaraishey]] ee '''yn Asserbajaan''' ({{lang-az|Azərbaycan}}) ny '''Pobblaght yn Asserbajaan''' ({{lang-az|Azərbaycan Respublikası}}). T'ee ny soie ayns çheshvean y chrossag eddyr [[yn Oarpey Hiar]] as [[yn Aishey Heear]] as t'ee çhemmit liorish [[Yn Vooir Chaspagh|y Vooir Chaspagh]] 'sy niar, liorish [[Yn Roosh|y Roosh]] 'sy twoaie, liorish [[Yn Çhorshey|Çhorshey]] 'sy neear hwoaie, liorish [[yn Armeain]] 'sy neear, as liorish [[yn Eeraan]] 'sy jiass. Ta'n chreeagh vooie [[Naxçıvan]] çhemmit liorish yn Armeain 'sy twoaie as 'sy niar, liorish yn Eeraan 'sy jiass as 'sy neear, as liorish [[Yn Turkee|y Turkee]] er feie joarey giare 'sy neear hwoaie. She [[Bakı]] preeu-valley ny çheerey. Rere coontey-pobble ny bleeaney 1999 va 7,953,438 deiney cummal 'sy çheer, as va 9,165,000 deiney ayn rere ooley-pobble ny bleeaney 2011. Ta'n Asserbajaan ny çheer smoo mastey ny çheeraghyn Coagaashagh as ish 86,600 km<sup>2</sup> (33,436 mi ker) er eaghtyr.
== Imraaghyn ==
{{reflist}}
{{Yn Aishey}}
{{Yn Europey}}
{{Gurneil eaghtyrys}}
{{Coord|40.3|47.7|dim:300000_region:AZ|display=title}}
{{DEFAULTSORT:Asserbajaan, yn}}
[[Ronney:Yn Asserbajaan| ]]
[[Ronney:Yn Choagaash]]
[[Ronney:Çheeraghyn yn Aishey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn yn Aishey Heear]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Yn Choagaash Yiass]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny Steatyn Seyrey]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'syn Aishey 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1991]]
[[Ronney:Olteynyn Reagheydys Eddyrashoonagh y Chultoor Turkagh]]
[[Ronney:Çheeraghyn-oltey Reagheydys ny Steatyn Turkagh]]
[[Ronney:Çheeraghyn-oltey D-8]]
rmviwdnvgz9jqo4qd5ur8lbbabz5m17
393426
393425
2026-09-19T20:02:20Z
MacTire02
219
++
393426
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght yn Asserbajaan
|ennym_foddey_cadjincliaghtagh= {{nobold|Azərbaycan Respublikası {{small|([[Asserbajaanish]])}}}}
|ennym_gienneydagh = yn Asserbajaan
|jalloo_caslys = Azerbaijan (orthographic projection).svg
|jarroo-raa = none
|arrane_ashoonagh = [[Azərbaycan marşı]]
|çhyndaa_arrane_ashoonagh = Marçhal yn Asserbajaan
|çhengey_arrane_ashoonagh = Asserbajaanish
|coadan_arrane_ashoonagh = Azərbaycan marşı instrumental.ogg
|çhengaghyn_oikoil = [[Asserbajaanish]]
|sorçh_reiltys = [[Corys lieh-eaghtyraneagh|Pobblaght lieh-eaghtyraneagh unnaneagh]] fo [[jaghteyraght eiraghtagh]]
|blein_LTS_CCK = 2011
|LTS_CCK = $94.318 billoon<ref name="imf2">{{cite web|url=http://www.imf.org/external/pubs/ft/weo/2011/01/weodata/weorept.aspx?sy=2008&ey=2011&scsm=1&ssd=1&sort=country&ds=.&br=1&c=912&s=NGDPD%2CNGDPDPC%2CPPPGDP%2CPPPPC%2CLP&grp=0&a=&pr.x=45&pr.y=0 |title=Azerbaijan:Report for Selected Countries and Subjects|publisher=International Monetary Fund|accessdate=April 12, 2011}}</ref>
|LTS_CCK_yn_dooinney = $10,340<ref name=imf2/>
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[UPSS]]
|taghyrt1_bunnit = Fogrit magh
|date1_bunnit = 30 Luanistyn 1991
|taghyrt2_bunnit = Creaghnit
|date2_bunnit = 18 Jerrey Fouyir 1991
|cctld = [[.az]]
|coad_çhellvane = 994
}}
She çheer 'sy [[Yn Choagaash|Choagaash]] ny [[yn Oaraishey|h-Oaraishey]] ee '''yn Asserbajaan''' ({{lang-az|Azərbaycan}}) ny '''Pobblaght yn Asserbajaan''' ({{lang-az|Azərbaycan Respublikası}}). T'ee ny soie ayns çheshvean y chrossag eddyr [[yn Oarpey Hiar]] as [[yn Aishey Heear]] as t'ee çhemmit liorish [[Yn Vooir Chaspagh|y Vooir Chaspagh]] 'sy niar, liorish [[Yn Roosh|y Roosh]] 'sy twoaie, liorish [[Yn Çhorshey|Çhorshey]] 'sy neear hwoaie, liorish [[yn Armeain]] 'sy neear, as liorish [[yn Eeraan]] 'sy jiass. Ta'n chreeagh vooie [[Naxçıvan]] çhemmit liorish yn Armeain 'sy twoaie as 'sy niar, liorish yn Eeraan 'sy jiass as 'sy neear, as liorish [[Yn Turkee|y Turkee]] er feie joarey giare 'sy neear hwoaie. She [[Bakı]] preeu-valley ny çheerey. Rere coontey-pobble ny bleeaney 1999 va 7,953,438 deiney cummal 'sy çheer, as va 9,165,000 deiney ayn rere ooley-pobble ny bleeaney 2011. Ta'n Asserbajaan ny çheer smoo mastey ny çheeraghyn Coagaashagh as ish 86,600 km<sup>2</sup> (33,436 mi ker) er eaghtyr.
== Imraaghyn ==
{{reflist}}
{{Yn Aishey}}
{{Yn Europey}}
{{Gurneil eaghtyrys}}
{{Coord|40.3|47.7|dim:300000_region:AZ|display=title}}
{{DEFAULTSORT:Asserbajaan, yn}}
[[Ronney:Yn Asserbajaan| ]]
[[Ronney:Yn Choagaash]]
[[Ronney:Çheeraghyn yn Aishey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn yn Aishey Heear]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Yn Choagaash Yiass]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny Steatyn Seyrey]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'syn Aishey 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1991]]
[[Ronney:Olteynyn Reagheydys Eddyrashoonagh y Chultoor Turkagh]]
[[Ronney:Çheeraghyn-oltey Reagheydys ny Steatyn Turkagh]]
[[Ronney:Çheeraghyn-oltey D-8]]
njjt2f29b4umgp341vpmiepsbmq2iif
393427
393426
2026-09-19T20:09:50Z
MacTire02
219
++
393427
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght yn Asserbajaan
|ennym_foddey_cadjincliaghtagh= {{nobold|Azərbaycan Respublikası {{small|([[Asserbajaanish]])}}}}
|ennym_gienneydagh = yn Asserbajaan
|jalloo_caslys = Azerbaijan (orthographic projection).svg
|jarroo-raa = none
|arrane_ashoonagh = [[Azərbaycan marşı]]
|çhyndaa_arrane_ashoonagh = Marçhal yn Asserbajaan
|çhengey_arrane_ashoonagh = Asserbajaanish
|coadan_arrane_ashoonagh = Azərbaycan marşı instrumental.ogg
|çhengaghyn_oikoil = [[Asserbajaanish]]
|sorçh_reiltys = [[Corys lieh-eaghtyraneagh|Pobblaght lieh-eaghtyraneagh unnaneagh]] fo [[jaghteyraght eiraghtagh]]
|blein_LTS_CCK = 2011
|LTS_CCK = $94.318 billoon<ref name="imf2">{{cite web|url=http://www.imf.org/external/pubs/ft/weo/2011/01/weodata/weorept.aspx?sy=2008&ey=2011&scsm=1&ssd=1&sort=country&ds=.&br=1&c=912&s=NGDPD%2CNGDPDPC%2CPPPGDP%2CPPPPC%2CLP&grp=0&a=&pr.x=45&pr.y=0 |title=Azerbaijan:Report for Selected Countries and Subjects|publisher=International Monetary Fund|accessdate=April 12, 2011}}</ref>
|LTS_CCK_yn_dooinney = $10,340<ref name=imf2/>
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[UPSS]]
|taghyrt1_bunnit = Fogrit magh
|date1_bunnit = 30 Luanistyn 1991
|taghyrt2_bunnit = Creaghnit
|date2_bunnit = 18 Jerrey Fouyir 1991
|cctld = [[.az]]
|coad_çhellvane = 994
}}
She çheer 'sy [[Yn Choagaash|Choagaash]] ny [[yn Oaraishey|h-Oaraishey]] ee '''yn Asserbajaan''' ({{langx|az|Azərbaycan}}) ny '''Pobblaght yn Asserbajaan''' ({{langx|az|Azərbaycan Respublikası}}). T'ee ny soie ayns çheshvean y chrossag eddyr [[yn Oarpey Hiar]] as [[yn Aishey Heear]] as t'ee çhemmit liorish [[Yn Vooir Chaspagh|y Vooir Chaspagh]] 'sy niar, liorish [[Yn Roosh|y Roosh]] 'sy twoaie, liorish [[Yn Çhorshey|Çhorshey]] 'sy neear hwoaie, liorish [[yn Armeain]] 'sy neear, as liorish [[yn Eeraan]] 'sy jiass. Ta'n chreeagh vooie [[Naxçıvan]] çhemmit liorish yn Armeain 'sy twoaie as 'sy niar, liorish yn Eeraan 'sy jiass as 'sy neear, as liorish [[Yn Turkee|y Turkee]] er feie joarey giare 'sy neear hwoaie. She [[Bakı]] preeu-valley ny çheerey. Rere coontey-pobble ny bleeaney 1999 va 7,953,438 deiney cummal 'sy çheer, as va 9,165,000 deiney ayn rere ooley-pobble ny bleeaney 2011. Ta'n Asserbajaan ny çheer smoo mastey ny çheeraghyn Coagaashagh as ish 86,600 km<sup>2</sup> (33,436 mi ker) er eaghtyr.
== Imraaghyn ==
{{reflist}}
{{Yn Aishey}}
{{Yn Europey}}
{{Gurneil eaghtyrys}}
{{Coord|40.3|47.7|dim:300000_region:AZ|display=title}}
{{DEFAULTSORT:Asserbajaan, yn}}
[[Ronney:Yn Asserbajaan| ]]
[[Ronney:Yn Choagaash]]
[[Ronney:Çheeraghyn yn Aishey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn yn Aishey Heear]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Yn Choagaash Yiass]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny Steatyn Seyrey]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'syn Aishey 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1991]]
[[Ronney:Olteynyn Reagheydys Eddyrashoonagh y Chultoor Turkagh]]
[[Ronney:Çheeraghyn-oltey Reagheydys ny Steatyn Turkagh]]
[[Ronney:Çheeraghyn-oltey D-8]]
3fepwp9j61s5v1nvyg4luj7so93xqbu
Yn Coose Berçhagh
0
2789
393420
359860
2026-09-19T19:43:54Z
MacTire02
219
-parameadaryn
393420
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Choose Berçhagh
|ennym_foddey_cadjincliaghtagh= {{nobold|República de Costa Rica {{small|([[Spaainish]])}}}}
|ennym_gienneydagh = y Choose Verçhagh
|jalloo_caslys = CRI_orthographic.svg
|jarroo-raa = none
|arrane_ashoonagh = [[Arrane ashoonagh y Choose Berçhagh|Himno nacional de Costa Rica]]
|çhyndaa_arrane_ashoonagh = Arrane Ashoonagh y Choose Berçhagh
|coadan_arrane_ashoonagh = Costa Rica National Anthem.ogg
|çhengey_arrane_ashoonagh = Spaainish
|çhengaghyn_oikoil = [[Spaainish]]
|çhengaghyn_ardjynagh = {{hlist|[[Creeole Limón|Mekatelyu]]|[[Bribrish]]|[[Creeole Yamaicagh]]}}
|ushtey_sy_cheead = 0.7
|blein_LTS_CCK = 2006
|LTS_CCK = $56.777 billoon
|rhenk_LTS_CCK = 84oo
|LTS_CCK_yn_dooinney = $12,000
|rhenk_LTS_CCK_yn_dooinney = 62h
|sorçh_kiondeeaght = Neuchrogheydys
| taghyrt1_bunnit = veih'n [[Yn Spaainey|Spaainey]]
| date1_bunnit = 15 Mean Fouyir 1821
| taghyrt2_bunnit = veih [[Kied Impiraght Veksico]]
| date2_bunnit = 1 Jerrey Souree 1823
| taghyrt3_bunnit = veih [[Pobblaght Chonastagh America Veanagh|Pobblaght Chonastagh<br/>America Veanagh]]
| date3_bunnit = 14 Mee Houney 1838
| taghyrt4_bunnit = [[Bunraght y Choose Berçhagh|Bunraght roie]]
| date4_bunnit = 7 Sauin 1949<ref name=CIA>{{Cite CIA World Factbook|country=Costa Rica|access-date=4 October 2011}}</ref>
| etaghyrt5_bunnit = Hooar enney veih'n Spaainey
| date5_bunnit = 10 Boaldyn 1850
|cctld = [[.cr]]
|coad_çhellvane = 506
}}
She çheer ayns [[America Veanagh]] eh '''yn Coose Berçhagh'''. She [[San José]] yn [[preeu-valley]]. T'ee çhemmit liorish [[yn Phanamaa|y Phanamaa]] da'n jiass, [[yn Nickeraag|y Nickeraag]] da'n twoaie, [[yn Keayn Sheear|y Cheayn Sheear]] da'n shiar, as [[yn Keayn Sheealtagh|y Cheayn Sheealtagh]] da'n sheear.
==Imraaghyn==
{{reflist}}
{{Yn Americkey Hwoaie}}
{{Gurneil eaghtyrys}}
{{Coord|10|N|84|W|display=title}}
{{DEFAULTSORT:Coose Berchagh, Yn}}
{{bun}}
[[Ronney:Yn Coose Berçhagh| ]]
[[Ronney:Çheeraghyn America Veanagh]]
[[Ronney:Eear-choloinyn Spaainagh]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1821]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Bunneeaghtyn ayns America Hwoaie 'sy vlein 1821]]
[[Ronney:Çheeraghyn America Hwoaie]]
[[Ronney:Steatyn Creestee]]
[[Ronney:Çheeraghyn yn RCTL]]
enibhw5wd5mzv3qksmq5aehu4vv1469
Yn Chassaghstaan
0
2987
393440
360752
2026-09-19T21:35:21Z
MacTire02
219
++
393440
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Chassaghstaan
|ennym_foddey_cadjincliaghtagh= {{nobold|Қазақстан Республикасы {{small|([[Kassaghish]])<br/>{{transliteration|kk|Qazaqstan Respublikasy}}}}<br/>Республика Казахстан {{small|([[Rooshish]])<br/>{{transliteration|ru|Respublika Kazakhstan}}}}}}
|ennym_gienneydagh = y Chassaghstaan
|jalloo_caslys = Kazakhstan (orthographic projection).svg
|jalloo_cleinney = Emblem of Kazakhstan (3D).svg
|jarroo-raa = none
|arrane_ashoonagh = [[Menıñ Qazaqstanym|Менің Қазақстаным]]
|çhengey_arrane_ashoonagh = Kassaghish
|tessen-lettyraghey_arrane_ashoonagh = Menıñ Qazaqstanym
|çhyndaa_arrane_ashoonagh = My Chassaghstaan"
|coadan_arrane_ashoonagh = Kazakhstan national anthem, played by the U.S. Navy Band.ogg
|çhengaghyn_oikoil = {{hlist|[[Kassaghish]]|[[Rooshish]]}}
|sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] unnaneagh fo reiltys smaghtagh
|ushtey_sy_cheead = 1.7
|blein_LTS_CCK = 2007
|LTS_CCK = $161.155 billioon
|rhenk_LTS_CCK = 56oo
|LTS_CCK_yn_dooinney = $10,658
|rhenk_LTS_CCK_yn_dooinney = 66oo
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[Yn Unnaneys Soveidjagh|Unnaneys Soveidjagh]]
|taghyrt1_bunnit = Kied Khanaght
|date1_bunnit = 1361
|taghyrt2_bunnit = Nah Khanaght
|date2_bunnit = 1428
|taghyrt3_bunnit = Treeoo Khanaght
|date3_bunnit = 1465
|taghyrt4_bunnit = [[Shennaghys y Chassaghstaan#Kiondeeaght as seyrsnys|Fogrit magh]]
|date4_bunnit = 16 Mee ny Nollick 1991
|taghyrt5_bunnit = Jeant
|date5_bunnit = 25 Mee ny Nollick 1991
|dateEUentreilys =
|traa_ynnydagh =
|ashchur_utc = +05:00
|imraa_ashchur_utc ={{Cite web|url=https://www.zakon.kz/obshestvo/6425975-kazakhstan-perekhodit-na-edinyy-chasovoy-poyas-chto-nuzhno-znat.html|title=Казахстан переходит на единый часовой пояс: что нужно знать|lang=ru|first=|last=|website=[[zakon.kz]]|date=2024-02-29|access-date=}}
| tld = [[.kz]]
|coad_çhellvane = 7
}}
She çheer 'syn [[yn Aishey]] ee '''yn Chassaghstaan''' ({{langx|kk|Қазақстан}}, {{tessen-lettyraghey|kk|Qazaqstan}}, {{langx|ru|Казахстан}}, {{tessen-lettyraghey|ru|Kazakhstan}}). T'ee çhemmit liorish [[Yn Roosh|y Roosh]] da'n twoaie, liorish [[yn Turkmenistaan|y Turkmenistaan]], [[yn Oosbeckistaan]] as [[Yn Chyrgistaan|y Chyrgistaan]] da'n jiass, as liorish [[Deynphobblaght ny Sheen|y Çheen]] da'n shiar. She [[Astana]] yn [[preeu-valley]].
==Imraaghyn==
{{reflist}}
{{Yn Aishey}}
{{Yn Europey}}
{{Gurneil eaghtyrys}}
{{Coord|48|N|68|E|scale:20000000_source:GNS|display=title}}
{{DEFAULTSORT:Chassaghstaan, Yn}}
[[Ronney:Yn Chassaghstaan| ]]
[[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'syn Aishey 'sy vlein 1991]]
[[Ronney:Bunneeaghtyn 'sy Chassaghstaan 'sy vlein 1991|*]]
[[Ronney:Çheeraghyn yn Aishey Veanagh]]
[[Ronney:Çheeraghyn yn Aishey]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Steip yn Oaraishey]]
[[Ronney:Çheeraghyn thallooinit]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny Steatyn Seyrey]]
[[Ronney:Çheeraghyn-oltey Reagheydys y Cho-obbraghey Islamagh]]
[[Ronney:Çheeraghyn-oltey ny Steatyn Turkagh]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Tarmaynagh Oaraishanagh]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Reagheydys Chonaant y Cho-hickyrys]]
[[Ronney:Olteynyn Reagheydys Eddyrashoonagh y Chultoor Turkagh]]
[[Ronney:Pobblaghtyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1991]]
{{bun}}
0cagtfc88ymu6n38n5rim436zlqav65
Yn Cheeprey
0
5254
393448
364038
2026-09-19T22:16:44Z
MacTire02
219
++
393448
wikitext
text/x-wiki
{{Kishtey fys çheer
|ennym = Pobblaght y Cheeprey
|ennym_foddey_cadjincliaghtagh= {{nobold|Κυπριακή Δημοκρατία {{small|([[Greagish]])<br/>{{transliteration|el|Kypriakī́ Dīmokratía}}}}<br/>Kıbrıs Cumhuriyeti {{small|([[Turkish]])}}}}
|ennym_gienneydagh = y Cheeprey
|jalloo_caslys = EU-Cyprus.svg
|jarroo-raa = none
|arrane_ashoonagh = [[Hymn da'n Teyrsnys|Ὕμνος εἰς τὴν Ἐλευθερίαν]]
|noteyn_arrane_ashoonagh = Va arrane ashoonagh y Ghreag doltit 'sy vlein 1966 kyndagh rish briwnys lesh Coonseil ny Shirveishee.<ref>{{cite web |title=National Anthem |url=http://www.presidency.gov.cy/presidency/presidency.nsf/prc34_en/prc34_en?OpenDocument |website=presidency.gov.cy |access-date=3 Mean Souree 2015 |archive-url=https://web.archive.org/web/20110813155316/http://www.presidency.gov.cy/presidency/presidency.nsf/prc34_en/prc34_en?OpenDocument |archive-date=13 Luanistyn 2011 |url-status=dead}}</ref>
|çhyndaa_arrane_ashoonagh = Hmyn da'n Teyrsnys
|tessen-lettyraghey_arrane_ashoonagh = Hýmnos eis tin Eleutherían
|coadan_arrane_ashoonagh = Greece national anthem.ogg
|çhengaghyn_oikoil = {{hlist|[[Greagish]]|[[Turkish]]}}
|sorçh_reiltys = [[Pobblaght eaghtyraneagh]]
|dateEUentreilys = 1 Boaldyn 2004
|blein_LTS_CCK = 2007
|LTS_CCK = $21.382 billoon
|rhenk_LTS_CCK = 108oo
|LTS_CCK_yn_dooinney = $27,429
|rhenk_LTS_CCK_yn_dooinney = 29oo
|sorçh_kiondeeaght = Seyrsnys
|note_kiondeeaght = veih'n [[Reeriaght Unnaneysit]]
|taghyrt1_bunnit = Date
|date1_bunnit = 1 Jerrey Fouyir 1960
|noteyn_argid = Va'n [[punt Ceepragh]] ymmydit roish 2008
|traa_ynnydagh = [[Traa ynnydagh yn Oarpey Hiar|EET]]
|ashchur_utc = +02:00
|traa_ynnydagh_TTLS = [[Traa houree yn Oarpey Hiar|EEST]]
|ashchur_utc_TTLS = +03:00
|tld = [[.cy]]
|noteyn_tld = Ta [[.eu]] ymmydit myrane lesh çheeraghyn elley [[yn Unnaneys Oarpagh]].
|coad_çhellvane = 357
}}
She ellan as çheer 'sy [[Yn Veanvooir|Veanvooir]] ee '''yn Cheeprey''' ny '''yn Chyprys''' ({{langx|el|Κύπρος}}, {{tessen-lettyraghey|el|Kípros}}, {{langx|tr|Kıbrıs}}). T'ee soit 'sy [[Yn Veanvooir|Veanvooir]], 113 km magh veih'n choose [[Yn Turkee|Turkagh]]. She [[Nicosia]] yn preeu-valley, as t'eh, myr yn ellan er feie, rheynnit eddyr Pobblaght ny Ceeprey as [[Pobblaght Hurkagh ny Ceeprey Hwoaie]].
==Noteyn==
{{notelist}}
==Imraaghyn==
{{reflist}}
{{commonscat|Cyprus|y Cheeprey}}
{{Yn Europey}}
{{Yn Aishey}}
{{Çheeraghyn yn Unnaneys Oarpagh}}
{{Gurneil eaghtyrys}}
{{coord|35|N|33|E|type:country_region:CY_scale:2500000_source:GNS |display=title}}
{{DEFAULTSORT:Cheeprey, Yn}}
[[Ronney:Yn Cheeprey| ]]
[[Ronney:Çheeraghyn yn Oarpey]]
[[Ronney:Çheeraghyn yn Aishey]]
[[Ronney:Pobblaghtyn ayns Co-unnaneys ny h-Ashoonyn]]
[[Ronney:Çheeraghyn-oltey yn Unnaneys Oarpagh]]
[[Ronney:Çheeraghyn-oltey Choonseil yn Oarpey]]
[[Ronney:Ard hiar y Veanvooir]]
[[Ronney:Ellanyn yn Oarpey]]
[[Ronney:Ellanyn yn Aishey]]
[[Ronney:Ellanyn eddyrashoonagh]]
[[Ronney:Çheeraghyn ellanagh]]
[[Ronney:Ellanyn 'sy Veanvooir]]
[[Ronney:Çheeraghyn yn Aishey Heear]]
[[Ronney:Çheeraghyn-oltey Unnaneys y Veanvooir]]
[[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]]
[[Ronney:Çheeraghyn-oltey Cho-unnaneys ny h-Ashoonyn]]
[[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1960]]
[[Ronney:Ardjyn rheynnit]]
[[Ronney:Eear-choloinyn Goaldagh]]
[[Ronney:Steatyn as lieh-enney oc]]
6p62rc6r0tcwz9zjb819xnj1gnd8ypa
Bro-Zol
0
19577
393451
311354
2026-09-20T01:10:51Z
Kontributor 2K
20206
update CoA img redirect
393451
wikitext
text/x-wiki
{{Kishtey fys boayl
| ennym_gienneydagh = Bro-Zol
| ennym = Bro-Zol
| ennym_oikoil =
| ennym_elley = <br /><small>{{lang-fr|Pays de Dol}}<br />[[Gallo]]: ''Paeï de Dóu''</small>
| ennym_dooghyssagh =
| sorçh_balley = [[Queiggaghyn tradishoonagh y Vritaan|Queiggey tradishoonagh]]
| jarroo-raa =
| far-ennym =
| jalloo_brattagh = Banniel Bro Zol.svg
| mooadys_brattagh = 140px
| jalloo_armys = Blason Maison de Dol.svg
| mooadys_armys = 85px
| jalloo_caslys-çheerey = Map-Bro-Zol.png
| mooadys_caslys-çheerey = 250px
| fo-heidyl_caslys-çheerey = Caslys-çheerey Bro-Zol
| ard_coordnaidyn = FR
| taishbyney_coordnaidyn = inline, title
| sorçh_aarheynn = [[Ashoonyn Celtiagh|Çheer]]
| ennym_aarheynn = {{brattagh|Brittany|Yn Vritaan (çheer){{!}}Y Vritaan}}
| sorçh_aarheynn1 = Commyoonyn
| ennym_aarheynn1 = [[Bro-Zol#Commyoonyn|39]]
| enmys_bunneeaght= Bunneeaght
| date_bunneeaght = 865 BNJ
| sorçh_soieag = Preeu-valley
| soieag = [[Dol, Il-ha-Gwilen|Dol]]
| fo-noteyn_eaghtyr = <ref name="geobr"/>
| slane_eaghtyr_km2 = 637
| earroo_yn_phobble_er = 2007
| fo-noteyn_earroo_yn_phobble = <ref name="geobr">{{cite web | url = http://www.geobreizh.com/breizh/bre/sifrou-broiou2.asp?numero_pays_bro=9 | title = Breizh e sifroù - Broioù | accessdate = 6 Jerrey Fouyir 2011 | language = Britaanish | publisher = Geobreizh.com}}</ref>
| note_earroo_yn_phobble =
| slane_earroo_yn_phobble = 51752
| glooaght_y_phobble_km2 = 81.2
| cryss_hraa = [[Traa ynnydagh ny h-Oarpey Meanagh|CET]]
| ashchur_utc = +1
| cryss_hraa_TTSL = [[Traa houree ny h-Oarpey Meanagh|CEST]]
| ashchur_utc_TTSL = +2
|latd = 48 |latm = 33 |latNS = N
|longd = 01 |longm = 45 |longEW = W
}}
She fer jeh [[Queiggaghyn tradishoonagh ny Britaan|queiggaghyn tradishoonagh]] y [[Yn Vritaan (çheer)|Vritaan]] eh '''Bro-Zol''' ({{lang-fr|Pays de Dol, Pays Dolois}}; [[Gallo]]: ''Paeï de Dóu''<ref>{{cite web | url = http://www.geobreizh.com/breizh/bre/keriou-fichenn.asp?insee_ville=35095 | title = Klask kêrioù - Dol | accessdate = 30 Boaldyn 2014 | language = Britaanish | publisher = Geobreizh.com}}</ref>). Ta'n queiggey ny hoie ayns shiar y Vritaan 'sy rheynn [[Il-ha-Gwilen]]. T'eh 637 km<sup>2</sup> er eaghtyr. She [[Dol, Il-ha-Gwilen|Dol]] y preeu-valley shenndeeagh as y chaayr smoo. 'Sy vlein 2007 va 51,752 dooinney cummal 'sy wheiggey.
== Commyoonyn ==
{{ardart|Rolley ny commyoonyn ayns Bro-Zol}}
Ta 39 [[commyoonyn ny Frank|commyoon]] ayns Bro-Zol.
== Imraaghyn ==
{{rolleyimraaghyn}}
{{Queiggaghyn y Vritaan}}
{{bun}}
[[Ronney:Bro-Zol| ]]
[[Ronney:Queiggaghyn tradishoonagh y Vritaan]]
gyufauaqj2oj67041rztdgtnkz8z3m2
Module:Language/data/iana languages
828
30253
393399
325557
2026-09-19T17:20:33Z
MacTire02
219
++
393399
Scribunto
text/plain
-- File-Date: 2023-10-16
local active = {
["aa"] = {"Afarish"},
["ab"] = {"Abcaasish"},
["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"] = {"Bambara"},
["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"] = {"Ç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"] = {"Javish", "basa Jawa"},
["ka"] = {"Shorshish"},
["kg"] = {"Kongo"},
["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"] = {"Lingala"},
["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"] = {"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"] = {"Sami Hwoaie"},
["sg"] = {"Sango"},
["sh"] = {"Serbo-Chroitish"},
["si"] = {"Sinhalish"},
["sk"] = {"Slovackish"},
["sl"] = {"Sloveanish"},
["sm"] = {"Samoish"},
["sn"] = {"Shona"},
["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"] = {"Ookraanish"},
["ur"] = {"Oordooish"},
["uz"] = {"Oosbeckish"},
["ve"] = {"Vendish"},
["vi"] = {"Vietnamish"},
["vo"] = {"Volapük"},
["wa"] = {"Walloonish"},
["wo"] = {"Wolof"},
["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"] = {"Frangish Chreeole 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"] = {"Baarle Chreeole 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"] = {"Ollanish Chreeole 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"] = {"Baarle Kriol Veleeshagh"},
["bzk"] = {"Baarle Chreeole 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"] = {"Malayish Chreeole 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"] = {"Choctaw"},
["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"] = {"Frangish Chreeole 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"] = {"Dyula"},
["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"] = {"Maninkakanish 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"] = {"Baarle Chreeole 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"] = {"Pulaar"},
["fud"] = {"Futuna Hiar"},
["fue"] = {"Borgu Fulfulde"},
["fuf"] = {"Pular"},
["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"] = {"Frangish Chreeole Guadeloupe"},
["gcl"] = {"Baarle Chreeole Ghrenadagh"},
["gcn"] = {"Gaina"},
["gcr"] = {"Frangish Chreeole Gheeaanagh"},
["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"] = {"Baarle Chreeole 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"] = {"Baarle Chreeole Gheeaanagh"},
["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"] = {"Hindish Chreeole 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"] = {"Çhengey 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"] = {"Çhengey Chowree Ungaaragh"},
["hsl"] = {"Çhengey Chowree Hausa"},
["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"] = {"Baarle Chreeole Hawaiiagh", "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"] = {"Baarle Chreeole Yamaicagh"},
["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"] = {"Frangish Chreeole 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"] = {"Kituba (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"] = {"Kwambi"},
["kwn"] = {"Kwangali"},
["kwo"] = {"Kwomtari"},
["kwp"] = {"Kodia"},
["kwr"] = {"Kwer"},
["kws"] = {"Kwese"},
["kwt"] = {"Kwesten"},
["kwu"] = {"Kwakum"},
["kwv"] = {"Sara Kaba Náà"},
["kww"] = {"Kwinti"},
["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"] = {"Lozi"},
["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"] = {"Portiugish Chreeole Valaccagh"},
["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"] = {"Kituba (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"] = {"Maninkakan 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"] = {"Mandinka"},
["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"] = {"Moro"},
["mos"] = {"Mossi"},
["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"] = {"Kita Maninkakan"},
["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"] = {"Khoekhoe", "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"] = {"Ndau"},
["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 (çhengey er lheh)"},
["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"] = {"Pedi", "Sotho 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"] = {"Arabish Chreeole Hoodaanagh"},
["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"] = {"Frangish Chreeole 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"] = {"Frangish Chreeole San Miguel"},
["scg"] = {"Sanggau"},
["sch"] = {"Sakachep"},
["sci"] = {"Malayish Chreeole 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"] = {"Akkala Sami"},
["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"] = {"Ollanish Chreeole 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"] = {"Baarle Chreeole Winsenagh"},
["sve"] = {"Serili"},
["svk"] = {"Çhengey Chowree Slovackagh"},
["svm"] = {"Slavomolisano"},
["svs"] = {"Savosavo"},
["svx"] = {"Skalvish"},
["swb"] = {"Comorish 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"] = {"Baarle Chreeole 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"] = {"Baarle Chreeole 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"] = {"Baarle Chreeole Hrinaidagh"},
["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"] = {"Tumbuka"},
["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"] = {"Baarle Chreeole 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"] = {"Portiugish Chreeole 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"] = {"Comorish 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"] = {"Comorish 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"] = {"Wolof 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"] = {"Comorish 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"] = {"Arabish Chreeole 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"] = {"Maninka Keylley"},
["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,
}
ajai30r3nqw7dutiir36l22h20v3z2h
Gooyn babban
0
45417
393452
370407
2026-09-20T01:58:59Z
MacTire02
219
kiartaghey yn clowan {{lang}}
393452
wikitext
text/x-wiki
[[Coadan:Pink filmy baby doll.jpg|thumb|right|Shenn ghooyn babban]]
[[Coadan:Babydollnightie.jpg|thumb|right|Gooyn babban ny s'noa]]
Ta '''gooyn babban''' ({{langx|en|babydoll}}) çheet er [[gooyn oie]] skeaylt giare gyn muinneel ta kiarit da mraane myr [[eaddagh oie]]. Keayrtyn, ta cappanyn cummit echey ta enmyssit [[Rolley kiaddaghyn dy choodee cheeagh|myn-choodagh keeagh]] da [[Clash ny sheeintyn]] marish [[rumbyl]] skeaylt ta tuittym er y chooid smoo sheese dys y [[shleayst|cleayst]] heose. Dy mennick, ta'n garmad jeshit lesh [[laatçhey]], robbeeyn, jeshaghey ''[[appliqué]]'', ''[[marabou (fassan)|marabou]]yn'', lhoobyn, as rybbanyn, keayrtyn marish [[yeeall spaghetti|yeeallyn spaghetti]]. Keayrtyn, t'ad jeant ass [[eaddagh ree-veen]] ny trooid-hoilshagh lheid as [[neelane]] ny [[shiffon (eggey feeit)|shiffon]], ny [[sheeidey]].
==Shennaghys==
Ta crooaght y ghooyn oie feer ghiare treishtit da', chiaddeyder eaddagh crackan Americaanagh [[Sylvia Pedlar]], ren ad 'sy vlein 1942 myr freggyrtys da ny tiarkaghtyn ayns eggaghyn feeit car y [[Yn Nah Chaggey Dowanagh|Nah Chaggey Dowanagh]].<ref name=fe>{{cite web |last1=Blausen |first1=Whitney |title=Sylvia Pedlar |url=http://www.fashionencyclopedia.com/Mu-Pi/Pedlar-Sylvia.html|website=Fashion Encyclopaedia |access-date=2 Mean Souree 2015}}</ref> Ga dy row e kiaddaghyn enmyssit myr "{{lang|en|''babydoll''}}", cha daittyn lesh Pedlar yn ennym shen as cha ren ee ymmyd jeh.<ref name=fe/>
Ayns ny bleeantyn 1957 as 1958, chur y kiaddeyder Spaainagh [[Cristóbal Balenciaga]] stiagh e lhiegganyn jeh'n ghooyn babban. Reih eh eh scaa-chaslys er yn oyr dy row eh taishbyney bouin neuvaghtallagh; ren mooadaghey yn tro shen moylley yn moan v'echey dy yannoo prowaltyssyn lesh coreiryn as dy yannoo yn vouin dullyr.
Va pyjamaghyn gooyn babban ayns ny 1950yn dys ny 1960yn jeant as baare as bun bloomeragh lesh bouin as lurgaghyn lastit. Veih ny 1970yn dys ny 1990yn, va fo-hroosyn çhionn lesh bouin as lurgaghyn lastagh currit stiagh ayns ynnyd ny bloomeryn. Ny lhiegganyn s'jeree jeu, ta'n lastagh er ny lurgaghyn er ny ve scrysst magh as cuttee ny [[fo-hroosyn Frangagh]] currit stiagh ayns ynnyd ny fo-hroosyn çhionn.
==Jeeagh er neesht==
* [[Smock]]
* [[Myn-rumbyl]]
==Imraaghyn==
{{reflist}}
==Kianglaghyn magh==
*{{commonscat-inline|Babydoll|Gooynyn babban}}
{{eaddagh crackan}}
{{eaddeeyn}}
{{gurneil eaghtyrys}}
[[Ronney:Fassan ayns ny 1960yn]]
[[Ronney:Fassan ayns ny 1990yn]]
[[Ronney:Fassan ayns ny 2000yn]]
[[Ronney:Eaddeeyn feddish]]
[[Ronney:Gooynyn]]
[[Ronney:Eaddagh crackan]]
[[Ronney:Eaddagh oie]]
[[Ronney:Eaddeeyn ny mraane]]
637etr8esf7l5v3um3d6nre4x8ncjr0
Module:Enmyn çheerey
828
55828
393421
393372
2026-09-19T19:50:42Z
MacTire02
219
+cheeraghyn
393421
Scribunto
text/plain
local p = {}
-- Enmyn çheerey as ny lhiegganyn gienneydagh oc.
-- Cur lhimmaghyn ayns shoh my vel feme orroo.
local country_names = {
["Yn Albaan"] = "Yn Albaan",
["Yn Austrail"] = "Yn Austrail",
["Bretyn"] = "Bretyn",
["Yn Chanadey"] = "Yn Chanadey",
["Yn Chroit"] = "Yn Chroit",
["Yn Eeslynn"] = "Yn Eeslynn",
["Yn Estaan"] = "Yn Estaan",
["Finnlynn"] = "Finnlynn",
["Yn Ghermaan"] = "Yn Ghermaan",
["Yn Ghreag"] = "Yn Ghreag",
["Greenlynn"] = "Greenlynn",
["Yn Iddaal"] = "Yn Iddaal",
["Jersee"] = "Jersee",
["Kosovo"] = "Kosovo",
["Yn Latvey"] = "Yn Latvey",
["Yn Litaan"] = "Yn Litaan",
["Mannin"] = "Mannin",
["Meksico"] = "Meksico",
["Nalbin"] = "Nalbin",
["Nerin"] = "Nerin",
["Yn Ookraan"] = "Yn Ookraan",
["Yn Pholynn"] = "Yn Pholynn",
["Yn Phortiugal"] = "Yn Phortiugal",
["Yn Phroosh"] = "Yn Phroosh",
["Yn Rank"] = "Yn Rank",
["Yn Reeriaght Unnaneysit"] = "Yn Reeriaght Unnaneysit",
["Yn Roosh"] = "Yn Roosh",
["Yn Serb"] = "Yn Serb",
["Sostyn"] = "Sostyn",
["Yn Spaainey"] = "Yn Spaainey",
["Ny Steatyn Unnaneysit"] = "Ny Steatyn Unnaneysit",
["Yn Toolynn"] = "y Toolynn",
-- Added per your list of Sep 2026.
["Yn Austeyr"] = "Yn Austeyr",
["Yn Armeain"] = "Yn Armeain",
["Yn Asserbajaan"] = "Yn Asserbajaan",
["Yn Argenteen"] = "Yn Argenteen",
["Yn Velg"] = "Yn Velg",
["Yn Velaroosh"] = "Yn Velaroosh",
["Moldova"] = "Moldova",
["Yn Çhorshey"] = "Yn Çhorshey",
["Yn Vulgeyr"] = "Yn Vulgeyr",
["Yn Romaan"] = "Yn Romaan",
["Yn Ungaar"] = "Yn Ungaar",
["Yn Çheck"] = "Yn Çheck",
["Yn Clovack"] = "Yn Clovack",
["Yn Clovean"] = "Yn Clovean",
["Yn Elveeish"] = "Yn Elveeish",
["Norlynn"] = "Norlynn",
["Yn Danvarg"] = "Yn Danvarg",
["San Marino"] = "San Marino",
["Monaco"] = "Monaco",
["Yn Valta"] = "Yn Valta",
["Yn Çheer Injil"] = "Yn Çheer Injil",
["Yn Vrasseel"] = "Yn Vrasseel",
["Yn Çhillee"] = "Yn Çhillee",
["Yn Ooraguay"] = "Yn Ooraguay",
["Yn Pharaguay"] = "Yn Pharaguay",
["Yn Volivia"] = "Yn Volivia",
["Yn Pheroo"] = "Yn Pheroo",
["Yn Cholombey"] = "Yn Cholombey",
["Geeaaney"] = "Geeaaney",
["Yn Toorinam"] = "Yn Toorinam",
["Yn Phanamaa"] = "Yn Phanamaa",
["Yn Ghuatemaley"] = "Yn Ghuatemaley",
["Yn Nickeraag"] = "Yn Nickeraag",
["Yn Veleesh"] = "Yn Veleesh",
["Yn Salvador"] = "Yn Salvador",
["Yn Choobey"] = "Yn Choobey",
["Ny Bahamaghyn"] = "Ny Bahamaghyn",
["Ny Bermioodee"] = "Ny Bermioodee",
["Yn Jamaicey"] = "Yn Jamaicey",
["Antigua as Barbuda"] = "Antigua as Barbuda",
["Barbados"] = "Barbados",
["Dominica"] = "Dominica",
["Yn Phobblaght Ghominicagh"] = "Yn Phobblaght Ghominicagh",
["Grenada"] = "Grenada",
["Ny Hondooraghyn"] = "Ny Hondooraghyn",
["Noo Kitts as Nevis"] = "Noo Kitts as Nevis",
["Noo Lucia"] = "Noo Lucia",
["Noo Winsen as ny Grenadeenyn"] = "Noo Winsen as ny Grenadeenyn",
["Yn Coose Berçhagh"] = "Yn Coose Berçhagh",
}
local genitive = {
["Yn Albaan"] = "yn Albaan",
["Yn Austrail"] = "yn Austrail",
["Bretyn"] = "Vretyn",
["Yn Chanadey"] = "y Chanadey",
["Yn Chroit"] = "y Chroit",
["Yn Eeslynn"] = "yn Eeslynn",
["Yn Estaan"] = "yn Estaan",
["Finnlynn"] = "Innlynn",
["Yn Ghermaan"] = "y Ghermaan",
["Yn Ghreag"] = "y Ghreag",
["Greenlynn"] = "Ghreenlynn",
["Yn Iddaal"] = "yn Iddaal",
["Jersee"] = "Jersee",
["Kosovo"] = "Chosovo",
["Yn Latvey"] = "y Latvey",
["Yn Litaan"] = "y Litaan",
["Mannin"] = "Vannin",
["Meksico"] = "Veksico",
["Nalbin"] = "ny h-Albey",
["Nerin"] = "Nerin",
["Yn Ookraan"] = "yn Ookraan",
["Yn Pholynn"] = "y Pholynn",
["Yn Phortiugal"] = "y Phortiugal",
["Yn Phroosh"] = "y Phroosh",
["Yn Rank"] = "y Rank",
["Yn Reeriaght Unnaneysit"] = "y Reeriaght Unnaneysit",
["Yn Roosh"] = "y Roosh",
["Yn Serb"] = "y Terb",
["Sostyn"] = "Hostyn",
["Yn Spaainey"] = "y Spaainey",
["Ny Steatyn Unnaneysit"] = "ny Steatyn Unnaneysit",
["Yn Toolynn"] = "y Toolynn",
-- Added per your list of Sep 2026 -- exactly as given: your lowercase
-- "yn X"/"ny X" forms are the genitive verbatim; a "(mutates to X)"/
-- "(no change)" note gives the genitive directly too.
["Yn Austeyr"] = "yn Austeyr",
["Yn Armeain"] = "yn Armeain",
["Yn Asserbajaan"] = "yn Asserbajaan",
["Yn Argenteen"] = "yn Argenteen",
["Yn Velg"] = "yn Velg",
["Yn Velaroosh"] = "yn Velaroosh",
["Moldova"] = "Voldova",
["Yn Çhorshey"] = "yn Çhorshey",
["Yn Vulgeyr"] = "yn Vulgeyr",
["Yn Romaan"] = "yn Romaan",
["Yn Ungaar"] = "yn Ungaar",
["Yn Çheck"] = "yn Çheck",
["Yn Clovack"] = "yn Clovack",
["Yn Clovean"] = "yn Clovean",
["Yn Elveeish"] = "yn Elveeish",
["Norlynn"] = "Norlynn",
["Yn Danvarg"] = "yn Danvarg",
["San Marino"] = "San Marino",
["Monaco"] = "Vonaco",
["Yn Valta"] = "yn Valta",
["Yn Çheer Injil"] = "yn Çheer Injil",
["Yn Vrasseel"] = "yn Vrasseel",
["Yn Çhillee"] = "yn Çhillee",
["Yn Ooraguay"] = "yn Ooraguay",
["Yn Pharaguay"] = "yn Pharaguay",
["Yn Volivia"] = "yn Volivia",
["Yn Pheroo"] = "yn Pheroo",
["Yn Cholombey"] = "yn Cholombey",
["Geeaaney"] = "Gheeaaney",
["Yn Toorinam"] = "yn Toorinam",
["Yn Phanamaa"] = "yn Phanamaa",
["Yn Ghuatemaley"] = "yn Ghuatemaley",
["Yn Nickeraag"] = "yn Nickeraag",
["Yn Veleesh"] = "yn Veleesh",
["Yn Salvador"] = "y Talvador",
["Yn Choobey"] = "yn Choobey",
["Ny Bahamaghyn"] = "ny Bahamaghyn",
["Ny Bermioodee"] = "ny Bermioodee",
["Yn Jamaicey"] = "yn Jamaicey",
["Antigua as Barbuda"] = "Antigua as Barbuda",
["Barbados"] = "Barbados",
["Dominica"] = "Dominica",
["Yn Phobblaght Ghominicagh"] = "yn Phobblaght Ghominicagh",
["Grenada"] = "Grenada",
["Ny Hondooraghyn"] = "ny Hondooraghyn",
["Noo Kitts as Nevis"] = "Noo Kitts as Nevis",
["Noo Lucia"] = "Noo Lucia",
["Noo Winsen as ny Grenadeenyn"] = "Noo Winsen as ny Grenadeenyn",
["Yn Coose Berçhagh"] = "y Choose Berçhagh",
}
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
h8duhhfkysuuqzxxtakffk9a514tgzf
393423
393421
2026-09-19T19:52:46Z
MacTire02
219
+6 cheeraghyn
393423
Scribunto
text/plain
local p = {}
-- Enmyn çheerey as ny lhiegganyn gienneydagh oc.
-- Cur lhimmaghyn ayns shoh my vel feme orroo.
local country_names = {
["Yn Albaan"] = "Yn Albaan",
["Yn Austrail"] = "Yn Austrail",
["Bretyn"] = "Bretyn",
["Yn Chanadey"] = "Yn Chanadey",
["Yn Chroit"] = "Yn Chroit",
["Yn Eeslynn"] = "Yn Eeslynn",
["Yn Estaan"] = "Yn Estaan",
["Finnlynn"] = "Finnlynn",
["Yn Ghermaan"] = "Yn Ghermaan",
["Yn Ghreag"] = "Yn Ghreag",
["Greenlynn"] = "Greenlynn",
["Yn Iddaal"] = "Yn Iddaal",
["Jersee"] = "Jersee",
["Kosovo"] = "Kosovo",
["Yn Latvey"] = "Yn Latvey",
["Yn Litaan"] = "Yn Litaan",
["Mannin"] = "Mannin",
["Meksico"] = "Meksico",
["Nalbin"] = "Nalbin",
["Nerin"] = "Nerin",
["Yn Ookraan"] = "Yn Ookraan",
["Yn Pholynn"] = "Yn Pholynn",
["Yn Phortiugal"] = "Yn Phortiugal",
["Yn Phroosh"] = "Yn Phroosh",
["Yn Rank"] = "Yn Rank",
["Yn Reeriaght Unnaneysit"] = "Yn Reeriaght Unnaneysit",
["Yn Roosh"] = "Yn Roosh",
["Yn Serb"] = "Yn Serb",
["Sostyn"] = "Sostyn",
["Yn Spaainey"] = "Yn Spaainey",
["Ny Steatyn Unnaneysit"] = "Ny Steatyn Unnaneysit",
["Yn Toolynn"] = "y Toolynn",
-- Added per your list of Sep 2026.
["Yn Austeyr"] = "Yn Austeyr",
["Yn Armeain"] = "Yn Armeain",
["Yn Asserbajaan"] = "Yn Asserbajaan",
["Yn Argenteen"] = "Yn Argenteen",
["Yn Velg"] = "Yn Velg",
["Yn Velaroosh"] = "Yn Velaroosh",
["Moldova"] = "Moldova",
["Yn Çhorshey"] = "Yn Çhorshey",
["Yn Vulgeyr"] = "Yn Vulgeyr",
["Yn Romaan"] = "Yn Romaan",
["Yn Ungaar"] = "Yn Ungaar",
["Yn Çheck"] = "Yn Çheck",
["Yn Clovack"] = "Yn Clovack",
["Yn Clovean"] = "Yn Clovean",
["Yn Elveeish"] = "Yn Elveeish",
["Norlynn"] = "Norlynn",
["Yn Danvarg"] = "Yn Danvarg",
["San Marino"] = "San Marino",
["Monaco"] = "Monaco",
["Yn Valta"] = "Yn Valta",
["Yn Çheer Injil"] = "Yn Çheer Injil",
["Yn Vrasseel"] = "Yn Vrasseel",
["Yn Çhillee"] = "Yn Çhillee",
["Yn Ooraguay"] = "Yn Ooraguay",
["Yn Pharaguay"] = "Yn Pharaguay",
["Yn Volivia"] = "Yn Volivia",
["Yn Pheroo"] = "Yn Pheroo",
["Yn Cholombey"] = "Yn Cholombey",
["Geeaaney"] = "Geeaaney",
["Yn Toorinam"] = "Yn Toorinam",
["Yn Phanamaa"] = "Yn Phanamaa",
["Yn Ghuatemaley"] = "Yn Ghuatemaley",
["Yn Nickeraag"] = "Yn Nickeraag",
["Yn Veleesh"] = "Yn Veleesh",
["Yn Salvador"] = "Yn Salvador",
["Yn Choobey"] = "Yn Choobey",
["Ny Bahamaghyn"] = "Ny Bahamaghyn",
["Ny Bermioodee"] = "Ny Bermioodee",
["Yn Jamaicey"] = "Yn Jamaicey",
["Antigua as Barbuda"] = "Antigua as Barbuda",
["Barbados"] = "Barbados",
["Dominica"] = "Dominica",
["Yn Phobblaght Ghominicagh"] = "Yn Phobblaght Ghominicagh",
["Grenada"] = "Grenada",
["Ny Hondooraghyn"] = "Ny Hondooraghyn",
["Noo Kitts as Nevis"] = "Noo Kitts as Nevis",
["Noo Lucia"] = "Noo Lucia",
["Noo Winsen as ny Grenadeenyn"] = "Noo Winsen as ny Grenadeenyn",
["Yn Coose Berçhagh"] = "Yn Coose Berçhagh",
-- Confirmed no inflection.
["Ard-valley yn Phaab"] = "Ard-valley yn Phaab",
["Bosnia as Herzegovina"] = "Bosnia as Herzegovina",
["Andorra"] = "Andorra",
["Lucsemburg"] = "Lucsemburg",
["Liechtenstein"] = "Liechtenstein",
["Ellan y Trinaid as Tobago"] = "Ellan y Trinaid as Tobago",
}
local genitive = {
["Yn Albaan"] = "yn Albaan",
["Yn Austrail"] = "yn Austrail",
["Bretyn"] = "Vretyn",
["Yn Chanadey"] = "y Chanadey",
["Yn Chroit"] = "y Chroit",
["Yn Eeslynn"] = "yn Eeslynn",
["Yn Estaan"] = "yn Estaan",
["Finnlynn"] = "Innlynn",
["Yn Ghermaan"] = "y Ghermaan",
["Yn Ghreag"] = "y Ghreag",
["Greenlynn"] = "Ghreenlynn",
["Yn Iddaal"] = "yn Iddaal",
["Jersee"] = "Jersee",
["Kosovo"] = "Chosovo",
["Yn Latvey"] = "y Latvey",
["Yn Litaan"] = "y Litaan",
["Mannin"] = "Vannin",
["Meksico"] = "Veksico",
["Nalbin"] = "ny h-Albey",
["Nerin"] = "Nerin",
["Yn Ookraan"] = "yn Ookraan",
["Yn Pholynn"] = "y Pholynn",
["Yn Phortiugal"] = "y Phortiugal",
["Yn Phroosh"] = "y Phroosh",
["Yn Rank"] = "y Rank",
["Yn Reeriaght Unnaneysit"] = "y Reeriaght Unnaneysit",
["Yn Roosh"] = "y Roosh",
["Yn Serb"] = "y Terb",
["Sostyn"] = "Hostyn",
["Yn Spaainey"] = "y Spaainey",
["Ny Steatyn Unnaneysit"] = "ny Steatyn Unnaneysit",
["Yn Toolynn"] = "y Toolynn",
-- Added per your list of Sep 2026 -- exactly as given: your lowercase
-- "yn X"/"ny X" forms are the genitive verbatim; a "(mutates to X)"/
-- "(no change)" note gives the genitive directly too.
["Yn Austeyr"] = "yn Austeyr",
["Yn Armeain"] = "yn Armeain",
["Yn Asserbajaan"] = "yn Asserbajaan",
["Yn Argenteen"] = "yn Argenteen",
["Yn Velg"] = "yn Velg",
["Yn Velaroosh"] = "yn Velaroosh",
["Moldova"] = "Voldova",
["Yn Çhorshey"] = "yn Çhorshey",
["Yn Vulgeyr"] = "yn Vulgeyr",
["Yn Romaan"] = "yn Romaan",
["Yn Ungaar"] = "yn Ungaar",
["Yn Çheck"] = "yn Çheck",
["Yn Clovack"] = "yn Clovack",
["Yn Clovean"] = "yn Clovean",
["Yn Elveeish"] = "yn Elveeish",
["Norlynn"] = "Norlynn",
["Yn Danvarg"] = "yn Danvarg",
["San Marino"] = "San Marino",
["Monaco"] = "Vonaco",
["Yn Valta"] = "yn Valta",
["Yn Çheer Injil"] = "yn Çheer Injil",
["Yn Vrasseel"] = "yn Vrasseel",
["Yn Çhillee"] = "yn Çhillee",
["Yn Ooraguay"] = "yn Ooraguay",
["Yn Pharaguay"] = "yn Pharaguay",
["Yn Volivia"] = "yn Volivia",
["Yn Pheroo"] = "yn Pheroo",
["Yn Cholombey"] = "yn Cholombey",
["Geeaaney"] = "Gheeaaney",
["Yn Toorinam"] = "yn Toorinam",
["Yn Phanamaa"] = "yn Phanamaa",
["Yn Ghuatemaley"] = "yn Ghuatemaley",
["Yn Nickeraag"] = "yn Nickeraag",
["Yn Veleesh"] = "yn Veleesh",
["Yn Salvador"] = "y Talvador",
["Yn Choobey"] = "yn Choobey",
["Ny Bahamaghyn"] = "ny Bahamaghyn",
["Ny Bermioodee"] = "ny Bermioodee",
["Yn Jamaicey"] = "yn Jamaicey",
["Antigua as Barbuda"] = "Antigua as Barbuda",
["Barbados"] = "Barbados",
["Dominica"] = "Dominica",
["Yn Phobblaght Ghominicagh"] = "yn Phobblaght Ghominicagh",
["Grenada"] = "Grenada",
["Ny Hondooraghyn"] = "ny Hondooraghyn",
["Noo Kitts as Nevis"] = "Noo Kitts as Nevis",
["Noo Lucia"] = "Noo Lucia",
["Noo Winsen as ny Grenadeenyn"] = "Noo Winsen as ny Grenadeenyn",
["Yn Coose Berçhagh"] = "y Choose Berçhagh",
-- Confirmed no inflection.
["Ard-valley yn Phaab"] = "Ard-valley yn Phaab",
["Bosnia as Herzegovina"] = "Bosnia as Herzegovina",
["Andorra"] = "Andorra",
["Lucsemburg"] = "Lucsemburg",
["Liechtenstein"] = "Liechtenstein",
["Ellan y Trinaid as Tobago"] = "Ellan y Trinaid as Tobago",
}
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
k13jq674mv1xnojv3qo2tnhbq9an6fg
393450
393423
2026-09-19T22:19:34Z
MacTire02
219
++
393450
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 Abcaaish"] = "Yn Abcaaish",
["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 Armeain"] = "Yn Armeain",
["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",
["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",
["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",
["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 Abcaaish"] = "yn Abcaaish",
["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 Armeain"] = "yn Armeain",
["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",
["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",
["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"] = "Vonaco",
["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",
["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
4z4ir0mcgnmpzzbjuyih7tgc6l4trrb
Module:Kishtey fys çheer/bratteeyn
828
55831
393454
393286
2026-09-20T02:29:37Z
MacTire02
219
prowal red ry hoi shooylee
393454
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
-- `|style="..."` is not a real MediaWiki image option -- inline
-- image markup has no such parameter, so it was silently
-- dropped, which is why no flag (rectangular or not) was
-- getting a border at all. `|border` is the real, standard
-- image option (adds the classic thin "thumbborder" line) and
-- is what actually renders.
local border = f.hasBorder and '|border' or ""
table.insert(flagContent, '[[Coadan:' .. f.image .. '|' .. f.width .. border .. ']]')
end
-- `align="center"` (and the outer/table ones below) is the
-- deprecated presentational HTML attribute -- it loses to ANY
-- author stylesheet rule for the same property, with no !important
-- needed, so Wikipedia's own mobile skin (Minerva) overriding
-- infobox cell alignment for readability was enough to silently
-- beat it, leaving the flag/arms images stuck to the left edge of
-- their cells on mobile even though desktop looked fine. An inline
-- `style="text-align:center;"` sits right on the element itself
-- (effectively the highest specificity short of !important), so it
-- wins over a skin-level class/tag selector instead of losing to
-- 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 in the infobox (this used
-- to be wrapped in <small>, which on top of the outer table's own
-- font-size:95% made "Brattagh"/"Armys" 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
o37wgbldjhmqsa360fbg4efrn3qq1yp
Module:Kishtey fys çheer/cowraghyn
828
55832
393397
393356
2026-09-19T16:51:34Z
MacTire02
219
++
393397
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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Wraps a plain language name in [[...]], unless it's already a wikilink
-- (a manual |çhengey_*=[[target|display]] override) -- avoids double-
-- bracketing, same guard as reiltys.lua's wikilinkLabel for
-- |sorçh_kiondeeaght=.
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"})
-- FIXED: |jarroo-raa=none must suppress the motto ENTIRELY -- manual
-- text AND the Wikidata fallback -- not just skip the manual text and
-- fall through to Wikidata anyway. This is the manual-override safety
-- valve for bad Wikidata data (e.g. Slovakia's P1451 "motto" is
-- actually just a tourism slogan, not a real motto; Russia's is
-- likewise a tourism slogan, "Reveal your own Russia"), so it has to
-- actually suppress, not just get skipped in favour of the same bad
-- data. Previously this branch was never reached: `not "none" then
-- finalText = motto` was false for "none", so it fell into the `else`
-- and queried Wikidata anyway, silently reinstating the exact value
-- the editor was trying to override.
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"})
local tessen = getManual(args, {"tessen-lettyraghey_jarroo-raa", "tessen-lettyraghey_jarroo_raa"})
local chengey = getManual(args, {"çhengey_jarroo-raa", "çhengey_jarroo_raa"})
local finalText = nil
if motto then
finalText = motto
else
local entity = mw.wikibase.getEntityObject()
if entity then
local statements = entity:getBestStatements("P1451")
if statements and #statements > 0 then
-- FIXED: Safely loops through statements array elements instead of tracking a nil mainsnak index
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
finalText = value.text
break
end
end
end
end
end
end
local finalRef = wrapReference(reference)
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen, chengey = chengey } end
return nil
end
-- Given a property holding an item value (e.g. P85 = anthem), resolve the
-- linked item to a page title: prefer the local (gv) sitelink so the link
-- isn't red, falling back to the item's label if no gv article exists yet.
-- Returns the title, the item's own ID (needed to query further
-- properties, e.g. an audio file, on that item rather than the country's),
-- and -- confirmed directly on Wikidata (screenshotted) for "God Save the
-- King" -- any P51 (audio) QUALIFIER attached to THIS SAME statement.
-- An anthem shared by several countries/realms has no single canonical
-- recording of its own, so its audio is often attached per-COUNTRY as a
-- qualifier on that country's own claim, rather than as a standalone P51
-- statement on the anthem item itself (which is instead how a country-
-- specific anthem like Nepal's tends to carry its one, unambiguous
-- recording). Both shapes are real; this reads whichever this statement
-- actually has.
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
-- Given a Wikidata item ID, return its OWN P51 (audio) file name, if any --
-- a standalone statement on that item's own page, as opposed to the
-- per-country qualifier `getWikidataItemInfo` above already checks first.
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 or script-neutral" for italicisation
-- purposes: Basic Latin, Latin-1 Supplement, Latin Extended-A/B, IPA
-- Extensions, combining diacritics, Latin Extended Additional, and general
-- punctuation (smart quotes, dashes, etc., which carry no script of their
-- own). Anything outside these ranges (Cyrillic, Greek, Arabic, Hebrew,
-- CJK, Devanagari, ...) is a non-Latin script and must not be italicised
-- per MOS:FOREIGNITALIC - italic forms don't meaningfully exist for most
-- non-Latin scripts.
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
-- UTF-8-SAFE quote-stripping: plain Lua `:gsub` operates on raw
-- BYTES, and "“"/"”" are 3-byte UTF-8 sequences (E2 80 9C / E2 80
-- 9D) -- as a character class, that byte-wise gsub would match ANY
-- of those individual bytes anywhere they occur, not the 3-byte
-- sequence as a whole. Devanagari (and many other non-Latin
-- scripts) routinely ends a character on a continuation byte of
-- 0x80 -- which is EXACTLY one of the raw bytes "”" is made of --
-- so a plain `:gsub('["”]$', '')` could silently truncate the
-- LAST BYTE of an unrelated non-Latin character, corrupting it
-- into invalid UTF-8. That corruption is what made isNonLatinScript
-- misfire below: mw.ustring.len on the now-malformed string falls
-- back to treating it as unreadable and returns early, which this
-- module's "can't tell, so don't italicise" default then inverts
-- into "wrap it in italics" -- exactly the reported bug. Routed
-- through mw.ustring.gsub (codepoint-aware, not byte-aware) fixes
-- this for every script, not just Devanagari.
local baseText = mw.ustring.gsub(mw.ustring.gsub(mw.text.trim(motto.text), '^["“]', ''), '["”]$', '')
-- Italicised purely by script (MOS:FOREIGNITALIC) -- whether the
-- text happens to also be a wikilink is irrelevant; ''[[x|y]]''
-- renders as an italicised link exactly as intended.
if not isNonLatinScript(baseText) then
baseText = "''" .. baseText .. "''"
end
-- |çhengey_jarroo-raa=/|çhengey_jarroo_raa= names the motto's own
-- language, shown right beside it as a small parenthetical link,
-- e.g. "''Государственный герб России'' {{small|([[Russian]])}}".
if motto.chengey and motto.chengey ~= "" then
baseText = baseText .. " {{small|(" .. linkPlainText(motto.chengey) .. ")}}"
end
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
-- A transliteration is by definition always Latin-script (that's
-- what transliterating INTO means), so it never takes the italics
-- treatment above -- it goes in quotation marks instead, per your
-- rule: non-Latin text is never italicised, and a transliteration
-- (where given) comes through in quotes.
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " <br/>(“" .. motto.tessenLettyraghey .. "”)" end
if 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})
-- FIXED: an explicit |<key>=none (e.g. |arrane_ashoonagh=none) must
-- suppress this row ENTIRELY -- same bug, and same fix, as the
-- motto above: it used to fall straight through to the Wikidata
-- fallback instead of actually suppressing anything, since
-- resolving that fallback overwrote `title` before the "none"
-- check below ever saw it.
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
-- Same UTF-8-safe quote-stripping as the motto above (see its
-- comment) -- an anthem title in a non-Latin script is just as
-- exposed to the same byte-level corruption.
local clean = mw.ustring.gsub(mw.ustring.gsub(mw.text.trim(title), '^["“]', ''), '["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
-- |çhengey_<key>= names this anthem's own language, shown right
-- beside the title as a small parenthetical link -- same pattern
-- as the motto's own |çhengey_jarroo-raa= above.
local chengey = getManual(args, {"çhengey_" .. key})
if chengey and chengey ~= "" then
display = display .. " {{small|(" .. linkPlainText(chengey) .. ")}}"
end
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 tessen = getManual(args, {"tessen-lettyraghey_" .. key})
-- A transliteration is always Latin-script by definition -- quotes,
-- never italics, same rule as the motto's own transliteration above.
if tessen and tessen ~= "" then display = display .. " <br/>(“" .. tessen .. "”)" end
local chyndaa = getManual(args, {"çhyndaa_" .. key, "chyndaa_" .. key})
if chyndaa and chyndaa ~= "" then display = display .. " <br/><small>“" .. chyndaa .. "”</small>" end
local audio = getManual(args, {"coadan_" .. key})
if (not audio or audio == "") and wikidataInfo then
-- Prefer a per-country qualifier on THIS SAME statement
-- (confirmed on Wikidata for a shared anthem like "God Save
-- the King", which has no single canonical recording of its
-- own) over the anthem item's own standalone P51 statement
-- (how a country-specific anthem like Nepal's tends to be
-- modelled instead) -- either shape now resolves.
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
3pw42tap9br2uyqprccfzwy97lves66
393398
393397
2026-09-19T16:55:14Z
MacTire02
219
++
393398
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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Wraps a plain language name in [[...]], unless it's already a wikilink
-- (a manual |çhengey_*=[[target|display]] override) -- avoids double-
-- bracketing, same guard as reiltys.lua's wikilinkLabel for
-- |sorçh_kiondeeaght=.
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"})
-- FIXED: |jarroo-raa=none must suppress the motto ENTIRELY -- manual
-- text AND the Wikidata fallback -- not just skip the manual text and
-- fall through to Wikidata anyway. This is the manual-override safety
-- valve for bad Wikidata data (e.g. Slovakia's P1451 "motto" is
-- actually just a tourism slogan, not a real motto; Russia's is
-- likewise a tourism slogan, "Reveal your own Russia"), so it has to
-- actually suppress, not just get skipped in favour of the same bad
-- data. Previously this branch was never reached: `not "none" then
-- finalText = motto` was false for "none", so it fell into the `else`
-- and queried Wikidata anyway, silently reinstating the exact value
-- the editor was trying to override.
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"})
local tessen = getManual(args, {"tessen-lettyraghey_jarroo-raa", "tessen-lettyraghey_jarroo_raa"})
local chengey = getManual(args, {"çhengey_jarroo-raa", "çhengey_jarroo_raa"})
local finalText = nil
if motto then
finalText = motto
else
local entity = mw.wikibase.getEntityObject()
if entity then
local statements = entity:getBestStatements("P1451")
if statements and #statements > 0 then
-- FIXED: Safely loops through statements array elements instead of tracking a nil mainsnak index
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
finalText = value.text
break
end
end
end
end
end
end
local finalRef = wrapReference(reference)
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen, chengey = chengey } end
return nil
end
-- Given a property holding an item value (e.g. P85 = anthem), resolve the
-- linked item to a page title: prefer the local (gv) sitelink so the link
-- isn't red, falling back to the item's label if no gv article exists yet.
-- Returns the title, the item's own ID (needed to query further
-- properties, e.g. an audio file, on that item rather than the country's),
-- and -- confirmed directly on Wikidata (screenshotted) for "God Save the
-- King" -- any P51 (audio) QUALIFIER attached to THIS SAME statement.
-- An anthem shared by several countries/realms has no single canonical
-- recording of its own, so its audio is often attached per-COUNTRY as a
-- qualifier on that country's own claim, rather than as a standalone P51
-- statement on the anthem item itself (which is instead how a country-
-- specific anthem like Nepal's tends to carry its one, unambiguous
-- recording). Both shapes are real; this reads whichever this statement
-- actually has.
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
-- Given a Wikidata item ID, return its OWN P51 (audio) file name, if any --
-- a standalone statement on that item's own page, as opposed to the
-- per-country qualifier `getWikidataItemInfo` above already checks first.
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 or script-neutral" for italicisation
-- purposes: Basic Latin, Latin-1 Supplement, Latin Extended-A/B, IPA
-- Extensions, combining diacritics, Latin Extended Additional, and general
-- punctuation (smart quotes, dashes, etc., which carry no script of their
-- own). Anything outside these ranges (Cyrillic, Greek, Arabic, Hebrew,
-- CJK, Devanagari, ...) is a non-Latin script and must not be italicised
-- per MOS:FOREIGNITALIC - italic forms don't meaningfully exist for most
-- non-Latin scripts.
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
-- UTF-8-SAFE quote-stripping: plain Lua `:gsub` operates on raw
-- BYTES, and "“"/"”" are 3-byte UTF-8 sequences (E2 80 9C / E2 80
-- 9D) -- as a character class, that byte-wise gsub would match ANY
-- of those individual bytes anywhere they occur, not the 3-byte
-- sequence as a whole. Devanagari (and many other non-Latin
-- scripts) routinely ends a character on a continuation byte of
-- 0x80 -- which is EXACTLY one of the raw bytes "”" is made of --
-- so a plain `:gsub('["”]$', '')` could silently truncate the
-- LAST BYTE of an unrelated non-Latin character, corrupting it
-- into invalid UTF-8. That corruption is what made isNonLatinScript
-- misfire below: mw.ustring.len on the now-malformed string falls
-- back to treating it as unreadable and returns early, which this
-- module's "can't tell, so don't italicise" default then inverts
-- into "wrap it in italics" -- exactly the reported bug. Routed
-- through mw.ustring.gsub (codepoint-aware, not byte-aware) fixes
-- this for every script, not just Devanagari.
local baseText = mw.ustring.gsub(mw.ustring.gsub(mw.text.trim(motto.text), '^["“]', ''), '["”]$', '')
-- Italicised purely by script (MOS:FOREIGNITALIC) -- whether the
-- text happens to also be a wikilink is irrelevant; ''[[x|y]]''
-- renders as an italicised link exactly as intended.
if not isNonLatinScript(baseText) then
baseText = "''" .. baseText .. "''"
end
-- |çhengey_jarroo-raa=/|çhengey_jarroo_raa= names the motto's own
-- language, shown right beside it as a small parenthetical link,
-- e.g. "''Virtus Unita Fortior'' <small>([[Ladjyn]])</small>".
--
-- FIXED: a literal "{{small|...}}" string returned from a module
-- is NOT re-parsed as a template call -- #invoke output is
-- inserted post-preprocessing, so any "{{...}}" left inside it
-- just shows up as literal braces on the page (exactly what your
-- screenshot showed: "{{small|(Ladjyn)}}" printed as plain text).
-- That's why noteyn_*/efn above goes through frame:expandTemplate
-- instead of literal "{{efn|...}}" text. Rather than assume a
-- Template:Small exists on gv.wiki and add another
-- frame:expandTemplate call, this uses the native <small> tag --
-- guaranteed to render, and the same mechanism this very function
-- already uses for the chyndaa (translation) line just below.
if motto.chengey and motto.chengey ~= "" then
baseText = baseText .. " <small>(" .. linkPlainText(motto.chengey) .. ")</small>"
end
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
-- A transliteration is by definition always Latin-script (that's
-- what transliterating INTO means), so it never takes the italics
-- treatment above -- it goes in quotation marks instead, per your
-- rule: non-Latin text is never italicised, and a transliteration
-- (where given) comes through in quotes.
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " <br/>(“" .. motto.tessenLettyraghey .. "”)" end
if 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})
-- FIXED: an explicit |<key>=none (e.g. |arrane_ashoonagh=none) must
-- suppress this row ENTIRELY -- same bug, and same fix, as the
-- motto above: it used to fall straight through to the Wikidata
-- fallback instead of actually suppressing anything, since
-- resolving that fallback overwrote `title` before the "none"
-- check below ever saw it.
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
-- Same UTF-8-safe quote-stripping as the motto above (see its
-- comment) -- an anthem title in a non-Latin script is just as
-- exposed to the same byte-level corruption.
local clean = mw.ustring.gsub(mw.ustring.gsub(mw.text.trim(title), '^["“]', ''), '["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
-- |çhengey_<key>= names this anthem's own language, shown right
-- beside the title as a small parenthetical link -- same pattern,
-- and same <small>-tag fix, as the motto's own |çhengey_jarroo-raa=
-- above.
local chengey = getManual(args, {"çhengey_" .. key})
if chengey and chengey ~= "" then
display = display .. " <small>(" .. linkPlainText(chengey) .. ")</small>"
end
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 tessen = getManual(args, {"tessen-lettyraghey_" .. key})
-- A transliteration is always Latin-script by definition -- quotes,
-- never italics, same rule as the motto's own transliteration above.
if tessen and tessen ~= "" then display = display .. " <br/>(“" .. tessen .. "”)" end
local chyndaa = getManual(args, {"çhyndaa_" .. key, "chyndaa_" .. key})
if chyndaa and chyndaa ~= "" then display = display .. " <br/><small>“" .. chyndaa .. "”</small>" end
local audio = getManual(args, {"coadan_" .. key})
if (not audio or audio == "") and wikidataInfo then
-- Prefer a per-country qualifier on THIS SAME statement
-- (confirmed on Wikidata for a shared anthem like "God Save
-- the King", which has no single canonical recording of its
-- own) over the anthem item's own standalone P51 statement
-- (how a country-specific anthem like Nepal's tends to be
-- modelled instead) -- either shape now resolves.
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
pc9bih53cyrv2roc6c7ig1qidbug6fs
393403
393398
2026-09-19T17:35:58Z
MacTire02
219
cowraghyn
393403
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
-- 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
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-raa=none suppresses the motto ENTIRELY -- manual text AND the
-- Wikidata fallback -- the override valve for bad Wikidata data (e.g.
-- Slovakia/Russia's P1451 "motto" is actually just a tourism slogan).
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"})
local tessen = getManual(args, {"tessen-lettyraghey_jarroo-raa", "tessen-lettyraghey_jarroo_raa"})
local chengey = getManual(args, {"çhengey_jarroo-raa", "çhengey_jarroo_raa"})
local finalText = nil
if motto then
finalText = motto
else
local entity = mw.wikibase.getEntityObject()
if entity then
local statements = entity:getBestStatements("P1451")
if statements and #statements > 0 then
-- FIXED: Safely loops through statements array elements instead of tracking a nil mainsnak index
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
finalText = value.text
break
end
end
end
end
end
end
local finalRef = wrapReference(reference)
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen, chengey = chengey } end
return nil
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 (for further property lookups on it), and any P51
-- (audio) QUALIFIER on this same statement -- a shared anthem (e.g. "God
-- Save the King") often has its audio attached per-country this way rather
-- than as a standalone P51 on the anthem item itself.
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
-- Given a Wikidata item ID, returns its OWN P51 (audio) file name, if any --
-- a standalone statement, as opposed to the per-country qualifier checked first.
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 or script-neutral" for italicisation
-- (Latin blocks, IPA, diacritics, general punctuation). Anything else
-- (Cyrillic, Greek, Arabic, CJK, Devanagari, ...) must not be 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
-- UTF-8-safe quote-stripping via mw.ustring.gsub (codepoint-aware) --
-- a byte-wise :gsub could truncate the last byte of an unrelated
-- non-Latin character (e.g. Devanagari), corrupting it and making
-- isNonLatinScript misfire into wrongly italicising it.
local baseText = mw.ustring.gsub(mw.ustring.gsub(mw.text.trim(motto.text), '^["“]', ''), '["”]$', '')
-- Italicised purely by script (MOS:FOREIGNITALIC), wikilink or not.
if not isNonLatinScript(baseText) then
baseText = "''" .. baseText .. "''"
end
-- |çhengey_jarroo-raa=/|çhengey_jarroo_raa= names the motto's own
-- language, shown beside it as a small parenthetical link, e.g.
-- "''Virtus Unita Fortior'' <small>([[Ladjyn]])</small>". Uses the
-- native <small> tag, not {{small}} -- a literal "{{...}}" string
-- returned from a module is never re-parsed as a template call, so
-- it would render as literal braces (the same reason noteyn_*/efn
-- above goes through frame:expandTemplate, not literal wikitext).
if motto.chengey and motto.chengey ~= "" then
baseText = baseText .. " <small>(" .. linkPlainText(motto.chengey) .. ")</small>"
end
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
-- A transliteration is always Latin-script by definition, so it never gets
-- italics -- quotation marks instead.
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " <br/>(“" .. motto.tessenLettyraghey .. "”)" end
if 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>=none suppresses this row ENTIRELY -- same fix as the motto
-- above.
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
-- Same UTF-8-safe quote-stripping as the motto above.
local clean = mw.ustring.gsub(mw.ustring.gsub(mw.text.trim(title), '^["“]', ''), '["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
-- |çhengey_<key>= names this anthem's own language, same pattern as the
-- motto's |çhengey_jarroo-raa= above.
local chengey = getManual(args, {"çhengey_" .. key})
if chengey and chengey ~= "" then
display = display .. " <small>(" .. linkPlainText(chengey) .. ")</small>"
end
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 tessen = getManual(args, {"tessen-lettyraghey_" .. key})
-- Same transliteration rule as the motto above: quotes, never italics.
if tessen and tessen ~= "" then display = display .. " <br/>(“" .. tessen .. "”)" end
local chyndaa = getManual(args, {"çhyndaa_" .. key, "chyndaa_" .. key})
if chyndaa and chyndaa ~= "" then display = display .. " <br/><small>“" .. chyndaa .. "”</small>" end
local audio = getManual(args, {"coadan_" .. key})
if (not audio or audio == "") and wikidataInfo then
-- Prefer a per-country qualifier on this statement (e.g. "God Save the
-- King") over the anthem item's own standalone P51 (e.g. Nepal's).
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
pfcvy92ysze1lmr9h9mrj468mvxdnhj
Module:Kishtey fys çheer/çhengaghyn
828
55833
393434
393167
2026-09-19T20:55:52Z
MacTire02
219
++
393434
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
return "<ref>" .. ref .. "</ref>"
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
if mw.text.trim(raw) == NO_OFFICIAL_LANGUAGE then
local display = NO_OFFICIAL_LANGUAGE
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
if note and note ~= "" and frame then
display = display .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
display = display .. wrapReference(ref)
end
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>'
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, #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
8oycxexu9ucgnuiom9qpsnu30yh8f92
393435
393434
2026-09-19T20:59:38Z
MacTire02
219
++
393435
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
return "<ref>" .. ref .. "</ref>"
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"
-- Pulls any <ref>...</ref>/<ref .../> content OUT of text and hands it back
-- separately, rather than discarding it -- a manual value often has one or
-- more citations typed directly into the field (old-template habit, same
-- as wrapReference's own note below), e.g. "Çhengey oikoil
-- erbee<ref>A</ref><ref>B</ref><ref>C</ref>". Scribunto expands a literal
-- <ref> in a parameter into an opaque \127UNIQ...QINU\127 strip marker
-- before this module ever sees it, so that's the primary shape matched;
-- literal <ref> text is also handled, for parity with wrapReference.
local function stripInlineRefs(text)
local refs = {}
local stripped = text:gsub("\127UNIQ.-QINU\127", function(marker)
table.insert(refs, marker)
return ""
end)
stripped = stripped:gsub("<ref[^>]*>.-</ref>", function(tag)
table.insert(refs, tag)
return ""
end)
stripped = stripped:gsub("<ref[^>]*/>", function(tag)
table.insert(refs, tag)
return ""
end)
return mw.text.trim(stripped), table.concat(refs)
end
local function buildLanguageValue(raw, ref, note, frame)
if not raw or mw.text.trim(raw):lower() == "none" then return nil, 0 end
-- Match the sentinel even when one or more citations are typed
-- directly into the same field -- previously this only matched the
-- bare phrase exactly, so "Çhengey oikoil erbee<ref>...</ref>" fell
-- through to the generic self-linking path below, which (a) wrapped it
-- in [[...]] like a real language name and (b) silently dropped the
-- inline citations rather than preserving them.
local withoutInlineRefs, inlineRefs = stripInlineRefs(raw)
if withoutInlineRefs == NO_OFFICIAL_LANGUAGE then
local display = NO_OFFICIAL_LANGUAGE
if note and note ~= "" and frame then
display = display .. frame:expandTemplate{ title = "efn", args = { note } }
end
if inlineRefs ~= "" then
display = display .. inlineRefs
end
if ref then
display = display .. wrapReference(ref)
end
return display, 1
end
if raw:find("%[%[", 1, false) 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
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>'
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, #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
dnpj0nzvbiekq7iwcdukemv35kil6pe
393436
393435
2026-09-19T21:05:57Z
MacTire02
219
++
393436
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
return "<ref>" .. ref .. "</ref>"
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
if note and note ~= "" and frame then
display = display .. frame:expandTemplate{ title = "efn", args = { note } }
end
if ref then
display = display .. wrapReference(ref)
end
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>'
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, #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
sjoor8svzt2m9i3rf6fo7gl0vea89z8
Module:Kishtey fys çheer/reiltys
828
55837
393391
393300
2026-09-19T14:36:56Z
MacTire02
219
++
393391
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module. Used instead of Module:WikidataIB, which
-- has no working citation-building of its own.
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated name forms (e.g. "Mannin" -> "Vannin", "Nalbin"
-- -> "ny h-Albey"). See getCurrentCountryGenitive/shortManxForm below.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Shared "Manx label, else linked Wikidata fallback" helper -- see its own
-- header comment. Used as the last rung in getWdItemManxLink below.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref> and/or {{efn}} note (the imraa_*/noteyn_* params)
-- to a value, on top of any Wikidata-sourced citation it already has.
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.
-- includeReference controls whether Wd's "reference" flag is passed.
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
-- Fetches a Wikidata property value with its auto-built citation already
-- appended. `flags` is an optional array of extra Wd flags (e.g.
-- {"linked"}). Safe only when the result isn't going to be re-wrapped in a
-- fresh "[[...]]" by the caller -- use getWdPropertyWithCitation for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a property's value and its already-rendered citation (e.g. "[1]")
-- as two separate strings, by fetching with and without Wd's "reference"
-- flag and diffing them -- so a caller can wrap the bare value in "[[...]]"
-- (ensureLinked) without the citation's own "[" breaking the link. Returns
-- `value, citation`; citation is nil when there is none.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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("%[%[") then
return value -- already a real link via a gv sitelink
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY itself (e.g. P35 -> "head of state"),
-- used as a title fallback. getLabelByLang (not plain label()) avoids
-- leaking an English fallback when no Manx label exists.
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 (no link/label formatting) of an entity-valued property on the
-- current page's own item -- e.g. P35's value, for chaining into a lookup
-- on that person's own item (see getWdPositionTitle below).
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
-- Raw QIDs of EVERY value of an entity-valued property on the current
-- page's own item (plural version of getWdRawPropertyId above) -- e.g.
-- every P122 ("basic form of government") statement.
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 QID of a QUALIFIER on the current page's own "best" statement of
-- `property` -- e.g. the P1393 ("proxy") qualifier on a P35 statement. Call
-- shape is {"raw", "best", mainProperty, qualifierProperty}; no `eid`, so it
-- defaults to the current page's own entity.
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
-- Raw QIDs of every value of an entity-valued property on a FOREIGN
-- Wikidata item (`eid`) -- e.g. a leader's own P39 ("position held")
-- statements. Uses Wd's plural "properties" command so every matching
-- claim is returned, not just one. `qualifiers` is an optional
-- {qualifierProperty = requiredValue} table to filter by (e.g. P1001
-- "applies to jurisdiction" -- see getWdPositionTitle below).
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
-- Manx genitive form of the current page's own country/territory (e.g.
-- "Vannin" for the Isle of Man, "y Reeriaght Unnaneysit" for the UK), from
-- Module:Enmyn çheerey's table, keyed on the page's own title.
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
-- Section label linked to the country-specific article/redirect when one
-- exists (e.g. "[[Reiltys y Reeriaght Unnaneysit|Reiltys]]" for the UK,
-- "[[Reiltys Vannin|Reiltys]]" for the Isle of Man), else a plain
-- "[[Reiltys]]" when the current page's genitive can't be resolved.
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened even though they'd otherwise match a rung
-- below (e.g. "Çhiarn Vannin" should stay whole, not lose " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips the country name from an office title for display, e.g. "Monark y
-- Reeriaght Unnaneysit" -> "Monark". Tries, in order: Module:Enmyn
-- çheerey's exact genitive suffix, an explicit " y " split, then a blind
-- last-space split. A title with no space at all is returned unchanged.
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #title > #suffix and title:sub(-#suffix) == suffix then
return title:sub(1, #title - #suffix)
end
end
local short = title:match("^(.-)%sy%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
-- Same idea as shortManxForm, for a shared monarch's own per-realm article
-- name (e.g. "Çhalse III y Reeriaght Unnaneysit"). Skips the blind
-- last-space rung, which would wrongly truncate "Charse III" -> "Charse".
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #name > #suffix and name:sub(-#suffix) == suffix then
return name:sub(1, #name - #suffix)
end
end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
return name
end
-- Shortens the DISPLAY text of a head-of-state link when it's a per-realm-
-- disambiguated article, leaving the link target and any citation
-- untouched. Head-of-state only -- a head of government is never shared
-- across countries, so this shape of data doesn't arise there.
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 the first letter via the content language's own ucfirst
-- (UTF-8/digraph-safe, e.g. "çh") -- not a plain Lua upper() on byte 1.
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 ennym-wd external-link marker -- for a comma-joined
-- multi-value line, only the first item. 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 -- 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
-- Builds a wikilink for a Wikidata item: gv sitelink, else gv label (as a
-- redlink), else an ennym-wd external link to Wikidata. Display text always
-- prefers the gv label, even when a sitelink has a different title.
-- shorten (default true): strip a "role + country" suffix (shortManxForm) --
-- pass false for an ordinary proper name (a chamber, a calendar concept).
-- capitalize (default true): pass false when building one item of a
-- multi-value list, where only the caller's finished line gets capitalized.
-- Returns nil only when nothing resolves at all.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 "office
-- held by head of state" / P1313 "office held by head of government"),
-- when Wikidata records it -- avoids the multi-role ambiguity in
-- getWdPositionTitle below. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Fallback for a country with no P1906/P1313 set: the officeholder's own
-- "position held" (P39). A person can hold several concurrent P39s (several
-- realms, or an MP/party-leader/PM combo) with no reliable qualifier saying
-- which is "the" state office, so this tries every current candidate
-- (P1001-jurisdiction-filtered first) and uses the first with a real gv
-- article -- in practice the actual office is the one likely to have one.
local function getWdPositionTitle(headProperty)
local personQid = getWdRawPropertyId(headProperty)
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
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
-- How many "subclass of" (P279) hops to walk up from a chamber's own P31
-- class before giving up. Confirmed directly on Wikidata (screenshotted,
-- not guessed): the UK's House of Lords/House of Commons are NOT
-- instance-of the generic upper/lower-house classes directly -- they're
-- instance-of their OWN classes ("house of lords" / "house of commons"),
-- which presumably subclass the generic ones a hop or two further up.
-- Capped rather than unbounded, so a class hierarchy this can't resolve
-- costs a small, predictable number of extra lookups instead of an
-- open-ended graph walk.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid`, or reaches it by walking up "subclass
-- of" (P279). The direct P31 == target check (the common, cheap case) is
-- still tried first in getWdChambers below; this only runs when that
-- misses. `seen` guards against a cyclical class graph re-visiting the
-- same item and looping.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part -- checked first against the generic
-- upper/lower-house classes directly, then (only if that misses) by
-- walking up each class's own "subclass of" (P279) chain, since a chamber
-- is often classified via its own country-specific class (e.g. the UK's
-- "house of lords"/"house of commons" classes) rather than the generic
-- class directly. Unicameral (no P527) or ambiguous data yields nothing
-- for that side; no auto-built citation is attached.
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
-- Wikidata's "proleptic Julian calendar" item -- not plain "Julian
-- calendar" (Q11184); a time value's calendar model always points to the
-- proleptic variant.
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" for a Julian-calendar date, with a blind,
-- unverified link. Rebuilds it as a real three-tier link, keeping "Joolagh"
-- as the display text; falls back to plain unlinked text if nothing resolves.
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
-- Row templates: plain 2-cell rows, matching every other submodule
-- (çhengaghyn, balley, bratteeyn). The old template's 3-column grid caused
-- a layout bug when mixed with 2-column rows. Sub-items get a "•" bullet +
-- lighter weight instead of a spacer column.
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:normal; overflow-wrap:anywhere; word-break:normal; text-align:left; font-weight:normal; padding-left:0.9em; padding-right:0.4em;">• %s</th><td style="vertical-align:top; white-space:normal; overflow-wrap:anywhere; word-break:normal; 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
-- Wraps a section label in [[...]], unless it's already a full wikilink
-- (a manual |sorçh_kionedeeaght=[[target|display]] override) -- otherwise
-- that would double-bracket into a broken [[[[target|display]]]].
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider Module:Kishtey fys çheer uses between submodules, reused
-- here between this module's own sections -- only inserted between two
-- sections 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
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 = {}
----------------------------------------------------------------
-- 1-2. REILTYS (government type) + leaders (head of state/government,
-- etc.). enmysN_fer-toshee/ennymN_fer-toshee are the old gendered
-- param names; enmys_toshiaghN/ennym_toshiaghN are the gender-neutral
-- synonyms and take priority when both are given.
----------------------------------------------------------------
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
-- Wikidata fallback: basic form of government (P122), joining every
-- value. Routed through getWdItemManxLink (not Wd's own "linked"
-- flag) since a P122 value rarely has a gv sitelink and would
-- otherwise leak unlinked English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
-- Some countries (US, France, Russia, ...) record the same person as
-- both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local hogQid = getWdRawPropertyId("P6")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
----------------------------------------------------------------
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for
-- quaiyl; thie_heose/thie_heese are synonyms for
-- quaiyl_syrjey/quaiyl_s'inshley.
----------------------------------------------------------------
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink
-- (e.g. Scotland's P194); chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
----------------------------------------------------------------
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's numbered
-- slots (1-9). kionedeeaght is a synonym for kiondeeaght.
----------------------------------------------------------------
local foundingLabel = getManual(args, {"sorçh_kionedeeaght", "sorçh_kiondeeaght"}) or "Bunneeaght"
local foundingValue = getManual(args, {"bunnit"})
local foundingNote = getManual(args, {"note_kionedeeaght", "note_kiondeeaght"})
local foundingRef = getManual(args, {"imraa_kionedeeaght", "imraa_kiondeeaght"})
local establishmentRows = {}
for i = 1, 9 do
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old, still works).
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), wikilinkLabel(foundingLabel), applyRefNote(foundingValue, foundingRef, foundingNote, frame)))
elseif #establishmentRows > 0 then
local headerLabel = applyRefNote(wikilinkLabel(foundingLabel), foundingRef, foundingNote, frame)
table.insert(foundingRows, string.format(HEADER, headerLabel))
end
appendIndentRun(foundingRows, establishmentRows)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when the whole
-- establishment block was left unset (not |bunnit=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, "", wikilinkLabel(foundingLabel), applyRefNote(inception, foundingRef, foundingNote, frame)))
end
end
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
jw9eb54ei4urck8xvhz51pvsbjwh9qs
393392
393391
2026-09-19T14:55:38Z
MacTire02
219
++
393392
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module. Used instead of Module:WikidataIB, which
-- has no working citation-building of its own.
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated name forms (e.g. "Mannin" -> "Vannin", "Nalbin"
-- -> "ny h-Albey"). See getCurrentCountryGenitive/shortManxForm below.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Shared "Manx label, else linked Wikidata fallback" helper -- see its own
-- header comment. Used as the last rung in getWdItemManxLink below.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref> and/or {{efn}} note (the imraa_*/noteyn_* params)
-- to a value, on top of any Wikidata-sourced citation it already has.
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.
-- includeReference controls whether Wd's "reference" flag is passed.
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
-- Fetches a Wikidata property value with its auto-built citation already
-- appended. `flags` is an optional array of extra Wd flags (e.g.
-- {"linked"}). Safe only when the result isn't going to be re-wrapped in a
-- fresh "[[...]]" by the caller -- use getWdPropertyWithCitation for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a property's value and its already-rendered citation (e.g. "[1]")
-- as two separate strings, by fetching with and without Wd's "reference"
-- flag and diffing them -- so a caller can wrap the bare value in "[[...]]"
-- (ensureLinked) without the citation's own "[" breaking the link. Returns
-- `value, citation`; citation is nil when there is none.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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("%[%[") then
return value -- already a real link via a gv sitelink
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY itself (e.g. P35 -> "head of state"),
-- used as a title fallback. getLabelByLang (not plain label()) avoids
-- leaking an English fallback when no Manx label exists.
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 (no link/label formatting) of an entity-valued property on the
-- current page's own item -- e.g. P35's value, for chaining into a lookup
-- on that person's own item (see getWdPositionTitle below).
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
-- Raw QIDs of EVERY value of an entity-valued property on the current
-- page's own item (plural version of getWdRawPropertyId above) -- e.g.
-- every P122 ("basic form of government") statement.
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 QID of a QUALIFIER on the current page's own "best" statement of
-- `property` -- e.g. the P1393 ("proxy") qualifier on a P35 statement. Call
-- shape is {"raw", "best", mainProperty, qualifierProperty}; no `eid`, so it
-- defaults to the current page's own entity.
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
-- Raw QIDs of every value of an entity-valued property on a FOREIGN
-- Wikidata item (`eid`) -- e.g. a leader's own P39 ("position held")
-- statements. Uses Wd's plural "properties" command so every matching
-- claim is returned, not just one. `qualifiers` is an optional
-- {qualifierProperty = requiredValue} table to filter by (e.g. P1001
-- "applies to jurisdiction" -- see getWdPositionTitle below).
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
-- Manx genitive form of the current page's own country/territory (e.g.
-- "Vannin" for the Isle of Man, "y Reeriaght Unnaneysit" for the UK), from
-- Module:Enmyn çheerey's table, keyed on the page's own title.
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
-- Section label linked to the country-specific article/redirect when one
-- exists (e.g. "[[Reiltys y Reeriaght Unnaneysit|Reiltys]]" for the UK,
-- "[[Reiltys Vannin|Reiltys]]" for the Isle of Man), else a plain
-- "[[Reiltys]]" when the current page's genitive can't be resolved.
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened even though they'd otherwise match a rung
-- below (e.g. "Çhiarn Vannin" should stay whole, not lose " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips the country name from an office title for display, e.g. "Monark y
-- Reeriaght Unnaneysit" -> "Monark". Tries, in order: Module:Enmyn
-- çheerey's exact genitive suffix, an explicit " y " split, then a blind
-- last-space split. A title with no space at all is returned unchanged.
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #title > #suffix and title:sub(-#suffix) == suffix then
return title:sub(1, #title - #suffix)
end
end
local short = title:match("^(.-)%sy%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
-- Same idea as shortManxForm, for a shared monarch's own per-realm article
-- name (e.g. "Çhalse III y Reeriaght Unnaneysit"). Skips the blind
-- last-space rung, which would wrongly truncate "Charse III" -> "Charse".
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #name > #suffix and name:sub(-#suffix) == suffix then
return name:sub(1, #name - #suffix)
end
end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
return name
end
-- Shortens the DISPLAY text of a head-of-state link when it's a per-realm-
-- disambiguated article, leaving the link target and any citation
-- untouched. Head-of-state only -- a head of government is never shared
-- across countries, so this shape of data doesn't arise there.
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 the first letter via the content language's own ucfirst
-- (UTF-8/digraph-safe, e.g. "çh") -- not a plain Lua upper() on byte 1.
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 ennym-wd external-link marker -- for a comma-joined
-- multi-value line, only the first item. 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 -- 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
-- Builds a wikilink for a Wikidata item: gv sitelink, else gv label (as a
-- redlink), else an ennym-wd external link to Wikidata. Display text always
-- prefers the gv label, even when a sitelink has a different title.
-- shorten (default true): strip a "role + country" suffix (shortManxForm) --
-- pass false for an ordinary proper name (a chamber, a calendar concept).
-- capitalize (default true): pass false when building one item of a
-- multi-value list, where only the caller's finished line gets capitalized.
-- Returns nil only when nothing resolves at all.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 "office
-- held by head of state" / P1313 "office held by head of government"),
-- when Wikidata records it -- avoids the multi-role ambiguity in
-- getWdPositionTitle below. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Fallback for a country with no P1906/P1313 set: the officeholder's own
-- "position held" (P39). A person can hold several concurrent P39s (several
-- realms, or an MP/party-leader/PM combo) with no reliable qualifier saying
-- which is "the" state office, so this tries every current candidate
-- (P1001-jurisdiction-filtered first) and uses the first with a real gv
-- article -- in practice the actual office is the one likely to have one.
local function getWdPositionTitle(headProperty)
local personQid = getWdRawPropertyId(headProperty)
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
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
-- How many "subclass of" (P279) hops to walk up from a chamber's own P31
-- class before giving up. Confirmed directly on Wikidata (screenshotted,
-- not guessed): the UK's House of Lords/House of Commons are NOT
-- instance-of the generic upper/lower-house classes directly -- they're
-- instance-of their OWN classes ("house of lords" / "house of commons"),
-- which presumably subclass the generic ones a hop or two further up.
-- Capped rather than unbounded, so a class hierarchy this can't resolve
-- costs a small, predictable number of extra lookups instead of an
-- open-ended graph walk.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid`, or reaches it by walking up "subclass
-- of" (P279). The direct P31 == target check (the common, cheap case) is
-- still tried first in getWdChambers below; this only runs when that
-- misses. `seen` guards against a cyclical class graph re-visiting the
-- same item and looping.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part -- checked first against the generic
-- upper/lower-house classes directly, then (only if that misses) by
-- walking up each class's own "subclass of" (P279) chain, since a chamber
-- is often classified via its own country-specific class (e.g. the UK's
-- "house of lords"/"house of commons" classes) rather than the generic
-- class directly. Unicameral (no P527) or ambiguous data yields nothing
-- for that side; no auto-built citation is attached.
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
-- Wikidata's "proleptic Julian calendar" item -- not plain "Julian
-- calendar" (Q11184); a time value's calendar model always points to the
-- proleptic variant.
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" for a Julian-calendar date, with a blind,
-- unverified link. Rebuilds it as a real three-tier link, keeping "Joolagh"
-- as the display text; falls back to plain unlinked text if nothing resolves.
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
-- Row templates: plain 2-cell rows, matching every other submodule
-- (çhengaghyn, balley, bratteeyn). The old template's 3-column grid caused
-- a layout bug when mixed with 2-column rows. Sub-items get a "•" bullet +
-- lighter weight instead of a spacer column.
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 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
-- Wraps a section label in [[...]], unless it's already a full wikilink
-- (a manual |sorçh_kionedeeaght=[[target|display]] override) -- otherwise
-- that would double-bracket into a broken [[[[target|display]]]].
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider Module:Kishtey fys çheer uses between submodules, reused
-- here between this module's own sections -- only inserted between two
-- sections 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
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 = {}
----------------------------------------------------------------
-- 1-2. REILTYS (government type) + leaders (head of state/government,
-- etc.). enmysN_fer-toshee/ennymN_fer-toshee are the old gendered
-- param names; enmys_toshiaghN/ennym_toshiaghN are the gender-neutral
-- synonyms and take priority when both are given.
----------------------------------------------------------------
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
-- Wikidata fallback: basic form of government (P122), joining every
-- value. Routed through getWdItemManxLink (not Wd's own "linked"
-- flag) since a P122 value rarely has a gv sitelink and would
-- otherwise leak unlinked English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
-- Some countries (US, France, Russia, ...) record the same person as
-- both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local hogQid = getWdRawPropertyId("P6")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
----------------------------------------------------------------
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for
-- quaiyl; thie_heose/thie_heese are synonyms for
-- quaiyl_syrjey/quaiyl_s'inshley.
----------------------------------------------------------------
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink
-- (e.g. Scotland's P194); chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
----------------------------------------------------------------
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's numbered
-- slots (1-9). kionedeeaght is a synonym for kiondeeaght.
--
-- FIXED: note_kionedeeaght/note_kiondeeaght and noteyn_kionedeeaght/
-- noteyn_kiondeeaght are two DIFFERENT things, not two spellings of
-- one field:
-- * note_kionedeeaght/note_kiondeeaght is a QUALIFIER, shown as
-- plain text directly after the label itself (sorçh_kionedeeaght)
-- -- exactly what the old HTML template did, putting it in its
-- own <td> immediately beside the label's <th>, not attached to
-- the founding VALUE at all and never routed through {{efn}}.
-- * noteyn_kionedeeaght/noteyn_kiondeeaght (new -- wasn't read
-- anywhere before this fix) is a real footnote, expanded through
-- {{efn}} so it lands in the article's own ==Noteyn==/{{notelist}}
-- section, same as every other noteyn_* param in this project.
-- Previously `note_kionedeeaght` was wired into applyRefNote's `note`
-- slot -- i.e. treated as an {{efn}} footnote -- that was my oversight
-- and I have now corrected it. noteyn_kionedeeaght now occupies that
-- slot instead.
----------------------------------------------------------------
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"})
-- Links the label, then appends the qualifier (if any) directly after
-- it -- plain adjacent text, no invented parentheses, matching the old
-- template's own unadorned "label, then qualifier text" placement.
local function foundingLabelWithQualifier(label)
local linked = wikilinkLabel(label)
if foundingQualifier and foundingQualifier ~= "" then
return linked .. " " .. foundingQualifier
end
return linked
end
local establishmentRows = {}
for i = 1, 9 do
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old, still works).
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)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when the whole
-- establishment block was left unset (not |bunnit=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
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
fuo587azkea9gzf6d8felxk5u4by2ly
393393
393392
2026-09-19T15:01:38Z
MacTire02
219
++
393393
Scribunto
text/plain
local p = {}
-- Wikidata fetch/citation module. Used instead of Module:WikidataIB, which
-- has no working citation-building of its own.
local wdOK, Wd = pcall(require, "Module:Wd")
-- Country genitive/mutated name forms (e.g. "Mannin" -> "Vannin", "Nalbin"
-- -> "ny h-Albey"). See getCurrentCountryGenitive/shortManxForm below.
local enmynOK, EnmynCheerey = pcall(require, "Module:Enmyn çheerey")
-- Shared "Manx label, else linked Wikidata fallback" helper -- see its own
-- header comment. Used as the last rung in getWdItemManxLink below.
local ennymWdOK, EnnymWd = pcall(require, "Module:Kishtey fys çheer/ennym-wd")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref> and/or {{efn}} note (the imraa_*/noteyn_* params)
-- to a value, on top of any Wikidata-sourced citation it already has.
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.
-- includeReference controls whether Wd's "reference" flag is passed.
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
-- Fetches a Wikidata property value with its auto-built citation already
-- appended. `flags` is an optional array of extra Wd flags (e.g.
-- {"linked"}). Safe only when the result isn't going to be re-wrapped in a
-- fresh "[[...]]" by the caller -- use getWdPropertyWithCitation for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a property's value and its already-rendered citation (e.g. "[1]")
-- as two separate strings, by fetching with and without Wd's "reference"
-- flag and diffing them -- so a caller can wrap the bare value in "[[...]]"
-- (ensureLinked) without the citation's own "[" breaking the link. Returns
-- `value, citation`; citation is nil when there is none.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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("%[%[") then
return value -- already a real link via a gv sitelink
end
label = mw.text.trim(label)
if label == "" then return value end
return "[[" .. label .. "]]" .. refSuffix
end
-- Manx label of a Wikidata PROPERTY itself (e.g. P35 -> "head of state"),
-- used as a title fallback. getLabelByLang (not plain label()) avoids
-- leaking an English fallback when no Manx label exists.
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 (no link/label formatting) of an entity-valued property on the
-- current page's own item -- e.g. P35's value, for chaining into a lookup
-- on that person's own item (see getWdPositionTitle below).
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
-- Raw QIDs of EVERY value of an entity-valued property on the current
-- page's own item (plural version of getWdRawPropertyId above) -- e.g.
-- every P122 ("basic form of government") statement.
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 QID of a QUALIFIER on the current page's own "best" statement of
-- `property` -- e.g. the P1393 ("proxy") qualifier on a P35 statement. Call
-- shape is {"raw", "best", mainProperty, qualifierProperty}; no `eid`, so it
-- defaults to the current page's own entity.
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
-- Raw QIDs of every value of an entity-valued property on a FOREIGN
-- Wikidata item (`eid`) -- e.g. a leader's own P39 ("position held")
-- statements. Uses Wd's plural "properties" command so every matching
-- claim is returned, not just one. `qualifiers` is an optional
-- {qualifierProperty = requiredValue} table to filter by (e.g. P1001
-- "applies to jurisdiction" -- see getWdPositionTitle below).
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
-- Manx genitive form of the current page's own country/territory (e.g.
-- "Vannin" for the Isle of Man, "y Reeriaght Unnaneysit" for the UK), from
-- Module:Enmyn çheerey's table, keyed on the page's own title.
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
-- Section label linked to the country-specific article/redirect when one
-- exists (e.g. "[[Reiltys y Reeriaght Unnaneysit|Reiltys]]" for the UK,
-- "[[Reiltys Vannin|Reiltys]]" for the Isle of Man), else a plain
-- "[[Reiltys]]" when the current page's genitive can't be resolved.
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened even though they'd otherwise match a rung
-- below (e.g. "Çhiarn Vannin" should stay whole, not lose " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips the country name from an office title for display, e.g. "Monark y
-- Reeriaght Unnaneysit" -> "Monark". Tries, in order: Module:Enmyn
-- çheerey's exact genitive suffix, an explicit " y " split, then a blind
-- last-space split. A title with no space at all is returned unchanged.
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #title > #suffix and title:sub(-#suffix) == suffix then
return title:sub(1, #title - #suffix)
end
end
local short = title:match("^(.-)%sy%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
-- Same idea as shortManxForm, for a shared monarch's own per-realm article
-- name (e.g. "Çhalse III y Reeriaght Unnaneysit"). Skips the blind
-- last-space rung, which would wrongly truncate "Charse III" -> "Charse".
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #name > #suffix and name:sub(-#suffix) == suffix then
return name:sub(1, #name - #suffix)
end
end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
return name
end
-- Shortens the DISPLAY text of a head-of-state link when it's a per-realm-
-- disambiguated article, leaving the link target and any citation
-- untouched. Head-of-state only -- a head of government is never shared
-- across countries, so this shape of data doesn't arise there.
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 the first letter via the content language's own ucfirst
-- (UTF-8/digraph-safe, e.g. "çh") -- not a plain Lua upper() on byte 1.
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 ennym-wd external-link marker -- for a comma-joined
-- multi-value line, only the first item. 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 -- 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
-- Builds a wikilink for a Wikidata item: gv sitelink, else gv label (as a
-- redlink), else an ennym-wd external link to Wikidata. Display text always
-- prefers the gv label, even when a sitelink has a different title.
-- shorten (default true): strip a "role + country" suffix (shortManxForm) --
-- pass false for an ordinary proper name (a chamber, a calendar concept).
-- capitalize (default true): pass false when building one item of a
-- multi-value list, where only the caller's finished line gets capitalized.
-- Returns nil only when nothing resolves at all.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 "office
-- held by head of state" / P1313 "office held by head of government"),
-- when Wikidata records it -- avoids the multi-role ambiguity in
-- getWdPositionTitle below. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Fallback for a country with no P1906/P1313 set: the officeholder's own
-- "position held" (P39). A person can hold several concurrent P39s (several
-- realms, or an MP/party-leader/PM combo) with no reliable qualifier saying
-- which is "the" state office, so this tries every current candidate
-- (P1001-jurisdiction-filtered first) and uses the first with a real gv
-- article -- in practice the actual office is the one likely to have one.
local function getWdPositionTitle(headProperty)
local personQid = getWdRawPropertyId(headProperty)
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
-- Wikidata's "upper house" / "lower house" class items.
local UPPER_HOUSE_QID = "Q637846"
local LOWER_HOUSE_QID = "Q375928"
-- How many "subclass of" (P279) hops to walk up from a chamber's own P31
-- class before giving up. Confirmed directly on Wikidata (screenshotted,
-- not guessed): the UK's House of Lords/House of Commons are NOT
-- instance-of the generic upper/lower-house classes directly -- they're
-- instance-of their OWN classes ("house of lords" / "house of commons"),
-- which presumably subclass the generic ones a hop or two further up.
-- Capped rather than unbounded, so a class hierarchy this can't resolve
-- costs a small, predictable number of extra lookups instead of an
-- open-ended graph walk.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid`, or reaches it by walking up "subclass
-- of" (P279). The direct P31 == target check (the common, cheap case) is
-- still tried first in getWdChambers below; this only runs when that
-- misses. `seen` guards against a cyclical class graph re-visiting the
-- same item and looping.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part -- checked first against the generic
-- upper/lower-house classes directly, then (only if that misses) by
-- walking up each class's own "subclass of" (P279) chain, since a chamber
-- is often classified via its own country-specific class (e.g. the UK's
-- "house of lords"/"house of commons" classes) rather than the generic
-- class directly. Unicameral (no P527) or ambiguous data yields nothing
-- for that side; no auto-built citation is attached.
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
-- Wikidata's "proleptic Julian calendar" item -- not plain "Julian
-- calendar" (Q11184); a time value's calendar model always points to the
-- proleptic variant.
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" for a Julian-calendar date, with a blind,
-- unverified link. Rebuilds it as a real three-tier link, keeping "Joolagh"
-- as the display text; falls back to plain unlinked text if nothing resolves.
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
-- Row templates: plain 2-cell rows, matching every other submodule
-- (çhengaghyn, balley, bratteeyn). The old template's 3-column grid caused
-- a layout bug when mixed with 2-column rows. Sub-items get a "•" bullet +
-- lighter weight instead of a spacer column.
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 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
-- Wraps a section label in [[...]], unless it's already a full wikilink
-- (a manual |sorçh_kionedeeaght=[[target|display]] override) -- otherwise
-- that would double-bracket into a broken [[[[target|display]]]].
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider Module:Kishtey fys çheer uses between submodules, reused
-- here between this module's own sections -- only inserted between two
-- sections 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
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 = {}
----------------------------------------------------------------
-- 1-2. REILTYS (government type) + leaders (head of state/government,
-- etc.). enmysN_fer-toshee/ennymN_fer-toshee are the old gendered
-- param names; enmys_toshiaghN/ennym_toshiaghN are the gender-neutral
-- synonyms and take priority when both are given.
----------------------------------------------------------------
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
-- Wikidata fallback: basic form of government (P122), joining every
-- value. Routed through getWdItemManxLink (not Wd's own "linked"
-- flag) since a P122 value rarely has a gv sitelink and would
-- otherwise leak unlinked English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
-- Some countries (US, France, Russia, ...) record the same person as
-- both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local hogQid = getWdRawPropertyId("P6")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
----------------------------------------------------------------
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for
-- quaiyl; thie_heose/thie_heese are synonyms for
-- quaiyl_syrjey/quaiyl_s'inshley.
----------------------------------------------------------------
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink
-- (e.g. Scotland's P194); chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
----------------------------------------------------------------
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's numbered
-- slots (1-9). kionedeeaght is a synonym for kiondeeaght.
--
-- FIXED: note_kionedeeaght/note_kiondeeaght and noteyn_kionedeeaght/
-- noteyn_kiondeeaght are two DIFFERENT things, not two spellings of
-- one field:
-- * note_kionedeeaght/note_kiondeeaght is a QUALIFIER, shown as
-- plain text directly after the label itself (sorçh_kionedeeaght)
-- -- exactly what the old HTML template did, putting it in its
-- own <td> immediately beside the label's <th>, not attached to
-- the founding VALUE at all and never routed through {{efn}}.
-- * noteyn_kionedeeaght/noteyn_kiondeeaght (new -- wasn't read
-- anywhere before this fix) is a real footnote, expanded through
-- {{efn}} so it lands in the article's own ==Noteyn==/{{notelist}}
-- section, same as every other noteyn_* param in this project.
-- Previously `note_kionedeeaght` was wired into applyRefNote's `note`
-- slot -- i.e. treated as an {{efn}} footnote -- that was my oversight
-- and I have now corrected it. noteyn_kionedeeaght now occupies that
-- slot instead.
----------------------------------------------------------------
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"})
-- Links the label, then appends the qualifier (if any) directly after
-- it -- plain adjacent text, no invented parentheses, matching the old
-- template's own unadorned "label, then qualifier text" placement. The
-- label cell (ROW/HEADER's <th>) is bold throughout, so the qualifier
-- is wrapped in an explicit font-weight:normal span to keep the label
-- itself (sorçh_kionedeeaght) bold while the qualifier text is not.
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
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old, still works).
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)
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback: inception (P571), only when the whole
-- establishment block was left unset (not |bunnit=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
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
atvxdhmtdgx8d2e7s0nmlzaoln8xh2x
393402
393393
2026-09-19T17:33:54Z
MacTire02
219
++
393402
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")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref>/{{efn}} note (imraa_*/noteyn_*) on top of any
-- Wikidata-sourced citation already present.
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
-- Fetches a property value with its citation appended. Only safe when the
-- caller won't re-wrap the result in "[[...]]" -- use getWdPropertyWithCitation
-- for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a value and its rendered citation (e.g. "[1]") as separate strings
-- (by diffing with/without Wd's "reference" flag), so a caller can wrap the
-- bare value in "[[...]]" without the citation's own "[" breaking the link.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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("%[%[") then
return value -- already a real link via a gv sitelink
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)
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
-- Plural version of getWdRawPropertyId: every QID of a property on the
-- current page's own item, not just the single best match. extraFlags e.g.
-- {"best", "current"}. Used for multi-value cases like Andorra's two
-- concurrent co-phrinsyn under P35.
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
-- Raw QID of a QUALIFIER on the current page's own "best" statement of
-- `property`, e.g. P1393 ("proxy") on a P35 statement.
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
-- Raw QIDs of every value of a property on a FOREIGN item (`eid`), e.g. a
-- leader's own P39 statements. `qualifiers` optionally filters by
-- {qualifierProperty = requiredValue} (e.g. P1001 "applies to jurisdiction").
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
-- Manx genitive of the current page's own country (e.g. "Vannin" for the
-- Isle of Man), from Module:Enmyn çheerey's table.
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
-- Section label linked to the country-specific article when its genitive
-- resolves (e.g. "[[Reiltys Vannin|Reiltys]]"), else plain "[[Reiltys]]".
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened (e.g. "Çhiarn Vannin" keeps " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips the country name from an office title, e.g. "Monark y Reeriaght
-- Unnaneysit" -> "Monark" (genitive suffix, then " y ", then last-space).
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #title > #suffix and title:sub(-#suffix) == suffix then
return title:sub(1, #title - #suffix)
end
end
local short = title:match("^(.-)%sy%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
-- Same as shortManxForm for a shared monarch's per-realm article name;
-- skips the last-space rung (would wrongly truncate "Charse III").
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #name > #suffix and name:sub(-#suffix) == suffix then
return name:sub(1, #name - #suffix)
end
end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
return name
end
-- Shortens a per-realm-disambiguated head-of-state link's DISPLAY text only.
-- Head-of-state only; a head of government is never realm-shared.
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
-- Capitalizes the first visible letter, even through a leading wikilink or
-- ennym-wd external-link marker. 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 -- 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
-- Wikilink for a Wikidata item: gv sitelink, else gv label (redlink), else
-- an ennym-wd external link to Wikidata. Display text prefers the gv label.
-- shorten (default true): strip a "role + country" suffix -- pass false for
-- an ordinary name. capitalize (default true): pass false for one item of a
-- multi-value list. nil only when nothing resolves.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 head of
-- state / P1313 head of government), avoiding getWdPositionTitle's
-- multi-role ambiguity. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdPositionTitle but for an EXPLICIT person QID, needed when a
-- property has more than one CONCURRENT holder (e.g. Andorra's two
-- co-phrinsyn under P35), each needing its own office-title resolution.
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
-- Fallback for a country with no P1906/P1313 set: resolves the single
-- best office-holder (P35/P6), then hands off to getWdPositionTitleForPerson,
-- which tries each of that person's current P39 candidates (jurisdiction-
-- filtered first) and uses the first with a real gv article.
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"
-- Max "subclass of" (P279) hops to walk up from a chamber's own P31 class.
-- Needed because e.g. the UK's House of Lords/Commons are instance-of
-- their OWN classes, which subclass the generic upper/lower-house classes
-- a hop or two up (confirmed on Wikidata, not guessed). Capped, not
-- unbounded.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid` or reaches it via "subclass of" (P279).
-- Only runs when the cheap direct P31 == target check misses. `seen` guards
-- against a cyclical class graph.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part, direct match first then a subclass
-- walk. Unicameral (no P527) or ambiguous data yields nothing for that side.
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
-- Wikidata's "proleptic Julian calendar" item (not Q11184 "Julian calendar").
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" with a blind, unverified link; rebuilds it as a
-- real three-tier link, keeping "Joolagh" as the display text.
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
-- Row templates: plain 2-cell rows (matches çhengaghyn/balley/bratteeyn).
-- Sub-items get a "•" bullet instead of a spacer column.
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 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
-- Wraps a label in [[...]] unless it's already a full wikilink (avoids
-- double-bracketing a manual override).
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider used between submodules, reused between this module's own
-- sections; only inserted between two sections 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
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 = {}
-- 1-2. REILTYS (government type) + leaders. enmysN_fer-toshee/
-- ennymN_fer-toshee are the old gendered names; enmys_toshiaghN/
-- ennym_toshiaghN are the gender-neutral synonyms, preferred.
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
-- Wikidata fallback: basic form of government (P122), joined.
-- Routed through getWdItemManxLink, not Wd's own "linked" flag,
-- since P122 rarely has a gv sitelink and would leak English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
-- Some countries (a co-phrinsaght like Andorra) have more than one
-- CONCURRENT head of state; hosQids fetches every current, top-rank
-- P35 QID so each co-phrinse gets its own row. Used only to decide
-- whether the multi-value branch runs -- if empty, the single-value
-- branch below is unaffected and unchanged. No P1393 proxy row for
-- the multi-value case (by request -- not everything from enwiki).
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6")
if #hosQids > 1 then
-- Co-phrinsaght case: one row per concurrent head of state,
-- each with its own office title (P1906 tried first for all,
-- then per-person P39 resolved separately per QID).
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false)))
if name then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
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
-- Single-value case (the ~200 existing articles): unchanged.
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
-- Some countries (US, France, Russia, ...) record the same person
-- as both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for quaiyl;
-- thie_heose/thie_heese are synonyms for quaiyl_syrjey/quaiyl_s'inshley.
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink;
-- chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's 1-9 slots.
-- note_kionedeeaght is a QUALIFIER shown as plain text after the label
-- (matches the old template); noteyn_kionedeeaght is the real {{efn}}
-- footnote. They are separate params, not two spellings of one field.
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"})
-- Links the label, then appends the qualifier (if any) as plain text --
-- matches the old template's placement. Wrapped in font-weight:normal
-- so the (bold) label itself is unaffected.
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
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old).
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)
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
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
pncjgg8o3izpy3b0j19r2ht3ertuvac
393404
393402
2026-09-19T17:39:22Z
MacTire02
219
++
393404
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")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref>/{{efn}} note (imraa_*/noteyn_*) on top of any
-- Wikidata-sourced citation already present.
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
-- Fetches a property value with its citation appended. Only safe when the
-- caller won't re-wrap the result in "[[...]]" -- use getWdPropertyWithCitation
-- for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a value and its rendered citation (e.g. "[1]") as separate strings
-- (by diffing with/without Wd's "reference" flag), so a caller can wrap the
-- bare value in "[[...]]" without the citation's own "[" breaking the link.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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
-- already a real link -- a gv-sitelink wikilink, or an ennym-wd
-- tier-3 "[url label] <sup>(lang)</sup>" external-link fallback
-- (double-wrapping that in another "[[...]]" breaks it).
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)
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
-- Plural version of getWdRawPropertyId: every QID of a property on the
-- current page's own item, not just the single best match. extraFlags e.g.
-- {"best", "current"}. Used for multi-value cases like Andorra's two
-- concurrent co-phrinsyn under P35.
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
-- Raw QID of a QUALIFIER on the current page's own "best" statement of
-- `property`, e.g. P1393 ("proxy") on a P35 statement.
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
-- Raw QIDs of every value of a property on a FOREIGN item (`eid`), e.g. a
-- leader's own P39 statements. `qualifiers` optionally filters by
-- {qualifierProperty = requiredValue} (e.g. P1001 "applies to jurisdiction").
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
-- Manx genitive of the current page's own country (e.g. "Vannin" for the
-- Isle of Man), from Module:Enmyn çheerey's table.
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
-- Section label linked to the country-specific article when its genitive
-- resolves (e.g. "[[Reiltys Vannin|Reiltys]]"), else plain "[[Reiltys]]".
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened (e.g. "Çhiarn Vannin" keeps " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips the country name from an office title, e.g. "Monark y Reeriaght
-- Unnaneysit" -> "Monark" (genitive suffix, then " y ", then last-space).
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #title > #suffix and title:sub(-#suffix) == suffix then
return title:sub(1, #title - #suffix)
end
end
local short = title:match("^(.-)%sy%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
-- Same as shortManxForm for a shared monarch's per-realm article name;
-- skips the last-space rung (would wrongly truncate "Charse III").
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #name > #suffix and name:sub(-#suffix) == suffix then
return name:sub(1, #name - #suffix)
end
end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
return name
end
-- Shortens a per-realm-disambiguated head-of-state link's DISPLAY text only.
-- Head-of-state only; a head of government is never realm-shared.
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
-- Capitalizes the first visible letter, even through a leading wikilink or
-- ennym-wd external-link marker. 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 -- 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
-- Wikilink for a Wikidata item: gv sitelink, else gv label (redlink), else
-- an ennym-wd external link to Wikidata. Display text prefers the gv label.
-- shorten (default true): strip a "role + country" suffix -- pass false for
-- an ordinary name. capitalize (default true): pass false for one item of a
-- multi-value list. nil only when nothing resolves.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 head of
-- state / P1313 head of government), avoiding getWdPositionTitle's
-- multi-role ambiguity. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdPositionTitle but for an EXPLICIT person QID, needed when a
-- property has more than one CONCURRENT holder (e.g. Andorra's two
-- co-phrinsyn under P35), each needing its own office-title resolution.
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
-- Fallback for a country with no P1906/P1313 set: resolves the single
-- best office-holder (P35/P6), then hands off to getWdPositionTitleForPerson,
-- which tries each of that person's current P39 candidates (jurisdiction-
-- filtered first) and uses the first with a real gv article.
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"
-- Max "subclass of" (P279) hops to walk up from a chamber's own P31 class.
-- Needed because e.g. the UK's House of Lords/Commons are instance-of
-- their OWN classes, which subclass the generic upper/lower-house classes
-- a hop or two up (confirmed on Wikidata, not guessed). Capped, not
-- unbounded.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid` or reaches it via "subclass of" (P279).
-- Only runs when the cheap direct P31 == target check misses. `seen` guards
-- against a cyclical class graph.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part, direct match first then a subclass
-- walk. Unicameral (no P527) or ambiguous data yields nothing for that side.
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
-- Wikidata's "proleptic Julian calendar" item (not Q11184 "Julian calendar").
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" with a blind, unverified link; rebuilds it as a
-- real three-tier link, keeping "Joolagh" as the display text.
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
-- Row templates: plain 2-cell rows (matches çhengaghyn/balley/bratteeyn).
-- Sub-items get a "•" bullet instead of a spacer column.
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 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
-- Wraps a label in [[...]] unless it's already a full wikilink (avoids
-- double-bracketing a manual override).
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider used between submodules, reused between this module's own
-- sections; only inserted between two sections 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
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 = {}
-- 1-2. REILTYS (government type) + leaders. enmysN_fer-toshee/
-- ennymN_fer-toshee are the old gendered names; enmys_toshiaghN/
-- ennym_toshiaghN are the gender-neutral synonyms, preferred.
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
-- Wikidata fallback: basic form of government (P122), joined.
-- Routed through getWdItemManxLink, not Wd's own "linked" flag,
-- since P122 rarely has a gv sitelink and would leak English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
-- Some countries (a co-phrinsaght like Andorra) have more than one
-- CONCURRENT head of state; hosQids fetches every current, top-rank
-- P35 QID so each co-phrinse gets its own row. Used only to decide
-- whether the multi-value branch runs -- if empty, the single-value
-- branch below is unaffected and unchanged. No P1393 proxy row for
-- the multi-value case (by request -- not everything from enwiki).
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6")
if #hosQids > 1 then
-- Co-phrinsaght case: one row per concurrent head of state, each
-- with its OWN office title, resolved per-person via P39
-- (getWdPositionTitleForPerson). Deliberately does NOT try the
-- shared P1906 (office held by head of state) here -- P1906 is a
-- single country-level statement and can't tell the co-phrinsyn
-- apart; using it for every row was the bug that made both of
-- Andorra's co-princes show the same "Co-phrinse Frangagh" title.
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false)))
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
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
-- Single-value case (the ~200 existing articles): unchanged.
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
-- Some countries (US, France, Russia, ...) record the same person
-- as both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for quaiyl;
-- thie_heose/thie_heese are synonyms for quaiyl_syrjey/quaiyl_s'inshley.
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink;
-- chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's 1-9 slots.
-- note_kionedeeaght is a QUALIFIER shown as plain text after the label
-- (matches the old template); noteyn_kionedeeaght is the real {{efn}}
-- footnote. They are separate params, not two spellings of one field.
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"})
-- Links the label, then appends the qualifier (if any) as plain text --
-- matches the old template's placement. Wrapped in font-weight:normal
-- so the (bold) label itself is unaffected.
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
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old).
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)
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
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
lmyuyjv93a9rvtoanuwm6mwtqbje0ei
393405
393404
2026-09-19T17:54:47Z
MacTire02
219
++
393405
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")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref>/{{efn}} note (imraa_*/noteyn_*) on top of any
-- Wikidata-sourced citation already present.
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
-- Fetches a property value with its citation appended. Only safe when the
-- caller won't re-wrap the result in "[[...]]" -- use getWdPropertyWithCitation
-- for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a value and its rendered citation (e.g. "[1]") as separate strings
-- (by diffing with/without Wd's "reference" flag), so a caller can wrap the
-- bare value in "[[...]]" without the citation's own "[" breaking the link.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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
-- already a real link -- a gv-sitelink wikilink, or an ennym-wd
-- tier-3 "[url label] <sup>(lang)</sup>" external-link fallback
-- (double-wrapping that in another "[[...]]" breaks it).
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)
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
-- Plural version of getWdRawPropertyId: every QID of a property on the
-- current page's own item, not just the single best match. extraFlags e.g.
-- {"best", "current"}. Used for multi-value cases like Andorra's two
-- concurrent co-phrinsyn under P35.
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
-- Raw QID of a QUALIFIER on the current page's own "best" statement of
-- `property`, e.g. P1393 ("proxy") on a P35 statement.
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
-- Same as getWdQualifierRawId, but for a SPECIFIC statement of `property`,
-- picked out by its own VALUE (`valueQid`) rather than just "best" -- needed
-- when a property has more than one current statement (e.g. Andorra's two
-- concurrent P35 co-princes) and each one's own qualifier is different.
-- Confirmed against Module:Wd's own claimCommand/snakEqualsValue: the value
-- QID is a plain positional arg between the property and qualifier property.
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
-- Raw QIDs of every value of a property on a FOREIGN item (`eid`), e.g. a
-- leader's own P39 statements. `qualifiers` optionally filters by
-- {qualifierProperty = requiredValue} (e.g. P1001 "applies to jurisdiction").
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
-- Manx genitive of the current page's own country (e.g. "Vannin" for the
-- Isle of Man), from Module:Enmyn çheerey's table.
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
-- Section label linked to the country-specific article when its genitive
-- resolves (e.g. "[[Reiltys Vannin|Reiltys]]"), else plain "[[Reiltys]]".
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened (e.g. "Çhiarn Vannin" keeps " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips the country name from an office title, e.g. "Monark y Reeriaght
-- Unnaneysit" -> "Monark" (genitive suffix, then " y ", then last-space).
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #title > #suffix and title:sub(-#suffix) == suffix then
return title:sub(1, #title - #suffix)
end
end
local short = title:match("^(.-)%sy%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
-- Same as shortManxForm for a shared monarch's per-realm article name;
-- skips the last-space rung (would wrongly truncate "Charse III").
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #name > #suffix and name:sub(-#suffix) == suffix then
return name:sub(1, #name - #suffix)
end
end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
return name
end
-- Shortens a per-realm-disambiguated head-of-state link's DISPLAY text only.
-- Head-of-state only; a head of government is never realm-shared.
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
-- Capitalizes the first visible letter, even through a leading wikilink or
-- ennym-wd external-link marker. 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 -- 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
-- Wikilink for a Wikidata item: gv sitelink, else gv label (redlink), else
-- an ennym-wd external link to Wikidata. Display text prefers the gv label.
-- shorten (default true): strip a "role + country" suffix -- pass false for
-- an ordinary name. capitalize (default true): pass false for one item of a
-- multi-value list. nil only when nothing resolves.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 head of
-- state / P1313 head of government), avoiding getWdPositionTitle's
-- multi-role ambiguity. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdPositionTitle but for an EXPLICIT person QID, needed when a
-- property has more than one CONCURRENT holder (e.g. Andorra's two
-- co-phrinsyn under P35), each needing its own office-title resolution.
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
-- Fallback for a country with no P1906/P1313 set: resolves the single
-- best office-holder (P35/P6), then hands off to getWdPositionTitleForPerson,
-- which tries each of that person's current P39 candidates (jurisdiction-
-- filtered first) and uses the first with a real gv article.
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"
-- Max "subclass of" (P279) hops to walk up from a chamber's own P31 class.
-- Needed because e.g. the UK's House of Lords/Commons are instance-of
-- their OWN classes, which subclass the generic upper/lower-house classes
-- a hop or two up (confirmed on Wikidata, not guessed). Capped, not
-- unbounded.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid` or reaches it via "subclass of" (P279).
-- Only runs when the cheap direct P31 == target check misses. `seen` guards
-- against a cyclical class graph.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part, direct match first then a subclass
-- walk. Unicameral (no P527) or ambiguous data yields nothing for that side.
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
-- Wikidata's "proleptic Julian calendar" item (not Q11184 "Julian calendar").
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" with a blind, unverified link; rebuilds it as a
-- real three-tier link, keeping "Joolagh" as the display text.
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
-- Row templates: plain 2-cell rows (matches çhengaghyn/balley/bratteeyn).
-- Sub-items get a "•" bullet instead of a spacer column.
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 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
-- Wraps a label in [[...]] unless it's already a full wikilink (avoids
-- double-bracketing a manual override).
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider used between submodules, reused between this module's own
-- sections; only inserted between two sections 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
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 = {}
-- 1-2. REILTYS (government type) + leaders. enmysN_fer-toshee/
-- ennymN_fer-toshee are the old gendered names; enmys_toshiaghN/
-- ennym_toshiaghN are the gender-neutral synonyms, preferred.
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
-- Wikidata fallback: basic form of government (P122), joined.
-- Routed through getWdItemManxLink, not Wd's own "linked" flag,
-- since P122 rarely has a gv sitelink and would leak English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
-- Some countries (a co-phrinsaght like Andorra) have more than one
-- CONCURRENT head of state; hosQids fetches every current, top-rank
-- P35 QID so each co-phrinse gets its own row. Used only to decide
-- whether the multi-value branch runs -- if empty, the single-value
-- branch below is unaffected and unchanged. No P1393 proxy row for
-- the multi-value case (by request -- not everything from enwiki).
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6")
if #hosQids > 1 then
-- Co-phrinsaght case: one row per concurrent head of state, each
-- with its OWN office title, resolved per-person via P39
-- (getWdPositionTitleForPerson). Deliberately does NOT try the
-- shared P1906 (office held by head of state) here -- P1906 is a
-- single country-level statement and can't tell the co-phrinsyn
-- apart; using it for every row was the bug that made both of
-- Andorra's co-princes show the same "Co-phrinse Frangagh" title.
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false)))
if name then
-- P39 as a QUALIFIER on THIS co-prince's own P35 statement
-- (confirmed live for Andorra: Macron's P35 statement
-- carries a P39 qualifier = Q19808845 "French co-prince
-- of Andorra") is tried first -- it's specific to the
-- co-princely capacity itself. The person-chain fallback
-- below (their own item's P39 statements) isn't reliable
-- here: Macron's own item has no such statement, only his
-- real French office ("President of the French
-- Republic"), so that heuristic wrongly picked "Eaghtyrane"
-- before this qualifier lookup was added.
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink(getWdQualifierRawIdForValue("P35", qid, "P39"))
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
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
-- Single-value case (the ~200 existing articles): unchanged.
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
-- Some countries (US, France, Russia, ...) record the same person
-- as both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for quaiyl;
-- thie_heose/thie_heese are synonyms for quaiyl_syrjey/quaiyl_s'inshley.
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink;
-- chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's 1-9 slots.
-- note_kionedeeaght is a QUALIFIER shown as plain text after the label
-- (matches the old template); noteyn_kionedeeaght is the real {{efn}}
-- footnote. They are separate params, not two spellings of one field.
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"})
-- Links the label, then appends the qualifier (if any) as plain text --
-- matches the old template's placement. Wrapped in font-weight:normal
-- so the (bold) label itself is unaffected.
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
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old).
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)
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
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
kbodczdiv288h22wxq66f3g5j5lc0pk
393406
393405
2026-09-19T17:59:36Z
MacTire02
219
++
393406
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")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref>/{{efn}} note (imraa_*/noteyn_*) on top of any
-- Wikidata-sourced citation already present.
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
-- Fetches a property value with its citation appended. Only safe when the
-- caller won't re-wrap the result in "[[...]]" -- use getWdPropertyWithCitation
-- for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a value and its rendered citation (e.g. "[1]") as separate strings
-- (by diffing with/without Wd's "reference" flag), so a caller can wrap the
-- bare value in "[[...]]" without the citation's own "[" breaking the link.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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
-- already a real link -- a gv-sitelink wikilink, or an ennym-wd
-- tier-3 "[url label] <sup>(lang)</sup>" external-link fallback
-- (double-wrapping that in another "[[...]]" breaks it).
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)
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
-- Plural version of getWdRawPropertyId: every QID of a property on the
-- current page's own item, not just the single best match. extraFlags e.g.
-- {"best", "current"}. Used for multi-value cases like Andorra's two
-- concurrent co-phrinsyn under P35.
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
-- Raw QID of a QUALIFIER on the current page's own "best" statement of
-- `property`, e.g. P1393 ("proxy") on a P35 statement.
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
-- Same as getWdQualifierRawId, but for a SPECIFIC statement of `property`,
-- picked out by its own VALUE (`valueQid`) rather than just "best" -- needed
-- when a property has more than one current statement (e.g. Andorra's two
-- concurrent P35 co-princes) and each one's own qualifier is different.
-- Confirmed against Module:Wd's own claimCommand/snakEqualsValue: the value
-- QID is a plain positional arg between the property and qualifier property.
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
-- Raw QIDs of every value of a property on a FOREIGN item (`eid`), e.g. a
-- leader's own P39 statements. `qualifiers` optionally filters by
-- {qualifierProperty = requiredValue} (e.g. P1001 "applies to jurisdiction").
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
-- Manx genitive of the current page's own country (e.g. "Vannin" for the
-- Isle of Man), from Module:Enmyn çheerey's table.
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
-- Section label linked to the country-specific article when its genitive
-- resolves (e.g. "[[Reiltys Vannin|Reiltys]]"), else plain "[[Reiltys]]".
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened (e.g. "Çhiarn Vannin" keeps " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips the country name from an office title, e.g. "Monark y Reeriaght
-- Unnaneysit" -> "Monark" (genitive suffix, then " y ", then last-space).
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #title > #suffix and title:sub(-#suffix) == suffix then
return title:sub(1, #title - #suffix)
end
end
local short = title:match("^(.-)%sy%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
-- Same as shortManxForm for a shared monarch's per-realm article name;
-- skips the last-space rung (would wrongly truncate "Charse III").
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #name > #suffix and name:sub(-#suffix) == suffix then
return name:sub(1, #name - #suffix)
end
end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
return name
end
-- Shortens a per-realm-disambiguated head-of-state link's DISPLAY text only.
-- Head-of-state only; a head of government is never realm-shared.
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
-- Capitalizes the first visible letter, even through a leading wikilink or
-- ennym-wd external-link marker. 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 -- 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
-- Wikilink for a Wikidata item: gv sitelink, else gv label (redlink), else
-- an ennym-wd external link to Wikidata. Display text prefers the gv label.
-- shorten (default true): strip a "role + country" suffix -- pass false for
-- an ordinary name. capitalize (default true): pass false for one item of a
-- multi-value list. nil only when nothing resolves.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 head of
-- state / P1313 head of government), avoiding getWdPositionTitle's
-- multi-role ambiguity. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdPositionTitle but for an EXPLICIT person QID, needed when a
-- property has more than one CONCURRENT holder (e.g. Andorra's two
-- co-phrinsyn under P35), each needing its own office-title resolution.
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
-- Fallback for a country with no P1906/P1313 set: resolves the single
-- best office-holder (P35/P6), then hands off to getWdPositionTitleForPerson,
-- which tries each of that person's current P39 candidates (jurisdiction-
-- filtered first) and uses the first with a real gv article.
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"
-- Max "subclass of" (P279) hops to walk up from a chamber's own P31 class.
-- Needed because e.g. the UK's House of Lords/Commons are instance-of
-- their OWN classes, which subclass the generic upper/lower-house classes
-- a hop or two up (confirmed on Wikidata, not guessed). Capped, not
-- unbounded.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid` or reaches it via "subclass of" (P279).
-- Only runs when the cheap direct P31 == target check misses. `seen` guards
-- against a cyclical class graph.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part, direct match first then a subclass
-- walk. Unicameral (no P527) or ambiguous data yields nothing for that side.
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
-- Wikidata's "proleptic Julian calendar" item (not Q11184 "Julian calendar").
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" with a blind, unverified link; rebuilds it as a
-- real three-tier link, keeping "Joolagh" as the display text.
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
-- Row templates: plain 2-cell rows (matches çhengaghyn/balley/bratteeyn).
-- Sub-items get a "•" bullet instead of a spacer column.
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 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
-- Wraps a label in [[...]] unless it's already a full wikilink (avoids
-- double-bracketing a manual override).
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider used between submodules, reused between this module's own
-- sections; only inserted between two sections 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
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 = {}
-- 1-2. REILTYS (government type) + leaders. enmysN_fer-toshee/
-- ennymN_fer-toshee are the old gendered names; enmys_toshiaghN/
-- ennym_toshiaghN are the gender-neutral synonyms, preferred.
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
-- Wikidata fallback: basic form of government (P122), joined.
-- Routed through getWdItemManxLink, not Wd's own "linked" flag,
-- since P122 rarely has a gv sitelink and would leak English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
-- Some countries (a co-phrinsaght like Andorra) have more than one
-- CONCURRENT head of state; hosQids fetches every current, top-rank
-- P35 QID so each co-phrinse gets its own row. Used only to decide
-- whether the multi-value branch runs -- if empty, the single-value
-- branch below is unaffected and unchanged. No P1393 proxy row for
-- the multi-value case (by request -- not everything from enwiki).
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6")
if #hosQids > 1 then
-- Co-phrinsaght case: one row per concurrent head of state, each
-- with its OWN office title, resolved per-person via P39
-- (getWdPositionTitleForPerson). Deliberately does NOT try the
-- shared P1906 (office held by head of state) here -- P1906 is a
-- single country-level statement and can't tell the co-phrinsyn
-- apart; using it for every row was the bug that made both of
-- Andorra's co-princes show the same "Co-phrinse Frangagh" title.
local sameHeadOfStateAndGovernment = false
if hog and hogQid then
for _, qid in ipairs(hosQids) do
if qid == hogQid then sameHeadOfStateAndGovernment = true end
end
end
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false)))
if name then
-- P1906 ("office held by head of state") as a QUALIFIER on
-- THIS co-prince's own P35 statement (confirmed live for
-- Andorra: Macron's P35 statement carries a P1906
-- qualifier = Q19808845 "French co-prince of Andorra") is
-- tried first -- the same property already used as a
-- top-level country statement in getWdOfficeItemTitle,
-- just read per-statement here instead, which is what
-- actually distinguishes the co-phrinsyn. (An earlier
-- attempt tried this as a P39 qualifier -- wrong property,
-- confirmed wrong by live testing -- P1906 is correct.)
-- The person-chain fallback below (their own item's P39
-- statements) isn't reliable here: Macron's own item has
-- no co-princely P39 at all, only his real French office
-- ("President of the French Republic"), so that
-- heuristic wrongly picked "Eaghtyrane" before this
-- qualifier lookup was added.
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdItemManxLink(getWdQualifierRawIdForValue("P35", qid, "P1906"))
or getWdPositionTitleForPerson(qid)
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = name})
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
-- Single-value case (the ~200 existing articles): unchanged.
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
-- Some countries (US, France, Russia, ...) record the same person
-- as both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for quaiyl;
-- thie_heose/thie_heese are synonyms for quaiyl_syrjey/quaiyl_s'inshley.
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink;
-- chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's 1-9 slots.
-- note_kionedeeaght is a QUALIFIER shown as plain text after the label
-- (matches the old template); noteyn_kionedeeaght is the real {{efn}}
-- footnote. They are separate params, not two spellings of one field.
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"})
-- Links the label, then appends the qualifier (if any) as plain text --
-- matches the old template's placement. Wrapped in font-weight:normal
-- so the (bold) label itself is unaffected.
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
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old).
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)
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
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
8gdg7pb5cmxmeoqukyr6w0vh88rqz1h
393407
393406
2026-09-19T18:30:13Z
MacTire02
219
++
393407
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")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref>/{{efn}} note (imraa_*/noteyn_*) on top of any
-- Wikidata-sourced citation already present.
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
-- Fetches a property value with its citation appended. Only safe when the
-- caller won't re-wrap the result in "[[...]]" -- use getWdPropertyWithCitation
-- for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a value and its rendered citation (e.g. "[1]") as separate strings
-- (by diffing with/without Wd's "reference" flag), so a caller can wrap the
-- bare value in "[[...]]" without the citation's own "[" breaking the link.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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
-- already a real link -- a gv-sitelink wikilink, or an ennym-wd
-- tier-3 "[url label] <sup>(lang)</sup>" external-link fallback
-- (double-wrapping that in another "[[...]]" breaks it).
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)
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
-- Plural version of getWdRawPropertyId: every QID of a property on the
-- current page's own item, not just the single best match. extraFlags e.g.
-- {"best", "current"}. Used for multi-value cases like Andorra's two
-- concurrent co-phrinsyn under P35.
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
-- Raw QID of a QUALIFIER on the current page's own "best" statement of
-- `property`, e.g. P1393 ("proxy") on a P35 statement.
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
-- Same as getWdQualifierRawId, but for a SPECIFIC statement of `property`,
-- picked out by its own VALUE (`valueQid`) rather than just "best" -- needed
-- when a property has more than one current statement (e.g. Andorra's two
-- concurrent P35 co-princes) and each one's own qualifier is different.
-- Confirmed against Module:Wd's own claimCommand/snakEqualsValue: the value
-- QID is a plain positional arg between the property and qualifier property.
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
-- Raw QIDs of every value of a property on a FOREIGN item (`eid`), e.g. a
-- leader's own P39 statements. `qualifiers` optionally filters by
-- {qualifierProperty = requiredValue} (e.g. P1001 "applies to jurisdiction").
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
-- Manx genitive of the current page's own country (e.g. "Vannin" for the
-- Isle of Man), from Module:Enmyn çheerey's table.
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
-- Section label linked to the country-specific article when its genitive
-- resolves (e.g. "[[Reiltys Vannin|Reiltys]]"), else plain "[[Reiltys]]".
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened (e.g. "Çhiarn Vannin" keeps " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips the country name from an office title, e.g. "Monark y Reeriaght
-- Unnaneysit" -> "Monark" (genitive suffix, then " y ", then last-space).
local function shortManxForm(title)
if not title or title == "" then return title end
if shortFormExceptions[title] then return title end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #title > #suffix and title:sub(-#suffix) == suffix then
return title:sub(1, #title - #suffix)
end
end
local short = title:match("^(.-)%sy%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
-- Same as shortManxForm for a shared monarch's per-realm article name;
-- skips the last-space rung (would wrongly truncate "Charse III").
local function shortenCountrySuffixedName(name)
if not name or name == "" then return name end
local countryGenitive = getCurrentCountryGenitive()
if countryGenitive then
local suffix = " " .. countryGenitive
if #name > #suffix and name:sub(-#suffix) == suffix then
return name:sub(1, #name - #suffix)
end
end
local short = name:match("^(.-)%sy%s")
if short and short ~= "" then return short end
return name
end
-- Shortens a per-realm-disambiguated head-of-state link's DISPLAY text only.
-- Head-of-state only; a head of government is never realm-shared.
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
-- Capitalizes the first visible letter, even through a leading wikilink or
-- ennym-wd external-link marker. 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 -- 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
-- Wikilink for a Wikidata item: gv sitelink, else gv label (redlink), else
-- an ennym-wd external link to Wikidata. Display text prefers the gv label.
-- shorten (default true): strip a "role + country" suffix -- pass false for
-- an ordinary name. capitalize (default true): pass false for one item of a
-- multi-value list. nil only when nothing resolves.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 head of
-- state / P1313 head of government), avoiding getWdPositionTitle's
-- multi-role ambiguity. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdPositionTitle but for an EXPLICIT person QID, needed when a
-- property has more than one CONCURRENT holder (e.g. Andorra's two
-- co-phrinsyn under P35), each needing its own office-title resolution.
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
-- Fallback for a country with no P1906/P1313 set: resolves the single
-- best office-holder (P35/P6), then hands off to getWdPositionTitleForPerson,
-- which tries each of that person's current P39 candidates (jurisdiction-
-- filtered first) and uses the first with a real gv article.
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"
-- Max "subclass of" (P279) hops to walk up from a chamber's own P31 class.
-- Needed because e.g. the UK's House of Lords/Commons are instance-of
-- their OWN classes, which subclass the generic upper/lower-house classes
-- a hop or two up (confirmed on Wikidata, not guessed). Capped, not
-- unbounded.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid` or reaches it via "subclass of" (P279).
-- Only runs when the cheap direct P31 == target check misses. `seen` guards
-- against a cyclical class graph.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part, direct match first then a subclass
-- walk. Unicameral (no P527) or ambiguous data yields nothing for that side.
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
-- Wikidata's "proleptic Julian calendar" item (not Q11184 "Julian calendar").
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" with a blind, unverified link; rebuilds it as a
-- real three-tier link, keeping "Joolagh" as the display text.
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
-- Row templates: plain 2-cell rows (matches çhengaghyn/balley/bratteeyn).
-- Sub-items get a "•" bullet instead of a spacer column.
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 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
-- Wraps a label in [[...]] unless it's already a full wikilink (avoids
-- double-bracketing a manual override).
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider used between submodules, reused between this module's own
-- sections; only inserted between two sections 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
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 = {}
-- 1-2. REILTYS (government type) + leaders. enmysN_fer-toshee/
-- ennymN_fer-toshee are the old gendered names; enmys_toshiaghN/
-- ennym_toshiaghN are the gender-neutral synonyms, preferred.
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
-- Wikidata fallback: basic form of government (P122), joined.
-- Routed through getWdItemManxLink, not Wd's own "linked" flag,
-- since P122 rarely has a gv sitelink and would leak English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
-- Some countries (a co-phrinsaght like Andorra) have more than one
-- CONCURRENT head of state; hosQids fetches every current, top-rank
-- P35 QID so each co-phrinse gets its own row. Used only to decide
-- whether the multi-value branch runs -- if empty, the single-value
-- branch below is unaffected and unchanged. No P1393 proxy row for
-- the multi-value case (by request -- not everything from enwiki).
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6")
if #hosQids > 1 then
-- Co-phrinsaght case. THE ACTUAL DATA MODEL (confirmed live via
-- raw #invoke tests, after two earlier wrong guesses -- P39 as a
-- P35 qualifier, then P1906 as a P35 qualifier, neither of which
-- exist): P1906 ("office held by head of state") is ITSELF the
-- multi-valued property on the country's own item -- one
-- statement per office (e.g. "French co-prince of Andorra",
-- "Episcopal Co-Prince") -- and each statement's own P1308
-- ("position holder") qualifier names the actual officeholder.
-- So office titles come from pairing P1906's values with their
-- own P1308 qualifiers, NOT from anything attached to P35.
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))) 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
-- Fallback for a co-phrinsaght whose P1906 isn't modelled
-- this way (or isn't populated at all): the per-person P39
-- heuristic keyed off P35's own person QIDs -- unreliable for
-- the ex-officio capacity itself (it's what wrongly produced
-- "Eaghtyrane" for Macron before this fix), but better than
-- no title at all.
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false)))
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
-- Single-value case (the ~200 existing articles): unchanged.
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
-- Some countries (US, France, Russia, ...) record the same person
-- as both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for quaiyl;
-- thie_heose/thie_heese are synonyms for quaiyl_syrjey/quaiyl_s'inshley.
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink;
-- chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's 1-9 slots.
-- note_kionedeeaght is a QUALIFIER shown as plain text after the label
-- (matches the old template); noteyn_kionedeeaght is the real {{efn}}
-- footnote. They are separate params, not two spellings of one field.
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"})
-- Links the label, then appends the qualifier (if any) as plain text --
-- matches the old template's placement. Wrapped in font-weight:normal
-- so the (bold) label itself is unaffected.
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
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old).
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)
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
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
2zxwa0isc785fu0w0ov79s8vebrrd1k
393455
393407
2026-09-20T02:37:45Z
MacTire02
219
++
393455
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")
-- 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
-- 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
return "<ref>" .. ref .. "</ref>"
end
-- Appends a manual <ref>/{{efn}} note (imraa_*/noteyn_*) on top of any
-- Wikidata-sourced citation already present.
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
-- Fetches a property value with its citation appended. Only safe when the
-- caller won't re-wrap the result in "[[...]]" -- use getWdPropertyWithCitation
-- for that.
local function getWdProperty(property, flags)
return getWdPropertyRaw(property, flags, true)
end
-- Fetches a value and its rendered citation (e.g. "[1]") as separate strings
-- (by diffing with/without Wd's "reference" flag), so a caller can wrap the
-- bare value in "[[...]]" without the citation's own "[" breaking the link.
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
-- Forces a value into a wikilink when Wd's "linked" flag didn't already
-- produce one (no gv sitelink yet), without touching a trailing citation.
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
-- already a real link -- a gv-sitelink wikilink, or an ennym-wd
-- tier-3 "[url label] <sup>(lang)</sup>" external-link fallback
-- (double-wrapping that in another "[[...]]" breaks it).
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)
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
-- Plural version of getWdRawPropertyId: every QID of a property on the
-- current page's own item, not just the single best match. extraFlags e.g.
-- {"best", "current"}. Used for multi-value cases like Andorra's two
-- concurrent co-phrinsyn under P35.
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
-- Raw QID of a QUALIFIER on the current page's own "best" statement of
-- `property`, e.g. P1393 ("proxy") on a P35 statement.
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
-- Same as getWdQualifierRawId, but for a SPECIFIC statement of `property`,
-- picked out by its own VALUE (`valueQid`) rather than just "best" -- needed
-- when a property has more than one current statement (e.g. Andorra's two
-- concurrent P35 co-princes) and each one's own qualifier is different.
-- Confirmed against Module:Wd's own claimCommand/snakEqualsValue: the value
-- QID is a plain positional arg between the property and qualifier property.
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
-- Raw QIDs of every value of a property on a FOREIGN item (`eid`), e.g. a
-- leader's own P39 statements. `qualifiers` optionally filters by
-- {qualifierProperty = requiredValue} (e.g. P1001 "applies to jurisdiction").
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
-- Manx genitive of the current page's own country (e.g. "Vannin" for the
-- Isle of Man), from Module:Enmyn çheerey's table.
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
-- Section label linked to the country-specific article when its genitive
-- resolves (e.g. "[[Reiltys Vannin|Reiltys]]"), else plain "[[Reiltys]]".
local function getGenitiveLinkedLabel(baseWord)
local genitive = getCurrentCountryGenitive()
if genitive and genitive ~= "" then
return "[[" .. baseWord .. " " .. genitive .. "|" .. baseWord .. "]]"
end
return "[[" .. baseWord .. "]]"
end
-- Titles to leave unshortened (e.g. "Çhiarn Vannin" keeps " Vannin").
local shortFormExceptions = {
["Çhiarn Vannin"] = true,
}
-- Strips a trailing " <countryGenitive>" from `text`, tolerating a title
-- that used a DIFFERENT article than Module:Enmyn çheerey's own genitive
-- entry. Reported live: the Netherlands' P1906 office title is
-- "Ree yn Çheer Injil" (nominative-style "yn", lowercased mid-sentence),
-- while the genitive table's correct entry for this consonant-initial noun
-- is "y Çheer Injil" ("y", per the yn-before-vowel/y-before-consonant rule)
-- -- so the exact suffix " y Çheer Injil" never matches, and the title fell
-- through to the mechanical last-word rung, wrongly leaving "Ree yn"
-- instead of "Ree".
--
-- Rung 1: exact suffix match, article and all (covers the common case,
-- e.g. "Monark y Reeriaght Unnaneysit" -> "Monark", unchanged from before).
-- Rung 2: when the genitive itself carries a leading "y "/"yn " article,
-- also try just the bare noun as the suffix (e.g. " Çheer Injil"), then
-- strip a leftover lone "y"/"yn" article word immediately before it if the
-- title used one -- whichever article the title actually wrote, the country
-- name and its article both still come off as a unit.
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
-- Strips the country name from an office title, e.g. "Monark y Reeriaght
-- Unnaneysit" -> "Monark" (genitive suffix, then " y ", then last-space).
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("^(.+)%s%S+$")
if short and short ~= "" then return short end
return title
end
-- Same as shortManxForm for a shared monarch's per-realm article name;
-- skips the last-space rung (would wrongly truncate "Charse III").
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
return name
end
-- Shortens a per-realm-disambiguated head-of-state link's DISPLAY text only.
-- Head-of-state only; a head of government is never realm-shared.
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
-- Capitalizes the first visible letter, even through a leading wikilink or
-- ennym-wd external-link marker. 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 -- 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
-- Wikilink for a Wikidata item: gv sitelink, else gv label (redlink), else
-- an ennym-wd external link to Wikidata. Display text prefers the gv label.
-- shorten (default true): strip a "role + country" suffix -- pass false for
-- an ordinary name. capitalize (default true): pass false for one item of a
-- multi-value list. nil only when nothing resolves.
local function getWdItemManxLink(qid, shorten, capitalize)
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 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
-- Office title from a property set directly on the country (P1906 head of
-- state / P1313 head of government), avoiding getWdPositionTitle's
-- multi-role ambiguity. Tried first.
local function getWdOfficeItemTitle(officeProperty)
local officeQid = getWdRawPropertyId(officeProperty)
if not officeQid then return nil end
return getWdItemManxLink(officeQid)
end
-- Same as getWdPositionTitle but for an EXPLICIT person QID, needed when a
-- property has more than one CONCURRENT holder (e.g. Andorra's two
-- co-phrinsyn under P35), each needing its own office-title resolution.
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
-- Fallback for a country with no P1906/P1313 set: resolves the single
-- best office-holder (P35/P6), then hands off to getWdPositionTitleForPerson,
-- which tries each of that person's current P39 candidates (jurisdiction-
-- filtered first) and uses the first with a real gv article.
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"
-- Max "subclass of" (P279) hops to walk up from a chamber's own P31 class.
-- Needed because e.g. the UK's House of Lords/Commons are instance-of
-- their OWN classes, which subclass the generic upper/lower-house classes
-- a hop or two up (confirmed on Wikidata, not guessed). Capped, not
-- unbounded.
local CLASS_WALK_DEPTH = 3
-- Whether `classQid` IS `targetQid` or reaches it via "subclass of" (P279).
-- Only runs when the cheap direct P31 == target check misses. `seen` guards
-- against a cyclical class graph.
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
-- Resolves a bicameral legislature's two chambers via "has part(s)" (P527)
-- + "instance of" (P31) on each part, direct match first then a subclass
-- walk. Unicameral (no P527) or ambiguous data yields nothing for that side.
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
-- Wikidata's "proleptic Julian calendar" item (not Q11184 "Julian calendar").
local JULIAN_CALENDAR_QID = "Q1985786"
-- Wd appends " (Joolagh)" with a blind, unverified link; rebuilds it as a
-- real three-tier link, keeping "Joolagh" as the display text.
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
-- Row templates: plain 2-cell rows (matches çhengaghyn/balley/bratteeyn).
-- Sub-items get a "•" bullet instead of a spacer column.
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 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
-- Wraps a label in [[...]] unless it's already a full wikilink (avoids
-- double-bracketing a manual override).
local function wikilinkLabel(label)
if not label or label == "" then return label end
if label:find("%[%[") then return label end
return "[[" .. label .. "]]"
end
-- Formats a run of bullet sub-rows with the merged-border classes: every
-- row but the last gets mergedrow, the last gets mergedbottomrow.
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
-- Same divider used between submodules, reused between this module's own
-- sections; only inserted between two sections 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
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 = {}
-- 1-2. REILTYS (government type) + leaders. enmysN_fer-toshee/
-- ennymN_fer-toshee are the old gendered names; enmys_toshiaghN/
-- ennym_toshiaghN are the gender-neutral synonyms, preferred.
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
-- Wikidata fallback: basic form of government (P122), joined.
-- Routed through getWdItemManxLink, not Wd's own "linked" flag,
-- since P122 rarely has a gv sitelink and would leak English.
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"}))
if not manualLeaderGiven and not leadersSuppressed then
-- Wikidata fallback: head of state (P35) / head of government (P6).
-- Some countries (a co-phrinsaght like Andorra) have more than one
-- CONCURRENT head of state; hosQids fetches every current, top-rank
-- P35 QID so each co-phrinse gets its own row. Used only to decide
-- whether the multi-value branch runs -- if empty, the single-value
-- branch below is unaffected and unchanged. No P1393 proxy row for
-- the multi-value case (by request -- not everything from enwiki).
local hosQids = getWdRawPropertyIds("P35", {"best", "current"})
local hogBase, hogCitation = getWdPropertyWithCitation("P6", {"linked"})
local hog = ensureLinked(hogBase)
if hog and hogCitation then hog = hog .. hogCitation end
local hogQid = getWdRawPropertyId("P6")
if #hosQids > 1 then
-- Co-phrinsaght case. THE ACTUAL DATA MODEL (confirmed live via
-- raw #invoke tests, after two earlier wrong guesses -- P39 as a
-- P35 qualifier, then P1906 as a P35 qualifier, neither of which
-- exist): P1906 ("office held by head of state") is ITSELF the
-- multi-valued property on the country's own item -- one
-- statement per office (e.g. "French co-prince of Andorra",
-- "Episcopal Co-Prince") -- and each statement's own P1308
-- ("position holder") qualifier names the actual officeholder.
-- So office titles come from pairing P1906's values with their
-- own P1308 qualifiers, NOT from anything attached to P35.
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))) 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
-- Fallback for a co-phrinsaght whose P1906 isn't modelled
-- this way (or isn't populated at all): the per-person P39
-- heuristic keyed off P35's own person QIDs -- unreliable for
-- the ex-officio capacity itself (it's what wrongly produced
-- "Eaghtyrane" for Macron before this fix), but better than
-- no title at all.
for _, qid in ipairs(hosQids) do
local name = shortenLinkedCountryName(ensureLinked(getWdItemManxLink(qid, false)))
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
-- Single-value case (the ~200 existing articles): unchanged.
local hosBase, hosCitation = getWdPropertyWithCitation("P35", {"linked"})
local hos = shortenLinkedCountryName(ensureLinked(hosBase))
if hos and hosCitation then hos = hos .. hosCitation end
-- Some countries (US, France, Russia, ...) record the same person
-- as both P35 and P6 -- skip the head-of-government row when they match.
local hosQid = getWdRawPropertyId("P35")
local sameHeadOfStateAndGovernment = hos and hog and hosQid and hogQid and hosQid == hogQid
if hos then
local hosTitle = getManual(args, {"sorçh_kione_steat"})
or getWdOfficeItemTitle("P1906") -- office held by head of state
or getWdPositionTitle("P35")
or getWikidataPropertyLabel("P35")
or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
-- Head of state's "proxy" (e.g. the Isle of Man's Lieutenant
-- Governor), via P1393 (a qualifier on P35, value = the office;
-- P1308 on that office = the current holder).
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)) 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
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
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 #leaderPairs > 0 then
-- Manual ref/note for the whole leaders block is attached to the
-- last row (a Wikidata-sourced name already carries its own).
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
-- 3. QUAIYL / ÇHIONNAL (legislature). çhionnal is a synonym for quaiyl;
-- thie_heose/thie_heese are synonyms for quaiyl_syrjey/quaiyl_s'inshley.
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
-- Wd's "linked" flag leaks unlinked English with no gv sitelink;
-- chain through the raw QID instead.
quaiylQid = getWdRawPropertyId("P194")
if quaiylQid then
quaiyl = getWdItemManxLink(quaiylQid, false)
end
end
if not quaiylSyrjey or not quaiylInshley then
-- Chamber names, applied independently to whichever side is unset.
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
-- 4. BUNNEEAGHT / KIONDEEAGHT (founding/sovereignty) + establishment
-- events -- manual-only, ported from the old template's 1-9 slots.
-- note_kionedeeaght is a QUALIFIER shown as plain text after the label
-- (matches the old template); noteyn_kionedeeaght is the real {{efn}}
-- footnote. They are separate params, not two spellings of one field.
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"})
-- Links the label, then appends the qualifier (if any) as plain text --
-- matches the old template's placement. Wrapped in font-weight:normal
-- so the (bold) label itself is unaffected.
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
-- taghyrt_bunneeaghtN/date_bunneeaghtN (new) vs. taghyrtN_bunnit/
-- dateN_bunnit (old).
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)
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
appendSection(rows, govRows)
appendSection(rows, quaiylRows)
appendSection(rows, foundingRows)
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
1v7gt5u14kgpxuyol9n6isbbrwfv2ps
Module:Kishtey fys çheer/eaghtyr
828
55874
393433
393174
2026-09-19T20:53:43Z
MacTire02
219
++
393433
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
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 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
k4x1o7h518r5q888tl1p7lohp6sl4kf
Module:Kishtey fys çheer/tarmaynys
828
55890
393417
393289
2026-09-19T19:12:46Z
MacTire02
219
daah ny cowraghyn
393417
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
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
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 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
-- 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 = (total.trend and trendArrow(total.trend) or "") .. symbol .. formatGdpDisplay(total, true) .. " "
if rhenk then value = value .. "([[" .. spec.totalRhenkLink .. "|" .. rhenk .. "]]) " end
if total.citation then value = 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 = (percapita.trend and trendArrow(percapita.trend) or "") .. symbol .. formatGdpDisplay(percapita, false) .. " "
if rhenk then value = value .. "([[" .. spec.percapitaRhenkLink .. "|" .. rhenk .. "]]) " end
if percapita.citation then value = 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 = (field.trend and trendArrow(field.trend) or "") .. field.str .. " "
if band then
local bandText = bandColor and ('<span style="color:' .. bandColor .. ';">' .. band .. "</span>") or band
value = value .. "(" .. bandText .. ") "
end
if rhenk then value = value .. "([[" .. spec.rhenkLink .. "|" .. rhenk .. "]]) " end
if field.citation then value = 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, matching every other
-- manual value in this module -- no auto symbol/code guessing.
value = nameManual
if codeManual then value = value .. " (<code>[[ISO 4217|" .. codeManual .. "]]</code>)" end
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
qwu2kmm8kwrk0ojg6qhq8iiray14qwi
393418
393417
2026-09-19T19:16:50Z
MacTire02
219
++
393418
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
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
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 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
-- Glues a trend icon to the number it belongs to so a line-wrap can never
-- separate them; anything appended after (rank, band) stays free to wrap
-- onto its own line.
local function glueTrend(trend, text)
if not trend then return text end
return '<span style="white-space:nowrap;">' .. trendArrow(trend) .. text .. '</span>'
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 = 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 = 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
local bandText = bandColor and ('<span style="color:' .. bandColor .. ';">' .. band .. "</span>") or band
value = value .. "(" .. bandText .. ") "
end
if rhenk then value = value .. "([[" .. spec.rhenkLink .. "|" .. rhenk .. "]]) " end
if field.citation then value = 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, matching every other
-- manual value in this module -- no auto symbol/code guessing.
value = nameManual
if codeManual then value = value .. " (<code>[[ISO 4217|" .. codeManual .. "]]</code>)" end
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
es5du8m0lh0egkkym3hdoudl45jfmdq
393419
393418
2026-09-19T19:24:37Z
MacTire02
219
++
393419
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
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
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 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.
local function hasLeadingTrendMarker(text)
if not text or text == "" then return false end
if text:find("^%[%[Coadan:Increase2%.svg") then return true end
if text:find("^%[%[Coadan:Decrease2%.svg") then return true end
if text:find("^%[%[File:Increase2%.svg") then return true end
if text:find("^%[%[File:Decrease2%.svg") then return true end
if text:find("^<span[^>]*>▬</span>") then return true end
for _, marker in ipairs({"▲", "▼", "▬", "—"}) do
if text:sub(1, #marker) == marker then return true end
end
return false
end
-- Glues a trend icon to the number it belongs to so a line-wrap can never
-- separate them; 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 hasLeadingTrendMarker above).
local function glueTrend(trend, text)
if trend then
return '<span style="white-space:nowrap;">' .. trendArrow(trend) .. text .. '</span>'
end
if hasLeadingTrendMarker(text) then
return '<span style="white-space:nowrap;">' .. text .. '</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 = 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 = 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
local bandText = bandColor and ('<span style="color:' .. bandColor .. ';">' .. band .. "</span>") or band
value = value .. "(" .. bandText .. ") "
end
if rhenk then value = value .. "([[" .. spec.rhenkLink .. "|" .. rhenk .. "]]) " end
if field.citation then value = 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, matching every other
-- manual value in this module -- no auto symbol/code guessing.
value = nameManual
if codeManual then value = value .. " (<code>[[ISO 4217|" .. codeManual .. "]]</code>)" end
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
qar5dldo8jx37jzdvkrbii2mwpya8lk
393422
393419
2026-09-19T19:52:05Z
MacTire02
219
++
393422
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
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
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 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.
local function hasLeadingTrendMarker(text)
if not text or text == "" then return false end
if text:find("^%[%[Coadan:Increase2%.svg") then return true end
if text:find("^%[%[Coadan:Decrease2%.svg") then return true end
if text:find("^%[%[File:Increase2%.svg") then return true end
if text:find("^%[%[File:Decrease2%.svg") then return true end
if text:find("^<span[^>]*>▬</span>") then return true end
for _, marker in ipairs({"▲", "▼", "▬", "—"}) do
if text:sub(1, #marker) == marker then return true end
end
return false
end
-- Glues a trend icon to the number it belongs to so a line-wrap can never
-- separate them; 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 hasLeadingTrendMarker above).
local function glueTrend(trend, text)
if trend then
return '<span style="white-space:nowrap;">' .. trendArrow(trend) .. text .. '</span>'
end
if hasLeadingTrendMarker(text) then
return '<span style="white-space:nowrap;">' .. text .. '</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 = 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 = 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 = 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, matching every other
-- manual value in this module -- no auto symbol/code guessing.
value = nameManual
if codeManual then value = value .. " (<code>[[ISO 4217|" .. codeManual .. "]]</code>)" end
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
o3wvmulgxh80djwyr2p8w2yaa3oiudy
393424
393422
2026-09-19T19:55:37Z
MacTire02
219
++
393424
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
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
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 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 = 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 = 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 = 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, matching every other
-- manual value in this module -- no auto symbol/code guessing.
value = nameManual
if codeManual then value = value .. " (<code>[[ISO 4217|" .. codeManual .. "]]</code>)" end
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
hzujd7y6oaljkbsqjr07prwmdxpfu6e
Module:Kishtey fys çheer/coadyn
828
55892
393442
393353
2026-09-19T21:37:13Z
MacTire02
219
++
393442
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"
-- "UTC timezone offset" -- confirmed to exist via web search (its own
-- Wikidata page title), used below for a zone item that's modelled as a
-- NAMED zone (e.g. "Central European Time") rather than a raw-offset
-- item, so there's a numeric offset to read even when the label itself
-- isn't shaped like one. Its exact datatype/how consistently real zone
-- items actually carry it could NOT be independently verified from this
-- environment (wikidata.org itself can't be fetched here) -- the code
-- below is written defensively around that uncertainty (see
-- getWdUtcOffsetProperty), but this is flagged as worth confirming
-- against a real example.
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
-- Wraps a manual ref in <ref> unless it's already tagged (Scribunto turns
-- a literal <ref> into a strip marker before this module ever sees it) --
-- duplicated from the project's other submodules, per its
-- no-shared-utility-module convention.
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
return "<ref>" .. ref .. "</ref>"
end
-- Appends an optional footnote (via {{efn}}) and/or an optional citation
-- to a value -- same `imraa_.../noteyn_...` shape used by every other
-- field in every other submodule of this project.
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
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
--------------------------------------------------
-- Parses a Wikidata UTC-offset label ("UTC+08:00", "UTC-05:00",
-- "UTC−05:00") into a numeric value in minutes (so multiple zones can be
-- sorted/min-maxed for the range display below) and its offset text
-- exactly as written -- sign preserved, HH:MM intact. A negative offset's
-- sign can be written either as a plain ASCII hyphen or as the proper
-- Unicode minus sign (U+2212, "−") -- both Wikidata's own UTC-offset item
-- labels and enwiki's own article titles (e.g. "UTC−05:00") use the real
-- minus sign, so both are checked, each via its own separate literal
-- alternative (never a character class spanning a multi-byte character --
-- that byte-vs-codepoint mistake was already found and fixed elsewhere in
-- this project). Returns nil for anything that isn't shaped like a raw
-- offset (e.g. a named zone item such as "Central European Time") --
-- there's nothing numeric to compare there.
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
-- Convert labels such as UTC+08:00 / UTC-05:00 / UTC−05:00 /
-- UTC+05:30 into linked UTC offset titles. The :00 is retained here
-- because the requested presentation is [[UTC±HH:MM]]. The ORIGINAL
-- sign character (plain hyphen or the real Unicode minus sign) is
-- preserved in the output rather than normalised away, so the link
-- still targets whichever exact title actually uses that character.
local parsed = parseUtcOffset(label)
if parsed then
return "[[UTC" .. parsed.offsetText .. "]]"
end
return label
end
-- Rounds to the nearest integer, away from zero on a tie -- plain
-- math.floor(n + 0.5) rounds negative numbers asymmetrically, which
-- would misround a negative offset.
local function roundHalfAwayFromZero(n)
if n >= 0 then
return math.floor(n + 0.5)
end
return -math.floor(-n + 0.5)
end
-- Reads P2907 ("UTC timezone offset") directly off a zone item -- for
-- when Wikidata models the item as a NAMED zone (e.g. "Central European
-- Time") whose own label carries no offset. Written defensively since
-- this property's exact datatype/coverage wasn't independently
-- verifiable from this environment: accepts either a Quantity (assumed
-- to be hours, e.g. 5.5 for +05:30, -3.5 for -03:30) or a String already
-- shaped like an offset ("+05:30" or "UTC+05:30"), and returns nil for
-- anything else rather than guessing further.
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
-- The effective numeric offset for a zone: its own label when that's
-- already offset-shaped, else P2907 on the item itself (see the caveat
-- on getWdUtcOffsetProperty above). Used both for the single/standard-
-- daylight-saving display (formatZone) and the multi-zone range
-- (formatOrdinaryZones).
local function getEffectiveOffset(zone)
if not zone then
return nil
end
return parseUtcOffset(zone.label) or getWdUtcOffsetProperty(zone.qid)
end
-- Manual offset values can be typed loosely -- with or without a "UTC"
-- prefix, and with or without zero-padding (e.g. "+0:00" rather than
-- "+00:00", as in your own example). Normalises any of those into the
-- same canonical, zero-padded "[[UTC±HH:MM]]" link used everywhere else
-- in this module. Falls back to showing the raw manual text, unlinked,
-- if it doesn't parse as an offset at all -- so a genuinely unexpected
-- manual value still displays rather than vanishing.
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
-- Combines a manual offset + manual name into one display, exactly as
-- confirmed: "[[UTC+00:00]] ([[Traa Mean Greenwich|GMT]])" -- the offset
-- linked (so loosely-typed manual values like "+0:00" still normalise
-- into a proper "[[UTC+00:00]]" link), the name in parentheses exactly
-- as typed (so an existing wikilink like "[[Traa Mean Greenwich|GMT]]"
-- is preserved, not stripped or reformatted -- important since more than
-- one name can share the same offset, e.g. GMT and WET are both
-- UTC+00:00). Either piece can stand alone -- an article that only ever
-- set one of the two keeps working exactly as before.
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
-- Unlike before, a genuinely multi-zone country's several `ordinary`
-- statements are no longer collapsed down to just the first one here
-- -- see formatOrdinaryZones below, which now uses all of them.
return standard, daylight, ordinary
end
--------------------------------------------------
-- Time-zone line
--------------------------------------------------
-- Formats one {qid, label} zone: the offset (linked), plus a name/short
-- name in parentheses when one is available, e.g. "[[UTC+01:00]] (CET)".
-- Used for the standard/daylight-saving pair below and for a single
-- ordinary (non-period-qualified) zone alike.
--
-- Two real Wikidata modelling shapes both need to resolve here: (a) the
-- linked item's own label IS the offset (e.g. "UTC+01:00") -- link it
-- directly, same as always, with its P1813 short name (e.g. "CET") in
-- parens when Wikidata has one; (b) the linked item is a NAMED zone
-- (e.g. "Central European Time") with no offset in its own label at all
-- -- try P2907 on that same item for the actual numeric offset (see
-- getWdUtcOffsetProperty's own caveat on this property), and if found,
-- show it linked with the zone's own short name or full name in parens.
-- With neither an offset-shaped label nor a usable P2907 statement, this
-- still falls back to the bare name rather than showing nothing.
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
-- Multiple, genuinely different time zones (e.g. Russia, the US, Canada,
-- Australia) -- as opposed to a single zone with a seasonal daylight-
-- saving shift -- show up on Wikidata as more than one P421 statement
-- with NO P1264 (valid-in-period) qualifier at all. Rendered as a range
-- from the lowest to the highest offset, e.g. "UTC+02:00 dys +12:00" --
-- matching enwiki's own "UTC+2 to +12" shape, with "dys" for "to", and
-- the full HH:MM kept on both ends per your instruction, instead of
-- enwiki's own shorthand bare-hour form. No per-zone short name here
-- (unlike formatZone above) -- enwiki's own version doesn't show one
-- either, and it would get cluttered fast with more than two zones.
-- Exactly one ordinary zone (the ordinary single-zone country, unchanged
-- from before) still goes through formatZone as usual.
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
-- getEffectiveOffset, not parseUtcOffset directly, so a
-- genuinely multi-zone country modelled with NAMED zone items
-- (no offset in their own labels) can still be ranged, via P2907
-- on each one -- same fallback this needs on the single-zone
-- path (see formatZone).
local p = getEffectiveOffset(zone)
if not p then
-- At least one zone has neither an offset-shaped label nor a
-- usable P2907 statement -- nothing numeric to range
-- against, so fall back to the first zone rather than
-- guessing at an ordering.
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
-- Returns standardText, daylightText separately (rather than baking the
-- daylight-saving line into one combined HTML string, as before) so the
-- caller can render THHL as its own nested "subset" row -- see
-- appendGroupedRows below -- exactly mirroring how the old HTML template
-- and the manual-parameter path both treat it: a genuinely separate row,
-- indented under the main time zone row, never a same-cell concatenation.
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
--------------------------------------------------
-- Grouped rows (a main field with an indented "subset" row nested under
-- it, e.g. THHL under the main time zone) -- mirrors both the old HTML
-- template's own mergedrow/mergedbottomrow nesting for Souree/TTLS, and
-- the bullet sub-row convention used elsewhere in this project's newer
-- Lua modules (e.g. Earroo yn phobble's Ooley/Coontey-pobble rows). Only
-- the last row that actually has a value gets the horizontal ruling that
-- separates this whole group from the next field, so the main row and
-- its subset row(s) read as one continuous section, exactly like the
-- English Wikipedia's own "Time zone" / "Summer (DST)" pairing.
--------------------------------------------------
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)
--------------------------------------------------
-- Two SEPARATE manual fields, not two spellings of one field (this
-- was wrong before -- corrected per your example wikitext):
--
-- cryss_hraa (new) / traa_ynnydagh (old) -- the zone's NAME, e.g.
-- "[[Traa Mean Greenwich|GMT]]"
-- ashchur / ashchur_utc (both old; no distinct new name given yet)
-- -- the actual UTC OFFSET itself, e.g. "+0:00"
--
-- When both are given they combine into one display, exactly as
-- confirmed: "[[UTC+00:00]] ([[Traa Mean Greenwich|GMT]])" -- not
-- everywhere on UTC+00:00 is GMT (Western European Time/WET is the
-- same offset), so the name is never inferred from the offset or
-- vice versa, only ever combined from whatever was actually given.
-- Either one can still stand alone, matching how existing articles
-- may only have set one of the two.
--
-- Citation/footnote: `imraa_ashchur_utc` is a REAL old-template
-- parameter (confirmed live, e.g. Kazakhstan's article citing its 2024
-- single-timezone switch) -- the "this field had neither before"
-- assumption here was wrong, so both old-template offset-field-named
-- spellings are now accepted alongside the new combined-row name:
-- imraa_cryss_hraa (new) / imraa_ashchur_utc / imraa_ashchur (old)
-- noteyn_cryss_hraa (new) / noteyn_ashchur_utc / noteyn_ashchur
-- (no confirmed old note param for this row -- these are offered
-- as new, ashchur-named aliases for consistency/discoverability,
-- matching the ref names above)
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"
})
-- mainZoneValue: the main "Cryss hraa" row's value, from whichever
-- source applies. wikidataDaylightValue: only set when the main zone
-- came from Wikidata AND it has a standard/daylight-saving pair --
-- this is the THHL subset row's value on that path (see below).
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
-- Backwards-compatible daylight-saving source. Same NAME + OFFSET
-- split as the main time-zone field above, mirrored for the
-- daylight-saving row:
--
-- cryss_hraa_thhl (new) / traa_ynnydagh_TTLS (old) -- the DST
-- zone's NAME, e.g. "[[Traa Houree Ghoaldagh|BST]]"
-- ashchur_TTLS (inferred, unconfirmed -- see chat) / ashchur_utc_TTLS
-- (old, confirmed) -- the DST OFFSET itself, e.g. "+1:00"
--
-- Bare `TTLS` (from the original draft) has been dropped: it doesn't
-- fit a two-field model (was it the name or the offset?) and wasn't
-- among the parameters you confirmed -- flagged in chat rather than
-- guessed back in.
--
-- `note_TTLS` (old) and `noteyn_cryss_hraa_thhl` (new, same field)
-- are treated as the same note, kept as its own row exactly as
-- before -- `noteyn_ashchur_TTLS`/`noteyn_ashchur_utc_TTLS` are also
-- accepted, mirroring the main-zone note aliases above.
-- `imraa_cryss_hraa_thhl` (new) is a citation appended directly to
-- the combined value -- `imraa_ashchur_TTLS`/`imraa_ashchur_utc_TTLS`
-- are accepted too, on the same reasoning as `imraa_ashchur_utc`
-- above (an old-template-style, offset-field-named citation param).
--
-- THHL is a *subset* of the main time zone, exactly as on the
-- English Wikipedia's own "Time zone" / "Summer (DST)" pairing, and
-- exactly as the old HTML template itself already did (its own TTLS
-- row was nested inside the same #if as the main traa_ynnydagh row)
-- -- so it's only ever shown alongside a main zone row, never alone.
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
--------------------------------------------------
-- Parameter: coad_çhellvane (matches this row's own display label,
-- "Coad çhellvane" -- confirmed as the actual parameter name, not the
-- coad_fon/calling_code placeholders this draft used before).
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
--------------------------------------------------
-- New parameter: tld. Old parameter, retained for backwards
-- compatibility: cctld (confirmed; coad_internet, this draft's earlier
-- placeholder, never existed).
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
--------------------------------------------------
-- New parameter: ynnyd-eggey. Old parameters, retained for backwards
-- compatibility: duillag, duillag_oikoil. `website` (this draft's own
-- earlier placeholder, never a real parameter) has been removed
-- entirely -- confirmed there's no article depending on it.
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
236unzfb91ftyc7oqayc8wrp5maxz8l
Ronney:Artyn lesh teks ayns Albaanish
14
55924
393395
2026-09-19T15:16:00Z
MacTire02
219
ronney noa
393395
wikitext
text/x-wiki
{{Non-Manx-language text category}}
ftm4vo8zcojmgp8zf3wygcgvg0ztoi7
Ronney:Artyn lesh teks ayns Catalaanish
14
55925
393408
2026-09-19T18:32:09Z
MacTire02
219
ronney noa
393408
wikitext
text/x-wiki
{{Non-Manx-language text category}}
ftm4vo8zcojmgp8zf3wygcgvg0ztoi7
Ronney:Artyn lesh teks ayns Iddaalish
14
55926
393414
2026-09-19T18:48:08Z
MacTire02
219
ronney noa
393414
wikitext
text/x-wiki
{{Non-Manx-language text category}}
ftm4vo8zcojmgp8zf3wygcgvg0ztoi7
Ronney:Artyn lesh teks ayns Armeanish
14
55927
393416
2026-09-19T19:02:25Z
MacTire02
219
ronney noa
393416
wikitext
text/x-wiki
{{Non-Manx-language text category}}
ftm4vo8zcojmgp8zf3wygcgvg0ztoi7
Ronney:Artyn lesh teks ayns Kassaghish
14
55928
393441
2026-09-19T21:35:48Z
MacTire02
219
ronney noa
393441
wikitext
text/x-wiki
{{Non-Manx-language text category}}
ftm4vo8zcojmgp8zf3wygcgvg0ztoi7