Wikipedia
gvwiki
https://gv.wikipedia.org/wiki/Ard-ghuillag
MediaWiki 1.47.0-wmf.18
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
Ymmydeyr:Llywelyn2000/List of Manx people
2
19947
392960
392765
2026-09-08T04:35:39Z
ListeriaBot
10339
Wikidata list updated [V2]
392960
wikitext
text/x-wiki
{{Wikidata list
|sparql=SELECT ?item ?yob ?yod WHERE {
?item wdt:P19 ?pob .
?pob wdt:P131* wd:Q9676 .
OPTIONAL { ?item wdt:P569 ?dob . BIND(YEAR(?dob) as ?yob) }
OPTIONAL { ?item wdt:P570 ?dod . BIND(YEAR(?dod) as ?yod) }
. }
|wdq=.
|sort=569
|section=31
|columns=number:#,P18:XXX Add 'Image' in Manx here please! XXX,label:XXX change to 'Name' in Manx! XXX,?yob:XXX dob XXX,?yod:XXX date of death XXX,P19:xxx Place of birth xxx
}}
== human ==
{| class='wikitable sortable'
! #
! XXX Add 'Image' in Manx here please! XXX
! XXX change to 'Name' in Manx! XXX
! XXX dob XXX
! XXX date of death XXX
! xxx Place of birth xxx
|-
| style='text-align:right'| 1
|
| ''[[:d:Q134487555|Chris Garrett]]''
| 1984
| 2025
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 2
|
| ''[[:d:Q135256163|Michael Higgins]]''
| 1939
| 1988
| [[Mannin]]
|-
| style='text-align:right'| 3
|
| ''[[:d:Q136434024|Albert Hugh Teare]]''
| 1877
| 1932
| [[Rhumsaa]]
|-
| style='text-align:right'| 4
| [[Coadan:Frederick Agnew Gill LCCN2014714984 (cropped).jpg|center|128px]]
| [[Frederick Agnew Gill]]
| 1873
| 1938
| [[Balley Chashtal]]
|-
| style='text-align:right'| 5
|
| ''[[:d:Q75456632|Elizabeth Quayle]]''
|
|
| [[Skeerey Chreest ny h-Ayrey]]
|-
| style='text-align:right'| 6
| [[Coadan:RobinGibb.jpg|center|128px]]
| ''[[:d:Q188482|Robin Gibb]]''
| 1949
| 2012
| [[Doolish]]
|-
| style='text-align:right'| 7
| [[Coadan:Maurice Gibb (Bee Gees) - TopPop 1973 (cropped).png|center|128px]]
| ''[[:d:Q296876|Maurice Gibb]]''
| 1949
| 2003
| [[Doolish]]
|-
| style='text-align:right'| 8
|
| [[Randolph Quirk]]
| 1920
| 2017
| [[Maayl]]
|-
| style='text-align:right'| 9
|
| [[Ned Maddrell]]
| 1877
| 1974
| [[Creneash]]
|-
| style='text-align:right'| 10
| [[Coadan:Rhodri Mawr - Historiae Cambriae.png|center|128px]]
| ''[[:d:Q470862|Rhodri Mawr]]''
| 820
| 878
| [[Mannin]]
|-
| style='text-align:right'| 11
| [[Coadan:John Thomas Caine.jpg|center|128px]]
| ''[[:d:Q964884|John Thomas Caine]]''
| 1829
| 1911
| [[Mannin]]
|-
| style='text-align:right'| 12
|
| ''[[:d:Q1064177|Charles Duncan Cameron]]''
| 1825
| 1870
| [[Doolish]]
|-
| style='text-align:right'| 13
|
| [[Chris Killip]]
| 1946
| 2020
| [[Doolish]]
|-
| style='text-align:right'| 14
| [[Coadan:Edward Forbes.jpg|center|128px]]
| [[Edward Forbes]]
| 1815
| 1854
| [[Doolish]]
|-
| style='text-align:right'| 15
| [[Coadan:Peter Heywood, by John Simpson.jpg|center|128px]]
| ''[[:d:Q1370965|Peter Heywood]]''
| 1772
| 1831
| [[Doolish]]
|-
| style='text-align:right'| 16
| [[Coadan:Eredoctoraten UvA nr. 21, 22 Charles B. Timmer , nr. 1 20 prof. J. Frank Kerm, Bestanddeelnr 934-1653.jpg|center|128px]]
| [[Frank Kermode]]
| 1919
| 2010
| [[Mannin]]
|-
| style='text-align:right'| 17
| [[Coadan:Hugh Binney.jpeg|center|128px]]
| ''[[:d:Q1634227|Hugh Binney]]''
| 1883
| 1953
| [[Doolish]]
|-
| style='text-align:right'| 18
|
| ''[[:d:Q2025044|Daniel Lowey]]''
| 1878
| 1951
| [[Rhumsaa]]
|-
| style='text-align:right'| 19
| [[Coadan:Gofraid Crobán (British Library Cotton MS Julius A VII, folio 50v).jpg|center|128px]]
| [[Gorree Crovan]]
| 1050
| 1095
| [[Mannin]]
|-
| style='text-align:right'| 20
| [[Coadan:MikeKerruish.jpg|center|128px]]
| [[Mike Kerruish]]
| 1948
| 2010
| [[Mannin]]
|-
| style='text-align:right'| 21
| [[Coadan:Brian Stowell - Gaisgeach na Gaelg.jpg|center|128px]]
| [[Brian Stowell]]
| 1936
| 2019
| [[Doolish]]
|-
| style='text-align:right'| 22
| [[Coadan:Archibald Knox.jpg|center|128px]]
| ''[[:d:Q2860090|Archibald Knox]]''
| 1864
| 1933
| [[Mannin]]
|-
| style='text-align:right'| 23
| [[Coadan:Goshen-Routh 10.jpg|center|128px]]
| [[Arthur Caley]]
| 1824
| 1889
| [[Skeerey Chreest ny h-Ayrey]]
|-
| style='text-align:right'| 24
|
| ''[[:d:Q2917082|Peter Buckley]]''
| 1944
| 1969
| [[Doolish]]
|-
| style='text-align:right'| 25
|
| ''[[:d:Q2960723|Charles de Viry]]''
| 1809
| 1888
| [[Doolish]]
|-
| style='text-align:right'| 26
|
| ''[[:d:Q2979086|Clifford Irving]]''
| 1914
| 2004
| [[Mannin]]
|-
| style='text-align:right'| 27
|
| ''[[:d:Q3048476|Edward Christian]]''
| 1600<br/>1590
| 1659<br/>1661
| [[Mannin]]
|-
| style='text-align:right'| 28
|
| ''[[:d:Q3082831|Frank Tipper]]''
| 1909
| 1963
| [[Doolish]]
|-
| style='text-align:right'| 29
|
| [[Hilary Pritchard]]
| 1942
| 1996
| [[Mannin]]
|-
| style='text-align:right'| 30
| [[Coadan:Illiam Dhone.JPG|center|128px]]
| [[Illiam Dhone]]
| 1608
| 1662<br/>1663
| [[Camys y Ree]]
|-
| style='text-align:right'| 31
| [[Coadan:Captain John Quilliam RN.jpg|center|128px]]
| ''[[:d:Q3182325|John Quilliam]]''
| 1771
| 1829
| [[Mannin]]
|-
| style='text-align:right'| 32
|
| ''[[:d:Q3184768|Joseph Clayton Clark]]''
| 1857<br/>1856
| 1937
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 33
|
| [[Joseph Davidson Qualtrough]]
| 1885
| 1960
| [[Mannin]]
|-
| style='text-align:right'| 34
|
| ''[[:d:Q3375184|Percy Cowley]]''
| 1886
| 1958
| [[Rhumsaa]]
|-
| style='text-align:right'| 35
|
| ''[[:d:Q3780140|Gwen Crellin]]''
| 1917
| 2007
| [[Mannin]]
|-
| style='text-align:right'| 36
|
| ''[[:d:Q4647267|A.P. Penketh]]''
| 1865
| 1932
| [[Mannin]]
|-
| style='text-align:right'| 37
|
| ''[[:d:Q4684998|Adrian Earnshaw]]''
| 1950
| 2022
| [[Mannin]]
|-
| style='text-align:right'| 38
| [[Coadan:AWM 099103 Arnold Potts.jpg|center|128px]]
| ''[[:d:Q4795209|Arnold Potts]]''
| 1896
| 1968
| [[Mannin]]
|-
| style='text-align:right'| 39
| [[Coadan:Arthur William Moore.png|center|128px]]
| [[Arthur William Moore]]
| 1853
| 1909
| [[Doolish]]
|-
| style='text-align:right'| 40
| [[Coadan:Baldwin Wake Walker.jpg|center|128px]]
| ''[[:d:Q4850612|Baldwin Wake Walker]]''
| 1802
| 1876
| ''[[:d:Q3398663|Port e Vullen]]''
|-
| style='text-align:right'| 41
| [[Coadan:Bertram Kelly, vicar.jpg|center|128px]]
| [[Bertram Kelly]]
| 1884
| 1976
| [[Doolish]]
|-
| style='text-align:right'| 42
|
| [[Bill Malarkey (politickeyr)|Bill Malarkey]]
| 1951
| 2020
| [[Mannin]]
|-
| style='text-align:right'| 43
|
| ''[[:d:Q4980208|Bryan Kneale]]''
| 1930
| 2025
| [[Doolish]]
|-
| style='text-align:right'| 44
|
| [[Charles Kerruish]]
| 1917
| 2003
| [[Mannin]]
|-
| style='text-align:right'| 45
| [[Coadan:TT Lightweight - Dan Kneen (8985019419).jpg|center|128px]]
| ''[[:d:Q5213818|Dan Kneen]]''
| 1987
| 2018
| [[Doolish]]
|-
| style='text-align:right'| 46
|
| ''[[:d:Q5232102|David Callister]]''
| 1935
| 2020
| [[Mannin]]
|-
| style='text-align:right'| 47
|
| ''[[:d:Q5233727|David Forbes]]''
| 1828
| 1876
| [[Doolish]]
|-
| style='text-align:right'| 48
|
| ''[[:d:Q5262311|Derek Robinson]]''
| 1941
| 2002
| [[Mannin]]
|-
| style='text-align:right'| 49
|
| [[Dursley McLinden]]
| 1965
| 1995
| [[Doolish]]
|-
| style='text-align:right'| 50
|
| ''[[:d:Q5339649|Edmund Lowey]]''
| 1938
| 2024
| [[Balley Sallagh]]
|-
| style='text-align:right'| 51
|
| ''[[:d:Q5442313|Felix Fordati Ready]]''
| 1872
| 1940
| [[Balley Sallagh]]
|-
| style='text-align:right'| 52
|
| ''[[:d:Q5534099|Geoff Corkish]]''
| 1953
| 2025
| [[Mannin]]
|-
| style='text-align:right'| 53
|
| ''[[:d:Q5585508|Gordon Manley]]''
| 1902
| 1980
| [[Doolish]]
|-
| style='text-align:right'| 54
|
| ''[[:d:Q5702651|Harry Dacre]]''
| 1860
| 1922
| [[Mannin]]
|-
| style='text-align:right'| 55
| [[Coadan:Hugh Stowell Brown.jpg|center|128px]]
| [[Hugh Stowell Brown]]
| 1823
| 1886
| [[Doolish]]
|-
| style='text-align:right'| 56
|
| [[Jack Nivison]]
| 1910
| 2003
| [[Skeerey Vraddan|Skeerey Braddan]]<br/>[[Kione Droghad]]
|-
| style='text-align:right'| 57
| [[Coadan:James Ashton.jpeg|center|128px]]
| ''[[:d:Q6128902|James Ashton]]''
| 1859
| 1935
| [[Mannin]]
|-
| style='text-align:right'| 58
| [[Coadan:James Kewley Ward 1890.jpg|center|128px]]
| ''[[:d:Q6137285|James Kewley Ward]]''
| 1819
| 1910
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 59
|
| ''[[:d:Q6218777|John Allen Mylrea]]''
| 1849
| 1911
| [[Doolish]]
|-
| style='text-align:right'| 60
|
| [[John Joseph Kneen]]
| 1873
| 1938
| [[Doolish]]
|-
| style='text-align:right'| 61
| [[Coadan:John McHutchin.jpg|center|128px]]
| ''[[:d:Q6247893|John McHutchin]]''
| 1788
| 1847
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 62
|
| ''[[:d:Q6387399|Ken Burns]]''
| 1923
| 2006
| [[Rhumsaa]]
|-
| style='text-align:right'| 63
| [[Coadan:Mark Cubbon b1785.jpg|center|128px]]
| ''[[:d:Q6767214|Mark Cubbon]]''
| 1775
| 1861
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 64
| [[Coadan:ColMarkWilks.jpg|center|128px]]
| ''[[:d:Q6770348|Mark Wilks]]''
| 1759
| 1831
| [[Mannin]]
|-
| style='text-align:right'| 65
|
| ''[[:d:Q6777668|Martyn Quayle]]''
| 1959
| 2016
| [[Mannin]]
|-
| style='text-align:right'| 66
|
| ''[[:d:Q7173434|Peter Craine]]''
| 2000
| 2003
| [[Doolish]]
|-
| style='text-align:right'| 67
|
| ''[[:d:Q7324916|Richard Costain]]''
| 1839
| 1902
| [[Mannin]]
|-
| style='text-align:right'| 68
|
| ''[[:d:Q7342026|Robert Benjamin Young]]''
| 1773
| 1846
| [[Doolish]]
|-
| style='text-align:right'| 69
|
| ''[[:d:Q7351285|Robert Wylie]]''
| 1839
| 1877
| [[Mannin]]
|-
| style='text-align:right'| 70
| [[Coadan:Sophia Morrison.jpg|center|128px]]
| [[Sophia Morrison]]
| 1859
| 1917
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 71
|
| ''[[:d:Q7627097|Stuart Slack]]''
| 1935
| 1998
| [[Doolish]]
|-
| style='text-align:right'| 72
| [[Coadan:T. E. Brown (young).jpg|center|128px]]
| ''[[:d:Q7789264|Thomas Edward Brown]]''
| 1830
| 1897
| [[Doolish]]
|-
| style='text-align:right'| 73
|
| ''[[:d:Q7790684|Thomas Hill Dixon]]''
| 1816
| 1880
| [[Mannin]]
|-
| style='text-align:right'| 74
|
| ''[[:d:Q7821311|Toni Onley]]''
| 1928
| 2004
| [[Doolish]]
|-
| style='text-align:right'| 75
|
| [[Walter y Chleree]]
| 1928
| 2007
| [[Rhumsaa]]
|-
| style='text-align:right'| 76
|
| ''[[:d:Q8010366|William H. Corlett]]''
| 1856
| 1937
| [[Mannin]]
|-
| style='text-align:right'| 77
|
| [[William Kennish]]
| 1799
| 1862
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 78
| [[Coadan:William Moore (1898).jpg|center|128px]]
| ''[[:d:Q8015768|William Moore]]''
| 1823
| 1914
| [[Mannin]]
|-
| style='text-align:right'| 79
| [[Coadan:Sir William Rowan.jpg|center|128px]]
| ''[[:d:Q8017805|William Rowan]]''
| 1789
| 1879
| [[Mannin]]
|-
| style='text-align:right'| 80
| [[Coadan:Rushen Abbey.jpg|center|128px]]
| ''[[:d:Q8017850|William Russell]]''
|
| 1374
| [[Mannin]]
|-
| style='text-align:right'| 81
|
| ''[[:d:Q9374876|William Russell]]''
| 1852
| 1940
| [[Doolish]]
|-
| style='text-align:right'| 82
|
| ''[[:d:Q10314191|Kenneth Creer]]''
| 1925
| 2020
| [[Doolish]]
|-
| style='text-align:right'| 83
|
| [[John Kelly (scoillar)|John Kelly]]
| 1750
| 1809
| [[Doolish]]
|-
| style='text-align:right'| 84
|
| [[Noel Cringle]]
| 1937
| 2021
| [[Mannin]]
|-
| style='text-align:right'| 85
| [[Coadan:Edward Faragher.jpeg|center|128px]]
| [[Edward Faragher]]
| 1831
| 1908
| [[Creneash]]
|-
| style='text-align:right'| 86
| [[Coadan:Josephine Kermode (Cushag).jpg|center|128px]]
| [[Josephine Kermode]]
| 1852
| 1937
| [[Rhumsaa]]
|-
| style='text-align:right'| 87
| [[Coadan:Mona Margaret McBURNEY.jpg|center|128px]]
| ''[[:d:Q15433239|Mona McBurney]]''
| 1862
| 1932
| [[Doolish]]
|-
| style='text-align:right'| 88
| [[Coadan:Philip Moore Callow Kermode.png|center|128px]]
| ''[[:d:Q15453822|P. M. C. Kermode]]''
| 1855
| 1932
| [[Rhumsaa]]
|-
| style='text-align:right'| 90
| [[Coadan:Hugo Flinn 1933.png|center|128px]]
| ''[[:d:Q15996075|Hugo Flinn]]''
| 1880
| 1943
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 91
| [[Coadan:Canon John Quine.jpg|center|128px]]
| ''[[:d:Q15997058|John Quine]]''
| 1857
| 1940
| [[Skeerey Charmane]]
|-
| style='text-align:right'| 92
| [[Coadan:W. Walter Gill.jpg|center|128px]]
| ''[[:d:Q16002989|W. Walter Gill]]''
| 1876
| 1963
| [[Mannin]]
|-
| style='text-align:right'| 93
|
| ''[[:d:Q16007058|Harry Korris]]''
| 1891
| 1971
| [[Kione Droghad]]
|-
| style='text-align:right'| 94
| [[Coadan:Christopher R. Shimmin.jpg|center|128px]]
| ''[[:d:Q16029252|Christopher R. Shimmin]]''
| 1870
| 1933
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 95
| [[Coadan:Actress Annie Yeamans, c. 1896.png|center|128px]]
| [[Annie Yeamans]]
| 1835
| 1912
| [[Mannin]]
|-
| style='text-align:right'| 96
| [[Coadan:Robert Q. Kermode.jpg|center|128px]]
| ''[[:d:Q16065654|Robert Kermode]]''
| 1812
| 1870
| [[Mannin]]
|-
| style='text-align:right'| 97
|
| ''[[:d:Q16169661|John Dongan]]''
| 1301
| 1413
| [[Mannin]]
|-
| style='text-align:right'| 98
|
| ''[[:d:Q16200333|Esther Nelson]]''
| 1810
| 1843
| [[Jorby]]
|-
| style='text-align:right'| 99
| [[Coadan:Kathleen Faragher.jpg|center|128px]]
| [[Kathleen Faragher]]
| 1904
| 1974
| [[Rhumsaa]]
|-
| style='text-align:right'| 100
|
| ''[[:d:Q16825531|Stewart Henbest Capper]]''
| 1859
| 1925
| [[Lunnin]]<br/>[[Doolish]]
|-
| style='text-align:right'| 101
|
| ''[[:d:Q17182825|William Garrett]]''
| 1842
| 1916
| [[Mannin]]
|-
| style='text-align:right'| 102
|
| ''[[:d:Q17309064|Charles Gibbon]]''
| 1843
| 1890
| [[Mannin]]
|-
| style='text-align:right'| 103
| [[Coadan:Plexus (1901) (14597471297).jpg|center|128px]]
| ''[[:d:Q18157096|William Edward Quine]]''
| 1847
| 1922
| [[Skeerey Stondane]]
|-
| style='text-align:right'| 104
| [[Coadan:Capt. William Gill, the first Captain of the line..jpg|center|128px]]
| [[William Gill (marrinagh)|William Gill]]
| 1795
| 1858
| [[Rhumsaa]]
|-
| style='text-align:right'| 105
| [[Coadan:William Cubbon.jpg|center|128px]]
| [[William Cubbon]]
| 1865
| 1955
| [[Colby]]
|-
| style='text-align:right'| 106
| [[Coadan:Sir Benjamin Alfred Dobson statue, Bolton (4).JPG|center|128px]]
| ''[[:d:Q18681459|Benjamin Dobson]]''
| 1847
| 1898
| [[Doolish]]
|-
| style='text-align:right'| 107
| [[Coadan:Sir James Gell.jpg|center|128px]]
| ''[[:d:Q18922358|James Gell]]''
| 1823
| 1905
| [[Mannin]]
|-
| style='text-align:right'| 108
| [[Coadan:Archibald Cregeen.png|center|128px]]
| [[Archibald Cregeen]]
| 1774
| 1841
| [[Colby]]
|-
| style='text-align:right'| 109
| [[Coadan:Rev thomas bacon.jpg|center|128px]]
| ''[[:d:Q19282324|Thomas Bacon]]''
| 1711
| 1768
| [[Mannin]]
|-
| style='text-align:right'| 110
|
| ''[[:d:Q20639142|Annie Warren Gill]]''
| 1862
| 1930
| [[Balley Chashtal]]
|-
| style='text-align:right'| 111
|
| ''[[:d:Q20683954|Charles Clague]]''
| 1890
| 1962
| [[Mannin]]
|-
| style='text-align:right'| 112
|
| ''[[:d:Q20711846|Frank Gill]]''
| 1866
| 1950
| [[Balley Chashtal]]
|-
| style='text-align:right'| 113
|
| ''[[:d:Q20747196|Arthur Lemon]]''
| 1850
| 1912
| [[Mannin]]
|-
| style='text-align:right'| 114
|
| ''[[:d:Q20756364|Patrick William Stuart-Menteath]]''
| 1845
| 1925
| [[Doolish]]
|-
| style='text-align:right'| 115
|
| ''[[:d:Q20763301|Richard Paget Murray]]''
| 1842
| 1908
| [[Mannin]]
|-
| style='text-align:right'| 116
| [[Coadan:Joseph Creer MLA.png|center|128px]]
| ''[[:d:Q20810712|Joseph Creer]]''
| 1832
| 1913
| [[Mannin]]
|-
| style='text-align:right'| 117
|
| ''[[:d:Q20877240|Edward Quayle]]''
| 1802
| 1862
| [[Mannin]]
|-
| style='text-align:right'| 118
|
| ''[[:d:Q20981819|Sidney Nowell Rostron]]''
| 1883
| 1948
| [[Doolish]]
|-
| style='text-align:right'| 119
|
| ''[[:d:Q21461346|Frederick Swynnerton]]''
| 1858
| 1918
| [[Doolish]]
|-
| style='text-align:right'| 120
|
| ''[[:d:Q21538837|Thomas O'Reilly]]''
| 1819
| 1881
| [[Doolish]]
|-
| style='text-align:right'| 121
| [[Coadan:Capt. James Teare of the RMS Ellan Vannin..JPG|center|128px]]
| ''[[:d:Q22018744|James Teare]]''
| 1872
| 1909
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 122
|
| ''[[:d:Q24034942|Amelia Jane Murray]]''
| 1800
| 1896
| [[Doolish]]
|-
| style='text-align:right'| 123
|
| ''[[:d:Q24205000|William Cain]]''
| 1831
| 1914
| [[Mannin]]
|-
| style='text-align:right'| 124
|
| ''[[:d:Q24264205|James F. Keggin]]''
| 1905
| 1993
| [[Mannin]]
|-
| style='text-align:right'| 125
|
| [[Doolish y Karagher]]
| 1926
| 1987
| [[Doolish]]
|-
| style='text-align:right'| 126
|
| ''[[:d:Q26330510|William Hutchison]]''
| 1904
| 1975
| [[Mannin]]
|-
| style='text-align:right'| 127
|
| ''[[:d:Q27178436|Robert H. Nesbitt]]''
| 1883
| 1966
| [[Mannin]]
|-
| style='text-align:right'| 128
| [[Coadan:David "Dawsey" Kewley.jpg|center|128px]]
| ''[[:d:Q27827705|David Kewley]]''
| 1850
| 1904
| [[Doolish]]
|-
| style='text-align:right'| 129
| [[Coadan:James Stowell Gell.jpg|center|128px]]
| ''[[:d:Q28179118|James Stowell Gell]]''
| 1855
| 1919
| [[Balley Chashtal]]
|-
| style='text-align:right'| 130
| [[Coadan:Samuel Harris.jpg|center|128px]]
| ''[[:d:Q28203030|Samuel Harris]]''
| 1815
| 1905
| [[Doolish]]
|-
| style='text-align:right'| 131
| [[Coadan:Paul Lebiedzinski.jpg|center|128px]]
| ''[[:d:Q28810393|Paul Lebiedzinski]]''
| 1951
| 1995
| [[Rhumsaa]]
|-
| style='text-align:right'| 132
| [[Coadan:John Moore Jeffcott.png|center|128px]]
| ''[[:d:Q31201248|John Moore Jeffcott]]''
| 1817
| 1892
| [[Balley Chashtal]]
|-
| style='text-align:right'| 133
| [[Coadan:Stewart Stevenson Moore.jpg|center|128px]]
| ''[[:d:Q37154286|Stewart Stevenson Moore]]''
| 1860
| 1951
| [[Mannin]]
|-
| style='text-align:right'| 134
|
| ''[[:d:Q39070085|John Kelly]]''
| 1793
| 1854
| [[Mannin]]
|-
| style='text-align:right'| 135
| [[Coadan:Snaefell Miners.jpg|center|128px]]
| ''[[:d:Q41757067|John Kewley]]''
| 1832
| 1905
| [[Mannin]]
|-
| style='text-align:right'| 136
| [[Coadan:Elizabeth S. Nutt, A.R.C.A. (I0007923).jpg|center|128px]]
| ''[[:d:Q43196426|Elizabeth Styring Nutt]]''
| 1870
| 1946
| [[Kione Droghad]]
|-
| style='text-align:right'| 137
|
| ''[[:d:Q43606976|Charles Swynnerton]]''
| 1843
| 1923
| [[Mannin]]
|-
| style='text-align:right'| 138
|
| ''[[:d:Q43779525|Mark Hildesley Quayle]]''
| 1804
| 1879
| [[Mannin]]
|-
| style='text-align:right'| 139
|
| ''[[:d:Q43945628|Mark Quayle]]''
| 1770
| 1804
| [[Mannin]]
|-
| style='text-align:right'| 140
|
| ''[[:d:Q44049933|John Quayle]]''
| 1693
| 1755
| [[Mannin]]
|-
| style='text-align:right'| 141
|
| ''[[:d:Q44746168|Mark Quayle]]''
| 1841
| 1928
| [[Mannin]]
|-
| style='text-align:right'| 142
|
| ''[[:d:Q48110870|Joseph Swynnerton]]''
| 1848
| 1910
| [[Doolish]]
|-
| style='text-align:right'| 143
|
| ''[[:d:Q52148110|Jim Caine]]''
| 1926
| 2018
| [[Doolish]]
|-
| style='text-align:right'| 144
|
| ''[[:d:Q53196681|Wilfred Kissack]]''
| 1873
| 1942
| [[Mannin]]
|-
| style='text-align:right'| 145
|
| ''[[:d:Q54553548|Millie Robinson]]''
| 1924
| 1994
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 146
| [[Coadan:Nellie Brennan.jpg|center|128px]]
| ''[[:d:Q55418295|Nelly Brennan]]''
| 1792
| 1859
| [[Doolish]]
|-
| style='text-align:right'| 147
|
| ''[[:d:Q56254209|Thomas Stowell]]''
| 1764
| 1821
| [[Mannin]]
|-
| style='text-align:right'| 148
|
| ''[[:d:Q56452187|Derek Ennett]]''
| 1931
| 1956
| [[Balley Chashtal]]
|-
| style='text-align:right'| 149
|
| ''[[:d:Q56528264|Thomas Tobin]]''
| 1775
| 1863
| [[Doolish]]
|-
| style='text-align:right'| 150
| [[Coadan:John D. LaMothe.jpg|center|128px]]
| ''[[:d:Q56665493|John Dominique LaMothe]]''
| 1868
| 1928
| [[Rhumsaa]]
|-
| style='text-align:right'| 151
|
| ''[[:d:Q56887925|Nina Morrison]]''
| 1915
| 2011
| [[Doolish]]
|-
| style='text-align:right'| 152
|
| [[Dorothy Pantin]]
| 1896
| 1985
| [[Doolish]]
|-
| style='text-align:right'| 153
| [[Coadan:John Quayle (1725 - 1797).png|center|128px]]
| ''[[:d:Q60754040|John Quayle]]''
| 1725
| 1797
| [[Mannin]]
|-
| style='text-align:right'| 154
|
| ''[[:d:Q64685433|Francis Claudius Armstrong]]''
| 1802
| 1872
| [[Mannin]]
|-
| style='text-align:right'| 155
|
| ''[[:d:Q64685645|Hugh Coleman Davidson]]''
| 1852
| 1934
| [[Balley Chashtal]]
|-
| style='text-align:right'| 156
|
| ''[[:d:Q65767130|Pilcher George Ralfe]]''
| 1861
| 1936
| [[Skeerey Chreest ny h-Ayrey]]
|-
| style='text-align:right'| 157
|
| ''[[:d:Q65768017|Frank Stanley Graves]]''
| 1863
| 1935
| [[Skeerey Charmane]]
|-
| style='text-align:right'| 158
|
| ''[[:d:Q66606883|John Joseph Heywood]]''
| 1789
| 1855
| [[Mannin]]
|-
| style='text-align:right'| 159
| [[Coadan:Mona Hirst 1925.jpg|center|128px]]
| ''[[:d:Q70743693|Mona Hirst]]''
| 1903
| 1988
| [[Mannin]]
|-
| style='text-align:right'| 160
| [[Coadan:Emily Maria Gawne.jpg|center|128px]]
| ''[[:d:Q75265312|Emily Maria Gawne]]''
| 1814
| 1889
| [[Doolish]]
|-
| style='text-align:right'| 161
|
| [[Ewan Christian (briw)|Ewan Christian]]
| 1579
| 1655
| [[Skeerey Chreest ny h-Ayrey]]
|-
| style='text-align:right'| 162
| [[Coadan:Portrait of Esther Taubman, née Christian (by George Romney).jpg|center|128px]]
| ''[[:d:Q75456778|Esther Christian]]''
| 1711
| 1802
| [[Rhumsaa]]
|-
| style='text-align:right'| 163
|
| ''[[:d:Q75458718|George Horsley Wood]]''
|
| 1874
| [[Doolish]]
|-
| style='text-align:right'| 164
|
| ''[[:d:Q75460583|Robert Christian]]''
| 1625
| 1668
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 165
|
| ''[[:d:Q75463324|Margaret Moore]]''
| 1733<br/>1730
| 1782<br/>1807
| [[Doolish]]
|-
| style='text-align:right'| 166
|
| ''[[:d:Q75463414|Margaret Moore]]''
| 1736
| 1828
| [[Skeerey Vraddan|Skeerey Braddan]]
|-
| style='text-align:right'| 167
|
| ''[[:d:Q75463447|Margaret Moore]]''
| 1769
| 1804
| [[Skeerey Vraddan|Skeerey Braddan]]
|-
| style='text-align:right'| 168
|
| ''[[:d:Q75946963|Anna Cleather]]''
| 1811
| 1887
| [[Mannin]]
|-
| style='text-align:right'| 169
|
| ''[[:d:Q76142859|Fanny Edith Walters]]''
| 1887
| 1949
| [[Balley Chashtal]]
|-
| style='text-align:right'| 170
|
| ''[[:d:Q76245966|Laura, Lady Buchan]]''
| 1797
| 1888
| [[Doolish]]
|-
| style='text-align:right'| 171
|
| ''[[:d:Q78901420|Edward Ashton Cannell]]''
| 1927
| 1994
| [[Purt Çhiarn]]
|-
| style='text-align:right'| 172
|
| [[Tommy Leece]]
| 1859
| 1956
| [[Skeerey Chairbre]]
|-
| style='text-align:right'| 173
|
| ''[[:d:Q94373906|John Kaighn]]''
| 1660
| 1724
| [[Mannin]]
|-
| style='text-align:right'| 174
| [[Coadan:Leonard McCombe, 1954, NY, Photograh taken by Jun Miki.jpg|center|128px]]
| ''[[:d:Q97066829|Leonard McCombe]]''
| 1923
| 2005
| [[Mannin]]
|-
| style='text-align:right'| 175
|
| [[Edmund Goodwin]]
| 1845
| 1925
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 176
|
| ''[[:d:Q97497011|Lewis Crellin]]''
| 1901
| 1990
| [[Forsdal]]
|-
| style='text-align:right'| 177
|
| ''[[:d:Q97597263|Leslie Quirk]]''
| 1914
| 2004
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 178
|
| ''[[:d:Q98763296|Norman Sayle]]''
| 1926
| 2007
| [[Doolish]]
|-
| style='text-align:right'| 179
|
| ''[[:d:Q101068189|John Quayle-Dickson]]''
| 1860
| 1945
| [[Balley Chashtal]]
|-
| style='text-align:right'| 180
|
| ''[[:d:Q102175647|David W. Lewis]]''
| 1944
| 2021
| [[Doolish]]
|-
| style='text-align:right'| 181
|
| ''[[:d:Q104286259|Ernest Feltus Adams]]''
| 1865
| 1957
| [[Mannin]]
|-
| style='text-align:right'| 182
| [[Coadan:Thomas Leigh-Goldie.jpg|center|128px]]
| ''[[:d:Q109559333|Thomas Leigh Goldie]]''
| 1807
| 1854
| [[Doolish]]
|-
| style='text-align:right'| 183
|
| ''[[:d:Q110806864|John Newlands Thomson]]''
| 1870
| 1948
| [[Purt le Moirrey]]
|-
| style='text-align:right'| 184
|
| ''[[:d:Q112394413|John David Williams]]''
| 1931
| 2005
| [[Doolish]]
|-
| style='text-align:right'| 185
|
| ''[[:d:Q112954595|Letitia Hannah Damer Sandys]]''
| 1840<br/>1833
| 1911
| [[Mannin]]
|-
| style='text-align:right'| 186
|
| ''[[:d:Q114578445|John Wordsworth]]''
| 1845
| 1920
| [[Rhumsaa]]
|-
| style='text-align:right'| 187
|
| ''[[:d:Q120900628|R. S. McCombe]]''
| 1902
| 1985
| [[Doolish]]
|-
| style='text-align:right'| 188
| [[Coadan:Robert Swan Stephen.png|center|128px]]
| ''[[:d:Q121875076|Robert Swan Stephen]]''
| 1843
| 1903
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 189
|
| [[John Quane]]
| 1757
| 1838
| [[Mannin]]
|-
| style='text-align:right'| 190
|
| [[Robert E. Christian]]
| 1817
| 1891
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 191
|
| ''[[:d:Q122381207|Voirrey Irving]]''
| 1918
| 2005
| [[Mannin]]
|-
| style='text-align:right'| 192
| [[Coadan:Charles Lionel Carson (1847–1901).png|center|128px]]
| ''[[:d:Q123558946|Charles Lionel Carson]]''
| 1847
| 1901
| [[Mannin]]
|-
| style='text-align:right'| 193
| [[Coadan:Margaret Jennifer Kewley Draskau in the video 'Lady Derby – The Great Whore of Babylon'.png|center|128px]]
| ''[[:d:Q130730092|Jennifer Kewley Draskau]]''
|
| 2024
| [[Mannin]]
|-
| style='text-align:right'| 194
| [[Coadan:Max Walker - 2023 UCI Road World Championships (Men's under-23 road race).jpg|center|128px]]
| ''[[:d:Q107036155|Max Walker]]''
| 2001
|
| [[Doolish]]
|-
| style='text-align:right'| 195
|
| ''[[:d:Q108257419|Nola York]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 196
| [[Coadan:Becky Storrie - Présentation TCFIA 2025.jpg|center|128px]]
| ''[[:d:Q108878510|Becky Storrie]]''
| 1998
|
| [[Balley Sallagh]]
|-
| style='text-align:right'| 197
|
| ''[[:d:Q111254683|Jason Evans]]''
| 1991
|
| [[Doolish]]
|-
| style='text-align:right'| 198
| [[Coadan:Yasmin Ingham at the Badminton Horse Trials 2025 - 20250510 135552(0).jpg|center|128px]]
| [[Yasmin Ingham]]
| 1997
|
| [[Mannin]]
|-
| style='text-align:right'| 199
|
| ''[[:d:Q114785217|William Henry Cooper]]''
| 1870
|
| [[Balley Chashtal]]
|-
| style='text-align:right'| 200
|
| ''[[:d:Q115910223|Michael Bott]]''
| 1954
|
| [[Doolish]]
|-
| style='text-align:right'| 201
|
| ''[[:d:Q117309494|Anna Branford]]''
| 1975
|
| [[Mannin]]
|-
| style='text-align:right'| 202
|
| ''[[:d:Q124685800|Tyler Hannay]]''
| 2003
|
| [[Mannin]]
|-
| style='text-align:right'| 203
|
| ''[[:d:Q126365066|Lucy Barnett]]''
| 2006
|
| [[Kione Droghad]]
|-
| style='text-align:right'| 204
|
| ''[[:d:Q130198574|Brian Christian]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 205
|
| ''[[:d:Q134973228|Catherine Perry]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 206
|
| ''[[:d:Q134973249|Rebecca Webster]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 207
|
| ''[[:d:Q134973255|Daniellle Murphy]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 208
|
| ''[[:d:Q134973282|Alanya Thorpe]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 209
|
| ''[[:d:Q134973285|Andrea Littlejohns]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 210
|
| ''[[:d:Q134973288|Caitlin Henery]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 211
|
| ''[[:d:Q134973298|Clare Crowe]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 212
|
| ''[[:d:Q134980247|Bliss Murtagh]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 213
|
| ''[[:d:Q134980251|Emma Miller]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 214
|
| ''[[:d:Q134980254|Rachel Overman]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 215
|
| ''[[:d:Q134980258|Sam Hassall]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 216
|
| ''[[:d:Q134980259|Finnola Martin]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 217
| [[Coadan:James franklin iom 2021 1.jpg|center|128px]]
| ''[[:d:Q135898155|James Franklin]]''
| 1980
|
| ''[[:d:Q26715141|Glen Mona]]''
|-
| style='text-align:right'| 218
|
| ''[[:d:Q135898269|Simon Maddrell]]''
| 1965
|
| [[Doolish]]
|-
| style='text-align:right'| 219
|
| ''[[:d:Q138535546|Alexander Foster]]''
| 1999
|
| [[Doolish]]
|-
| style='text-align:right'| 220
|
| ''[[:d:Q140366855|William Arthur Gill]]''
| 1865
|
| [[Mannin]]
|-
| style='text-align:right'| 221
| [[Coadan:Jersey Town Criterium 2012 Greg Mansell.jpg|center|128px]]
| ''[[:d:Q126242|Greg Mansell]]''
| 1987
|
| [[Doolish]]
|-
| style='text-align:right'| 222
| [[Coadan:Mark Cavendish TDF2012 (cropped).jpg|center|128px]]
| [[Mark Cavendish]]
| 1985
|
| [[Doolish]]
|-
| style='text-align:right'| 223
| [[Coadan:Barry Gibb in 2017-Glasto17-197 (34744934874).jpg|center|128px]]
| ''[[:d:Q296872|Barry Gibb]]''
| 1946
|
| [[Doolish]]
|-
| style='text-align:right'| 224
|
| ''[[:d:Q373700|Richard Corkill]]''
| 1951
|
| [[Doolish]]
|-
| style='text-align:right'| 225
| [[Coadan:Leo Mansell 2010.jpg|center|128px]]
| ''[[:d:Q427791|Leo Mansell]]''
| 1985
|
| [[Mannin]]
|-
| style='text-align:right'| 226
| [[Coadan:Samantha Barks - Fendi.jpg|center|128px]]
| [[Samantha Barks]]
| 1990
|
| [[Laksaa]]
|-
| style='text-align:right'| 227
| [[Coadan:Andrew Roche - 2014 Commonwealth Games (Men's road time trial).jpg|center|128px]]
| ''[[:d:Q506928|Andrew Roche]]''
| 1971
|
| [[Mannin]]
|-
| style='text-align:right'| 228
| [[Coadan:Peter Kennaugh - Tour de Romandie 2010, Stage 3.jpg|center|128px]]
| ''[[:d:Q561361|Peter Kennaugh]]''
| 1989
|
| [[Doolish]]
|-
| style='text-align:right'| 229
| [[Coadan:Ss7 higgins.jpg|center|128px]]
| ''[[:d:Q570357|Mark Higgins]]''
| 1971
|
| [[Mannin]]
|-
| style='text-align:right'| 230
| [[Coadan:Saint-Ghislain - Grand Prix Pino Cerami, 22 juillet 2015, départ (B016).JPG|center|128px]]
| ''[[:d:Q594947|Mark Christian]]''
| 1990
|
| [[Doolish]]
|-
| style='text-align:right'| 231
|
| ''[[:d:Q935074|Donald Gelling]]''
| 1938
|
| [[Skeerey Stondane]]
|-
| style='text-align:right'| 232
| [[Coadan:Alan Bell 2007.jpg|center|128px]]
| [[Allan Bell]]
| 1947
|
| [[Mannin]]
|-
| style='text-align:right'| 233
|
| ''[[:d:Q1378254|James Anthony Brown]]''
| 1950
|
| [[Balley Chashtal]]
|-
| style='text-align:right'| 234
| [[Coadan:Jonathan Bellis.jpg|center|128px]]
| ''[[:d:Q1381074|Jonathan Bellis]]''
| 1988
|
| [[Doolish]]
|-
| style='text-align:right'| 235
| [[Coadan:Amy Jackson headshot (cropped).jpg|center|128px]]
| [[Amy Jackson]]
| 1992
|
| [[Doolish]]
|-
| style='text-align:right'| 236
| [[Coadan:David Knight WEC 2010.jpg|center|128px]]
| ''[[:d:Q2309170|David Knight]]''
| 1978
|
| [[Balley ny Loghey]]
|-
| style='text-align:right'| 237
| [[Coadan:Prof eva rieger.jpg|center|128px]]
| ''[[:d:Q2693484|Eva Rieger]]''
| 1940
|
| [[Mannin]]
|-
| style='text-align:right'| 238
|
| ''[[:d:Q2898341|Bernard Moffatt]]''
| 1946
|
| [[Mannin]]
|-
| style='text-align:right'| 239
|
| [[Clare Christian]]
| 1945
|
| [[Mannin]]
|-
| style='text-align:right'| 240
| [[Coadan:Harry Manx at Bluesfest 2008.jpg|center|128px]]
| ''[[:d:Q3127867|Harry Manx]]''
| 1955
|
| [[Mannin]]
|-
| style='text-align:right'| 241
| [[Coadan:Jamie Blackley.jpg|center|128px]]
| [[Jamie Blackley]]
| 1991
|
| [[Doolish]]
|-
| style='text-align:right'| 242
|
| ''[[:d:Q3314091|Miles Walker]]''
| 1940
|
| [[Mannin]]
|-
| style='text-align:right'| 243
|
| ''[[:d:Q3337801|Neil Bennett]]''
| 1951
|
| [[Rhumsaa]]
|-
| style='text-align:right'| 244
| [[Coadan:Conor Cummins portrait.JPG|center|128px]]
| ''[[:d:Q3687112|Conor Cummins]]''
| 1986
|
| [[Doolish]]
|-
| style='text-align:right'| 245
|
| ''[[:d:Q3973323|Steve Colley]]''
| 1972
|
| [[Kione Droghad]]
|-
| style='text-align:right'| 246
|
| ''[[:d:Q4706420|Alan Corkish]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 247
|
| ''[[:d:Q4706451|Alan Crowe]]''
| 1940
|
| [[Mannin]]
|-
| style='text-align:right'| 248
| [[Coadan:AndyT Mugshot.jpg|center|128px]]
| ''[[:d:Q4761421|Andy Tudor]]''
| 1977
|
| [[Doolish]]
|-
| style='text-align:right'| 249
| [[Coadan:Prof Angela Little.jpg|center|128px]]
| ''[[:d:Q4762488|Angela Little]]''
| 1949
|
| [[Doolish]]
|-
| style='text-align:right'| 250
|
| [[Anne Craine]]
| 1954
|
| [[Doolish]]
|-
| style='text-align:right'| 251
| [[Coadan:Christine Collister.jpg|center|128px]]
| [[Christine Collister]]
| 1961
|
| [[Mannin]]
|-
| style='text-align:right'| 252
| [[Coadan:Sidecar Thurs Practice IMG 00257.jpg|center|128px]]
| ''[[:d:Q5229405|Dave Molyneux]]''
| 1963
|
| [[Doolish]]
|-
| style='text-align:right'| 253
|
| ''[[:d:Q5229413|Dave Moore]]''
| 1966
|
| [[Doolish]]
|-
| style='text-align:right'| 254
|
| ''[[:d:Q5230767|David Anderson]]''
| 1954
|
| [[Mannin]]
|-
| style='text-align:right'| 255
|
| ''[[:d:Q5232661|David Cretney]]''
| 1954
|
| [[Mannin]]
|-
| style='text-align:right'| 256
|
| ''[[:d:Q5236864|David Lyon]]''
| 1943
|
| [[Doolish]]
|-
| style='text-align:right'| 257
| [[Coadan:Davy-knowles.jpg|center|128px]]
| ''[[:d:Q5242207|Davy Knowles]]''
| 1987
|
| [[Purt le Moirrey]]
|-
| style='text-align:right'| 258
|
| ''[[:d:Q5336528|Eddie Teare]]''
| 1948
|
| [[Mannin]]
|-
| style='text-align:right'| 259
|
| ''[[:d:Q5337428|Edgar Quine]]''
| 1934
|
| [[Andreas, Mannin|Andreas]]
|-
| style='text-align:right'| 260
|
| ''[[:d:Q5522814|Gareth Davies]]''
| 1965
|
| [[Doolish]]
|-
| style='text-align:right'| 261
|
| ''[[:d:Q5687920|Hazel Hannan]]''
| 2000
|
| [[Purt Soderick]]
|-
| style='text-align:right'| 262
| [[Coadan:Roskams jane.jpg|center|128px]]
| ''[[:d:Q6152688|Jane Roskams]]''
|
|
| [[Doolish]]
|-
| style='text-align:right'| 263
|
| ''[[:d:Q6239980|John Houghton]]''
| 2000
|
| [[Doolish]]
|-
| style='text-align:right'| 264
|
| [[Juan Turner]]
| 1974
|
| [[Mannin]]
|-
| style='text-align:right'| 265
| [[Coadan:2021-Watterson-Juan-portrait.jpg|center|128px]]
| ''[[:d:Q6301157|Juan Watterson]]''
| 1980
|
| [[Mannin]]
|-
| style='text-align:right'| 266
|
| ''[[:d:Q6397791|Kevin Woodford]]''
| 1950
|
| [[Doolish]]
|-
| style='text-align:right'| 267
| [[Coadan:Martin Bridson2.jpg|center|128px]]
| ''[[:d:Q6775057|Martin Bridson]]''
| 1964
|
| [[Doolish]]
|-
| style='text-align:right'| 268
|
| ''[[:d:Q7175096|Peter Karran]]''
| 1960
|
| [[Mannin]]
|-
| style='text-align:right'| 269
| [[Coadan:Phil Gawne (cropped).jpg|center|128px]]
| [[Phil Gawne]]
| 1965
|
| [[Doolish]]
|-
| style='text-align:right'| 270
|
| ''[[:d:Q7612099|Steve Burke]]''
| 1974
|
| [[Mannin]]
|-
| style='text-align:right'| 271
|
| [[Tim Kennaugh]]
| 1991
|
| [[Doolish]]
|-
| style='text-align:right'| 272
| [[Coadan:Stoneham Maltais Anthonioz.jpg|center|128px]]
| [[Zoe Gillings]]
| 1985
|
| [[Mannin]]
|-
| style='text-align:right'| 273
|
| [[Cristen Marritt]]
| 1989
|
| [[Doolish]]
|-
| style='text-align:right'| 274
|
| [[Kimberley Clague]]
| 1988
|
| [[Doolish]]
|-
| style='text-align:right'| 275
| [[Coadan:Robert Corteen Carswell.jpg|center|128px]]
| [[Bob Carswell]]
| 1950
|
| [[Mannin]]
|-
| style='text-align:right'| 276
|
| ''[[:d:Q16206261|Nick Crowe]]''
| 1971
|
| [[Mannin]]
|-
| style='text-align:right'| 277
|
| ''[[:d:Q16213489|Araminta de Clermont]]''
| 1971
|
| [[Mannin]]
|-
| style='text-align:right'| 278
| [[Coadan:Goshen-Routh 16.jpg|center|128px]]
| ''[[:d:Q16855481|Arthur Caley]]''
| 1824
|
| [[Mannin]]
|-
| style='text-align:right'| 279
| [[Coadan:Anna Christian - 2019 Women's Tour of Scotland (stage 3).jpg|center|128px]]
| [[Anna Christian]]
| 1995
|
| [[Doolish]]
|-
| style='text-align:right'| 280
| [[Coadan:FIL 2014 - Femmes Gaéliques - Ruth Keggin quartet - 1377.jpg|center|128px]]
| ''[[:d:Q19874790|Ruth Keggin]]''
| 1989
|
| [[Purt Çhiarn]]
|-
| style='text-align:right'| 281
| [[Coadan:Kieran Tierney Scotland v Bolivia 6 June 2026-6.jpg|center|128px]]
| ''[[:d:Q19888012|Kieran Tierney]]''
| 1997
|
| [[Doolish]]
|-
| style='text-align:right'| 282
|
| ''[[:d:Q19956065|Kate Costain]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 283
|
| ''[[:d:Q21289363|Kevin Atherton]]''
| 1950
|
| [[Doolish]]
|-
| style='text-align:right'| 284
|
| ''[[:d:Q21642675|Tim Kneale]]''
| 1982
|
| [[Doolish]]
|-
| style='text-align:right'| 285
| [[Coadan:Lillers - Grand Prix de Lillers-Souvenir Bruno Comini, 6 mars 2016 (B052).JPG|center|128px]]
| [[Jake Kelly (daawheeylleyder)|Jake Kelly]]
| 1995
|
| [[Doolish]]
|-
| style='text-align:right'| 286
| [[Coadan:Liam Doyle.JPG|center|128px]]
| ''[[:d:Q24005468|Liam Doyle]]''
| 1992
|
| [[Mannin]]
|-
| style='text-align:right'| 287
| [[Coadan:2021-Skelly-Laurence-portrait.jpg|center|128px]]
| [[Laurence Skelly]]
| 1961
|
| [[Doolish]]
|-
| style='text-align:right'| 288
|
| [[Isla Callister]]
|
|
| [[Mannin]]
|-
| style='text-align:right'| 289
|
| [[Paayl Rogers]]
|
|
| [[Mannin]]
|-
| style='text-align:right'| 290
|
| [[Daniel Quayle]]
|
|
| [[Mannin]]
|-
| style='text-align:right'| 291
| [[Coadan:Howard Quayle.jpg|center|128px]]
| [[Howard Quayle]]
| 1967
|
| [[Mannin]]
|-
| style='text-align:right'| 292
| [[Coadan:Laura Wasley - 2014 Commonwealth Games (Women's road time trial).jpg|center|128px]]
| ''[[:d:Q26845558|Laura Wasley]]''
| 1984
|
| [[Doolish]]
|-
| style='text-align:right'| 293
| [[Coadan:Matt Bostock - 2019 Tour Series, Aberdeen (Men's race - team win).jpg|center|128px]]
| [[Matthew Bostock]]
| 1997
|
| [[Mannin]]
|-
| style='text-align:right'| 294
| [[Coadan:Brianne West.jpg|center|128px]]
| ''[[:d:Q28033898|Brianne West]]''
| 1985
|
| [[Purt Çhiarn]]
|-
| style='text-align:right'| 295
| [[Coadan:2024 Tour de France Femmes - 2e etappe Lizzie Holden 1.jpg|center|128px]]
| [[Lizzie Holden]]
| 1997
|
| [[Doolish]]
|-
| style='text-align:right'| 296
|
| ''[[:d:Q28378513|Hugh Davidson]]''
| 1935
|
| [[Mannin]]
|-
| style='text-align:right'| 297
|
| ''[[:d:Q28792438|Nathan Draper]]''
| 1997
|
| [[Doolish]]
|-
| style='text-align:right'| 298
| [[Coadan:Sam Brand, 2019 Milan-Sanremo.jpg|center|128px]]
| ''[[:d:Q36286044|Sam Brand]]''
| 1991
|
| [[Purt ny h-Inshey]]
|-
| style='text-align:right'| 299
|
| [[Adam Long (bluckaneyr)|Adam Long]]
| 2000
|
| [[Doolish]]
|-
| style='text-align:right'| 300
|
| ''[[:d:Q44821053|Alfred Walter Adams]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 301
| [[Coadan:Dr Eleanor Scott.jpg|center|128px]]
| ''[[:d:Q46997927|Eleanor Scott]]''
| 1960
|
| [[Mannin]]
|-
| style='text-align:right'| 302
|
| [[Jessica Li]]
| 1998
|
| [[Doolish]]
|-
| style='text-align:right'| 303
| [[Coadan:Sophia Goulden anon died 1910.jpg|center|128px]]
| ''[[:d:Q50387964|Sophia Goulden]]''
| 1833
|
| [[Skeerey Lonan]]
|-
| style='text-align:right'| 304
|
| ''[[:d:Q50676544|Kerry Sharpe]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 305
|
| [[Daryl Callister]]
| 1989
|
| [[Mannin]]
|-
| style='text-align:right'| 306
|
| ''[[:d:Q55409232|Leon Mazzone]]''
| 1996
|
| [[Rhumsaa]]
|-
| style='text-align:right'| 307
|
| ''[[:d:Q55900439|Gérard MacQuillan]]''
| 1949
|
| [[Doolish]]
|-
| style='text-align:right'| 308
|
| ''[[:d:Q59242725|Clare Faulds]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 309
|
| ''[[:d:Q63344804|Colin Callow]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 310
|
| ''[[:d:Q64006025|Gary R. Lewin]]''
| 1965
|
| [[Mannin]]
|-
| style='text-align:right'| 311
|
| ''[[:d:Q75401195|Margaret Rosamund Moore]]''
| 1871
|
| [[Skeerey Vraddan|Skeerey Braddan]]
|-
| style='text-align:right'| 312
|
| ''[[:d:Q75463040|Margaret Moore]]''
| 1735
|
| [[Skeerey Maghal]]
|-
| style='text-align:right'| 313
|
| ''[[:d:Q75463064|George Quaile]]''
| 1801
|
| [[Mannin]]
|-
| style='text-align:right'| 314
|
| ''[[:d:Q75463140|Margaret Moore]]''
|
|
| [[Skeerey Malew]]
|-
| style='text-align:right'| 315
|
| ''[[:d:Q75467601|Margaret Moore]]''
|
|
| [[Mannin]]
|-
| style='text-align:right'| 316
|
| ''[[:d:Q87063021|Tom Mazzone]]''
| 1993
|
| [[Doolish]]
|-
| style='text-align:right'| 317
| [[Coadan:Paul Quine.jpg|center|128px]]
| ''[[:d:Q98755074|Paul Quine]]''
| 1969
|
| [[Doolish]]
|-
| style='text-align:right'| 318
|
| ''[[:d:Q100740733|Jane Callister]]''
| 1963
|
| [[Doolish]]
|-
| style='text-align:right'| 319
| [[Coadan:Joe Locke en 2022.jpg|center|128px]]
| [[Joe Locke (aghteyr)|Joe Locke]]
| 2003
|
| [[Doolish]]
|-
| style='text-align:right'| 320
|
| ''[[:d:Q106808901|Julie Edge]]''
|
|
| [[Mannin]]
|}
== Misc ==
{| class='wikitable sortable'
! #
! XXX Add 'Image' in Manx here please! XXX
! XXX change to 'Name' in Manx! XXX
! XXX dob XXX
! XXX date of death XXX
! xxx Place of birth xxx
|-
| style='text-align:right'| 89
|
| ''[[:d:Q15840011|Peta]]''
| 1963
| 1980
| [[Mannin]]
|}
{{Wikidata list end}}
ixkw439elh7qds0je09vsrvg06ql7mq
Ronney:Mannin 'sy vlein 2011
14
41687
392942
391385
2026-09-07T12:44:38Z
MacTire02
219
+clowan
392942
wikitext
text/x-wiki
{{Manninrereblein}}
dy05xeds4mydj2v5ulitjirowt2a47k
Module:Kishtey fys çheer
828
55827
392957
392932
2026-09-07T16:55:36Z
MacTire02
219
+meer
392957
Scribunto
text/plain
local p = {}
-- Helper to safely grab template arguments
local function getArgs(frame)
local parent = frame:getParent()
if parent then return parent.args end
return frame.args
end
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and value ~= "" then
local trimmed = value:match("^%s*(.-)%s*$")
if trimmed ~= "" then return trimmed end
end
end
return nil
end
function p.main(frame)
local args = getArgs(frame)
local rows = {}
-- The universal border rule separating your modules
local dividerLine = '<tr><td colspan="2" style="border-top:1px solid #a2a9b1; padding:0; height:0px;"></td></tr>'
-- Centralized module injection manager
local function appendModule(content)
if content and content ~= "" then
if #rows > 0 then
table.insert(rows, dividerLine)
end
table.insert(rows, content)
end
end
--------------------------------------------------
-- MODULE 1: HEADER & OFFICIAL NAMES
--------------------------------------------------
local title = args["ennym"] or mw.title.getCurrentTitle().text
local subTitle = getManual(args, {"ennym_foddey_cadjincliaghtagh", "ennym_dooghyssagh"})
if not subTitle or subTitle == "" then
local entity = mw.wikibase.getEntityObject()
if entity then
local successLang, langData = pcall(mw.loadData, "Module:Lang/data")
if successLang and langData and langData.lang_name_table and langData.lang_name_table.lang then
local statements = entity:getBestStatements("P1448")
if statements and #statements > 0 then
for _, statement in ipairs(statements) do
if statement.mainsnak and statement.mainsnak.datavalue then
local value = statement.mainsnak.datavalue.value
if value and value.text then
local langCode = value.language or ""
local langName = langData.lang_name_table.lang[langCode] or langCode
subTitle = value.text .. ' <small>([[' .. langName .. '|' .. langName .. ']])</small>'
break
end
end
end
end
end
end
end
local headerHtml = '<tr class="adr"><th colspan="2" class="fn org country-name" style="line-height:1.2em; padding:0.25em 0.33em 0.33em; font-size:1.25em; text-align:center; font-weight:normal;"><span style="font-weight:bold;">' .. title .. '</span>'
if subTitle and subTitle ~= "" then
headerHtml = headerHtml .. '<div style="padding-top:0.25em; font-weight:normal;">' .. subTitle .. '</div>'
end
headerHtml = headerHtml .. '</th></tr>'
table.insert(rows, headerHtml)
--------------------------------------------------
-- MODULE 2: FLAGS & ARMS
--------------------------------------------------
local successFlags, flagsMod = pcall(require, "Module:Kishtey fys çheer/bratteeyn")
if successFlags and flagsMod and flagsMod.main then
appendModule(flagsMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 3: SYMBOLS (MOTTO & ANTHEMS)
--------------------------------------------------
local successSymbols, symbolsMod = pcall(require, "Module:Kishtey fys çheer/cowraghyn")
if successSymbols and symbolsMod and symbolsMod.main then
appendModule(symbolsMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 4: LOCATOR MAPS
--------------------------------------------------
-- FIXED: Tries BOTH paths sequentially to guarantee zero-fail execution regardless of your physical page name setup
local successMaps, mapsMod = pcall(require, "Module:Kishtey fys çheer/caslyssyn-çheerey")
if not successMaps or not mapsMod then
successMaps, mapsMod = pcall(require, "Module:Kishtey fys çheer/caslyssyn")
end
if successMaps and mapsMod and mapsMod.main then
appendModule(mapsMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 5: CITIES & CAPITALS
--------------------------------------------------
local successCities, citiesMod = pcall(require, "Module:Kishtey fys çheer/balley")
if successCities and citiesMod and citiesMod.main then
appendModule(citiesMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 6: LANGUAGES
--------------------------------------------------
local successLanguages, languagesMod = pcall(require, "Module:Kishtey fys çheer/çhengaghyn")
if successLanguages and languagesMod and languagesMod.main then
appendModule(languagesMod.main(frame, args))
end
--------------------------------------------------
-- MODULE 7: GOVERNMENT & LEADERS
--------------------------------------------------
local successGov, govMod = pcall(require, "Module:Kishtey fys çheer/reiltys")
if successGov and govMod and govMod.main then
appendModule(govMod.main(frame, args))
end
if #rows <= 1 then
return nil
end
return '<table class="infobox geography vcard" style="float:right; clear:right; margin:0.5em 0 1em 1em; width:23em; border:1px solid #a2a9b1; border-collapse:collapse;">' .. table.concat(rows) .. '</table>'
end
return p
4icb0ksqq15ch7mg8eior9vr5vgg8nk
Module:Kishtey fys çheer/balley
828
55830
392947
392933
2026-09-07T14:18:40Z
MacTire02
219
++
392947
Scribunto
text/plain
local p = {}
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
-- Safely clean up link wrappers without risk of regex index errors
local function normaliseCityName(value)
if not value then return "" end
local clean = mw.text.trim(value)
clean = clean:gsub("^%[%[", ""):gsub("%]%]$", "")
local pipe = clean:find("|", 1, true)
if pipe then
clean = clean:sub(1, pipe - 1)
end
return mw.text.trim(clean)
end
-- Pull a city name from Wikidata (property must hold an item value, e.g. P36 = capital)
local function getWikidataCity(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
-- Prefer the title of the local (gv) sitelink so the link isn't red;
-- fall back to the item's label if there's no gv article yet.
local sitelink = mw.wikibase.sitelink(id)
if sitelink and sitelink ~= "" then return sitelink end
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then return label end
return nil
end
function p.main(frame, args)
-- Fallback verification to catch argument slots accurately if frame context shifts
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local capital = getManual(args, {"preeu-valley"})
if not capital then
capital = getWikidataCity("P36")
end
local administrative = getManual(args, {"ynnyd_reiragh"})
local largest = getManual(args, {"balley_smoo"})
if not largest then
largest = getWikidataCity("P13574")
end
local capNote = getManual(args, {"noteyn_preeu-valley"})
local adminNote = getManual(args, {"noteyn_ynnyd_reiragh"})
local largeNote = getManual(args, {"noteyn_balley_smoo"})
local subRows = {}
-- Verify if capital and largest city match
local isSame = false
if largest then
local cleanLargest = mw.text.trim(largest):lower()
if cleanLargest == "preeu-valley" or cleanLargest == "preeu_valley" then
isSame = true
elseif capital and normaliseCityName(capital):lower() == normaliseCityName(largest):lower() then
isSame = true
end
end
-- 1. CAPITAL ROW
if capital and mw.text.trim(capital):lower() ~= "none" then
local label = args["sorçh_preeu-valley"] or "Preeu-valley"
local displayLabel = '[[' .. label .. ']]'
if isSame then
displayLabel = '[[' .. label .. ']]<br/><small style="font-weight:normal;">(as y balley smoo)</small>'
end
local cleanCapName = normaliseCityName(capital)
local text = '[[' .. cleanCapName .. '|' .. cleanCapName .. ']]'
if capNote and capNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { capNote } }
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">' .. displayLabel .. '</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
-- 2. ADMINISTRATIVE CENTER ROW
if administrative and mw.text.trim(administrative):lower() ~= "none" then
local label = args["sorçh_ynnyd_reiragh"] or "Ynnyd reiragh"
local cleanAdminName = normaliseCityName(administrative)
local text = '[[' .. cleanAdminName .. '|' .. cleanAdminName .. ']]'
if adminNote and adminNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { adminNote } }
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">[[' .. label .. ']]</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
-- 3. LARGEST CITY ROW
if largest and mw.text.trim(largest):lower() ~= "none" and not isSame then
local cleanLargeName = normaliseCityName(largest)
local text = '[[' .. cleanLargeName .. '|' .. cleanLargeName .. ']]'
if largeNote and largeNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { largeNote } }
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">Balley smoo</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
ktbqcdawddyl5ta4dbmtduu5sugfhks
392948
392947
2026-09-07T14:23:10Z
MacTire02
219
+coordnaidyn
392948
Scribunto
text/plain
local p = {}
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
-- Safely clean up link wrappers without risk of regex index errors
local function normaliseCityName(value)
if not value then return "" end
local clean = mw.text.trim(value)
clean = clean:gsub("^%[%[", ""):gsub("%]%]$", "")
local pipe = clean:find("|", 1, true)
if pipe then
clean = clean:sub(1, pipe - 1)
end
return mw.text.trim(clean)
end
-- Pull a city name from Wikidata (property must hold an item value, e.g. P36 = capital)
local function getWikidataCity(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
-- Prefer the title of the local (gv) sitelink so the link isn't red;
-- fall back to the item's label if there's no gv article yet.
local sitelink = mw.wikibase.sitelink(id)
if sitelink and sitelink ~= "" then return sitelink end
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then return label end
return nil
end
-- Convert a decimal-degree value to DMS, e.g. 54.15 -> 54°9′0″N
local function toDMS(decimal, isLat)
local hemisphere
if isLat then
hemisphere = decimal >= 0 and "N" or "S"
else
hemisphere = decimal >= 0 and "E" or "W"
end
decimal = math.abs(decimal)
local deg = math.floor(decimal)
local minFull = (decimal - deg) * 60
local min = math.floor(minFull)
local sec = math.floor((minFull - min) * 60 + 0.5)
if sec == 60 then sec = 0; min = min + 1 end
if min == 60 then min = 0; deg = deg + 1 end
return string.format("%d°%d′%d″%s", deg, min, sec, hemisphere)
end
-- Given a plain page title (city name), resolve its own Wikidata item and
-- return its P625 coordinates formatted as DMS, or nil if unavailable.
local function getCityCoordinates(pageTitle)
if not pageTitle or pageTitle == "" then return nil end
local id = mw.wikibase.getEntityIdForTitle(pageTitle)
if not id then return nil end
local entity = mw.wikibase.getEntityObject(id)
if not entity then return nil end
local statements = entity:getBestStatements("P625")
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "globecoordinate") then
return nil
end
local coord = mainsnak.datavalue.value
if not (coord.latitude and coord.longitude) then return nil end
return toDMS(coord.latitude, true) .. " " .. toDMS(coord.longitude, false)
end
function p.main(frame, args)
-- Fallback verification to catch argument slots accurately if frame context shifts
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local capital = getManual(args, {"preeu-valley"})
if not capital then
capital = getWikidataCity("P36")
end
local administrative = getManual(args, {"ynnyd_reiragh"})
local largest = getManual(args, {"balley_smoo"})
if not largest then
largest = getWikidataCity("P13574")
end
local capNote = getManual(args, {"noteyn_preeu-valley"})
local adminNote = getManual(args, {"noteyn_ynnyd_reiragh"})
local largeNote = getManual(args, {"noteyn_balley_smoo"})
local subRows = {}
-- Verify if capital and largest city match
local isSame = false
if largest then
local cleanLargest = mw.text.trim(largest):lower()
if cleanLargest == "preeu-valley" or cleanLargest == "preeu_valley" then
isSame = true
elseif capital and normaliseCityName(capital):lower() == normaliseCityName(largest):lower() then
isSame = true
end
end
-- 1. CAPITAL ROW
if capital and mw.text.trim(capital):lower() ~= "none" then
local label = args["sorçh_preeu-valley"] or "Preeu-valley"
local displayLabel = '[[' .. label .. ']]'
if isSame then
displayLabel = '[[' .. label .. ']]<br/><small style="font-weight:normal;">(as y balley smoo)</small>'
end
local cleanCapName = normaliseCityName(capital)
local text = '[[' .. cleanCapName .. '|' .. cleanCapName .. ']]'
if capNote and capNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { capNote } }
end
local capCoords = getCityCoordinates(cleanCapName)
if capCoords then
text = text .. '<br/><small>' .. capCoords .. '</small>'
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">' .. displayLabel .. '</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
-- 2. ADMINISTRATIVE CENTER ROW
if administrative and mw.text.trim(administrative):lower() ~= "none" then
local label = args["sorçh_ynnyd_reiragh"] or "Ynnyd reiragh"
local cleanAdminName = normaliseCityName(administrative)
local text = '[[' .. cleanAdminName .. '|' .. cleanAdminName .. ']]'
if adminNote and adminNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { adminNote } }
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">[[' .. label .. ']]</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
-- 3. LARGEST CITY ROW
if largest and mw.text.trim(largest):lower() ~= "none" and not isSame then
local cleanLargeName = normaliseCityName(largest)
local text = '[[' .. cleanLargeName .. '|' .. cleanLargeName .. ']]'
if largeNote and largeNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { largeNote } }
end
local largeCoords = getCityCoordinates(cleanLargeName)
if largeCoords then
text = text .. '<br/><small>' .. largeCoords .. '</small>'
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">Balley smoo</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
ildaxqevueqdaa1su3pozmjponpo778
392949
392948
2026-09-07T14:25:31Z
MacTire02
219
coordnaidyn -> {{coord}}
392949
Scribunto
text/plain
local p = {}
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
-- Safely clean up link wrappers without risk of regex index errors
local function normaliseCityName(value)
if not value then return "" end
local clean = mw.text.trim(value)
clean = clean:gsub("^%[%[", ""):gsub("%]%]$", "")
local pipe = clean:find("|", 1, true)
if pipe then
clean = clean:sub(1, pipe - 1)
end
return mw.text.trim(clean)
end
-- Pull a city name from Wikidata (property must hold an item value, e.g. P36 = capital)
local function getWikidataCity(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
-- Prefer the title of the local (gv) sitelink so the link isn't red;
-- fall back to the item's label if there's no gv article yet.
local sitelink = mw.wikibase.sitelink(id)
if sitelink and sitelink ~= "" then return sitelink end
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then return label end
return nil
end
-- Given a plain page title (city name), resolve its own Wikidata item and
-- expand {{coord}} with its P625 coordinates (decimal degrees), which
-- handles DMS display, the globe icon, and the GeoHack link itself.
local function getCityCoordinates(frame, pageTitle)
if not pageTitle or pageTitle == "" then return nil end
local id = mw.wikibase.getEntityIdForTitle(pageTitle)
if not id then return nil end
local entity = mw.wikibase.getEntityObject(id)
if not entity then return nil end
local statements = entity:getBestStatements("P625")
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "globecoordinate") then
return nil
end
local coord = mainsnak.datavalue.value
if not (coord.latitude and coord.longitude) then return nil end
return frame:expandTemplate{
title = "coord",
args = { coord.latitude, coord.longitude, display = "inline", type = "city" }
}
end
function p.main(frame, args)
-- Fallback verification to catch argument slots accurately if frame context shifts
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local capital = getManual(args, {"preeu-valley"})
if not capital then
capital = getWikidataCity("P36")
end
local administrative = getManual(args, {"ynnyd_reiragh"})
local largest = getManual(args, {"balley_smoo"})
if not largest then
largest = getWikidataCity("P13574")
end
local capNote = getManual(args, {"noteyn_preeu-valley"})
local adminNote = getManual(args, {"noteyn_ynnyd_reiragh"})
local largeNote = getManual(args, {"noteyn_balley_smoo"})
local subRows = {}
-- Verify if capital and largest city match
local isSame = false
if largest then
local cleanLargest = mw.text.trim(largest):lower()
if cleanLargest == "preeu-valley" or cleanLargest == "preeu_valley" then
isSame = true
elseif capital and normaliseCityName(capital):lower() == normaliseCityName(largest):lower() then
isSame = true
end
end
-- 1. CAPITAL ROW
if capital and mw.text.trim(capital):lower() ~= "none" then
local label = args["sorçh_preeu-valley"] or "Preeu-valley"
local displayLabel = '[[' .. label .. ']]'
if isSame then
displayLabel = '[[' .. label .. ']]<br/><small style="font-weight:normal;">(as y balley smoo)</small>'
end
local cleanCapName = normaliseCityName(capital)
local text = '[[' .. cleanCapName .. '|' .. cleanCapName .. ']]'
if capNote and capNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { capNote } }
end
local capCoords = getCityCoordinates(frame, cleanCapName)
if capCoords then
text = text .. '<br/><small>' .. capCoords .. '</small>'
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">' .. displayLabel .. '</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
-- 2. ADMINISTRATIVE CENTER ROW
if administrative and mw.text.trim(administrative):lower() ~= "none" then
local label = args["sorçh_ynnyd_reiragh"] or "Ynnyd reiragh"
local cleanAdminName = normaliseCityName(administrative)
local text = '[[' .. cleanAdminName .. '|' .. cleanAdminName .. ']]'
if adminNote and adminNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { adminNote } }
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">[[' .. label .. ']]</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
-- 3. LARGEST CITY ROW
if largest and mw.text.trim(largest):lower() ~= "none" and not isSame then
local cleanLargeName = normaliseCityName(largest)
local text = '[[' .. cleanLargeName .. '|' .. cleanLargeName .. ']]'
if largeNote and largeNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { largeNote } }
end
local largeCoords = getCityCoordinates(frame, cleanLargeName)
if largeCoords then
text = text .. '<br/><small>' .. largeCoords .. '</small>'
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">Balley smoo</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
juex4oa0wq4e1x1w3ht2wfgnz3esxr9
392950
392949
2026-09-07T14:26:41Z
MacTire02
219
oops type: vs type=
392950
Scribunto
text/plain
local p = {}
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
-- Safely clean up link wrappers without risk of regex index errors
local function normaliseCityName(value)
if not value then return "" end
local clean = mw.text.trim(value)
clean = clean:gsub("^%[%[", ""):gsub("%]%]$", "")
local pipe = clean:find("|", 1, true)
if pipe then
clean = clean:sub(1, pipe - 1)
end
return mw.text.trim(clean)
end
-- Pull a city name from Wikidata (property must hold an item value, e.g. P36 = capital)
local function getWikidataCity(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
-- Prefer the title of the local (gv) sitelink so the link isn't red;
-- fall back to the item's label if there's no gv article yet.
local sitelink = mw.wikibase.sitelink(id)
if sitelink and sitelink ~= "" then return sitelink end
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then return label end
return nil
end
-- Given a plain page title (city name), resolve its own Wikidata item and
-- expand {{coord}} with its P625 coordinates (decimal degrees), which
-- handles DMS display, the globe icon, and the GeoHack link itself.
local function getCityCoordinates(frame, pageTitle)
if not pageTitle or pageTitle == "" then return nil end
local id = mw.wikibase.getEntityIdForTitle(pageTitle)
if not id then return nil end
local entity = mw.wikibase.getEntityObject(id)
if not entity then return nil end
local statements = entity:getBestStatements("P625")
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "globecoordinate") then
return nil
end
local coord = mainsnak.datavalue.value
if not (coord.latitude and coord.longitude) then return nil end
return frame:expandTemplate{
title = "coord",
args = { coord.latitude, coord.longitude, "type:city", display = "inline" }
}
end
function p.main(frame, args)
-- Fallback verification to catch argument slots accurately if frame context shifts
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local capital = getManual(args, {"preeu-valley"})
if not capital then
capital = getWikidataCity("P36")
end
local administrative = getManual(args, {"ynnyd_reiragh"})
local largest = getManual(args, {"balley_smoo"})
if not largest then
largest = getWikidataCity("P13574")
end
local capNote = getManual(args, {"noteyn_preeu-valley"})
local adminNote = getManual(args, {"noteyn_ynnyd_reiragh"})
local largeNote = getManual(args, {"noteyn_balley_smoo"})
local subRows = {}
-- Verify if capital and largest city match
local isSame = false
if largest then
local cleanLargest = mw.text.trim(largest):lower()
if cleanLargest == "preeu-valley" or cleanLargest == "preeu_valley" then
isSame = true
elseif capital and normaliseCityName(capital):lower() == normaliseCityName(largest):lower() then
isSame = true
end
end
-- 1. CAPITAL ROW
if capital and mw.text.trim(capital):lower() ~= "none" then
local label = args["sorçh_preeu-valley"] or "Preeu-valley"
local displayLabel = '[[' .. label .. ']]'
if isSame then
displayLabel = '[[' .. label .. ']]<br/><small style="font-weight:normal;">(as y balley smoo)</small>'
end
local cleanCapName = normaliseCityName(capital)
local text = '[[' .. cleanCapName .. '|' .. cleanCapName .. ']]'
if capNote and capNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { capNote } }
end
local capCoords = getCityCoordinates(frame, cleanCapName)
if capCoords then
text = text .. '<br/><small>' .. capCoords .. '</small>'
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">' .. displayLabel .. '</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
-- 2. ADMINISTRATIVE CENTER ROW
if administrative and mw.text.trim(administrative):lower() ~= "none" then
local label = args["sorçh_ynnyd_reiragh"] or "Ynnyd reiragh"
local cleanAdminName = normaliseCityName(administrative)
local text = '[[' .. cleanAdminName .. '|' .. cleanAdminName .. ']]'
if adminNote and adminNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { adminNote } }
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">[[' .. label .. ']]</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
-- 3. LARGEST CITY ROW
if largest and mw.text.trim(largest):lower() ~= "none" and not isSame then
local cleanLargeName = normaliseCityName(largest)
local text = '[[' .. cleanLargeName .. '|' .. cleanLargeName .. ']]'
if largeNote and largeNote ~= "" then
text = text .. frame:expandTemplate{ title = "efn", args = { largeNote } }
end
local largeCoords = getCityCoordinates(frame, cleanLargeName)
if largeCoords then
text = text .. '<br/><small>' .. largeCoords .. '</small>'
end
table.insert(subRows, '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">Balley smoo</th><td style="vertical-align:top;">' .. text .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
0aqym7t6aq91zag36q1en26nxaudewa
Module:Kishtey fys çheer/cowraghyn
828
55832
392951
392926
2026-09-07T14:29:22Z
MacTire02
219
WD
392951
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 getMottoData(args)
local motto = getManual(args, {"jarroo-raa_ashoonagh", "jarroo_raa", "jarroo-raa"})
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 finalText, finalRef = nil, nil
if motto and mw.ustring.lower(motto) ~= "none" then
finalText = motto
if reference then finalRef = "<ref>" .. reference .. "</ref>" end
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
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen } 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.
local function getWikidataItemTitle(property)
local entity = mw.wikibase.getEntityObject()
if not entity then return nil end
local statements = entity:getBestStatements(property)
if not statements or #statements == 0 then return nil end
local mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
local sitelink = mw.wikibase.sitelink(id)
if sitelink and sitelink ~= "" then return sitelink end
local label = mw.wikibase.getLabelByLang(id, "gv") or mw.wikibase.label(id)
if label and label ~= "" then return label end
return nil
end
function p.main(frame, args)
local motto = getMottoData(args)
local rows = {}
if motto then
local baseText = mw.text.trim(motto.text):gsub('^["“]', ''):gsub('["”]$', '')
if not mw.ustring.find(baseText, "%[%[") then baseText = "''" .. baseText .. "''" end
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " (''" .. motto.tessenLettyraghey .. "'')" end
if motto.chyndaa and motto.chyndaa ~= "" then baseText = baseText .. " <br/><small>“" .. motto.chyndaa .. "”</small>" end
if motto.reference then baseText = baseText .. motto.reference 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})
if (not title or mw.ustring.lower(title) == "none") and wikidataProperty then
title = getWikidataItemTitle(wikidataProperty)
end
if not title or mw.ustring.lower(title) == "none" then return end
local clean = mw.text.trim(title):gsub('^["“]', ''):gsub('["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
local tessen = getManual(args, {"tessen-lettyraghey_" .. key})
if tessen and tessen ~= "" then display = display .. " (''" .. tessen .. "'')" end
local chyndaa = getManual(args, {"çhyndaa_" .. key, "chyndaa_" .. key})
if chyndaa and chyndaa ~= "" then display = display .. " <br/><small>“" .. chyndaa .. "”</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 .. "<ref>" .. ref .. "</ref>" end
local audio = getManual(args, {"coadan_" .. key})
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 0; line-height:1.2em; text-align:center;">' .. table.concat(rows, "<br/>") .. '</td></tr>'
end
return p
bengur8zzvlq3urxy0g3os5w1p900tp
392952
392951
2026-09-07T14:31:17Z
MacTire02
219
+cloieder-sheean
392952
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 getMottoData(args)
local motto = getManual(args, {"jarroo-raa_ashoonagh", "jarroo_raa", "jarroo-raa"})
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 finalText, finalRef = nil, nil
if motto and mw.ustring.lower(motto) ~= "none" then
finalText = motto
if reference then finalRef = "<ref>" .. reference .. "</ref>" end
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
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen } 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 both the title and the item's own ID (needed to query further
-- properties, e.g. an audio file, on that item rather than the country's).
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 mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
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
return { id = id, title = title }
end
-- Given a Wikidata item ID, return its P51 (audio) file name, if any.
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
function p.main(frame, args)
local motto = getMottoData(args)
local rows = {}
if motto then
local baseText = mw.text.trim(motto.text):gsub('^["“]', ''):gsub('["”]$', '')
if not mw.ustring.find(baseText, "%[%[") then baseText = "''" .. baseText .. "''" end
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " (''" .. motto.tessenLettyraghey .. "'')" end
if motto.chyndaa and motto.chyndaa ~= "" then baseText = baseText .. " <br/><small>“" .. motto.chyndaa .. "”</small>" end
if motto.reference then baseText = baseText .. motto.reference 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})
local wikidataInfo = nil
if (not title or mw.ustring.lower(title) == "none") and wikidataProperty then
wikidataInfo = getWikidataItemInfo(wikidataProperty)
if wikidataInfo then title = wikidataInfo.title end
end
if not title or mw.ustring.lower(title) == "none" then return end
local clean = mw.text.trim(title):gsub('^["“]', ''):gsub('["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
local tessen = getManual(args, {"tessen-lettyraghey_" .. key})
if tessen and tessen ~= "" then display = display .. " (''" .. tessen .. "'')" end
local chyndaa = getManual(args, {"çhyndaa_" .. key, "chyndaa_" .. key})
if chyndaa and chyndaa ~= "" then display = display .. " <br/><small>“" .. chyndaa .. "”</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 .. "<ref>" .. ref .. "</ref>" end
local audio = getManual(args, {"coadan_" .. key})
if (not audio or audio == "") and wikidataInfo then
audio = 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 0; line-height:1.2em; text-align:center;">' .. table.concat(rows, "<br/>") .. '</td></tr>'
end
return p
rbo19xyhc5cliwbyy48tsewp81vllte
392953
392952
2026-09-07T16:27:47Z
MacTire02
219
idaalee, cowraghyn aaraa, a.r.e.
392953
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 getMottoData(args)
local motto = getManual(args, {"jarroo-raa_ashoonagh", "jarroo_raa", "jarroo-raa"})
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 finalText, finalRef = nil, nil
if motto and mw.ustring.lower(motto) ~= "none" then
finalText = motto
if reference then finalRef = "<ref>" .. reference .. "</ref>" end
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
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen } 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 both the title and the item's own ID (needed to query further
-- properties, e.g. an audio file, on that item rather than the country's).
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 mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
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
return { id = id, title = title }
end
-- Given a Wikidata item ID, return its P51 (audio) file name, if any.
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
for _, cp in mw.ustring.gcodepoint(text) 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
local baseText = mw.text.trim(motto.text):gsub('^["“]', ''):gsub('["”]$', '')
local isLinked = mw.ustring.find(baseText, "%[%[")
if not isLinked and not isNonLatinScript(baseText) then
baseText = "''" .. baseText .. "''"
end
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " (''" .. motto.tessenLettyraghey .. "'')" end
if motto.chyndaa and motto.chyndaa ~= "" then baseText = baseText .. " <br/><small>“" .. motto.chyndaa .. "”</small>" end
if motto.reference then baseText = baseText .. motto.reference 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})
local wikidataInfo = nil
if (not title or mw.ustring.lower(title) == "none") and wikidataProperty then
wikidataInfo = getWikidataItemInfo(wikidataProperty)
if wikidataInfo then title = wikidataInfo.title end
end
if not title or mw.ustring.lower(title) == "none" then return end
local clean = mw.text.trim(title):gsub('^["“]', ''):gsub('["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
local tessen = getManual(args, {"tessen-lettyraghey_" .. key})
if tessen and tessen ~= "" then display = display .. " (''" .. tessen .. "'')" end
local chyndaa = getManual(args, {"çhyndaa_" .. key, "chyndaa_" .. key})
if chyndaa and chyndaa ~= "" then display = display .. " <br/><small>“" .. chyndaa .. "”</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 .. "<ref>" .. ref .. "</ref>" end
local audio = getManual(args, {"coadan_" .. key})
if (not audio or audio == "") and wikidataInfo then
audio = 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 0; line-height:1.2em; text-align:center;">' .. table.concat(rows, "<br/>") .. '</td></tr>'
end
return p
trys2b80afomabwyb4x0ccq3o9ud124
392954
392953
2026-09-07T16:29:19Z
MacTire02
219
++
392954
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 getMottoData(args)
local motto = getManual(args, {"jarroo-raa_ashoonagh", "jarroo_raa", "jarroo-raa"})
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 finalText, finalRef = nil, nil
if motto and mw.ustring.lower(motto) ~= "none" then
finalText = motto
if reference then finalRef = "<ref>" .. reference .. "</ref>" end
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
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen } 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 both the title and the item's own ID (needed to query further
-- properties, e.g. an audio file, on that item rather than the country's).
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 mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
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
return { id = id, title = title }
end
-- Given a Wikidata item ID, return its P51 (audio) file name, if any.
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
local baseText = mw.text.trim(motto.text):gsub('^["“]', ''):gsub('["”]$', '')
local isLinked = mw.ustring.find(baseText, "%[%[")
if not isLinked and not isNonLatinScript(baseText) then
baseText = "''" .. baseText .. "''"
end
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " (''" .. motto.tessenLettyraghey .. "'')" end
if motto.chyndaa and motto.chyndaa ~= "" then baseText = baseText .. " <br/><small>“" .. motto.chyndaa .. "”</small>" end
if motto.reference then baseText = baseText .. motto.reference 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})
local wikidataInfo = nil
if (not title or mw.ustring.lower(title) == "none") and wikidataProperty then
wikidataInfo = getWikidataItemInfo(wikidataProperty)
if wikidataInfo then title = wikidataInfo.title end
end
if not title or mw.ustring.lower(title) == "none" then return end
local clean = mw.text.trim(title):gsub('^["“]', ''):gsub('["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
local tessen = getManual(args, {"tessen-lettyraghey_" .. key})
if tessen and tessen ~= "" then display = display .. " (''" .. tessen .. "'')" end
local chyndaa = getManual(args, {"çhyndaa_" .. key, "chyndaa_" .. key})
if chyndaa and chyndaa ~= "" then display = display .. " <br/><small>“" .. chyndaa .. "”</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 .. "<ref>" .. ref .. "</ref>" end
local audio = getManual(args, {"coadan_" .. key})
if (not audio or audio == "") and wikidataInfo then
audio = 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 0; line-height:1.2em; text-align:center;">' .. table.concat(rows, "<br/>") .. '</td></tr>'
end
return p
60b8mbv0t6q896sgwc82vp5rbqzjjhl
392955
392954
2026-09-07T16:31:22Z
MacTire02
219
soiaghey ny h-imraaghyn
392955
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 getMottoData(args)
local motto = getManual(args, {"jarroo-raa_ashoonagh", "jarroo_raa", "jarroo-raa"})
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 finalText, finalRef = nil, nil
if motto and mw.ustring.lower(motto) ~= "none" then
finalText = motto
if reference then finalRef = "<ref>" .. reference .. "</ref>" end
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
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen } 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 both the title and the item's own ID (needed to query further
-- properties, e.g. an audio file, on that item rather than the country's).
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 mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
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
return { id = id, title = title }
end
-- Given a Wikidata item ID, return its P51 (audio) file name, if any.
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
local baseText = mw.text.trim(motto.text):gsub('^["“]', ''):gsub('["”]$', '')
local isLinked = mw.ustring.find(baseText, "%[%[")
if not isLinked and not isNonLatinScript(baseText) then
baseText = "''" .. baseText .. "''"
end
if motto.reference then baseText = baseText .. motto.reference end
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " (''" .. 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})
local wikidataInfo = nil
if (not title or mw.ustring.lower(title) == "none") and wikidataProperty then
wikidataInfo = getWikidataItemInfo(wikidataProperty)
if wikidataInfo then title = wikidataInfo.title end
end
if not title or mw.ustring.lower(title) == "none" then return end
local clean = mw.text.trim(title):gsub('^["“]', ''):gsub('["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
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 .. "<ref>" .. ref .. "</ref>" end
local tessen = getManual(args, {"tessen-lettyraghey_" .. key})
if tessen and tessen ~= "" then display = display .. " (''" .. 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
audio = 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 0; line-height:1.2em; text-align:center;">' .. table.concat(rows, "<br/>") .. '</td></tr>'
end
return p
j3yx3p7iwvp9k4h1dazy8jlaj1bw28s
392956
392955
2026-09-07T16:34:09Z
MacTire02
219
noteyn as imraaghyn
392956
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 getMottoData(args)
local motto = getManual(args, {"jarroo-raa_ashoonagh", "jarroo_raa", "jarroo-raa"})
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 finalText = nil
if motto and mw.ustring.lower(motto) ~= "none" 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 = nil
if reference then finalRef = "<ref>" .. reference .. "</ref>" end
if finalText then return { text = finalText, reference = finalRef, chyndaa = chyndaa, tessenLettyraghey = tessen } 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 both the title and the item's own ID (needed to query further
-- properties, e.g. an audio file, on that item rather than the country's).
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 mainsnak = statements[1].mainsnak
if not (mainsnak and mainsnak.snaktype == "value" and mainsnak.datavalue
and mainsnak.datavalue.type == "wikibase-entityid") then
return nil
end
local value = mainsnak.datavalue.value
local id = value.id or ("Q" .. tostring(value["numeric-id"]))
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
return { id = id, title = title }
end
-- Given a Wikidata item ID, return its P51 (audio) file name, if any.
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
local baseText = mw.text.trim(motto.text):gsub('^["“]', ''):gsub('["”]$', '')
local isLinked = mw.ustring.find(baseText, "%[%[")
if not isLinked and not isNonLatinScript(baseText) then
baseText = "''" .. baseText .. "''"
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
if motto.tessenLettyraghey and motto.tessenLettyraghey ~= "" then baseText = baseText .. " (''" .. 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})
local wikidataInfo = nil
if (not title or mw.ustring.lower(title) == "none") and wikidataProperty then
wikidataInfo = getWikidataItemInfo(wikidataProperty)
if wikidataInfo then title = wikidataInfo.title end
end
if not title or mw.ustring.lower(title) == "none" then return end
local clean = mw.text.trim(title):gsub('^["“]', ''):gsub('["”]$', '')
if not mw.ustring.find(clean, "%[%[") then clean = '[[' .. clean .. '|' .. clean .. ']]' end
local display = '“' .. clean .. '”'
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 .. "<ref>" .. ref .. "</ref>" end
local tessen = getManual(args, {"tessen-lettyraghey_" .. key})
if tessen and tessen ~= "" then display = display .. " (''" .. 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
audio = 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 0; line-height:1.2em; text-align:center;">' .. table.concat(rows, "<br/>") .. '</td></tr>'
end
return p
0icyd8z21x2ydc8b7fmqbz2ytopaz9k
Module:Kishtey fys çheer/çhengaghyn
828
55833
392944
392934
2026-09-07T12:51:19Z
MacTire02
219
--\
392944
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
local function buildLanguageValue(raw, ref, note, frame)
if not raw or mw.text.trim(raw):lower() == "none" then return nil, 0 end
-- Safe tokenization using native text utilities instead of fragile match strings
local cleaned = raw:gsub("<ref[^>]*>.-</ref>", ""):gsub("<ref[^>]*/>", "")
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
table.insert(parts, '[[' .. name .. '|' .. name .. ']]')
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 .. "<ref>" .. ref .. "</ref>"
end
return display, #filteredNames
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local officialRaw = getManual(args, {"çhengaghyn_oikoil", "çhengey_oikoil"})
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;">' .. label .. '</th><td style="vertical-align:top;">' .. 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;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top;">' .. 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;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top;">' .. 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;">' .. mLabel .. '</th><td style="vertical-align:top;">' .. 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;">' .. oLabel .. '</th><td style="vertical-align:top;">' .. other .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
fhu2isn8fun7gud9wukh1b2t9tu3arf
392945
392944
2026-09-07T14:02:17Z
MacTire02
219
++
392945
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
local function getWikidataLanguageNames(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 names = {}
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(names, label)
end
end
end
if #names == 0 then return nil end
return table.concat(names, ",")
end
local function buildLanguageValue(raw, ref, note, frame)
if not raw or mw.text.trim(raw):lower() == "none" then return nil, 0 end
-- Safe tokenization using native text utilities instead of fragile match strings
local cleaned = raw:gsub("<ref[^>]*>.-</ref>", ""):gsub("<ref[^>]*/>", "")
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
table.insert(parts, '[[' .. name .. '|' .. name .. ']]')
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 .. "<ref>" .. ref .. "</ref>"
end
return display, #filteredNames
end
function p.main(frame, args)
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local officialRaw = getManual(args, {"çhengaghyn_oikoil", "çhengey_oikoil"})
if not officialRaw then
officialRaw = getWikidataLanguageNames("P37")
end
local regionalRaw = getManual(args, {"çhengaghyn_ardjynagh", "çhengey_ardjynagh"})
local minorityRaw = getManual(args, {"mynçhengaghyn", "mynçhengey"})
local otherRaw = getManual(args, {"çhengaghyn", "çhengey"})
if not otherRaw then
otherRaw = getWikidataLanguageNames("P2936")
end
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;">' .. label .. '</th><td style="vertical-align:top;">' .. 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;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top;">' .. 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;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top;">' .. 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;">' .. mLabel .. '</th><td style="vertical-align:top;">' .. 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;">' .. oLabel .. '</th><td style="vertical-align:top;">' .. other .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
sm05xrqy8rb5fmfshl384r2if1306pl
392946
392945
2026-09-07T14:13:12Z
MacTire02
219
++
392946
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
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
local function buildLanguageValue(raw, ref, note, frame)
if not raw or mw.text.trim(raw):lower() == "none" then return nil, 0 end
-- Safe tokenization using native text utilities instead of fragile match strings
local cleaned = raw:gsub("<ref[^>]*>.-</ref>", ""):gsub("<ref[^>]*/>", "")
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
table.insert(parts, '[[' .. name .. '|' .. name .. ']]')
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 .. "<ref>" .. ref .. "</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;">' .. label .. '</th><td style="vertical-align:top;">' .. 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;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top;">' .. 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;">[[Çhengey ardjynagh|' .. rLabel .. ']]</th><td style="vertical-align:top;">' .. 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;">' .. mLabel .. '</th><td style="vertical-align:top;">' .. 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;">' .. oLabel .. '</th><td style="vertical-align:top;">' .. other .. '</td></tr>')
end
if #subRows == 0 then return nil end
return table.concat(subRows)
end
return p
77xsk5y2nu2u0a1gwmx9lm9fqsxsy0u
Ronney:Mannin 'sy vlein 1951
14
55835
392941
2026-09-07T12:43:43Z
MacTire02
219
ronney noa
392941
wikitext
text/x-wiki
{{Manninrereblein}}
dy05xeds4mydj2v5ulitjirowt2a47k
Ronney:Bunneeaghtyn ayns Mannin ayns ny 1940yn
14
55836
392943
2026-09-07T12:45:31Z
MacTire02
219
ronney noa
392943
wikitext
text/x-wiki
{{BunneeaghtynManninJeihaght}}
0kfk7bw36ezk8lsgw5hjbqm5z4te7np
Module:Kishtey fys çheer/reiltys
828
55837
392958
2026-09-07T17:12:09Z
MacTire02
219
fo-voddyl noa
392958
Scribunto
text/plain
local p = {}
-- Module:WikidataIB is optional at load time — pcall so a wiki where it (or
-- one of its own dependencies, e.g. Module:i18n) isn't set up yet degrades
-- to "no Wikidata fallback" instead of breaking the whole infobox.
local wikidataIBOK, wikidataIB = pcall(require, "Module:WikidataIB")
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Append a manual reference (<ref>) and/or note ({{efn}}) to a value. This
-- is the manual imraa_*/noteyn_* channel, same as Module:Kishtey fys
-- çheer/çhengaghyn uses. It layers on top of a Wikidata-sourced value too
-- (which already carries its own "edit at Wikidata" pen icon via
-- getWikidataValue/getWikidataQualifier below) in case an editor wants to
-- add an extra citation or clarifying footnote of their own.
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 .. "<ref>" .. ref .. "</ref>"
end
return value
end
-- Fetch+format a single Wikidata property value via Module:WikidataIB
-- (p._getValue), so linking, the "edit at Wikidata" pen icon, and the
-- sourced-only gate all match every other infobox on the wiki that already
-- uses WikidataIB, instead of this module reimplementing its own. Returns
-- nil when WikidataIB isn't available, or the property has no value.
-- `extra` can override any of the default call options (e.g. {df = "dmy"}
-- for a date-type property).
local function getWikidataValue(property, fieldname, extra)
if not wikidataIBOK or not wikidataIB or not wikidataIB._getValue then return nil end
local callArgs = {
[1] = property,
name = fieldname,
fetchwikidata = "ALL", -- bypass the whitelist gate: we've already decided to fall back
onlysourced = "no", -- don't require a non-Wikipedia reference on the WD statement itself
rank = "best",
maxvals = 1,
}
if extra then
for k, v in pairs(extra) do callArgs[k] = v end
end
local ok, result = pcall(wikidataIB._getValue, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
-- Fetch a qualifier (qualProp) attached to the statement of `property` whose
-- target value is `targetQid`, via WikidataIB's getQualifierValue — e.g. the
-- P580 (start time) qualifier on the P463 ("member of") statement that
-- points at the European Union (Q458).
local function getWikidataQualifier(property, targetQid, qualProp, fieldname, extra)
if not wikidataIBOK or not wikidataIB or not wikidataIB.getQualifierValue then return nil end
local frameArgs = {
[1] = property,
pval = targetQid,
qual = qualProp,
name = fieldname,
fetchwikidata = "ALL",
onlysourced = "no",
rank = "best",
}
if extra then
for k, v in pairs(extra) do frameArgs[k] = v end
end
local ok, result = pcall(wikidataIB.getQualifierValue, { args = frameArgs })
if ok and result and result ~= "" then return result end
return nil
end
-- Label of the Wikidata PROPERTY itself (e.g. P35 -> "head of state"), used
-- as a Wikidata-sourced fallback for a leader's title when no manual
-- title/override is supplied. This is a core mw.wikibase call, not
-- WikidataIB — there isn't a WikidataIB wrapper for a bare property label.
local function getWikidataPropertyLabel(property)
local ok, label = pcall(mw.wikibase.label, property)
if ok and label and label ~= "" then return label end
return nil
end
local ROW = '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">%s</th><td style="vertical-align:top;">%s</td></tr>'
local INDENTROW = '<tr><td style="width:1em; padding:0 0 0 0.6em;"> - </td><td style="padding-left:0em;">%s</td><td style="vertical-align:top;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2">%s</th></tr>'
function p.main(frame, args)
-- Fallback verification to catch argument slots accurately if frame context shifts
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
----------------------------------------------------------------
-- 1. GOVERNMENT TYPE (Reiltys)
----------------------------------------------------------------
local govTypeRaw = getManual(args, {"sorçh_reiltys", "government_type"})
local govRef = getManual(args, {"imraa_reiltys"})
local govNote = getManual(args, {"noteyn_reiltys"})
local govShown = false
if govTypeRaw and not isNone(govTypeRaw) then
table.insert(rows, string.format(ROW, "[[Reiltys]]", applyRefNote(govTypeRaw, govRef, govNote, frame)))
govShown = true
end
----------------------------------------------------------------
-- 2. FIR HOSHEE / TOSHEE (Leaders: head of state / head of
-- government / etc.)
-- `enmysN_fer-toshee` / `ennymN_fer-toshee` are the old, gendered
-- param names, kept for backward compatibility with existing
-- articles. `enmys_toshiaghN` / `ennym_toshiaghN` are the
-- gender-neutral synonyms going forward ("toshiagh" = leader);
-- either spelling works, and the new one takes priority when both
-- are supplied for the same slot.
----------------------------------------------------------------
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 via WikidataIB: head of state (P35) / head of
-- government (P6). Titles try, in order: a manual override, the
-- Wikidata property's own label (so the title updates automatically
-- if Wikidata's label changes), then a hardcoded Manx fallback.
local hos = getWikidataValue("P35", "kione_stayt")
local hog = getWikidataValue("P6", "kione_reiltys")
if hos then
local hosTitle = getManual(args, {"sorçh_kione_stayt"}) or getWikidataPropertyLabel("P35") or "Kione ny stayt"
table.insert(leaderPairs, {title = hosTitle, name = hos})
end
if hog then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"}) or getWikidataPropertyLabel("P6") or "Kione y reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
end
if #leaderPairs > 0 then
if not govShown then
table.insert(rows, string.format(HEADER, "[[Reiltys]]"))
end
for idx, leader in ipairs(leaderPairs) do
local name = leader.name
if idx == #leaderPairs then
-- The shared manual ref/note for the whole leaders block is
-- attached to the last row, same convention as a single
-- footnote covering a list. (A Wikidata-sourced name already
-- carries its own pen icon from getWikidataValue.)
name = applyRefNote(name, leaderRef, leaderNote, frame)
end
table.insert(rows, string.format(INDENTROW, leader.title, name))
end
end
----------------------------------------------------------------
-- 3. QUAIYL / ÇHIONNAL (Legislature)
-- `çhionnal` is a synonym for `quaiyl`; `thie_heose` / `thie_heese`
-- are synonyms for `quaiyl_syrjey` / `quaiyl_s'inshley` (upper /
-- lower house). New spellings take priority when both are given.
----------------------------------------------------------------
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"})
if not quaiyl and not quaiylSyrjey and not quaiylInshley then
quaiyl = getWikidataValue("P194", "quaiyl")
end
if quaiyl and not isNone(quaiyl) then
table.insert(rows, string.format(ROW, "[[Çhionnal slattyssagh]]", applyRefNote(quaiyl, quaiylRef, quaiylNote, frame)))
if quaiylSyrjey and not isNone(quaiylSyrjey) then
table.insert(rows, string.format(INDENTROW, "[[Thie heose]]", quaiylSyrjey))
end
if quaiylInshley and not isNone(quaiylInshley) then
table.insert(rows, string.format(INDENTROW, "[[Thie heese]]", quaiylInshley))
end
end
----------------------------------------------------------------
-- 4. BUNNEEAGHT / KIONDEEAGHT (Founding / constitution) and
-- historical establishment events — manual-only, ported
-- directly from the old template's numbered slots (1-9).
-- `kionedeeaght` is a synonym for `kiondeeaght` in the label/note
-- param names.
----------------------------------------------------------------
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
local event = getManual(args, {"taghyrt" .. i .. "_bunnit"})
local date = getManual(args, {"date" .. i .. "_bunnit"})
if event then
table.insert(establishmentRows, {event = event, date = date or ""})
end
end
if foundingValue or #establishmentRows > 0 then
if foundingValue and not isNone(foundingValue) then
table.insert(rows, string.format(ROW, "[[" .. foundingLabel .. "]]", applyRefNote(foundingValue, foundingRef, foundingNote, frame)))
elseif #establishmentRows > 0 then
table.insert(rows, string.format(HEADER, "[[" .. foundingLabel .. "]]"))
end
for _, ev in ipairs(establishmentRows) do
table.insert(rows, string.format(INDENTROW, ev.event, ev.date))
end
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback via WikidataIB: inception (P571) — only when the
-- whole establishment block was left unset (not explicitly |bunnit=none)
local inception = getWikidataValue("P571", "kiondeeaght", {df = "dmy"})
if inception then
table.insert(rows, string.format(ROW, "[[" .. foundingLabel .. "]]", applyRefNote(inception, foundingRef, foundingNote, frame)))
end
end
----------------------------------------------------------------
-- 5. ENTREILYS GYS YN UNNANEYS OARPAGH (EU accession)
----------------------------------------------------------------
local euDateManual = getManual(args, {"dateEUentreilys"})
local euRef = getManual(args, {"imraa_EUentreilys"})
local euNote = getManual(args, {"noteyn_EUentreilys"})
local euDate = euDateManual
if not euDate then
-- Q458 = European Union; via WikidataIB's getQualifierValue on the
-- P580 (start time) qualifier of the matching P463 (member of) statement
euDate = getWikidataQualifier("P463", "Q458", "P580", "EUentreilys", {df = "dmy"})
end
if euDate and not isNone(euDate) then
table.insert(rows, string.format(ROW, "Entreilys gys yn [[Yn Unnaneys Oarpagh|UO]]", applyRefNote(euDate, euRef, euNote, frame)))
end
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
aycl3ju84jpxu9eqx1iqad1n1phyxgm
392959
392958
2026-09-07T17:24:45Z
MacTire02
219
++
392959
Scribunto
text/plain
local p = {}
-- Module:Wd is gv.wiki's actual working Wikidata-fetch-and-cite module
-- (confirmed by its localized /i18n submodule) — used instead of
-- Module:WikidataIB, which has no working reference-building of its own.
-- pcall so a wiki state where Wd (or its own Module:Wd/i18n) isn't set up
-- degrades to "no Wikidata fallback" instead of breaking the infobox.
local wdOK, Wd = pcall(require, "Module:Wd")
-- Safely get manual parameters from priority list
local function getManual(args, names)
for _, name in ipairs(names) do
local value = args[name]
if value and mw.text.trim(value) ~= "" then
return mw.text.trim(value)
end
end
return nil
end
local function isNone(value)
return value ~= nil and mw.text.trim(value):lower() == "none"
end
-- Append a manual reference (<ref>) and/or note ({{efn}}) to a value. This
-- is the manual imraa_*/noteyn_* channel, same as Module:Kishtey fys
-- çheer/çhengaghyn uses. It layers on top of a Wikidata-sourced value too
-- (which already carries its own auto-built citation from getWdProperty/
-- getWdQualifier below) in case an editor wants to add an extra citation or
-- clarifying footnote of their own.
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 .. "<ref>" .. ref .. "</ref>"
end
return value
end
-- Fetch+format a single Wikidata property value via Module:Wd's "property"
-- command, combined with its "reference" command so that, when the
-- Wikidata statement itself carries references, Wd builds a real <ref>
-- citation (Cite web / Cite Q) from them automatically — the same way
-- gv.wiki's other Wd-based infoboxes already cite Wikidata data. `flags`
-- is an optional array of extra Wd flags (e.g. {"linked"}). Returns nil
-- when Wd isn't available, or the property has no value.
local function getWdProperty(property, flags)
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
table.insert(callArgs, "reference") -- request an auto-built citation alongside the value
table.insert(callArgs, "best") -- single best-ranked value, mirroring the old template's behaviour
table.insert(callArgs, property)
local ok, result = pcall(Wd._property, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
-- Fetch a qualifier (qualProp) attached to the statement of `property` whose
-- target value is `targetQid`, via Module:Wd's "qualifier" command — e.g.
-- the P580 (start time) qualifier on the P463 ("member of") statement that
-- points at the European Union (Q458). Also requests "reference" so a
-- citation on that statement is attached, same as getWdProperty.
local function getWdQualifier(property, targetQid, qualProp, flags)
if not wdOK or not Wd or not Wd._qualifier then return nil end
local callArgs = {}
for _, f in ipairs(flags or {}) do table.insert(callArgs, f) end
table.insert(callArgs, "reference")
table.insert(callArgs, "best")
table.insert(callArgs, property)
table.insert(callArgs, targetQid)
table.insert(callArgs, qualProp)
local ok, result = pcall(Wd._qualifier, callArgs)
if ok and result and result ~= "" then return result end
return nil
end
-- Label of the Wikidata PROPERTY itself (e.g. P35 -> "head of state"), used
-- as a Wikidata-sourced fallback for a leader's title when no manual
-- title/override is supplied. Core mw.wikibase call — Wd's own p._label
-- would work too (it accepts a bare P-id), but this needs no dependency.
local function getWikidataPropertyLabel(property)
local ok, label = pcall(mw.wikibase.label, property)
if ok and label and label ~= "" then return label end
return nil
end
local ROW = '<tr><th style="vertical-align:top; white-space:nowrap; text-align:left; font-weight:bold;">%s</th><td style="vertical-align:top;">%s</td></tr>'
local INDENTROW = '<tr><td style="width:1em; padding:0 0 0 0.6em;"> - </td><td style="padding-left:0em;">%s</td><td style="vertical-align:top;">%s</td></tr>'
local HEADER = '<tr class="mergedtoprow"><th colspan="2">%s</th></tr>'
function p.main(frame, args)
-- Fallback verification to catch argument slots accurately if frame context shifts
if not args then
args = frame
frame = mw.getCurrentFrame()
end
local rows = {}
----------------------------------------------------------------
-- 1. GOVERNMENT TYPE (Reiltys)
----------------------------------------------------------------
local govTypeRaw = getManual(args, {"sorçh_reiltys", "government_type"})
local govRef = getManual(args, {"imraa_reiltys"})
local govNote = getManual(args, {"noteyn_reiltys"})
local govShown = false
if govTypeRaw and not isNone(govTypeRaw) then
table.insert(rows, string.format(ROW, "[[Reiltys]]", applyRefNote(govTypeRaw, govRef, govNote, frame)))
govShown = true
end
----------------------------------------------------------------
-- 2. FIR HOSHEE / TOSHEE (Leaders: head of state / head of
-- government / etc.)
-- `enmysN_fer-toshee` / `ennymN_fer-toshee` are the old, gendered
-- param names, kept for backward compatibility with existing
-- articles. `enmys_toshiaghN` / `ennym_toshiaghN` are the
-- gender-neutral synonyms going forward ("toshiagh" = leader);
-- either spelling works, and the new one takes priority when both
-- are supplied for the same slot.
----------------------------------------------------------------
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 via Module:Wd: head of state (P35) / head of
-- government (P6), linked to their sitelink where one exists.
-- Titles try, in order: a manual override, the Wikidata property's
-- own label (so the title updates automatically if Wikidata's
-- label changes), then a hardcoded Manx fallback.
local hos = getWdProperty("P35", {"linked"})
local hog = getWdProperty("P6", {"linked"})
if hos then
local hosTitle = getManual(args, {"sorçh_kione_stayt"}) or getWikidataPropertyLabel("P35") or "Kione steat"
table.insert(leaderPairs, {title = hosTitle, name = hos})
end
if hog then
local hogTitle = getManual(args, {"sorçh_kione_reiltys"}) or getWikidataPropertyLabel("P6") or "Kione reiltys"
table.insert(leaderPairs, {title = hogTitle, name = hog})
end
end
if #leaderPairs > 0 then
if not govShown then
table.insert(rows, string.format(HEADER, "[[Reiltys]]"))
end
for idx, leader in ipairs(leaderPairs) do
local name = leader.name
if idx == #leaderPairs then
-- The shared manual ref/note for the whole leaders block is
-- attached to the last row, same convention as a single
-- footnote covering a list. (A Wikidata-sourced name already
-- carries its own auto-built citation from getWdProperty.)
name = applyRefNote(name, leaderRef, leaderNote, frame)
end
table.insert(rows, string.format(INDENTROW, leader.title, name))
end
end
----------------------------------------------------------------
-- 3. QUAIYL / ÇHIONNAL (Legislature)
-- `çhionnal` is a synonym for `quaiyl`; `thie_heose` / `thie_heese`
-- are synonyms for `quaiyl_syrjey` / `quaiyl_s'inshley` (upper /
-- lower house). New spellings take priority when both are given.
----------------------------------------------------------------
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"})
if not quaiyl and not quaiylSyrjey and not quaiylInshley then
quaiyl = getWdProperty("P194", {"linked"})
end
if quaiyl and not isNone(quaiyl) then
table.insert(rows, string.format(ROW, "[[Çhionnal slattyssagh]]", applyRefNote(quaiyl, quaiylRef, quaiylNote, frame)))
if quaiylSyrjey and not isNone(quaiylSyrjey) then
table.insert(rows, string.format(INDENTROW, "[[Thie heose]]", quaiylSyrjey))
end
if quaiylInshley and not isNone(quaiylInshley) then
table.insert(rows, string.format(INDENTROW, "[[Thie heese]]", quaiylInshley))
end
end
----------------------------------------------------------------
-- 4. BUNNEEAGHT / KIONDEEAGHT (Founding / constitution) and
-- historical establishment events — manual-only, ported
-- directly from the old template's numbered slots (1-9).
-- `kionedeeaght` is a synonym for `kiondeeaght` in the label/note
-- param names.
----------------------------------------------------------------
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
local event = getManual(args, {"taghyrt" .. i .. "_bunnit"})
local date = getManual(args, {"date" .. i .. "_bunnit"})
if event then
table.insert(establishmentRows, {event = event, date = date or ""})
end
end
if foundingValue or #establishmentRows > 0 then
if foundingValue and not isNone(foundingValue) then
table.insert(rows, string.format(ROW, "[[" .. foundingLabel .. "]]", applyRefNote(foundingValue, foundingRef, foundingNote, frame)))
elseif #establishmentRows > 0 then
table.insert(rows, string.format(HEADER, "[[" .. foundingLabel .. "]]"))
end
for _, ev in ipairs(establishmentRows) do
table.insert(rows, string.format(INDENTROW, ev.event, ev.date))
end
elseif not isNone(getManual(args, {"bunnit"})) then
-- Wikidata fallback via Module:Wd: inception (P571) — only when the
-- whole establishment block was left unset (not explicitly |bunnit=none)
local inception = getWdProperty("P571")
if inception then
table.insert(rows, string.format(ROW, "[[" .. foundingLabel .. "]]", applyRefNote(inception, foundingRef, foundingNote, frame)))
end
end
----------------------------------------------------------------
-- 5. ENTREILYS GYS YN UNNANEYS OARPAGH (EU accession)
----------------------------------------------------------------
local euDateManual = getManual(args, {"dateEUentreilys"})
local euRef = getManual(args, {"imraa_EUentreilys"})
local euNote = getManual(args, {"noteyn_EUentreilys"})
local euDate = euDateManual
if not euDate then
-- Q458 = European Union; via Module:Wd's "qualifier" command on the
-- P580 (start time) qualifier of the matching P463 (member of) statement
euDate = getWdQualifier("P463", "Q458", "P580")
end
if euDate and not isNone(euDate) then
table.insert(rows, string.format(ROW, "Entreilys gys yn [[Yn Unnaneys Oarpagh|UO]]", applyRefNote(euDate, euRef, euNote, frame)))
end
if #rows == 0 then return nil end
return table.concat(rows)
end
return p
26fj23i147azw5fj4kum36eyc5sgbkq