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]]:&nbsp;'''" .. 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 .. ":&nbsp;'''" .. 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]]:&nbsp;'''" .. 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 .. ":&nbsp;'''" .. 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]]:&nbsp;'''" .. 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 .. ":&nbsp;'''" .. 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]]:&nbsp;'''" .. 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 .. ":&nbsp;'''" .. 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]]:&nbsp;'''" .. 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 .. ":&nbsp;'''" .. 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]]:&nbsp;'''" .. 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 .. ":&nbsp;'''" .. 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, '&nbsp;· ') .. '</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&nbsp;ardjynagh er&nbsp;enney" or "Çhengey&nbsp;ardjynagh er&nbsp;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, '&nbsp;· ') .. '</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&nbsp;ardjynagh er&nbsp;enney" or "Çhengey&nbsp;ardjynagh er&nbsp;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, '&nbsp;· ') .. '</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&nbsp;ardjynagh er&nbsp;enney" or "Çhengey&nbsp;ardjynagh er&nbsp;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;">&nbsp;-&nbsp;</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&nbsp;gys&nbsp;yn&nbsp;[[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;">&nbsp;-&nbsp;</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&nbsp;gys&nbsp;yn&nbsp;[[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