Vicipéid gawiki https://ga.wikipedia.org/wiki/Pr%C3%ADomhleathanach MediaWiki 1.47.0-wmf.22 first-letter Meán Speisialta Plé Úsáideoir Plé úsáideora Vicipéid Plé Vicipéide Íomhá Plé íomhá MediaWiki Plé MediaWiki Teimpléad Plé teimpléid Cabhair Plé cabhrach Catagóir Plé catagóire TimedText TimedText talk Module Module talk Event Event talk Vicipéid:Halla baile 4 2217 1329043 1328297 2026-10-01T22:34:57Z TGcoa 21229 /* Earráidí Lua sna boscaí sonraí (mw.lua:656): an chúis agus an réiteach */ mír nua 1329043 wikitext text/x-wiki __NEWSECTIONLINK__ {{aicearra|VP:HB|VP:BAILE|VP:HOME}} {{Cartlainne}} Is áit é an '''halla baile''' chun na Vicipéide a phlé is ceisteanna a chur. Is áit é chun fadhbanna teicniúla, polasaithe agus oibrithe na Vicipéide a phlé. Is féidir leat nithe eile a bhaineann leis an Vicipéid a lua anseo freisin. == Ar Oscailt Anois: Ainmniúcháin do Ghradaim Vicipéideoirí na Bliana sa Ríocht Aontaithe 2025 == Tá ár gcomhgleacaithe sna RA ag iarradh ainmniúcháin do Ghradaim Vicípéideoirí na Bliana sa Ríocht Aontaithe 2025. Tá a bhfógra thíos, aistrithe ón [https://wikimedia.org.uk/2025/10/wikimedian-of-the-year-awards-call-for-nominations/ leagan Béarla]: Táimid ag lorg daoine aonair agus eagraíochtaí a ainmniú a bhí páirteach in iarrachtaí WMUK chun eolas oscailte a chur chun cinn i 2024/25. Is iad seo a leanas na catagóirí i mbliana: * Vicípéideoirí na Bliana sa Ríocht Aontaithe (Duine Aonair) * Comhpháirtíocht na Bliana (Eagraíocht) * Vicípéideoirí atá ag Teacht Chun Cinn (Duine Aonair) Cuireann WMUK fáilte roimh dhaoine agus comhpháirtíochtaí laistigh de phobal WMUK a ainmneofar do Ghradam chuir iontas mór orthu lena gcuid oibre eolais oscailte, i 2024/25. Táimid go háirithe ag tnúth le cloisteáil faoi dhaoine agus eagraíochtaí a sheachaid tionscadail a dhírigh ar ár dtéamaí straitéiseacha; Cothromas Eolais, Litearthacht Faisnéise, agus Aeráid agus Comhshaol. Déanfaidh baill den Choiste Forbartha Pobail breithiúnas ar na hainmniúcháin agus fógrófar na buaiteoirí ag an gCeiliúradh Pobail Dé Sathairn an 15 Samhain 2025 (Sábháil an dáta, ba bhreá linn sibh a fheiceáil ann!). Is féidir leat dhá ainmniúchán a chur isteach in aghaidh na catagóire. Úsáid an [https://docs.google.com/forms/d/e/1FAIpQLScVy7AmH0qRRZmQ-QHtYKKCBZY0O40JZN9MWl8Xu7-oqK1-fg/viewform Fhoirm Google seo] chun d’ainmniúcháin a chur isteach. Dúnann na hainmniúcháin ar an 22 Deireadh Fómhair. Léigh faoi bhuaiteoirí na bliana seo caite [https://wikimedia.org.uk/2024/12/2024-uk-wikimedian-year-awards/ anseo]. [[Úsáideoir:OifigeachWMIE|OifigeachWMIE]] ([[Plé úsáideora:OifigeachWMIE|plé]]) 14:57, 9 Deireadh Fómhair 2025 (UTC) == Tá Pobal Éireann Wikimedia ag earcú! == Haigh a chairde, Dá mbeadh tú ag an gcruinniú pobail deireanach ta a fhios agat go bhfuil roinnt athruithe ar an bhfoireann againn ag Pobal Éireann Wikimedia agus anois táimid ag lorg Oifigeach Gaeilge! Is deis uathúil í seo chun tacú leis an nGaeilge sa spás digiteach Tuilleadh eolais agus sonraí iarratais: [https://wikimedia.ie/2025/10/17/oifigeach-gaeilge-irish-language-officer/?fbclid=IwY2xjawNfFdpleHRuA2FlbQIxMABicmlkETF1UkdHSWZIYnZHbVlTTXdiAR5q3n0VBwzwxYNE15qXVGjFOxrbkvItEYtt4OIXUgC01_4Q3r4I25f3T9Gwag_aem_ibWovoCfNe8BH6QCTZL81Q https://wikimedia.ie/2025/10/17/oifigeach-gaeilge-irish-language-officer/] Cuir isteach d’iarratas chuig info@wikimedia.ie leis an líne ábhair “Iarratas - Oifigeach Gaeilge”, le do thoil. [[Úsáideoir:OifigeachWMIE|OifigeachWMIE]] ([[Plé úsáideora:OifigeachWMIE|plé]]) 12:45, 17 Deireadh Fómhair 2025 (UTC) :Dea-nuacht é sin! Ná déantar dearmad an folúntas a chlárú le [https://peig.ie/foluntais/ peig.ie] (agus le h[https://udaras.ie/oiliuint-fostaiocht/fostaiocht/ udaras.ie] más féidir) [[Úsáideoir:Taghdtaighde|Taghdtaighde]] ([[Plé úsáideora:Taghdtaighde|plé]]) 17:16, 18 Deireadh Fómhair 2025 (UTC) ::Cinnte! Tá orm é a dhéanamh inniu :) Táim ag tnúth leis, beidh beirt againn fostaithe le Gaeilge ar an bhfoireann go luath [[Speisialta:Contributions/&#126;2025-29132-17|&#126;2025-29132-17]] ([[Plé úsáideora:&#126;2025-29132-17|talk]]) 12:02, 20 Deireadh Fómhair 2025 (UTC) :::Nach breá an chuma atá ar an bh[https://sceal.ie/Fol%C3%BAntas/oifigeach-gaeilge-le-pobal-eireann-wikimedia-wikimedia-community-ireland-on-mbaile/ fógra] ar shuíomh nua Scéal.ie. Ádh mór oraibh sa chuardach! :::Dála an scéil, an ndeachaigh sibh i dteagmháil leis na meáin faoin bhfolúntas freisin? Foilsíodh scéalta faoin Vicipéid cheana ar [[Tuairisc.ie]] agus ní chuirfeadh sé lá iontais orm dá mbeadh suim ag meáin eile sa scéal seo freisin amhail ''[[Nós (iris)|NÓS]]'', ''[[An Páipéar (nuachtán)|An Páipéar]]'', ''[[Seachtain (nuachtán)|Seachtain]]'', ''[[Scéal (nuachtán)|Scéal]]'', ''[[Meon Eile]]'' srl. Má bhíonn an t-am agaibh, níor mhiste freisin dul i dteagmháil le grúpaí pobail mar [[AerachAiteachGaelach|AAG]], [[Bánú (grúpa feachtais)|Bánú]], an [[Dream dearg|Dream Dearg]], na comharchumainn Gaeltachta, agus cumainn Gaelacha na n-ollscoileanna b'fhéidir [[Úsáideoir:Taghdtaighde|Taghdtaighde]] ([[Plé úsáideora:Taghdtaighde|plé]]) 19:14, 4 Samhain 2025 (UTC) ::::Haigh [[Úsáideoir:Taghdtaighde|Taghdtaighde]] - bhíos i dteaghmháil leo! Bhíos ag an Oireachtas an tseachtain seo chaite le h[[Úsáideoir:Ériugena|Ériugena]] agus bhí seastán againn - an-chuid suim sa ról! Rinneas agallamh ann le Raidió na Life faoinár gcuid oibre le Vicipéid agus maidir leis an bpost chomh maith. Dúirt an Páipéar go bhfuil siad sásta fógra a chur i gcló freisin, agus dúirt Tuairisc go bhfuil siad sásta rud a scríobh chomh maith! ::::Sheolas an fógra chuig AAG (táim i mo bhall leo freisin agus ar an gcoiste) agus chuig CnaG, Foras na Gaeilge, RíRá, Raidió na Life, etc. Tá níos mó ná 25 iontrál faighte anois! [[Úsáideoir:OifigeachWMIE|OifigeachWMIE]] ([[Plé úsáideora:OifigeachWMIE|plé]]) 10:26, 7 Samhain 2025 (UTC) == <span lang="en" dir="ltr">Help us decide the name of the new Abstract Wikipedia project</span> == <div lang="en" dir="ltr"> <section begin="function1"/> {{int:Hello}}. Please help pick a name for the new Abstract Wikipedia wiki project. This project will be a wiki that will enable users to combine functions from [[:f:|Wikifunctions]] and data from Wikidata in order to generate natural language sentences in any supported languages. These sentences can then be used by any Wikipedia (or elsewhere). There will be two rounds of voting, each followed by legal review of candidates, with votes beginning on 20 October and 17 November 2025. Our goal is to have a final project name selected on mid-December 2025. If you would like to participate, then '''[[m:Special:MyLanguage/Abstract Wikipedia/Abstract Wikipedia naming contest|please learn more and vote now]]''' at meta-wiki. {{Int:Feedback-thanks-title}} <section end="function1"/> </div> -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 11:42, 20 Deireadh Fómhair 2025 (UTC) <!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29432175 --> == <span lang="en" dir="ltr">Seeking volunteers to join several of the movement’s committees</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> Each year, typically from October through December, several of the movement’s committees seek new volunteers. Read more about the committees on their Meta-wiki pages: * [[m:Special:MyLanguage/Affiliations Committee|Affiliations Committee (AffCom)]] * [[m:Special:MyLanguage/Ombuds commission|Ombuds commission (OC)]] * [[m:Special:MyLanguage/Wikimedia Foundation/Legal/Community Resilience and Sustainability/Trust and Safety/Case Review Committee|Case Review Committee (CRC)]] Applications for the committees open on October 30, 2025. Applications for the Affiliations Committee, Ombuds commission and the Case Review Committee close on December 11, 2025. Learn how to apply by [[m:Special:MyLanguage/Wikimedia Foundation/Legal/Committee appointments|visiting the appointment page on Meta-wiki]]. Post to the talk page or email cst[[File:At sign.svg|16x16px|link=|(_AT_)]]wikimedia.org with any questions you may have. For the Committee Support team, <section end="announcement-content" /> </div> -[[m:User:MKaur (WMF)| MKaur (WMF)]] 14:12, 30 Deireadh Fómhair 2025 (UTC) <!-- Message sent by User:MKaur (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29517125 --> :I (Éamonn Ó Gribín) would like to volunteer to join several of the movement’s Affiliations Committee (AffCom)![[Úsáideoir:Ériugena|Ériugena]] ([[Plé úsáideora:Ériugena|plé]]) 13:36, 7 Samhain 2025 (UTC) ::Éamonn, a char, ta ort an teimpléad a líonadh - ta na sonraí ar fáil anseo: https://meta.wikimedia.org/wiki/Wikimedia_Foundation/Legal/Committee_appointments [[Úsáideoir:OifigeachWMIE|OifigeachWMIE]] ([[Plé úsáideora:OifigeachWMIE|plé]]) 16:32, 18 Samhain 2025 (UTC) == <span lang="en" dir="ltr">Reminder: Help us decide the name of the new Abstract Wikipedia project</span> == <div lang="en" dir="ltr"> <section begin="function2"/> {{int:Hello}}. Reminder: Please help to choose name for the new Abstract Wikipedia wiki project. The finalist vote starts today. The finalists for the name are: <span lang="en" dir="ltr" class="mw-content-ltr">Abstract Wikipedia, Multilingual Wikipedia, Wikiabstracts, Wikigenerator, Proto-Wiki</span>. If you would like to participate, then '''[[m:Special:MyLanguage/Abstract Wikipedia/Abstract Wikipedia naming contest|please learn more and vote now]]''' at meta-wiki. {{Int:Feedback-thanks-title}} <section end="function2"/> </div> -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:22, 20 Samhain 2025 (UTC) <!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29583860 --> == Vicí Eolaíochta 2025 & Ár gCéad Cruinniú Eile (Pobal Éireann Wikimedia) == '''📸 Wiki Science | Vicí Eolaíochta 2025 - Meabhrúchán!''' Níl ach 10 lá fágtha chun d'íomhánna eolaíochta a chur isteach ar chomórtas grianghrafadóireachta WikiScience 2025! '''📅 Spriocdháta:''' 30 Samhain Tá fáilte roimh gach ábhar eolaíochta - ón réalteolaíocht go micreascóip, ó dhúlra na hÉireann go micribhitheolaíocht. [[commons:Commons:Wiki_Science_2025_in_Ireland|Faigh tuilleadh eolais anseo!]] - '''💬 Cruinniú Pobail - Dé Máirt 25 Samhain @ 6:00 i.n.''' Mar is gnáth, beidh ár gcruinniú míosúil pobail ar siúl ar líne Dé Máirt seo chugainn - an Mháirt dheireanach den mhí. Bígí linn chun plé a dhéanamh ar: * Pleananna ag teacht Athbhliain * Nuacht ón bpobal '''Chomh maith, bí cinnte go bhfuil tú cláraithe [[mail:wikimediaie|ar an liosta seoltaí!]]''' [[Úsáideoir:OifigeachWMIE|OifigeachWMIE]] ([[Plé úsáideora:OifigeachWMIE|plé]]) 10:45, 21 Samhain 2025 (UTC) == Athbhliain faoi mhaise daoibh + Lá Breithe Sona do Wikipedia == A chairde, Bhí tús an-ghnóthach againn do 2026 anseo ag Pobal Éireann Wikimedia, le hathruithe foirne agus go leor pleanála idir lámha. Bhogas go post nua mar Bhainisteoir Pobail agus cuirimid fáilte roimh ár nOifigeach Gaeilge nua, Lára. [[Plé úsáideora:Lára Nuinseann|Cuirigí fáilte roimh Lára ar a leathanach phlé anseo.]] Táimid ag tnúth go mór leis an obair atá amach romhainn chun tacú leis an bPobal Vicipéide. Táimid gnóthach freisin ag ullmhú d'fheachtais spreagúla sna seachtainí amach romhainn, lena n-áirítear Is Breá le Vici Béaloideas (Wiki Loves Folklore) (Feabhra–Márta) agus Seachtain na Gaeilge (1–17 Márta). Beidh tuilleadh nuashonruithe againn go luath, agus '''''ná déanaigí dearmad ar ár gcruinniú pobail ag deireadh na míosa ar an Máirt 27 Eanáir @ 18:00 ar líne.''''' '''<u>Lá Breithe: Wikipedia @ 25</u>''' Beidh Vicipéid 25 bliain d'aois an Déardaoin seo (amárach), 15 Eanáir. Tá ceiliúradh fíorúil saor in aisce á reáchtáil ag an bhFondúireacht Wikimedia chun an sprioc thábhactach a cheiliúradh, atá bainte amach ag oibrithe deonacha. 📅 '''Cathain:''' Déardaoin 15 Eanáir 2026 🌍 '''Cá háit:''' Ar líne (saor in aisce) 🔗 '''Cláraigh:''' https://meta.wikimedia.org/wiki/Event:Wikipedia_25_Virtual_Celebration Go raibh maith agaibh as a bheith mar chuid den phobal seo. Le gach dea-ghuí, Amy [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 17:26, 14 Eanáir 2026 (UTC) == Thank You for Last Year – Join Wiki Loves Ramadan 2026 == Dear Wikimedia communities, We hope you are doing well, and we wish you a happy New Year. ''Last year, we captured light. This year, we’ll capture legacy.'' In 2025, communities around the world shared the glow of Ramadan nights and the warmth of collective iftars. In 2026, ''Wiki Loves Ramadan'' is expanding, bringing more stories, more cultures, and deeper global connections across Wikimedia projects. We invite you to explore the ''Wiki Loves Ramadan 2026'' [[m:Special:MyLanguage/Wiki Loves Ramadan 2026|Meta page]] to learn how you can participate and [[m:Special:MyLanguage/Wiki Loves Ramadan 2026/Participating communities|sign up]] your community. 📷 ''Photo campaign on '' [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan 2026|Wikimedia Commons]] If you have questions about the project, please refer to the FAQs: * [[m:Special:MyLanguage/Wiki Loves Ramadan/FAQ/|Meta-Wiki]] * [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan/FAQ|Wikimedia Commons]] ''Early registration for updates is now open via the '''[[m:Special:RegisterForEvent/2710|Event page]]''''' ''Stay connected and receive updates:'' * [https://t.me/WikiLovesRamadan Telegram channel] * [https://lists.wikimedia.org/postorius/lists/wikilovesramadan.lists.wikimedia.org/ Mailing list] We look forward to collaborating with you and your community. '''The Wiki Loves Ramadan 2026 Organizing Team''' 19:45, 16 Eanáir 2026 (UTC) <!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29879549 --> == Feminism and Folklore 2026 starts soon == <div style="border:8px maroon ridge;padding:6px;"> [[File:Feminism and Folklore 2026 logo.svg|centre|550px|frameless]] ::<div lang="en" dir="ltr" class="mw-content-ltr"> <div style="text-align: center; width: 100%;">''{{int:please-translate}}''</div> ;Invitation to Organize Feminism and Folklore 2026 Dear Wiki Community, We are pleased to invite Wikimedia communities, affiliates, and independent contributors to organize the '''[[:m:Feminism and Folklore 2026|Feminism and Folklore 2026]]''' writing competition on your local Wikipedia. The international campaign will run from '''1 February to 31 March 2026''' and aims to improve coverage of feminism, women’s histories, gender-related topics, and folk culture across Wikipedia projects. ;About the Campaign '''Feminism and Folklore''' is a global writing initiative that complements the '''[[:c:Commons:Wiki Loves Folklore 2026|Wiki Loves Folklore]]''' photography competition. While Wiki Loves Folklore focuses on visual documentation, this writing campaign addresses the '''gender gap on Wikipedia''' by improving encyclopedic content related to folk culture and marginalized voices. ;What Can Participants Write About? Communities can contribute by creating, expanding, or translating articles related to: * Folk festivals, rituals, and celebrations * Folk dances, music, and traditional performances * Women and queer figures in folklore * Women in mythology and oral traditions * Women warriors, witches, and witch-hunting narratives * Fairy tales, folk stories, and legends * Folk games, sports, and cultural practices Participants may work from curated article lists or generate new article suggestions using campaign tools. ;How to Sign Up as an Organizer Organizers are requested to complete the following steps to register their community: # Create a local project page on your wiki [[:m:Feminism and Folklore/Sample|(see sample)]] # Set up the campaign using the '''CampWiz''' tool # Prepare a local article list and clearly mention: #* Campaign timeline #* Local and international prizes # Request a site notice from local administrators [[:mr:Template:SN-FNF|(see sample)]] # Add your local project page and CampWiz link to the '''[[:m:Feminism and Folklore 2026/Project Page|Meta project page]]''' ;Campaign Tools The Wiki Loves Folklore Tech Team has introduced tools to support organizers and participants: * '''Article List Generator by Topic''' – Helps identify articles available on English Wikipedia but missing in your local language Wikipedia. The tool allows customized filters and provides downloadable article lists in CSV and wikitable formats. * '''CampWiz''' – Enables communities to manage writing campaigns effectively, including jury-based evaluation. This will be the third year CampWiz is officially used for Feminism and Folklore. Both tools are now available for use in the campaign. '''[https://tools.wikilovesfolklore.org/ Click here to access the tools]''' ;Learn More & Get Support For detailed information about rules, timelines, and prizes, please visit the '''[[:m:Feminism and Folklore 2026|Feminism and Folklore 2026 project page]]'''. If you have any questions or need assistance, feel free to reach out via: * '''[[:m:Talk:Feminism and Folklore 2026/Project Page|Meta talk page]]''' * Email us using details on the contact page. ;Join Us We look forward to your collaboration and coordination in making Feminism and Folklore 2026 a meaningful and impactful campaign for closing gender gaps and enriching folk culture content on Wikipedia. Thank you and best wishes, '''[[:m:Feminism and Folklore 2026|Feminism and Folklore 2026 International Team]]''' ---- ''Stay connected:'' [[File:B&W Facebook icon.png|link=https://www.facebook.com/feminismandfolklore/|30x30px]]&nbsp; [[File:B&W Twitter icon.png|link=https://twitter.com/wikifolklore|30x30px]] </div></div> == Invitation to Host Wiki Loves Folklore 2026 in Your Country == <div lang="en" dir="ltr" class="mw-content-ltr"> <div style="text-align: center; width: 100%;">''{{int:please-translate}}''</div> [[File:Wiki Loves Folklore Logo.svg|right|150px|frameless]] Hello everyone, We are delighted to invite Wikimedia affiliates, user groups, and community organizations worldwide to participate in '''Wiki Loves Folklore 2026''', an international initiative dedicated to documenting and celebrating folk culture across the globe. ;About Wiki Loves Folklore '''Wiki Loves Folklore''' is an annual international photography competition hosted on Wikimedia Commons. The campaign runs from '''1 February to 31 March 2026''' and encourages photographers, cultural enthusiasts, and community members to contribute photographs that highlight: * Folk traditions and rituals * Cultural festivals and celebrations * Traditional attire and crafts * Performing arts, music, and dance * Everyday practices rooted in folk heritage Through this campaign, we aim to preserve and promote diverse folk cultures and make them freely accessible to the world. [[:c:Commons:Wiki_Loves_Folklore_2026|Project page on Wikimedia Commons]] ; Host a Local Edition As we celebrate the '''eight edition''' of Wiki Loves Folklore, we warmly invite communities to organize a local edition in their country or region. Hosting a local campaign is a great opportunity to: * Increase visibility of your region’s folk culture * Engage new contributors in your community * Enrich Wikimedia Commons with high-quality cultural content '''[[:c:Commons:Wiki_Loves_Folklore_2026/Organize|Sign up to organize]]:''' If your team prefers to organize the competition in ''either February or March only'', please feel free to let us know. If you are unable to organize, we encourage you to share this opportunity with other interested groups or organizations in your region. ;Get in Touch If you have any questions, need support, or would like to explore collaboration opportunities, please feel free to contact us via: * The project Talk pages * Email: '''support@wikilovesfolklore.org''' We are also happy to connect via an online meeting if your team would like to discuss planning or coordination in more detail. Warm regards, '''The Wiki Loves Folklore International Team''' </div> [[Úsáideoir:MediaWiki message delivery|MediaWiki message delivery]] ([[Plé úsáideora:MediaWiki message delivery|plé]]) 13:21, 18 Eanáir 2026 (UTC) <!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery/Wikipedia&oldid=29228188 --> == <span lang="en" dir="ltr">Annual review of the Universal Code of Conduct and Enforcement Guidelines</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> I am writing to you to let you know the annual review period for the Universal Code of Conduct and Enforcement Guidelines is open now. You can make suggestions for changes through 9 February 2026. This is the first step of several to be taken for the annual review. [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2026|Read more information and find a conversation to join on the UCoC page on Meta]]. The [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Universal Code of Conduct Coordinating Committee]] (U4C) is a global group dedicated to providing an equitable and consistent implementation of the UCoC. This annual review was planned and implemented by the U4C. For more information and the responsibilities of the U4C, [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|you may review the U4C Charter]]. Please share this information with other members in your community wherever else might be appropriate. -- In cooperation with the U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]])<section end="announcement-content" /> </div> 21:01, 19 Eanáir 2026 (UTC) <!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29905753 --> == Meabhrúchán: Cruinniú Pobail - Dé Máirt 27 Eanáir == '''A chairde,''' '''Meabhrúchán gasta go mbeidh ár gcéad chruinniú pobail don bhliain ar siúl Dé Máirt seo chugainn, an 27 Eanáir ag 18:00 UTC.''' '''Nasc Google Meet:''' https://meet.google.com/mnw-pubq-xyc Beidh fáilte roimh chách, idir eagarthóirí nua agus eagarthóirí le taithí. Is deis iontach é seo chun bualadh le baill eile an phobail, ceisteanna a chur, agus páirt a ghlacadh i bpleanáil na bliana amach romhainn. Má tá ábhar ar bith ba mhaith leat a phlé, cuir in iúl dom roimh ré! Táimid ag súil go mór le sibh a fheiceáil ann! Le meas, Amy (Bainisteoir Pobail, Pobal Éireann Wikimedia) [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 11:47, 20 Eanáir 2026 (UTC) == <span lang="en" dir="ltr">Migration to Parsoid</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> <em>[[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Parsoid Read Views/Read View Announcement|Read this in another language]]</em> Hello everyone! I am glad to inform you that as the next step in the [[mw:Special:MyLanguage/Parsoid/Parser Unification|Parser Unification]] project, Parsoid will soon be turned on as the default article renderer on your wiki. We are gradually increasing the number of wikis using Parsoid, with the intention of making it the default wikitext parser for MediaWiki's next long-term support release. This will make our wikis more reliable and consistent for editors, readers, and tools to use, as well as making the development of future wikitext features easier. If this disrupts your workflow, don’t worry! You can still opt out through a user preference or turn Parsoid off on the current page using the Tools submenu, as described in the [[mw:Special:MyLanguage/Help:Extension:ParserMigration|Extension:ParserMigration]] documentation. There is [[mw:Special:MyLanguage/Parsoid/Parser Unification/Confidence Framework|more information about our roll-out strategy]] available, including the testing done before we turn on Parsoid for a new wiki. To report bugs and issues, please look at our [[mw:Special:MyLanguage/Parsoid/Parser Unification/Known Issues|known issues]] documentation and if you found a new bug please create a phab ticket and tag the [[phab:project/view/5846|Content Transform Team in Phabricator]]. <section end="announcement-content" /> </div> <bdi lang="en" dir="ltr">[[mw:User:ABreault (WMF)|Content Transform Team]]</bdi> 21:59, 23 Eanáir 2026 (UTC) <!-- Message sent by User:ABreault (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Wikimedia_Foundation/Product_and_Technology/Parsoid_Read_Views/2026-01-26_Wikipedias&oldid=29972868 --> == IMPORTANT: Admin activity review == Hello. A policy regarding the removal of "advanced rights" (administrator, bureaucrat, interface administrator, etc.) was adopted by [[:m:Requests for comment/Activity levels of advanced administrative rights holders|global community consensus]] in 2013. According to this policy, the [[:m:stewards|stewards]] are reviewing administrators' activity on all Wikimedia Foundation wikis with no inactivity policy. To the best of our knowledge, your wiki does not have a formal process for removing "advanced rights" from inactive accounts. This means that the stewards will take care of this according to the [[:m:Admin activity review|admin activity review]]. We have determined that the following users meet the inactivity criteria (no edits and no logged actions for more than 2 years): # [[User:Evertype]] (administrator) These users will receive a notification soon, asking them to start a community discussion if they want to retain some or all of their rights. If the users do not respond, then their advanced rights will be removed by the stewards. However, if you as a community would like to create your own activity review process superseding the global one, want to make another decision about these inactive rights holders, or already have a policy that we missed, then please notify the [[:m:Stewards' noticeboard|stewards on Meta-Wiki]] so that we know not to proceed with the rights review on your wiki. Thanks, [[Úsáideoir:EPIC|EPIC]] ([[Plé úsáideora:EPIC|plé]]) 17:39, 14 Feabhra 2026 (UTC) == Meabhrúchán: Cruinniú Pobail - Dé Máirt 24 Feabhra == A chairde, Meabhrúchán gasta go mbeidh ár gcéad chruinniú pobail eile ar siúl ar líne '''Dé Máirt seo chugainn, an 24 Feabhra ag 18:00 UTC'''. Nasc Google Meet: https://meet.google.com/mnw-pubq-xyc Beidh fáilte roimh chách, idir eagarthóirí nua agus eagarthóirí le taithí. Is deis iontach é seo chun bualadh le baill eile an phobail, ceisteanna a chur, agus páirt a ghlacadh i bpleanáil na bliana amach romhainn. Tá nuacht againn maidir le himeachtaí Sheachtain na Gaeilge agus nuasonraithe. Má tá ábhar ar bith ba mhaith leat a phlé, cuir in iúl dom roimh ré. Táimid ag súil go mór le sibh a fheiceáil ann! Le meas, Amy Bainisteoir Pobail, Pobal Éireann Wikimedia [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 08:45, 19 Feabhra 2026 (UTC) == Meabhrúchán: Cruinniú Pobail - Dé Máirt 24 Feabhra == A chairde, Meabhrúchán gasta go mbeidh ár gcéad chruinniú pobail eile ar siúl '''Dé Máirt seo chugainn, an 24 Feabhra ag 18:00 UTC'''. Nasc Google Meet: https://meet.google.com/mnw-pubq-xyc Beidh fáilte roimh chách, idir eagarthóirí nua agus eagarthóirí le taithí. Is deis iontach é seo chun bualadh le baill eile an phobail, ceisteanna a chur, agus páirt a ghlacadh i bpleanáil na bliana amach romhainn. Tá nuacht againn maidir le himeachtaí Sheachtain na Gaeilge agus nuasonraithe eile. Má tá ábhar ar bith ba mhaith leat a phlé, cuir in iúl dom roimh ré. Táimid ag súil go mór le sibh a fheiceáil ann! Le meas, Amy Bainisteoir Pobail, Pobal Éireann Wikimedia [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 18:54, 19 Feabhra 2026 (UTC) :Amy, a chara, :Cathain a bheidh ár gcéad chruinniú pobail eile ar siúl?̴̴ [[Úsáideoir:Ériugena|Ériugena]] ([[Plé úsáideora:Ériugena|plé]]) 14:26, 22 Márta 2026 (UTC) == Céiliúradh na mBan 2026 — Togra Nua! == A chairde, Mar chuid de [[metawiki:Wikimedia_Community_Ireland/Seachtain_na_Gaeilge#Campaigns|Seachtain na Gaeilge 2026 ag Pobal Éireann Wikimedia]] agus Mí Staire na mBan, tá tionscadal nua á sheoladh againn: <nowiki>''' [[Vicipéid:Céiliúradh_na_mBan_2026|Céiliúradh na mBan 2026]]''' </nowiki> Is é an sprioc atá againn ná ailt a chruthú agus a fheabhsú faoi mhná Éireannacha, go háirithe mná atá ag cur na Gaeilge chun cinn ar líne agus sna meáin. Tá deais eagraithe agamsa, agus liosta ann de: <nowiki>*</nowiki> 'Mná Dearga' mná nach bhfuil ailt acu fós <nowiki>*</nowiki> 'Ailt le Feabhsú' ailt atá ann cheana ach a dteastaíonn obair uathu Is féidir libh bhur n-ainm a chur in aice le duine ar mhaith libh obair uirthi 👉 [[Vicipéid:Céiliúradh na mBan 2026]] Beidh [https://www.eventbrite.ie/e/bi-an-t-eolas-ceardlann-vicipeide-wikipedia-workshop-tickets-1982968870271 ceardlann ar siúl againn i gCorcaigh ar an 7ú Márta freisin] - saor in aisce le lón san áireamh. Tuilleadh eolais ar an leathanach tionscadail. Ar scáth a chéile a thagann na mná! 💚 [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 09:57, 2 Márta 2026 (UTC) == Requesting help with translating templates == Hello,</br> I have only recently joined the Irish language version of Wikipedia, and there are many templates missing here that I regularly use on the English language version. I think these should also be accessible here. I've tried reading up on how to copy over templates to another language version, but I'm still not sure how to do it properly. The following templates are the most important to me for now: {{div col}} *[[:en:Template:Au]] *[[:en:Template:Speciesbox]] <!--*[[:en:Template:Cn]]--> *[[:en:Template:Automatic taxobox]] *[[:en:Template:Unreferenced section]] *[[:en:Template:Unreferenced]] *[[:en:Template:More citations needed]] *[[:en:Template:More footnotes needed]] *[[:en:Template:More citations needed section]] <!--*[[:en:Template:collapsible list]]--> *[[:en:Template:Multiple issues]] <!--*[[:en:Template:Multiple image]]--> *[[:en:Template:CSS image crop]] *[[:en:Template:Biota infobox]] {{div col end}} Can anyone here help me with this issue?</br> Greetings,</br>[[Úsáideoir:Conan Wolff|Conan Wolff]] ([[Plé úsáideora:Conan Wolff|plé]]) 21:37, 15 Márta 2026 (UTC) :Hi Conan. I'm pretty busy, but I'll try chip away at them in the coming days / weeks - [[Úsáideoir:Alison|<span style="color:#FF823D;font-family: comic sans ms">'''A<font color= "#FF7C0A">l<font color= "#FFB550">is</font>o</font>n'''</span>]] <sup>[[Plé_úsáideora:Alison|plé]]</sup> 21:48, 15 Márta 2026 (UTC) ::Hello @[[Úsáideoir:Alison|Alison]],</br> ::that would be great, thank you!</br> ::Greetings,</br>[[Úsáideoir:Conan Wolff|Conan Wolff]] ([[Plé úsáideora:Conan Wolff|plé]]) 21:53, 15 Márta 2026 (UTC) == Double spaces and punctuation/references; links == Hi, I don’t usually use Vicipéid but, in the sample of articles I have glanced through, I noticed a number of issues I believe can be easily addressed (assuming that bot edits are allowed here and that there is is an editor able to set one up). * There are so many strings of spaces after and before punctuation in articles e.g. "Ba í banríon na Réalta. Bhí cumhachtaí dochreidte aici . Dúradh gur bhean is cumhachtaí riamh í". ** Single spacing is definitely the norm nowadays and most of these strings of spaces are well over three characters long. I’d appreciate if someone would like to work on resolving this (if there is no one here who could facilitate this, I could try find someone on another wiki project who’d be willing to help). ** I think it should fairly straightforward for someone with bot knowledge to set one up so that it tidies all this up and would run continuously to maintain it. It would possibly involve automating a site wide search and replace of any string of space characters (starting with the longest) to a single character? * An extremely similar issue is citations. There seems to be a lot of inconsistency in the formatting of citations some are before the punctuation others are after and they are often buffered by random strings of spaces ** This gives articles a messy appearance and I think citations after punctuation is the norm so a bot could potentially address this too?, though I am not sure on how it would best be carried out. * Also, are there any standards for how mutations and inflection is handled in relation to links? e.g. I see a mix of n[[Dlí]]the and [[Dlí|nDlíthe]]. ** Templates from (en) Wiktionary could probably be adapted to avoid clutter in the wikieditor: *** e.g. for eclipsis (instead of <nowiki>[[link|xlink]]) {{u|link}} ></nowiki> [[link|xlink]], i.e. (instead of<nowiki> [[Contae Chiarraí|gContae Chiarraí]]) {{u|Condae Chiarraí}} </nowiki> > [[Contae Chiarraí|gContae Chiarraí]]. *** e.g. for lenition (instead of <nowiki>[[link|lxink]]) {{s|link}} ></nowiki> [[link|lxink]], i.e. (instead of<nowiki> [[Contae Chiarraí|Chontae Chiarraí]]) {{s|Condae Chiarraí}} </nowiki> > [[Contae Chiarraí|Chontae Chiarraí]]. ** I’m using <nowiki> {{u|FOO}}</nowiki> for '''U'''rú and <nowiki> {{s|FOO}}</nowiki> '''S'''éimhiú. Obviously this would only work for inflected forms that simply involve adding an ending to the base spelling but I think it could still be a useful thing. * Lastly the home page has several broken links or links to blank pages or pages that are very old and unhelpful for such a prominent position on the site, maybe someone could evaluate them? [[Úsáideoir:Saighneánach|Saighneánach]] ([[Plé úsáideora:Saighneánach|plé]]) 03:42, 17 Márta 2026 (UTC) :Hello @[[Úsáideoir:Saighneánach|Saighneánach]],</br> :I also noticed unnecessary spaces in articles, such as in the [[Special:Permalink/1189460|Rosaceae]] article. Given the small number of active editors on the Irish Wikipedia, I think it would be very handy to have a bot fix these smaller issues. However, I don't know how that would work technically.</br> :I think an Vicipéid would benefit greatly from expanding its technical possibilities and making more use of things like maintenance bots and further useful templates/ maintenance tags, as seen on the English Wikipedia. I believe this could make maintenance easier and improve the overall quality of the articles.</br> :Greetings, [[Úsáideoir:Conan Wolff|Conan Wolff]] ([[Plé úsáideora:Conan Wolff|plé]]) 10:51, 21 Márta 2026 (UTC) ::@[[Úsáideoir:Conan Wolff|Conan Wolff]] @[[Úsáideoir:Saighneánach|Saighneánach]] ::There are bots running on Vicipéid which are correcting some issues, but thank you for highlighting the above additional ones. ::We have a community meeting on 31st March (details in the next post below on the Halla Baile) and it would be great to have you there to dicsuss the above. ::@[[Úsáideoir:Saighneánach|Saighneánach]] could you please let us know which links are broken ro going to blank pages on the Príomhleathanach? ::Le dea-ghuí ::[[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 09:04, 24 Márta 2026 (UTC)Amy Uí Ríordáin :::Hello @[[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]],</br> :::thanks for the invitation to the community meeting. I think I will join in, but I hope it would be fine if I speak English, since my Irish is quite limited and slow.</br> :::Greetings,</br>[[Úsáideoir:Conan Wolff|Conan Wolff]] ([[Plé úsáideora:Conan Wolff|plé]]) 22:09, 25 Márta 2026 (UTC) ::::Haigh @[[Úsáideoir:Conan Wolff|Conan Wolff]] ::::The Community meetings with Wikimedia Community Ireland are done through English as the community is a mix of Irish speakers with varying levels and non Irish speakers ::::We talk about both the Vicipéid work and also wider Wikimedia work in English and Irish focused on Irish culture, history and heritage, as well as Open Knowledge in Ireland. ::::You can find our more on our [https://wikimedia.ie/ website] and also on [[metawiki:Wikimedia_Community_Ireland|our Meta Wiki Page]] (which has links to the previous meeting notes) ::::Tá fáilte romhat, you're very welcome! [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 09:53, 26 Márta 2026 (UTC) ::Bainisteoir Pobail ::[[metawiki:Wikimedia_Community_Ireland/ga|Pobal Éíreann Wikimedia]] [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 09:04, 24 Márta 2026 (UTC) == Meabhrúchán: Cruinniú Pobail - Dé Máirt, 31 Márta ag 18:00 UTC. == A chairde, Meabhrúchán gasta go mbeidh ár gcéad chruinniú pobail don bhliain ar siúl '''Dé Máirt seo chugainn, an 31 Márta ag 18:00 UTC'''. Nasc Google Meet: https://meet.google.com/mnw-pubq-xyc Beidh fáilte roimh chách, idir eagarthóirí nua agus eagarthóirí le taithí. Is deis iontach é seo chun bualadh le baill eile an phobail, ceisteanna a chur, agus páirt a ghlacadh i bpleanáil na bliana amach romhainn. Má tá ábhar ar bith ba mhaith leat a phlé, cuir in iúl dom roimh ré. Táimid ag súil go mór le sibh a fheiceáil ann! Le meas, Amy Bainisteoir Pobail, Pobal Éireann Wikimedia [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 18:51, 23 Márta 2026 (UTC) : Beidh mé ann! - [[Úsáideoir:Alison|<span style="color:#FF823D;font-family: comic sans ms">'''A<font color= "#FF7C0A">l<font color= "#FFB550">is</font>o</font>n'''</span>]] <sup>[[Plé_úsáideora:Alison|plé]]</sup> 09:09, 24 Márta 2026 (UTC) ::Yéééé - ag tnuth le tú a fheiceáil! [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 09:20, 24 Márta 2026 (UTC) :::D.V> beidh mé ann! ̃ [[Úsáideoir:Ériugena|Ériugena]] ([[Plé úsáideora:Ériugena|plé]]) 15:26, 24 Márta 2026 (UTC) ::::Iontach! [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 09:54, 26 Márta 2026 (UTC) == Deployment of Legal and Safety Contacts Link in the Footer of Your Wiki == [Please help translate this message into your language] Hello community, the Wikimedia Foundation has provided a [[foundation:Special:MyLanguage/Legal:Wikimedia_Foundation_Legal_and_Safety_Contact_Information|single legal and safety contact page]], to be linked in the footer of your wiki, to ensure access to accurate legal information. This is a regulatory requirement. We have already rolled out links to English, German, Italian, Spanish and other wikis and we will deploy to your wiki soon. [[metawiki:Special:MyLanguage/Wikimedia_Foundation_Legal_and_Safety_Contacts_FAQ|Please read more on the project page]] and leave any comments in this thread or on the [[metawiki:Talk:Wikimedia_Foundation_Legal_and_Safety_Contacts_FAQ|talk page]]. Additionally, I would like to translate this text: "'''Legal & safety contacts'''". The context is that I want to use it to [https://translatewiki.net/w/i.php?title=Special%3ATranslate&showMessage=wikimedia-legal-safety-contacts&group=ext-wikimediamessages&language=ga&filter=&optional=1&action=translate translate a string on translatewiki.net] to help localise a link which will appear in the footer of the Czech Wikipedia later. Your support will be appreciated. Thank you in advance. – [[Úsáideoir:STei (WMF)|STei (WMF)]] ([[Plé úsáideora:STei (WMF)|plé]]) 18:38, 26 Márta 2026 (UTC) :{{Déanta}} - [[Úsáideoir:Alison|<span style="color:#FF823D;font-family: comic sans ms">'''A<font color= "#FF7C0A">l<font color= "#FFB550">is</font>o</font>n'''</span>]] <sup>[[Plé_úsáideora:Alison|plé]]</sup> 16:16, 27 Márta 2026 (UTC) == Join the sixth Ukraine’s Cultural Diplomacy Month on Wikipedia! == <div lang="en" dir="ltr"> [[File:Ukraine’s Cultural Diplomacy Month on Wikipedia 2026.png|right|250px|thumb|link=https://meta.wikimedia.org/wiki/Ukraine%27s_Cultural_Diplomacy_Month_2026|Join our campaign!]] {{int:please-translate}} Dear Wikipedians! [[:m:Special:MyLanguage/Wikimedia Ukraine|Wikimedia Ukraine]], in cooperation with the [[:en:Ministry of Foreign Affairs of Ukraine|MFA of Ukraine]] and [[:en:Ukrainian Institute|Ukrainian Institute]], has launched the sixth edition of writing challenge "'''[[:m:Special:MyLanguage/Ukraine's Cultural Diplomacy Month 2026|Ukraine's Cultural Diplomacy Month]]'''", which lasts from '''1st April''' until '''30th April 2026'''. The initiative aims to promote knowledge about Ukrainian culture abroad by creating and improving Wikipedia articles in multiple languages. This year marks the sixth edition of the campaign, which will focus on contemporary culture, making today’s artistic voices and practices more visible to international audiences. 🧩'''How to participate?''' Choose an article from the suggested list → Write an article in your language, or improve an existing one according to the rules → Add your contribution to the contest page and calculate your points → Win prizes and receive a certificate of participation → Become a promoter of truthful knowledge about Ukraine. 🧩'''[[m:Special:MyLanguage/Ukraine's Cultural Diplomacy Month 2026|Check our main page for more information]]'''. '''If you are interested in coordinating long-term community engagement for the campaign and becoming a local ambassador, we would love to hear from you! Please let us know your interest.''' If not, then we encourage you to translate the [[m:Special:MyLanguage/Ukraine's Cultural Diplomacy Month 2026|landing page of the contest]] and [https://meta.wikimedia.org/wiki/Special:MessageGroupStats?group=Centralnotice-tgroup-UCDM2026banner&messages=&language=en&x=D banner] into your own language. Also, we set up a [[:m:CentralNotice/Request/Ukraine's Cultural Diplomacy Month 2026|banner]] to notify users of the possibility to participate in this challenge! [[:m:User:OlesiaLukaniuk (WMUA)|OlesiaLukaniuk (WMUA)]] ([[:m:User talk:OlesiaLukaniuk (WMUA)|talk]]) 04:35, 1 April 2026 (UTC) </div> <!-- Message sent by User:OlesiaLukaniuk (WMUA)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:OlesiaLukaniuk_(WMUA)/list_of_wikis&oldid=28552112 --> == Action Required: Update templates/modules for electoral maps (Migrating from P1846 to P14226) == Hello everyone, This is a notice regarding an ongoing data migration on Wikidata that may affect your election-related templates and Lua modules (such as <code>Module:Itemgroup/list</code>). '''The Change:'''<br /> Currently, many templates pull electoral maps from Wikidata using the property [[:d:Property:P1846|P1846]], combined with the qualifier [[:d:Property:P180|P180]]: [[:d:Q19571328|Q19571328]]. We are migrating this data (across roughly 4,000 items) to a newly created, dedicated property: '''[[:d:Property:P14226|P14226]]'''. '''What You Need To Do:'''<br /> To ensure your templates and infoboxes do not break or lose their maps, please update your local code to fetch data from [[:d:Property:P14226|P14226]] instead of the old [[:d:Property:P1846|P1846]] + [[:d:Property:P180|P180]] structure. A [[m:Wikidata/Property Migration: P1846 to P14226/List|list of pages]] was generated using Wikimedia Global Search. '''Deadline:'''<br /> We are temporarily retaining the old data on [[:d:Property:P1846|P1846]] to allow for a smooth transition. However, to complete the data cleanup on Wikidata, the old [[:d:Property:P1846|P1846]] statements will be removed after '''May 1, 2026'''. Please update your modules and templates before this date to prevent any disruption to your wiki's election articles. Let us know if you have any questions or need assistance with the query logic. Thank you for your help! [[User:ZI Jony|ZI Jony]] using [[Úsáideoir:MediaWiki message delivery|MediaWiki message delivery]] ([[Plé úsáideora:MediaWiki message delivery|plé]]) 17:11, 3 Aibreán 2026 (UTC) <!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29941252 --> == Meabhrúchán | Reminder : Cruinniú Pobail Dé Máirt 28 Aibreán | Community Meeting Tuesday 28 April == A chairde, Meabhrúchán gasta - beidh ár gCruinniú Pobail ar siúl Dé Máirt seo chugainn, an 28 Aibreán ag 18:00 UTC, ar líne. Just a quick reminder that our Community Meeting is taking place next Tuesday, 28 April at 18:00 UTC, online. Beidh muid ag roinnt nuashonruithe agus ag eagrú na míonna amach romhainn le chéile. We'll be sharing updates and organising the months ahead together. - '''Conas páirt a ghlacadh | How to join''' Beidh an cruinniú ar Google Meet. [[metawiki:Wikimedia_Community_Ireland|Cliceáil anseo chun na sonraí a fháíl.]] Is féidir leat nótaí cruinnithe 2026 go dtí seo a léamh anseo: https://meta.wikimedia.org/wiki/Wikimedia_Community_Ireland/Meeting_minutes_2026#Next_meeting%3A_28_April_2026 Mura bhfuil d'ainm le feiceáil ar ár leathanach Meta fós, cuir leis é! https://meta.wikimedia.org/wiki/Wikimedia_Community_Ireland Tá fáilte roimh chách - idir bhaill nua agus sheanbhaill! Táimid ag tnúth le sibh a fheiceáil! We look forward to seeing you! Le meas, Amy Bainisteoir Pobail | Community Manager Pobal Éireann Wikimedia | Wikimedia Community Ireland [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 10:41, 20 Aibreán 2026 (UTC) :Tá an cruinniú anocht, 28 Aibreán, curtha ar ceal ar an drochuair. Beidh an chéad chruinniú eile ar siúl Dé Máirt, 26 Bealtaine ag 18:00 UTC+1, ar líne. Beidh an Nuachtlitir amach níos déanaí an tseachtain seo. :Unfortunately, tonight's meeting, 28 April, is cancelled. The next meeting will take place on Tuesday, 26 May at 18:00 UTC+1, online. The Newsletter will be out later this week. [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 15:03, 28 Aibreán 2026 (UTC) == Request for comment (global AI policy) == <bdi lang="en" dir="ltr" class="mw-content-ltr"> Apologies for writing in English. {{int:Please-translate}} A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}} [[Úsáideoir:MediaWiki message delivery|MediaWiki message delivery]] ([[Plé úsáideora:MediaWiki message delivery|plé]]) 00:57, 26 Aibreán 2026 (UTC) </bdi> <!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 --> == Is Breá le Vicí an Domhan 2026: Cuireadh chun páirt a ghlacadh == Ag cruinniú mhí an Mhárta de chuid Pobal Éireann Wikimedia, mhol @[[Úsáideoir:Conan Wolff|Conan Wolff]] díriú ar '''luibheolaíocht''' mar ábhar le feabhsú ar Vicipéid na Gaeilge agus ag an am bhíomar ag eagrú le linn ‘’Is Breá le Vicí an Domhan 2026’’ - ag tabhairt chun suntais an bhearna mhór atá ar Vicipéid i gcomhair ailt faoi phlandaí dúchasacha agus ionracha na hÉireann. '''Buíochas le Conan as an moladh sin.''' Mar thoradh air sin, tá [[Vicipéid:Is Breá le Vicí an Domhan 2026]] cruthaithe agam: togra eagarthóireachta atá dírithe ar an mbearna seo a líonadh i rith thréimhse an chomórtais grianghrafadóireachta (1 Bealtaine - 30 Meitheamh 2026). Tá dhá bhealach ann le bheith páirteach: * '''Bearna a aithint''':más eol duit speiceas planda nó gnáthóg nach bhfuil alt air fós ar Vicipéid, cuir leis an liosta ar leathanach an tionscadail anseo: [[Vicipéid:Is Breá le Vicí an Domhan 2026]] * '''Bearna a líonadh''': cruthaigh alt nua nó feabhsaigh ceann atá ann cheana. Ní gá a bheith i d'eagarthóir taithíoch. Tá liostaí tosaithe de speicis le cruthú agus le feabhsú ar an leathanach tionscadail cheana féin, mar aon le hacmhainní úsáideacha. Chun léargas a fháil ar obair eile na foirne le déanaí, féach ar [https://wikimedia.ie/2026/04/30/nuachtlitir-aibrean-2026-athbhreithniu-ar-aibrean/ Nuachtlitir Aibreán 2026] de chuid Pobal Éireann Wikimedia [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 17:41, 6 Bealtaine 2026 (UTC) == Meabhrúchán: Cruinniú Pobail Dé Máirt 26 Bealtaine == A chairde, Tá ár gCruinniú Pobail míosúil ar siúl Dé Máirt, 26 Bealtaine ag 6:00in (UTC+1), ar líne ar Google Meet. Nasc físghlaoch: https://meet.google.com/mnw-pubq-xyc Tuilleadh eolais: as Gaeilge: https://wikimedia.ie/2026/05/15/cruinniu-pobail-bealtaine-2026/ i mBéarla: https://wikimedia.ie/2026/05/15/community-meeting-may-2026/ Tá fáilte roimh chách! [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 10:58, 15 Bealtaine 2026 (UTC) == <span lang="en" dir="ltr">Vote now in the 2026 U4C election</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> Eligible voters are asked to participate in the 2026 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|2026 Election information page]]. The vote closes on 2 June 2026 at [https://zonestamp.toolforge.org/1780358400 00:00 UTC]. Please vote if your account is eligible. Results will be available by 14 June 2026. -- In cooperation with the U4C,<section end="announcement-content" /> </div> [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 17:14, 27 Bealtaine 2026 (UTC) <!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == Call to participate: Proposed baseline Neutral Point of View (NPOV) standard == Hello-hello! I am inviting you to participate in the public discussion regarding a proposed baseline Neutral Point of View (NPOV) standard. The proposed baseline is meant for the Wikipedias which do not yet have an NPOV policy, for these communities to adopt, use, and build upon. [[m:Proposed_baseline_NPOV_standard#Proposed_baseline_NPOV_standard|You can find the proposed text here]]. As your Wikipedia does not seem to have an NPOV policy, we hope that this public discussion and proposed baseline standard will support your project community in adopting one. [[m:Talk:Proposed_baseline_NPOV_standard|You can join the public discussion on meta]]<nowiki>. The timeframe for the discussion is from June 17 - July 15, 2026. Looking forward to engagement from your community and hopefully seeing your community to adopt the Neutral Point of View policy! --~~~~</nowiki> [[Úsáideoir:KVaidla (WMF)|KVaidla (WMF)]] ([[Plé úsáideora:KVaidla (WMF)|plé]]) 09:26, 19 Meitheamh 2026 (UTC) == RFC about AI-generated content in Wikimedia Commons == <bdi lang="en" dir="ltr">Apologies for writing in English, please help translate this message to your language. You are invited to participate in a [[c:Commons:Requests for comment/Policy update for AI content|request for comment on Wikimedia Commons about a policy update for AI content]]. This may affect files that are uploaded to Wikimedia Commons for use on this project. Thank you. [[m:User:Codename Noreste|Codename Noreste]] ([[m:User talk:Codename Noreste|plé]])</bdi> 17:11, 23 Meitheamh 2026 (UTC) <!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == Meabhrúchán | Reminder: Cruinniú Pobail | Community Meeting >> 28/07 @ 18:00 UTC == A chairde, Meabhrúchán gasta go mbeidh ár gcéad chruinniú pobail don bhliain ar siúl '''Dé Máirt seo chugainn, an 28 Iúil ag 18:00 UTC'''. 🔗 https://meet.google.com/mnw-pubq-xyc Beidh fáilte roimh chách! Má tá ábhar ar bith ba mhaith leat a phlé, cuir in iúl dom roimh ré. Táimid ag súil go mór le sibh a fheiceáil ann! Le meas, [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 10:31, 23 Iúil 2026 (UTC) :Amy, a chara, :Tá go maithǃ DV tá súil agam a bheith annǃ̴ :Éamonn [[Úsáideoir:Ériugena|Ériugena]] ([[Plé úsáideora:Ériugena|plé]]) 13:52, 23 Iúil 2026 (UTC) Bainisteoir Pobail le Pobal Éireann Wikimedia [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 10:31, 23 Iúil 2026 (UTC) == Request for comment (the future of Abstract Wikipedia) == <bdi lang="en" dir="ltr" class="mw-content-ltr"> Apologies if this has not yet been translated into your wiki's language. {{int:Please-translate}} You are invited to voice your opinions in a [[:m:Requests for comment/The future of Abstract Wikipedia|request for comment about the future of Abstract Wikipedia]]. {{Int:Feedback-thanks-title}} [[:m:User:Kowal2701|Kowal2701]] ([[:m:User talk:Kowal2701|talk]]) 12:24, 24 Iúil 2026 (UTC) </bdi> <!-- Message sent by User:DreamRimmer@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == Fóraim plé == Tá moltaí agam maidir leis na fóraim plé éagsúla ar Vicipéid. Creidim go bhfuil an leathanach seo an príomhfhóraim plé, áfach, tá leathanaigh eile ann a fheiceas cosúil le fóraim plé. 'Siad: *[[Vicipéid:Lárionad comhphobail]] ** Creidim nach fóraim plé fíor é seo ach d'úsaidtí sé mar fhóraim plé ar aon nós. ** Sa "sidebar", is é "Tairseach chomhphobail" a thugtar air. Measaim ba cheart dúinn an neamhleanúnachas seo a '''cheartú'''. * [[Vicipéid:Fógraí]] ** Cruthaíodh an leathanach seo agus tá nasc chuige ar an phríomhleathanach ach tá sé folamh. ** Creidim ba cheart go '''scriostar''' é agus an nasc ar an phríomhleathanach * [[Vicipéid:Teagmháil]] ** Cosúil leis an cheann thuas. '''Measaim''' go mbeadh sé buntáisteach: * '''1)''' béim níos mó a chur ar an fhíric gur í an fóraim plé lárnach an tsuímh (do phléd'ábhair ghinearálta, do pholasaithe, d'fhógraí, srl.) an leathanach seo. * '''2)''' fóraim plé eile a chruthú chun leathanach (nó teimpléad, catagóir, srl.) amháin a phlé agus/nó nasc go plé ag a leathanach plé a chur in iúl d'úsaideoirí eile (mar shampla iarratais cealaithe, bogtha, cunaisc, fíorúcháin, srl.). ** B’fhéidir go dtabharfaí [[Vicipéid:Iarratais]] air. ** Creidim go mbeadh sé níos fearr an leathanach sin a úsáid chun plé ag na leathanaigh plé a chur chun cinn don pháirt is mó mar ní bheadh gá dúinn iad a chartlannú chomh minic agus bheadh an eolas éasca a lorg ón alt (teimpléad, catagóir, srl.) i gceist. Ag an am céanna, creidim gur cheart dúinn an leathanach seo a '''athainmniú''' go [[Vicipéid:Halla an Bhaile]] ("Halla an Bhaile"). Níl an fhoirm "halla baile" mícheart ([https://www.focloir.ie/en/dictionary/nid/halla+baile tá sé le feiceáil mar shampla i bhfoclóirí]) ach creidim gur rogha níos fearr é "Halla an Bhaile" ([https://www.focloir.ie/en/dictionary/ei/town+hall atá san fhoclóir freisin]) (agus [https://www.tearma.ie/q/Town%20hall/ tá an beirt acu le feiceáil ar tearma.ie]) mar tá cinnteacht níos láidre ag "go Halla an Bhaile" ná "go dtí an Halla Baile". Sin é a rá, níl aon "halla baile" éigin atá i gceist ach "halla an bhaile". Is pointe éadrom é seo (ar shuíomh gan fhuaim go háirithe), áfach, measaim go bhfuil fuaim níos nádúrtha ag "Halla an Bhaile" (Halla''''n Bh'''aile) ná "Halla Baile" fosta. [[Úsáideoir:Saighneánach|Saighneánach]] ([[Plé úsáideora:Saighneánach|plé]]) 07:25, 8 Lúnasa 2026 (UTC) :Scrios mé na nascanna chun "[[Vicipéid:Fógraí]]" agus "[[Vicipéid:Teagmháil]]" ón phríomhleathanach agus chuir mé nasc go [[Vicipéid:Lárionad comhphobail]] leis. [[Úsáideoir:Saighneánach|Saighneánach]] ([[Plé úsáideora:Saighneánach|plé]]) 22:34, 9 Lúnasa 2026 (UTC) ::Haigh @[[Úsáideoir:Saighneánach|Saighneánach]]! Fáilte chuig Vicipéid ::Aontaím leat go bhfuil forbairt de dhith agus - faoi láthair táimid ag obair ar sin agus Slí na Vicipéideoirí soléir a cruthú. Bhí roinnt againn ag an gcruinniú míosúil ag [[m:Wikimedia_Community_Ireland|Pobal Éireann Wikimedia]] le déanaí ag plé athrutihe atá ag teastáil agus ta postáil ag teach inniu ar seo. Má tá suim agat a bheith páirteach tá fíorfháilte romhat. ::Tá stráitéis Vicipéide idir lámha againn agus ba mhaith linn daoine a bheith páriteach sa phobal :) [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 10:45, 11 Lúnasa 2026 (UTC) == Grúpa nua straitéise + post nua don fhoireann == A Vicipéideoirí, Cúpla nuashonrú tar éis ár gcruinniú pobail ag deireadh mhí Iúil: '''1. Grúpa Google nua don straitéis''' Tá grúpa Google curtha ar bun againn le go bhféadfaimid plé agus obair a dhéanamh ar straitéis Vicipéide le chéile, mar chuid d'obair Phobal Éireann Wikimedia. Tá fáilte roimh chách, is cuma cén leibhéal taithí atá agat. Táimid ag cur snas ar fhormáid na n-ábhar oiliúna agus ar an bplean straitéiseach, agus is é aidhm an ghrúpa seo ná straitéis chomhtháite a fhorbairt a chuideoidh linn oibriú níos fearr le chéile mar phobal. Ní neart go cur le chéile, mar a deirtear. Le bhur dtoil, téigh i dteagmháil liomsa le r-phoist anseo <nowiki>''</nowiki>bainisteoir.pobail@wikimedia.ie<nowiki>''</nowiki> nó [[Speisialta:EmailUser/Amy Uí Ríordáin|tríd Vicipéid.]] '''2. Post nua: Oifigeach Gaeilge''' Táimid ag earcú d'Oifigeach Gaeilge nua san fhoireann. Tuilleadh eolais anseo: https://wikimedia.ie/2026/08/10/taimid-ag-earcu-oifigeach-gaeilge/ Go raibh maith agaibh as bhur dtacaíocht leanúnach a chairde. Le gach dea-ghuí [[Úsáideoir:Amy Uí Ríordáin|Amy Uí Ríordáin]] ([[Plé úsáideora:Amy Uí Ríordáin|plé]]) 11:39, 11 Lúnasa 2026 (UTC) == Infobox briste == D'athraigh an t-uasal ChomponU Pongsawet Module:Infobox oiche aréir. Faraor bhris sé é agus chaill muid an style "format box as column on the right" <br> <br> Rinne mé rollback 16:37, 30 August 2026 TGcoa talk contribs m 17,380 bytes −3,923 Cealaíodh athruithe ChomponU Pongsawet (Plé); ar ais chuig leagan le Alison rollback 1 editundo Tag: Rollback<br> <br> Ach is fearr an ceartúchán a leanas a dhéanamh (deisíonn an aicsean an suíomh ar fad — tá bloc ar iarraidh i Module:Infobox/styles.css. Mar shampla:<br> <br> @media (min-width: 640px) { .infobox { /* @noflip / margin-left: 1em; / @noflip / float: right; / @noflip */ clear: right; width: 22em; } } <br> ⚠️ Ach tá an leathanach seo faoi ghlas riaracháin (sysop). <br> Caithfidh riarthóir é a dhéanamh — Alison nó Guliolopez le bhur dtoil ? [[Úsáideoir:TGcoa|TGcoa]] ([[Plé úsáideora:TGcoa|plé]]) 14:54, 30 Lúnasa 2026 (UTC) == <span lang="en" dir="ltr">Server switch - Your wiki will be read-only for a short time soon</span> == <div lang="en" dir="ltr"> <section begin="server-switch"/><div class="plainlinks"> [[:m:Special:MyLanguage/Tech/Server switch|Read this message in another language]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Tech%2FServer+switch&language=&action=page&filter= {{int:please-translate}}] The [[foundation:|Wikimedia Foundation]] will switch the traffic between its data centers. This will make sure that Wikipedia and the other Wikimedia wikis can stay online even after a disaster. All traffic will switch on '''{{#time:j xg|2026-09-23|en}}'''. The switch will start at '''[https://zonestamp.toolforge.org/{{#time:U|2026-09-23T14:00|en}} {{#time:H:i e|2026-09-23T14:00}}]'''. Unfortunately, because of some limitations in [[mw:Special:MyLanguage/Manual:What is MediaWiki?|MediaWiki]], all editing must stop while the switch is made. We apologize for this disruption, and we are working to minimize it in the future. A banner will be displayed on all wikis 30 minutes before this operation happens. This banner will remain visible until the end of the operation. You can contribute to the [https://meta.wikimedia.org/w/index.php?title=Special%3ATranslate&group=Centralnotice-tgroup-read_only_banner&task=view&language=&filter=&action=translate translation or proofreading] of this banner text. '''You will be able to read, but not edit, all wikis for a short period of time.''' * You will not be able to edit for up to an hour on {{#time:l j xg Y|2026-09-23|en}}. * If you try to edit or save during these times, you will see an error message. We hope that no edits will be lost during these minutes, but we can't guarantee it. If you see the error message, then please wait until everything is back to normal. Then you should be able to save your edit. But, we recommend that you make a copy of your changes first, just in case. ''Other effects'': * Background jobs will be slower and some may be dropped. Red links might not be updated as quickly as normal. If you create an article that is already linked somewhere else, the link will stay red longer than usual. Some long-running scripts will have to be stopped. * We expect the code deployments to happen as any other week. However, some case-by-case code freezes could punctually happen if the operation require them afterwards. * [[mw:Special:MyLanguage/GitLab|GitLab]] will be unavailable for about 90 minutes. This project may be postponed if necessary. You can [[wikitech:Switch_Datacenter|read the schedule at wikitech.wikimedia.org]]. Any changes will be announced in the schedule. '''Please share this information with your community.'''</div><section end="server-switch"/> </div> [[m:user:Trizek (WMF)|Trizek (WMF)]] 12:58, 15 Meán Fómhair 2026 (UTC) <!-- Message sent by User:Trizek (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=30513874 --> == Your feedback wanted: Remove ''(Language link added:) and similar'' edits from Special:RecentChanges == ''(Apologies for posting in English. You can help by translating it)'' Hello, I’m Danny from [[:en:w:Wikimedia_Deutschland|Wikimedia Deutschland’s]] [[m:Wikidata_For_Wikimedia_Projects|Wikidata For Wikimedia Projects]] team.<br/> We have been investigating and examining how Wikidata’s use in the [[Special:RecentChanges]] and [[Special:Watchlist]] pages can be made to be more useful, or less ‘noisy’ (fewer edits that have little value to the reader). We are currently exploring to make a change in the volume and the type of Wikidata edits that appear in these pages, and '''we need your feedback''' to help us ensure this is a positive change for the Wikis and won’t disrupt your workflows.<br/> Language links are also known as sitelinks or interlanguage links and describe when a Wikidata item is connected to a Wiki, adding it to the language dropdown tool for other connected Wikis. [[File:Types of Lang Link changes.png|x350px|frame|A variety of "Language Link" edits as seen in the Recent Changes feed]] The request for feedback is whether you support the removal of these language link edits from the Recent Changes and Watchlist feed, or would you oppose such a change and if so, why? Please share you thoughts on the dedicated '''[[m:Talk:Wikidata_For_Wikimedia_Projects/Clearer_Wikidata_Edit_Summaries/Hide_Language_Link_edits|metawiki Talk page]]'''. Further information about this change: [[m:Wikidata_For_Wikimedia_Projects/Clearer_Wikidata_Edit_Summaries/Hide_Language_Link_edits|m:Wikidata_For_Wikimedia_Projects/Hide_Language_Link_edits]] Thank you for any participation or feedback you give, -- [[m:User:Danny_Benjafield_(WMDE)|User:Danny Benjafield (WMDE)]] 15:26, 21 Meán Fómhair 2026 (UTC) <!-- Message sent by User:Danny Benjafield (WMDE)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Danny_Benjafield_(WMDE)/MassMessage_test_list&oldid=31067433 --> == Earráidí Lua sna boscaí sonraí (mw.lua:656): an chúis agus an réiteach == bhí an teachtaireacht ''Lua error in mw.lua at line 656: invalid value (nil) at index 1 in table for 'concat'.'' le feiceáil ar chuid mhór de na hailt, go háirithe sna boscaí sonraí a bhaineann úsáid as Wikidata (m.sh. <code><nowiki>{{WD Bosca Sonraí Duine}}</nowiki></code>). Ar an alt [[Benito Mussolini]] amháin, bhí 127 earráid sa bhosca sonraí. '''An chúis:''' Rinneadh athrú le déanaí ar Scribunto, an t-inneall Lua atá ag MediaWiki ([https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Scribunto/+/1339616 Gerrit 1339616]). Roimhe sin, nuair a thugadh feidhm i modúl ''nil'' ar ais agus luach eile ina dhiaidh, ní thaispeántaí aon rud. Anois, teipeann ar <code><nowiki>{{#invoke:}}</nowiki></code> agus taispeántar an earráid thuas. Sin go díreach a dhéanadh [[Module:Wikidades]] agus [[Module:Wikidata]] nuair nach raibh aon luach ar Wikidata. Dá bharr sin, bhí earráidí le feiceáil sna réimsí ba chóir a bheith folamh. '''Ní hé [[Module:TableTools]] ba chúis leis.''' Tá sé luaite i mionsonraí na hearráide, ach níl baint aige leis an bhfadhb. Rinneadh [[Special:Diff/1327193|athrú Hamish]] ar an 3 Meán Fómhair, i bhfad sula raibh aon earráid ann, agus níor imigh na hearráidí nuair a cealaíodh é. Is féidir é a chur ar ais. '''An réiteach:''' D'athraigh mo chara Claude trí líne (dhá cheann i [[Module:Wikidades]] agus ceann amháin i [[Module:Wikidata]]) ionas go dtugann siad luach folamh (<code><nowiki>''</nowiki></code>) ar ais in áit ''nil''. Rinne Vicipéid na Catalóinise an rud céanna ([[:ca:Mòdul:Wikidades]]), mar is uaithi a tháinig an dá mhodúl seo. Tá ceartú do Scribunto féin á ullmhú freisin ([[phab:T439809]]). Ba chóir go n-imeoidh na hearráidí diaidh ar ndiaidh, de réir mar a athnuaitear na leathanaigh. Más mian leat alt áirithe a dheisiú láithreach, oscail é le <code>?action=purge</code>. [[Úsáideoir:Alison|Alison]], [[Úsáideoir:Hamish|Hamish]]: .... [[Úsáideoir:TGcoa|TGcoa]] ([[Plé úsáideora:TGcoa|plé]]) 22:34, 1 Deireadh Fómhair 2026 (UTC) rtw2p8iz9kifriglbz4jvn07m2ue6h7 2 Deireadh Fómhair 0 3727 1329057 1282047 2026-10-02T10:06:44Z Conradder 34685 /* Tarluithe eile */ 1329057 wikitext text/x-wiki {{Deireadh Fómhair}} Is é an '''2 Deireadh Fómhair''' an 275ú lá den bhliain de réir fhéilire Ghréagóra nó an 276ú lá i mbliain bhisigh. Tá 90 lá fágtha sa bhliain. == Féilte == * [[An India]] - ''Gandhi Jayanti'' * [[An Ghuine]] - ''Lá na Saoirse'' == Daoine a rugadh ar an lá seo == * [[1847]] — [[Paul von Hindenburg]], polaiteoir Gearmánach (b. [[1934]]) * [[1852]] — [[William O'Brien]], náisiúnaí Éireannach, scríbhneoir, réabhlóidí, agus ball de Pharlaimint na Breataine (b.[[1928]]) * [[1852]] — [[William Ramsay]], ceimiceoir Albanach (b.[[1916]]) * [[1869]] — [[Mahatma Gandhi]], ceannaire polaitiúil (b.[[1948]]) * [[1890]] — [[Groucho Marx]], fuirseoir (b.[[1977]]) * [[1904]] — [[Graham Greene]], úrscéalaí Sasanach (b. [[1991]]) * [[1919]] — [[Seán 'ac Dhonncha]], amhránaí Éireannach (b. [[1996]]) * [[1932]] — [[Ruairí Ó Brádaigh]], polaiteoir Éireannach (b. [[2013]]) * [[1945]] — [[Don McLean]], ceoltóir Meiriceánach * [[1951]] — [[Sting|Sting (Gordon Sumner)]], ceoltóir Sasanach * [[1961]] — [[Katharina Grosse]], péintéir Gearmánach * [[1962]] — [[Jeff Bennett]], guthaisteoir Meiriceánach * [[1963]] — [[Maria Ressa|María Ressa]], iriseoir Filipíneach * [[1968]] — [[Jana Novotná]], imreoir leadóige Seiceach (b. [[2017]]) * [[1974]] — [[Simon Gregson]], aisteoir Briotanach * [[1978]] — [[Matt Hancock|Matthew Hancock]], polaiteoir Briotanach * [[1978]] — [[Éamann Ó Braonáin]], iománaí Éireannach * [[1979]] — [[Valérie Harvey]], scríbhneoir Ceanadach * [[1982]] — [[Stephen Pearson]], imreoir sacair Albanach * [[1984]] — [[Marion Bartoli]], imreoir leadóige Francach * [[1990]] — [[Megan Frazer]], imreoir haca == Daoine a fuair bás ar an lá seo == * [[1264]] — [[Pápa Urban IV]] (r ~1185) * [[1764]] — [[William Cavendish, 4ú Diúc Devonshire|William Cavendish]], Príomh-Aire na Breataine (r. [[1720]]) * [[1803]] — [[Samuel Adams]], polaiteoir SAM (r. [[1722]]) * [[1920]] — [[Max Bruch]], cumadóir ceoil Gearmánach (r. [[1838]]) * [[1987]] — [[Madeleine Carroll]], ban-aisteoir Sasanach (r. [[1906]]) * [[1987]] — [[Peter Brian Medawar]], eolaí (r. [[1915]]) * [[1998]] — [[Gene Autry]], aisteoir agus amhránaí Meiriceánach (r. [[1907]]) * [[2006]] — [[Thomas J. Fitzpatrick (An Cabhán)|Thomas J. Fitzpatrick]], polaiteoir Éireannach (r. [[1918]]) * [[2007]] — [[Dan Keating]], (Dónall Céitinn), Poblachtach Éireannach (r.[[1902]]) * [[2016]] — [[Bobby Molloy]], polaiteoir Éireannach (r. [[1936]]) * [[2016]] — [[Brian Friel]], drámadóir (r. [[1926]]) * [[2017]] — [[Tom Petty]], ceoltóir Meiriceánach (r. [[1950]]) * [[2018]] — [[Jamal Khashoggi]], iriseoir Arabach Sádach (r. [[1958]]) * [[2019]] — [[Giya Kancheli]], cumadóir Seoirseach (b. [[1935]]) * [[2025]] — [[Manchán Magan]], scríbhneoir agus craoltóir Éireannach (r. [[1970]]) == Tarluithe eile == * [[48 RC]] - Fuair [[Iúil Caesar]] amach go bhfuair [[Gnaeus Pompeius Magnus|Poimpéas]] bás * [[1470]] - Bhí ar [[Éadbhard IV Shasana]] a theitheadh chuig [[an Ísiltír]], mar sin, athbhunaíodh [[Anraí VI Shasana|Anraí VI]] mar rí * [[1601]] - Tháinig 3,400 [[saighdiúir]]í Spáinneacha  i dtír ag an mbaile i g[[Cath Chionn tSáile|Cionn tSáile]] * [[1919]] - Fuair [[Uachtarán na Stát Aontaithe]], [[Woodrow Wilson]] [[stróc]] ollmhór sa [[Teach Bán]], mar sin, bhí sé ar éagumas don chuid eile dá uachtaránacht. * [[1925]] - Thosaigh na busanna dearga dhá stór, clúdaithe, ag feidhmiú i [[Londain]] * [[1928]] - Bunaíodh Préaláid na Croise Naofa agus Obair Dé (nó [[Opus Dei]] mar is fearr aithne air) * [[1955]] - D'fhoilsigh Comhairle Thaighde Liachta na Breataine páipéar a deir go bhféadfá [[ailse]] a fháil de bharr a bheith ag [[Tobac#An_tobac_agus_an_tsl.C3.A1inte|caitheamh tobac]] * [[1958]] - D'fhógair [[An Ghuine]] neamhspleáchas ón [[Fhrainc]] * [[2004]] - Reáchtáladh an chéad ''[[Parkrun]]'' i b[[Bushy Park|Páirc Bushy]], [[Londain]] * [[2018]] - Feallmharaíodh an t-[[iriseoir]] de chuid ''[[Washington Post]]'', [[Jamal Khashoggi]], sa chonsalacht [[an Araib Shádach|na hAraibe Sádaí]] in [[Iostanbúl]], [[an Tuirc]] * [[2025]] - Maraíodh beirt nuair a [[Ionsaí Mhanchain 2025|d'ionsaigh fear]] [[sionagóg]] in [[Manchain]] i rith ''[[Yom Kippur]]'' [[Catagóir:Dátaí|1002]] [[Catagóir:Míonna|Deireadh Fómhair, 02]] owq91hbt3f9smad9tkpnwbv4f0cajvh Fuaim 0 12502 1329050 881361 2026-10-02T07:00:11Z CommonsDelinker 440 Ag baint [[:Íomhá:FA-18_Hornet_breaking_sound_barrier_(7_July_1999)_-_filtered.jpg|FA-18_Hornet_breaking_sound_barrier_(7_July_1999)_-_filtered.jpg]] amach, agus ag chur [[:Íomhá:FA-18_Hornet_breaking_sound_barrier_(7_July_1999).jpg|FA-18_Hornet_breaking_ 1329050 wikitext text/x-wiki Séard is '''fuaim''' ann ná corraí [[fuinneamh meicniúil|fuinnimh mheicniúil]] trí [[damhna]]. Aithnítear fuaim trí thréithe a [[tonn fuaime|tonn]]. Is iad sin [[minicíocht]], [[tonnfhad]], [[peiriad]], [[aimplitiúd]], agus [[luas fuaime|luas]]. [[Íomhá:FA-18 Hornet breaking sound barrier (7 July 1999).jpg|right|thumb|[[Eitleán]] ag briseadh an [[fuaimbhac]]]] Airíonn daoine fuaim trí chreathanna san aer a airíonn an [[cluas|chluas]]. Tugtar [[éisteacht]] air seo. Comhathraíonn tonnta fuaime de réir brú fuaime (aimplitiúid), tomhasta i [[decibel]] (dB) agus minicíocht (nó airde) tomhasta i [[Hertz]] (Hz). Airíonn an chluas dhaonna normalta minicíochtaí idir thart ar 20Hz agus 20kHz (is ionann an nóta is airde ar an bpianó agus 4186Hz). Má mhaireann fuaim thar tréimhse ama (ar nós píosa ceoil nó píosa cainte), athraíonn a [[speictream minicíochta]] thar an tréimhse ama sin. Bíonn fuaim ar bith seachas na cinn is bunúsaí (m.sh. nóta ó ghabhlóg cheoil mhaith) comhdhéanta de bhailiúchán tonnta ag minicíochtaí agus aimplitiúidí éagsúla. Tugtar [[torann]] ar fhuaim nach bhfuil ag teastáil. Tugtar [[fuaimeolaíocht]] ar staidéar eolaíochta a dhéantar ar fhuaim. == Fuaim a Digitiú == Is féidir fuaim a [[digitigh|digitiú]] ó fhoinse ar bith ([[micreafón]], [[raidió]], [[ceirnín]], [[uirlis cheoil]], srl.). Is [[fuaim shamplaithe]] í fuaim digitithe. Gabhtar sampla d’fhuaim i bhfoirm [[digiteach]] (1anna agus 0anna) ag ráta in aghaidh an aonaid ama. Tugtar an [[ráta samplála]] ar cé chomh minic agus a ghabhtar na samplaí. Tugtar [[méid an sampla]] ar cé chomh mór is atá gach sampla (an líon sonraí). Is iad na rátaí samplaithe is coitianta d'fhuaim ar an ríomhaire ná 44.1 kHz (caighdeán CD), 22.05 kHz agus 11.025 kHz. Is méideanna coitianta iad 8 ngiotán nó 16 giotán do mhéid an sampla. == Féach freisin == * [[Taifeadadh digiteach]] * [[Taifeadadh fuaime]] * [[Téipthaifeadán]] == Tagairtí == {{Reflist}} [[Catagóir:Fuaim| ]] [[Catagóir:Leictreonaic]] c64bniwgdaeu260a5ank0pjyaww6qti Alan Titley 0 23607 1329030 1320373 2026-10-01T16:33:58Z Eomurchadha 4240 1329030 wikitext text/x-wiki {{WD Bosca Sonraí Duine}} Scoláire agus [[scríbhneoir]], úrscéalaí, gearrscéalaí, file, feabhalscéalaí, léirmheastóir, criticeoir, tráchtaire polaitíochta agus sochaí, múinteoir, léachtóir, ollamh, smaointeoir agus ilcheardaí focal is ea '''Alan Titley''' (''An Titlíoch'' scaití) a rugadh sa bhliain [[1947]].<ref name=":0">{{Lua idirlín|url=http://research.ucc.ie/profiles/A006/atitley|teideal=UCC Research Profiles: Prof. Alan Titley, Nua-Ghaeilge (Modern Irish)|dáta=2016-12-14|work=web.archive.org|dátarochtana=2022-09-04|archivedate=2016-12-14|archiveurl=https://web.archive.org/web/20161214032454/http://research.ucc.ie/profiles/A006/atitley}}</ref> Is iad sainchomharthaí Titley ná an greann, an cur chuige uathúil, an déanamh súl, an spreagadh smaointeoireachta agus draíocht na deismireachta. == Saol == Rugadh Alan Titley i g[[Corcaigh]] sa bhliain 1947 agus is ann a cuireadh scolaíocht air. Chuaigh Titley le [[Múinteoir|múinteoireacht]] agus d'fhreastail sé ar [[Coláiste Phádraig, Droim Conrach|Choláiste Phádraig, Droim Conrach]], áit ar bhuaigh sé an bonn óir sa teagasc. Chaith sé tamall ag múineadh agus ag taisteal s[[an Afraic]] agus é ina mhúinteoir i gcoláiste Oiliúna Mount Carmel sa [[An Nigéir|Nigéir]] idir na blianta 1967 agus 1969. Bhí sé ag múineadh páistí bodhra i Scoil na mBuachaillí Bodhra sa Chabrach i mBaile Átha Cliath (ó 1969 go 1974). Sa bhliain 1981 ceapadh é mar Cheann Roinn na Gaeilge i gColáiste Phádraig ([[Ollscoil Chathair Bhaile Átha Cliath|Ollscoil na hÉireann, Ollscoil Chathair Bhaile Átha Cliath]]). Sa bhliain 2006 ceapadh Titley ina Ollamh le Nua‑Ghaeilge i g[[Coláiste na hOllscoile, Corcaigh]].<ref>{{Lua idirlín|url=http://www.munsterlit.ie/Writer%20pages/Titley,%20Alan.html|teideal=Alan Titley|údar=Ionad Litríochta an Deiscirt|dáta=2016-03-05|work=web.archive.org|dátarochtana=2022-09-04|archivedate=2016-03-05|archiveurl=https://web.archive.org/web/20160305001808/http://www.munsterlit.ie/Writer%20pages/Titley,%20Alan.html}}</ref> Tá an Titlíoch ina chónaí i n[[Glas Naíon]], taobh thuaidh de Bhaile Átha Cliath. Tá cúigear clainne aige lena bhean Mary - Gavan, Keelan, Aoife, Bróna agus Fergal.<ref>{{Lua idirlín|url=https://www.irishecho.com/2015/4/new-life-for-darkly-comic-masterpiece|teideal=New life for 'darkly comic masterpiece'|language=en|work=Irish Echo Newspaper|dátarochtana=2022-09-04}}</ref> === Scríbhneoir === Is iriseoir, criticeoir, úrscéalaí, gearrscéalaí, agus drámadóir é Titley, agus is iomaí duais scríbhneoireachta atá buaite aige. Tá ''Méirscrí na Treibhe'' (1978) suite in Iarthar Afraice agus cuntas ann ar an achrann a lean an neamhspleáchas. [[Íomhá:Waiting For Godot 2016.jpg|mion|Tagann Godot (aist.)]] Ansin tháinig ''Stiall Fhial Feola'' (1980), úrscéal, agus ''Eiriceachtaí agus Scéalta Eile'' (1987) óna lámh. Is minic an greann searbh agus an scigaithris le haithint ar a shaothar. [[Úrscéal stairiúil]] is ea ''An Fear Dána'' (1993) agus é bunaithe ar shaol Mhuireadhaigh Albanaigh Uí Dhálaigh, file. Tá lé aige le ficsean gearr greannmhar, rud a chuir sé in iúl le ''Fabhalscéalta'' (1995) agus ''Leabhar Nóra Ní Anluain'' (1998). Léiríodh drámaí stáitse agus raidió dá chuid: bhí ''Tagann Godot'' (1991) le feiceáil in [[Amharclann na Mainistreach]]. [[Íomhá:The Irish Times logo.svg|mion]] Foilsíodh ''Gluaiseacht'', úrscéal faoin [[imirce]], sa bhliain [[2009]].<ref>{{Luaigh foilseachán|title=Gluaiseacht /|url=https://catalogue.nli.ie/Record/vtls000289009|publisher=An Gúm,|date=2009|author=Alan Titley}}</ref> Tá criticeoireacht liteartha agus shóisialta Titley le fáil ar ''An tÚrscéal Gaeilge'' (1991) agus ar ''Chun Doirne'' (1997), bailiúchán aistí. "Is é an t-aon teist fhiúntais amháin ar fhilíocht nó ar phrós an bhfuil sé láidir nó lag, misniúil nó meata… "Is é atá san litríocht, mar sin, ná cleamhnas idir nós agus samhlaíocht. Nuair is é an tsamhlaíocht atá in uachtar agus an nós á chur ó chothrom aige bíonn faill na hardlitríochta chugainn. Nuair a bhíonn an nós thuas is minic go mbíonn an toradh lag, faoin, glídiúil. Ach is litríocht í mar sin féin."<ref name=":1">Alan Titley, Litríocht na Gaeilge, Litríocht an Bhéarla agus Irish Literature. Aiste 1981.</ref> Tá colún Gaeilge aige ar an [[The Irish Times|''Irish Times'']] darb ainm ''Crobhingne''. <blockquote> "Tá scamall an bháis os cionn na Gaeilge i gcónaí. Ní féidir féachaint timpeall ná romhat ná in airde gan é a fheiceáil. Ba dhall an té a dhéanfadh neamart ann. Ach más dídean é an ealaín aonair i gcoinne an bháis aonair is cosaint í litríocht teanga in aghaidh bhás na teanga sin. Is gníomh creidimh, dóchais agus carthanachta í an scríbhneoireacht in éineacht; is dúnadh súl í; is cluiche í leis an gcinniúint, iasacht ón aimsir fháistineach, gadaíocht ón tsíoraíocht, éamh in éadan an chiúnais. Dá dhána, dá mhisniúla, dá chróga í an litríocht, dá airde a glam, is ea is óige, is fuinniúla, is bíogúla a bheidh sí. Is iad na seandaoine a fhanann cois na tine agus a chuimhníonn ar na laethanta fadó, a mhaireann in anallód is a fhanann leis an mbás. Is é an duine dalba a chaitheann seile in aghaidh an éaga, a théann ag magadh faoi is ag spochadh as, a deireann "fúbún fútsa freisin" suas lean phus.<ref name=":1" /> </blockquote> "Is é gnó an stáit focail a smachtú, a chungú, a mharú nuair is gá; gnó an scríbhneora iad a fhuascailt, cead siúil is scléipe is ramscéalaíochta a thabhairt dóibh. "Tá idéil na polaitíochta intuarascála, sochuntais. Tá idéil na healaíne néalscaoilte, spásfhairsing, ilfhoirceanda, dothadhaill más ann in aon chor dóibh." "Gnó an pholaiteora an taos a chrua, a chalcadh, a thabhairt ar aon dath; gnó an scríbhneora an taos a dhíbirt, a ruaigeadh, and an taos nach bhfuil dána....... ní raibh aon dul as." == Saothar == ===Gaeilge=== [[Íomhá:Gluaiseacht clúdach.jpg|mion|upright|''[[Gluaiseacht (úrscéal)|Gluaiseacht]]'', úrscéal faoin [[Dídeanaí|teitheadh]]]] *''Ag dul i bhfad'', 2023<ref>{{Lua idirlín|url=https://www.siopagaeilge.ie/products/ag-dul-i-bhfad-alan-titley|teideal=Ag dul i bhfad|údar=Alan Titley|language=ga-IE|work=An Siopa Gaeilge|dátarochtana=2024-02-11}}</ref> Ar Ghearrliosta Leabhar Gaeilge na Bliana Fhoras na Gaeilge *''Liricí Gearra'', 2021. Liricí, véarsaíocht, dánta is prós. An dara cnuasach filíochta de chuid Titley Coiscéim<ref>{{Lua idirlín|url=https://www.litriocht.com/t%C3%A1irge/lirici-gearra/|teideal=Liricí Gearra {{!}} Litríocht ISBN 6660012210121|údar=Alan Titley|dáta=2021|language=ga-IE|dátarochtana=2024-02-11}}</ref> *Lúba, 2020, do pháistí 6-12 mbliana d’aois An Gúm ISBN 9781857919608<ref>{{Lua idirlín|url=https://www.litriocht.com/t%C3%A1irge/luba/|teideal=Lúba {{!}} Litríocht|údar=Alan Titley|dáta=2020|language=ga-IE|dátarochtana=2024-02-11}}</ref> *''Lámh, Lámh Eile'', 2018 * ''An Bhean Feasa'', 2014 * ''An Chuallacht Léannta: ceiliúradh ar Íosánaigh agus Léann na Gaeilge'', 2013 * ''Rabhadh Dánta'', 2013 * ''Smuf'', 2012 * ''Na Drámaí Garbha'', 2011 * ''Scríbhneoirí faoi chaibidil'', 2010 * [[Gluaiseacht (úrscéal)|''Gluaiseacht'' (úrscéal)]], 2009 * ''An réabhlóid mar ghníomh dínite'', 2007 * ''Tyda'', 2006 * ''Beir leat do shár-Ghaeilg Súil siar agus ar aghaidh'', 2004 * ''Amach'', 2003 * ''Leabhar Nóra Ní Anluain: céad scéal ó cheartlár na cruinne'', 1998 * ''Chun doirne: rogha aistí'', 1996 (Lagan Press, [[Béal Feirste]]) Leabhar 203 leathanach ina bhfuil ocht n-aiste thathagacha a chuireadh i gcló cheana idir 1981 agus 1990. Pléann sé teoiric na critice go mion ann. Pléann sé scríbhneoirí na Gaeilge agus scríbhneoirí na teanga eile úd, agus cúinsí a scríbhneoireachta. Agus pléann sé go mion, [[an Cadhnach]] mar iriseoir agus mar ghearrscéalaí, [[Brian Merriman]] agus [[Iain Mac a' Ghobhainn]], sríbhneoir Albannach. * ''Fabhalscéalta'', 1995 * ''An cogadh in aghaidh na critice'', 1994 * ''An fear dána'', 1993 * ''An t-úrscéal Gaeilge'', 1991 * ''Tagann Godot'' (dráma Beckett), 1991 ''T'' ''[[An Clóchomhar|Clóchomhar]]'', ISBN 978-1-906882-10-5 * ''Eiriceachtaí agus Scéalta Eile'', 1987 * ''Stiall fhial feola'', 1980 * ''Méirscrí na treibhe'', 1978 * ''Máirtín Ó Cadhain: clár saothair'', 1975 ===Béarla=== * ''The Dirty Dust. Cré na Cille'', 2015 * ''The History of the Irish Book, vol. II'', 2013 * ''Nailing Theses: selected essays'', 2011 * ''A pocket history of Gaelic culture'', 2000 == Cláir faisnéise == * ''Scéal na Gaeilge'', TG4 2012<ref>{{Lua idirlín|url=https://nos.ie/meain/teilifis/sceal-na-gaeilge-alan-titley-ar-fail-ar-youtube-anois/|teideal=‘Scéal na Gaeilge’ Alan Titley ar fáil ar YouTube anois|údar=NÓS|dáta=Eanáir 2021|language=en-US|work=NÓS|dátarochtana=2022-09-04}}{{Dead link|date=Aibreán 2026 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> == Tagairtí == {{reflist}} == Naisc sheachtracha == * [http://www.beo.ie/alt-alan-titley.aspx Agallamh le ''Beo'', Eagrán 37, 2004] {{DEFAULTSORT:Titley, Alan}} [[Catagóir:Scríbhneoirí Éireannacha]] [[Catagóir:Criticeoirí Éireannacha]] [[Catagóir:Léirmheastóirí liteartha]] [[Catagóir:Gearrscéalaithe Éireannacha]] [[Catagóir:Drámadóirí Éireannacha]] [[Catagóir:Úrscéalaithe Éireannacha]] [[Catagóir:Scríbhneoirí ficsin thuairimigh]] [[Catagóir:Ficsean uafáis Éireannach]] [[Catagóir:Ficsean uafáis i nGaeilge]] [[Catagóir:Staraithe na Gaeilge]] [[Catagóir:Staraithe Éireannacha ón 20ú haois]] [[Catagóir:Staraithe Éireannacha ón 21ú haois]] [[Catagóir:Litríocht taistil na Gaeilge]] [[Catagóir:Litríocht taistil Éireannach]] [[Catagóir:Iarmhic Léinn Choláiste Phádraig, Droim Conrach]] [[Catagóir:Daoine a rugadh i 1947]] [[Catagóir:Daoine as Contae Chorcaí]] [[Catagóir:Iriseoirí The Irish Times]] [[Catagóir:Daoine beo]] [[Catagóir:Baill d’Acadamh Ríoga na hÉireann]] [[Catagóir:Scoláirí Gaeilge]] l0gxgl0v0sr4fmqgiomzkayqul684ah 1329031 1329030 2026-10-01T16:35:34Z Eomurchadha 4240 1329031 wikitext text/x-wiki {{WD Bosca Sonraí Duine}} Scoláire agus [[scríbhneoir]], úrscéalaí, gearrscéalaí, file, feabhalscéalaí, léirmheastóir, criticeoir, tráchtaire polaitíochta agus sochaí, múinteoir, léachtóir, ollamh, smaointeoir agus ilcheardaí focal is ea '''Alan Titley''' (''An Titlíoch'' scaití) a rugadh sa bhliain [[1947]].<ref name=":0">{{Lua idirlín|url=http://research.ucc.ie/profiles/A006/atitley|teideal=UCC Research Profiles: Prof. Alan Titley, Nua-Ghaeilge (Modern Irish)|dáta=2016-12-14|work=web.archive.org|dátarochtana=2022-09-04|archivedate=2016-12-14|archiveurl=https://web.archive.org/web/20161214032454/http://research.ucc.ie/profiles/A006/atitley}}</ref> Is iad sainchomharthaí Titley ná an greann, an cur chuige uathúil, an déanamh súl, an spreagadh smaointeoireachta agus draíocht na deismireachta. == Saol == Rugadh Alan Titley i g[[Corcaigh]] sa bhliain 1947 agus is ann a cuireadh scolaíocht air. Chuaigh Titley le [[Múinteoir|múinteoireacht]] agus d'fhreastail sé ar [[Coláiste Phádraig, Droim Conrach|Choláiste Phádraig, Droim Conrach]], áit ar bhuaigh sé an bonn óir sa teagasc. Chaith sé tamall ag múineadh agus ag taisteal s[[an Afraic]] agus é ina mhúinteoir i gcoláiste Oiliúna Mount Carmel sa [[An Nigéir|Nigéir]] idir na blianta 1967 agus 1969. Bhí sé ag múineadh páistí bodhra i Scoil na mBuachaillí Bodhra sa Chabrach i mBaile Átha Cliath (ó 1969 go 1974). Sa bhliain 1981 ceapadh é mar Cheann Roinn na Gaeilge i gColáiste Phádraig ([[Ollscoil Chathair Bhaile Átha Cliath|Ollscoil na hÉireann, Ollscoil Chathair Bhaile Átha Cliath]]). Sa bhliain 2006 ceapadh Titley ina Ollamh le Nua‑Ghaeilge i g[[Coláiste na hOllscoile, Corcaigh]].<ref>{{Lua idirlín|url=http://www.munsterlit.ie/Writer%20pages/Titley,%20Alan.html|teideal=Alan Titley|údar=Ionad Litríochta an Deiscirt|dáta=2016-03-05|work=web.archive.org|dátarochtana=2022-09-04|archivedate=2016-03-05|archiveurl=https://web.archive.org/web/20160305001808/http://www.munsterlit.ie/Writer%20pages/Titley,%20Alan.html}}</ref> Tá an Titlíoch ina chónaí i n[[Glas Naíon]], taobh thuaidh de Bhaile Átha Cliath. Tá cúigear clainne aige lena bhean Mary - Gavan, Keelan, Aoife, Bróna agus Fergal.<ref>{{Lua idirlín|url=https://www.irishecho.com/2015/4/new-life-for-darkly-comic-masterpiece|teideal=New life for 'darkly comic masterpiece'|language=en|work=Irish Echo Newspaper|dátarochtana=2022-09-04}}</ref> === Scríbhneoir === Is iriseoir, criticeoir, úrscéalaí, gearrscéalaí, agus drámadóir é Titley, agus is iomaí duais scríbhneoireachta atá buaite aige. Tá ''Méirscrí na Treibhe'' (1978) suite in Iarthar Afraice agus cuntas ann ar an achrann a lean an neamhspleáchas. [[Íomhá:Waiting For Godot 2016.jpg|mion|Tagann Godot (aist.)]] Ansin tháinig ''Stiall Fhial Feola'' (1980), úrscéal, agus ''Eiriceachtaí agus Scéalta Eile'' (1987) óna lámh. Is minic an greann searbh agus an scigaithris le haithint ar a shaothar. [[Úrscéal stairiúil]] is ea ''An Fear Dána'' (1993) agus é bunaithe ar shaol Mhuireadhaigh Albanaigh Uí Dhálaigh, file. Tá lé aige le ficsean gearr greannmhar, rud a chuir sé in iúl le ''Fabhalscéalta'' (1995) agus ''Leabhar Nóra Ní Anluain'' (1998). Léiríodh drámaí stáitse agus raidió dá chuid: bhí ''Tagann Godot'' (1991) le feiceáil in [[Amharclann na Mainistreach]]. [[Íomhá:The Irish Times logo.svg|mion]] Foilsíodh ''Gluaiseacht'', úrscéal faoin [[imirce]], sa bhliain [[2009]].<ref>{{Luaigh foilseachán|title=Gluaiseacht /|url=https://catalogue.nli.ie/Record/vtls000289009|publisher=An Gúm,|date=2009|author=Alan Titley}}</ref> Tá criticeoireacht liteartha agus shóisialta Titley le fáil ar ''An tÚrscéal Gaeilge'' (1991) agus ar ''Chun Doirne'' (1997), bailiúchán aistí. "Is é an t-aon teist fhiúntais amháin ar fhilíocht nó ar phrós an bhfuil sé láidir nó lag, misniúil nó meata… "Is é atá san litríocht, mar sin, ná cleamhnas idir nós agus samhlaíocht. Nuair is é an tsamhlaíocht atá in uachtar agus an nós á chur ó chothrom aige bíonn faill na hardlitríochta chugainn. Nuair a bhíonn an nós thuas is minic go mbíonn an toradh lag, faoin, glídiúil. Ach is litríocht í mar sin féin."<ref name=":1">Alan Titley, Litríocht na Gaeilge, Litríocht an Bhéarla agus Irish Literature. Aiste 1981.</ref> Tá colún Gaeilge aige ar an [[The Irish Times|''Irish Times'']] darb ainm ''Crobhingne''. <blockquote> "Tá scamall an bháis os cionn na Gaeilge i gcónaí. Ní féidir féachaint timpeall ná romhat ná in airde gan é a fheiceáil. Ba dhall an té a dhéanfadh neamart ann. Ach más dídean é an ealaín aonair i gcoinne an bháis aonair is cosaint í litríocht teanga in aghaidh bhás na teanga sin. Is gníomh creidimh, dóchais agus carthanachta í an scríbhneoireacht in éineacht; is dúnadh súl í; is cluiche í leis an gcinniúint, iasacht ón aimsir fháistineach, gadaíocht ón tsíoraíocht, éamh in éadan an chiúnais. Dá dhána, dá mhisniúla, dá chróga í an litríocht, dá airde a glam, is ea is óige, is fuinniúla, is bíogúla a bheidh sí. Is iad na seandaoine a fhanann cois na tine agus a chuimhníonn ar na laethanta fadó, a mhaireann in anallód is a fhanann leis an mbás. Is é an duine dalba a chaitheann seile in aghaidh an éaga, a théann ag magadh faoi is ag spochadh as, a deireann "fúbún fútsa freisin" suas lean phus.<ref name=":1" /> </blockquote>Cuid dá thuairimí faoi sprioc an scríbhneora: "Is é gnó an stáit focail a smachtú, a chungú, a mharú nuair is gá; gnó an scríbhneora iad a fhuascailt, cead siúil is scléipe is ramscéalaíochta a thabhairt dóibh. "Tá idéil na polaitíochta intuarascála, sochuntais. Tá idéil na healaíne néalscaoilte, spásfhairsing, ilfhoirceanda, dothadhaill más ann in aon chor dóibh." "Gnó an pholaiteora an taos a chrua, a chalcadh, a thabhairt ar aon dath; gnó an scríbhneora an taos a dhíbirt, a ruaigeadh, and an taos nach bhfuil dána....... ní raibh aon dul as." == Saothar == ===Gaeilge=== [[Íomhá:Gluaiseacht clúdach.jpg|mion|upright|''[[Gluaiseacht (úrscéal)|Gluaiseacht]]'', úrscéal faoin [[Dídeanaí|teitheadh]]]] *''Ag dul i bhfad'', 2023<ref>{{Lua idirlín|url=https://www.siopagaeilge.ie/products/ag-dul-i-bhfad-alan-titley|teideal=Ag dul i bhfad|údar=Alan Titley|language=ga-IE|work=An Siopa Gaeilge|dátarochtana=2024-02-11}}</ref> Ar Ghearrliosta Leabhar Gaeilge na Bliana Fhoras na Gaeilge *''Liricí Gearra'', 2021. Liricí, véarsaíocht, dánta is prós. An dara cnuasach filíochta de chuid Titley Coiscéim<ref>{{Lua idirlín|url=https://www.litriocht.com/t%C3%A1irge/lirici-gearra/|teideal=Liricí Gearra {{!}} Litríocht ISBN 6660012210121|údar=Alan Titley|dáta=2021|language=ga-IE|dátarochtana=2024-02-11}}</ref> *Lúba, 2020, do pháistí 6-12 mbliana d’aois An Gúm ISBN 9781857919608<ref>{{Lua idirlín|url=https://www.litriocht.com/t%C3%A1irge/luba/|teideal=Lúba {{!}} Litríocht|údar=Alan Titley|dáta=2020|language=ga-IE|dátarochtana=2024-02-11}}</ref> *''Lámh, Lámh Eile'', 2018 * ''An Bhean Feasa'', 2014 * ''An Chuallacht Léannta: ceiliúradh ar Íosánaigh agus Léann na Gaeilge'', 2013 * ''Rabhadh Dánta'', 2013 * ''Smuf'', 2012 * ''Na Drámaí Garbha'', 2011 * ''Scríbhneoirí faoi chaibidil'', 2010 * [[Gluaiseacht (úrscéal)|''Gluaiseacht'' (úrscéal)]], 2009 * ''An réabhlóid mar ghníomh dínite'', 2007 * ''Tyda'', 2006 * ''Beir leat do shár-Ghaeilg Súil siar agus ar aghaidh'', 2004 * ''Amach'', 2003 * ''Leabhar Nóra Ní Anluain: céad scéal ó cheartlár na cruinne'', 1998 * ''Chun doirne: rogha aistí'', 1996 (Lagan Press, [[Béal Feirste]]) Leabhar 203 leathanach ina bhfuil ocht n-aiste thathagacha a chuireadh i gcló cheana idir 1981 agus 1990. Pléann sé teoiric na critice go mion ann. Pléann sé scríbhneoirí na Gaeilge agus scríbhneoirí na teanga eile úd, agus cúinsí a scríbhneoireachta. Agus pléann sé go mion, [[an Cadhnach]] mar iriseoir agus mar ghearrscéalaí, [[Brian Merriman]] agus [[Iain Mac a' Ghobhainn]], sríbhneoir Albannach. * ''Fabhalscéalta'', 1995 * ''An cogadh in aghaidh na critice'', 1994 * ''An fear dána'', 1993 * ''An t-úrscéal Gaeilge'', 1991 * ''Tagann Godot'' (dráma Beckett), 1991 ''T'' ''[[An Clóchomhar|Clóchomhar]]'', ISBN 978-1-906882-10-5 * ''Eiriceachtaí agus Scéalta Eile'', 1987 * ''Stiall fhial feola'', 1980 * ''Méirscrí na treibhe'', 1978 * ''Máirtín Ó Cadhain: clár saothair'', 1975 ===Béarla=== * ''The Dirty Dust. Cré na Cille'', 2015 * ''The History of the Irish Book, vol. II'', 2013 * ''Nailing Theses: selected essays'', 2011 * ''A pocket history of Gaelic culture'', 2000 == Cláir faisnéise == * ''Scéal na Gaeilge'', TG4 2012<ref>{{Lua idirlín|url=https://nos.ie/meain/teilifis/sceal-na-gaeilge-alan-titley-ar-fail-ar-youtube-anois/|teideal=‘Scéal na Gaeilge’ Alan Titley ar fáil ar YouTube anois|údar=NÓS|dáta=Eanáir 2021|language=en-US|work=NÓS|dátarochtana=2022-09-04}}{{Dead link|date=Aibreán 2026 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> == Tagairtí == {{reflist}} == Naisc sheachtracha == * [http://www.beo.ie/alt-alan-titley.aspx Agallamh le ''Beo'', Eagrán 37, 2004] {{DEFAULTSORT:Titley, Alan}} [[Catagóir:Scríbhneoirí Éireannacha]] [[Catagóir:Criticeoirí Éireannacha]] [[Catagóir:Léirmheastóirí liteartha]] [[Catagóir:Gearrscéalaithe Éireannacha]] [[Catagóir:Drámadóirí Éireannacha]] [[Catagóir:Úrscéalaithe Éireannacha]] [[Catagóir:Scríbhneoirí ficsin thuairimigh]] [[Catagóir:Ficsean uafáis Éireannach]] [[Catagóir:Ficsean uafáis i nGaeilge]] [[Catagóir:Staraithe na Gaeilge]] [[Catagóir:Staraithe Éireannacha ón 20ú haois]] [[Catagóir:Staraithe Éireannacha ón 21ú haois]] [[Catagóir:Litríocht taistil na Gaeilge]] [[Catagóir:Litríocht taistil Éireannach]] [[Catagóir:Iarmhic Léinn Choláiste Phádraig, Droim Conrach]] [[Catagóir:Daoine a rugadh i 1947]] [[Catagóir:Daoine as Contae Chorcaí]] [[Catagóir:Iriseoirí The Irish Times]] [[Catagóir:Daoine beo]] [[Catagóir:Baill d’Acadamh Ríoga na hÉireann]] [[Catagóir:Scoláirí Gaeilge]] 3gtq4arjd0pt7i83zjdtj4yy7d5s9rh 1329032 1329031 2026-10-01T16:36:07Z Eomurchadha 4240 1329032 wikitext text/x-wiki {{WD Bosca Sonraí Duine}} Scoláire agus [[scríbhneoir]], úrscéalaí, gearrscéalaí, file, feabhalscéalaí, léirmheastóir, criticeoir, tráchtaire polaitíochta agus sochaí, múinteoir, léachtóir, ollamh, smaointeoir agus ilcheardaí focal is ea '''Alan Titley''' (''An Titlíoch'' scaití) a rugadh sa bhliain [[1947]].<ref name=":0">{{Lua idirlín|url=http://research.ucc.ie/profiles/A006/atitley|teideal=UCC Research Profiles: Prof. Alan Titley, Nua-Ghaeilge (Modern Irish)|dáta=2016-12-14|work=web.archive.org|dátarochtana=2022-09-04|archivedate=2016-12-14|archiveurl=https://web.archive.org/web/20161214032454/http://research.ucc.ie/profiles/A006/atitley}}</ref> Is iad sainchomharthaí Titley ná an greann, an cur chuige uathúil, an déanamh súl, an spreagadh smaointeoireachta agus draíocht na deismireachta. == Saol == Rugadh Alan Titley i g[[Corcaigh]] sa bhliain 1947 agus is ann a cuireadh scolaíocht air. Chuaigh Titley le [[Múinteoir|múinteoireacht]] agus d'fhreastail sé ar [[Coláiste Phádraig, Droim Conrach|Choláiste Phádraig, Droim Conrach]], áit ar bhuaigh sé an bonn óir sa teagasc. Chaith sé tamall ag múineadh agus ag taisteal s[[an Afraic]] agus é ina mhúinteoir i gcoláiste Oiliúna Mount Carmel sa [[An Nigéir|Nigéir]] idir na blianta 1967 agus 1969. Bhí sé ag múineadh páistí bodhra i Scoil na mBuachaillí Bodhra sa Chabrach i mBaile Átha Cliath (ó 1969 go 1974). Sa bhliain 1981 ceapadh é mar Cheann Roinn na Gaeilge i gColáiste Phádraig ([[Ollscoil Chathair Bhaile Átha Cliath|Ollscoil na hÉireann, Ollscoil Chathair Bhaile Átha Cliath]]). Sa bhliain 2006 ceapadh Titley ina Ollamh le Nua‑Ghaeilge i g[[Coláiste na hOllscoile, Corcaigh]].<ref>{{Lua idirlín|url=http://www.munsterlit.ie/Writer%20pages/Titley,%20Alan.html|teideal=Alan Titley|údar=Ionad Litríochta an Deiscirt|dáta=2016-03-05|work=web.archive.org|dátarochtana=2022-09-04|archivedate=2016-03-05|archiveurl=https://web.archive.org/web/20160305001808/http://www.munsterlit.ie/Writer%20pages/Titley,%20Alan.html}}</ref> Tá an Titlíoch ina chónaí i n[[Glas Naíon]], taobh thuaidh de Bhaile Átha Cliath. Tá cúigear clainne aige lena bhean Mary - Gavan, Keelan, Aoife, Bróna agus Fergal.<ref>{{Lua idirlín|url=https://www.irishecho.com/2015/4/new-life-for-darkly-comic-masterpiece|teideal=New life for 'darkly comic masterpiece'|language=en|work=Irish Echo Newspaper|dátarochtana=2022-09-04}}</ref> === Scríbhneoir === Is iriseoir, criticeoir, úrscéalaí, gearrscéalaí, agus drámadóir é Titley, agus is iomaí duais scríbhneoireachta atá buaite aige. Tá ''Méirscrí na Treibhe'' (1978) suite in Iarthar Afraice agus cuntas ann ar an achrann a lean an neamhspleáchas. [[Íomhá:Waiting For Godot 2016.jpg|mion|Tagann Godot (aist.)]] Ansin tháinig ''Stiall Fhial Feola'' (1980), úrscéal, agus ''Eiriceachtaí agus Scéalta Eile'' (1987) óna lámh. Is minic an greann searbh agus an scigaithris le haithint ar a shaothar. [[Úrscéal stairiúil]] is ea ''An Fear Dána'' (1993) agus é bunaithe ar shaol Mhuireadhaigh Albanaigh Uí Dhálaigh, file. Tá lé aige le ficsean gearr greannmhar, rud a chuir sé in iúl le ''Fabhalscéalta'' (1995) agus ''Leabhar Nóra Ní Anluain'' (1998). Léiríodh drámaí stáitse agus raidió dá chuid: bhí ''Tagann Godot'' (1991) le feiceáil in [[Amharclann na Mainistreach]]. [[Íomhá:The Irish Times logo.svg|mion]] Foilsíodh ''Gluaiseacht'', úrscéal faoin [[imirce]], sa bhliain [[2009]].<ref>{{Luaigh foilseachán|title=Gluaiseacht /|url=https://catalogue.nli.ie/Record/vtls000289009|publisher=An Gúm,|date=2009|author=Alan Titley}}</ref> Tá criticeoireacht liteartha agus shóisialta Titley le fáil ar ''An tÚrscéal Gaeilge'' (1991) agus ar ''Chun Doirne'' (1997), bailiúchán aistí. "Is é an t-aon teist fhiúntais amháin ar fhilíocht nó ar phrós an bhfuil sé láidir nó lag, misniúil nó meata… "Is é atá san litríocht, mar sin, ná cleamhnas idir nós agus samhlaíocht. Nuair is é an tsamhlaíocht atá in uachtar agus an nós á chur ó chothrom aige bíonn faill na hardlitríochta chugainn. Nuair a bhíonn an nós thuas is minic go mbíonn an toradh lag, faoin, glídiúil. Ach is litríocht í mar sin féin."<ref name=":1">Alan Titley, Litríocht na Gaeilge, Litríocht an Bhéarla agus Irish Literature. Aiste 1981.</ref> Tá colún Gaeilge aige ar an [[The Irish Times|''Irish Times'']] darb ainm ''Crobhingne''. <blockquote> "Tá scamall an bháis os cionn na Gaeilge i gcónaí. Ní féidir féachaint timpeall ná romhat ná in airde gan é a fheiceáil. Ba dhall an té a dhéanfadh neamart ann. Ach más dídean é an ealaín aonair i gcoinne an bháis aonair is cosaint í litríocht teanga in aghaidh bhás na teanga sin. Is gníomh creidimh, dóchais agus carthanachta í an scríbhneoireacht in éineacht; is dúnadh súl í; is cluiche í leis an gcinniúint, iasacht ón aimsir fháistineach, gadaíocht ón tsíoraíocht, éamh in éadan an chiúnais. Dá dhána, dá mhisniúla, dá chróga í an litríocht, dá airde a glam, is ea is óige, is fuinniúla, is bíogúla a bheidh sí. Is iad na seandaoine a fhanann cois na tine agus a chuimhníonn ar na laethanta fadó, a mhaireann in anallód is a fhanann leis an mbás. Is é an duine dalba a chaitheann seile in aghaidh an éaga, a théann ag magadh faoi is ag spochadh as, a deireann "fúbún fútsa freisin" suas lean phus.<ref name=":1" /> </blockquote>Thug sé cuid dá thuairimí faoi sprioc an scríbhneora ina aiste: An Scríbhneoir agus an Stát (1984). "Is é gnó an stáit focail a smachtú, a chungú, a mharú nuair is gá; gnó an scríbhneora iad a fhuascailt, cead siúil is scléipe is ramscéalaíochta a thabhairt dóibh. "Tá idéil na polaitíochta intuarascála, sochuntais. Tá idéil na healaíne néalscaoilte, spásfhairsing, ilfhoirceanda, dothadhaill más ann in aon chor dóibh." "Gnó an pholaiteora an taos a chrua, a chalcadh, a thabhairt ar aon dath; gnó an scríbhneora an taos a dhíbirt, a ruaigeadh, and an taos nach bhfuil dána....... ní raibh aon dul as." == Saothar == ===Gaeilge=== [[Íomhá:Gluaiseacht clúdach.jpg|mion|upright|''[[Gluaiseacht (úrscéal)|Gluaiseacht]]'', úrscéal faoin [[Dídeanaí|teitheadh]]]] *''Ag dul i bhfad'', 2023<ref>{{Lua idirlín|url=https://www.siopagaeilge.ie/products/ag-dul-i-bhfad-alan-titley|teideal=Ag dul i bhfad|údar=Alan Titley|language=ga-IE|work=An Siopa Gaeilge|dátarochtana=2024-02-11}}</ref> Ar Ghearrliosta Leabhar Gaeilge na Bliana Fhoras na Gaeilge *''Liricí Gearra'', 2021. Liricí, véarsaíocht, dánta is prós. An dara cnuasach filíochta de chuid Titley Coiscéim<ref>{{Lua idirlín|url=https://www.litriocht.com/t%C3%A1irge/lirici-gearra/|teideal=Liricí Gearra {{!}} Litríocht ISBN 6660012210121|údar=Alan Titley|dáta=2021|language=ga-IE|dátarochtana=2024-02-11}}</ref> *Lúba, 2020, do pháistí 6-12 mbliana d’aois An Gúm ISBN 9781857919608<ref>{{Lua idirlín|url=https://www.litriocht.com/t%C3%A1irge/luba/|teideal=Lúba {{!}} Litríocht|údar=Alan Titley|dáta=2020|language=ga-IE|dátarochtana=2024-02-11}}</ref> *''Lámh, Lámh Eile'', 2018 * ''An Bhean Feasa'', 2014 * ''An Chuallacht Léannta: ceiliúradh ar Íosánaigh agus Léann na Gaeilge'', 2013 * ''Rabhadh Dánta'', 2013 * ''Smuf'', 2012 * ''Na Drámaí Garbha'', 2011 * ''Scríbhneoirí faoi chaibidil'', 2010 * [[Gluaiseacht (úrscéal)|''Gluaiseacht'' (úrscéal)]], 2009 * ''An réabhlóid mar ghníomh dínite'', 2007 * ''Tyda'', 2006 * ''Beir leat do shár-Ghaeilg Súil siar agus ar aghaidh'', 2004 * ''Amach'', 2003 * ''Leabhar Nóra Ní Anluain: céad scéal ó cheartlár na cruinne'', 1998 * ''Chun doirne: rogha aistí'', 1996 (Lagan Press, [[Béal Feirste]]) Leabhar 203 leathanach ina bhfuil ocht n-aiste thathagacha a chuireadh i gcló cheana idir 1981 agus 1990. Pléann sé teoiric na critice go mion ann. Pléann sé scríbhneoirí na Gaeilge agus scríbhneoirí na teanga eile úd, agus cúinsí a scríbhneoireachta. Agus pléann sé go mion, [[an Cadhnach]] mar iriseoir agus mar ghearrscéalaí, [[Brian Merriman]] agus [[Iain Mac a' Ghobhainn]], sríbhneoir Albannach. * ''Fabhalscéalta'', 1995 * ''An cogadh in aghaidh na critice'', 1994 * ''An fear dána'', 1993 * ''An t-úrscéal Gaeilge'', 1991 * ''Tagann Godot'' (dráma Beckett), 1991 ''T'' ''[[An Clóchomhar|Clóchomhar]]'', ISBN 978-1-906882-10-5 * ''Eiriceachtaí agus Scéalta Eile'', 1987 * ''Stiall fhial feola'', 1980 * ''Méirscrí na treibhe'', 1978 * ''Máirtín Ó Cadhain: clár saothair'', 1975 ===Béarla=== * ''The Dirty Dust. Cré na Cille'', 2015 * ''The History of the Irish Book, vol. II'', 2013 * ''Nailing Theses: selected essays'', 2011 * ''A pocket history of Gaelic culture'', 2000 == Cláir faisnéise == * ''Scéal na Gaeilge'', TG4 2012<ref>{{Lua idirlín|url=https://nos.ie/meain/teilifis/sceal-na-gaeilge-alan-titley-ar-fail-ar-youtube-anois/|teideal=‘Scéal na Gaeilge’ Alan Titley ar fáil ar YouTube anois|údar=NÓS|dáta=Eanáir 2021|language=en-US|work=NÓS|dátarochtana=2022-09-04}}{{Dead link|date=Aibreán 2026 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> == Tagairtí == {{reflist}} == Naisc sheachtracha == * [http://www.beo.ie/alt-alan-titley.aspx Agallamh le ''Beo'', Eagrán 37, 2004] {{DEFAULTSORT:Titley, Alan}} [[Catagóir:Scríbhneoirí Éireannacha]] [[Catagóir:Criticeoirí Éireannacha]] [[Catagóir:Léirmheastóirí liteartha]] [[Catagóir:Gearrscéalaithe Éireannacha]] [[Catagóir:Drámadóirí Éireannacha]] [[Catagóir:Úrscéalaithe Éireannacha]] [[Catagóir:Scríbhneoirí ficsin thuairimigh]] [[Catagóir:Ficsean uafáis Éireannach]] [[Catagóir:Ficsean uafáis i nGaeilge]] [[Catagóir:Staraithe na Gaeilge]] [[Catagóir:Staraithe Éireannacha ón 20ú haois]] [[Catagóir:Staraithe Éireannacha ón 21ú haois]] [[Catagóir:Litríocht taistil na Gaeilge]] [[Catagóir:Litríocht taistil Éireannach]] [[Catagóir:Iarmhic Léinn Choláiste Phádraig, Droim Conrach]] [[Catagóir:Daoine a rugadh i 1947]] [[Catagóir:Daoine as Contae Chorcaí]] [[Catagóir:Iriseoirí The Irish Times]] [[Catagóir:Daoine beo]] [[Catagóir:Baill d’Acadamh Ríoga na hÉireann]] [[Catagóir:Scoláirí Gaeilge]] qyt4gt38i09vogjngy8aes0nk9zkbct Module:TableTools 828 65374 1329039 1327193 2026-10-01T20:35:24Z Alison 570 Cealaíodh athrú [[Special:Diff/1327193|1327193]] le [[Special:Contributions/Hamish|Hamish]] ([[User talk:Hamish|plé]]) - looks like this caused a problem 1329039 Scribunto text/plain --[[ ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should -- -- not be called directly from #invoke. -- ------------------------------------------------------------------------------------ --]] local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti --[[ ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ --]] function p.isPositiveInteger(v) if type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity then return true else return false end end --[[ ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a value can be a valid table key. Lua will -- generate an error if a NaN is used as a table key. ------------------------------------------------------------------------------------ --]] function p.isNan(v) if type(v) == 'number' and tostring(v) == '-nan' then return true else return false end end --[[ ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ --]] function p.shallowClone(t) local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end --[[ ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ --]] function p.removeDuplicates(t) checkType('removeDuplicates', 1, t, 'table') local isNan = p.isNan local ret, exists = {}, {} for i, v in ipairs(t) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end --[[ ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ --]] function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k, v in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end --[[ ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will -- return {1, 3, 6}. ------------------------------------------------------------------------------------ --]] function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. s = s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') return s end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k, v in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end --[[ ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like ("foo1", "bar1", "foo2", "baz2"), returns a table -- of subtables in the format -- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} } -- Keys that don't end with an integer are stored in a subtable named "other". -- The compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ --]] function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end --[[ ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ --]] function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end --[[ ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ --]] function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end --[[ ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ --]] function p.size(t) checkType('size', 1, t, 'table') local i = 0 for k in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 else -- This will fail with table, boolean, function. return item1 < item2 end end --[[ Returns a list of the keys in a table, sorted using either a default comparison function or a custom keySort function. ]] function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, { 'function', 'boolean', 'nil' }) end local list = {} local index = 1 for key, value in pairs(t) do list[index] = key index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(list, keySort) end return list end --[[ Iterates through a table, with the keys sorted using the keysToList function. If there are only numerical keys, sparseIpairs is probably more efficient. ]] function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local list = p.keysToList(t, keySort, true) local i = 0 return function() i = i + 1 local key = list[i] if key ~= nil then return key, t[key] else return nil, nil end end end --[[ Returns true if all keys in the table are consecutive integers starting at 1. --]] function p.isArray(t) checkType("isArray", 1, t, "table") local i = 0 for k, v in pairs(t) do i = i + 1 if t[i] == nil then return false end end return true end -- { "a", "b", "c" } -> { a = 1, b = 2, c = 3 } function p.invert(array) checkType("invert", 1, array, "table") local map = {} for i, v in ipairs(array) do map[v] = i end return map end --[[ { "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true } --]] function p.listToSet(t) checkType("listToSet", 1, t, "table") local set = {} for _, item in ipairs(t) do set[item] = true end return set end --[[ Recursive deep copy function. Preserves identities of subtables. ]] local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = deepcopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end --[[ Concatenates all values in the table that are indexed by a number, in order. sparseConcat{ a, nil, c, d } => "acd" sparseConcat{ nil, b, c, d } => "bcd" ]] function p.sparseConcat(t, sep, i, j) local list = {} local list_i = 0 for _, v in p.sparseIpairs(t) do list_i = list_i + 1 list[list_i] = v end return table.concat(list, sep, i, j) end --[[ -- This returns the length of a table, or the first integer key n counting from -- 1 such that t[n + 1] is nil. It is similar to the operator #, but may return -- a different value when there are gaps in the array portion of the table. -- Intended to be used on data loaded with mw.loadData. For other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of -- the number of unnamed template parameters, so use this function for -- frame.args. --]] function p.length(t) local i = 1 while t[i] ~= nil do i = i + 1 end return i - 1 end function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p tqif0qe0lu98pj8cuq70kgi6evye5t3 American Horror Story 0 78794 1329046 1328983 2026-10-02T03:08:51Z Stephan1000000 39047 138 1329046 wikitext text/x-wiki {{WD Bosca Sonraí Sraith Teilifíse|num_episodes=138}} Is sraith [[teilifís|theilifís]]e [[SAM|Mheiriceánach]] í '''''American Horror Story''''' nó '''''AHS''''' a bhíonn ag plé leis na hábhair a bhaineann leis na h[[osnádúr]], ábhair uafáis, agus na [[beatha eachtardhomhanda]]. [[Ryan Murphy]] agus [[Brad Falchuk]] a cruthaíodh an clár, agus cuireadh tús leis sa bhliain [[2011]]. ==Eipeasóidí== ''Príomhalt: [[Liosta eipeasóidí American Horror Story]]'' ===Murder House ([[2011]])=== ''Príomhalt: [[American Horror Story: Murder House]]'' ===Asylum ([[2012]]-[[2013|3]])=== ''Príomhalt: [[American Horror Story: Asylum]]'' ===Coven ([[2013]]-[[2014|4]])=== ''Príomhalt: [[American Horror Story: Coven]]'' ===Freak Show ([[2014]]-[[2015|5]])=== ''Príomhalt: [[American Horror Story: Freak Show]]'' ===Hotel ([[2015]]-[[2016|6]])=== ''Príomhalt: [[American Horror Story: Hotel]]'' ===Roanoke ([[2016]])=== ''Príomhalt: [[American Horror Story: Roanoke]]'' ===Cult ([[2017]])=== ''Príomhalt: [[American Horror Story: Cult]]'' ===Séasúr 8 ([[2018]])=== ===Séasúr 9 ([[2019]])=== ==Foireann aisteoirí== <blockquote class="toccolours" style="text-align:justify; float:center; padding: 5px 5px 5px 5px; display:table;"> '''{{center|List indicator(s)}}''' * {{legend|#ddffdd|Léiríonn cill ghlas an t-aisteoir mar príomhaisteoir.}} * {{legend|#ffe3e3|Léiríonn cill dhearg an t-aisteoir mar aisteoir athfhillteach nó aoi-réalta.}} * {{legend|#DAEBFF|Léiríonn cill spéirghorm an t-aisteoir mar aisteoir aoi-réalta speisialta.}} * {{legend|lightgrey|Léiríonn cill liath níor ghlac an t-aisteoir seo páirt sa séasúr faoi seach.}} </blockquote> {| class="wikitable plainrowheaders" width="80%" |- ! scope="col" rowspan="2" width="11%" | Aisteoir ! scope="col" colspan="7" | Carachtar sa séasúr |- ! scope="col" style="width: 10%" | ''[[American Horror Story: Murder House|Murder House]]'' ! scope="col" style="width: 10%" | ''[[American Horror Story: Asylum|Asylum]]'' ! scope="col" style="width: 10%" | ''[[American Horror Story: Coven|Coven]]'' ! scope="col" style="width: 10%" | ''[[American Horror Story: Freak Show|Freak Show]]'' ! scope="col" style="width: 10%" | ''[[American Horror Story: Hotel|Hotel]]'' ! scope="col" style="width: 10%" | ''[[American Horror Story: Roanoke|Roanoke]]'' ! scope="col" style="width: 10%" | ''[[American Horror Story: Cult|Cult]]'' |- ! colspan="9" style="background-color:#ccf;" | ===Príomhfhoireann Aisteoirí=== |- ! scope="row" style="text-align:left" | [[Connie Britton]] | [[Vivien Harmon]] || colspan="6" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Dylan McDermott]] | [[Dr. Ben Harmon]] || [[Johnny Morgan]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Evan Peters]] | [[Tate Langdon]] || [[ Kit Walker]] || [[Kyle Spencer]] || [[Jimmy Darling]] || [[James Patrick March]] || [[Rory Monahan]] || [[Kai Anderson]] |- ! scope="row" style="text-align:left" | [[Taissa Farmiga]] | [[Violet Harmon]] || style="background-color:lightgrey;" | &nbsp; || [[Zoe Benson]] || colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Sophie Green]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Denis O'Hare]] | [[Larry Harvey]] || style="background-color:lightgrey;" | &nbsp; || [[Spalding]] || [[Stanley]] || [[Liz Taylor]] || [[William van Henderson]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Jessica Lange]] | [[Constance Langdon]] || [[Sister Jude Martin]] || [[Fiona Goode]] || [[Elsa Mars]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Zachary Quinto]] | [[Chad Warwick]] || [[Dr. Oliver Thredson]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Joseph Fiennes]] | style="background-color:lightgrey;" | &nbsp; || [[Msgr. Timothy Howard]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Sarah Paulson]] | [[Billie Dean Howard]] || [[Lana Winters]] || [[Cordelia Foxx]] || [[Bette and Dot Tattler]] || [[Sally McKenna]] <hr/> Billie Dean Howard || [[Audrey Tindall]] <hr/> Lana Winters || [[ Allyson "Ally" Mayfair-Richards]] |- ! scope="row" style="text-align:left" | [[Lily Rabe]] | [[Nora Montgomery]] || [[Sister Mary Eunice McKee]] || [[Misty Day]] || [[Sister Mary Eunice McKee]] || [[Aileen Wuornos]] || [[Shelby Miller]] || bgcolor="lightgrey" | |- ! scope="row" style="text-align:left" | [[Lizzie Brocheré]] | style="background-color:lightgrey;" | &nbsp; || [[Grace Bertrand]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[James Cromwell]] | style="background-color:lightgrey;" | &nbsp; || [[Dr. Arthur Arden]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Frances Conroy]] | [[Moira O'Hara]] || [[Shachath]] || [[Myrtle Snow]] || [[Gloria Mott]] || style="background-color:lightgrey;" | &nbsp; || [[Mama Polk]] |- ! scope="row" style="text-align:left" | [[Emma Roberts]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Madison Montgomery]] || [[Maggie Esmeralda]] || colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Serina Belinda]]<ref name="emma">{{cite web|url=https://www.instagram.com/p/BXQ5t-TAZ95/|title=Look who showed up on the set of Cult looking glamorous and ready for action.|website=[[Instagram]]|first=Ryan|last=Murphy|date=August 1, 2017|accessdate=August 1, 2017]]</ref><ref name="tvlineaugust"><nowiki>{{cite web|url=</nowiki>http://tvline.com/2017/08/25/ahs-cult-spoilers-lena-dunham-valerie-solanas-emma-roberts/|title=Lena{{Dead link|date=Meán Fómhair 2022 |bot=InternetArchiveBot |fix-attempted=yes }} Dunham, Emma Roberts' Cult Characters Revealed, More AHS Scoop|publisher=[[TVLine]]|first=Andy|last=Swift|date=August 25, 2017|accessdate=August 25, 2017]]</ref> |- ! scope="row" style="text-align:left" | [[Kathy Bates]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Marie Delphine LaLaurie|Delphine LaLaurie]] || [[Ethel Darling]] || [[Iris]] || [[Agnes Mary Winstead]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Michael Chiklis]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Dell Toledo]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Finn Wittrock]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Dandy Mott]] || [[Tristan Duffy]] <hr/> [[Rudolph Valentino]] || [[Jether Polk]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Angela Bassett]] | colspan="2" style="background-color:lightgrey;" | &nbsp;|| [[Marie Laveau]] || [[Desiree Dupree]] || [[Ramona Royale]] || [[Monet Tumusiime]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Wes Bentley]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Edward Mordrake]] || [[Det. John Lowe]] || [[Dylan]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Matt Bomer]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Andy]] || [[Donovan]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Chloë Sevigny]] | style="background-color:lightgrey;" | &nbsp; || [[Shelley]] || colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Dr. Alex Lowe]] || colspan="2" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Cheyenne Jackson]] | colspan="4" style="background-color:lightgrey;" | &nbsp; || [[Will Drake]] || [[Sidney Aaron James]] || [[Dr. Rudy Vincent]] |- ! scope="row" style="text-align:left" | [[Lady Gaga]] | colspan="4" style="background-color:lightgrey;" | &nbsp; || [[Elizabeth Johnson]] || [[Scathach]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Cuba Gooding, Jr.]] | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Dominic Banks]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[André Holland]] | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Matt Miller]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Billie Lourd]] | colspan="6" style="background-color:lightgrey;" | &nbsp; || [[Winter Anderson]] |- ! scope="row" style="text-align:left" | [[Alison Pill]] | colspan="6" style="background-color:lightgrey;" | &nbsp; || [[Ivy Mayfair-Richards]] |- ! colspan="9" style="background-color:#ccf;" | ===Foireann Aisteoirí Athfhillteach=== |- ! scope="row" style="text-align:left" | [[Alexandra Breckenridge]] | [[Young Moira O'Hara]] || style="background-color:lightgrey;" | &nbsp; || [[Kaylee]] || colspan="4" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Christine Estabrook]] | [[Marcy]] || colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Marcy]] || colspan="2" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Jamie Brewer]] | [[Adelaide Langdon]] || style="background-color:lightgrey;" | &nbsp; || [[Nan]] || [[Marjorie]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Matt Ross (actor)|Matt Ross]] | [[Dr. Charles Montgomery]] || colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Dr. Charles Montgomery]] || colspan="2" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Adina Porter]] | [[Sally Freeman]] || colspan="4" style="background-color:lightgrey;" | &nbsp; || [[Lee Harris]] || [[Beverly Hope]] |- ! scope="row" style="text-align:left" | [[Teddy Sears]] | [[Patrick]] || colspan="6" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Anthony Ruivivar]] | [[Miguel Ramos]] || colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Richard Ramirez]] || colspan="2" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Adam Levine]] | style="background-color:lightgrey;" | &nbsp; || [[Leo Morrison]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Jenna Dewan-Tatum]] | style="background-color:lightgrey;" | &nbsp; || [[Teresa Morrison]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Clea DuVall]] | style="background-color:lightgrey;" | &nbsp; || [[Wendy Peyser]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Naomi Grossman]] | style="background-color:lightgrey;" | &nbsp; || [[Pepper]] || style="background-color:lightgrey;" | &nbsp; || [[Pepper]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Fredric Lehne]] | style="background-color:lightgrey;" | &nbsp; || [[Frank McCann]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Britne Oldford]] | style="background-color:lightgrey;" | &nbsp; || [[Alma Walker]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Robin Bartlett]] | style="background-color:lightgrey;" | &nbsp; || [[Dr. Miranda Crump]] || [[Cecily Pembroke]] || colspan="4" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Robin Weigert]] | style="background-color:lightgrey;" | &nbsp; || [[Cynthia Potter]] || colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Mama Polk]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Josh Hamilton]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Hank Foxx]] || colspan="4" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Alexander Dreymon]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Luke Ramsey]] || colspan="4" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Lance Reddick]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Papa Legba]] || colspan="4" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Leslie Jordan]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Quentin Fleming]] || colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Ashley Gilbert]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Grace Gummer]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Millie]] || [[Penny]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[John Carroll Lynch]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Twisty the Clown]] || [[John Wayne Gacy]] || style="background-color:lightgrey;" | &nbsp; || [[Twisty the Clown]] |- ! scope="row" style="text-align:left" | [[Skyler Samuels]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Bonnie Lipton]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Patti LaBelle]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Dora Brown]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Lee Tergesen]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Vince]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Chrissy Metz]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Barbara]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Malcolm-Jamal Warner]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Angus T. Jefferson]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Matthew Glave]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Larry Gayheart]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Angela Sarafyan]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Alice]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[David Burtka]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Michael Beck]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Richard T. Jones]] | colspan="4" style="background-color:lightgrey;" | &nbsp; || [[Det. Andrew Hahn]] || colspan="2" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Max Greenfield]] | colspan="4" style="background-color:lightgrey;" | &nbsp; || [[Gabriel]] || colspan="2" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Alexandra Daddario]] | colspan="4" style="background-color:lightgrey;" | &nbsp; || [[Natacha Rambova]] || colspan="2" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Saniyya Sidney]] | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Flora Harris]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Chaz Bono]] | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Brian Wells]] || [[Gary Longstreet]] |- ! scope="row" style="text-align:left" | [[Shannon Lucio]] | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Diana Cross]] || style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Jacob Artist]] | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Todd Allan Connors]] || colspan="1" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Brian Howe (aisteoir)|Brian Howe]] | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Mark Phillips]] || colspan="1" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Emma Bell]] | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Tracy Logan]] || colspan="1" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | James Morosini | colspan="5" style="background-color:lightgrey;" | &nbsp; || [[Bob Kinnaman]] || [[R.J]]<ref>{{cite tweet|number=912416446214483974|user=AHSFX|date=September 25, 2017|accessdate=September 26, 2017|title=Lights. Camera. Chaos. James Morosini is R.J. Tuesday 10 PM on FX. #AHSCult]]</ref> |- ! scope="row" style="text-align:left" | [[Colton Haynes]] | colspan="6" style="background-color:lightgrey;" | &nbsp; || [[Det. Jack Samuels]] |- ! scope="row" style="text-align:left" | Cooper Dodson | colspan="6" style="background-color:lightgrey;" | &nbsp; || [[Ozymandias "Oz" Mayfair-Richards]] |- ! scope="row" style="text-align:left" | [[Leslie Grossman]] | colspan="6" style="background-color:lightgrey;" | &nbsp; || [[Meadow Wilton]] |- ! colspan="9" style="background-color:#ccf;" | ===Foireann Aisteoirí Eile=== |- ! scope="row" style="text-align:left" | [[Kate Mara]] | [[Hayden McClaine]] || colspan="6" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Charles S. Dutton]] | [[Detective Granger]] || colspan="6" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Eric Stonestreet]] | [[Derek]] || colspan="6" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Ian McShane]] | style="background-color:lightgrey;" | &nbsp; || [[Leigh Emerson]] || colspan="5" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Gabourey Sidibe]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Queenie]] || [[Regina Ross]] || [[Queenie]] || colspan="2" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Danny Huston]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[The Axeman of New Orleans|The Axeman]] || [[Massimo Dolcefino]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Mare Winningham]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Alicia Spencer]] || [[Rita Gayheart]] || [[Hazel Evers]] || style="background-color:lightgrey;" | &nbsp; || ''níos déanaí'' |- ! scope="row" style="text-align:left" | [[Patti LuPone]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Joan Ramsey]] || colspan="4" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Stevie Nicks]] | colspan="2" style="background-color:lightgrey;" | &nbsp; || [[Stevie Nicks]] (''í féin'') || colspan="4" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Celia Weston]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Lillian Hemmings]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Neil Patrick Harris]] | colspan="3" style="background-color:lightgrey;" | &nbsp; || [[Chester Creb]] || colspan="3" style="background-color:lightgrey;" | &nbsp; |- ! scope="row" style="text-align:left" | [[Naomi Campbell]] | colspan="4" style="background-color:lightgrey;" | &nbsp; || [[Claudia Bankson]] || colspan="2" style="background-color:lightgrey;" | |- ! scope="row" style="text-align:left" | [[Billy Eichner]] | colspan="6" style="background-color:lightgrey;" | &nbsp; || [[Harrison Wilton]] |- ! colspan="9" style="background-color:#ccf;" | ===Foireann eile=== |- ! scope="row" style="text-align:left" | [[Lena Dunham]] | colspan="6" style="background-color:lightgrey;" | &nbsp; || |[[Valerie Solanas]]<ref>{{cite tweet|user=MrRPMurphy|author=Ryan Murphy|number=887844862426468352|title=Thrilled that my talented friend Lena Dunham is joining the AMERICAN HORROR STORY family. Always wanted to work together, and now we r!|date=July 19, 2017|accessdate=July 19, 2017}}</ref><ref>{{cite web|url=http://deadline.com/2017/08/american-horror-story-cult-ryan-murphy-john-landgraf-donald-trump-hillary-clinton-1202156645/|title='American Horror Story: Cult': Ryan Murphy On Lena Dunham's Portrayal Of Valerie Solanas|website=Deadline.com|first=Anthony|last=D'Alessandro|date=August 25, 2017|accessdate=August 25, 2017}}</ref> |- |} <!-- ==Buntuiscint== ==Miotaseoalíocht American Horror Story== ==Foireann aisteoirí agus carachtair== ==Táirgeadh== ===Ceol agus sraitheog tosaigh=== ==Craoladh agus eisiúint== ==Seachshraitheanna theilifíseanna== ==Tionchar== --> ==Nótaí== == Tagairtí == {{reflist}} ==Naisc Sheachtracha== * [http://www.fxnetworks.com/shows/originals/ahs/ Suíomh oifigiúil Fox] * [http://www.imdb.com/title/tt1844624/ American Horror Story] ar [[IMDb]] * [http://www.tv.com/shows/american-horror-story/ American Horror Story] {{Webarchive|url=https://web.archive.org/web/20120408122839/http://www.tv.com/shows/american-horror-story |date=2012-04-08 }} at [[TV.com]] {{americanhorrorstory}} [[Catagóir:American Horror Story|*]] [[Catagóir:Sraitheanna teilifíse Meiriceánacha a thosaigh i 2011]] [[Catagóir:Cláir Teilifíse Mheiriceánacha]] [[Catagóir:Cláir ficsean uafáis]] [[Catagóir:Cláir ficsean eolaíochta a bhaineann leis na beatha eachtardhomhanda]] [[Catagóir:Cláir teilifíse a bhaineann leis na beatha eachtardhomhanda]] [[Catagóir:Cláir Fox]] cuqeikpeharhi8rwc6nlew3jh6i2wdz Module:Wikidata 828 84920 1329023 1229703 2026-10-01T12:17:39Z An Sionnach Rua 29036 1329023 Scribunto text/plain -- version 20200526 from master @cawiki local p = {} -- Initialization of variables -------------------- local i18n = { -- internationalisation at [[Module:Wikidata/i18n]] ["errors"] = { ["property-not-found"] = "Maoin gan aimsiú.", ["qualifier-not-found"] = "Cáilitheoir gan aimsiú.", }, ["datetime"] = { -- $1 is a placeholder for the actual number ["beforenow"] = "$1 RCh", -- how to format negative numbers for precisions 0 to 5 ["afternow"] = "$1 IC", -- how to format positive numbers for precisions 0 to 5 ["bc"] = '$1 "RCh"', -- how print negative years ["ad"] = "$1", -- how print 1st century AD dates [0] = "$1 billiún bliain", -- precision: billion years [1] = "$100 milliún bliain", -- precision: hundred million years [2] = "$10 milliún bliain", -- precision: ten million years [3] = "$1 milliún bliain", -- precision: million years [4] = "$100000 bliain", -- precision: hundred thousand years; thousand separators added afterwards [5] = "$10000 bliain", -- precision: ten thousand years; thousand separators added afterwards [6] = "$1 míle bliain", -- precision: millennium [7] = "$1 aois", -- precision: century [8] = "$1í", -- precision: decade -- the following use the format of #time parser function [9] = "Y", -- precision: year, [10] = "F Y", -- precision: month [11] = "j F Y", -- precision: day ["hms"] = {["uair"] = "h", ["nóiméad"] = "m", ["soicind"] = "s"}, -- duration: xh xm xs }, ["years-old"] = { ["singular"] = "bhliain d'aois", -- year old, as in {{PLURAL:$1|singular|plural}} ["plural"] = "bliana d'aois", -- years old ["paucal"] = "mbliana d'aois", -- for languages with 3 plural forms as in {{PLURAL:$1|singular|paucal|plural}} }, ["cite"] = { -- cite parameters ["title"] = "teideal", ["author"] = "údar", ["date"] = "dáta", ["pages"] = "leathanaigh", ["language"] = "teanga", -- cite web parameters ["url"] = "url", ["website"] = "suíomh gréasáin", ["access-date"] = "dáta rochtana", ["archive-url"] = "url cartlainne", ["archive-date"] = "dáta cartlainne", ["publisher"] = "foilsitheoir", ["quote"] = "tagairt", -- cite journal parameters ["work"] = "saothar", ["issue"] = "eagrán", ["issn"] = "issn", ["doi"] = "doi" }, -- local wiki settings ["addpencil"] = false, -- adds a pencil icon linked to Wikidata statement, planned to overwrite by Wikidata Bridge ["categorylabels"] = "", -- Category:Pages with Wikidata labels not translated (void for no local category) ["addfallback"] = {} -- additional fallback language codes } local cases = {} -- functions for local grammatical cases defined at [[Module:Wikidata/i18n]] local required = ... -- variadic arguments from require function local wiki = { langcode = mw.language.getContentLanguage().code, module_title = required or mw.getCurrentFrame():getTitle() } local untranslated -- used in infobox modules: nil or true local _ -- variable for unused returned values, avoiding globals -- Module local functions -------------------------------------------- -- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0 local function tableMerge(t1, t2) for k, v in pairs(t2) do if type(v) == "table" then if type(t1[k] or false) == "table" then tableMerge(t1[k] or {}, t2[k] or {}) else t1[k] = v end else t1[k] = v end end return t1 end local function loadI18n(lang) local exist, res = pcall(require, wiki.module_title .. "/i18n") if exist and next(res) ~= nil then tableMerge(i18n, res.i18n) cases = res.cases end if lang ~= wiki.langcode then exist, res = pcall(require, wiki.module_title .. "/i18n/" .. lang) if exist and next(res) ~= nil then tableMerge(i18n, res.i18n) tableMerge(cases, res.cases) end end end -- Table of language codes: requested or default and its fallbacks local function findLang(langcode) if mw.language.isKnownLanguageTag(langcode or '') == false then local cframe = mw.getCurrentFrame() local pframe = cframe:getParent() langcode = pframe and pframe.args.lang if mw.language.isKnownLanguageTag(langcode or '') == false then if not mw.title.getCurrentTitle().isContentPage then langcode = cframe:preprocess('{{int:lang}}') end if mw.language.isKnownLanguageTag(langcode or '') == false then langcode = wiki.langcode end end end loadI18n(langcode) local languages = mw.language.getFallbacksFor(langcode) table.insert(languages, 1, langcode) if langcode == wiki.langcode then for _, l in ipairs(i18n.addfallback) do table.insert(languages, l) end end return languages end -- Argument is 'set' when it exists (not nil) or when it is not an empty string. local function isSet(var) return not (var == nil or var == '') end -- Set local case to a label local function case(localcase, label, ...) if not isSet(label) then return label end if localcase == "smallcaps" then return '<span style="font-variant: small-caps;">' .. label .. '</span>' elseif cases[localcase] then return cases[localcase](label, ...) end return label end -- get safely a serialized snak local function getSnak(statement, snaks) local ret = statement for i, v in ipairs(snaks) do if not ret then return end ret = ret[v] end return ret end -- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages local function getLabelByLangs(id, languages) local label local lang for _, l in ipairs(languages) do if l == wiki.langcode then -- using getLabelWithLang when possible instead of getLabelByLang, do not solve redirects pending phab:T157868 label, l = mw.wikibase.getLabelWithLang(id) else label = mw.wikibase.getLabelByLang(id, l) end if label then lang = l break end end return label, lang end -- getBestStatements if bestrank=true, else getAllStatements with no deprecated local function getStatements(entityId, property, bestrank) local claims = {} if not (entityId and mw.ustring.match(property, "^P%d+$")) then return claims end if bestrank then claims = mw.wikibase.getBestStatements(entityId, property) else local allclaims = mw.wikibase.getAllStatements(entityId, property) for _, c in ipairs(allclaims) do if c.rank ~= "deprecated" then table.insert(claims, c) end end end return claims end -- Is gender femenine? true or false local function feminineGender(id) local claims = mw.wikibase.getBestStatements(id or mw.wikibase.getEntityIdForCurrentPage(),'P21') if getSnak(claims, {1, "mainsnak", "datavalue"}) == nil then -- no claim, novalue or somevalue return false else local genderId = claims[1].mainsnak.datavalue.value.id if genderId == "Q6581072" or genderId == "Q1052281" or genderId == "Q43445" then -- female, transgender female, female organism return true end end return false end -- Fetch female form of label local function feminineForm(id, lang) local feminine_claims = getStatements(id, 'P2521') for _, feminine_claim in ipairs(feminine_claims) do if getSnak(feminine_claim, {'mainsnak', 'datavalue', 'value', 'language'}) == lang then return feminine_claim.mainsnak.datavalue.value.text end end end -- Add an icon for no label in requested language local function addLabelIcon(label_id, lang, uselang, icon) local ret_lang, ret_icon = '', '' if icon then if lang and lang ~= uselang and lang ~= 'mul' then ret_lang = " <sup>(" .. lang .. ")</sup>" end if label_id and (lang == nil or (lang ~= uselang and lang ~= 'mul')) then ret_icon = " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|" .. mw.message.new('Translate-taction-translate'):inLanguage(uselang):plain() .. "|link=https://www.wikidata.org/wiki/Special:EntityPage/" .. label_id .. "?uselang=" .. uselang .. "]]" untranslated = true end if isSet(i18n.categorylabels) and lang ~= uselang and lang ~= 'mul' and uselang == wiki.langcode then ret_icon = ret_icon .. '[[' .. i18n.categorylabels .. (lang and ']]' or '/Q]]') end end return ret_lang .. ret_icon end -- editicon values: true/false (no=false), right, void defaults to i18n.addpencil -- labelicon only by parameter local function setIcons(arg, parg) local val = arg == nil and parg or arg local edit_icon, label_icon if not isSet(val) then edit_icon, label_icon = i18n.addpencil, true elseif val == false or val == "false" or val == "no" then edit_icon, label_icon = false, false else edit_icon, label_icon = val, true end return edit_icon, label_icon end -- Add an icon for editing a statement with requirements for Wikidata Bridge local function addEditIcon(parameters) local ret = '' if i18n.addpencil and parameters.editicon and parameters.id and parameters.property then ret = ' <span data-bridge-edit-flow="single-best-value">' .. "[[File:Arbcom ru editing.svg|10px|baseline|" .. mw.message.new('Editlink'):inLanguage(parameters.lang[1]):plain() .. "|link=https://www.wikidata.org/wiki/" .. parameters.id .. "?uselang=" .. parameters.lang[1] .. "#" .. parameters.property .. "]]" .. "</span>" end return ret end -- add edit icon to the last element of a table local function addEditIconTable(thetable, parameters) if #thetable == 0 or not i18n.addpencil then return thetable end local last_element = thetable[#thetable] local the_icon = addEditIcon(parameters) -- add it before last html closing tags local tags = '' local rev_element = string.reverse(last_element) for tag in string.gmatch(rev_element, '(>%l+/<)') do if string.match(rev_element, '^' .. tags .. tag) then tags = tags .. tag else break end end local last_tags = string.reverse(tags) local offset = string.find(last_element, last_tags .. '$') if offset then thetable[#thetable] = string.sub(last_element, 1, offset - 1) .. the_icon .. last_tags else thetable[#thetable] = last_element .. the_icon end return thetable end -- Escape Lua captures local function captureEscapes(text) return mw.ustring.gsub(text, "(%%%d)", "%%%1") end -- expandTemplate or callParserFunction local function expandBraces(text, formatting) if text == nil or formatting == nil then return text end -- only expand braces if provided in argument, not included in value as in Q1164668 if mw.ustring.find(formatting, '{{', 1, true) == nil then return text end if type(text) ~= "string" then text = tostring(text) end for braces in mw.ustring.gmatch(text, "{{(.-)}}") do local parts = mw.text.split(braces, "|") local title_part = parts[1] local parameters = {} for i = 2, #parts do local subparts = mw.ustring.find(parts[i], "=") if subparts then parameters[mw.ustring.sub(parts[i], 1, subparts-1)] = mw.ustring.sub(parts[i], subparts+1, -1) else table.insert(parameters, parts[i]) end end local braces_expanded if mw.ustring.find(title_part, ":") and mw.text.split(title_part, ":")[1] ~= mw.site.namespaces[10].name -- not a prefix Template: then braces_expanded = mw.getCurrentFrame():callParserFunction{name=title_part, args=parameters} else braces_expanded = mw.getCurrentFrame():expandTemplate{title=title_part, args=parameters} end braces = mw.ustring.gsub(braces, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") -- escape magic characters braces_expanded = captureEscapes(braces_expanded) text = mw.ustring.gsub(text, "{{" .. braces .. "}}", braces_expanded) end return text end -- Resolve Wikidata redirects, pending phab:T157868 local function resolveEntityId(id) if not id or not mw.wikibase.isValidEntityId(id) then return id end -- if no label in English, maybe it is a redirect -- not using mw.title.new(id).isRedirect as it is expensive -- currently getLabelByLang does not follows redirects if mw.wikibase.getLabelByLang(id, 'en') == nil then local entity = mw.wikibase.getEntity(id) -- expensive function if not entity then return nil end if id ~= entity.id then -- Qid redirected to be fixed -- see [[Special:WhatLinksHere/Template:Track/wikidata/redirect]] require(wiki.module_title .. '/debug').track('redirect') require(wiki.module_title .. '/debug').track('redirect/' .. id) else -- no redirect and no English label, fix it to avoid expensive functions require(wiki.module_title .. '/debug').track('label') require(wiki.module_title .. '/debug').track('label/' .. id) end return entity.id end return id end -- format data type math local function printDatatypeMath(data) return mw.getCurrentFrame():callParserFunction('#tag:math', data) end -- format data type musical-notation local function printDatatypeMusical(data, formatting) local attr = {} if formatting == 'sound' then attr.sound = 1 end return mw.getCurrentFrame():extensionTag('score', data, attr) end -- format data type string local function printDatatypeString(data, parameters) if mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting = a pattern return expandBraces(mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = data}), parameters.formatting) elseif parameters.case then return case(parameters.case, data, parameters.lang[1]) end local data_number = string.match(data, "^%d+") if data_number then -- sort key by initial number and remaining string local sortkey = string.format("%019d", data_number * 1000) return data, sortkey .. string.sub(data, #data_number + 1) end return data end -- format data type url local function printDatatypeUrl(data, parameters) if parameters.formatting == 'weblink' then local label_parts = mw.text.split(string.gsub(data, '/$', ''), '/') local label = string.gsub(label_parts[3], '^www%.', '') if #label_parts > 3 then label = label .. '…' end return '[' .. data .. ' ' .. label .. ']' end return printDatatypeString(data, parameters) end -- format data type external-id local function printDatatypeExternal(data, parameters) if parameters.formatting == 'externalid' then local p_stat = mw.wikibase.getBestStatements(parameters.property, 'P1630') -- formatter URL local p_link_pattern = getSnak(p_stat, {1, "mainsnak", "datavalue", "value"}) if p_link_pattern then local p_link = mw.ustring.gsub(p_link_pattern, '$1', {['$1'] = data}) return '[' .. p_link .. ' ' .. data .. ']' end end return printDatatypeString(data, parameters) end -- format data type commonsMedia local function printDatatypeMedia(data, parameters) local icon if not string.find((parameters.formatting or ''), '$1', 1, true) then icon = "no-icon" end return printDatatypeString(data, parameters), icon end -- format data type globe-coordinate local function printDatatypeCoordinate(data, formatting) local function globes(globe_id) local globes = {['Q3343'] = 'Ariel',['Q3134']='Callisto',['Q596']='Ceres', ['Q6604'] = 'Charon',['Q7548'] = 'Deimos',['Q15040']='Dione',['Q2']='Domhan', ['Q3303']='Enceladus',['Q3143']='Europa',['Q3169']='Ganymede', ['Q15037'] = 'Hyperion',['Q17958']='Iapetas',['Q3123']='Io', ['Q319'] = 'Iúpatar',['Q111']='Mars',['Q308']='Mearcair',['Q15034']='Mimas', ['Q3352'] = 'Miranda',['Q405']='Gealach',['Q3332'] = 'Oberon', ['Q7547'] = 'Phobos', ['Q17975'] = 'Phoebe', ['Q339'] = 'Plútón',['Q15050']='Rhea',['Q15047']='Tethys', ['Q2565']='Tíotón',['Q3322'] = 'Titania',['Q3359']='Tríotón', ['Q3338'] = 'Umbriel',['Q313']='Véineas',['Q3030']='Vesta'} return globes[globe_id] end local function roundPrecision(num, prec) if prec == nil or prec <= 0 then return num end local sig = 10^math.floor(math.log10(prec)+.5) -- significant figure from sexagesimal precision: 0.00123 -> 0.001 return math.floor(num / sig + 0.5) * sig end local precision = data.precision local latitude = roundPrecision(data.latitude, precision) local longitude = roundPrecision(data.longitude, precision) if formatting and string.find(formatting, '$lat', 1, true) and string.find(formatting, '$lon', 1, true) then local ret = mw.ustring.gsub(formatting, '$l[ao][tn]', {['$lat'] = latitude, ['$lon'] = longitude}) if string.find(formatting, '$globe', 1, true) then local myglobe = 'earth' if isSet(data.globe) then local globenum = mw.text.split(data.globe, 'entity/')[2] -- http://www.wikidata.org/wiki/Q2 myglobe = globes(globenum) or 'earth' end ret = mw.ustring.gsub(ret, '$globe', myglobe) end return expandBraces(ret, formatting) elseif formatting == 'latitude' then return latitude, "no-icon" elseif formatting == 'longitude' then return longitude, "no-icon" elseif formatting == 'dimension' then return data.dimension, "no-icon" else --default formatting='globe' if isSet(data.globe) == false or data.globe == 'http://www.wikidata.org/entity/Q2' then return 'earth', "no-icon" else local globenum = mw.text.split(data.globe, 'entity/')[2] return globes(globenum) or globenum, "no-icon" end end end -- Local functions for data value quantity local function unitSymbol(id, lang) -- get unit symbol or code local unit_symbol = '' if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then unit_symbol = require(wiki.module_title .. "/Units").getUnit(0, '', id, true) end if unit_symbol == '' then -- fetch it local claims = mw.wikibase.getBestStatements(id, 'P5061') if #claims > 0 then local langclaims = {} table.insert(lang, 'mul') -- multilingual as last try for _, snak in ipairs(claims) do local snak_language = getSnak(snak, {"mainsnak", "datavalue", "value", "language"}) if snak_language and not langclaims[snak_language] then -- just the first one by language langclaims[snak_language] = snak.mainsnak.datavalue.value.text end end for _, l in ipairs(lang) do if langclaims[l] then return langclaims[l] end end end end return unit_symbol end local function getUnit(amount, id, parameters) -- get unit symbol or name local suffix = '' if parameters.formatting == "unitcode" then -- get unit symbol local unit_symbol = unitSymbol(id, parameters.lang) if isSet(unit_symbol) then suffix = unit_symbol end end if suffix == '' then -- formatting=unit, or formatting=unitcode not found -- get unit name local unit_label, lang = getLabelByLangs(id, parameters.lang) if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then suffix = require(wiki.module_title .. "/Units").getUnit(amount, unit_label, id, false) else suffix = (unit_label or id) .. addLabelIcon(id, lang, parameters.lang[1], parameters.editicon) end end if suffix ~= '' then suffix = ' ' .. suffix end return suffix end local function roundPrecision(in_num, out_num) -- rounds out_num with significant figures of in_num (default precision) -- first, count digits after decimal mark, handling cases like '12.345e6' local exponent, prec local integer, dot, decimals, expstr = in_num:match('^(%d*)(%.?)(%d*)(.*)') local e = expstr:sub(1, 1) if e == 'e' or e == 'E' then exponent = tonumber(expstr:sub(2)) end if dot == '' then prec = -integer:match('0*$'):len() else prec = #decimals end if exponent then -- So '1230' and '1.23e3' both give prec = -1, and '0.00123' and '1.23e-3' give 5. prec = prec - exponent end -- significant figures local in_bracket = 10^-prec -- -1 -> 10, 5 -> 0.00001 local out_bracket = in_bracket * out_num / in_num out_bracket = 10^math.floor(math.log10(out_bracket)+.5) -- 1230 -> 1000, 0.00123 -> 0.001 -- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound) return math.floor(out_num/out_bracket + (out_num >=0 and 1 or -1) * 0.5) * out_bracket end -- format data type quantity local function printDatatypeQuantity(data, parameters) local amount = data.amount amount = mw.ustring.gsub(amount, "%+", "") local suffix = "" local conv_amount, conv_suffix if string.sub(parameters.formatting or '', 1, 4) == "unit" or parameters.convert then -- example "unit": "http://www.wikidata.org/entity/Q174728" local unit_id = data.unit unit_id = mw.ustring.sub(unit_id, mw.ustring.find(unit_id, "Q"), -1) if string.sub(unit_id, 1, 1) == "Q" then suffix = getUnit(amount, unit_id, parameters) local convert_to if parameters.convert == "default" or parameters.convert == "default2" then local exist, units = pcall(require, wiki.module_title .. "/Units") if exist and next(units.convert_default) ~= nil then convert_to = units.convert_default[unit_id] end elseif string.sub(parameters.convert or '', 1, 1) == "Q" then convert_to = resolveEntityId(parameters.convert) end if convert_to and convert_to ~= unit_id then -- convert units local conv_temp = { -- formulae for temperatures ºC, ºF, ªK: [from] = {[to] = 'formula'} ['Q25267'] = {['Q42289'] = '$1*1.8+32', ['Q11597'] = '$1+273.15'}, ['Q42289'] = {['Q25267'] = '($1-32)/1.8', ['Q11597'] = '($1+459.67)*5/9'}, ['Q11597'] = {['Q25267'] = '$1-273.15', ['Q42289'] = '($1-273.15)*1.8000+32.00'} } if conv_temp[unit_id] and conv_temp[unit_id][convert_to] then local amount_f = mw.getCurrentFrame():callParserFunction('#expr', mw.ustring.gsub(conv_temp[unit_id][convert_to], "$1", amount)) conv_amount = math.floor(tonumber(amount_f) + 0.5) else local conversions = getStatements(unit_id, 'P2442') -- conversion to standard unit table.insert(conversions, mw.wikibase.getBestStatements(unit_id, 'P2370')[1]) -- conversion to SI unit for _, conv in ipairs(conversions) do if conv.mainsnak.snaktype == 'value' then -- no somevalue nor novalue if conv.mainsnak.datavalue.value.unit == "http://www.wikidata.org/entity/" .. convert_to then conv_amount = roundPrecision(amount, amount * tonumber(conv.mainsnak.datavalue.value.amount)) break end end end end if conv_amount then conv_suffix = getUnit(conv_amount, convert_to, parameters) end elseif parameters.convert == 'M' and tonumber(amount) > 10^8 then conv_amount = math.floor(amount/10^6 + 0.5) conv_suffix = ' M' .. string.sub(suffix, 2) end end end local lang_obj = mw.language.new(parameters.lang[1]) local sortkey = string.format("%019d", tonumber(amount) * 1000) if parameters.case then amount = case(parameters.case, amount, parameters.lang[1]) else amount = lang_obj:formatNum(tonumber(amount)) end if conv_amount then local conv_sortkey = string.format("%019d", tonumber(conv_amount) * 1000) conv_amount = lang_obj:formatNum(tonumber(conv_amount)) if parameters.convert == 'default2' then return conv_amount .. conv_suffix .. ' (' .. amount .. suffix .. ')', conv_sortkey else return conv_amount .. conv_suffix, conv_sortkey end end return amount .. suffix, sortkey end -- format data type time local function printDatatypeTime(data, parameters) -- Dates and times are stored in ISO 8601 format local timestamp = data.time local post_format local calendar_add = "" local precision = data.precision or 11 if string.sub(timestamp, 1, 1) == '-' then post_format = i18n.datetime["bc"] elseif string.sub(timestamp, 2, 3) == '00' then post_format = i18n.datetime["ad"] elseif precision > 8 then -- calendar model local calendar_model = {["Q12138"] = "Gréagórach", ["Q1985727"] = "Gréagórach", ["Q11184"] = "Iúil", ["Q1985786"] = "Iúil"} local calendar_id = mw.text.split(data.calendarmodel, 'entity/')[2] if (timestamp < "+1582-10-15T00:00:00Z" and calendar_model[calendar_id] == "Gréagórach") or (timestamp > "+1582-10-04T00:00:00Z" and calendar_model[calendar_id] == "Iúil") then calendar_add = " <sup>(" .. mw.message.new('Wikibase-time-calendar-' .. calendar_model[calendar_id]):inLanguage(parameters.lang[1]):plain() .. ")</sup>" end end local function formatTime(form, stamp) local pattern if type(form) == "function" then pattern = form(stamp) else pattern = form end stamp = tostring(stamp) if mw.ustring.find(pattern, "$1") then return mw.ustring.gsub(pattern, "$1", stamp) elseif string.sub(stamp, 1, 1) == '-' then -- formatDate() only supports years from 0 stamp = '+' .. string.sub(stamp, 2) elseif string.sub(stamp, 1, 1) ~= '+' then -- not a valid timestamp, it is a number stamp = string.format("%04d", stamp) end local ret = mw.language.new(parameters.lang[1]):formatDate(pattern, stamp) ret = string.gsub(ret, "^(%[?%[?)0+", "%1") -- supress leading zeros ret = string.gsub(ret, "( %[?%[?)0+", "%1") return ret end local function postFormat(t) if post_format and mw.ustring.find(post_format, "$1") then return mw.ustring.gsub(post_format, "$1", t) end return t end local intyear = tonumber(string.match(timestamp, "[+-](%d+)")) local ret = "" if precision <= 5 then -- precision is 10000 years or more local factor = 10 ^ ((5 - precision) + 4) local y2 = math.ceil(math.abs(intyear) / factor) local relative = formatTime(i18n.datetime[precision], y2) if post_format == i18n.datetime["bc"] then ret = mw.ustring.gsub(i18n.datetime.beforenow, "$1", relative) else ret = mw.ustring.gsub(i18n.datetime.afternow, "$1", relative) end local ret_number = string.match(ret, "%d+") if ret_number ~= nil then ret = mw.ustring.gsub(ret, ret_number, mw.language.new(parameters.lang[1]):formatNum(tonumber(ret_number))) end elseif precision == 6 or precision == 7 then -- millennia or centuries local card = math.floor((intyear - 1) / 10^(9 - precision)) + 1 ret = formatTime(i18n.datetime[precision], card) ret = postFormat(ret) elseif precision == 8 then -- decades local card = math.floor(math.abs(intyear) / 10) * 10 ret = formatTime(i18n.datetime[8], card) ret = postFormat(ret) elseif intyear > 9999 then -- not a valid timestamp return elseif precision == 9 or parameters.formatting == 'Y' then -- precision is year ret = formatTime(i18n.datetime[9], intyear) ret = postFormat(ret) .. calendar_add elseif precision == 10 then -- month ret = formatTime(i18n.datetime[10], timestamp .. " + 1 day") -- formatDate yyyy-mm-00 returns the previous month ret = postFormat(ret) .. calendar_add else -- precision 11, day ret = formatTime(parameters.formatting or i18n.datetime[11], timestamp) ret = postFormat(ret) .. calendar_add end return ret, timestamp end -- format data value wikibase-entityid: types wikibase-item, wikibase-property local function printDatatypeEntity(data, parameters) local entity_id = data['id'] if parameters.formatting == 'raw' then return entity_id, entity_id end local entity_page = 'Special:EntityPage/' .. entity_id local label, lang = getLabelByLangs(entity_id, parameters.lang) local sitelink = mw.wikibase.getSitelink(entity_id) local parameter = parameters.formatting local labelcase = label or sitelink if parameters.gender == 'feminineform' then labelcase = feminineForm(entity_id, lang) or labelcase end if parameters.case ~= 'gender' then labelcase = case(parameters.case, labelcase, lang, parameters.lang[1], entity_id, parameters.id) end local ret1, ret2 if parameter == 'label' then ret1 = labelcase or entity_id ret2 = labelcase or entity_id elseif parameter == 'sitelink' then ret1 = (sitelink or 'd:' .. entity_page) ret2 = sitelink or entity_id elseif mw.ustring.find((parameter or ''), '$1', 1, true) then -- formatting = a pattern ret1 = mw.ustring.gsub(parameter, '$1', labelcase or entity_id) ret1 = expandBraces(ret1, parameter) ret2 = labelcase or entity_id else if parameter == "ucfirst" or parameter == "ucinternallink" then if labelcase and lang then labelcase = mw.language.new(lang):ucfirst(labelcase) end -- only first of a list, reset formatting for next ones if parameter == "ucinterlanllink" then parameters.formatting = 'internallink' else parameters.formatting = nil -- default format end end if sitelink then ret1 = '[[' .. sitelink .. '|' .. labelcase .. ']]' ret2 = labelcase elseif label and (parameter == 'internallink' or parameter == 'ucinternallink') then ret1 = '[[' .. label .. '|' .. labelcase .. ']]' ret2 = labelcase else ret1 = '[[d:' .. entity_page .. '|' .. (labelcase or entity_id) .. ']]' ret2 = labelcase or entity_id end end return ret1 .. addLabelIcon(entity_id, lang, parameters.lang[1], parameters.editicon), ret2 end -- format data type monolingualtext local function printDatatypeMonolingual(data, parameters) -- data fields: language [string], text [string] if parameters.list == "lang" and data["language"] ~= parameters.lang[1] then return elseif parameters.formatting == "language" or parameters.formatting == "text" then return data[parameters.formatting] end local result = data["text"] if data["language"] ~= wiki.langcode then result = mw.ustring.gsub('<span lang="$1">$2</span>', '$[12]', {["$1"]=data["language"], ["$2"]=data["text"]}) end if mw.ustring.find((parameters.formatting or ''), '$', 1, true) then -- output format defined with $text, $language result = mw.ustring.gsub(parameters.formatting, '$text', result) result = mw.ustring.gsub(result, '$language', data["language"]) end return result end local function getSnakValue(snak, parameters) if snak.snaktype == 'value' then -- see Special:ListDatatypes if snak.datatype == "string" then return printDatatypeString(snak.datavalue.value, parameters) -- other data value string, tabular-data not implemented elseif snak.datatype == "commonsMedia" then return printDatatypeMedia(snak.datavalue.value, parameters) elseif snak.datatype == "url" then return printDatatypeUrl(snak.datavalue.value, parameters) elseif snak.datatype == "external-id" then return printDatatypeExternal(snak.datavalue.value, parameters) elseif snak.datatype == 'math' then return printDatatypeMath(snak.datavalue.value) elseif snak.datatype == 'musical-notation' then return printDatatypeMusical(snak.datavalue.value, parameters.formatting) -- other data types elseif snak.datatype == 'wikibase-item' or snak.datatype == 'wikibase-property' then return printDatatypeEntity(snak.datavalue.value, parameters) elseif snak.datatype == 'monolingualtext' then return printDatatypeMonolingual(snak.datavalue.value, parameters) elseif snak.datatype == "globe-coordinate" then return printDatatypeCoordinate(snak.datavalue.value, parameters.formatting) elseif snak.datatype == "quantity" then return printDatatypeQuantity(snak.datavalue.value, parameters) elseif snak.datatype == "time" then return printDatatypeTime(snak.datavalue.value, parameters) end elseif snak.snaktype == 'novalue' then if parameters.formatting == 'raw' then return end return mw.message.new('Wikibase-snakview-snaktypeselector-novalue'):inLanguage(parameters.lang[1]):plain() elseif snak.snaktype == 'somevalue' then if parameters.formatting == 'raw' then return end return mw.message.new('Wikibase-snakview-snaktypeselector-somevalue'):inLanguage(parameters.lang[1]):plain() end return mw.wikibase.renderSnak(snak) end local function printError(key) return '<span class="error">' .. i18n.errors[key] .. '</span>' end local function getQualifierSnak(claim, qualifierId, parameters) -- a "snak" is Wikidata terminology for a typed key/value pair -- a claim consists of a main snak holding the main information of this claim, -- as well as a list of attribute snaks and a list of references snaks if qualifierId then -- search the attribute snak with the given qualifier as key if claim.qualifiers then local qualifier = claim.qualifiers[qualifierId] if qualifier then if qualifier[1].datatype == "monolingualtext" then -- iterate over monolingualtext qualifiers to get local language for idx in pairs(qualifier) do if getSnak(qualifier[idx], {"datavalue", "value", "language"}) == parameters.lang[1] then return qualifier[idx] end end elseif parameters.list then return qualifier else return qualifier[1] end end end return nil, printError("qualifier-not-found") else -- otherwise return the main snak return claim.mainsnak end end local function getValueOfClaim(claim, qualifierId, parameters) local snak, error = getQualifierSnak(claim, qualifierId, parameters) if not snak then return nil, nil, error elseif snak[1] then -- a multi qualifier local result, sortkey = {}, {} local maxvals = tonumber(parameters.list) for idx in pairs(snak) do result[#result + 1], sortkey[#sortkey + 1] = getSnakValue(snak[idx], parameters) if maxvals and maxvals == #result then break end end return mw.text.listToText(result, parameters.qseparator, parameters.qconjunction), sortkey[1] else -- a property or a qualifier return getSnakValue(snak, parameters) end end local function getValueOfParentClaim(claim, qualifierId, parameters) local qids = mw.text.split(qualifierId, '/', true) local valueraw, parent_claims, value, sortkey if qids[1] == parameters.property then valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=parameters.lang}) else valueraw, _, _ = getValueOfClaim(claim, qids[1], {["formatting"]="raw", ["lang"]=parameters.lang}) end if string.sub(valueraw or '', 1, 1) == "Q" then -- protection for 'no value' parent_claims = mw.wikibase.getBestStatements(valueraw, qids[2]) if parent_claims[1] ~= nil then value, sortkey, _ = getValueOfClaim(parent_claims[1], nil, parameters) -- raw parent value needed for while/black lists, lang for avoiding an error on types other than entity valueraw, _, _ = getValueOfClaim(parent_claims[1], nil, {["formatting"]="raw", ["lang"]=parameters.lang}) end end return value, sortkey, valueraw end -- see d:Help:Sources local function getReferences(claim, lang) local notproperref = { ["P143"] = true, -- imported from ["P3452"] = true, -- inferred from ["P887"] = true, -- based on heuristic ["P4656"] = true -- Wikimedia import URL } local result = "" -- traverse through all references for ref in pairs(claim.references or {}) do local refparts local refs = {} local validref = true local ref_name -- traverse through all parts of the current reference for snakkey, snakval in pairs(claim.references[ref].snaks or {}) do for partkey, _ in pairs(claim.references[ref].snaks[snakkey] or {}) do if notproperref[snakkey] then -- not a proper reference validref = false break end end if validref then for snakidx = 1, #snakval do if snakidx > 1 then refparts = refparts .. ", " end refparts = refparts or '' .. getSnakValue(snakval[snakidx], {lang=lang}) end refs[snakkey] = refparts refparts = nil if snakkey == "P248" then -- stated in ref_name = snakval[1].datavalue.value.id end end end -- fill missing values with parent item if ref_name then local function refParent(qid, pid, formatting) local snak = getSnak(mw.wikibase.getBestStatements(qid, pid), {1, "mainsnak"}) return snak and getSnakValue(snak, {formatting=formatting, lang=lang}) end refs['P50'] = refs['P50'] or refParent(ref_name, 'P50', 'label') -- author refs['P407'] = refs['P407'] or refParent(ref_name, 'P407', 'label') -- language of work refs['P123'] = refs['P123'] or refParent(ref_name, 'P123', 'label') -- publisher refs['P577'] = refs['P577'] or refParent(ref_name, 'P577') -- date refs['P1433'] = refs['P1433'] or refParent(ref_name, 'P1433', 'label') -- published in refs['P304'] = refs['P304'] or refParent(ref_name, 'P304') -- page(s) refs['P433'] = refs['P433'] or refParent(ref_name, 'P433') -- issue refs['P236'] = refs['P236'] or refParent(ref_name, 'P236') -- ISSN refs['P356'] = refs['P356'] or refParent(ref_name, 'P356') -- DOI end -- get title of local templates for citing references local template_web = mw.wikibase.getSitelink('Q5637226') or "" template_web = mw.text.split(template_web, ":")[2] -- split off namespace from front local template_journal = mw.wikibase.getSitelink('Q5624899') or "" template_journal = mw.text.split(template_journal, ":")[2] local citeParams = {} if refs['P854'] and (refs['P1476'] or refs['P248']) and template_web then -- if both "reference URL" and "title" (or "stated in") are present, then use cite web template citeParams[i18n['cite']['url']] = refs['P854'] if refs['P248'] and refs['P1476'] == nil then citeParams[i18n['cite']['title']] = refs['P248']:match("^%[%[.-|(.-)%]%]") else citeParams[i18n['cite']['title']] = refs['P1476'] citeParams[i18n['cite']['website']] = refs['P248'] end citeParams[i18n['cite']['author']] = refs['P50'] citeParams[i18n['cite']['language']] = refs['P407'] citeParams[i18n['cite']['publisher']] = refs['P123'] citeParams[i18n['cite']['date']] = refs['P577'] citeParams[i18n['cite']['pages']] = refs['P304'] citeParams[i18n['cite']['access-date']] = refs['P813'] citeParams[i18n['cite']['archive-url']] = refs['P1065'] citeParams[i18n['cite']['archive-date']] = refs['P2960'] citeParams[i18n['cite']['quote']] = refs['P1683'] refparts = mw.getCurrentFrame():expandTemplate{title=template_web, args=citeParams} elseif refs['P1433'] and (refs['P1476'] or refs['P248']) and template_journal then -- if both "published in" and "title" (or "stated in") are present, then use cite journal template citeParams[i18n['cite']['work']] = refs['P1433'] citeParams[i18n['cite']['title']] = refs['P1476'] or refs['P248'] citeParams[i18n['cite']['author']] = refs['P50'] citeParams[i18n['cite']['date']] = refs['P577'] citeParams[i18n['cite']['issue']] = refs['P433'] citeParams[i18n['cite']['pages']] = refs['P304'] citeParams[i18n['cite']['language']] = refs['P407'] citeParams[i18n['cite']['issn']] = refs['P236'] citeParams[i18n['cite']['doi']] = refs['P356'] refparts = mw.getCurrentFrame():expandTemplate{title=template_journal, args=citeParams} elseif validref then -- raw ouput local snaksorder = claim.references[ref]["snaks-order"] local function indexed(a) for _, b in ipairs(snaksorder) do if b == a then return true end end return false end for k, _ in pairs(refs or {}) do if not indexed(k) then table.insert(snaksorder, k) end end local italics = "''" for _, k in ipairs(snaksorder) do if refs[k] then refparts = refparts and refparts .. " " or "" refparts = refparts .. mw.ustring.gsub(getLabelByLangs(k, lang), "^%l", mw.ustring.upper) .. ": " refparts = refparts .. italics .. refs[k] .. italics .. "." italics = "" end end end if refparts then result = mw.getCurrentFrame():extensionTag("ref", refparts, {name=ref_name}) end end return result end -- Set whitelist or blacklist values local function setWhiteOrBlackList(type_list, num_qual, args) local listed = false local list = {} for i = 0, num_qual do if isSet(args[type_list .. i]) then listed = true list[tostring(i)] = {} for v in string.gmatch(args[type_list .. i], 'Q%d+') do list[tostring(i)][resolveEntityId(v)] = true end end end return list, listed end local function tableParameters(args, parameters, column) local column_params = mw.clone(parameters) column_params.formatting = args["colformat"..column]; if column_params.formatting == "" then column_params.formatting = nil end column_params.convert = args["convert" .. column] if args["case" .. column] then column_params.case = args["case" .. column] end return column_params end local function getEntityId(frame, unnamed) local args = frame.args or frame local pargs = frame.args and frame:getParent().args local id = args.item or args.from or (unnamed and mw.text.trim(args[1] or '') or nil) if not isSet(id) and pargs then id = pargs.item or pargs.from or (unnamed and mw.text.trim(pargs[1] or '') or nil) end if isSet(id) then if string.find(id, ":") then -- remove prefix as Property:Pid id = mw.text.split(id, ":")[2] end else id = mw.wikibase.getEntityIdForCurrentPage() end return id end -- Main function claim --------------------------------------------- -- on debug console use: =p.claim{item="Q...", property="P...", ...} function p.claim(frame) local is_sandbox = frame.args and isSet(frame:getParent().args.sandbox) if not required and is_sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).claim(frame) end local args = frame.args or frame -- via invoke or require --If a value is already set, use it if isSet(args.value) then if args.value == 'NONE' then return else return args.value end end -- arguments local id = getEntityId(frame) if id == nil then return end local property = string.upper(args.property or "") local qualifierId = {} qualifierId[1] = isSet(args.qualifier) and string.upper(args.qualifier) or nil local i = 2 while isSet(args["qualifier" .. i]) do qualifierId[i] = string.upper(args["qualifier" .. i]) i = i + 1 end local formatting = isSet(args.formatting) and args.formatting or nil local convert = isSet(args.convert) and args.convert or nil local case = args.case local list = args.list or true; if (list == "false" or list == "no") then list = false end if list == 'firstrank' then list = 'bestrank' end -- alias local sorting_col = args.tablesort local sorting_up = (args.sorting or "") ~= "-1" local separator = isSet(args.separator) and args.separator local conjunction = isSet(args.conjunction) and args.conjunction or separator local rowformat = args.rowformat local references = args.references local showerrors = args.showerrors local default = args.default if default then showerrors = nil end local editicon = not (args.editicon == "false" or args.editicon == "no" or formatting == "raw") local parameters = {["id"] = id, ["property"] = property, ["formatting"] = formatting, ["convert"] = convert, ["list"] = list, ["case"] = case, ["editicon"] = editicon, ["separator"] = separator, ["conjunction"] = conjunction, ["qseparator"] = separator, ["qconjunction"] = conjunction} parameters.lang = findLang(args.lang) -- fetch property local claims = {} local bestrank = (parameters.list == false or parameters.list == 'bestrank') and parameters.list ~= 'lang' for p in string.gmatch(property, 'P%d+') do claims = getStatements(id, p, bestrank) if #claims > 0 then parameters.property = p break end end if #claims == 0 then if showerrors then return printError("property-not-found") else return default end end -- defaults for table local preformat, postformat = "", "" local whitelisted, blacklisted = false, false local whitelist, blacklist = {}, {} if parameters.formatting == "table" then parameters.separator = parameters.separator or "<br />" parameters.conjunction = parameters.conjunction or "<br />" parameters.qseparator = ", " parameters.qconjunction = ", " if not rowformat then rowformat = "$0 ($1" i = 2 while qualifierId[i] do rowformat = rowformat .. ", $" .. i i = i + 1 end rowformat = rowformat .. ")" elseif mw.ustring.find(rowformat, "^[*#]") then parameters.separator = "</li><li>" parameters.conjunction = "</li><li>" if mw.ustring.match(rowformat, "^[*#]") == "*" then preformat = "<ul><li>" postformat = "</li></ul>" else preformat = "<ol><li>" postformat = "</li></ol>" end rowformat = mw.ustring.gsub(rowformat, "^[*#] ?", "") end -- set whitelist and blacklist values whitelist, whitelisted = setWhiteOrBlackList("whitelist", #qualifierId, args) blacklist, blacklisted = setWhiteOrBlackList("blacklist", #qualifierId, args) end -- set feminine case if gender is requested local itemgender = args.itemgender local idgender if itemgender then if string.match(itemgender, "^P%d+$") then local snak_id = getSnak(mw.wikibase.getBestStatements(id, itemgender), {1, "mainsnak", "datavalue", "value", "id"}) if snak_id then idgender = snak_id end elseif string.match(itemgender, "^Q%d+$") then idgender = itemgender end end local gender_requested = false if parameters.case == "gender" or idgender then gender_requested = true elseif parameters.formatting == "table" then for i=0, #qualifierId do if args["case" .. i] and args["case" .. i] == "gender" then gender_requested = true break end end end if gender_requested then if feminineGender(idgender or id) then parameters.gender = "feminineform" end end -- get initial sort indices local sortindices = {} for idx in pairs(claims) do sortindices[#sortindices + 1] = idx end -- sort by claim rank local comparator = function(a, b) local rankmap = { deprecated = 2, normal = 1, preferred = 0 } local ranka = rankmap[claims[a].rank or "normal"] .. string.format("%08d", a) local rankb = rankmap[claims[b].rank or "normal"] .. string.format("%08d", b) return ranka < rankb end table.sort(sortindices, comparator) local result, result2 local error if parameters.list or parameters.formatting == "table" then -- convert LF to line feed, <br /> may not work on some cases parameters.separator = parameters.separator == "LF" and "\010" or parameters.separator parameters.conjunction = parameters.conjunction == "LF" and "\010" or parameters.conjunction -- i18n separators parameters.separator = parameters.separator or mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain() parameters.conjunction = parameters.conjunction or (mw.message.new('And'):inLanguage(parameters.lang[1]):plain() .. mw.message.new('Word-separator'):inLanguage(parameters.lang[1]):plain()) -- iterate over all elements and return their value (if existing) local value, valueq local sortkey, sortkeyq local values = {} local sortkeys = {} local refs = {} local rowlist = {} -- rows to list with whitelist or blacklist for idx in pairs(claims) do local claim = claims[sortindices[idx]] local reference = {} if not whitelisted then rowlist[idx] = true end if parameters.formatting == "table" then local params = tableParameters(args, parameters, "0") value, sortkey, error = getValueOfClaim(claim, nil, params) if value then values[#values + 1] = {} sortkeys[#sortkeys + 1] = {} refs[#refs + 1] = {} if whitelist["0"] or blacklist["0"] then local valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=params.lang}) if whitelist["0"] and whitelist["0"][valueraw or ""] then rowlist[#values] = true elseif blacklist["0"] and blacklist["0"][valueraw or ""] then rowlist[#values] = false end end for i, qual in ipairs(qualifierId) do local j = tostring(i) params = tableParameters(args, parameters, j) local valueq, sortkeyq, valueraw if qual == property then -- hack for getting the property with another formatting, i.e. colformat1=raw valueq, sortkeyq, _ = getValueOfClaim(claim, nil, params) else for q in mw.text.gsplit(qual, '%s*OR%s*') do if string.find(q, ".+/.+") then valueq, sortkeyq, valueraw = getValueOfParentClaim(claim, q, params) elseif string.find(q, "^/.+") then local claim2 = getStatements(id, string.sub(q, 2), bestrank) if #claim2 > 0 then valueq, sortkeyq, _ = getValueOfClaim(claim2[1], nil, params) end else valueq, sortkeyq, _ = getValueOfClaim(claim, q, params) end if valueq then break end end end values[#values]["col" .. j] = valueq sortkeys[#sortkeys]["col" .. j] = sortkeyq or valueq if whitelist[j] or blacklist[j] then valueq = valueraw or getValueOfClaim(claim, qual, {["formatting"]="raw", ["lang"]=params.lang}) if whitelist[j] and whitelist[j][valueq or ""] then rowlist[#values] = true elseif blacklist[j] and blacklist[j][valueq or ""] then rowlist[#values] = false end end end end else value, sortkey, error = getValueOfClaim(claim, qualifierId[1], parameters) values[#values + 1] = {} sortkeys[#sortkeys + 1] = {} refs[#refs + 1] = {} end if not value and showerrors then value = error end if value then if references and claim.references then reference = claim.references end refs[#refs]["col0"] = reference values[#values]["col0"] = value sortkeys[#sortkeys]["col0"] = sortkey or value end end -- sort and format results sortindices = {} for idx in pairs(values) do sortindices[#sortindices + 1] = idx end if sorting_col then local sorting_table = mw.text.split(sorting_col, '%D+') local comparator = function(a, b) local valuea, valueb local i = 1 while valuea == valueb and i <= #sorting_table do valuea = sortkeys[a]["col" .. sorting_table[i]] or '' valueb = sortkeys[b]["col" .. sorting_table[i]] or '' i = i + 1 end if sorting_up then return valueb > valuea end return valueb < valuea end table.sort(sortindices, comparator) end local maxvals = tonumber(parameters.list) result = {} for idx in pairs(values) do local valuerow = values[sortindices[idx]] local reference = getReferences({["references"] = refs[sortindices[idx]]["col0"]}, parameters.lang) value = valuerow["col0"] if parameters.formatting == "table" then if not rowlist[sortindices[idx]] then value = nil else local rowformatting = rowformat .. "$" -- fake end character added for easy gsub value = mw.ustring.gsub(rowformatting, "$0", value) value = mw.ustring.gsub(value, "$R0", reference) -- add reference for i, _ in ipairs(qualifierId) do local valueq = valuerow["col" .. i] if args["rowsubformat" .. i] and valueq then -- add fake end character $ -- gsub $i not followed by a number so $1 doesn't match $10, $11... -- remove fake end character valueq = captureEscapes(valueq) valueq = mw.ustring.gsub(args["rowsubformat" .. i] .. "$", "$" .. i .. "(%D)", valueq .. "%1") valueq = string.sub(valueq, 1, -2) rowformatting = mw.ustring.gsub(rowformatting, "$" .. i .. "(%D)", args["rowsubformat" .. i] .. "%1") end valueq = valueq and captureEscapes(valueq) or '' value = mw.ustring.gsub(value, "$" .. i .. "(%D)", valueq .. "%1") end value = string.sub(value, 1, -2) -- remove fake end character value = expandBraces(value, rowformatting) end elseif value then value = expandBraces(value, parameters.formatting) value = value .. reference end if isSet(value) then result[#result + 1] = value if not parameters.list or (maxvals and maxvals == #result) then break end end end -- in a table, add edit icon on last element if parameters.formatting == 'table' and parameters.editicon then result = addEditIconTable(result, parameters) end result = preformat .. mw.text.listToText(result, parameters.separator, parameters.conjunction) .. postformat else -- return first element local claim = claims[sortindices[1]] result, result2, error = getValueOfClaim(claim, qualifierId[1], parameters) if result and references then result = result .. getReferences(claim, parameters.lang) end end if isSet(result) then if i18n.addpencil and not (parameters.formatting == 'table' or (result2 and result2 == 'no-icon')) then -- add edit icon, except table added previously and except explicit no-icon internal flag result = result .. addEditIcon(parameters) end else if showerrors then result = error else result = default end end return result, (required and not is_sandbox) and untranslated or '' end -- This is used to get the TA98 (Terminologia Anatomica first edition 1998) values like 'A01.1.00.005' (property P1323) -- which are then linked to http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/01.1.00.005%20Entity%20TA98%20EN.htm -- uses the newer mw.wikibase calls instead of directly using the snaks -- formatPropertyValues returns a table with the P1323 values concatenated with ", " so we have to split them out into a table in order to construct the return string p.getTAValue = function(frame) local ent = mw.wikibase.getEntity() local props = ent:formatPropertyValues('P1323') local out = {} local t = {} for k, v in pairs(props) do if k == 'value' then t = mw.text.split( v, ", ") for k2, v2 in pairs(t) do out[#out + 1] = "[http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/" .. string.sub(v2, 2) .. "%20Entity%20TA98%20EN.htm " .. v2 .. "]" end end end local ret = table.concat(out, "<br> ") if #ret == 0 then ret = "Invalid TA" end return ret end -- Local functions for getParentValues ----------------------- local function uc_first(word) return mw.ustring.upper(mw.ustring.sub(word, 1, 1)) .. mw.ustring.sub(word, 2) end local function getPropertyValue(id, property, parameter, langs, editicon, case) local snaks = mw.wikibase.getBestStatements(id, property) local mysnak = getSnak(snaks, {1, "mainsnak"}) if mysnak == nil then return end local entity_id local result = '-' -- default for 'no value' if mysnak.datavalue then entity_id = "Q" .. tostring(mysnak.datavalue.value['numeric-id']) result, _ = getSnakValue(mysnak, {formatting=parameter, lang=langs, editicon=editicon, case=case}) end return entity_id, result end local function getParentObjects(id, prop_format, label_format, languages, propertySupString, propertyLabel, propertyLink, labelShow, editicon, upto, upto_linkId, last_only, grammatical_case, include_self) if upto_linkId == nil then upto_linkId = "" end local upto_link_ids = {} for q in mw.text.gsplit(upto_linkId, '[^Q%d]') do upto_link_ids[resolveEntityId(q)] = true end local propertySups = mw.text.split(propertySupString, '[^P%d]') local lastlabel = uc_first(upto or '') local maxloop = tonumber(upto) or ((lastlabel .. upto_linkId) == '' and 10 or 50) local labelFilter = {} if labelShow then for _, v in ipairs(mw.text.split(labelShow, "/")) do labelFilter[uc_first(v)] = true end end local label_self _, label_self = getPropertyValue(id, propertyLabel, label_format, languages) local result = {} for iter = 1, maxloop do local link, label, linktext, _id, _link for _, propertySup in pairs(propertySups) do _id, _link = getPropertyValue(id, propertySup, prop_format, languages, editicon, grammatical_case) if _id and _link then id = _id; link = _link break end end if not id or not link then break end if propertyLink then _, linktext = getPropertyValue(id, propertyLink, "label", languages) if linktext then link = mw.ustring.gsub(link, "%[%[(.*)%|.+%]%]", "[[%1|" .. linktext .. "]]") end end _, label = getPropertyValue(id, propertyLabel, label_format, languages, false, "infoboxlabel") if labelShow == nil or labelFilter[label] then result[#result + 1] = {label, link} if label then labelFilter[label] = nil -- only first label found end end if label == lastlabel or upto_link_ids[id] then break end end if last_only then result = {result[#result]} end if include_self then table.insert(result, 1, {label_self, mw.title.getCurrentTitle().text}) end return result end local function parentObjectsToString(result, rowformat, cascade, sorting) local ret = {} local first = 1 local last = #result local iter = 1 if sorting == "-1" then first = #result; last = 1; iter = -1 end for i = first, last, iter do local rowtext = mw.ustring.gsub(rowformat, "$[01]", {["$0"] = result[i][1], ["$1"] = result[i][2]}) ret[#ret +1] = expandBraces(rowtext, rowformat) end if cascade then local prefix = "" for i = 1, #ret do ret[i] = prefix .. "• " .. ret[i] prefix = prefix .. "&nbsp;" end end return ret end -- Returns pairs of instance label and property value fetching a recursive tree function p.getParentValues(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getParentValues(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame) if id == nil then return end local languages = findLang(args.lang) local propertySup = args.property; if not isSet(propertySup) then propertySup = "P131" end --administrative entity local propertyLabel = args.label; if not isSet(propertyLabel) then propertyLabel = "P31" end --instance local propertyLink = args.valuetext; if propertyLink == "" then propertyLink = nil end --internallink local property_format = args.formatting; if property_format == "" then property_format = nil end local label_format = args.labelformat; if not isSet(label_format) then label_format = "label" end local upto = args.upto; if upto == "" then upto = nil end local last_only = (args.last_only == "true" or args.last_only == "yes") local labelShow = args.labelshow; if labelShow == "" then labelShow = nil end local editicon = not (args.editicon == "false" or args.editicon == "no") local include_self = (args.include_self == "true" or args.include_self == "yes") local case = args.case; if case == "" then case = nil end if isSet(args.uptolabelid) then upto, _ = getLabelByLangs(args.uptolabelid, languages) end if isSet(args.showlabelid) then local showLabelList = {} for substring in mw.text.gsplit(args.showlabelid, '[^Q%d]') do table.insert(showLabelList, (getLabelByLangs(substring, languages))) end if #showLabelList > 0 then labelShow = table.concat(showLabelList,"/") end end local result = getParentObjects(id, property_format, label_format, languages, propertySup, propertyLabel, propertyLink, labelShow, editicon, upto, args.uptovalueid or args.uptolinkid, last_only, case, include_self) if #result == 0 then return end local rowformat = args.rowformat; if not isSet(rowformat) then rowformat = "$0 = $1" end local separator = args.separator; if not isSet(separator) then separator = "<br />" end local sorting = args.sorting; if sorting == "" then sorting = nil end local cascade = (args.cascade == "true" or args.cascade == "yes") local ret = parentObjectsToString(result, rowformat, cascade, sorting) ret = addEditIconTable(ret, {property=propertySup, editicon=editicon, id=id, lang=languages}) return mw.text.listToText(ret, separator, separator) end -- Link with a parent label -------------------- function p.linkWithParentLabel(frame) if not required and frame.args and isSet(frame:getParent().args.sandbox) then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).linkWithParentLabel(frame) end local args = {} if frame.args then for k, v in pairs(frame.args) do -- metatable args[k] = v end else args = frame -- via require end if isSet(args.value) then return args.value end -- get id value of property/qualifier local largs = mw.clone(args) largs.list = tonumber(args.list) and args.list or "true" largs.formatting = "raw" largs.separator = "/·/" largs.editicon = "false" local items_list, _ = p.claim(largs) if not isSet(items_list) then return end local items_table = mw.text.split(items_list, "/·/", true) -- get internal link of property/qualifier largs.formatting = "internallink" local link_list, _ = p.claim(largs) local link_table = mw.text.split(link_list, "/·/", true) -- get label of parent property local parent_claim = getSnak(getStatements(items_table[1], args.parent, true), {1, "mainsnak", "datatype"}) if parent_claim == 'monolingualtext' then largs.formatting = nil largs.list = 'lang' else largs.formatting = "label" largs.list = "false" end largs.property = args.parent largs.qualifier = nil for i, v in ipairs(items_table) do largs.item = v local link_label, _ = p.claim(largs) if isSet(link_label) then link_table[i] = mw.ustring.gsub(link_table[i] or '', "%[%[(.*)%|.+%]%]", "[[%1|" .. link_label .. "]]") end end args.editicon = not (args.editicon == "false" or args.editicon == "no") args.id = getEntityId(frame) args.lang = findLang(args.lang) return mw.text.listToText(link_table) .. addEditIcon(args) end -- Calculate number of years old ---------------------------- function p.yearsOld(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).yearsOld(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame) local lang = mw.language.new('en') local function getBestValue(id, prop) local snak_value = getSnak(mw.wikibase.getBestStatements(id, prop), {1, "mainsnak", "datavalue", "value"}) return snak_value end local birth = getBestValue(id, 'P569') if type(birth) ~= 'table' or birth.time == nil or birth.precision == nil or birth.precision < 8 then return end local death = getBestValue(id, 'P570') if type(death) ~= 'table' or death.time == nil or death.precision == nil then death = {['time'] = lang:formatDate('c'), ['precision'] = 11} -- current date elseif death.precision < 8 then return end local dates = {} dates[1] = {['min'] = {}, ['max'] = {}, ['precision'] = birth.precision} dates[1].min.year = tonumber(mw.ustring.match(birth.time, "^[+-]?%d+")) dates[1].min.month = tonumber(mw.ustring.match(birth.time, "\-(%d%d)\-")) dates[1].min.day = tonumber(mw.ustring.match(birth.time, "\-(%d%d)T")) dates[1].max = mw.clone(dates[1].min) dates[2] = {['min'] = {}, ['max'] = {}, ['precision'] = death.precision} dates[2].min.year = tonumber(mw.ustring.match(death.time, "^[+-]?%d+")) dates[2].min.month = tonumber(mw.ustring.match(death.time, "\-(%d%d)\-")) dates[2].min.day = tonumber(mw.ustring.match(death.time, "\-(%d%d)T")) dates[2].max = mw.clone(dates[2].min) for i, d in ipairs(dates) do if d.precision == 10 then -- month d.min.day = 1 local timestamp = string.format("%04d", tostring(math.abs(d.max.year))) .. string.format("%02d", tostring(d.max.month)) .. "01" d.max.day = tonumber(lang:formatDate("j", timestamp .. " + 1 month - 1 day")) elseif d.precision < 10 then -- year or decade d.min.day = 1 d.min.month = 1 d.max.day = 31 d.max.month = 12 if d.precision == 8 then -- decade d.max.year = d.max.year + 9 end end end local function age(d1, d2) local years = d2.year - d1.year if d2.month < d1.month or (d2.month == d1.month and d2.day < d1.day) then years = years - 1 end if d2.year > 0 and d1.year < 0 then years = years - 1 -- no year 0 end return years end local old_min = age(dates[1].max, dates[2].min) local old_max = age(dates[1].min, dates[2].max) local old, old_expr if old_min == 0 and old_max == 0 then old = "< 1" old_max = 1 -- expression in singular elseif old_min == old_max then old = old_min else old = old_min .. "/" .. old_max end if args.formatting == 'unit' then local langs = findLang(args.lang) local yo, yo_sg, yo_pl, yo_pau if langs[1] == wiki.langcode then yo_sg = i18n["years-old"].singular yo_pl = i18n["years-old"].plural yo_pau = i18n["years-old"].paucal end if not isSet(yo_pl) then yo_pl, _ = getLabelByLangs('Q24564698', langs) yo_sg = yo_pl end if not isSet(yo_pau) then yo_pau = yo_pl end yo = mw.language.new(langs[1]):plural(old_max, {yo_sg, yo_pau, yo_pl}) if mw.ustring.find(yo, '$1', 1, true) then old_expr = mw.ustring.gsub(yo, "$1", old) else old_expr = old .. '&nbsp;' .. yo end elseif args.formatting then old_expr = expandBraces(mw.ustring.gsub(args.formatting, '$1', old), args.formatting) else old_expr = old end return old_expr end -- Gets a label in a given language (content language by default) or its fallbacks, optionnally linked. function p.getLabel(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getLabel(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame, true) if id == nil then return end local editicon = not (args.editicon == "false" or args.editicon == "no") and mw.wikibase.isValidEntityId(id) local label_icon = '' local label, lang if args.label then label = args.label else local languages = findLang(args.lang) -- exceptions or labels fixed local exist, labels = pcall(require, wiki.module_title .. "/labels" .. (languages[1] == wiki.langcode and '' or '/' .. languages[1])) if exist and next(labels.infoboxLabelsFromId) ~= nil then label = labels.infoboxLabelsFromId[id] end if label == nil then label, lang = getLabelByLangs(id, languages) if label then if args.itemgender and feminineGender(args.itemgender) then label = feminineForm(id, lang) or label end label = mw.language.new(lang):ucfirst(mw.text.nowiki(label)) -- sanitize end label_icon = addLabelIcon(id, lang, languages[1], editicon) end end local linked = args.linked if isSet(linked) and linked ~= "no" then local article = mw.wikibase.getSitelink(id) or ("d:Special:EntityPage/" .. id) return "[[" .. article .. "|" .. (label or id) .. "]]" .. label_icon, not required and '' or untranslated else return (label or id) .. label_icon, not required and '' or untranslated end end -- Utilities ----------------------------- -- See also module ../debug. -- Copied from Module:Wikibase function p.getSiteLink(frame) local id = getEntityId(frame, 1) if id == nil then return end return mw.wikibase.getSitelink(id, mw.text.trim(frame.args[2] or '')) end -- Helper function for the default language code used function p.lang(frame) local lang = frame and frame.args[1] -- nil via require return findLang(lang)[1] end -- Number of statements function p.numStatements(frame) local id = getEntityId(frame) if id == nil then return 0 end local prop = mw.text.trim(frame.args[1]) local num = {} if frame.args[2] then -- qualifier local qual = mw.text.trim(frame.args[2]) local values = p.claim{item=id, property=prop, qualifier=qual, formatting='raw', separator='/·/'} if values then num = mw.text.split(values, '/·/') end else num = mw.wikibase.getBestStatements(id, prop) end return #num end -- Returns true if property datavalue is found excluding novalue/somevalue function p.validProperty(frame) local property = mw.text.trim(frame.args[1]) local item = getEntityId(frame) if item == nil then return end local prop_data = getSnak(mw.wikibase.getBestStatements(item, property), {1, "mainsnak", "datavalue"}) return prop_data and true or nil end function p.editAtWikidata(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local value = isSet(args[1]) if value then return end local param = {} param.id = getEntityId(args, pargs) param.property = args.property param.lang = findLang(args.lang) param.editicon, _ = setIcons(args.editicon) return addEditIcon(param) end return p dt2vhgdiwhst0v0ls67w5zvu9dwgmbj 1329025 1329023 2026-10-01T12:26:36Z An Sionnach Rua 29036 1329025 Scribunto text/plain -- version 20200526 from master @cawiki local p = {} -- Initialization of variables -------------------- local i18n = { -- internationalisation at [[Module:Wikidata/i18n]] ["errors"] = { ["property-not-found"] = "Maoin gan aimsiú.", ["qualifier-not-found"] = "Cáilitheoir gan aimsiú.", }, ["datetime"] = { -- $1 is a placeholder for the actual number ["beforenow"] = "$1 RCh", -- how to format negative numbers for precisions 0 to 5 ["afternow"] = "$1 IC", -- how to format positive numbers for precisions 0 to 5 ["bc"] = '$1 "RCh"', -- how print negative years ["ad"] = "$1", -- how print 1st century AD dates [0] = "$1 billiún bliain", -- precision: billion years [1] = "$100 milliún bliain", -- precision: hundred million years [2] = "$10 milliún bliain", -- precision: ten million years [3] = "$1 milliún bliain", -- precision: million years [4] = "$100000 bliain", -- precision: hundred thousand years; thousand separators added afterwards [5] = "$10000 bliain", -- precision: ten thousand years; thousand separators added afterwards [6] = "$1 míle bliain", -- precision: millennium [7] = "$1 aois", -- precision: century [8] = "$1í", -- precision: decade -- the following use the format of #time parser function [9] = "Y", -- precision: year, [10] = "F Y", -- precision: month [11] = "j F Y", -- precision: day ["hms"] = {["uair"] = "h", ["nóiméad"] = "m", ["soicind"] = "s"}, -- duration: xh xm xs }, ["years-old"] = { ["singular"] = "bliain d'aois", -- year old, as in {{PLURAL:$1|singular|plural}} ["plural"] = "bliana d'aois", -- years old ["paucal"] = "", -- for languages with 3 plural forms as in {{PLURAL:$1|singular|paucal|plural}} }, ["cite"] = { -- cite parameters ["title"] = "teideal", ["author"] = "údar", ["date"] = "dáta", ["pages"] = "leathanaigh", ["language"] = "teanga", -- cite web parameters ["url"] = "url", ["website"] = "suíomh gréasáin", ["access-date"] = "dáta rochtana", ["archive-url"] = "url na cartlainne", ["archive-date"] = "dáta na cartlainne", ["publisher"] = "foilsitheoir", ["quote"] = "tagairt", -- cite journal parameters ["work"] = "saothar", ["issue"] = "eagrán", ["issn"] = "issn", ["doi"] = "doi" }, -- local wiki settings ["addpencil"] = false, -- adds a pencil icon linked to Wikidata statement, planned to overwrite by Wikidata Bridge ["categorylabels"] = "", -- Category:Pages with Wikidata labels not translated (void for no local category) ["addfallback"] = {'en', 'ga', 'fr'} -- additional fallback language codes } local cases = {} -- functions for local grammatical cases defined at [[Module:Wikidata/i18n]] local required = ... -- variadic arguments from require function local wiki = { langcode = mw.language.getContentLanguage().code, module_title = required or mw.getCurrentFrame():getTitle() } local untranslated -- used in infobox modules: nil or true local _ -- variable for unused returned values, avoiding globals -- Module local functions -------------------------------------------- -- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0 local function tableMerge(t1, t2) for k, v in pairs(t2) do if type(v) == "table" then if type(t1[k] or false) == "table" then tableMerge(t1[k] or {}, t2[k] or {}) else t1[k] = v end else t1[k] = v end end return t1 end local function loadI18n(lang) local exist, res = pcall(require, wiki.module_title .. "/i18n") if exist and next(res) ~= nil then tableMerge(i18n, res.i18n) cases = res.cases end if lang ~= wiki.langcode then exist, res = pcall(require, wiki.module_title .. "/i18n/" .. lang) if exist and next(res) ~= nil then tableMerge(i18n, res.i18n) tableMerge(cases, res.cases) end end end -- Table of language codes: requested or default and its fallbacks local function findLang(langcode) if mw.language.isKnownLanguageTag(langcode or '') == false then local cframe = mw.getCurrentFrame() local pframe = cframe:getParent() langcode = pframe and pframe.args.lang if mw.language.isKnownLanguageTag(langcode or '') == false then if not mw.title.getCurrentTitle().isContentPage then langcode = cframe:preprocess('{{int:lang}}') end if mw.language.isKnownLanguageTag(langcode or '') == false then langcode = wiki.langcode end end end loadI18n(langcode) local languages = mw.language.getFallbacksFor(langcode) table.insert(languages, 1, langcode) if langcode == wiki.langcode then for _, l in ipairs(i18n.addfallback) do table.insert(languages, l) end end return languages end -- Argument is 'set' when it exists (not nil) or when it is not an empty string. local function isSet(var) return not (var == nil or var == '') end -- Set local case to a label local function case(localcase, label, ...) if not isSet(label) then return label end if localcase == "smallcaps" then return '<span style="font-variant: small-caps;">' .. label .. '</span>' elseif cases[localcase] then return cases[localcase](label, ...) end return label end -- get safely a serialized snak local function getSnak(statement, snaks) local ret = statement for i, v in ipairs(snaks) do if not ret then return end ret = ret[v] end return ret end -- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages local function getLabelByLangs(id, languages) local label local lang for _, l in ipairs(languages) do if l == wiki.langcode then -- using getLabelWithLang when possible instead of getLabelByLang, do not solve redirects pending phab:T157868 label, l = mw.wikibase.getLabelWithLang(id) else label = mw.wikibase.getLabelByLang(id, l) end if label then lang = l break end end return label, lang end -- getBestStatements if bestrank=true, else getAllStatements with no deprecated local function getStatements(entityId, property, bestrank) local claims = {} if not (entityId and mw.ustring.match(property, "^P%d+$")) then return claims end if bestrank then claims = mw.wikibase.getBestStatements(entityId, property) else local allclaims = mw.wikibase.getAllStatements(entityId, property) for _, c in ipairs(allclaims) do if c.rank ~= "deprecated" then table.insert(claims, c) end end end return claims end -- Is gender femenine? true or false local function feminineGender(id) local claims = mw.wikibase.getBestStatements(id or mw.wikibase.getEntityIdForCurrentPage(),'P21') if getSnak(claims, {1, "mainsnak", "datavalue"}) == nil then -- no claim, novalue or somevalue return false else local genderId = claims[1].mainsnak.datavalue.value.id if genderId == "Q6581072" or genderId == "Q1052281" or genderId == "Q43445" then -- female, transgender female, female organism return true end end return false end -- Fetch female form of label local function feminineForm(id, lang) local feminine_claims = getStatements(id, 'P2521') for _, feminine_claim in ipairs(feminine_claims) do if getSnak(feminine_claim, {'mainsnak', 'datavalue', 'value', 'language'}) == lang then return feminine_claim.mainsnak.datavalue.value.text end end end -- Add an icon for no label in requested language local function addLabelIcon(label_id, lang, uselang, icon) local ret_lang, ret_icon = '', '' if icon then if lang and lang ~= uselang and lang ~= 'mul' then ret_lang = " <sup>(" .. lang .. ")</sup>" end if label_id and (lang == nil or (lang ~= uselang and lang ~= 'mul')) then ret_icon = " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|" .. mw.message.new('Translate-taction-translate'):inLanguage(uselang):plain() .. "|link=https://www.wikidata.org/wiki/Special:EntityPage/" .. label_id .. "?uselang=" .. uselang .. "]]" untranslated = true end if isSet(i18n.categorylabels) and lang ~= uselang and lang ~= 'mul' and uselang == wiki.langcode then ret_icon = ret_icon .. '[[' .. i18n.categorylabels .. (lang and ']]' or '/Q]]') end end return ret_lang .. ret_icon end -- editicon values: true/false (no=false), right, void defaults to i18n.addpencil -- labelicon only by parameter local function setIcons(arg, parg) local val = arg == nil and parg or arg local edit_icon, label_icon if not isSet(val) then edit_icon, label_icon = i18n.addpencil, true elseif val == false or val == "false" or val == "no" then edit_icon, label_icon = false, false else edit_icon, label_icon = val, true end return edit_icon, label_icon end -- Add an icon for editing a statement with requirements for Wikidata Bridge local function addEditIcon(parameters) local ret = '' if i18n.addpencil and parameters.editicon and parameters.id and parameters.property then ret = ' <span data-bridge-edit-flow="single-best-value">' .. "[[File:Arbcom ru editing.svg|10px|baseline|" .. mw.message.new('Editlink'):inLanguage(parameters.lang[1]):plain() .. "|link=https://www.wikidata.org/wiki/" .. parameters.id .. "?uselang=" .. parameters.lang[1] .. "#" .. parameters.property .. "]]" .. "</span>" end return ret end -- add edit icon to the last element of a table local function addEditIconTable(thetable, parameters) if #thetable == 0 or not i18n.addpencil then return thetable end local last_element = thetable[#thetable] local the_icon = addEditIcon(parameters) -- add it before last html closing tags local tags = '' local rev_element = string.reverse(last_element) for tag in string.gmatch(rev_element, '(>%l+/<)') do if string.match(rev_element, '^' .. tags .. tag) then tags = tags .. tag else break end end local last_tags = string.reverse(tags) local offset = string.find(last_element, last_tags .. '$') if offset then thetable[#thetable] = string.sub(last_element, 1, offset - 1) .. the_icon .. last_tags else thetable[#thetable] = last_element .. the_icon end return thetable end -- Escape Lua captures local function captureEscapes(text) return mw.ustring.gsub(text, "(%%%d)", "%%%1") end -- expandTemplate or callParserFunction local function expandBraces(text, formatting) if text == nil or formatting == nil then return text end -- only expand braces if provided in argument, not included in value as in Q1164668 if mw.ustring.find(formatting, '{{', 1, true) == nil then return text end if type(text) ~= "string" then text = tostring(text) end for braces in mw.ustring.gmatch(text, "{{(.-)}}") do local parts = mw.text.split(braces, "|") local title_part = parts[1] local parameters = {} for i = 2, #parts do local subparts = mw.ustring.find(parts[i], "=") if subparts then parameters[mw.ustring.sub(parts[i], 1, subparts-1)] = mw.ustring.sub(parts[i], subparts+1, -1) else table.insert(parameters, parts[i]) end end local braces_expanded if mw.ustring.find(title_part, ":") and mw.text.split(title_part, ":")[1] ~= mw.site.namespaces[10].name -- not a prefix Template: then braces_expanded = mw.getCurrentFrame():callParserFunction{name=title_part, args=parameters} else braces_expanded = mw.getCurrentFrame():expandTemplate{title=title_part, args=parameters} end braces = mw.ustring.gsub(braces, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") -- escape magic characters braces_expanded = captureEscapes(braces_expanded) text = mw.ustring.gsub(text, "{{" .. braces .. "}}", braces_expanded) end return text end -- Resolve Wikidata redirects, pending phab:T157868 local function resolveEntityId(id) if not id or not mw.wikibase.isValidEntityId(id) then return id end -- if no label in English, maybe it is a redirect -- not using mw.title.new(id).isRedirect as it is expensive -- currently getLabelByLang does not follows redirects if mw.wikibase.getLabelByLang(id, 'en') == nil then local entity = mw.wikibase.getEntity(id) -- expensive function if not entity then return nil end if id ~= entity.id then -- Qid redirected to be fixed -- see [[Special:WhatLinksHere/Template:Track/wikidata/redirect]] require(wiki.module_title .. '/debug').track('redirect') require(wiki.module_title .. '/debug').track('redirect/' .. id) else -- no redirect and no English label, fix it to avoid expensive functions require(wiki.module_title .. '/debug').track('label') require(wiki.module_title .. '/debug').track('label/' .. id) end return entity.id end return id end -- format data type math local function printDatatypeMath(data) return mw.getCurrentFrame():callParserFunction('#tag:math', data) end -- format data type musical-notation local function printDatatypeMusical(data, formatting) local attr = {} if formatting == 'sound' then attr.sound = 1 end return mw.getCurrentFrame():extensionTag('score', data, attr) end -- format data type string local function printDatatypeString(data, parameters) if mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting = a pattern return expandBraces(mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = data}), parameters.formatting) elseif parameters.case then return case(parameters.case, data, parameters.lang[1]) end local data_number = string.match(data, "^%d+") if data_number then -- sort key by initial number and remaining string local sortkey = string.format("%019d", data_number * 1000) return data, sortkey .. string.sub(data, #data_number + 1) end return data end -- format data type url local function printDatatypeUrl(data, parameters) if parameters.formatting == 'weblink' then local label_parts = mw.text.split(string.gsub(data, '/$', ''), '/') local label = string.gsub(label_parts[3], '^www%.', '') if #label_parts > 3 then label = label .. '…' end return '[' .. data .. ' ' .. label .. ']' end return printDatatypeString(data, parameters) end -- format data type external-id local function printDatatypeExternal(data, parameters) if parameters.formatting == 'externalid' then local p_stat = mw.wikibase.getBestStatements(parameters.property, 'P1630') -- formatter URL local p_link_pattern = getSnak(p_stat, {1, "mainsnak", "datavalue", "value"}) if p_link_pattern then local p_link = mw.ustring.gsub(p_link_pattern, '$1', {['$1'] = data}) return '[' .. p_link .. ' ' .. data .. ']' end end return printDatatypeString(data, parameters) end -- format data type commonsMedia local function printDatatypeMedia(data, parameters) local icon if not string.find((parameters.formatting or ''), '$1', 1, true) then icon = "no-icon" end return printDatatypeString(data, parameters), icon end -- format data type globe-coordinate local function printDatatypeCoordinate(data, formatting) local function globes(globe_id) local globes = {['Q3343'] = 'Ariel',['Q3134']='Callisto',['Q596']='Ceres', ['Q6604'] = 'Charon',['Q7548'] = 'Deimos',['Q15040']='Dione',['Q2']='Domhan', ['Q3303']='Enceladus',['Q3143']='Europa',['Q3169']='Ganymede', ['Q15037'] = 'Hyperion',['Q17958']='Iapetas',['Q3123']='Io', ['Q319'] = 'Iúpatar',['Q111']='Mars',['Q308']='Mearcair',['Q15034']='Mimas', ['Q3352'] = 'Miranda',['Q405']='Gealach',['Q3332'] = 'Oberon', ['Q7547'] = 'Phobos', ['Q17975'] = 'Phoebe', ['Q339'] = 'Plútón',['Q15050']='Rhea',['Q15047']='Tethys', ['Q2565']='Tíotón',['Q3322'] = 'Titania',['Q3359']='Tríotón', ['Q3338'] = 'Umbriel',['Q313']='Véineas',['Q3030']='Vesta'} return globes[globe_id] end local function roundPrecision(num, prec) if prec == nil or prec <= 0 then return num end local sig = 10^math.floor(math.log10(prec)+.5) -- significant figure from sexagesimal precision: 0.00123 -> 0.001 return math.floor(num / sig + 0.5) * sig end local precision = data.precision local latitude = roundPrecision(data.latitude, precision) local longitude = roundPrecision(data.longitude, precision) if formatting and string.find(formatting, '$lat', 1, true) and string.find(formatting, '$lon', 1, true) then local ret = mw.ustring.gsub(formatting, '$l[ao][tn]', {['$lat'] = latitude, ['$lon'] = longitude}) if string.find(formatting, '$globe', 1, true) then local myglobe = 'earth' if isSet(data.globe) then local globenum = mw.text.split(data.globe, 'entity/')[2] -- http://www.wikidata.org/wiki/Q2 myglobe = globes(globenum) or 'earth' end ret = mw.ustring.gsub(ret, '$globe', myglobe) end return expandBraces(ret, formatting) elseif formatting == 'latitude' then return latitude, "no-icon" elseif formatting == 'longitude' then return longitude, "no-icon" elseif formatting == 'dimension' then return data.dimension, "no-icon" else --default formatting='globe' if isSet(data.globe) == false or data.globe == 'http://www.wikidata.org/entity/Q2' then return 'earth', "no-icon" else local globenum = mw.text.split(data.globe, 'entity/')[2] return globes(globenum) or globenum, "no-icon" end end end -- Local functions for data value quantity local function unitSymbol(id, lang) -- get unit symbol or code local unit_symbol = '' if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then unit_symbol = require(wiki.module_title .. "/Units").getUnit(0, '', id, true) end if unit_symbol == '' then -- fetch it local claims = mw.wikibase.getBestStatements(id, 'P5061') if #claims > 0 then local langclaims = {} table.insert(lang, 'mul') -- multilingual as last try for _, snak in ipairs(claims) do local snak_language = getSnak(snak, {"mainsnak", "datavalue", "value", "language"}) if snak_language and not langclaims[snak_language] then -- just the first one by language langclaims[snak_language] = snak.mainsnak.datavalue.value.text end end for _, l in ipairs(lang) do if langclaims[l] then return langclaims[l] end end end end return unit_symbol end local function getUnit(amount, id, parameters) -- get unit symbol or name local suffix = '' if parameters.formatting == "unitcode" then -- get unit symbol local unit_symbol = unitSymbol(id, parameters.lang) if isSet(unit_symbol) then suffix = unit_symbol end end if suffix == '' then -- formatting=unit, or formatting=unitcode not found -- get unit name local unit_label, lang = getLabelByLangs(id, parameters.lang) if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then suffix = require(wiki.module_title .. "/Units").getUnit(amount, unit_label, id, false) else suffix = (unit_label or id) .. addLabelIcon(id, lang, parameters.lang[1], parameters.editicon) end end if suffix ~= '' then suffix = ' ' .. suffix end return suffix end local function roundPrecision(in_num, out_num) -- rounds out_num with significant figures of in_num (default precision) -- first, count digits after decimal mark, handling cases like '12.345e6' local exponent, prec local integer, dot, decimals, expstr = in_num:match('^(%d*)(%.?)(%d*)(.*)') local e = expstr:sub(1, 1) if e == 'e' or e == 'E' then exponent = tonumber(expstr:sub(2)) end if dot == '' then prec = -integer:match('0*$'):len() else prec = #decimals end if exponent then -- So '1230' and '1.23e3' both give prec = -1, and '0.00123' and '1.23e-3' give 5. prec = prec - exponent end -- significant figures local in_bracket = 10^-prec -- -1 -> 10, 5 -> 0.00001 local out_bracket = in_bracket * out_num / in_num out_bracket = 10^math.floor(math.log10(out_bracket)+.5) -- 1230 -> 1000, 0.00123 -> 0.001 -- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound) return math.floor(out_num/out_bracket + (out_num >=0 and 1 or -1) * 0.5) * out_bracket end -- format data type quantity local function printDatatypeQuantity(data, parameters) local amount = data.amount amount = mw.ustring.gsub(amount, "%+", "") local suffix = "" local conv_amount, conv_suffix if string.sub(parameters.formatting or '', 1, 4) == "unit" or parameters.convert then -- example "unit": "http://www.wikidata.org/entity/Q174728" local unit_id = data.unit unit_id = mw.ustring.sub(unit_id, mw.ustring.find(unit_id, "Q"), -1) if string.sub(unit_id, 1, 1) == "Q" then suffix = getUnit(amount, unit_id, parameters) local convert_to if parameters.convert == "default" or parameters.convert == "default2" then local exist, units = pcall(require, wiki.module_title .. "/Units") if exist and next(units.convert_default) ~= nil then convert_to = units.convert_default[unit_id] end elseif string.sub(parameters.convert or '', 1, 1) == "Q" then convert_to = resolveEntityId(parameters.convert) end if convert_to and convert_to ~= unit_id then -- convert units local conv_temp = { -- formulae for temperatures ºC, ºF, ªK: [from] = {[to] = 'formula'} ['Q25267'] = {['Q42289'] = '$1*1.8+32', ['Q11597'] = '$1+273.15'}, ['Q42289'] = {['Q25267'] = '($1-32)/1.8', ['Q11597'] = '($1+459.67)*5/9'}, ['Q11597'] = {['Q25267'] = '$1-273.15', ['Q42289'] = '($1-273.15)*1.8000+32.00'} } if conv_temp[unit_id] and conv_temp[unit_id][convert_to] then local amount_f = mw.getCurrentFrame():callParserFunction('#expr', mw.ustring.gsub(conv_temp[unit_id][convert_to], "$1", amount)) conv_amount = math.floor(tonumber(amount_f) + 0.5) else local conversions = getStatements(unit_id, 'P2442') -- conversion to standard unit table.insert(conversions, mw.wikibase.getBestStatements(unit_id, 'P2370')[1]) -- conversion to SI unit for _, conv in ipairs(conversions) do if conv.mainsnak.snaktype == 'value' then -- no somevalue nor novalue if conv.mainsnak.datavalue.value.unit == "http://www.wikidata.org/entity/" .. convert_to then conv_amount = roundPrecision(amount, amount * tonumber(conv.mainsnak.datavalue.value.amount)) break end end end end if conv_amount then conv_suffix = getUnit(conv_amount, convert_to, parameters) end elseif parameters.convert == 'M' and tonumber(amount) > 10^8 then conv_amount = math.floor(amount/10^6 + 0.5) conv_suffix = ' M' .. string.sub(suffix, 2) end end end local lang_obj = mw.language.new(parameters.lang[1]) local sortkey = string.format("%019d", tonumber(amount) * 1000) if parameters.case then amount = case(parameters.case, amount, parameters.lang[1]) else amount = lang_obj:formatNum(tonumber(amount)) end if conv_amount then local conv_sortkey = string.format("%019d", tonumber(conv_amount) * 1000) conv_amount = lang_obj:formatNum(tonumber(conv_amount)) if parameters.convert == 'default2' then return conv_amount .. conv_suffix .. ' (' .. amount .. suffix .. ')', conv_sortkey else return conv_amount .. conv_suffix, conv_sortkey end end return amount .. suffix, sortkey end -- format data type time local function printDatatypeTime(data, parameters) -- Dates and times are stored in ISO 8601 format local timestamp = data.time local post_format local calendar_add = "" local precision = data.precision or 11 if string.sub(timestamp, 1, 1) == '-' then post_format = i18n.datetime["bc"] elseif string.sub(timestamp, 2, 3) == '00' then post_format = i18n.datetime["ad"] elseif precision > 8 then -- calendar model local calendar_model = {["Q12138"] = "Gréagórach", ["Q1985727"] = "Gréagórach", ["Q11184"] = "Iúil", ["Q1985786"] = "Iúil"} local calendar_id = mw.text.split(data.calendarmodel, 'entity/')[2] if (timestamp < "+1582-10-15T00:00:00Z" and calendar_model[calendar_id] == "Gréagórach") or (timestamp > "+1582-10-04T00:00:00Z" and calendar_model[calendar_id] == "Iúil") then calendar_add = " <sup>(" .. mw.message.new('Wikibase-time-calendar-' .. calendar_model[calendar_id]):inLanguage(parameters.lang[1]):plain() .. ")</sup>" end end local function formatTime(form, stamp) local pattern if type(form) == "function" then pattern = form(stamp) else pattern = form end stamp = tostring(stamp) if mw.ustring.find(pattern, "$1") then return mw.ustring.gsub(pattern, "$1", stamp) elseif string.sub(stamp, 1, 1) == '-' then -- formatDate() only supports years from 0 stamp = '+' .. string.sub(stamp, 2) elseif string.sub(stamp, 1, 1) ~= '+' then -- not a valid timestamp, it is a number stamp = string.format("%04d", stamp) end local ret = mw.language.new(parameters.lang[1]):formatDate(pattern, stamp) ret = string.gsub(ret, "^(%[?%[?)0+", "%1") -- supress leading zeros ret = string.gsub(ret, "( %[?%[?)0+", "%1") return ret end local function postFormat(t) if post_format and mw.ustring.find(post_format, "$1") then return mw.ustring.gsub(post_format, "$1", t) end return t end local intyear = tonumber(string.match(timestamp, "[+-](%d+)")) local ret = "" if precision <= 5 then -- precision is 10000 years or more local factor = 10 ^ ((5 - precision) + 4) local y2 = math.ceil(math.abs(intyear) / factor) local relative = formatTime(i18n.datetime[precision], y2) if post_format == i18n.datetime["bc"] then ret = mw.ustring.gsub(i18n.datetime.beforenow, "$1", relative) else ret = mw.ustring.gsub(i18n.datetime.afternow, "$1", relative) end local ret_number = string.match(ret, "%d+") if ret_number ~= nil then ret = mw.ustring.gsub(ret, ret_number, mw.language.new(parameters.lang[1]):formatNum(tonumber(ret_number))) end elseif precision == 6 or precision == 7 then -- millennia or centuries local card = math.floor((intyear - 1) / 10^(9 - precision)) + 1 ret = formatTime(i18n.datetime[precision], card) ret = postFormat(ret) elseif precision == 8 then -- decades local card = math.floor(math.abs(intyear) / 10) * 10 ret = formatTime(i18n.datetime[8], card) ret = postFormat(ret) elseif intyear > 9999 then -- not a valid timestamp return elseif precision == 9 or parameters.formatting == 'Y' then -- precision is year ret = formatTime(i18n.datetime[9], intyear) ret = postFormat(ret) .. calendar_add elseif precision == 10 then -- month ret = formatTime(i18n.datetime[10], timestamp .. " + 1 day") -- formatDate yyyy-mm-00 returns the previous month ret = postFormat(ret) .. calendar_add else -- precision 11, day ret = formatTime(parameters.formatting or i18n.datetime[11], timestamp) ret = postFormat(ret) .. calendar_add end return ret, timestamp end -- format data value wikibase-entityid: types wikibase-item, wikibase-property local function printDatatypeEntity(data, parameters) local entity_id = data['id'] if parameters.formatting == 'raw' then return entity_id, entity_id end local entity_page = 'Special:EntityPage/' .. entity_id local label, lang = getLabelByLangs(entity_id, parameters.lang) local sitelink = mw.wikibase.getSitelink(entity_id) local parameter = parameters.formatting local labelcase = label or sitelink if parameters.gender == 'feminineform' then labelcase = feminineForm(entity_id, lang) or labelcase end if parameters.case ~= 'gender' then labelcase = case(parameters.case, labelcase, lang, parameters.lang[1], entity_id, parameters.id) end local ret1, ret2 if parameter == 'label' then ret1 = labelcase or entity_id ret2 = labelcase or entity_id elseif parameter == 'sitelink' then ret1 = (sitelink or 'd:' .. entity_page) ret2 = sitelink or entity_id elseif mw.ustring.find((parameter or ''), '$1', 1, true) then -- formatting = a pattern ret1 = mw.ustring.gsub(parameter, '$1', labelcase or entity_id) ret1 = expandBraces(ret1, parameter) ret2 = labelcase or entity_id else if parameter == "ucfirst" or parameter == "ucinternallink" then if labelcase and lang then labelcase = mw.language.new(lang):ucfirst(labelcase) end -- only first of a list, reset formatting for next ones if parameter == "ucinterlanllink" then parameters.formatting = 'internallink' else parameters.formatting = nil -- default format end end if sitelink then ret1 = '[[' .. sitelink .. '|' .. labelcase .. ']]' ret2 = labelcase elseif label and (parameter == 'internallink' or parameter == 'ucinternallink') then ret1 = '[[' .. label .. '|' .. labelcase .. ']]' ret2 = labelcase else ret1 = '[[d:' .. entity_page .. '|' .. (labelcase or entity_id) .. ']]' ret2 = labelcase or entity_id end end return ret1 .. addLabelIcon(entity_id, lang, parameters.lang[1], parameters.editicon), ret2 end -- format data type monolingualtext local function printDatatypeMonolingual(data, parameters) -- data fields: language [string], text [string] if parameters.list == "lang" and data["language"] ~= parameters.lang[1] then return elseif parameters.formatting == "language" or parameters.formatting == "text" then return data[parameters.formatting] end local result = data["text"] if data["language"] ~= wiki.langcode then result = mw.ustring.gsub('<span lang="$1">$2</span>', '$[12]', {["$1"]=data["language"], ["$2"]=data["text"]}) end if mw.ustring.find((parameters.formatting or ''), '$', 1, true) then -- output format defined with $text, $language result = mw.ustring.gsub(parameters.formatting, '$text', result) result = mw.ustring.gsub(result, '$language', data["language"]) end return result end local function getSnakValue(snak, parameters) if snak.snaktype == 'value' then -- see Special:ListDatatypes if snak.datatype == "string" then return printDatatypeString(snak.datavalue.value, parameters) -- other data value string, tabular-data not implemented elseif snak.datatype == "commonsMedia" then return printDatatypeMedia(snak.datavalue.value, parameters) elseif snak.datatype == "url" then return printDatatypeUrl(snak.datavalue.value, parameters) elseif snak.datatype == "external-id" then return printDatatypeExternal(snak.datavalue.value, parameters) elseif snak.datatype == 'math' then return printDatatypeMath(snak.datavalue.value) elseif snak.datatype == 'musical-notation' then return printDatatypeMusical(snak.datavalue.value, parameters.formatting) -- other data types elseif snak.datatype == 'wikibase-item' or snak.datatype == 'wikibase-property' then return printDatatypeEntity(snak.datavalue.value, parameters) elseif snak.datatype == 'monolingualtext' then return printDatatypeMonolingual(snak.datavalue.value, parameters) elseif snak.datatype == "globe-coordinate" then return printDatatypeCoordinate(snak.datavalue.value, parameters.formatting) elseif snak.datatype == "quantity" then return printDatatypeQuantity(snak.datavalue.value, parameters) elseif snak.datatype == "time" then return printDatatypeTime(snak.datavalue.value, parameters) end elseif snak.snaktype == 'novalue' then if parameters.formatting == 'raw' then return end return mw.message.new('Wikibase-snakview-snaktypeselector-novalue'):inLanguage(parameters.lang[1]):plain() elseif snak.snaktype == 'somevalue' then if parameters.formatting == 'raw' then return end return mw.message.new('Wikibase-snakview-snaktypeselector-somevalue'):inLanguage(parameters.lang[1]):plain() end return mw.wikibase.renderSnak(snak) end local function printError(key) return '<span class="error">' .. i18n.errors[key] .. '</span>' end local function getQualifierSnak(claim, qualifierId, parameters) -- a "snak" is Wikidata terminology for a typed key/value pair -- a claim consists of a main snak holding the main information of this claim, -- as well as a list of attribute snaks and a list of references snaks if qualifierId then -- search the attribute snak with the given qualifier as key if claim.qualifiers then local qualifier = claim.qualifiers[qualifierId] if qualifier then if qualifier[1].datatype == "monolingualtext" then -- iterate over monolingualtext qualifiers to get local language for idx in pairs(qualifier) do if getSnak(qualifier[idx], {"datavalue", "value", "language"}) == parameters.lang[1] then return qualifier[idx] end end elseif parameters.list then return qualifier else return qualifier[1] end end end return nil, printError("qualifier-not-found") else -- otherwise return the main snak return claim.mainsnak end end local function getValueOfClaim(claim, qualifierId, parameters) local snak, error = getQualifierSnak(claim, qualifierId, parameters) if not snak then return nil, nil, error elseif snak[1] then -- a multi qualifier local result, sortkey = {}, {} local maxvals = tonumber(parameters.list) for idx in pairs(snak) do result[#result + 1], sortkey[#sortkey + 1] = getSnakValue(snak[idx], parameters) if maxvals and maxvals == #result then break end end return mw.text.listToText(result, parameters.qseparator, parameters.qconjunction), sortkey[1] else -- a property or a qualifier return getSnakValue(snak, parameters) end end local function getValueOfParentClaim(claim, qualifierId, parameters) local qids = mw.text.split(qualifierId, '/', true) local valueraw, parent_claims, value, sortkey if qids[1] == parameters.property then valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=parameters.lang}) else valueraw, _, _ = getValueOfClaim(claim, qids[1], {["formatting"]="raw", ["lang"]=parameters.lang}) end if string.sub(valueraw or '', 1, 1) == "Q" then -- protection for 'no value' parent_claims = mw.wikibase.getBestStatements(valueraw, qids[2]) if parent_claims[1] ~= nil then value, sortkey, _ = getValueOfClaim(parent_claims[1], nil, parameters) -- raw parent value needed for while/black lists, lang for avoiding an error on types other than entity valueraw, _, _ = getValueOfClaim(parent_claims[1], nil, {["formatting"]="raw", ["lang"]=parameters.lang}) end end return value, sortkey, valueraw end -- see d:Help:Sources local function getReferences(claim, lang) local notproperref = { ["P143"] = true, -- imported from ["P3452"] = true, -- inferred from ["P887"] = true, -- based on heuristic ["P4656"] = true -- Wikimedia import URL } local result = "" -- traverse through all references for ref in pairs(claim.references or {}) do local refparts local refs = {} local validref = true local ref_name -- traverse through all parts of the current reference for snakkey, snakval in pairs(claim.references[ref].snaks or {}) do for partkey, _ in pairs(claim.references[ref].snaks[snakkey] or {}) do if notproperref[snakkey] then -- not a proper reference validref = false break end end if validref then for snakidx = 1, #snakval do if snakidx > 1 then refparts = refparts .. ", " end refparts = refparts or '' .. getSnakValue(snakval[snakidx], {lang=lang}) end refs[snakkey] = refparts refparts = nil if snakkey == "P248" then -- stated in ref_name = snakval[1].datavalue.value.id end end end -- fill missing values with parent item if ref_name then local function refParent(qid, pid, formatting) local snak = getSnak(mw.wikibase.getBestStatements(qid, pid), {1, "mainsnak"}) return snak and getSnakValue(snak, {formatting=formatting, lang=lang}) end refs['P50'] = refs['P50'] or refParent(ref_name, 'P50', 'label') -- author refs['P407'] = refs['P407'] or refParent(ref_name, 'P407', 'label') -- language of work refs['P123'] = refs['P123'] or refParent(ref_name, 'P123', 'label') -- publisher refs['P577'] = refs['P577'] or refParent(ref_name, 'P577') -- date refs['P1433'] = refs['P1433'] or refParent(ref_name, 'P1433', 'label') -- published in refs['P304'] = refs['P304'] or refParent(ref_name, 'P304') -- page(s) refs['P433'] = refs['P433'] or refParent(ref_name, 'P433') -- issue refs['P236'] = refs['P236'] or refParent(ref_name, 'P236') -- ISSN refs['P356'] = refs['P356'] or refParent(ref_name, 'P356') -- DOI end -- get title of local templates for citing references local template_web = mw.wikibase.getSitelink('Q5637226') or "" template_web = mw.text.split(template_web, ":")[2] -- split off namespace from front local template_journal = mw.wikibase.getSitelink('Q5624899') or "" template_journal = mw.text.split(template_journal, ":")[2] local citeParams = {} if refs['P854'] and (refs['P1476'] or refs['P248']) and template_web then -- if both "reference URL" and "title" (or "stated in") are present, then use cite web template citeParams[i18n['cite']['url']] = refs['P854'] if refs['P248'] and refs['P1476'] == nil then citeParams[i18n['cite']['title']] = refs['P248']:match("^%[%[.-|(.-)%]%]") else citeParams[i18n['cite']['title']] = refs['P1476'] citeParams[i18n['cite']['website']] = refs['P248'] end citeParams[i18n['cite']['author']] = refs['P50'] citeParams[i18n['cite']['language']] = refs['P407'] citeParams[i18n['cite']['publisher']] = refs['P123'] citeParams[i18n['cite']['date']] = refs['P577'] citeParams[i18n['cite']['pages']] = refs['P304'] citeParams[i18n['cite']['access-date']] = refs['P813'] citeParams[i18n['cite']['archive-url']] = refs['P1065'] citeParams[i18n['cite']['archive-date']] = refs['P2960'] citeParams[i18n['cite']['quote']] = refs['P1683'] refparts = mw.getCurrentFrame():expandTemplate{title=template_web, args=citeParams} elseif refs['P1433'] and (refs['P1476'] or refs['P248']) and template_journal then -- if both "published in" and "title" (or "stated in") are present, then use cite journal template citeParams[i18n['cite']['work']] = refs['P1433'] citeParams[i18n['cite']['title']] = refs['P1476'] or refs['P248'] citeParams[i18n['cite']['author']] = refs['P50'] citeParams[i18n['cite']['date']] = refs['P577'] citeParams[i18n['cite']['issue']] = refs['P433'] citeParams[i18n['cite']['pages']] = refs['P304'] citeParams[i18n['cite']['language']] = refs['P407'] citeParams[i18n['cite']['issn']] = refs['P236'] citeParams[i18n['cite']['doi']] = refs['P356'] refparts = mw.getCurrentFrame():expandTemplate{title=template_journal, args=citeParams} elseif validref then -- raw ouput local snaksorder = claim.references[ref]["snaks-order"] local function indexed(a) for _, b in ipairs(snaksorder) do if b == a then return true end end return false end for k, _ in pairs(refs or {}) do if not indexed(k) then table.insert(snaksorder, k) end end local italics = "''" for _, k in ipairs(snaksorder) do if refs[k] then refparts = refparts and refparts .. " " or "" refparts = refparts .. mw.ustring.gsub(getLabelByLangs(k, lang), "^%l", mw.ustring.upper) .. ": " refparts = refparts .. italics .. refs[k] .. italics .. "." italics = "" end end end if refparts then result = mw.getCurrentFrame():extensionTag("ref", refparts, {name=ref_name}) end end return result end -- Set whitelist or blacklist values local function setWhiteOrBlackList(type_list, num_qual, args) local listed = false local list = {} for i = 0, num_qual do if isSet(args[type_list .. i]) then listed = true list[tostring(i)] = {} for v in string.gmatch(args[type_list .. i], 'Q%d+') do list[tostring(i)][resolveEntityId(v)] = true end end end return list, listed end local function tableParameters(args, parameters, column) local column_params = mw.clone(parameters) column_params.formatting = args["colformat"..column]; if column_params.formatting == "" then column_params.formatting = nil end column_params.convert = args["convert" .. column] if args["case" .. column] then column_params.case = args["case" .. column] end return column_params end local function getEntityId(frame, unnamed) local args = frame.args or frame local pargs = frame.args and frame:getParent().args local id = args.item or args.from or (unnamed and mw.text.trim(args[1] or '') or nil) if not isSet(id) and pargs then id = pargs.item or pargs.from or (unnamed and mw.text.trim(pargs[1] or '') or nil) end if isSet(id) then if string.find(id, ":") then -- remove prefix as Property:Pid id = mw.text.split(id, ":")[2] end else id = mw.wikibase.getEntityIdForCurrentPage() end return id end -- Main function claim --------------------------------------------- -- on debug console use: =p.claim{item="Q...", property="P...", ...} function p.claim(frame) local is_sandbox = frame.args and isSet(frame:getParent().args.sandbox) if not required and is_sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).claim(frame) end local args = frame.args or frame -- via invoke or require --If a value is already set, use it if isSet(args.value) then if args.value == 'NONE' then return else return args.value end end -- arguments local id = getEntityId(frame) if id == nil then return end local property = string.upper(args.property or "") local qualifierId = {} qualifierId[1] = isSet(args.qualifier) and string.upper(args.qualifier) or nil local i = 2 while isSet(args["qualifier" .. i]) do qualifierId[i] = string.upper(args["qualifier" .. i]) i = i + 1 end local formatting = isSet(args.formatting) and args.formatting or nil local convert = isSet(args.convert) and args.convert or nil local case = args.case local list = args.list or true; if (list == "false" or list == "no") then list = false end if list == 'firstrank' then list = 'bestrank' end -- alias local sorting_col = args.tablesort local sorting_up = (args.sorting or "") ~= "-1" local separator = isSet(args.separator) and args.separator local conjunction = isSet(args.conjunction) and args.conjunction or separator local rowformat = args.rowformat local references = args.references local showerrors = args.showerrors local default = args.default if default then showerrors = nil end local editicon = not (args.editicon == "false" or args.editicon == "no" or formatting == "raw") local parameters = {["id"] = id, ["property"] = property, ["formatting"] = formatting, ["convert"] = convert, ["list"] = list, ["case"] = case, ["editicon"] = editicon, ["separator"] = separator, ["conjunction"] = conjunction, ["qseparator"] = separator, ["qconjunction"] = conjunction} parameters.lang = findLang(args.lang) -- fetch property local claims = {} local bestrank = (parameters.list == false or parameters.list == 'bestrank') and parameters.list ~= 'lang' for p in string.gmatch(property, 'P%d+') do claims = getStatements(id, p, bestrank) if #claims > 0 then parameters.property = p break end end if #claims == 0 then if showerrors then return printError("property-not-found") else return default end end -- defaults for table local preformat, postformat = "", "" local whitelisted, blacklisted = false, false local whitelist, blacklist = {}, {} if parameters.formatting == "table" then parameters.separator = parameters.separator or "<br />" parameters.conjunction = parameters.conjunction or "<br />" parameters.qseparator = ", " parameters.qconjunction = ", " if not rowformat then rowformat = "$0 ($1" i = 2 while qualifierId[i] do rowformat = rowformat .. ", $" .. i i = i + 1 end rowformat = rowformat .. ")" elseif mw.ustring.find(rowformat, "^[*#]") then parameters.separator = "</li><li>" parameters.conjunction = "</li><li>" if mw.ustring.match(rowformat, "^[*#]") == "*" then preformat = "<ul><li>" postformat = "</li></ul>" else preformat = "<ol><li>" postformat = "</li></ol>" end rowformat = mw.ustring.gsub(rowformat, "^[*#] ?", "") end -- set whitelist and blacklist values whitelist, whitelisted = setWhiteOrBlackList("whitelist", #qualifierId, args) blacklist, blacklisted = setWhiteOrBlackList("blacklist", #qualifierId, args) end -- set feminine case if gender is requested local itemgender = args.itemgender local idgender if itemgender then if string.match(itemgender, "^P%d+$") then local snak_id = getSnak(mw.wikibase.getBestStatements(id, itemgender), {1, "mainsnak", "datavalue", "value", "id"}) if snak_id then idgender = snak_id end elseif string.match(itemgender, "^Q%d+$") then idgender = itemgender end end local gender_requested = false if parameters.case == "gender" or idgender then gender_requested = true elseif parameters.formatting == "table" then for i=0, #qualifierId do if args["case" .. i] and args["case" .. i] == "gender" then gender_requested = true break end end end if gender_requested then if feminineGender(idgender or id) then parameters.gender = "feminineform" end end -- get initial sort indices local sortindices = {} for idx in pairs(claims) do sortindices[#sortindices + 1] = idx end -- sort by claim rank local comparator = function(a, b) local rankmap = { deprecated = 2, normal = 1, preferred = 0 } local ranka = rankmap[claims[a].rank or "normal"] .. string.format("%08d", a) local rankb = rankmap[claims[b].rank or "normal"] .. string.format("%08d", b) return ranka < rankb end table.sort(sortindices, comparator) local result, result2 local error if parameters.list or parameters.formatting == "table" then -- convert LF to line feed, <br /> may not work on some cases parameters.separator = parameters.separator == "LF" and "\010" or parameters.separator parameters.conjunction = parameters.conjunction == "LF" and "\010" or parameters.conjunction -- i18n separators parameters.separator = parameters.separator or mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain() parameters.conjunction = parameters.conjunction or (mw.message.new('And'):inLanguage(parameters.lang[1]):plain() .. mw.message.new('Word-separator'):inLanguage(parameters.lang[1]):plain()) -- iterate over all elements and return their value (if existing) local value, valueq local sortkey, sortkeyq local values = {} local sortkeys = {} local refs = {} local rowlist = {} -- rows to list with whitelist or blacklist for idx in pairs(claims) do local claim = claims[sortindices[idx]] local reference = {} if not whitelisted then rowlist[idx] = true end if parameters.formatting == "table" then local params = tableParameters(args, parameters, "0") value, sortkey, error = getValueOfClaim(claim, nil, params) if value then values[#values + 1] = {} sortkeys[#sortkeys + 1] = {} refs[#refs + 1] = {} if whitelist["0"] or blacklist["0"] then local valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=params.lang}) if whitelist["0"] and whitelist["0"][valueraw or ""] then rowlist[#values] = true elseif blacklist["0"] and blacklist["0"][valueraw or ""] then rowlist[#values] = false end end for i, qual in ipairs(qualifierId) do local j = tostring(i) params = tableParameters(args, parameters, j) local valueq, sortkeyq, valueraw if qual == property then -- hack for getting the property with another formatting, i.e. colformat1=raw valueq, sortkeyq, _ = getValueOfClaim(claim, nil, params) else for q in mw.text.gsplit(qual, '%s*OR%s*') do if string.find(q, ".+/.+") then valueq, sortkeyq, valueraw = getValueOfParentClaim(claim, q, params) elseif string.find(q, "^/.+") then local claim2 = getStatements(id, string.sub(q, 2), bestrank) if #claim2 > 0 then valueq, sortkeyq, _ = getValueOfClaim(claim2[1], nil, params) end else valueq, sortkeyq, _ = getValueOfClaim(claim, q, params) end if valueq then break end end end values[#values]["col" .. j] = valueq sortkeys[#sortkeys]["col" .. j] = sortkeyq or valueq if whitelist[j] or blacklist[j] then valueq = valueraw or getValueOfClaim(claim, qual, {["formatting"]="raw", ["lang"]=params.lang}) if whitelist[j] and whitelist[j][valueq or ""] then rowlist[#values] = true elseif blacklist[j] and blacklist[j][valueq or ""] then rowlist[#values] = false end end end end else value, sortkey, error = getValueOfClaim(claim, qualifierId[1], parameters) values[#values + 1] = {} sortkeys[#sortkeys + 1] = {} refs[#refs + 1] = {} end if not value and showerrors then value = error end if value then if references and claim.references then reference = claim.references end refs[#refs]["col0"] = reference values[#values]["col0"] = value sortkeys[#sortkeys]["col0"] = sortkey or value end end -- sort and format results sortindices = {} for idx in pairs(values) do sortindices[#sortindices + 1] = idx end if sorting_col then local sorting_table = mw.text.split(sorting_col, '%D+') local comparator = function(a, b) local valuea, valueb local i = 1 while valuea == valueb and i <= #sorting_table do valuea = sortkeys[a]["col" .. sorting_table[i]] or '' valueb = sortkeys[b]["col" .. sorting_table[i]] or '' i = i + 1 end if sorting_up then return valueb > valuea end return valueb < valuea end table.sort(sortindices, comparator) end local maxvals = tonumber(parameters.list) result = {} for idx in pairs(values) do local valuerow = values[sortindices[idx]] local reference = getReferences({["references"] = refs[sortindices[idx]]["col0"]}, parameters.lang) value = valuerow["col0"] if parameters.formatting == "table" then if not rowlist[sortindices[idx]] then value = nil else local rowformatting = rowformat .. "$" -- fake end character added for easy gsub value = mw.ustring.gsub(rowformatting, "$0", value) value = mw.ustring.gsub(value, "$R0", reference) -- add reference for i, _ in ipairs(qualifierId) do local valueq = valuerow["col" .. i] if args["rowsubformat" .. i] and valueq then -- add fake end character $ -- gsub $i not followed by a number so $1 doesn't match $10, $11... -- remove fake end character valueq = captureEscapes(valueq) valueq = mw.ustring.gsub(args["rowsubformat" .. i] .. "$", "$" .. i .. "(%D)", valueq .. "%1") valueq = string.sub(valueq, 1, -2) rowformatting = mw.ustring.gsub(rowformatting, "$" .. i .. "(%D)", args["rowsubformat" .. i] .. "%1") end valueq = valueq and captureEscapes(valueq) or '' value = mw.ustring.gsub(value, "$" .. i .. "(%D)", valueq .. "%1") end value = string.sub(value, 1, -2) -- remove fake end character value = expandBraces(value, rowformatting) end elseif value then value = expandBraces(value, parameters.formatting) value = value .. reference end if isSet(value) then result[#result + 1] = value if not parameters.list or (maxvals and maxvals == #result) then break end end end -- in a table, add edit icon on last element if parameters.formatting == 'table' and parameters.editicon then result = addEditIconTable(result, parameters) end result = preformat .. mw.text.listToText(result, parameters.separator, parameters.conjunction) .. postformat else -- return first element local claim = claims[sortindices[1]] result, result2, error = getValueOfClaim(claim, qualifierId[1], parameters) if result and references then result = result .. getReferences(claim, parameters.lang) end end if isSet(result) then if i18n.addpencil and not (parameters.formatting == 'table' or (result2 and result2 == 'no-icon')) then -- add edit icon, except table added previously and except explicit no-icon internal flag result = result .. addEditIcon(parameters) end else if showerrors then result = error else result = default end end return result, (required and not is_sandbox) and untranslated or '' end -- This is used to get the TA98 (Terminologia Anatomica first edition 1998) values like 'A01.1.00.005' (property P1323) -- which are then linked to http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/01.1.00.005%20Entity%20TA98%20EN.htm -- uses the newer mw.wikibase calls instead of directly using the snaks -- formatPropertyValues returns a table with the P1323 values concatenated with ", " so we have to split them out into a table in order to construct the return string p.getTAValue = function(frame) local ent = mw.wikibase.getEntity() local props = ent:formatPropertyValues('P1323') local out = {} local t = {} for k, v in pairs(props) do if k == 'value' then t = mw.text.split( v, ", ") for k2, v2 in pairs(t) do out[#out + 1] = "[http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/" .. string.sub(v2, 2) .. "%20Entity%20TA98%20EN.htm " .. v2 .. "]" end end end local ret = table.concat(out, "<br> ") if #ret == 0 then ret = "Invalid TA" end return ret end -- Local functions for getParentValues ----------------------- local function uc_first(word) return mw.ustring.upper(mw.ustring.sub(word, 1, 1)) .. mw.ustring.sub(word, 2) end local function getPropertyValue(id, property, parameter, langs, editicon, case) local snaks = mw.wikibase.getBestStatements(id, property) local mysnak = getSnak(snaks, {1, "mainsnak"}) if mysnak == nil then return end local entity_id local result = '-' -- default for 'no value' if mysnak.datavalue then entity_id = "Q" .. tostring(mysnak.datavalue.value['numeric-id']) result, _ = getSnakValue(mysnak, {formatting=parameter, lang=langs, editicon=editicon, case=case}) end return entity_id, result end local function getParentObjects(id, prop_format, label_format, languages, propertySupString, propertyLabel, propertyLink, labelShow, editicon, upto, upto_linkId, last_only, grammatical_case, include_self) if upto_linkId == nil then upto_linkId = "" end local upto_link_ids = {} for q in mw.text.gsplit(upto_linkId, '[^Q%d]') do upto_link_ids[resolveEntityId(q)] = true end local propertySups = mw.text.split(propertySupString, '[^P%d]') local lastlabel = uc_first(upto or '') local maxloop = tonumber(upto) or ((lastlabel .. upto_linkId) == '' and 10 or 50) local labelFilter = {} if labelShow then for _, v in ipairs(mw.text.split(labelShow, "/")) do labelFilter[uc_first(v)] = true end end local label_self _, label_self = getPropertyValue(id, propertyLabel, label_format, languages) local result = {} for iter = 1, maxloop do local link, label, linktext, _id, _link for _, propertySup in pairs(propertySups) do _id, _link = getPropertyValue(id, propertySup, prop_format, languages, editicon, grammatical_case) if _id and _link then id = _id; link = _link break end end if not id or not link then break end if propertyLink then _, linktext = getPropertyValue(id, propertyLink, "label", languages) if linktext then link = mw.ustring.gsub(link, "%[%[(.*)%|.+%]%]", "[[%1|" .. linktext .. "]]") end end _, label = getPropertyValue(id, propertyLabel, label_format, languages, false, "infoboxlabel") if labelShow == nil or labelFilter[label] then result[#result + 1] = {label, link} if label then labelFilter[label] = nil -- only first label found end end if label == lastlabel or upto_link_ids[id] then break end end if last_only then result = {result[#result]} end if include_self then table.insert(result, 1, {label_self, mw.title.getCurrentTitle().text}) end return result end local function parentObjectsToString(result, rowformat, cascade, sorting) local ret = {} local first = 1 local last = #result local iter = 1 if sorting == "-1" then first = #result; last = 1; iter = -1 end for i = first, last, iter do local rowtext = mw.ustring.gsub(rowformat, "$[01]", {["$0"] = result[i][1], ["$1"] = result[i][2]}) ret[#ret +1] = expandBraces(rowtext, rowformat) end if cascade then local prefix = "" for i = 1, #ret do ret[i] = prefix .. "• " .. ret[i] prefix = prefix .. "&nbsp;" end end return ret end -- Returns pairs of instance label and property value fetching a recursive tree function p.getParentValues(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getParentValues(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame) if id == nil then return end local languages = findLang(args.lang) local propertySup = args.property; if not isSet(propertySup) then propertySup = "P131" end --administrative entity local propertyLabel = args.label; if not isSet(propertyLabel) then propertyLabel = "P31" end --instance local propertyLink = args.valuetext; if propertyLink == "" then propertyLink = nil end --internallink local property_format = args.formatting; if property_format == "" then property_format = nil end local label_format = args.labelformat; if not isSet(label_format) then label_format = "label" end local upto = args.upto; if upto == "" then upto = nil end local last_only = (args.last_only == "true" or args.last_only == "yes") local labelShow = args.labelshow; if labelShow == "" then labelShow = nil end local editicon = not (args.editicon == "false" or args.editicon == "no") local include_self = (args.include_self == "true" or args.include_self == "yes") local case = args.case; if case == "" then case = nil end if isSet(args.uptolabelid) then upto, _ = getLabelByLangs(args.uptolabelid, languages) end if isSet(args.showlabelid) then local showLabelList = {} for substring in mw.text.gsplit(args.showlabelid, '[^Q%d]') do table.insert(showLabelList, (getLabelByLangs(substring, languages))) end if #showLabelList > 0 then labelShow = table.concat(showLabelList,"/") end end local result = getParentObjects(id, property_format, label_format, languages, propertySup, propertyLabel, propertyLink, labelShow, editicon, upto, args.uptovalueid or args.uptolinkid, last_only, case, include_self) if #result == 0 then return end local rowformat = args.rowformat; if not isSet(rowformat) then rowformat = "$0 = $1" end local separator = args.separator; if not isSet(separator) then separator = "<br />" end local sorting = args.sorting; if sorting == "" then sorting = nil end local cascade = (args.cascade == "true" or args.cascade == "yes") local ret = parentObjectsToString(result, rowformat, cascade, sorting) ret = addEditIconTable(ret, {property=propertySup, editicon=editicon, id=id, lang=languages}) return mw.text.listToText(ret, separator, separator) end -- Link with a parent label -------------------- function p.linkWithParentLabel(frame) if not required and frame.args and isSet(frame:getParent().args.sandbox) then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).linkWithParentLabel(frame) end local args = {} if frame.args then for k, v in pairs(frame.args) do -- metatable args[k] = v end else args = frame -- via require end if isSet(args.value) then return args.value end -- get id value of property/qualifier local largs = mw.clone(args) largs.list = tonumber(args.list) and args.list or "true" largs.formatting = "raw" largs.separator = "/·/" largs.editicon = "false" local items_list, _ = p.claim(largs) if not isSet(items_list) then return end local items_table = mw.text.split(items_list, "/·/", true) -- get internal link of property/qualifier largs.formatting = "internallink" local link_list, _ = p.claim(largs) local link_table = mw.text.split(link_list, "/·/", true) -- get label of parent property local parent_claim = getSnak(getStatements(items_table[1], args.parent, true), {1, "mainsnak", "datatype"}) if parent_claim == 'monolingualtext' then largs.formatting = nil largs.list = 'lang' else largs.formatting = "label" largs.list = "false" end largs.property = args.parent largs.qualifier = nil for i, v in ipairs(items_table) do largs.item = v local link_label, _ = p.claim(largs) if isSet(link_label) then link_table[i] = mw.ustring.gsub(link_table[i] or '', "%[%[(.*)%|.+%]%]", "[[%1|" .. link_label .. "]]") end end args.editicon = not (args.editicon == "false" or args.editicon == "no") args.id = getEntityId(frame) args.lang = findLang(args.lang) return mw.text.listToText(link_table) .. addEditIcon(args) end -- Calculate number of years old ---------------------------- function p.yearsOld(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).yearsOld(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame) local lang = mw.language.new('en') local function getBestValue(id, prop) local snak_value = getSnak(mw.wikibase.getBestStatements(id, prop), {1, "mainsnak", "datavalue", "value"}) return snak_value end local birth = getBestValue(id, 'P569') if type(birth) ~= 'table' or birth.time == nil or birth.precision == nil or birth.precision < 8 then return end local death = getBestValue(id, 'P570') if type(death) ~= 'table' or death.time == nil or death.precision == nil then death = {['time'] = lang:formatDate('c'), ['precision'] = 11} -- current date elseif death.precision < 8 then return end local dates = {} dates[1] = {['min'] = {}, ['max'] = {}, ['precision'] = birth.precision} dates[1].min.year = tonumber(mw.ustring.match(birth.time, "^[+-]?%d+")) dates[1].min.month = tonumber(mw.ustring.match(birth.time, "\-(%d%d)\-")) dates[1].min.day = tonumber(mw.ustring.match(birth.time, "\-(%d%d)T")) dates[1].max = mw.clone(dates[1].min) dates[2] = {['min'] = {}, ['max'] = {}, ['precision'] = death.precision} dates[2].min.year = tonumber(mw.ustring.match(death.time, "^[+-]?%d+")) dates[2].min.month = tonumber(mw.ustring.match(death.time, "\-(%d%d)\-")) dates[2].min.day = tonumber(mw.ustring.match(death.time, "\-(%d%d)T")) dates[2].max = mw.clone(dates[2].min) for i, d in ipairs(dates) do if d.precision == 10 then -- month d.min.day = 1 local timestamp = string.format("%04d", tostring(math.abs(d.max.year))) .. string.format("%02d", tostring(d.max.month)) .. "01" d.max.day = tonumber(lang:formatDate("j", timestamp .. " + 1 month - 1 day")) elseif d.precision < 10 then -- year or decade d.min.day = 1 d.min.month = 1 d.max.day = 31 d.max.month = 12 if d.precision == 8 then -- decade d.max.year = d.max.year + 9 end end end local function age(d1, d2) local years = d2.year - d1.year if d2.month < d1.month or (d2.month == d1.month and d2.day < d1.day) then years = years - 1 end if d2.year > 0 and d1.year < 0 then years = years - 1 -- no year 0 end return years end local old_min = age(dates[1].max, dates[2].min) local old_max = age(dates[1].min, dates[2].max) local old, old_expr if old_min == 0 and old_max == 0 then old = "< 1" old_max = 1 -- expression in singular elseif old_min == old_max then old = old_min else old = old_min .. "/" .. old_max end if args.formatting == 'unit' then local langs = findLang(args.lang) local yo, yo_sg, yo_pl, yo_pau if langs[1] == wiki.langcode then yo_sg = i18n["years-old"].singular yo_pl = i18n["years-old"].plural yo_pau = i18n["years-old"].paucal end if not isSet(yo_pl) then yo_pl, _ = getLabelByLangs('Q24564698', langs) yo_sg = yo_pl end if not isSet(yo_pau) then yo_pau = yo_pl end yo = mw.language.new(langs[1]):plural(old_max, {yo_sg, yo_pau, yo_pl}) if mw.ustring.find(yo, '$1', 1, true) then old_expr = mw.ustring.gsub(yo, "$1", old) else old_expr = old .. '&nbsp;' .. yo end elseif args.formatting then old_expr = expandBraces(mw.ustring.gsub(args.formatting, '$1', old), args.formatting) else old_expr = old end return old_expr end -- Gets a label in a given language (content language by default) or its fallbacks, optionnally linked. function p.getLabel(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getLabel(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame, true) if id == nil then return end local editicon = not (args.editicon == "false" or args.editicon == "no") and mw.wikibase.isValidEntityId(id) local label_icon = '' local label, lang if args.label then label = args.label else local languages = findLang(args.lang) -- exceptions or labels fixed local exist, labels = pcall(require, wiki.module_title .. "/labels" .. (languages[1] == wiki.langcode and '' or '/' .. languages[1])) if exist and next(labels.infoboxLabelsFromId) ~= nil then label = labels.infoboxLabelsFromId[id] end if label == nil then label, lang = getLabelByLangs(id, languages) if label then if args.itemgender and feminineGender(args.itemgender) then label = feminineForm(id, lang) or label end label = mw.language.new(lang):ucfirst(mw.text.nowiki(label)) -- sanitize end label_icon = addLabelIcon(id, lang, languages[1], editicon) end end local linked = args.linked if isSet(linked) and linked ~= "no" then local article = mw.wikibase.getSitelink(id) or ("d:Special:EntityPage/" .. id) return "[[" .. article .. "|" .. (label or id) .. "]]" .. label_icon, not required and '' or untranslated else return (label or id) .. label_icon, not required and '' or untranslated end end -- Utilities ----------------------------- -- See also module ../debug. -- Copied from Module:Wikibase function p.getSiteLink(frame) local id = getEntityId(frame, 1) if id == nil then return end return mw.wikibase.getSitelink(id, mw.text.trim(frame.args[2] or '')) end -- Helper function for the default language code used function p.lang(frame) local lang = frame and frame.args[1] -- nil via require return findLang(lang)[1] end -- Number of statements function p.numStatements(frame) local id = getEntityId(frame) if id == nil then return 0 end local prop = mw.text.trim(frame.args[1]) local num = {} if frame.args[2] then -- qualifier local qual = mw.text.trim(frame.args[2]) local values = p.claim{item=id, property=prop, qualifier=qual, formatting='raw', separator='/·/'} if values then num = mw.text.split(values, '/·/') end else num = mw.wikibase.getBestStatements(id, prop) end return #num end -- Returns true if property datavalue is found excluding novalue/somevalue function p.validProperty(frame) local property = mw.text.trim(frame.args[1]) local item = getEntityId(frame) if item == nil then return end local prop_data = getSnak(mw.wikibase.getBestStatements(item, property), {1, "mainsnak", "datavalue"}) return prop_data and true or nil end function p.editAtWikidata(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local value = isSet(args[1]) if value then return end local param = {} param.id = getEntityId(args, pargs) param.property = args.property param.lang = findLang(args.lang) param.editicon, _ = setIcons(args.editicon) return addEditIcon(param) end return p 8idrsi97gzx9h4wmcrkk6imf0zk68bd 1329042 1329025 2026-10-01T22:21:43Z TGcoa 21229 Scribunto changed. The change (Gerrit 1339616, merged 23 September) was deployed to Wikipedia in the last few days. Before it, if a module function returned nil, '', {{#invoke:}} quietly output nothing. Now that return value crashes at mw.lua:656 Wikidades returns exactly that when a person has no value for a property.. The rows that are supposed to stay hidden show errors instead. Module:Wikidata has the same flaw. It's an older copy of the same Catalan module and causes the 2 errors in th 1329042 Scribunto text/plain -- version 20200526 from master @cawiki local p = {} -- Initialization of variables -------------------- local i18n = { -- internationalisation at [[Module:Wikidata/i18n]] ["errors"] = { ["property-not-found"] = "Maoin gan aimsiú.", ["qualifier-not-found"] = "Cáilitheoir gan aimsiú.", }, ["datetime"] = { -- $1 is a placeholder for the actual number ["beforenow"] = "$1 RCh", -- how to format negative numbers for precisions 0 to 5 ["afternow"] = "$1 IC", -- how to format positive numbers for precisions 0 to 5 ["bc"] = '$1 "RCh"', -- how print negative years ["ad"] = "$1", -- how print 1st century AD dates [0] = "$1 billiún bliain", -- precision: billion years [1] = "$100 milliún bliain", -- precision: hundred million years [2] = "$10 milliún bliain", -- precision: ten million years [3] = "$1 milliún bliain", -- precision: million years [4] = "$100000 bliain", -- precision: hundred thousand years; thousand separators added afterwards [5] = "$10000 bliain", -- precision: ten thousand years; thousand separators added afterwards [6] = "$1 míle bliain", -- precision: millennium [7] = "$1 aois", -- precision: century [8] = "$1í", -- precision: decade -- the following use the format of #time parser function [9] = "Y", -- precision: year, [10] = "F Y", -- precision: month [11] = "j F Y", -- precision: day ["hms"] = {["uair"] = "h", ["nóiméad"] = "m", ["soicind"] = "s"}, -- duration: xh xm xs }, ["years-old"] = { ["singular"] = "bliain d'aois", -- year old, as in {{PLURAL:$1|singular|plural}} ["plural"] = "bliana d'aois", -- years old ["paucal"] = "", -- for languages with 3 plural forms as in {{PLURAL:$1|singular|paucal|plural}} }, ["cite"] = { -- cite parameters ["title"] = "teideal", ["author"] = "údar", ["date"] = "dáta", ["pages"] = "leathanaigh", ["language"] = "teanga", -- cite web parameters ["url"] = "url", ["website"] = "suíomh gréasáin", ["access-date"] = "dáta rochtana", ["archive-url"] = "url na cartlainne", ["archive-date"] = "dáta na cartlainne", ["publisher"] = "foilsitheoir", ["quote"] = "tagairt", -- cite journal parameters ["work"] = "saothar", ["issue"] = "eagrán", ["issn"] = "issn", ["doi"] = "doi" }, -- local wiki settings ["addpencil"] = false, -- adds a pencil icon linked to Wikidata statement, planned to overwrite by Wikidata Bridge ["categorylabels"] = "", -- Category:Pages with Wikidata labels not translated (void for no local category) ["addfallback"] = {'en', 'ga', 'fr'} -- additional fallback language codes } local cases = {} -- functions for local grammatical cases defined at [[Module:Wikidata/i18n]] local required = ... -- variadic arguments from require function local wiki = { langcode = mw.language.getContentLanguage().code, module_title = required or mw.getCurrentFrame():getTitle() } local untranslated -- used in infobox modules: nil or true local _ -- variable for unused returned values, avoiding globals -- Module local functions -------------------------------------------- -- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0 local function tableMerge(t1, t2) for k, v in pairs(t2) do if type(v) == "table" then if type(t1[k] or false) == "table" then tableMerge(t1[k] or {}, t2[k] or {}) else t1[k] = v end else t1[k] = v end end return t1 end local function loadI18n(lang) local exist, res = pcall(require, wiki.module_title .. "/i18n") if exist and next(res) ~= nil then tableMerge(i18n, res.i18n) cases = res.cases end if lang ~= wiki.langcode then exist, res = pcall(require, wiki.module_title .. "/i18n/" .. lang) if exist and next(res) ~= nil then tableMerge(i18n, res.i18n) tableMerge(cases, res.cases) end end end -- Table of language codes: requested or default and its fallbacks local function findLang(langcode) if mw.language.isKnownLanguageTag(langcode or '') == false then local cframe = mw.getCurrentFrame() local pframe = cframe:getParent() langcode = pframe and pframe.args.lang if mw.language.isKnownLanguageTag(langcode or '') == false then if not mw.title.getCurrentTitle().isContentPage then langcode = cframe:preprocess('{{int:lang}}') end if mw.language.isKnownLanguageTag(langcode or '') == false then langcode = wiki.langcode end end end loadI18n(langcode) local languages = mw.language.getFallbacksFor(langcode) table.insert(languages, 1, langcode) if langcode == wiki.langcode then for _, l in ipairs(i18n.addfallback) do table.insert(languages, l) end end return languages end -- Argument is 'set' when it exists (not nil) or when it is not an empty string. local function isSet(var) return not (var == nil or var == '') end -- Set local case to a label local function case(localcase, label, ...) if not isSet(label) then return label end if localcase == "smallcaps" then return '<span style="font-variant: small-caps;">' .. label .. '</span>' elseif cases[localcase] then return cases[localcase](label, ...) end return label end -- get safely a serialized snak local function getSnak(statement, snaks) local ret = statement for i, v in ipairs(snaks) do if not ret then return end ret = ret[v] end return ret end -- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages local function getLabelByLangs(id, languages) local label local lang for _, l in ipairs(languages) do if l == wiki.langcode then -- using getLabelWithLang when possible instead of getLabelByLang, do not solve redirects pending phab:T157868 label, l = mw.wikibase.getLabelWithLang(id) else label = mw.wikibase.getLabelByLang(id, l) end if label then lang = l break end end return label, lang end -- getBestStatements if bestrank=true, else getAllStatements with no deprecated local function getStatements(entityId, property, bestrank) local claims = {} if not (entityId and mw.ustring.match(property, "^P%d+$")) then return claims end if bestrank then claims = mw.wikibase.getBestStatements(entityId, property) else local allclaims = mw.wikibase.getAllStatements(entityId, property) for _, c in ipairs(allclaims) do if c.rank ~= "deprecated" then table.insert(claims, c) end end end return claims end -- Is gender femenine? true or false local function feminineGender(id) local claims = mw.wikibase.getBestStatements(id or mw.wikibase.getEntityIdForCurrentPage(),'P21') if getSnak(claims, {1, "mainsnak", "datavalue"}) == nil then -- no claim, novalue or somevalue return false else local genderId = claims[1].mainsnak.datavalue.value.id if genderId == "Q6581072" or genderId == "Q1052281" or genderId == "Q43445" then -- female, transgender female, female organism return true end end return false end -- Fetch female form of label local function feminineForm(id, lang) local feminine_claims = getStatements(id, 'P2521') for _, feminine_claim in ipairs(feminine_claims) do if getSnak(feminine_claim, {'mainsnak', 'datavalue', 'value', 'language'}) == lang then return feminine_claim.mainsnak.datavalue.value.text end end end -- Add an icon for no label in requested language local function addLabelIcon(label_id, lang, uselang, icon) local ret_lang, ret_icon = '', '' if icon then if lang and lang ~= uselang and lang ~= 'mul' then ret_lang = " <sup>(" .. lang .. ")</sup>" end if label_id and (lang == nil or (lang ~= uselang and lang ~= 'mul')) then ret_icon = " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|" .. mw.message.new('Translate-taction-translate'):inLanguage(uselang):plain() .. "|link=https://www.wikidata.org/wiki/Special:EntityPage/" .. label_id .. "?uselang=" .. uselang .. "]]" untranslated = true end if isSet(i18n.categorylabels) and lang ~= uselang and lang ~= 'mul' and uselang == wiki.langcode then ret_icon = ret_icon .. '[[' .. i18n.categorylabels .. (lang and ']]' or '/Q]]') end end return ret_lang .. ret_icon end -- editicon values: true/false (no=false), right, void defaults to i18n.addpencil -- labelicon only by parameter local function setIcons(arg, parg) local val = arg == nil and parg or arg local edit_icon, label_icon if not isSet(val) then edit_icon, label_icon = i18n.addpencil, true elseif val == false or val == "false" or val == "no" then edit_icon, label_icon = false, false else edit_icon, label_icon = val, true end return edit_icon, label_icon end -- Add an icon for editing a statement with requirements for Wikidata Bridge local function addEditIcon(parameters) local ret = '' if i18n.addpencil and parameters.editicon and parameters.id and parameters.property then ret = ' <span data-bridge-edit-flow="single-best-value">' .. "[[File:Arbcom ru editing.svg|10px|baseline|" .. mw.message.new('Editlink'):inLanguage(parameters.lang[1]):plain() .. "|link=https://www.wikidata.org/wiki/" .. parameters.id .. "?uselang=" .. parameters.lang[1] .. "#" .. parameters.property .. "]]" .. "</span>" end return ret end -- add edit icon to the last element of a table local function addEditIconTable(thetable, parameters) if #thetable == 0 or not i18n.addpencil then return thetable end local last_element = thetable[#thetable] local the_icon = addEditIcon(parameters) -- add it before last html closing tags local tags = '' local rev_element = string.reverse(last_element) for tag in string.gmatch(rev_element, '(>%l+/<)') do if string.match(rev_element, '^' .. tags .. tag) then tags = tags .. tag else break end end local last_tags = string.reverse(tags) local offset = string.find(last_element, last_tags .. '$') if offset then thetable[#thetable] = string.sub(last_element, 1, offset - 1) .. the_icon .. last_tags else thetable[#thetable] = last_element .. the_icon end return thetable end -- Escape Lua captures local function captureEscapes(text) return mw.ustring.gsub(text, "(%%%d)", "%%%1") end -- expandTemplate or callParserFunction local function expandBraces(text, formatting) if text == nil or formatting == nil then return text end -- only expand braces if provided in argument, not included in value as in Q1164668 if mw.ustring.find(formatting, '{{', 1, true) == nil then return text end if type(text) ~= "string" then text = tostring(text) end for braces in mw.ustring.gmatch(text, "{{(.-)}}") do local parts = mw.text.split(braces, "|") local title_part = parts[1] local parameters = {} for i = 2, #parts do local subparts = mw.ustring.find(parts[i], "=") if subparts then parameters[mw.ustring.sub(parts[i], 1, subparts-1)] = mw.ustring.sub(parts[i], subparts+1, -1) else table.insert(parameters, parts[i]) end end local braces_expanded if mw.ustring.find(title_part, ":") and mw.text.split(title_part, ":")[1] ~= mw.site.namespaces[10].name -- not a prefix Template: then braces_expanded = mw.getCurrentFrame():callParserFunction{name=title_part, args=parameters} else braces_expanded = mw.getCurrentFrame():expandTemplate{title=title_part, args=parameters} end braces = mw.ustring.gsub(braces, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") -- escape magic characters braces_expanded = captureEscapes(braces_expanded) text = mw.ustring.gsub(text, "{{" .. braces .. "}}", braces_expanded) end return text end -- Resolve Wikidata redirects, pending phab:T157868 local function resolveEntityId(id) if not id or not mw.wikibase.isValidEntityId(id) then return id end -- if no label in English, maybe it is a redirect -- not using mw.title.new(id).isRedirect as it is expensive -- currently getLabelByLang does not follows redirects if mw.wikibase.getLabelByLang(id, 'en') == nil then local entity = mw.wikibase.getEntity(id) -- expensive function if not entity then return nil end if id ~= entity.id then -- Qid redirected to be fixed -- see [[Special:WhatLinksHere/Template:Track/wikidata/redirect]] require(wiki.module_title .. '/debug').track('redirect') require(wiki.module_title .. '/debug').track('redirect/' .. id) else -- no redirect and no English label, fix it to avoid expensive functions require(wiki.module_title .. '/debug').track('label') require(wiki.module_title .. '/debug').track('label/' .. id) end return entity.id end return id end -- format data type math local function printDatatypeMath(data) return mw.getCurrentFrame():callParserFunction('#tag:math', data) end -- format data type musical-notation local function printDatatypeMusical(data, formatting) local attr = {} if formatting == 'sound' then attr.sound = 1 end return mw.getCurrentFrame():extensionTag('score', data, attr) end -- format data type string local function printDatatypeString(data, parameters) if mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting = a pattern return expandBraces(mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = data}), parameters.formatting) elseif parameters.case then return case(parameters.case, data, parameters.lang[1]) end local data_number = string.match(data, "^%d+") if data_number then -- sort key by initial number and remaining string local sortkey = string.format("%019d", data_number * 1000) return data, sortkey .. string.sub(data, #data_number + 1) end return data end -- format data type url local function printDatatypeUrl(data, parameters) if parameters.formatting == 'weblink' then local label_parts = mw.text.split(string.gsub(data, '/$', ''), '/') local label = string.gsub(label_parts[3], '^www%.', '') if #label_parts > 3 then label = label .. '…' end return '[' .. data .. ' ' .. label .. ']' end return printDatatypeString(data, parameters) end -- format data type external-id local function printDatatypeExternal(data, parameters) if parameters.formatting == 'externalid' then local p_stat = mw.wikibase.getBestStatements(parameters.property, 'P1630') -- formatter URL local p_link_pattern = getSnak(p_stat, {1, "mainsnak", "datavalue", "value"}) if p_link_pattern then local p_link = mw.ustring.gsub(p_link_pattern, '$1', {['$1'] = data}) return '[' .. p_link .. ' ' .. data .. ']' end end return printDatatypeString(data, parameters) end -- format data type commonsMedia local function printDatatypeMedia(data, parameters) local icon if not string.find((parameters.formatting or ''), '$1', 1, true) then icon = "no-icon" end return printDatatypeString(data, parameters), icon end -- format data type globe-coordinate local function printDatatypeCoordinate(data, formatting) local function globes(globe_id) local globes = {['Q3343'] = 'Ariel',['Q3134']='Callisto',['Q596']='Ceres', ['Q6604'] = 'Charon',['Q7548'] = 'Deimos',['Q15040']='Dione',['Q2']='Domhan', ['Q3303']='Enceladus',['Q3143']='Europa',['Q3169']='Ganymede', ['Q15037'] = 'Hyperion',['Q17958']='Iapetas',['Q3123']='Io', ['Q319'] = 'Iúpatar',['Q111']='Mars',['Q308']='Mearcair',['Q15034']='Mimas', ['Q3352'] = 'Miranda',['Q405']='Gealach',['Q3332'] = 'Oberon', ['Q7547'] = 'Phobos', ['Q17975'] = 'Phoebe', ['Q339'] = 'Plútón',['Q15050']='Rhea',['Q15047']='Tethys', ['Q2565']='Tíotón',['Q3322'] = 'Titania',['Q3359']='Tríotón', ['Q3338'] = 'Umbriel',['Q313']='Véineas',['Q3030']='Vesta'} return globes[globe_id] end local function roundPrecision(num, prec) if prec == nil or prec <= 0 then return num end local sig = 10^math.floor(math.log10(prec)+.5) -- significant figure from sexagesimal precision: 0.00123 -> 0.001 return math.floor(num / sig + 0.5) * sig end local precision = data.precision local latitude = roundPrecision(data.latitude, precision) local longitude = roundPrecision(data.longitude, precision) if formatting and string.find(formatting, '$lat', 1, true) and string.find(formatting, '$lon', 1, true) then local ret = mw.ustring.gsub(formatting, '$l[ao][tn]', {['$lat'] = latitude, ['$lon'] = longitude}) if string.find(formatting, '$globe', 1, true) then local myglobe = 'earth' if isSet(data.globe) then local globenum = mw.text.split(data.globe, 'entity/')[2] -- http://www.wikidata.org/wiki/Q2 myglobe = globes(globenum) or 'earth' end ret = mw.ustring.gsub(ret, '$globe', myglobe) end return expandBraces(ret, formatting) elseif formatting == 'latitude' then return latitude, "no-icon" elseif formatting == 'longitude' then return longitude, "no-icon" elseif formatting == 'dimension' then return data.dimension, "no-icon" else --default formatting='globe' if isSet(data.globe) == false or data.globe == 'http://www.wikidata.org/entity/Q2' then return 'earth', "no-icon" else local globenum = mw.text.split(data.globe, 'entity/')[2] return globes(globenum) or globenum, "no-icon" end end end -- Local functions for data value quantity local function unitSymbol(id, lang) -- get unit symbol or code local unit_symbol = '' if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then unit_symbol = require(wiki.module_title .. "/Units").getUnit(0, '', id, true) end if unit_symbol == '' then -- fetch it local claims = mw.wikibase.getBestStatements(id, 'P5061') if #claims > 0 then local langclaims = {} table.insert(lang, 'mul') -- multilingual as last try for _, snak in ipairs(claims) do local snak_language = getSnak(snak, {"mainsnak", "datavalue", "value", "language"}) if snak_language and not langclaims[snak_language] then -- just the first one by language langclaims[snak_language] = snak.mainsnak.datavalue.value.text end end for _, l in ipairs(lang) do if langclaims[l] then return langclaims[l] end end end end return unit_symbol end local function getUnit(amount, id, parameters) -- get unit symbol or name local suffix = '' if parameters.formatting == "unitcode" then -- get unit symbol local unit_symbol = unitSymbol(id, parameters.lang) if isSet(unit_symbol) then suffix = unit_symbol end end if suffix == '' then -- formatting=unit, or formatting=unitcode not found -- get unit name local unit_label, lang = getLabelByLangs(id, parameters.lang) if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then suffix = require(wiki.module_title .. "/Units").getUnit(amount, unit_label, id, false) else suffix = (unit_label or id) .. addLabelIcon(id, lang, parameters.lang[1], parameters.editicon) end end if suffix ~= '' then suffix = ' ' .. suffix end return suffix end local function roundPrecision(in_num, out_num) -- rounds out_num with significant figures of in_num (default precision) -- first, count digits after decimal mark, handling cases like '12.345e6' local exponent, prec local integer, dot, decimals, expstr = in_num:match('^(%d*)(%.?)(%d*)(.*)') local e = expstr:sub(1, 1) if e == 'e' or e == 'E' then exponent = tonumber(expstr:sub(2)) end if dot == '' then prec = -integer:match('0*$'):len() else prec = #decimals end if exponent then -- So '1230' and '1.23e3' both give prec = -1, and '0.00123' and '1.23e-3' give 5. prec = prec - exponent end -- significant figures local in_bracket = 10^-prec -- -1 -> 10, 5 -> 0.00001 local out_bracket = in_bracket * out_num / in_num out_bracket = 10^math.floor(math.log10(out_bracket)+.5) -- 1230 -> 1000, 0.00123 -> 0.001 -- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound) return math.floor(out_num/out_bracket + (out_num >=0 and 1 or -1) * 0.5) * out_bracket end -- format data type quantity local function printDatatypeQuantity(data, parameters) local amount = data.amount amount = mw.ustring.gsub(amount, "%+", "") local suffix = "" local conv_amount, conv_suffix if string.sub(parameters.formatting or '', 1, 4) == "unit" or parameters.convert then -- example "unit": "http://www.wikidata.org/entity/Q174728" local unit_id = data.unit unit_id = mw.ustring.sub(unit_id, mw.ustring.find(unit_id, "Q"), -1) if string.sub(unit_id, 1, 1) == "Q" then suffix = getUnit(amount, unit_id, parameters) local convert_to if parameters.convert == "default" or parameters.convert == "default2" then local exist, units = pcall(require, wiki.module_title .. "/Units") if exist and next(units.convert_default) ~= nil then convert_to = units.convert_default[unit_id] end elseif string.sub(parameters.convert or '', 1, 1) == "Q" then convert_to = resolveEntityId(parameters.convert) end if convert_to and convert_to ~= unit_id then -- convert units local conv_temp = { -- formulae for temperatures ºC, ºF, ªK: [from] = {[to] = 'formula'} ['Q25267'] = {['Q42289'] = '$1*1.8+32', ['Q11597'] = '$1+273.15'}, ['Q42289'] = {['Q25267'] = '($1-32)/1.8', ['Q11597'] = '($1+459.67)*5/9'}, ['Q11597'] = {['Q25267'] = '$1-273.15', ['Q42289'] = '($1-273.15)*1.8000+32.00'} } if conv_temp[unit_id] and conv_temp[unit_id][convert_to] then local amount_f = mw.getCurrentFrame():callParserFunction('#expr', mw.ustring.gsub(conv_temp[unit_id][convert_to], "$1", amount)) conv_amount = math.floor(tonumber(amount_f) + 0.5) else local conversions = getStatements(unit_id, 'P2442') -- conversion to standard unit table.insert(conversions, mw.wikibase.getBestStatements(unit_id, 'P2370')[1]) -- conversion to SI unit for _, conv in ipairs(conversions) do if conv.mainsnak.snaktype == 'value' then -- no somevalue nor novalue if conv.mainsnak.datavalue.value.unit == "http://www.wikidata.org/entity/" .. convert_to then conv_amount = roundPrecision(amount, amount * tonumber(conv.mainsnak.datavalue.value.amount)) break end end end end if conv_amount then conv_suffix = getUnit(conv_amount, convert_to, parameters) end elseif parameters.convert == 'M' and tonumber(amount) > 10^8 then conv_amount = math.floor(amount/10^6 + 0.5) conv_suffix = ' M' .. string.sub(suffix, 2) end end end local lang_obj = mw.language.new(parameters.lang[1]) local sortkey = string.format("%019d", tonumber(amount) * 1000) if parameters.case then amount = case(parameters.case, amount, parameters.lang[1]) else amount = lang_obj:formatNum(tonumber(amount)) end if conv_amount then local conv_sortkey = string.format("%019d", tonumber(conv_amount) * 1000) conv_amount = lang_obj:formatNum(tonumber(conv_amount)) if parameters.convert == 'default2' then return conv_amount .. conv_suffix .. ' (' .. amount .. suffix .. ')', conv_sortkey else return conv_amount .. conv_suffix, conv_sortkey end end return amount .. suffix, sortkey end -- format data type time local function printDatatypeTime(data, parameters) -- Dates and times are stored in ISO 8601 format local timestamp = data.time local post_format local calendar_add = "" local precision = data.precision or 11 if string.sub(timestamp, 1, 1) == '-' then post_format = i18n.datetime["bc"] elseif string.sub(timestamp, 2, 3) == '00' then post_format = i18n.datetime["ad"] elseif precision > 8 then -- calendar model local calendar_model = {["Q12138"] = "Gréagórach", ["Q1985727"] = "Gréagórach", ["Q11184"] = "Iúil", ["Q1985786"] = "Iúil"} local calendar_id = mw.text.split(data.calendarmodel, 'entity/')[2] if (timestamp < "+1582-10-15T00:00:00Z" and calendar_model[calendar_id] == "Gréagórach") or (timestamp > "+1582-10-04T00:00:00Z" and calendar_model[calendar_id] == "Iúil") then calendar_add = " <sup>(" .. mw.message.new('Wikibase-time-calendar-' .. calendar_model[calendar_id]):inLanguage(parameters.lang[1]):plain() .. ")</sup>" end end local function formatTime(form, stamp) local pattern if type(form) == "function" then pattern = form(stamp) else pattern = form end stamp = tostring(stamp) if mw.ustring.find(pattern, "$1") then return mw.ustring.gsub(pattern, "$1", stamp) elseif string.sub(stamp, 1, 1) == '-' then -- formatDate() only supports years from 0 stamp = '+' .. string.sub(stamp, 2) elseif string.sub(stamp, 1, 1) ~= '+' then -- not a valid timestamp, it is a number stamp = string.format("%04d", stamp) end local ret = mw.language.new(parameters.lang[1]):formatDate(pattern, stamp) ret = string.gsub(ret, "^(%[?%[?)0+", "%1") -- supress leading zeros ret = string.gsub(ret, "( %[?%[?)0+", "%1") return ret end local function postFormat(t) if post_format and mw.ustring.find(post_format, "$1") then return mw.ustring.gsub(post_format, "$1", t) end return t end local intyear = tonumber(string.match(timestamp, "[+-](%d+)")) local ret = "" if precision <= 5 then -- precision is 10000 years or more local factor = 10 ^ ((5 - precision) + 4) local y2 = math.ceil(math.abs(intyear) / factor) local relative = formatTime(i18n.datetime[precision], y2) if post_format == i18n.datetime["bc"] then ret = mw.ustring.gsub(i18n.datetime.beforenow, "$1", relative) else ret = mw.ustring.gsub(i18n.datetime.afternow, "$1", relative) end local ret_number = string.match(ret, "%d+") if ret_number ~= nil then ret = mw.ustring.gsub(ret, ret_number, mw.language.new(parameters.lang[1]):formatNum(tonumber(ret_number))) end elseif precision == 6 or precision == 7 then -- millennia or centuries local card = math.floor((intyear - 1) / 10^(9 - precision)) + 1 ret = formatTime(i18n.datetime[precision], card) ret = postFormat(ret) elseif precision == 8 then -- decades local card = math.floor(math.abs(intyear) / 10) * 10 ret = formatTime(i18n.datetime[8], card) ret = postFormat(ret) elseif intyear > 9999 then -- not a valid timestamp return elseif precision == 9 or parameters.formatting == 'Y' then -- precision is year ret = formatTime(i18n.datetime[9], intyear) ret = postFormat(ret) .. calendar_add elseif precision == 10 then -- month ret = formatTime(i18n.datetime[10], timestamp .. " + 1 day") -- formatDate yyyy-mm-00 returns the previous month ret = postFormat(ret) .. calendar_add else -- precision 11, day ret = formatTime(parameters.formatting or i18n.datetime[11], timestamp) ret = postFormat(ret) .. calendar_add end return ret, timestamp end -- format data value wikibase-entityid: types wikibase-item, wikibase-property local function printDatatypeEntity(data, parameters) local entity_id = data['id'] if parameters.formatting == 'raw' then return entity_id, entity_id end local entity_page = 'Special:EntityPage/' .. entity_id local label, lang = getLabelByLangs(entity_id, parameters.lang) local sitelink = mw.wikibase.getSitelink(entity_id) local parameter = parameters.formatting local labelcase = label or sitelink if parameters.gender == 'feminineform' then labelcase = feminineForm(entity_id, lang) or labelcase end if parameters.case ~= 'gender' then labelcase = case(parameters.case, labelcase, lang, parameters.lang[1], entity_id, parameters.id) end local ret1, ret2 if parameter == 'label' then ret1 = labelcase or entity_id ret2 = labelcase or entity_id elseif parameter == 'sitelink' then ret1 = (sitelink or 'd:' .. entity_page) ret2 = sitelink or entity_id elseif mw.ustring.find((parameter or ''), '$1', 1, true) then -- formatting = a pattern ret1 = mw.ustring.gsub(parameter, '$1', labelcase or entity_id) ret1 = expandBraces(ret1, parameter) ret2 = labelcase or entity_id else if parameter == "ucfirst" or parameter == "ucinternallink" then if labelcase and lang then labelcase = mw.language.new(lang):ucfirst(labelcase) end -- only first of a list, reset formatting for next ones if parameter == "ucinterlanllink" then parameters.formatting = 'internallink' else parameters.formatting = nil -- default format end end if sitelink then ret1 = '[[' .. sitelink .. '|' .. labelcase .. ']]' ret2 = labelcase elseif label and (parameter == 'internallink' or parameter == 'ucinternallink') then ret1 = '[[' .. label .. '|' .. labelcase .. ']]' ret2 = labelcase else ret1 = '[[d:' .. entity_page .. '|' .. (labelcase or entity_id) .. ']]' ret2 = labelcase or entity_id end end return ret1 .. addLabelIcon(entity_id, lang, parameters.lang[1], parameters.editicon), ret2 end -- format data type monolingualtext local function printDatatypeMonolingual(data, parameters) -- data fields: language [string], text [string] if parameters.list == "lang" and data["language"] ~= parameters.lang[1] then return elseif parameters.formatting == "language" or parameters.formatting == "text" then return data[parameters.formatting] end local result = data["text"] if data["language"] ~= wiki.langcode then result = mw.ustring.gsub('<span lang="$1">$2</span>', '$[12]', {["$1"]=data["language"], ["$2"]=data["text"]}) end if mw.ustring.find((parameters.formatting or ''), '$', 1, true) then -- output format defined with $text, $language result = mw.ustring.gsub(parameters.formatting, '$text', result) result = mw.ustring.gsub(result, '$language', data["language"]) end return result end local function getSnakValue(snak, parameters) if snak.snaktype == 'value' then -- see Special:ListDatatypes if snak.datatype == "string" then return printDatatypeString(snak.datavalue.value, parameters) -- other data value string, tabular-data not implemented elseif snak.datatype == "commonsMedia" then return printDatatypeMedia(snak.datavalue.value, parameters) elseif snak.datatype == "url" then return printDatatypeUrl(snak.datavalue.value, parameters) elseif snak.datatype == "external-id" then return printDatatypeExternal(snak.datavalue.value, parameters) elseif snak.datatype == 'math' then return printDatatypeMath(snak.datavalue.value) elseif snak.datatype == 'musical-notation' then return printDatatypeMusical(snak.datavalue.value, parameters.formatting) -- other data types elseif snak.datatype == 'wikibase-item' or snak.datatype == 'wikibase-property' then return printDatatypeEntity(snak.datavalue.value, parameters) elseif snak.datatype == 'monolingualtext' then return printDatatypeMonolingual(snak.datavalue.value, parameters) elseif snak.datatype == "globe-coordinate" then return printDatatypeCoordinate(snak.datavalue.value, parameters.formatting) elseif snak.datatype == "quantity" then return printDatatypeQuantity(snak.datavalue.value, parameters) elseif snak.datatype == "time" then return printDatatypeTime(snak.datavalue.value, parameters) end elseif snak.snaktype == 'novalue' then if parameters.formatting == 'raw' then return end return mw.message.new('Wikibase-snakview-snaktypeselector-novalue'):inLanguage(parameters.lang[1]):plain() elseif snak.snaktype == 'somevalue' then if parameters.formatting == 'raw' then return end return mw.message.new('Wikibase-snakview-snaktypeselector-somevalue'):inLanguage(parameters.lang[1]):plain() end return mw.wikibase.renderSnak(snak) end local function printError(key) return '<span class="error">' .. i18n.errors[key] .. '</span>' end local function getQualifierSnak(claim, qualifierId, parameters) -- a "snak" is Wikidata terminology for a typed key/value pair -- a claim consists of a main snak holding the main information of this claim, -- as well as a list of attribute snaks and a list of references snaks if qualifierId then -- search the attribute snak with the given qualifier as key if claim.qualifiers then local qualifier = claim.qualifiers[qualifierId] if qualifier then if qualifier[1].datatype == "monolingualtext" then -- iterate over monolingualtext qualifiers to get local language for idx in pairs(qualifier) do if getSnak(qualifier[idx], {"datavalue", "value", "language"}) == parameters.lang[1] then return qualifier[idx] end end elseif parameters.list then return qualifier else return qualifier[1] end end end return nil, printError("qualifier-not-found") else -- otherwise return the main snak return claim.mainsnak end end local function getValueOfClaim(claim, qualifierId, parameters) local snak, error = getQualifierSnak(claim, qualifierId, parameters) if not snak then return nil, nil, error elseif snak[1] then -- a multi qualifier local result, sortkey = {}, {} local maxvals = tonumber(parameters.list) for idx in pairs(snak) do result[#result + 1], sortkey[#sortkey + 1] = getSnakValue(snak[idx], parameters) if maxvals and maxvals == #result then break end end return mw.text.listToText(result, parameters.qseparator, parameters.qconjunction), sortkey[1] else -- a property or a qualifier return getSnakValue(snak, parameters) end end local function getValueOfParentClaim(claim, qualifierId, parameters) local qids = mw.text.split(qualifierId, '/', true) local valueraw, parent_claims, value, sortkey if qids[1] == parameters.property then valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=parameters.lang}) else valueraw, _, _ = getValueOfClaim(claim, qids[1], {["formatting"]="raw", ["lang"]=parameters.lang}) end if string.sub(valueraw or '', 1, 1) == "Q" then -- protection for 'no value' parent_claims = mw.wikibase.getBestStatements(valueraw, qids[2]) if parent_claims[1] ~= nil then value, sortkey, _ = getValueOfClaim(parent_claims[1], nil, parameters) -- raw parent value needed for while/black lists, lang for avoiding an error on types other than entity valueraw, _, _ = getValueOfClaim(parent_claims[1], nil, {["formatting"]="raw", ["lang"]=parameters.lang}) end end return value, sortkey, valueraw end -- see d:Help:Sources local function getReferences(claim, lang) local notproperref = { ["P143"] = true, -- imported from ["P3452"] = true, -- inferred from ["P887"] = true, -- based on heuristic ["P4656"] = true -- Wikimedia import URL } local result = "" -- traverse through all references for ref in pairs(claim.references or {}) do local refparts local refs = {} local validref = true local ref_name -- traverse through all parts of the current reference for snakkey, snakval in pairs(claim.references[ref].snaks or {}) do for partkey, _ in pairs(claim.references[ref].snaks[snakkey] or {}) do if notproperref[snakkey] then -- not a proper reference validref = false break end end if validref then for snakidx = 1, #snakval do if snakidx > 1 then refparts = refparts .. ", " end refparts = refparts or '' .. getSnakValue(snakval[snakidx], {lang=lang}) end refs[snakkey] = refparts refparts = nil if snakkey == "P248" then -- stated in ref_name = snakval[1].datavalue.value.id end end end -- fill missing values with parent item if ref_name then local function refParent(qid, pid, formatting) local snak = getSnak(mw.wikibase.getBestStatements(qid, pid), {1, "mainsnak"}) return snak and getSnakValue(snak, {formatting=formatting, lang=lang}) end refs['P50'] = refs['P50'] or refParent(ref_name, 'P50', 'label') -- author refs['P407'] = refs['P407'] or refParent(ref_name, 'P407', 'label') -- language of work refs['P123'] = refs['P123'] or refParent(ref_name, 'P123', 'label') -- publisher refs['P577'] = refs['P577'] or refParent(ref_name, 'P577') -- date refs['P1433'] = refs['P1433'] or refParent(ref_name, 'P1433', 'label') -- published in refs['P304'] = refs['P304'] or refParent(ref_name, 'P304') -- page(s) refs['P433'] = refs['P433'] or refParent(ref_name, 'P433') -- issue refs['P236'] = refs['P236'] or refParent(ref_name, 'P236') -- ISSN refs['P356'] = refs['P356'] or refParent(ref_name, 'P356') -- DOI end -- get title of local templates for citing references local template_web = mw.wikibase.getSitelink('Q5637226') or "" template_web = mw.text.split(template_web, ":")[2] -- split off namespace from front local template_journal = mw.wikibase.getSitelink('Q5624899') or "" template_journal = mw.text.split(template_journal, ":")[2] local citeParams = {} if refs['P854'] and (refs['P1476'] or refs['P248']) and template_web then -- if both "reference URL" and "title" (or "stated in") are present, then use cite web template citeParams[i18n['cite']['url']] = refs['P854'] if refs['P248'] and refs['P1476'] == nil then citeParams[i18n['cite']['title']] = refs['P248']:match("^%[%[.-|(.-)%]%]") else citeParams[i18n['cite']['title']] = refs['P1476'] citeParams[i18n['cite']['website']] = refs['P248'] end citeParams[i18n['cite']['author']] = refs['P50'] citeParams[i18n['cite']['language']] = refs['P407'] citeParams[i18n['cite']['publisher']] = refs['P123'] citeParams[i18n['cite']['date']] = refs['P577'] citeParams[i18n['cite']['pages']] = refs['P304'] citeParams[i18n['cite']['access-date']] = refs['P813'] citeParams[i18n['cite']['archive-url']] = refs['P1065'] citeParams[i18n['cite']['archive-date']] = refs['P2960'] citeParams[i18n['cite']['quote']] = refs['P1683'] refparts = mw.getCurrentFrame():expandTemplate{title=template_web, args=citeParams} elseif refs['P1433'] and (refs['P1476'] or refs['P248']) and template_journal then -- if both "published in" and "title" (or "stated in") are present, then use cite journal template citeParams[i18n['cite']['work']] = refs['P1433'] citeParams[i18n['cite']['title']] = refs['P1476'] or refs['P248'] citeParams[i18n['cite']['author']] = refs['P50'] citeParams[i18n['cite']['date']] = refs['P577'] citeParams[i18n['cite']['issue']] = refs['P433'] citeParams[i18n['cite']['pages']] = refs['P304'] citeParams[i18n['cite']['language']] = refs['P407'] citeParams[i18n['cite']['issn']] = refs['P236'] citeParams[i18n['cite']['doi']] = refs['P356'] refparts = mw.getCurrentFrame():expandTemplate{title=template_journal, args=citeParams} elseif validref then -- raw ouput local snaksorder = claim.references[ref]["snaks-order"] local function indexed(a) for _, b in ipairs(snaksorder) do if b == a then return true end end return false end for k, _ in pairs(refs or {}) do if not indexed(k) then table.insert(snaksorder, k) end end local italics = "''" for _, k in ipairs(snaksorder) do if refs[k] then refparts = refparts and refparts .. " " or "" refparts = refparts .. mw.ustring.gsub(getLabelByLangs(k, lang), "^%l", mw.ustring.upper) .. ": " refparts = refparts .. italics .. refs[k] .. italics .. "." italics = "" end end end if refparts then result = mw.getCurrentFrame():extensionTag("ref", refparts, {name=ref_name}) end end return result end -- Set whitelist or blacklist values local function setWhiteOrBlackList(type_list, num_qual, args) local listed = false local list = {} for i = 0, num_qual do if isSet(args[type_list .. i]) then listed = true list[tostring(i)] = {} for v in string.gmatch(args[type_list .. i], 'Q%d+') do list[tostring(i)][resolveEntityId(v)] = true end end end return list, listed end local function tableParameters(args, parameters, column) local column_params = mw.clone(parameters) column_params.formatting = args["colformat"..column]; if column_params.formatting == "" then column_params.formatting = nil end column_params.convert = args["convert" .. column] if args["case" .. column] then column_params.case = args["case" .. column] end return column_params end local function getEntityId(frame, unnamed) local args = frame.args or frame local pargs = frame.args and frame:getParent().args local id = args.item or args.from or (unnamed and mw.text.trim(args[1] or '') or nil) if not isSet(id) and pargs then id = pargs.item or pargs.from or (unnamed and mw.text.trim(pargs[1] or '') or nil) end if isSet(id) then if string.find(id, ":") then -- remove prefix as Property:Pid id = mw.text.split(id, ":")[2] end else id = mw.wikibase.getEntityIdForCurrentPage() end return id end -- Main function claim --------------------------------------------- -- on debug console use: =p.claim{item="Q...", property="P...", ...} function p.claim(frame) local is_sandbox = frame.args and isSet(frame:getParent().args.sandbox) if not required and is_sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).claim(frame) end local args = frame.args or frame -- via invoke or require --If a value is already set, use it if isSet(args.value) then if args.value == 'NONE' then return else return args.value end end -- arguments local id = getEntityId(frame) if id == nil then return end local property = string.upper(args.property or "") local qualifierId = {} qualifierId[1] = isSet(args.qualifier) and string.upper(args.qualifier) or nil local i = 2 while isSet(args["qualifier" .. i]) do qualifierId[i] = string.upper(args["qualifier" .. i]) i = i + 1 end local formatting = isSet(args.formatting) and args.formatting or nil local convert = isSet(args.convert) and args.convert or nil local case = args.case local list = args.list or true; if (list == "false" or list == "no") then list = false end if list == 'firstrank' then list = 'bestrank' end -- alias local sorting_col = args.tablesort local sorting_up = (args.sorting or "") ~= "-1" local separator = isSet(args.separator) and args.separator local conjunction = isSet(args.conjunction) and args.conjunction or separator local rowformat = args.rowformat local references = args.references local showerrors = args.showerrors local default = args.default if default then showerrors = nil end local editicon = not (args.editicon == "false" or args.editicon == "no" or formatting == "raw") local parameters = {["id"] = id, ["property"] = property, ["formatting"] = formatting, ["convert"] = convert, ["list"] = list, ["case"] = case, ["editicon"] = editicon, ["separator"] = separator, ["conjunction"] = conjunction, ["qseparator"] = separator, ["qconjunction"] = conjunction} parameters.lang = findLang(args.lang) -- fetch property local claims = {} local bestrank = (parameters.list == false or parameters.list == 'bestrank') and parameters.list ~= 'lang' for p in string.gmatch(property, 'P%d+') do claims = getStatements(id, p, bestrank) if #claims > 0 then parameters.property = p break end end if #claims == 0 then if showerrors then return printError("property-not-found") else return default end end -- defaults for table local preformat, postformat = "", "" local whitelisted, blacklisted = false, false local whitelist, blacklist = {}, {} if parameters.formatting == "table" then parameters.separator = parameters.separator or "<br />" parameters.conjunction = parameters.conjunction or "<br />" parameters.qseparator = ", " parameters.qconjunction = ", " if not rowformat then rowformat = "$0 ($1" i = 2 while qualifierId[i] do rowformat = rowformat .. ", $" .. i i = i + 1 end rowformat = rowformat .. ")" elseif mw.ustring.find(rowformat, "^[*#]") then parameters.separator = "</li><li>" parameters.conjunction = "</li><li>" if mw.ustring.match(rowformat, "^[*#]") == "*" then preformat = "<ul><li>" postformat = "</li></ul>" else preformat = "<ol><li>" postformat = "</li></ol>" end rowformat = mw.ustring.gsub(rowformat, "^[*#] ?", "") end -- set whitelist and blacklist values whitelist, whitelisted = setWhiteOrBlackList("whitelist", #qualifierId, args) blacklist, blacklisted = setWhiteOrBlackList("blacklist", #qualifierId, args) end -- set feminine case if gender is requested local itemgender = args.itemgender local idgender if itemgender then if string.match(itemgender, "^P%d+$") then local snak_id = getSnak(mw.wikibase.getBestStatements(id, itemgender), {1, "mainsnak", "datavalue", "value", "id"}) if snak_id then idgender = snak_id end elseif string.match(itemgender, "^Q%d+$") then idgender = itemgender end end local gender_requested = false if parameters.case == "gender" or idgender then gender_requested = true elseif parameters.formatting == "table" then for i=0, #qualifierId do if args["case" .. i] and args["case" .. i] == "gender" then gender_requested = true break end end end if gender_requested then if feminineGender(idgender or id) then parameters.gender = "feminineform" end end -- get initial sort indices local sortindices = {} for idx in pairs(claims) do sortindices[#sortindices + 1] = idx end -- sort by claim rank local comparator = function(a, b) local rankmap = { deprecated = 2, normal = 1, preferred = 0 } local ranka = rankmap[claims[a].rank or "normal"] .. string.format("%08d", a) local rankb = rankmap[claims[b].rank or "normal"] .. string.format("%08d", b) return ranka < rankb end table.sort(sortindices, comparator) local result, result2 local error if parameters.list or parameters.formatting == "table" then -- convert LF to line feed, <br /> may not work on some cases parameters.separator = parameters.separator == "LF" and "\010" or parameters.separator parameters.conjunction = parameters.conjunction == "LF" and "\010" or parameters.conjunction -- i18n separators parameters.separator = parameters.separator or mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain() parameters.conjunction = parameters.conjunction or (mw.message.new('And'):inLanguage(parameters.lang[1]):plain() .. mw.message.new('Word-separator'):inLanguage(parameters.lang[1]):plain()) -- iterate over all elements and return their value (if existing) local value, valueq local sortkey, sortkeyq local values = {} local sortkeys = {} local refs = {} local rowlist = {} -- rows to list with whitelist or blacklist for idx in pairs(claims) do local claim = claims[sortindices[idx]] local reference = {} if not whitelisted then rowlist[idx] = true end if parameters.formatting == "table" then local params = tableParameters(args, parameters, "0") value, sortkey, error = getValueOfClaim(claim, nil, params) if value then values[#values + 1] = {} sortkeys[#sortkeys + 1] = {} refs[#refs + 1] = {} if whitelist["0"] or blacklist["0"] then local valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=params.lang}) if whitelist["0"] and whitelist["0"][valueraw or ""] then rowlist[#values] = true elseif blacklist["0"] and blacklist["0"][valueraw or ""] then rowlist[#values] = false end end for i, qual in ipairs(qualifierId) do local j = tostring(i) params = tableParameters(args, parameters, j) local valueq, sortkeyq, valueraw if qual == property then -- hack for getting the property with another formatting, i.e. colformat1=raw valueq, sortkeyq, _ = getValueOfClaim(claim, nil, params) else for q in mw.text.gsplit(qual, '%s*OR%s*') do if string.find(q, ".+/.+") then valueq, sortkeyq, valueraw = getValueOfParentClaim(claim, q, params) elseif string.find(q, "^/.+") then local claim2 = getStatements(id, string.sub(q, 2), bestrank) if #claim2 > 0 then valueq, sortkeyq, _ = getValueOfClaim(claim2[1], nil, params) end else valueq, sortkeyq, _ = getValueOfClaim(claim, q, params) end if valueq then break end end end values[#values]["col" .. j] = valueq sortkeys[#sortkeys]["col" .. j] = sortkeyq or valueq if whitelist[j] or blacklist[j] then valueq = valueraw or getValueOfClaim(claim, qual, {["formatting"]="raw", ["lang"]=params.lang}) if whitelist[j] and whitelist[j][valueq or ""] then rowlist[#values] = true elseif blacklist[j] and blacklist[j][valueq or ""] then rowlist[#values] = false end end end end else value, sortkey, error = getValueOfClaim(claim, qualifierId[1], parameters) values[#values + 1] = {} sortkeys[#sortkeys + 1] = {} refs[#refs + 1] = {} end if not value and showerrors then value = error end if value then if references and claim.references then reference = claim.references end refs[#refs]["col0"] = reference values[#values]["col0"] = value sortkeys[#sortkeys]["col0"] = sortkey or value end end -- sort and format results sortindices = {} for idx in pairs(values) do sortindices[#sortindices + 1] = idx end if sorting_col then local sorting_table = mw.text.split(sorting_col, '%D+') local comparator = function(a, b) local valuea, valueb local i = 1 while valuea == valueb and i <= #sorting_table do valuea = sortkeys[a]["col" .. sorting_table[i]] or '' valueb = sortkeys[b]["col" .. sorting_table[i]] or '' i = i + 1 end if sorting_up then return valueb > valuea end return valueb < valuea end table.sort(sortindices, comparator) end local maxvals = tonumber(parameters.list) result = {} for idx in pairs(values) do local valuerow = values[sortindices[idx]] local reference = getReferences({["references"] = refs[sortindices[idx]]["col0"]}, parameters.lang) value = valuerow["col0"] if parameters.formatting == "table" then if not rowlist[sortindices[idx]] then value = nil else local rowformatting = rowformat .. "$" -- fake end character added for easy gsub value = mw.ustring.gsub(rowformatting, "$0", value) value = mw.ustring.gsub(value, "$R0", reference) -- add reference for i, _ in ipairs(qualifierId) do local valueq = valuerow["col" .. i] if args["rowsubformat" .. i] and valueq then -- add fake end character $ -- gsub $i not followed by a number so $1 doesn't match $10, $11... -- remove fake end character valueq = captureEscapes(valueq) valueq = mw.ustring.gsub(args["rowsubformat" .. i] .. "$", "$" .. i .. "(%D)", valueq .. "%1") valueq = string.sub(valueq, 1, -2) rowformatting = mw.ustring.gsub(rowformatting, "$" .. i .. "(%D)", args["rowsubformat" .. i] .. "%1") end valueq = valueq and captureEscapes(valueq) or '' value = mw.ustring.gsub(value, "$" .. i .. "(%D)", valueq .. "%1") end value = string.sub(value, 1, -2) -- remove fake end character value = expandBraces(value, rowformatting) end elseif value then value = expandBraces(value, parameters.formatting) value = value .. reference end if isSet(value) then result[#result + 1] = value if not parameters.list or (maxvals and maxvals == #result) then break end end end -- in a table, add edit icon on last element if parameters.formatting == 'table' and parameters.editicon then result = addEditIconTable(result, parameters) end result = preformat .. mw.text.listToText(result, parameters.separator, parameters.conjunction) .. postformat else -- return first element local claim = claims[sortindices[1]] result, result2, error = getValueOfClaim(claim, qualifierId[1], parameters) if result and references then result = result .. getReferences(claim, parameters.lang) end end if isSet(result) then if i18n.addpencil and not (parameters.formatting == 'table' or (result2 and result2 == 'no-icon')) then -- add edit icon, except table added previously and except explicit no-icon internal flag result = result .. addEditIcon(parameters) end else if showerrors then result = error else result = default or '' end end return result, (required and not is_sandbox) and untranslated or '' end -- This is used to get the TA98 (Terminologia Anatomica first edition 1998) values like 'A01.1.00.005' (property P1323) -- which are then linked to http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/01.1.00.005%20Entity%20TA98%20EN.htm -- uses the newer mw.wikibase calls instead of directly using the snaks -- formatPropertyValues returns a table with the P1323 values concatenated with ", " so we have to split them out into a table in order to construct the return string p.getTAValue = function(frame) local ent = mw.wikibase.getEntity() local props = ent:formatPropertyValues('P1323') local out = {} local t = {} for k, v in pairs(props) do if k == 'value' then t = mw.text.split( v, ", ") for k2, v2 in pairs(t) do out[#out + 1] = "[http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/" .. string.sub(v2, 2) .. "%20Entity%20TA98%20EN.htm " .. v2 .. "]" end end end local ret = table.concat(out, "<br> ") if #ret == 0 then ret = "Invalid TA" end return ret end -- Local functions for getParentValues ----------------------- local function uc_first(word) return mw.ustring.upper(mw.ustring.sub(word, 1, 1)) .. mw.ustring.sub(word, 2) end local function getPropertyValue(id, property, parameter, langs, editicon, case) local snaks = mw.wikibase.getBestStatements(id, property) local mysnak = getSnak(snaks, {1, "mainsnak"}) if mysnak == nil then return end local entity_id local result = '-' -- default for 'no value' if mysnak.datavalue then entity_id = "Q" .. tostring(mysnak.datavalue.value['numeric-id']) result, _ = getSnakValue(mysnak, {formatting=parameter, lang=langs, editicon=editicon, case=case}) end return entity_id, result end local function getParentObjects(id, prop_format, label_format, languages, propertySupString, propertyLabel, propertyLink, labelShow, editicon, upto, upto_linkId, last_only, grammatical_case, include_self) if upto_linkId == nil then upto_linkId = "" end local upto_link_ids = {} for q in mw.text.gsplit(upto_linkId, '[^Q%d]') do upto_link_ids[resolveEntityId(q)] = true end local propertySups = mw.text.split(propertySupString, '[^P%d]') local lastlabel = uc_first(upto or '') local maxloop = tonumber(upto) or ((lastlabel .. upto_linkId) == '' and 10 or 50) local labelFilter = {} if labelShow then for _, v in ipairs(mw.text.split(labelShow, "/")) do labelFilter[uc_first(v)] = true end end local label_self _, label_self = getPropertyValue(id, propertyLabel, label_format, languages) local result = {} for iter = 1, maxloop do local link, label, linktext, _id, _link for _, propertySup in pairs(propertySups) do _id, _link = getPropertyValue(id, propertySup, prop_format, languages, editicon, grammatical_case) if _id and _link then id = _id; link = _link break end end if not id or not link then break end if propertyLink then _, linktext = getPropertyValue(id, propertyLink, "label", languages) if linktext then link = mw.ustring.gsub(link, "%[%[(.*)%|.+%]%]", "[[%1|" .. linktext .. "]]") end end _, label = getPropertyValue(id, propertyLabel, label_format, languages, false, "infoboxlabel") if labelShow == nil or labelFilter[label] then result[#result + 1] = {label, link} if label then labelFilter[label] = nil -- only first label found end end if label == lastlabel or upto_link_ids[id] then break end end if last_only then result = {result[#result]} end if include_self then table.insert(result, 1, {label_self, mw.title.getCurrentTitle().text}) end return result end local function parentObjectsToString(result, rowformat, cascade, sorting) local ret = {} local first = 1 local last = #result local iter = 1 if sorting == "-1" then first = #result; last = 1; iter = -1 end for i = first, last, iter do local rowtext = mw.ustring.gsub(rowformat, "$[01]", {["$0"] = result[i][1], ["$1"] = result[i][2]}) ret[#ret +1] = expandBraces(rowtext, rowformat) end if cascade then local prefix = "" for i = 1, #ret do ret[i] = prefix .. "• " .. ret[i] prefix = prefix .. "&nbsp;" end end return ret end -- Returns pairs of instance label and property value fetching a recursive tree function p.getParentValues(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getParentValues(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame) if id == nil then return end local languages = findLang(args.lang) local propertySup = args.property; if not isSet(propertySup) then propertySup = "P131" end --administrative entity local propertyLabel = args.label; if not isSet(propertyLabel) then propertyLabel = "P31" end --instance local propertyLink = args.valuetext; if propertyLink == "" then propertyLink = nil end --internallink local property_format = args.formatting; if property_format == "" then property_format = nil end local label_format = args.labelformat; if not isSet(label_format) then label_format = "label" end local upto = args.upto; if upto == "" then upto = nil end local last_only = (args.last_only == "true" or args.last_only == "yes") local labelShow = args.labelshow; if labelShow == "" then labelShow = nil end local editicon = not (args.editicon == "false" or args.editicon == "no") local include_self = (args.include_self == "true" or args.include_self == "yes") local case = args.case; if case == "" then case = nil end if isSet(args.uptolabelid) then upto, _ = getLabelByLangs(args.uptolabelid, languages) end if isSet(args.showlabelid) then local showLabelList = {} for substring in mw.text.gsplit(args.showlabelid, '[^Q%d]') do table.insert(showLabelList, (getLabelByLangs(substring, languages))) end if #showLabelList > 0 then labelShow = table.concat(showLabelList,"/") end end local result = getParentObjects(id, property_format, label_format, languages, propertySup, propertyLabel, propertyLink, labelShow, editicon, upto, args.uptovalueid or args.uptolinkid, last_only, case, include_self) if #result == 0 then return end local rowformat = args.rowformat; if not isSet(rowformat) then rowformat = "$0 = $1" end local separator = args.separator; if not isSet(separator) then separator = "<br />" end local sorting = args.sorting; if sorting == "" then sorting = nil end local cascade = (args.cascade == "true" or args.cascade == "yes") local ret = parentObjectsToString(result, rowformat, cascade, sorting) ret = addEditIconTable(ret, {property=propertySup, editicon=editicon, id=id, lang=languages}) return mw.text.listToText(ret, separator, separator) end -- Link with a parent label -------------------- function p.linkWithParentLabel(frame) if not required and frame.args and isSet(frame:getParent().args.sandbox) then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).linkWithParentLabel(frame) end local args = {} if frame.args then for k, v in pairs(frame.args) do -- metatable args[k] = v end else args = frame -- via require end if isSet(args.value) then return args.value end -- get id value of property/qualifier local largs = mw.clone(args) largs.list = tonumber(args.list) and args.list or "true" largs.formatting = "raw" largs.separator = "/·/" largs.editicon = "false" local items_list, _ = p.claim(largs) if not isSet(items_list) then return end local items_table = mw.text.split(items_list, "/·/", true) -- get internal link of property/qualifier largs.formatting = "internallink" local link_list, _ = p.claim(largs) local link_table = mw.text.split(link_list, "/·/", true) -- get label of parent property local parent_claim = getSnak(getStatements(items_table[1], args.parent, true), {1, "mainsnak", "datatype"}) if parent_claim == 'monolingualtext' then largs.formatting = nil largs.list = 'lang' else largs.formatting = "label" largs.list = "false" end largs.property = args.parent largs.qualifier = nil for i, v in ipairs(items_table) do largs.item = v local link_label, _ = p.claim(largs) if isSet(link_label) then link_table[i] = mw.ustring.gsub(link_table[i] or '', "%[%[(.*)%|.+%]%]", "[[%1|" .. link_label .. "]]") end end args.editicon = not (args.editicon == "false" or args.editicon == "no") args.id = getEntityId(frame) args.lang = findLang(args.lang) return mw.text.listToText(link_table) .. addEditIcon(args) end -- Calculate number of years old ---------------------------- function p.yearsOld(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).yearsOld(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame) local lang = mw.language.new('en') local function getBestValue(id, prop) local snak_value = getSnak(mw.wikibase.getBestStatements(id, prop), {1, "mainsnak", "datavalue", "value"}) return snak_value end local birth = getBestValue(id, 'P569') if type(birth) ~= 'table' or birth.time == nil or birth.precision == nil or birth.precision < 8 then return end local death = getBestValue(id, 'P570') if type(death) ~= 'table' or death.time == nil or death.precision == nil then death = {['time'] = lang:formatDate('c'), ['precision'] = 11} -- current date elseif death.precision < 8 then return end local dates = {} dates[1] = {['min'] = {}, ['max'] = {}, ['precision'] = birth.precision} dates[1].min.year = tonumber(mw.ustring.match(birth.time, "^[+-]?%d+")) dates[1].min.month = tonumber(mw.ustring.match(birth.time, "\-(%d%d)\-")) dates[1].min.day = tonumber(mw.ustring.match(birth.time, "\-(%d%d)T")) dates[1].max = mw.clone(dates[1].min) dates[2] = {['min'] = {}, ['max'] = {}, ['precision'] = death.precision} dates[2].min.year = tonumber(mw.ustring.match(death.time, "^[+-]?%d+")) dates[2].min.month = tonumber(mw.ustring.match(death.time, "\-(%d%d)\-")) dates[2].min.day = tonumber(mw.ustring.match(death.time, "\-(%d%d)T")) dates[2].max = mw.clone(dates[2].min) for i, d in ipairs(dates) do if d.precision == 10 then -- month d.min.day = 1 local timestamp = string.format("%04d", tostring(math.abs(d.max.year))) .. string.format("%02d", tostring(d.max.month)) .. "01" d.max.day = tonumber(lang:formatDate("j", timestamp .. " + 1 month - 1 day")) elseif d.precision < 10 then -- year or decade d.min.day = 1 d.min.month = 1 d.max.day = 31 d.max.month = 12 if d.precision == 8 then -- decade d.max.year = d.max.year + 9 end end end local function age(d1, d2) local years = d2.year - d1.year if d2.month < d1.month or (d2.month == d1.month and d2.day < d1.day) then years = years - 1 end if d2.year > 0 and d1.year < 0 then years = years - 1 -- no year 0 end return years end local old_min = age(dates[1].max, dates[2].min) local old_max = age(dates[1].min, dates[2].max) local old, old_expr if old_min == 0 and old_max == 0 then old = "< 1" old_max = 1 -- expression in singular elseif old_min == old_max then old = old_min else old = old_min .. "/" .. old_max end if args.formatting == 'unit' then local langs = findLang(args.lang) local yo, yo_sg, yo_pl, yo_pau if langs[1] == wiki.langcode then yo_sg = i18n["years-old"].singular yo_pl = i18n["years-old"].plural yo_pau = i18n["years-old"].paucal end if not isSet(yo_pl) then yo_pl, _ = getLabelByLangs('Q24564698', langs) yo_sg = yo_pl end if not isSet(yo_pau) then yo_pau = yo_pl end yo = mw.language.new(langs[1]):plural(old_max, {yo_sg, yo_pau, yo_pl}) if mw.ustring.find(yo, '$1', 1, true) then old_expr = mw.ustring.gsub(yo, "$1", old) else old_expr = old .. '&nbsp;' .. yo end elseif args.formatting then old_expr = expandBraces(mw.ustring.gsub(args.formatting, '$1', old), args.formatting) else old_expr = old end return old_expr end -- Gets a label in a given language (content language by default) or its fallbacks, optionnally linked. function p.getLabel(frame) if not required and frame.args and frame:getParent().args.sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getLabel(frame) end local args = frame.args or frame -- via invoke or require local id = getEntityId(frame, true) if id == nil then return end local editicon = not (args.editicon == "false" or args.editicon == "no") and mw.wikibase.isValidEntityId(id) local label_icon = '' local label, lang if args.label then label = args.label else local languages = findLang(args.lang) -- exceptions or labels fixed local exist, labels = pcall(require, wiki.module_title .. "/labels" .. (languages[1] == wiki.langcode and '' or '/' .. languages[1])) if exist and next(labels.infoboxLabelsFromId) ~= nil then label = labels.infoboxLabelsFromId[id] end if label == nil then label, lang = getLabelByLangs(id, languages) if label then if args.itemgender and feminineGender(args.itemgender) then label = feminineForm(id, lang) or label end label = mw.language.new(lang):ucfirst(mw.text.nowiki(label)) -- sanitize end label_icon = addLabelIcon(id, lang, languages[1], editicon) end end local linked = args.linked if isSet(linked) and linked ~= "no" then local article = mw.wikibase.getSitelink(id) or ("d:Special:EntityPage/" .. id) return "[[" .. article .. "|" .. (label or id) .. "]]" .. label_icon, not required and '' or untranslated else return (label or id) .. label_icon, not required and '' or untranslated end end -- Utilities ----------------------------- -- See also module ../debug. -- Copied from Module:Wikibase function p.getSiteLink(frame) local id = getEntityId(frame, 1) if id == nil then return end return mw.wikibase.getSitelink(id, mw.text.trim(frame.args[2] or '')) end -- Helper function for the default language code used function p.lang(frame) local lang = frame and frame.args[1] -- nil via require return findLang(lang)[1] end -- Number of statements function p.numStatements(frame) local id = getEntityId(frame) if id == nil then return 0 end local prop = mw.text.trim(frame.args[1]) local num = {} if frame.args[2] then -- qualifier local qual = mw.text.trim(frame.args[2]) local values = p.claim{item=id, property=prop, qualifier=qual, formatting='raw', separator='/·/'} if values then num = mw.text.split(values, '/·/') end else num = mw.wikibase.getBestStatements(id, prop) end return #num end -- Returns true if property datavalue is found excluding novalue/somevalue function p.validProperty(frame) local property = mw.text.trim(frame.args[1]) local item = getEntityId(frame) if item == nil then return end local prop_data = getSnak(mw.wikibase.getBestStatements(item, property), {1, "mainsnak", "datavalue"}) return prop_data and true or nil end function p.editAtWikidata(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local value = isSet(args[1]) if value then return end local param = {} param.id = getEntityId(args, pargs) param.property = args.property param.lang = findLang(args.lang) param.editicon, _ = setIcons(args.editicon) return addEditIcon(param) end return p rgrf3fegpymuif8ksunjoxj1csa46ni Module:Wikidata/i18n 828 84921 1329024 1131419 2026-10-01T12:26:32Z An Sionnach Rua 29036 1329024 Scribunto text/plain local i18n = { ["errors"] = { ["property-not-found"] = "Maoin gan aimsiú.", ["qualifier-not-found"] = "Cáilitheoir gan aimsiú.", }, ["datetime"] = { -- $1 is a placeholder for the actual number, or use the format of #time parser function ["beforenow"] = "$1 RCh", -- how to format negative numbers for precisions 0 to 5 ["afternow"] = "$1 IC", -- how to format positive numbers for precisions 0 to 5 ["bc"] = '$1 "RCh"', -- how print negative years ["ad"] = "$1", -- how print 1st century AD dates [0] = "$1 billiún bliain", -- precision: billion years [1] = "$100 milliún bliain", -- precision: hundred million years [2] = "$10 milliún bliain", -- precision: ten million years [3] = "$1 milliún bliain", -- precision: million years [4] = "$100000 bliain", -- precision: hundred thousand years; thousand separators added afterwards [5] = "$10000 bliain", -- precision: ten thousand years; thousand separators added afterwards [6] = "$1 mílaois", -- precision: millennium [7] = "$1 haois", -- precision: century [8] = "$1í", -- precision: decade [9] = "Y", -- precision: year, [10] = "F Y", -- precision: month [11] = "j F Y", -- precision: day ["hms"] = {["uair"] = "h", ["nóiméad"] = "m", ["soicind"] = "s"}, -- duration: xh xm xs }, ["years-old"] = { ["singular"] = "blian d'aois", -- year old, as in {{PLURAL:$1|singular|plural}} ["plural"] = "bliana d'aois", -- years old ["paucal"] = "", -- for languages with 3 plural forms as in {{PLURAL:$1|singular|paucal|plural}} }, ["cite"] = { -- cite parameters of local templates ["title"] = "teideal", ["author"] = "údar", ["date"] = "dáta", ["pages"] = "leathanaigh", ["language"] = "teanga", -- cite web parameters ["url"] = "url", ["website"] = "suíomh gréasáin", ["access-date"] = "dáta rochtana", ["archive-url"] = "url na cartlainne", ["archive-date"] = "dáta na cartlainne", ["publisher"] = "foilsitheoir", ["quote"] = "tagairt", -- cite journal parameters ["work"] = "saothar", ["issue"] = "eagrán", ["issn"] = "issn", ["doi"] = "doi" }, -- local wiki settings ["addpencil"] = false, -- adds a pencil icon linked to Wikidata statement, planned to overwrite by Wikidata Bridge ["categorylabels"] = "", -- Category:Pages with Wikidata labels not translated (void for no local category) ["categoryprop"] = "", -- Category:Pages using Wikidata property $1 (void for no local category) ["categoryref"] = "", -- Category:Pages with references from Wikidata (void for no local category) ["addfallback"] = {'en', 'ga', 'fr'}, -- additional fallback language codes ["suppressids"] = {}, -- list of Qid values to suppress, i.e. no linguistic content ["qidlabels"] = false -- show labels as Qid if no fallback translation is available (default true) } -- Functions for local grammatical cases (as ordinal) and local fixes (if used) local cases = { ["infoboxlabel"] = function(word) return require("Module:Wikidata/labels").fixInfoboxLabel(word) end, ["infoboxdata"] = function(word) return require("Module:Wikidata/labels").infoboxdata[word] or word end, ["location"] = function(label, ...) return require("Module:Location").naming(label, arg[2], arg[3]) end, ["locationcontext"] = function(label, ...) return require("Module:Location").naming(label, arg[2], arg[3], arg[4]) end, -- fraction notation ["fraction"] = function(value) return require("Module:Wikidata/Units").fraction1(value) end, } return { i18n = i18n, cases = cases } 6uh86lb4k18l0p8pcfv2jzwi6119uv4 Stephen Curry 0 88948 1329022 1313822 2026-10-01T12:07:14Z InternetArchiveBot 47196 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6 1329022 wikitext text/x-wiki {{WD Bosca Sonraí Duine}} Is imreoir cispheile gairmiúil é '''Wardell Stephen Curry II''' a rugadh ar an 14ú Márta 1988. Imríonn sé do Golden State Warriors an [[NBA|Chumann Cispheile Náisiúnta]] (NBA). Roghnaíodh é mar NBA All-Star sé huaire, agus mar an Imreoir Is Luachmhaire NBA (MVP) dhá uair agus bhuaigh sé trí chraobh NBA leis na Warriors. Deir go leor imreoirí agus anailísithe gur é an caiteoir is fearr dá raibh riamh san NBA.<ref name="Greatest">{{cite web|url=http://bleacherreport.com/articles/2482473-is-stephen-curry-the-best-shooter-ever-yes-say-many-of-nbas-all-time-marksmen|teideal=Is Steph Curry The Best Shooter Ever? Yes, Say Many of NBA's All-Time Marksmen|work=Bleacherreport.com|date=June 1, 2015|accessdate=June 1, 2015}}</ref> == Tús a shaoil agus a óige == Is é Wardell Stephen Curry II mac Sonya (née Adams) agus Dell Curry. Rugadh in [[Akron, Ohio]] é agus a athair ina bhall de na Cleveland Cavaliers.<ref>{{cite web|author=Foltin, Lindsey|date=June 2, 2016|teideal=LeBron-Curry Finals inspires unique 'Akron Born' promotion for local business|url=https://www.foxsports.com/nba/story/lebron-james-stephen-curry-free-tires-cleveland-cavaliers-golden-state-warrios-finals-060216|work=FoxSports.com|publisher=Fox Sports Interactive Media, LLC|accessdate=June 8, 2016|quote=But not many realize that it's also the birthplace of two-time NBA MVP Stephen Curry, who was born at Akron City Hospital in 1988 when his father, Dell Curry, was a member of the Cleveland Cavaliers.|archiveurl=https://web.archive.org/web/20160609002726/http://www.foxsports.com/nba/story/lebron-james-stephen-curry-free-tires-cleveland-cavaliers-golden-state-warrios-finals-060216|archivedate=June 9, 2016}}</ref><ref>{{cite web|last=Williams|first=Travis|teideal=Curry rooted in storied New River Valley family tree|url=https://www.roanoke.com/news/local/radford/curry-rooted-in-storied-new-river-valley-family-tree/article_a9337524-19d8-5129-9b05-5099e91b13d6.html|work=SportingNews.com|date=June 14, 2015|accessdate=April 30, 2016|archiveurl=https://web.archive.org/web/20190320133458/https://www.roanoke.com/news/local/radford/curry-rooted-in-storied-new-river-valley-family-tree/article_a9337524-19d8-5129-9b05-5099e91b13d6.html|archivedate=Márta 20, 2019|dátarochtana=Márta 10, 2019}}</ref> D'éirigh sé aníos i [[Charlotte, Carolina Thuaidh]], an áit ar chaith a athair an chuid is mó dá ghairm sa NBA leis na Charlotte Hornets.<ref name="Dell">{{cite web|teideal=Dell Curry NBA Stats|url=https://www.basketball-reference.com/players/c/curryde01.html|publisher=Basketball Reference|accessdate=February 28, 2016|dátarochtana=Márta 10, 2019|archivedate=Meitheamh 16, 2010|archiveurl=https://web.archive.org/web/20100616143908/http://www.basketball-reference.com/players/c/curryde01.html}}</ref> Ba mhinic a thugadh Dell Curry Stephen Curry agus deartháir beag Stephen Seth chun a chuid cluichí, agus chaithidís leis na Hornets roimh na cluichí.<ref name="FCA">{{cite web|teideal=Stephan Curry, Golden State Warriors|url=http://www.fca.org/themagazine/stephen-curry-golden-state-warriors/#.U_SztvldUUg|publisher=[[Fellowship of Christian Athletes]]|accessdate=August 20, 2014|deadurl=yes|archiveurl=https://web.archive.org/web/20140124024839/http://www.fca.org/themagazine/stephen-curry-golden-state-warriors/|archivedate=January 24, 2014}}</ref> Bhog an teaghlach go [[Torontó|Toronto]], áit ar chríochnaigh Dell a ghairm NBA mar bhall de na [[Na Toronto Raptors|Raptors]].<ref name="Dell" /> San am céanna, bhí Curry ag imirt do fhoireann chispheile Queensway Christian College, agus níor chaill siad aon cluiche amháin i rith an sésúir.<ref>{{cite web|teideal=Stephen Curry's Grade 8 season at tiny Toronto school remembered|url=https://www.thestar.com/sports/basketball/2015/02/26/stephen-currys-grade-8-season-at-tiny-toronto-school-remembered.html|publisher=[[Toronto Star]]|accessdate=February 27, 2015}}</ref><ref name="toronto">{{cite web|teideal=Northern Touch: Steph Curry's Toronto connection|url=http://www.sportsnet.ca/basketball/nba/northern-touch-steph-currys-toronto-connection/|publisher=Sportsnet.ca|accessdate=February 27, 2015}}</ref> Bhí sé ina bhall de chlub Toronto 5-0 freisin, agus imríonn siad cispheil ar fud [[Ontario]],<ref name="toronto2">{{cite web|teideal=Curry's path to NBA stardom forged in Toronto|url=http://www.sportsnet.ca/basketball/nba/currys-path-to-nba-stardom-forged-in-toronto/|publisher=Sportsnet.ca|accessdate=January 25, 2016}}</ref><ref name="toronto3">{{cite news|teideal=Canada's quest for elite basketball status begins in Toronto|url=https://www.theglobeandmail.com/sports/basketball/for-canada-the-story-of-the-quest-for-elite-basketball-status-begins-in-toronto/article26130354/|publisher=[[The Globe and Mail]]|accessdate=January 25, 2016}}</ref> agus d'imir sé i gcoinne imreoirí atá sa NBA faoi láthair, Cory Joseph agus Kelly Olynyk.<ref name="toronto3" /> Thug Curry chun tosaigh an fhoireann agus bhuaigh siad 33 chluiche agus níor chaill siad ach 4 chluiche, agus i ndeireadh na dála bhain siad craobhchomórtas an chúige.<ref>{{cite web|last=Wong|first=Alex|teideal=When Stephen Curry was Canadian: Warriors' MVP dominated Toronto's 8th-grade scene|url=http://www.sportingnews.com/nba-news/4694595-stephen-curry-all-star-game-toronto-warriors-mvp-eighth-grade-dell-raptors|work=SportingNews.com|date=February 11, 2016|accessdate=February 12, 2016|dátarochtana=Márta 10, 2019|archivedate=Feabhra 14, 2016|archiveurl=https://web.archive.org/web/20160214043514/http://www.sportingnews.com/nba-news/4694595-stephen-curry-all-star-game-toronto-warriors-mvp-eighth-grade-dell-raptors}}</ref> Nuair d'éirigh Dell as an NBA, bhog an teaghlach ar ais go Charlotte agus chláraigh Curry ar [[Charlotte Christian School]], agus d'éirigh go maith leis ann. Mar gheall ar ghairm bheatha a athar ag Virginia Tech, bhí Curry ag iarraidh [[College basketball|cispheil choláiste]] a imirt do na Hokies, ach níor earcaigh Virgina Tech é mar níor mheáigh sé ach 160-punt mar aon le cúis eile.<ref>{{cite news|last=Posnanski|first=Joe|url=http://www.kansascity.com/sports/story/551547.html|teideal=Kansas will have to deal with Stephen Curry to get to Final Four|date=March 28, 2008|newspaper=Kansas City Star|archiveurl=https://web.archive.org/web/20081215033209/http://www.kansascity.com/sports/story/551547.html|archivedate=December 15, 2008}}</ref> Roghnaigh sé freastal ar [[Davidson Wildcats men's basketball|Choláiste Davidson]], a d'earcaigh é ón deichiú grád.<ref name="Yahoo">{{cite web|last1=Forde|first1=Pat|teideal=How Stephen Curry went from ignored college recruit to possible NBA MVP|url=https://sports.yahoo.com/news/how-stephen-curry-went-from-ignored-college-recruit-to-possible-nba-mvp-011555328.html|publisher=Yahoo! Sports|accessdate=February 28, 2016|dátarochtana=Márta 10, 2019|archivedate=Márta 6, 2016|archiveurl=https://web.archive.org/web/20160306221326/http://sports.yahoo.com/news/how-stephen-curry-went-from-ignored-college-recruit-to-possible-nba-mvp-011555328.html}}</ref> == A shaol ghairmiúil == === Golden State Warriors (2009-go dtí anois) === Roghnaigh na [[Golden State Warriors]] é san 7ú háit san [[Roghnúchán NBA|roghnúchán NBA]] 2009. Tá trí chraobh bhuaite aige go dtí anois agus imríonn sé le na Golden State Warriors fós sa NBA. == Tagairtí == {{Reflist}} {{DEFAULTSORT:Curry, Stephen}} [[Catagóir:Cispheileadóirí Meiriceánacha]] [[Catagóir:Daoine beo]] [[Catagóir:Daoine a rugadh i 1988]] qexddm5iw7m7lsefpvg97dk7hson0tk Yuval Noah Harari 0 92057 1329026 1317681 2026-10-01T14:03:21Z InternetArchiveBot 47196 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6 1329026 wikitext text/x-wiki {{WD Bosca Sonraí Duine}} Staraí [[Iosrael]]ach agus ollamh in Ollscoil Eabhrach Iarúsailéim is ea '''Yuval Noah Hariri''' ([[Eabhrais]]: יובל נח הררי, foghraíocht [[Aibítir Idirnáisiúnta Foghraíochta|AIF]]: |juˈval ˈnoaχ (h)aˈʁaʁi|) a rugadh ar [[24 Feabhra]] [[1976]] in Kiryat Atta. Scríobh sé trí leabhar neamhfhicsin sárdhíola, mar atá ''[[Sapiens: A Brief History of Humankind]]'' (2014), ''[[Homo Deus: A Brief History of Tomorrow]]'' (2016), agus ''[[21 Lessons for the 21st Century]]'' (2018). Iniúchann sé a leithéid téamaí mar an tsaorthoil, an comhfhios, an intleacht agus an sonas. ==Beathaisnéis== Rugadh Yuval Noah Harari in Kiryat Atta, Iosrael, baile beag tionsclaíoch gar do [[Haifa]] sa bhliain 1976. D'fhás sé aníos i dteaghlach Giúdach saolach<ref>[http://larchemag.fr/2017/09/28/3386/les-predictions-de-yuval-noah-harrari/ Les prédictions de Yuval Noah Harrari] {{Webarchive|url=https://web.archive.org/web/20181121192737/http://larchemag.fr/2017/09/28/3386/les-predictions-de-yuval-noah-harrari/ |date=2018-11-21 }}, L'arche magazine</ref> a raibh fréamhacha [[An Liobáin|Liobánacha]] agus Eorpacha Thoir acu.<ref name="guardian0705">{{cite web | url = https://www.theguardian.com/culture/2015/jul/05/yuval-harari-sapiens-interview-age-of-cyborgs | teideal = Yuval Noah Harari: The age of the cyborg has begun – and the consequences cannot be known | accessdate = 2 November 2016 | date = 5 July 2015 | first = Carole | last = Cadwalladr | authorlink=Carole Cadwalladr | magazine = [[The Guardian]] }}</ref> Chuir sé aithne ar Itzik Yahav sa bhliain 2002.<ref>{{cite web|url=https://www.theguardian.com/lifeandstyle/2016/aug/27/yuval-noah-harari-we-are-quickly-acquiring-powers-that-were-always-thought-to-be-divine|title=Yuval Noah Harari: ‘We are acquiring powers thought to be divine’|first=Tim|last=Adams|date=27 August 2016|website=the Guardian|accessdate=17 March 2018}}</ref><ref>{{cite web|url=http://www.haaretz.com/israel-news/fast-talk-the-road-to-happiness-1.426554|title=Fast Talk / The Road to Happiness|date=25 April 2012|publisher=|accessdate=17 March 2018|work=Haaretz|teideal=Cóip cartlainne|dátarochtana=5 Márta 2020|archivedate=16 Meán Fómhair 2017|archiveurl=https://web.archive.org/web/20170916001935/http://www.haaretz.com/israel-news/fast-talk-the-road-to-happiness-1.426554}}</ref> Is é Yahav a bhainisteoir pearsanta.<ref>{{cite web|url=http://www.nrg.co.il/online/55/ART2/726/869.html|title=זה ייגמר בבכי: סוף העולם לפי יובל נח הררי|publisher=|accessdate=17 March 2018|teideal=Cóip cartlainne|dátarochtana=5 Márta 2020|archivedate=20 Aibreán 2020|archiveurl=https://web.archive.org/web/20200420144528/http://www.nrg.co.il/online/55/ART2/726/869.html}}</ref> Phós siad in [[Toronto]], i g[[Ceanada]].<ref>{{cite web|url=http://epaperbeta.timesofindia.com/Article.aspx?eid=31821&articlexml=Sadly-superhumans-in-the-end-are-not-going-14102015012006|teideal=Sadly, superhumans in the end are not going to be us|publisher=The Times Group|work=[[Mumbai Mirror]]|authors=Nevatia, Shreevatsa|date=14 October 2015|accessdate=17 March 2018|dátarochtana=5 Márta 2020|archivedate=1 Iúil 2018|archiveurl=https://web.archive.org/web/20180701194400/http://epaperbeta.timesofindia.com/Article.aspx?eid=31821&articlexml=Sadly-superhumans-in-the-end-are-not-going-14102015012006}}</ref> Sa bhliain 2000 agus é in Oxford go fóill, chuaigh Harari leis an machnamh Vipassana,<ref>{{cite web|url=https://soundcloud.com/panoply/yuval-harari-author-of-sapiens-on-ai-religion-and-60-day-meditation-retreats|title=Yuval Harari, author of "Sapiens", on AI, religion, and 60-day meditation retreats|publisher=|accessdate=17 March 2018}}</ref> "rud a d'athraigh mo shaol".<ref>{{cite web|url=https://www.theguardian.com/lifeandstyle/2016/aug/27/yuval-noah-harari-we-are-quickly-acquiring-powers-that-were-always-thought-to-be-divine|teideal=Yuval Noah Harari: ‘We are quickly acquiring powers that were always thought to be divine’|first=Tim|last=Adams|date=27 August 2016|publisher=|via=The Guardian}}</ref> Cleachtann sé an machnamh go laethúil<ref>{{cite web|url=http://time.com/4672373/yuval-noah-harari-homo-deus-interview/|teideal=How Humankind Could Become Totally Useless|website=Time|accessdate=17 March 2018|dátarochtana=5 Márta 2020|archivedate=20 Márta 2018|archiveurl=https://web.archive.org/web/20180320134306/http://time.com/4672373/yuval-noah-harari-homo-deus-interview/}}</ref>), agus téann sé ar chúrsa mhachnaimh gach bliain ar feadh 30 lá, gan chead labhartha, gan leabhair ná teacht ar na meáin shóisialta<ref>{{cite web | url=https://www.chathamhouse.org/sites/files/chathamhouse/field/field_document/Interview%20-%20Yuval%20Harari.pdf | teideal=Interview - Yuval Harari | publisher=[[Chatham House]] | work=[[The World Today (magazine)|The World Today]] | date=October–November 2015 | accessdate=17 March 2018 | pages=30–32| archiveurl=https://web.archive.org/web/20171212073520/https://www.chathamhouse.org/sites/files/chathamhouse/field/field_document/Interview%20-%20Yuval%20Harari.pdf| archivedate= 12 December 2017 |url-status=live}}</ref><ref>{{cite web|url=http://www.theaustralian.com.au/life/weekend-australian-magazine/yuval-noah-harari-sapiens-and-the-age-of-the-algorithm/news-story/dec563f94ceb523228049fdaf8ab8915|title=Yuval Noah Harari, Sapiens and the age of the algorithm | date=3 September 2016 |publisher=Josh Glancy | work=[[The Australian]]| archiveurl=https://web.archive.org/web/20161110213716/https://www.theaustralian.com.au/life/weekend-australian-magazine/yuval-noah-harari-sapiens-and-the-age-of-the-algorithm/news-story/dec563f94ceb523228049fdaf8ab8915 | archivedate=10 November 2016 |url-status=dead}}</ref> Rinne Harari staidéar ar stair na meánaoise agus an stair mhíleata nuair a bhí sé ina mhac léinn in Ollscoil Eabhrach Iarúsailéim ó 1993 go 1998. Bhain sé céim dochtúireachta amach in Jesus College, [[Ollscoil Oxford]], sa bhliain 2002, faoi stiúradh Steven J. Gunn. Ó 2003 go 2005 rinne sé staidéir iar-dhochtúireachta sa stair mar scoláire Yad Hanadiv Fellow.<ref>{{Cite web|url = http://pluto.huji.ac.il/~ynharari/cv.html|teideal = CV at The Hebrew University of Jerusalem|date = 2008|accessdate = |website = |publisher = |last = |first = }}</ref> Is veigeán é Harari, toradh a deir sé ar a chuid taighde faoi réabhlóid na curadóireachta. ==Tagairtí== {{reflist}} ==Naisc sheachtracha== *[https://www.ynharari.com/ A shuíomh oifigiúil. Dáta rochtana: 5 Márta 2020] {{DEFAULTSORT:Hariri, Yuval N}} [[Catagóir:Scríbhneoirí Iosraelacha]] [[Catagóir:Daoine a rugadh i 1976]] [[Catagóir:Daoine LADT]] [[Catagóir:Daoine beo]] 9eydtpfrupk9huunk06aj1pgsglzocl Module:Wikidades 828 94842 1329041 1229700 2026-10-01T22:17:23Z TGcoa 21229 Scribunto changed. The change (Gerrit 1339616, merged 23 September) was deployed to Wikipedia in the last few days. Before it, if a module function returned nil, '', {{#invoke:}} quietly output nothing. Now that return value crashes at mw.lua:656 Wikidades returns exactly that when a person has no value for a property.. The rows that are supposed to stay hidden show errors instead. Module:Wikidata has the same flaw. It's an older copy of the same Catalan module and causes the 2 errors in th 1329041 Scribunto text/plain -- version 20220818 from master @cawiki local p = {} -- Initialization of variables -------------------- local i18n = { -- internationalisation at [[Module:Wikidata/i18n]] ["errors"] = { ["property-not-found"] = "Maoin gan aimsiú.", ["qualifier-not-found"] = "Cáilitheoir gan aimsiú.", }, ["datetime"] = { -- $1 is a placeholder for the actual number ["beforenow"] = "$1 RCh", -- how to format negative numbers for precisions 0 to 5 ["afternow"] = "$1 IC", -- how to format positive numbers for precisions 0 to 5 ["bc"] = '$1 "RCh"', -- how print negative years ["ad"] = "$1", -- how print 1st century AD dates [0] = "$1 billiún bliain", -- precision: billion years [1] = "$100 milliún bliain", -- precision: hundred million years [2] = "$10 milliún bliain", -- precision: ten million years [3] = "$1 milliún bliain", -- precision: million years [4] = "$100000 bliain", -- precision: hundred thousand years; thousand separators added afterwards [5] = "$10000 bliain", -- precision: ten thousand years; thousand separators added afterwards [6] = "$1 míle bliain", -- precision: millennium [7] = "$1 aois", -- precision: century [8] = "$1í", -- precision: decade -- the following use the format of #time parser function [9] = "Y", -- precision: year, [10] = "F Y", -- precision: month [11] = "j F Y", -- precision: day ["hms"] = {["uair"] = "h", ["nóiméad"] = "m", ["soicind"] = "s"}, -- duration: xh xm xs }, ["years-old"] = { ["singular"] = "blian d'aois", -- year old, as in {{PLURAL:$1|singular|plural}} ["plural"] = "bliana d'aois", -- years old ["paucal"] = "", -- for languages with 3 plural forms as in {{PLURAL:$1|singular|paucal|plural}} }, -- two values for most languages, up to six values for some languages -- see documentation of PLURAL magic word in your language, examples: -- ["years-old"] = {"singular", "paucal", "plural"} in Russian and other Slavic languages -- ["years-old"] = {"zero", "one", "two", "few 3-10", "many 11-99", "other 100-102"} in Arabic ["cite"] = { -- cite parameters ["title"] = "title", ["author"] = "author", ["date"] = "date", ["pages"] = "pages", ["language"] = "language", -- cite web parameters ["url"] = "url", ["website"] = "website", ["access-date"] = "access-date", ["archive-url"] = "archive-url", ["archive-date"] = "archive-date", ["publisher"] = "publisher", ["quote"] = "quote", -- cite journal parameters ["work"] = "work", ["issue"] = "issue", ["issn"] = "issn", ["doi"] = "doi" }, -- default local wiki settings ["addpencil"] = false, -- adds a pencil icon linked to Wikidata statement, planned to overwrite by Wikidata Bridge ["categorylabels"] = "", -- Category:Pages with Wikidata labels not translated (void for no local category) ["categoryprop"] = "", -- Category:Pages using Wikidata property $1 (void for no local category) ["categoryref"] = "", -- Category:Pages with references from Wikidata (void for no local category) ["addfallback"] = {}, -- additional fallback language codes ["suppressids"] = {}, -- list of Qid values to suppress ["qidlabels"] = true -- show labels as Qid if no fallback translation is available } local cases = {} -- functions for local grammatical cases defined at [[Module:Wikidata/i18n]] local required = ... -- variadic arguments from require function local wiki = { langcode = mw.language.getContentLanguage().code, module_title = required or mw.getCurrentFrame():getTitle() } local untranslated -- used in infobox modules: nil or true local _ -- variable for unused returned values, avoiding globals -- Module local functions -------------------------------------------- -- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0 local function tableMerge(t1, t2) for k, v in pairs(t2) do if type(v) == "table" then if type(t1[k] or false) == "table" then tableMerge(t1[k] or {}, t2[k] or {}) else t1[k] = v end else t1[k] = v end end return t1 end local function loadI18n(lang) local exist, res = pcall(require, wiki.module_title .. "/i18n") if exist and next(res) ~= nil then tableMerge(i18n, res.i18n) cases = res.cases end if lang ~= wiki.langcode then exist, res = pcall(require, wiki.module_title .. "/i18n/" .. lang) if exist and next(res) ~= nil then tableMerge(i18n, res.i18n) tableMerge(cases, res.cases) end end i18n.suppress = {} for _, id in ipairs(i18n.suppressids) do i18n.suppress[id] = true end end -- Table of language codes: requested or default and its fallbacks local function findLang(langcode) if mw.language.isKnownLanguageTag(langcode or '') == false then local cframe = mw.getCurrentFrame() local pframe = cframe:getParent() langcode = pframe and pframe.args.lang if mw.language.isKnownLanguageTag(langcode or '') == false then if not mw.title.getCurrentTitle().isContentPage then langcode = cframe:preprocess('{{int:lang}}') end if mw.language.isKnownLanguageTag(langcode or '') == false then langcode = wiki.langcode end end end loadI18n(langcode) local languages = mw.language.getFallbacksFor(langcode) table.insert(languages, 1, langcode) if langcode == wiki.langcode then for _, l in ipairs(i18n.addfallback) do table.insert(languages, l) end end return languages end -- Argument is 'set' when it exists (not nil) or when it is not an empty string. local function isSet(var) return not (var == nil or (type(var) == 'string' and mw.text.trim(var) == '')) end -- Set local case to a label local function case(localcase, label, ...) if not isSet(label) then return label end if type(localcase) == "function" then return localcase(label) elseif localcase == "smallcaps" then return '<span style="font-variant: small-caps;">' .. label .. '</span>' elseif cases[localcase] then return cases[localcase](label, ...) end return label end -- get safely a serialized snak local function getSnak(statement, snaks) local ret = statement for i, v in ipairs(snaks) do if not ret then return end ret = ret[v] end return ret end -- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages local function getLabelByLangs(id, languages) local label local lang for _, l in ipairs(languages) do if l == wiki.langcode then -- using getLabelWithLang when possible instead of getLabelByLang label, l = mw.wikibase.getLabelWithLang(id) else label = mw.wikibase.getLabelByLang(id, l) end if label then lang = l break end end return label, lang end -- getBestStatements if bestrank=true, else getAllStatements with no deprecated local function getStatements(entityId, property, bestrank) local claims = {} if not (entityId and mw.ustring.match(property, "^P%d+$")) then return claims end if bestrank then claims = mw.wikibase.getBestStatements(entityId, property) else local allclaims = mw.wikibase.getAllStatements(entityId, property) for _, c in ipairs(allclaims) do if c.rank ~= "deprecated" then table.insert(claims, c) end end end return claims end -- Is gender femenine? true or false local function feminineGender(id) local claims = mw.wikibase.getBestStatements(id or mw.wikibase.getEntityIdForCurrentPage(),'P21') local gender_id = getSnak(claims, {1, "mainsnak", "datavalue", "value", "id"}) if gender_id == "Q6581072" or gender_id == "Q1052281" or gender_id == "Q43445" then -- female, transgender female, female organism return true end return false end -- Fetch female form of label local function feminineForm(id, lang) local feminine_claims = getStatements(id, 'P2521') for _, feminine_claim in ipairs(feminine_claims) do if getSnak(feminine_claim, {'mainsnak', 'datavalue', 'value', 'language'}) == lang then return feminine_claim.mainsnak.datavalue.value.text end end end -- Add an icon for no label in requested language local function addLabelIcon(label_id, lang, uselang, icon) local ret_lang, ret_icon = '', '' if icon then if lang and lang ~= uselang and lang ~= 'mul' then ret_lang = " <sup>(" .. lang .. ")</sup>" end if label_id and (lang == nil or (lang ~= uselang and lang ~= 'mul')) then local namespace = '' if string.sub(label_id, 1, 1) == 'P' then namespace = 'Property:' end ret_icon = " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|" .. mw.message.new('Translate-taction-translate'):inLanguage(uselang):plain() .. "|link=https://www.wikidata.org/wiki/" .. namespace .. label_id .. "?uselang=" .. uselang .. "]]" untranslated = true end if isSet(i18n.categorylabels) and lang ~= uselang and lang ~= 'mul' and uselang == wiki.langcode then ret_icon = ret_icon .. '[[' .. i18n.categorylabels .. (lang and ']]' or '/Q]]') end end return ret_lang .. ret_icon end -- editicon values: true/false (no=false), right, void defaults to i18n.addpencil -- labelicon only by parameter local function setIcons(arg, parg) local val = arg == nil and parg or arg local edit_icon, label_icon if not isSet(val) then edit_icon, label_icon = i18n.addpencil, true elseif val == false or val == "false" or val == "no" then edit_icon, label_icon = false, false else edit_icon, label_icon = val, true end return edit_icon, label_icon end -- Add an icon for editing a statement with requirements for Wikidata Bridge local function addEditIcon(parameters) local ret = '' if parameters.editicon and parameters.id and parameters.property then local icon_style = parameters.editicon == "right" and ' style="float: right;"' or '' ret = ' <span class="penicon" data-bridge-edit-flow="single-best-value"' .. icon_style .. '>' .. "[[File:Arbcom ru editing.svg|10px|baseline|" .. string.gsub(mw.message.new('Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button'):inLanguage(parameters.lang[1]):plain(), '{{WBREPONAME}}', 'Wikidata') .. "|link=https://www.wikidata.org/wiki/" .. parameters.id .. "?uselang=" .. parameters.lang[1] .. "#" .. parameters.property .. "]]" .. "</span>" if isSet(i18n.categoryprop) then ret = ret .. "[[" .. string.gsub(i18n.categoryprop, '$1', parameters.property) .. "]]" end end return ret end -- add edit icon to the last element of a table local function addEditIconTable(thetable, parameters) if #thetable == 0 or parameters.editicon == false then return thetable end local last_element = thetable[#thetable] local the_icon = addEditIcon(parameters) -- add it before last html closing tags local tags = '' local rev_element = string.reverse(last_element) for tag in string.gmatch(rev_element, '(>%l+/<)') do if string.match(rev_element, '^' .. tags .. tag) then tags = tags .. tag else break end end local last_tags = string.reverse(tags) local offset = string.find(last_element, last_tags .. '$') if offset then thetable[#thetable] = string.sub(last_element, 1, offset - 1) .. the_icon .. last_tags else thetable[#thetable] = last_element .. the_icon end return thetable end -- Escape Lua captures local function captureEscapes(text) return mw.ustring.gsub(text, "(%%%d)", "%%%1") end -- expandTemplate or callParserFunction local function expandBraces(text, formatting) if text == nil or formatting == nil then return text end -- only expand braces if provided in argument, not included in value as in Q1164668 if mw.ustring.find(formatting, '{{', 1, true) == nil then return text end if type(text) ~= "string" then text = tostring(text) end for braces in mw.ustring.gmatch(text, "{{(.-)}}") do local parts = mw.text.split(braces, "|") local title_part = parts[1] local parameters = {} for i = 2, #parts do local subparts = mw.ustring.find(parts[i], "=") if subparts then local param_name = mw.ustring.sub(parts[i], 1, subparts - 1) local param_value = mw.ustring.sub(parts[i], subparts + 1, -1) -- reconstruct broken links by parts if i < #parts and mw.ustring.find(param_value, "[[", 1, true) and not mw.ustring.find(param_value, "]]", 1, true) then parameters[param_name] = param_value local part_next = i + 1 while parts[part_next] and mw.ustring.find(parts[part_next], "]]", 1, true) do parameters[param_name] = parameters[param_name] .. "|" .. parts[part_next] part_next = part_next + 1 end else parameters[param_name] = param_value end elseif not mw.ustring.find(parts[i], "]]", 1, true) then table.insert(parameters, parts[i]) end end local braces_expanded if mw.ustring.find(title_part, ":") and mw.text.split(title_part, ":")[1] ~= mw.site.namespaces[10].name -- not a prefix Template: then braces_expanded = mw.getCurrentFrame():callParserFunction{name=title_part, args=parameters} else braces_expanded = mw.getCurrentFrame():expandTemplate{title=title_part, args=parameters} end braces = mw.ustring.gsub(braces, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") -- escape magic characters braces_expanded = captureEscapes(braces_expanded) text = mw.ustring.gsub(text, "{{" .. braces .. "}}", braces_expanded) end return text end -- format data type math local function printDatatypeMath(data) return mw.getCurrentFrame():callParserFunction('#tag:math', data) end -- format data type musical-notation local function printDatatypeMusical(data, formatting) local attr = {} if formatting == 'sound' then attr.sound = 1 end return mw.getCurrentFrame():extensionTag('score', data, attr) end -- format data type string local function printDatatypeString(data, parameters) if mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting = a pattern return expandBraces(mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = data}), parameters.formatting) elseif parameters.case then return case(parameters.case, data, parameters.lang[1], feminineGender(parameters.id)) end local data_number = string.match(data, "^%d+") if data_number then -- sort key by initial number and remaining string local sortkey = string.format("%019d", data_number * 1000) return data, sortkey .. string.sub(data, #data_number + 1) end return data end -- format data type tabular-data local function printDatatypeTabular(data, parameters) local icon if parameters.formatting == 'raw' then icon = "no-icon" data = string.gsub(data, '^Data:', '') -- remove prefix, i.e. see Module:Tabular data end return printDatatypeString(data, parameters), icon end -- format data type url local function printDatatypeUrl(data, parameters) if parameters.formatting == 'weblink' then local label_parts = mw.text.split(string.gsub(data, '/$', ''), '/') local label = string.gsub(label_parts[3], '^www%.', '') if #label_parts > 3 then label = label .. '…' end return '[' .. data .. ' ' .. label .. ']' end return printDatatypeString(data, parameters) end -- format data type external-id local function printDatatypeExternal(data, parameters) if parameters.formatting == 'externalid' then local p_stat = mw.wikibase.getBestStatements(parameters.property, 'P1630') -- formatter URL local p_link_pattern = getSnak(p_stat, {1, "mainsnak", "datavalue", "value"}) if p_link_pattern then local p_link = mw.ustring.gsub(p_link_pattern, '$1', {['$1'] = data}) return '[' .. p_link .. ' ' .. data .. ']' end end return printDatatypeString(data, parameters) end -- format data type commonsMedia and geo-shape local function printDatatypeMedia(data, parameters) local icon if not string.find((parameters.formatting or ''), '$1', 1, true) then icon = "no-icon" if not string.find(data, '^Data:') then data = mw.uri.encode(data, 'PATH') -- encode special characters in filename end end return printDatatypeString(data, parameters), icon end -- format data type globe-coordinate local function printDatatypeCoordinate(data, formatting) local function globes(globe_id) local globes = {['Q3134']='callisto',['Q596']='ceres',['Q15040']='dione',['Q2']='earth',['Q3303']='enceladus', ['Q3143']='europa',['Q17975']='phoebe',['Q3169']='ganymede',['Q3123']='io',['Q17958']='iapetus', ['Q308']='mercury',['Q15034']='mimas',['Q405']='moon',['Q15050']='rhea',['Q15047']='tethys', ['Q111']='mars',['Q2565']='titan',['Q3359']='triton',['Q313']='venus',['Q3030']='vesta'} return globes[globe_id] end local function roundPrecision(num, prec) if prec == nil or prec <= 0 then return num end local sig = 10^math.floor(math.log10(prec)+.5) -- significant figure from sexagesimal precision: 0.00123 -> 0.001 return math.floor(num / sig + 0.5) * sig end local precision = data.precision local latitude = roundPrecision(data.latitude, precision) local longitude = roundPrecision(data.longitude, precision) if formatting and string.find(formatting, '$lat', 1, true) and string.find(formatting, '$lon', 1, true) then local ret = mw.ustring.gsub(formatting, '$l[ao][tn]', {['$lat'] = latitude, ['$lon'] = longitude}) if string.find(formatting, '$globe', 1, true) then local myglobe = 'earth' if isSet(data.globe) then local globenum = mw.text.split(data.globe, 'entity/')[2] -- http://www.wikidata.org/wiki/Q2 myglobe = globes(globenum) or 'earth' end ret = mw.ustring.gsub(ret, '$globe', myglobe) end return expandBraces(ret, formatting) elseif formatting == 'latitude' then return latitude, "no-icon" elseif formatting == 'longitude' then return longitude, "no-icon" elseif formatting == 'dimension' then return data.dimension, "no-icon" else --default formatting='globe' if isSet(data.globe) == false or data.globe == 'http://www.wikidata.org/entity/Q2' then return 'earth', "no-icon" else local globenum = mw.text.split(data.globe, 'entity/')[2] return globes(globenum) or globenum, "no-icon" end end end -- Local functions for data value quantity local function unitSymbol(id, lang) -- get unit symbol or code local unit_symbol = '' if lang == wiki.langcode and pcall(require, "Module:Wikidata/Units") then unit_symbol = require("Module:Wikidata/Units").getUnit(0, '', id, true) end if unit_symbol == '' then -- fetch it local claims = mw.wikibase.getBestStatements(id, 'P5061') if #claims > 0 then local langclaims = {} table.insert(lang, 'mul') -- multilingual as last try for _, snak in ipairs(claims) do local snak_language = getSnak(snak, {"mainsnak", "datavalue", "value", "language"}) if snak_language and not langclaims[snak_language] then -- just the first one by language langclaims[snak_language] = snak.mainsnak.datavalue.value.text end end for _, l in ipairs(lang) do if langclaims[l] then return langclaims[l] end end end end return unit_symbol end local function getUnit(amount, id, parameters) -- get unit symbol or name local suffix = '' if string.sub(parameters.formatting or '', 1, 8) == "unitcode" then -- get unit symbol local unit_symbol = unitSymbol(id, parameters.lang) if isSet(unit_symbol) then if string.sub(parameters.formatting or '', -6) == "linked" then suffix = "[[" .. (mw.wikibase.getSitelink(id) or "d:" .. id) .. "|" .. unit_symbol .. "]]" else suffix = unit_symbol end end end if suffix == '' then -- formatting=unit, or formatting=unitcode not found -- get unit label local unit_label, lang = getLabelByLangs(id, parameters.lang) if lang == wiki.langcode and pcall(require, "Module:Wikidata/Units") then suffix = require("Module:Wikidata/Units").getUnit(amount, unit_label, id, false) if string.sub(parameters.formatting or '', -6) == "linked" then suffix = "[[" .. (mw.wikibase.getSitelink(id) or "d:" .. id) .. "|" .. suffix .. "]]" end else suffix = (unit_label or id) .. addLabelIcon(id, lang, parameters.lang[1], parameters.labelicon) end end if suffix ~= '' then suffix = ' ' .. suffix end return suffix end local function roundDefPrecision(in_num, factor) -- rounds out_num with significant figures of in_num (default precision) local out_num = in_num * factor if factor/60 == math.floor(factor/60) or out_num == 0 then -- sexagesimal integer or avoiding NaN return out_num end -- first, count digits after decimal mark, handling cases like '12.345e6' local exponent, prec local integer, dot, decimals, expstr = in_num:match('^(%d*)(%.?)(%d*)(.*)') local e = expstr:sub(1, 1) if e == 'e' or e == 'E' then exponent = tonumber(expstr:sub(2)) end if dot == '' then prec = -integer:match('0*$'):len() else prec = #decimals end if exponent then -- So '1230' and '1.23e3' both give prec = -1, and '0.00123' and '1.23e-3' give 5. prec = prec - exponent end -- significant figures local in_bracket = 10^-prec -- -1 -> 10, 5 -> 0.00001 local out_bracket = in_bracket * out_num / in_num out_bracket = 10^math.floor(math.log10(out_bracket)+.5) -- 1230 -> 1000, 0.00123 -> 0.001 -- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound) return math.floor(out_num/out_bracket + (out_num >=0 and 1 or -1) * 0.5) * out_bracket end -- format data type quantity local function printDatatypeQuantity(data, parameters) local amount = data.amount amount = mw.ustring.gsub(amount, "%+", "") local suffix = "" local conv_amount, conv_suffix if string.sub(parameters.formatting or '', 1, 4) == "unit" or string.sub(parameters.formatting or '', 1, 8) == "duration" or parameters.convert then local unit_id = data.unit unit_id = mw.ustring.sub(unit_id, mw.ustring.find(unit_id, "Q"), -1) if string.sub(unit_id, 1, 1) == "Q" then suffix = getUnit(amount, unit_id, parameters) local convert_to if parameters.convert == "default" or parameters.convert == "default2" then local exist, units = pcall(require, "Module:Wikidata/Units") if exist and units.convert_default and next(units.convert_default) ~= nil then convert_to = units.convert_default[unit_id] end elseif string.sub(parameters.convert or '', 1, 1) == "Q" then convert_to = parameters.convert elseif string.sub(parameters.formatting or '', 1, 8) == "duration" then convert_to = 'Q11574' -- seconds end if convert_to and convert_to ~= unit_id then -- convert units local conv_temp = { -- formulae for temperatures ºC, ºF, ªK: [from] = {[to] = 'formula'} ['Q25267'] = {['Q42289'] = '$1*1.8+32', ['Q11597'] = '$1+273.15'}, ['Q42289'] = {['Q25267'] = '($1-32)/1.8', ['Q11597'] = '($1+459.67)*5/9'}, ['Q11597'] = {['Q25267'] = '$1-273.15', ['Q42289'] = '($1-273.15)*1.8000+32.00'} } if conv_temp[unit_id] and conv_temp[unit_id][convert_to] then local amount_f = mw.getCurrentFrame():callParserFunction('#expr', mw.ustring.gsub(conv_temp[unit_id][convert_to], "$1", amount)) conv_amount = math.floor(tonumber(amount_f) + 0.5) else local conversions = getStatements(unit_id, 'P2442') -- conversion to standard unit table.insert(conversions, mw.wikibase.getBestStatements(unit_id, 'P2370')[1]) -- conversion to SI unit for _, conv in ipairs(conversions) do if conv.mainsnak.snaktype == 'value' then -- no somevalue nor novalue if conv.mainsnak.datavalue.value.unit == "http://www.wikidata.org/entity/" .. convert_to then conv_amount = roundDefPrecision(amount, tonumber(conv.mainsnak.datavalue.value.amount)) break end end end end if conv_amount then conv_suffix = getUnit(conv_amount, convert_to, parameters) end elseif parameters.convert == 'M' and tonumber(amount) > 10^8 then conv_amount = math.floor(amount/10^6 + 0.5) conv_suffix = ' M' .. string.sub(suffix, 2) end if conv_amount and parameters.formatting == 'raw' then amount = conv_amount suffix = "" conv_amount = nil end end end local lang_obj = mw.language.new(parameters.lang[1]) local sortkey = string.format("%019d", tonumber(amount) * 1000) if string.sub(parameters.formatting or '', 1, 8) == "duration" then local sec = tonumber(conv_amount or amount) if parameters.formatting == 'duration' then return lang_obj:formatDuration(sec) elseif parameters.formatting == 'durationm:s' then local mm = math.floor(sec / 60) local ss = sec - (mm * 60) return string.format("%02d:%02d", mm, ss) else -- durationhms or durationh:m:s local intervals = {"hours", "minutes", "seconds"} local sec2table = lang_obj:getDurationIntervals(sec, intervals) sec2table["seconds"] = (sec2table["seconds"] or 0) + tonumber("." .. (tostring(sec):match("%.(%d+)") or "0")) -- add decimals local duration = '' for i, v in ipairs(intervals) do if parameters.formatting == 'durationh:m:s' then if i == 1 and sec2table[v] then duration = duration .. sec2table[v] .. ":" elseif i == 2 then duration = duration .. string.format("%02d", sec2table[v] or 0) .. ":" elseif i == 3 then local sec_str = tostring(lang_obj:formatNum(sec2table[v] or 0)) duration = duration .. (sec2table[v] < 10 and "0" or "") .. sec_str end elseif sec2table[v] then duration = duration .. lang_obj:formatNum(sec2table[v]) .. i18n.datetime.hms[v] .. (i < 3 and " " or "") end end return duration end end if parameters.case then amount = case(parameters.case, amount, parameters.lang[1], feminineGender(parameters.id)) elseif parameters.formatting ~= 'raw' then if parameters.numformat then amount = lang_obj:formatNum(tonumber(string.format(parameters.numformat, amount))) else amount = lang_obj:formatNum(tonumber(amount)) end end if conv_amount then local conv_sortkey = string.format("%019d", conv_amount * 1000) conv_amount = lang_obj:formatNum(conv_amount) if parameters.convert == 'default2' then return conv_amount .. conv_suffix .. ' (' .. amount .. suffix .. ')', conv_sortkey else return conv_amount .. conv_suffix, conv_sortkey end elseif mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting with pattern amount = mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = amount}) end return amount .. suffix, sortkey end -- format data type time local function printDatatypeTime(data, parameters) -- Dates and times are stored in ISO 8601 format local timestamp = data.time local post_format local calendar_add = "" local precision = data.precision or 11 if string.sub(timestamp, 1, 1) == '-' then post_format = i18n.datetime["bc"] elseif string.sub(timestamp, 2, 3) == '00' then post_format = i18n.datetime["ad"] elseif precision > 8 then -- calendar model local calendar_model = {["Q12138"] = "gregorian", ["Q1985727"] = "gregorian", ["Q11184"] = "julian", ["Q1985786"] = "julian"} local calendar_id = mw.text.split(data.calendarmodel, 'entity/')[2] if (timestamp < "+1582-10-15T00:00:00Z" and calendar_model[calendar_id] == "gregorian") or (timestamp > "+1582-10-04T00:00:00Z" and calendar_model[calendar_id] == "julian") then calendar_add = " <sup>(" .. mw.message.new('Wikibase-time-calendar-' .. calendar_model[calendar_id]):inLanguage(parameters.lang[1]):plain() .. ")</sup>" end end local function formatTime(form, stamp) local pattern if type(form) == "function" then pattern = form(stamp) else pattern = form end stamp = tostring(stamp) if mw.ustring.find(pattern, "$1") then return mw.ustring.gsub(pattern, "$1", stamp) elseif string.sub(stamp, 1, 1) == '-' then -- formatDate() only supports years from 0 stamp = '+' .. string.sub(stamp, 2) elseif string.sub(stamp, 1, 1) ~= '+' then -- not a valid timestamp, it is a number stamp = string.format("%04d", stamp) end local ret = mw.language.new(parameters.lang[1]):formatDate(pattern, stamp) ret = string.gsub(ret, "^(%[?%[?)0+", "%1") -- suppress leading zeros ret = string.gsub(ret, "( %[?%[?)0+", "%1") return ret end local function postFormat(t) if post_format and mw.ustring.find(post_format, "$1") then return mw.ustring.gsub(post_format, "$1", t) end return t end local intyear = tonumber(string.match(timestamp, "[+-](%d+)")) local ret = "" if precision <= 5 then -- precision is 10000 years or more local factor = 10 ^ ((5 - precision) + 4) local y2 = math.ceil(math.abs(intyear) / factor) local relative = formatTime(i18n.datetime[precision], y2) if post_format == i18n.datetime["bc"] then ret = mw.ustring.gsub(i18n.datetime.beforenow, "$1", relative) else ret = mw.ustring.gsub(i18n.datetime.afternow, "$1", relative) end local ret_number = string.match(ret, "%d+") if ret_number ~= nil then ret = mw.ustring.gsub(ret, ret_number, mw.language.new(parameters.lang[1]):formatNum(tonumber(ret_number))) end elseif precision == 6 or precision == 7 then -- millennia or centuries local card = math.floor((intyear - 1) / 10^(9 - precision)) + 1 ret = formatTime(i18n.datetime[precision], card) ret = postFormat(ret) elseif precision == 8 then -- decades local card = math.floor(math.abs(intyear) / 10) * 10 ret = formatTime(i18n.datetime[8], card) ret = postFormat(ret) elseif intyear > 9999 then -- not a valid timestamp return elseif precision == 9 or parameters.formatting == 'Y' then -- precision is year ret = formatTime(i18n.datetime[9], intyear) ret = postFormat(ret) .. calendar_add elseif precision == 10 then -- month ret = formatTime(i18n.datetime[10], timestamp .. " + 1 day") -- formatDate yyyy-mm-00 returns the previous month ret = postFormat(ret) .. calendar_add else -- precision 11, day ret = formatTime(parameters.formatting or i18n.datetime[11], timestamp) ret = postFormat(ret) .. calendar_add end return ret, timestamp end -- format data value wikibase-entityid with data types wikibase-item or wikibase-property local function printDatatypeEntity(data, parameters) local entity_id = data['id'] if parameters.formatting == 'raw' then return entity_id, entity_id end local entity_page = 'Special:EntityPage/' .. entity_id local label, lang = getLabelByLangs(entity_id, parameters.lang) local sitelink = mw.wikibase.getSitelink(entity_id) local parameter = parameters.formatting local labelcase = label or sitelink if parameters.gender == 'feminineform' then labelcase = feminineForm(entity_id, lang) or labelcase end if parameters.case ~= 'gender' then labelcase = case(parameters.case, labelcase, lang, parameters.lang[1], entity_id, parameters.id) end if labelcase == nil and i18n.qidlabels == false then return end local ret1, ret2 if parameter == 'label' then ret1 = labelcase or entity_id ret2 = labelcase or entity_id elseif parameter == 'sitelink' then ret1 = (sitelink or 'd:' .. entity_page) ret2 = sitelink or entity_id elseif mw.ustring.find((parameter or ''), '$1', 1, true) then -- formatting = a pattern ret1 = mw.ustring.gsub(parameter, '$1', labelcase or entity_id) ret1 = expandBraces(ret1, parameter) ret2 = labelcase or entity_id else if parameter == "ucfirst" or parameter == "ucinternallink" then if labelcase and lang then labelcase = mw.language.new(lang):ucfirst(labelcase) end -- only first of a list, reset formatting for next ones if parameter == "ucinterlanllink" then parameters.formatting = 'internallink' else parameters.formatting = nil -- default format end end if sitelink then ret1 = '[[' .. sitelink .. '|' .. labelcase .. ']]' ret2 = labelcase elseif label and string.match(parameter or '', 'internallink$') and not mw.wikibase.getEntityIdForTitle(label) then ret1 = '[[' .. label .. '|' .. labelcase .. ']]' ret2 = labelcase else ret1 = '[[d:' .. entity_page .. '|<span style="color:#5f9cbb;">' .. (labelcase or entity_id) .. '</span>]]' ret2 = labelcase or entity_id end end return ret1 .. addLabelIcon(entity_id, lang, parameters.lang[1], parameters.labelicon), ret2 end -- format data type wikibase-lexeme local function printDatatypeLexeme(data, parameters) local entity_id = data['id'] if parameters.formatting == 'raw' then return entity_id, entity_id end local lemmas = mw.wikibase.getEntity(entity_id):getLemmas() if parameters.list == 'lang' and lemmas[1][2] ~= parameters.lang[1] then return end local ret = '[[d:Special:EntityPage/' .. entity_id .. '|<span style="color:#5f9cbb;">' .. lemmas[1][1] .. '</span>]]' if parameters.list ~= 'lang' or (parameters.list == 'lang' and lemmas[1][2] ~= wiki.langcode) then ret = ret .. " <sup>(" .. lemmas[1][2] .. ")</sup>" end return ret, entity_id end -- format data type monolingualtext local function printDatatypeMonolingual(data, parameters) -- data fields: language [string], text [string] if parameters.list == "lang" and data["language"] ~= parameters.lang[1] then return elseif parameters.list == "notlang" and data["language"] == parameters.lang[1] then return elseif parameters.formatting == "language" or parameters.formatting == "text" then return data[parameters.formatting] end local result = data["text"] if data["language"] ~= wiki.langcode then result = mw.ustring.gsub('<span lang="$1">$2</span>', '$[12]', {["$1"]=data["language"], ["$2"]=data["text"]}) end if mw.ustring.find((parameters.formatting or ''), '$', 1, true) then -- output format defined with $text, $language result = mw.ustring.gsub(parameters.formatting, '$text', result) result = mw.ustring.gsub(result, '$language', data["language"]) end return result end local function getSnakValue(snak, parameters) if snak.snaktype == 'value' then -- see Special:ListDatatypes -- data value string if snak.datatype == "string" then return printDatatypeString(snak.datavalue.value, parameters) elseif snak.datatype == "commonsMedia" or snak.datatype == "geo-shape" then return printDatatypeMedia(snak.datavalue.value, parameters) elseif snak.datatype == "tabular-data" then return printDatatypeTabular(snak.datavalue.value, parameters) elseif snak.datatype == "url" then return printDatatypeUrl(snak.datavalue.value, parameters) elseif snak.datatype == "external-id" then return printDatatypeExternal(snak.datavalue.value, parameters) elseif snak.datatype == 'math' then return printDatatypeMath(snak.datavalue.value) elseif snak.datatype == 'musical-notation' then return printDatatypeMusical(snak.datavalue.value, parameters.formatting) -- data types other than string value elseif snak.datatype == 'wikibase-item' or snak.datatype == 'wikibase-property' then if i18n.suppress[snak.datavalue.value.id] then return end return printDatatypeEntity(snak.datavalue.value, parameters) elseif snak.datatype == 'wikibase-lexeme' then return printDatatypeLexeme(snak.datavalue.value, parameters) elseif snak.datatype == 'monolingualtext' then return printDatatypeMonolingual(snak.datavalue.value, parameters) elseif snak.datatype == "globe-coordinate" then return printDatatypeCoordinate(snak.datavalue.value, parameters.formatting) elseif snak.datatype == "quantity" then return printDatatypeQuantity(snak.datavalue.value, parameters) elseif snak.datatype == "time" then return printDatatypeTime(snak.datavalue.value, parameters) end elseif snak.snaktype == 'novalue' then if parameters.formatting == 'raw' or parameters.shownovalue == false then return end return mw.message.new('Wikibase-snakview-snaktypeselector-novalue'):inLanguage(parameters.lang[1]):plain() elseif snak.snaktype == 'somevalue' then if parameters.formatting == 'raw' then return end return mw.message.new('Wikibase-snakview-snaktypeselector-somevalue'):inLanguage(parameters.lang[1]):plain() end return mw.wikibase.renderSnak(snak) end local function printError(key) return '<span class="error">' .. i18n.errors[key] .. '</span>' end local function getQualifierSnak(claim, qualifierId, parameters) -- a "snak" is Wikidata terminology for a typed key/value pair -- a claim consists of a main snak holding the main information of this claim, -- as well as a list of attribute snaks and a list of references snaks if qualifierId then -- search the attribute snak with the given qualifier as key if claim.qualifiers then local qualifier = claim.qualifiers[qualifierId] if qualifier then if qualifier[1].datatype == "monolingualtext" then -- iterate over monolingualtext qualifiers to get local language for idx in pairs(qualifier) do if getSnak(qualifier[idx], {"datavalue", "value", "language"}) == parameters.lang[1] then return qualifier[idx] end end elseif parameters.list then return qualifier else return qualifier[1] end end end return nil, printError("qualifier-not-found") else -- otherwise return the main snak return claim.mainsnak end end local function getValueOfClaim(claim, qualifierId, parameters) local snak, error = getQualifierSnak(claim, qualifierId, parameters) if not snak then return nil, nil, error elseif snak[1] then -- a multi qualifier local result, sortkey = {}, {} local maxvals = tonumber(parameters.listmax) for idx in pairs(snak) do result[#result + 1], sortkey[#sortkey + 1] = getSnakValue(snak[idx], parameters) if maxvals and maxvals == #result then break end end return mw.text.listToText(result, parameters.qseparator, parameters.qconjunction), sortkey[1] else -- a property or a qualifier return getSnakValue(snak, parameters) end end local function getValueOfParentClaim(claim, qualifierId, parameters) local qids = mw.text.split(qualifierId, '/', true) local value, sortkey, valueraw = {}, {}, {} local parent_raw, value_text if qids[1] == parameters.property then parent_raw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=parameters.lang}) else parent_raw, _, _ = getValueOfClaim(claim, qids[1], {["formatting"]="raw", ["lang"]=parameters.lang, ["list"]=true, ["qseparator"]='/', ["qconjunction"]='/'}) end if string.sub(parent_raw or '', 1, 1) == "Q" then -- protection for 'no value' local parent_qids = mw.text.split(parent_raw, '/', true) for idx, p_qid in ipairs(parent_qids) do local parent_claims = mw.wikibase.getBestStatements(p_qid, qids[2]) if parent_claims[1] then value[idx], sortkey[idx], _ = getValueOfClaim(parent_claims[1], nil, parameters) -- raw parent value needed for while/black lists, lang for avoiding an error on types other than entity valueraw[idx], _, _ = getValueOfClaim(parent_claims[1], nil, {["formatting"]="raw", ["lang"]=parameters.lang}) end end end if value[1] then value_text = mw.text.listToText(value, parameters.qseparator, parameters.qconjunction) end return value_text, sortkey[1], valueraw[1] end -- see d:Help:Sources local function getReferences(claim, parameters) if not (parameters.references or parameters.onlysourced) then return '', false end local lang = parameters.lang local maxrefs = tonumber(parameters.references) or 1 local notproperref = { ["P143"] = true, -- imported from ["P3452"] = true, -- inferred from ["P887"] = true, -- based on heuristic ["P4656"] = true -- Wikimedia import URL } local result = {} -- traverse through all references for ref in pairs(claim.references or {}) do local refparts local refs = {} local validref = true local ref_id -- traverse through all parts of the current reference for snakkey, snakval in pairs(claim.references[ref].snaks or {}) do for partkey, _ in pairs(claim.references[ref].snaks[snakkey] or {}) do if notproperref[snakkey] then -- not a proper reference validref = false break end end if validref then for snakidx = 1, #snakval do if snakidx > 1 then refparts = refparts .. ", " end if snakval[snakidx].datatype == 'external-id' then refparts = refparts or '' .. (getSnakValue(snakval[snakidx], {formatting='externalid', property=snakval[snakidx].property, lang=lang}) or '') else refparts = refparts or '' .. (getSnakValue(snakval[snakidx], {lang=lang}) or '') end end refs[snakkey] = refparts refparts = nil if snakkey == "P248" then -- stated in ref_id = getSnak(snakval, {1, "datavalue", "value", "id"}) end end end -- fill missing values with parent item if ref_id then local function refParent(qid, pid, formatting) local snak = getSnak(mw.wikibase.getBestStatements(qid, pid), {1, "mainsnak"}) return snak and getSnakValue(snak, {formatting=formatting, lang=lang}) end refs['P50'] = refs['P50'] or refParent(ref_id, 'P50', 'label') -- author refs['P407'] = refs['P407'] or refParent(ref_id, 'P407', 'label') -- language of work refs['P123'] = refs['P123'] or refParent(ref_id, 'P123', 'label') -- publisher refs['P577'] = refs['P577'] or refParent(ref_id, 'P577') -- date refs['P1433'] = refs['P1433'] or refParent(ref_id, 'P1433', 'label') -- published in refs['P304'] = refs['P304'] or refParent(ref_id, 'P304') -- page(s) refs['P433'] = refs['P433'] or refParent(ref_id, 'P433') -- issue refs['P236'] = refs['P236'] or refParent(ref_id, 'P236') -- ISSN refs['P356'] = refs['P356'] or refParent(ref_id, 'P356') -- DOI end -- get title of local templates for citing references local template_web = mw.wikibase.getSitelink('Q5637226') or "" template_web = mw.text.split(template_web, ":")[2] -- split off namespace from front local template_journal = mw.wikibase.getSitelink('Q5624899') or "" template_journal = mw.text.split(template_journal, ":")[2] local citeParams = {} if refs['P854'] and (refs['P1476'] or refs['P248']) and template_web then -- if both "reference URL" and "title" (or "stated in") are present, then use cite web template citeParams[i18n['cite']['url']] = refs['P854'] if refs['P248'] and refs['P1476'] == nil then citeParams[i18n['cite']['title']] = refs['P248']:match("^%[%[.-|(.-)%]%]") else citeParams[i18n['cite']['title']] = refs['P1476'] citeParams[i18n['cite']['website']] = refs['P248'] end citeParams[i18n['cite']['author']] = refs['P50'] citeParams[i18n['cite']['language']] = refs['P407'] citeParams[i18n['cite']['publisher']] = refs['P123'] citeParams[i18n['cite']['date']] = refs['P577'] citeParams[i18n['cite']['pages']] = refs['P304'] citeParams[i18n['cite']['access-date']] = refs['P813'] citeParams[i18n['cite']['archive-url']] = refs['P1065'] citeParams[i18n['cite']['archive-date']] = refs['P2960'] citeParams[i18n['cite']['quote']] = refs['P1683'] refparts = mw.getCurrentFrame():expandTemplate{title=template_web, args=citeParams} elseif refs['P1433'] and (refs['P1476'] or refs['P248']) and template_journal then -- if both "published in" and "title" (or "stated in") are present, then use cite journal template citeParams[i18n['cite']['work']] = refs['P1433'] citeParams[i18n['cite']['title']] = refs['P1476'] or refs['P248'] citeParams[i18n['cite']['author']] = refs['P50'] citeParams[i18n['cite']['date']] = refs['P577'] citeParams[i18n['cite']['issue']] = refs['P433'] citeParams[i18n['cite']['pages']] = refs['P304'] citeParams[i18n['cite']['language']] = refs['P407'] citeParams[i18n['cite']['issn']] = refs['P236'] citeParams[i18n['cite']['doi']] = refs['P356'] refparts = mw.getCurrentFrame():expandTemplate{title=template_journal, args=citeParams} elseif validref then -- raw ouput local snaksorder = claim.references[ref]["snaks-order"] local function indexed(a) for _, b in ipairs(snaksorder) do if b == a then return true end end return false end for k, _ in pairs(refs or {}) do if not indexed(k) then table.insert(snaksorder, k) end end local italics = "''" for _, k in ipairs(snaksorder) do if refs[k] then refparts = refparts and refparts .. " " or "" refparts = refparts .. mw.ustring.gsub(getLabelByLangs(k, lang), "^%l", mw.ustring.upper) .. ": " refparts = refparts .. italics .. refs[k] .. italics .. "." italics = "" end end end if refparts then local ref_name = claim.references[ref].hash result[#result + 1] = mw.getCurrentFrame():extensionTag("ref", refparts, {name=ref_name}) if maxrefs and maxrefs == #result then break end end end if #result > 0 then if parameters.references then if isSet(i18n.categoryref) then result[#result + 1] = "[[" ..i18n.categoryref .. "]]" end return table.concat(result), true else return '', true end end return '', false end -- Set whitelist or blacklist values local function setWhiteOrBlackList(num_qual, args) local lists = {['whitelist']={}, ['blacklist']={}, ['ignorevalue']={}, ['selectvalue']={}} for i = 0, num_qual do for k, _ in pairs(lists) do if isSet(args[k .. i]) then lists[k][tostring(i)] = {} local pattern = 'Q%d+' if string.sub(args[k .. i], 1, 1) ~= 'Q' then pattern = '[^%p%s]+' end for q in string.gmatch(args[k .. i], pattern) do lists[k][tostring(i)][q] = true end end end end return lists['whitelist'], lists['blacklist'], lists['ignorevalue'], lists['selectvalue'] end local function tableParameters(args, parameters, column) local column_params = mw.clone(parameters) column_params.formatting = args["colformat"..column]; if column_params.formatting == "" then column_params.formatting = nil end column_params.convert = args["convert" .. column] if args["case" .. column] then column_params.case = args["case" .. column] end return column_params end local function getEntityId(args, pargs, unnamed) pargs = pargs or {} local id = args.item or args.from or (unnamed and mw.text.trim(args[1] or '') or nil) if not isSet(id) then id = pargs.item or pargs.from or (unnamed and mw.text.trim(pargs[1] or '') or nil) end if isSet(id) then if string.find(id, ":") then -- remove prefix as Property:Pid id = mw.text.split(id, ":")[2] end else id = mw.wikibase.getEntityIdForCurrentPage() end return id end local function getArg(value, default, aliases) if type(value) == 'boolean' then return value elseif value == "false" or value == "no" then return false elseif value == "true" or value == "yes" then return true elseif value and aliases and aliases[value] then return aliases[value] elseif isSet(value) then return value elseif default then return default else return nil end end -- Main function claim --------------------------------------------- -- on debug console use: =p.claim{item="Q...", property="P...", ...} function p.claim(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local is_sandbox = isSet(pargs.sandbox) if not required and is_sandbox then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).claim(frame) end --If a value is already set, use it if isSet(args.value) then if args.value == 'NONE' then return else return args.value end end -- arguments local parameters = {} parameters.id = getEntityId(args, pargs) if parameters.id == nil then return end parameters.property = string.upper(args.property or "") local qualifierId = {} qualifierId[1] = getArg(string.upper(args.qualifier or args.qualifier1 or "")) local i = 2 while isSet(args["qualifier" .. i]) do qualifierId[i] = string.upper(args["qualifier" .. i]) i = i + 1 end parameters.formatting = getArg(args.formatting) parameters.convert = getArg(args.convert) parameters.numformat = getArg(args.numformat) parameters.case = args.case parameters.list = getArg(args.list, true, {firstrank='bestrank'}) parameters.listmax = args.listmax parameters.listrank = getArg(args.listrank) if type(parameters.list) == "number" then -- backwards compatibility parameters.listmax = parameters.listmax or parameters.list parameters.list = true elseif parameters.list == "bestrank" then parameters.listrank = parameters.listrank or "bestrank" parameters.list = true end parameters.shownovalue = getArg(args.shownovalue, true) parameters.separator = getArg(args.separator) parameters.conjunction = getArg(args.conjunction, parameters.separator) parameters.qseparator = getArg(args.qseparator, parameters.separator) parameters.qconjunction = getArg(args.qconjunction, parameters.conjunction) local sorting_col = args.tablesort local sorting_up = (args.sorting or "") ~= "-1" local rowformat = args.rowformat parameters.references = getArg(args.references, false) parameters.onlysourced = getArg(args.onlysourced, false) local showerrors = args.showerrors local default = args.default if default then showerrors = nil end parameters.lang = findLang(args.lang) if parameters.formatting == "raw" then parameters.editicon, parameters.labelicon = false, false else parameters.editicon, parameters.labelicon = setIcons(args.editicon, pargs.editicon) -- needs loadI18n by findLand end -- fetch property local claims = {} local bestrank = parameters.listrank == 'bestrank' and parameters.list ~= 'lang' for p in string.gmatch(parameters.property, 'P%d+') do claims = getStatements(parameters.id, p, bestrank) if #claims > 0 then parameters.property = p break end end if #claims == 0 then local ret = showerrors and printError("property-not-found") or default or '' return ret, args.query == 'num' and 0 or '' end -- defaults for table local preformat, postformat = "", "" local whitelisted = false local whitelist, blacklist, ignorevalue, selectvalue = {}, {}, {}, {} if parameters.formatting == "table" then parameters.separator = parameters.separator or "<br />" parameters.conjunction = parameters.conjunction or "<br />" parameters.qseparator = getArg(args.qseparator, mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain()) parameters.qconjunction = getArg(args.qconjunction, parameters.qseparator) if not rowformat then rowformat = "$0 ($1" i = 2 while qualifierId[i] do rowformat = rowformat .. ", $" .. i i = i + 1 end rowformat = rowformat .. ")" elseif mw.ustring.find(rowformat, "^[*#]") then parameters.separator = "</li><li>" parameters.conjunction = "</li><li>" if mw.ustring.match(rowformat, "^[*#]") == "*" then preformat = "<ul><li>" postformat = "</li></ul>" else preformat = "<ol><li>" postformat = "</li></ol>" end rowformat = mw.ustring.gsub(rowformat, "^[*#] ?", "") end -- set whitelist and blacklist values whitelist, blacklist, ignorevalue, selectvalue = setWhiteOrBlackList(#qualifierId, args) local next = next if next(whitelist) ~= nil then whitelisted = true end end -- set feminine case if gender is requested local itemgender = args.itemgender local idgender if itemgender then if string.match(itemgender, "^P%d+$") then local snak_id = getSnak(mw.wikibase.getBestStatements(parameters.id, itemgender), {1, "mainsnak", "datavalue", "value", "id"}) if snak_id then idgender = snak_id end elseif string.match(itemgender, "^Q%d+$") then idgender = itemgender end end local gender_requested = false if parameters.case == "gender" or idgender then gender_requested = true elseif parameters.formatting == "table" then for i=0, #qualifierId do if args["case" .. i] and args["case" .. i] == "gender" then gender_requested = true break end end end if gender_requested then if feminineGender(idgender or parameters.id) then parameters.gender = "feminineform" end end -- get initial sort indices local sortindices = {} for idx in pairs(claims) do sortindices[#sortindices + 1] = idx end -- sort by claim rank local comparator = function(a, b) local rankmap = { deprecated = 2, normal = 1, preferred = 0 } local ranka = rankmap[claims[a].rank or "normal"] .. string.format("%08d", a) local rankb = rankmap[claims[b].rank or "normal"] .. string.format("%08d", b) return ranka < rankb end table.sort(sortindices, comparator) local result, result2, result_query local error if parameters.list or parameters.formatting == "table" then -- convert LF to line feed, <br /> may not work on some cases parameters.separator = parameters.separator == "LF" and "\010" or parameters.separator parameters.conjunction = parameters.conjunction == "LF" and "\010" or parameters.conjunction -- i18n separators parameters.separator = parameters.separator or mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain() parameters.conjunction = parameters.conjunction or (mw.message.new('And'):inLanguage(parameters.lang[1]):plain() .. mw.message.new('Word-separator'):inLanguage(parameters.lang[1]):plain()) -- iterate over all elements and return their value (if existing) local value, valueq local sortkey, sortkeyq local values = {} local sortkeys = {} local refs = {} local rowlist = {} -- rows to list with whitelist or blacklist for idx in pairs(claims) do local claim = claims[sortindices[idx]] local reference = {} if not whitelisted then rowlist[idx] = true end if parameters.formatting == "table" then local params = tableParameters(args, parameters, "0") value, sortkey, error = getValueOfClaim(claim, nil, params) if value then values[#values + 1] = {} sortkeys[#sortkeys + 1] = {} refs[#refs + 1] = {} if whitelist["0"] or blacklist["0"] then local valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=params.lang}) if whitelist["0"] and whitelist["0"][valueraw or ""] then rowlist[#values] = true elseif blacklist["0"] and blacklist["0"][valueraw or ""] then rowlist[#values] = false end end for i, qual in ipairs(qualifierId) do local j = tostring(i) params = tableParameters(args, parameters, j) local valueq, sortkeyq, valueraw if qual == parameters.property then -- hack for getting the property with another formatting, i.e. colformat1=raw valueq, sortkeyq, _ = getValueOfClaim(claim, nil, params) else for q in mw.text.gsplit(qual, '%s*OR%s*') do if string.find(q, ".+/.+") then valueq, sortkeyq, valueraw = getValueOfParentClaim(claim, q, params) elseif string.find(q, "^/.+") then local claim2 = getStatements(parameters.id, string.sub(q, 2), bestrank) if #claim2 > 0 then -- only first value of a property as alternative to a qualifier -- multiple values may not be related to a given raw of the table valueq, sortkeyq, _ = getValueOfClaim(claim2[1], nil, params) end else valueq, sortkeyq, _ = getValueOfClaim(claim, q, params) end if valueq then qual = q break end end end values[#values]["col" .. j] = valueq sortkeys[#sortkeys]["col" .. j] = sortkeyq or valueq if whitelist[j] or blacklist[j] or ignorevalue[j] or selectvalue[j] then valueq = valueraw or getValueOfClaim(claim, qual, {["formatting"]="raw", ["lang"]=params.lang}) if whitelist[j] and whitelist[j][valueq or ""] then rowlist[#values] = true elseif blacklist[j] and blacklist[j][valueq or ""] then rowlist[#values] = false elseif ignorevalue[j] and ignorevalue[j][valueq or ""] then values[#values]["col" .. j] = nil elseif selectvalue[j] and not selectvalue[j][valueq or ""] then values[#values]["col" .. j] = nil end end end end else value, sortkey, error = getValueOfClaim(claim, qualifierId[1], parameters) values[#values + 1] = {} sortkeys[#sortkeys + 1] = {} refs[#refs + 1] = {} end if not value and showerrors then value = error end if value then if (parameters.references or parameters.onlysourced) and claim.references then reference = claim.references end refs[#refs]["col0"] = reference values[#values]["col0"] = value sortkeys[#sortkeys]["col0"] = sortkey or value end end -- sort and format results sortindices = {} for idx in pairs(values) do sortindices[#sortindices + 1] = idx end if sorting_col then local sorting_table = mw.text.split(sorting_col, '%D+') local comparator = function(a, b) local valuea, valueb local i = 1 while valuea == valueb and i <= #sorting_table do valuea = sortkeys[a]["col" .. sorting_table[i]] or '' valueb = sortkeys[b]["col" .. sorting_table[i]] or '' i = i + 1 end if sorting_up then return valueb > valuea end return valueb < valuea end table.sort(sortindices, comparator) end local maxvals = tonumber(parameters.listmax) result = {} for idx in pairs(values) do local valuerow = values[sortindices[idx]] local reference, valid_ref = getReferences({["references"] = refs[sortindices[idx]]["col0"]}, parameters) value = valuerow["col0"] if parameters.formatting == "table" then if not rowlist[sortindices[idx]] then value = nil else local rowformatting = rowformat .. "$" -- fake end character added for easy gsub value = mw.ustring.gsub(rowformatting, "$0", {["$0"] = value}) value = mw.ustring.gsub(value, "$R0", reference) -- add reference for i, _ in ipairs(qualifierId) do local valueq = valuerow["col" .. i] if args["rowsubformat" .. i] and isSet(valueq) then -- add fake end character $ -- gsub $i not followed by a number so $1 doesn't match $10, $11... -- remove fake end character valueq = captureEscapes(valueq) valueq = mw.ustring.gsub(args["rowsubformat" .. i] .. "$", "$" .. i .. "(%D)", valueq .. "%1") valueq = string.sub(valueq, 1, -2) rowformatting = mw.ustring.gsub(rowformatting, "$" .. i .. "(%D)", args["rowsubformat" .. i] .. "%1") end valueq = valueq and captureEscapes(valueq) or '' value = mw.ustring.gsub(value, "$" .. i .. "(%D)", valueq .. "%1") end value = string.sub(value, 1, -2) -- remove fake end character value = expandBraces(value, rowformatting) end elseif value then value = expandBraces(value, parameters.formatting) value = value .. reference end if isSet(value) and (not parameters.onlysourced or (parameters.onlysourced and valid_ref)) then result[#result + 1] = value if not parameters.list or (maxvals and maxvals == #result) then break end end end if args.query == 'num' then result_query = #result end if #result > 0 then if parameters.formatting == 'table' then result = addEditIconTable(result, parameters) -- in a table, add edit icon on last element end result = preformat .. mw.text.listToText(result, parameters.separator, parameters.conjunction) .. postformat else result = '' end else -- return first element local claim = claims[sortindices[1]] result, result2, error = getValueOfClaim(claim, qualifierId[1], parameters) if result then local ref, valid_ref = getReferences(claim, parameters) if parameters.onlysourced and valid_ref == false then result = nil else result = result .. ref end end if args.query == 'num' then result_query = result and 1 or 0 end end if isSet(result) then if not (parameters.formatting == 'table' or (result2 and result2 == 'no-icon')) then -- add edit icon, except table added previously and except explicit no-icon internal flag result = result .. addEditIcon(parameters) end else if showerrors then result = error else result = default or '' end end if args.query == 'untranslated' and required and not is_sandbox then result_query = untranslated end return result, result_query or '' end -- Local functions for getParentValues ----------------------- local function uc_first(word) if word == nil then return end return mw.ustring.upper(mw.ustring.sub(word, 1, 1)) .. mw.ustring.sub(word, 2) end local function getPropertyValue(id, property, parameter, langs, labelicon, case) local snaks = mw.wikibase.getBestStatements(id, property) local mysnak = getSnak(snaks, {1, "mainsnak"}) if mysnak == nil then return end local entity_id local result = '-' -- default for 'no value' if mysnak.datavalue then entity_id = "Q" .. tostring(mysnak.datavalue.value['numeric-id']) result, _ = getSnakValue(mysnak, {formatting=parameter, lang=langs, labelicon=labelicon, case=case}) end return entity_id, result end local function getParentObjects(id, prop_format, label_format, languages, propertySupString, propertyLabel, propertyLink, label_show, labelicon0, labelicon1, upto_number, upto_label, upto_value, last_only, grammatical_case, include_self) local propertySups = mw.text.split(propertySupString, '[^P%d]') local maxloop = 10 if upto_number then maxloop = tonumber(upto_number) elseif next(upto_label) or next(upto_value) then maxloop = 50 end local labels_filter = next(label_show) local result = {} local id_value = id for iter = 1, maxloop do local link, label, labelwicon, linktext, id_label for _, propertySup in pairs(propertySups) do local _id_value, _link = getPropertyValue(id_value, propertySup, prop_format, languages, labelicon1, grammatical_case) if _id_value and _link then id_value = _id_value; link = _link break end end if not id_value or not link then break end if propertyLink then _, linktext = getPropertyValue(id_value, propertyLink, "label", languages) if linktext then link = mw.ustring.gsub(link, "%[%[(.*)%|.+%]%]", "[[%1|" .. linktext .. "]]") end end id_label, label = getPropertyValue(id_value, propertyLabel, label_format, languages, false, "infoboxlabel") if labelicon0 then _, labelwicon = getPropertyValue(id_value, propertyLabel, label_format, languages, labelicon0, "infoboxlabel") else labelwicon = label end if labels_filter == nil or (label_show[id_label] or label_show[label]) then result[#result + 1] = {labelwicon, link} label_show[id_label or 'none'], label_show[label or 'none'] = nil, nil -- only first label found end if upto_label[id_label] or upto_label[label] or upto_value[id_value] then break end end if last_only then result = {result[#result]} end if include_self then local label_self, link_self _, label_self = getPropertyValue(id, propertyLabel, label_format, languages, labelicon0, "infoboxlabel") link_self, _ = getLabelByLangs(id, languages) table.insert(result, 1, {label_self, link_self}) end return result end local function parentObjectsToString(result, rowformat, cascade, sorting) local ret = {} local first = 1 local last = #result local iter = 1 if sorting == "-1" then first = #result; last = 1; iter = -1 end for i = first, last, iter do local rowtext = mw.ustring.gsub(rowformat, "$[01]", {["$0"] = result[i][1], ["$1"] = result[i][2]}) ret[#ret + 1] = expandBraces(rowtext, rowformat) end if cascade then local direction = mw.language.new(wiki.langcode):isRTL() and "right" or "left" local suffix = "" for i = 1, #ret do ret[i] = '<ul style="line-height:100%; margin-' .. direction .. ':0.45em; padding-' .. direction .. ':0;"><li>' .. ret[i] suffix = suffix .. '</li></ul>' end ret[#ret] = ret[#ret] .. suffix end return ret end -- Returns pairs of parent label and property value fetching a recursive tree function p.getParentValues(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} if not required and isSet(pargs.sandbox) then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getParentValues(frame) end local id = getEntityId(args, pargs) if id == nil then return end local languages = findLang(args.lang) local propertySup = getArg(args.property, "P131") --administrative entity local propertyLabel = getArg(args.label, "P31") --instance local propertyLink = getArg(args.valuetext) local property_format = getArg(args.formatting) local label_format = getArg(args.labelformat, "label") local upto_number = getArg(args.upto) local last_only = getArg(args.last_only, false) local editicon, labelicon = setIcons(args.editicon, pargs.editicon) local include_self = getArg(args.include_self, false) local case = getArg(args.case) local upto_label = {} for q in string.gmatch(args.uptolabelid or '', 'Q%d+') do upto_label[q] = true end if type(upto_number) == 'string' then upto_label[uc_first(upto_number)] = true upto_number = nil require(wiki.module_title .. '/debug').track('upto') -- replace upto by uptolabelid end local upto_value = {} for q in string.gmatch(args.uptovalueid or args.uptolinkid or '', 'Q%d+') do upto_value[q] = true end local label_show = {} for q in string.gmatch(args.showlabelid or '', 'Q%d+') do label_show[q] = true end for _, v in ipairs(mw.text.split(args.labelshow or '', "/")) do if v ~= '' then label_show[uc_first(v)] = true require(wiki.module_title .. '/debug').track('labelshow') -- replace labelshow by showlabelid end end local rowformat = args.rowformat; if not isSet(rowformat) then rowformat = "$0 = $1" end local labelicon0, labelicon1 = labelicon, labelicon if string.find(label_format, '{{.*$0.*}}') or (string.find(rowformat, '{{.*$0.*}}') and label_format ~= 'raw') then labelicon0 = false end local result = getParentObjects(id, property_format, label_format, languages, propertySup, propertyLabel, propertyLink, label_show, labelicon0, labelicon1, upto_number, upto_label, upto_value, last_only, case, include_self) if #result == 0 then return end local separator = args.separator; if not isSet(separator) then separator = "<br />" end local sorting = args.sorting; if sorting == "" then sorting = nil end local cascade = (args.cascade == "true" or args.cascade == "yes") local ret = parentObjectsToString(result, rowformat, cascade, sorting) ret = addEditIconTable(ret, {property=propertySup, editicon=editicon, id=id, lang=languages}) return mw.text.listToText(ret, separator, separator) end -- Link with a parent label -------------------- function p.linkWithParentLabel(frame) local pargs = frame.args and frame:getParent().args or {} if not required and isSet(pargs.sandbox) then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).linkWithParentLabel(frame) end local args = {} if frame.args then for k, v in pairs(frame.args) do -- metatable args[k] = v end else args = frame -- via require end if isSet(args.value) then return args.value end -- get id value of property/qualifier local largs = mw.clone(args) largs.list = tonumber(args.list) and args.list or true largs.formatting = "raw" largs.separator = "/·/" largs.editicon = false local items_list, _ = p.claim(largs) if not isSet(items_list) then return end local items_table = mw.text.split(items_list, "/·/", true) -- get internal link of property/qualifier largs.formatting = "internallink" local link_list, _ = p.claim(largs) local link_table = mw.text.split(link_list, "/·/", true) -- get label of parent property local parent_claim = getSnak(getStatements(items_table[1], args.parent, true), {1, "mainsnak", "datatype"}) if parent_claim == 'monolingualtext' then largs.formatting = nil largs.list = 'lang' else largs.formatting = "label" largs.list = false end largs.property = args.parent largs.qualifier = nil for i, v in ipairs(items_table) do largs.item = v local link_label, _ = p.claim(largs) if isSet(link_label) then link_table[i] = mw.ustring.gsub(link_table[i] or '', "%[%[(.*)%|.+%]%]", "[[%1|" .. link_label .. "]]") end end args.editicon, _ = setIcons(args.editicon, pargs.editicon) args.id = getEntityId(args, pargs) args.lang = findLang(args.lang) return mw.text.listToText(link_table) .. addEditIcon(args) end -- Calculate number of years old ---------------------------- function p.yearsOld(frame) if not required and frame.args and isSet(frame:getParent().args.sandbox) then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).yearsOld(frame) end local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local id = getEntityId(args, pargs) if id == nil then return end local lang = mw.language.new('en') local function getBestValue(id, prop) return getSnak(mw.wikibase.getBestStatements(id, prop), {1, "mainsnak", "datavalue", "value"}) end local birth = getBestValue(id, 'P569') if type(birth) ~= 'table' or birth.time == nil or birth.precision == nil or birth.precision < 8 then return end local death = getBestValue(id, 'P570') if type(death) ~= 'table' or death.time == nil or death.precision == nil then death = {['time'] = lang:formatDate('c'), ['precision'] = 11} -- current date elseif death.precision < 8 then return end local dates = {} dates[1] = {['min'] = {}, ['max'] = {}, ['precision'] = birth.precision} dates[1].min.year = tonumber(mw.ustring.match(birth.time, "^[+-]?%d+")) dates[1].min.month = tonumber(mw.ustring.match(birth.time, "\-(%d%d)\-")) dates[1].min.day = tonumber(mw.ustring.match(birth.time, "\-(%d%d)T")) dates[1].max = mw.clone(dates[1].min) dates[2] = {['min'] = {}, ['max'] = {}, ['precision'] = death.precision} dates[2].min.year = tonumber(mw.ustring.match(death.time, "^[+-]?%d+")) dates[2].min.month = tonumber(mw.ustring.match(death.time, "\-(%d%d)\-")) dates[2].min.day = tonumber(mw.ustring.match(death.time, "\-(%d%d)T")) dates[2].max = mw.clone(dates[2].min) for i, d in ipairs(dates) do if d.precision == 10 then -- month d.min.day = 1 local timestamp = string.format("%04d", tostring(math.abs(d.max.year))) .. string.format("%02d", tostring(d.max.month)) .. "01" d.max.day = tonumber(lang:formatDate("j", timestamp .. " + 1 month - 1 day")) elseif d.precision < 10 then -- year or decade d.min.day = 1 d.min.month = 1 d.max.day = 31 d.max.month = 12 if d.precision == 8 then -- decade d.max.year = d.max.year + 9 end end end local function age(d1, d2) local years = d2.year - d1.year if d2.month < d1.month or (d2.month == d1.month and d2.day < d1.day) then years = years - 1 end if d2.year > 0 and d1.year < 0 then years = years - 1 -- no year 0 end return years end local old_min = age(dates[1].max, dates[2].min) local old_max = age(dates[1].min, dates[2].max) local old, old_expr if old_min == 0 and old_max == 0 then old = "< 1" old_max = 1 -- expression in singular elseif old_min == old_max then old = old_min else old = old_min .. "/" .. old_max end if args.formatting == 'unit' then local langs = findLang(args.lang) local yo local yo_pl = {} if langs[1] == wiki.langcode then yo_pl = i18n["years-old"] end if not isSet(yo_pl[2]) then local yo_label, _ = getLabelByLangs('Q24564698', langs) yo_pl = {yo_label, yo_label} end yo = mw.language.new(langs[1]):plural(old_max, yo_pl) if mw.ustring.find(yo, '$1', 1, true) then old_expr = mw.ustring.gsub(yo, "$1", old) else old_expr = old .. '&nbsp;' .. yo end elseif args.formatting then old_expr = expandBraces(mw.ustring.gsub(args.formatting, '$1', old), args.formatting) else old_expr = old end return old_expr end -- Gets a label in a given language (content language by default) or its fallbacks, optionnally linked. function p.getLabel(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} if not required and isSet(pargs.sandbox) then return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getLabel(frame) end local id = getEntityId(args, pargs, 1) if id == nil then return end local languages = findLang(args.lang) local labelicon = false if mw.wikibase.isValidEntityId(id) then _, labelicon = setIcons(args.editicon, pargs.editicon) end local label_icon = '' local label, lang if args.label then label = args.label else -- exceptions or labels fixed local exist, labels = pcall(require, wiki.module_title .. "/labels" .. (languages[1] == wiki.langcode and '' or '/' .. languages[1])) if exist and labels.infoboxLabelsFromId and next(labels.infoboxLabelsFromId) ~= nil then label = labels.infoboxLabelsFromId[id] end if label == nil then label, lang = getLabelByLangs(id, languages) if label then if isSet(args.itemgender) and feminineGender(args.itemgender) then label = feminineForm(id, lang) or label end label = mw.language.new(lang):ucfirst(mw.text.nowiki(label)) -- sanitize if args.case then label = case(args.case, label, lang) end end label_icon = addLabelIcon(id, lang, languages[1], labelicon) end end local linked = args.linked local ret2 = required and untranslated or '' if isSet(linked) and linked ~= "no" then local article = mw.wikibase.getSitelink(id) or ("d:Special:EntityPage/" .. id) return "[[" .. article .. "|" .. (label or id) .. "]]" .. label_icon, ret2 else return (label or id) .. label_icon, ret2 end end -- Utilities ----------------------------- -- See also module ../debug. -- Copied from Module:Wikibase function p.getSiteLink(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local id = getEntityId(args, pargs, 1) if id == nil then return end return mw.wikibase.getSitelink(id, mw.text.trim(args[2] or '')) end -- Helper function for the default language code used function p.lang(frame) local lang = frame and frame.args[1] -- nil via require return findLang(lang)[1] end -- Number of statements function p.numStatements(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local id = getEntityId(args, pargs) if id == nil then return 0 end local prop = mw.text.trim(args[1] or '') local num = {} if not isSet(prop) then local largs = {} for k, v in pairs(pargs) do largs[k] = v end for k, v in pairs(args) do largs[k] = v end largs.query = 'num' _, num = p.claim(largs) return num elseif args[2] then -- qualifier local qual = mw.text.trim(args[2]) local values = p.claim{item=id, property=prop, qualifier=qual, formatting='raw', separator='/·/'} if values then num = mw.text.split(values, '/·/') end else num = mw.wikibase.getBestStatements(id, prop) end return #num end -- Returns true if property datavalue is found excluding novalue/somevalue function p.validProperty(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local item = getEntityId(args, pargs) if item == nil then return end local property = mw.text.trim(args[1]) local prop_data = getSnak(mw.wikibase.getBestStatements(item, property), {1, "mainsnak", "datavalue"}) return prop_data and true or nil end function p.editAtWikidata(frame) local args = frame.args or frame -- via invoke or require local pargs = frame.args and frame:getParent().args or {} local value = isSet(args[1]) if value then return end local param = {} param.id = getEntityId(args, pargs) param.property = args.property param.lang = findLang(args.lang) param.editicon, _ = setIcons(args.editicon) return addEditIcon(param) end function p.formatNum(frame) local num = tonumber(mw.text.trim(frame.args[1])) local lang = findLang(mw.text.trim(frame.args[2])) return mw.language.new(lang[1]):formatNum(num) end return p m787mvygesscatm5jx8j9wclgb2rkcq Spriocanna Forbartha Inbhuanaithe 0 95664 1329028 1328933 2026-10-01T16:08:49Z Marcas.oduinn 33120 /* Tagairtí */ Nasc 1329028 wikitext text/x-wiki [[Íomhá:Flag of the United Nations.svg| mion | deis | 200px | Beartas a bunaíodh de chuid na Náisiúin Aontaithe siad na Spriocanna Forbartha Inbhuanaithe a bheidh i bhfeidhm suas go dtí 2030]] [[Íomhá:Spriocanna Forbartha Inbhuanaithe ag na Náisiúin Aontaithe.jpg | mion | deis | 300px | Spriocanna Forbartha Inbhuanaithe ag na Náisiúin Aontaithe]] Is bailiúcháin de 17 mór spriocanna ag [[na Náisiúin Aontaithe]] iad na '''Spriocanna Forbartha Inbhuanaithe''' nó '''Spriocanna Forbartha''' (Béarla: ''Sustainable Development Goals'' nó ''Global Goals''). Tháinig na spriocanna i bhfeidhm in 2015 agus beidh siad i bhfeidhm suas go dtí 2030. Tá 169 fóspriocanna i bhfeidhm laistigh de na 17 mór spriocanna freisin. Roimh na spriocanna seo a bheith i bhfeidhm ag na NA bhí na [[Spriocanna Forbartha na Mílaoise]] (Millennium Development Goals) i bhfeidhm idir 2000 agus 2015. Tá a lán eagraíochtaí eile a oibríonn leis na Náisiúin Aontaithe timpeall na cruinne an-dáiríre faoi na spriocanna seo a bhaint amach. Tá comhcheangal in Éirinn darb ainm [[Coalition 2030]] atá mar ngréasán do heagraíochtaí, grúpaí agus gníomhairí in Éirinn bainteach leis na spriocanna seo. Cuireann eagraíochaí leithéídí [[Cúnamh Éireann]]<ref name=irishaid /> (Irish Aid) agus [[Dóchas]]<ref name=dochas /> tábhachtach mhór ar chur i bhfeidhm na spriocanna freisin agus bíonn eagraíochtaí agus gníomhairí áirithe timpeall na cruinne i gcónaí ag iarraidh aird a tharraingt ar na spriocanna ó thaobh an leibhéal rialtas de sna tíortha a gceapfar nach bhfuil aird ar leith ar na spriocanna. Is iad na spriocanna ná:<ref name=páipéar2026 /> * '''Sprioc 1''' – Deireadh a chur le gach cineál bochtaineachta gach áit. * '''Sprioc 2''' – Deireadh a chur le hocras; slándáil bia chomh maith le cothú níos fearr a bhaint amach; agus talmhaíocht inbhuanaithe a chur chun cinn. * '''Sprioc 3''' - Maireachtáil fholláin a dheimhniú agus folláine a chur chun cinn do chách ag gach aois. * '''Sprioc 4''' – Oideachas d’ardchaighdeán atá cuimsitheach agus cothrom a dheimhniú agus deiseanna foghlama ar feadh an tsaoil a chur chun cinn do chách. * '''Sprioc 5''' – Comhionannas inscne a bhaint amach agus mná agus cailíní a chumasú. * '''Sprioc 6''' – Fáil ar uisce agus bainistiú inbhuanaithe ar uisce agus ar shláintíocht a dheimhniú do chách. * '''Sprioc 7''' – Rochtain ar fhuinneamh inacmhainne, iontaofa, inbhuanaithe agus nua-aimseartha a dheimhniú do chách. * '''Sprioc 8''' – Fás geilleagrach marthanach, cuimsitheach, inbhuanaithe, lánfhostaíocht tháirgiúil agus obair chuibhiúil do chách a chur chun cinn. * '''Sprioc 9''' - Bonneagar marthanach a thógáil; tionsclaíocht chuimsitheach, inbhuanaithe a chur chun cinn; agus nuálaíocht a chothú. * '''Sprioc 10''' – Neamhionannas laistigh agus idir thíortha a mhaolú. * '''Sprioc 11''' – Cathracha agus lonnaíochtaí daonna a dhéanamh cuimsitheach, sábháilte, marthanach agus inbhuanaithe. * '''Sprioc 12''' – Patrúin inbhuanaithe tomhaltais agus táirgeachta a dheimhniú. * '''Sprioc 13''' – Gníomhú go práinneach chun dul i ngleic leis an athrú aeráide agus a thionchar. * '''Sprioc 14''' – Na haigéin, na farraigí agus na hacmhainní mara a chaomhnú agus a úsáid ar son forbartha inbhuanaithe. * '''Sprioc 15''' – Éiceachórais talún a chosaint agus a athshlánú agus a n-úsáid inbhuanaithe a chur chun cinn; foraoisí a bhainistiú ar mhodh inbhuanaithe; dul i ngleic le fairsingiú fásaigh; díghrádú talún a stopadh agus a aisiompú agus deireadh a chur le cailliúint bithéagsúlachta. * '''Sprioc 16''' – Sochaithe síochánta cuimsitheacha a chur chun cinn ar mhaithe le [[forbairt inbhuanaithe]]; rochtain ar cheart a sholáthar do chách; agus institiúidí atá éifeachtach, cuntasach agus cuimsitheach a thógáil ag gach leibhéal. * '''Sprioc 17''' – Na modhanna feidhmithe a neartú agus an chomhpháirtíocht dhomhanda um fhorbairt inbhuanaithe a athbheochan. == Féach freisin == * [[Forbairt inbhuanaithe]] * [[An Roinn Gnóthaí Eachtracha agus Trádála]] * [[Cúnamh Éireann (gníomhaireacht stáit forbartha idirnáisiúnta)]] Irish Aid. * [[Dóchas - An Scátheagras Éireannach d'Eagraíochtaí Forbartha Neamhrialtasacha]] == Naisc sheachtracha == * [https://www.cso.ie/en/baile/staitistici/sfi-eire/ Spriocanna Forbartha Inbhuanaithe na hÉireann] ag [[Príomh-Oifig Staidrimh na hÉireann]] == Tagairtí == {{reflist | refs = <ref name=irishaid>{{lua idirlín | url = https://www.irishaid.ie/ie/maidir-linne/beartas-na-heireann-um-fhorbairt-idirnaisunta/maidirleisanmbeartasnua/ | teideal = Domhan Níos Fearr / A Better World | foilsitheoir = Cúnamh Éireann}}</ref> <!--ref name=dochas> https://dochas.ie/sites/default/files/Gach-eolas-a-theastaigh-uait-maidir-leis-na-%E2%80%9CSpriocanna-Forbartha-Inbhuanaithe%E2%80%9D-ach-go-raibh-fait%C3%ADos-ort-a-iarraidh.pdf|teideal={{Dead link|date=Deireadh Fómhair 2022 |bot=InternetArchiveBot |fix-attempted=yes }} Gach eolas a theastaigh uait maidir leis na “Spriocanna Forbartha Inbhuanaithe” ach go raibh faitíos ort a iarraidh - Dóchas</ref--> <ref name=dochas>{{lua idirlín | url = https://dochas.ie/about/ | teideal = Who we are and what we do | foilsitheoir = Dóchas | dátarochtana = 2026-09-30}}</ref> <ref name=páipéar2026>{{lua idirlín | url = https://anpáipéar.ie/2026/09/ardan-gaeilge-curtha-ar-fail-ag-an-bpriomh-oifig-staidrimh-faoi-spriocanna-forbartha-inbhuanaithe-na-heireann/ | teideal = Ardán Gaeilge curtha ar fáil ag an bPríomh-Oifig Staidrimh faoi spriocanna forbartha inbhuanaithe na hÉireann | foilsitheoir = [[An Páipéar]] | dátarochtana = 2026-09-30}}</ref> }} [[Catagóir:Náisiúin Aontaithe]] [[Catagóir:Forbairt inbhuanaithe]] 154bbbwlq8joxh2np9vp0txc970d1ka Olivia Rodrigo 0 100466 1329033 1323295 2026-10-01T17:40:28Z Niegodzisie 38284 /* Dioscliosta */ 1329033 wikitext text/x-wiki {{WD Bosca Sonraí Duine}} Is [[amhránaí]] agus [[aisteoir]] [[Meiriceánach]] í '''Olivia Isabel Rodrigo''' (rugadh í ar an [[20 Feabhra]], [[2003]]). == Dioscliosta == * [[Sour (albam)|Sour]] (2021) * [[Guts (albam Olivia Rodrigo)|Guts]] (2023) * You Seem Pretty Sad for a Girl So in Love (2026) == Scannánliosta == {| class="wikitable plainrowheaders sortable" |+ ! Bliain ! Teideal ! Ról ! class="unsortable"| Nótaí eile |- ! scope="row" | 2015 | ''[[An American Girl: Grace Stirs Up Success]]'' | Grace Thomas | |- ! scope="row" | 2016–2019 | ''[[Bizaardvark]]'' | Paige Olvera | Príomhcharachtar |- ! scope="row" | 2017 | ''[[New Girl]]'' | Terrinea | Eipeasóid: "Young Adult" |- ! scope="row" | 2019–inniu | ''[[High School Musical: The Musical: The Series]]'' | Nini Salazar-Roberts | Príomhcharachtar |- ! scope="row" | 2021 | ''[[Saturday Night Live]]'' | Féin | Eipeasóid: "[[Keegan-Michael Key]]/Olivia Rodrigo" |- ! scope="row" | 2021 | ''Sour Prom'' | Féin | Scannán ceolchoirm |- ! scope="row" | 2022 | ''[[Olivia Rodrigo: Driving Home 2 U]]'' | Féin | Scannán faisnéise |- |} == Tagairtí == {{reflist}} == Naisc sheachtracha == *[https://www.oliviarodrigo.com/ Suíomh oifigiúil] *[https://www.imdb.com/name/nm7111120/ Olivia Rodrigo] ar [[IMDb]] {{DEFAULTSORT:Rodrigo, Olivia}} [[Catagóir:Daoine a rugadh in 2003]] [[Catagóir:Ban-aisteoirí Meiriceánacha]] [[Catagóir:Amhránaithe Meiriceánacha]] [[Catagóir:Daoine beo]] [[Catagóir:Meiriceánaigh de bhunadh na hÉireann]] hcwb6u9q81porx4q6b380nmlz4b1k6h Teimpléad:Liosta fillte 10 100574 1329038 1329008 2026-10-01T20:23:35Z Alison 570 Yikes! Botún! 1329038 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:collapsible list|main}}<noinclude> {{Doiciméadú}} </noinclude> n60sl4nifnlkv7lsvj1un137emgixn1 Charles Lamb (péintéir) 0 110165 1329034 1290851 2026-10-01T18:07:10Z TGcoa 21229 1329034 wikitext text/x-wiki {{WD Bosca Sonraí Duine}}Ealaíontóir mór le rá as Éireann ba ea '''Charles Lamb''' ((30 Lúnasa 1893 – 15 Nollaig 1964) ) a tharraing pictiúir go leor de shaol na hÉireann agus de thírdhreach agus muintir [[Conamara|Chonamara]].<ref name=":0">{{Lua idirlín|url=https://tuairisc.ie/sceal-mary-lamb-as-an-gceathru-rua-le-craoladh-ar-rte-anocht/|teideal=Scéal Mary Lamb as an gCeathrú Rua le craoladh ar RTÉ anocht|dáta=2023-10-12|language=ga-IE|work=Tuairisc.ie|dátarochtana=2023-10-12}}</ref><ref>{{Luaigh foilseachán|title=Oidhreacht Lamb / Cartlann Ghaeltacht Chonamara,|url=http://amuigh.ie/items/show/440|date=2004|language=ga-IE|author=Maire Ní Chualáin ar amuigh.ie}} {{Webarchive|url=https://web.archive.org/web/20250221203630/http://amuigh.ie/items/show/440 |date=2025-02-21 }}</ref> [[Íomhá:AnCheathruRua.jpg|clé|mion|Bhí Lamb ina chónaí ar an mBóthar Buí ar an g[[An Cheathrú Rua|Ceathrú Rua]] ó na tríochaidí go dtí 1964 agus baineann riar mhaith dá shaothar ealaíne le Conamara - daoine agus radharcanna ón gceantar. .<ref name=":1">{{Lua idirlín|url=http://www.beo.ie/alt-an-cheathru-rua.aspx|teideal=An Cheathrú Rua|údar=Rónán Mac Con Iomaire|dáta=Meitheamh 2003|language=ga-IE|work=Beo!|dátarochtana=2023-10-12}}</ref>|220x220px]] == Saol == Ba as [[Port an Dúnáin]] Charles Lamb agus ba é an t-údar [[Pádraic Ó Conaire]] a mhol dó a aghaidh a thabhairt ar Chonamara. Tamaill níos déanaí, thit Lamb faoi dhraíocht ag Conamara agus rinne sé pictiúir dhraíochta den cheantar. Bhí Lamb ina chónaí ar an g[[An Cheathrú Rua|Ceathrú Rua]] ó na tríochaidí go dtí gur cailleadh é i 1964.<ref name=":1" /> Ceannródaí ab ea a bhean, Catherine Hueffer Lamb a bhí ar an gcéad bhean a cháiligh ina [[tréidlia]] – an t-aon bhean a bhí sa rang (ba é an scríbhneoir [[Ford Madox Ford]] a hathair).<ref name=":0" /> Mac le Charles Lamb ba ea [[Peadar Lamb]], duine de mhór[[aisteoir]]í na h[[Éire|Éireann]]. == Saothar == Díoladh sa bhliain 2017, ar €2,500, saothar le Lamb ina bhfuil radharc de chósta Chonamara – 'Coastal Landscape – Carraroe'.<ref>{{Lua idirlín|url=https://tuairisc.ie/pictiuir-le-jack-b-yeats-de-shaor-bad-as-carna-gan-diol-ag-ceant-i-ach-loch-i-gcorca-dhuibhne-le-paul-henry-ceannaithe/|teideal=Pictiúir le Jack B Yeats de shaor bád as Carna gan díol ag ceant, ach ‘loch’ i gCorca Dhuibhne le Paul Henry ceannaithe|údar=Maitiú Ó Coimín|dáta=23 Samhain 2017|language=ga-IE|work=Tuairisc.ie|dátarochtana=2026-10-01}}</ref> == Féach freisin == * [[Charles Lamb (scríbhneoir aistí)]] * [[Peadar Lamb]], aisteoir * Ealaíontóirí [[Pádraic Reaney]], [[Paul Henry (ealaíontóir)|Paul Henry]] agus [[Daniel O'Neill]] == Tagairtí == {{reflist}}{{DEFAULTSORT:Lamb, Charles}} [[Catagóir:Péintéirí Éireannacha]] [[Catagóir:Conamara]] [[Catagóir:Daoine a rugadh i 1893]] [[Catagóir:Básanna i 1964]] [[Catagóir:An Cheathrú Rua]] qhc3o9szfwypqr4vtvlc1vsib1bd87k 1329035 1329034 2026-10-01T18:09:01Z TGcoa 21229 1329035 wikitext text/x-wiki {{WD Bosca Sonraí Duine}}Ealaíontóir mór le rá as [[Contae Ard Mhacha]] ba ea '''Charles Lamb''' ((30 Lúnasa 1893 – 15 Nollaig 1964) ) a tharraing pictiúir go leor de shaol na hÉireann agus de thírdhreach agus muintir [[Conamara|Chonamara]].<ref name=":0">{{Lua idirlín|url=https://tuairisc.ie/sceal-mary-lamb-as-an-gceathru-rua-le-craoladh-ar-rte-anocht/|teideal=Scéal Mary Lamb as an gCeathrú Rua le craoladh ar RTÉ anocht|dáta=2023-10-12|language=ga-IE|work=Tuairisc.ie|dátarochtana=2023-10-12}}</ref><ref>{{Luaigh foilseachán|title=Oidhreacht Lamb / Cartlann Ghaeltacht Chonamara,|url=http://amuigh.ie/items/show/440|date=2004|language=ga-IE|author=Maire Ní Chualáin ar amuigh.ie}} {{Webarchive|url=https://web.archive.org/web/20250221203630/http://amuigh.ie/items/show/440 |date=2025-02-21 }}</ref> [[Íomhá:AnCheathruRua.jpg|clé|mion|Bhí Lamb ina chónaí ar an mBóthar Buí ar an g[[An Cheathrú Rua|Ceathrú Rua]] ó na tríochaidí go dtí 1964 agus baineann riar mhaith dá shaothar ealaíne le Conamara - daoine agus radharcanna ón gceantar. .<ref name=":1">{{Lua idirlín|url=http://www.beo.ie/alt-an-cheathru-rua.aspx|teideal=An Cheathrú Rua|údar=Rónán Mac Con Iomaire|dáta=Meitheamh 2003|language=ga-IE|work=Beo!|dátarochtana=2023-10-12}}</ref>|220x220px]] == Saol == Ba as [[Port an Dúnáin]] Charles Lamb agus ba é an t-údar [[Pádraic Ó Conaire]] a mhol dó a aghaidh a thabhairt ar Chonamara. Tamaill níos déanaí, thit Lamb faoi dhraíocht ag Conamara agus rinne sé pictiúir dhraíochta den cheantar. Bhí Lamb ina chónaí ar an g[[An Cheathrú Rua|Ceathrú Rua]] ó na tríochaidí go dtí gur cailleadh é i 1964.<ref name=":1" /> Ceannródaí ab ea a bhean, Catherine Hueffer Lamb a bhí ar an gcéad bhean a cháiligh ina [[tréidlia]] – an t-aon bhean a bhí sa rang (ba é an scríbhneoir [[Ford Madox Ford]] a hathair).<ref name=":0" /> Mac le Charles Lamb ba ea [[Peadar Lamb]], duine de mhór[[aisteoir]]í na h[[Éire|Éireann]]. == Saothar == Díoladh sa bhliain 2017, ar €2,500, saothar le Lamb ina bhfuil radharc de chósta Chonamara – 'Coastal Landscape – Carraroe'.<ref>{{Lua idirlín|url=https://tuairisc.ie/pictiuir-le-jack-b-yeats-de-shaor-bad-as-carna-gan-diol-ag-ceant-i-ach-loch-i-gcorca-dhuibhne-le-paul-henry-ceannaithe/|teideal=Pictiúir le Jack B Yeats de shaor bád as Carna gan díol ag ceant, ach ‘loch’ i gCorca Dhuibhne le Paul Henry ceannaithe|údar=Maitiú Ó Coimín|dáta=23 Samhain 2017|language=ga-IE|work=Tuairisc.ie|dátarochtana=2026-10-01}}</ref> == Féach freisin == * [[Charles Lamb (scríbhneoir aistí)]] * [[Peadar Lamb]], aisteoir * Ealaíontóirí [[Pádraic Reaney]], [[Paul Henry (ealaíontóir)|Paul Henry]] agus [[Daniel O'Neill]] == Tagairtí == {{reflist}}{{DEFAULTSORT:Lamb, Charles}} [[Catagóir:Péintéirí Éireannacha]] [[Catagóir:Conamara]] [[Catagóir:Daoine a rugadh i 1893]] [[Catagóir:Básanna i 1964]] [[Catagóir:An Cheathrú Rua]] [[Catagóir:Daoine as Contae Ard Mhacha]] fxg6gpqadbvwxphcp596sptq1c3ok9j 1329036 1329035 2026-10-01T18:15:37Z TGcoa 21229 /* Saothar */ 1329036 wikitext text/x-wiki {{WD Bosca Sonraí Duine}}Ealaíontóir mór le rá as [[Contae Ard Mhacha]] ba ea '''Charles Lamb''' ((30 Lúnasa 1893 – 15 Nollaig 1964) ) a tharraing pictiúir go leor de shaol na hÉireann agus de thírdhreach agus muintir [[Conamara|Chonamara]] go háirithe.<ref name=":0">{{Lua idirlín|url=https://tuairisc.ie/sceal-mary-lamb-as-an-gceathru-rua-le-craoladh-ar-rte-anocht/|teideal=Scéal Mary Lamb as an gCeathrú Rua le craoladh ar RTÉ anocht|dáta=2023-10-12|language=ga-IE|work=Tuairisc.ie|dátarochtana=2023-10-12}}</ref><ref>{{Luaigh foilseachán|title=Oidhreacht Lamb / Cartlann Ghaeltacht Chonamara,|url=http://amuigh.ie/items/show/440|date=2004|language=ga-IE|author=Maire Ní Chualáin ar amuigh.ie}} {{Webarchive|url=https://web.archive.org/web/20250221203630/http://amuigh.ie/items/show/440 |date=2025-02-21 }}</ref> Thit Lamb faoi dhraíocht ag Conamara sna 1930idí agus rinne sé pictiúir go leor den cheantar. Bhí Lamb ina chónaí ar an g[[An Cheathrú Rua|Ceathrú Rua]] ó na tríochaidí go dtí gur cailleadh é i 1964.<ref name=":1" /> [[Íomhá:AnCheathruRua.jpg|clé|mion|Bhí Lamb ina chónaí ar an mBóthar Buí ar an g[[An Cheathrú Rua|Ceathrú Rua]] ó na tríochaidí go dtí 1964 agus baineann riar mhaith dá shaothar ealaíne le Conamara - daoine agus radharcanna ón gceantar. .<ref name=":1">{{Lua idirlín|url=http://www.beo.ie/alt-an-cheathru-rua.aspx|teideal=An Cheathrú Rua|údar=Rónán Mac Con Iomaire|dáta=Meitheamh 2003|language=ga-IE|work=Beo!|dátarochtana=2023-10-12}}</ref>|220x220px]] == Saol == Ba as [[Port an Dúnáin]] Charles Lamb agus ba é an t-údar [[Pádraic Ó Conaire]] a mhol dó a aghaidh a thabhairt ar Chonamara. Thug Lamb cuairt den chéad uair ar an gCeathrú Rua i 1921 agus é 28 bliain d’aois. Chuaigh sé chun cónaí ann dhá bhliain déag ina dhiaidh sin agus ba ann a chaith sé an chuid eile dá shaol. Bhunaigh sé scoil ealaíne ar an mbaile beag Gaeltachta agus mhúin sé daltaí ó gach cearn den domhan inti. Ceannródaí ab ea a bhean, Catherine Hueffer Lamb a bhí ar an gcéad bhean a cháiligh ina [[tréidlia]] – an t-aon bhean a bhí sa rang (ba é an scríbhneoir [[Ford Madox Ford]] a hathair).<ref name=":0" /> Mac le Charles Lamb ba ea [[Peadar Lamb]], duine de mhór[[aisteoir]]í na h[[Éire|Éireann]]. == Saothar == Tithe ceann tuí, curacha agus báid seoil, agus muintir Chonamara i mbun oibre agus spóirt atá le feiceáil sa chuid is mó de na pictiúir a phéinteáil Lamb idir na blianta 1935 agus 1964, a fhad is a bhí sé ina chónaí ar an gCeathrú Rua. Díoladh sa bhliain 2017, ar €2,500, saothar le Lamb ina bhfuil radharc de chósta Chonamara – 'Coastal Landscape – Carraroe'.<ref>{{Lua idirlín|url=https://tuairisc.ie/pictiuir-le-jack-b-yeats-de-shaor-bad-as-carna-gan-diol-ag-ceant-i-ach-loch-i-gcorca-dhuibhne-le-paul-henry-ceannaithe/|teideal=Pictiúir le Jack B Yeats de shaor bád as Carna gan díol ag ceant, ach ‘loch’ i gCorca Dhuibhne le Paul Henry ceannaithe|údar=Maitiú Ó Coimín|dáta=23 Samhain 2017|language=ga-IE|work=Tuairisc.ie|dátarochtana=2026-10-01}}</ref> == Féach freisin == * [[Charles Lamb (scríbhneoir aistí)]] * [[Peadar Lamb]], aisteoir * Ealaíontóirí [[Pádraic Reaney]], [[Paul Henry (ealaíontóir)|Paul Henry]] agus [[Daniel O'Neill]] == Tagairtí == {{reflist}}{{DEFAULTSORT:Lamb, Charles}} [[Catagóir:Péintéirí Éireannacha]] [[Catagóir:Conamara]] [[Catagóir:Daoine a rugadh i 1893]] [[Catagóir:Básanna i 1964]] [[Catagóir:An Cheathrú Rua]] [[Catagóir:Daoine as Contae Ard Mhacha]] pml4d9nz62drq68j7rj7pgzhndxenwy 1329037 1329036 2026-10-01T18:19:46Z TGcoa 21229 1329037 wikitext text/x-wiki {{WD Bosca Sonraí Duine}}Ealaíontóir mór le rá as [[Contae Ard Mhacha]] ba ea '''Charles Lamb''' ((30 Lúnasa 1893 – 15 Nollaig 1964) ) a tharraing pictiúir go leor de shaol na hÉireann agus de thírdhreach agus muintir [[Conamara|Chonamara]] go háirithe.<ref name=":0">{{Lua idirlín|url=https://tuairisc.ie/sceal-mary-lamb-as-an-gceathru-rua-le-craoladh-ar-rte-anocht/|teideal=Scéal Mary Lamb as an gCeathrú Rua le craoladh ar RTÉ anocht|dáta=2023-10-12|language=ga-IE|work=Tuairisc.ie|dátarochtana=2023-10-12}}</ref><ref>{{Luaigh foilseachán|title=Oidhreacht Lamb / Cartlann Ghaeltacht Chonamara,|url=http://amuigh.ie/items/show/440|date=2004|language=ga-IE|author=Maire Ní Chualáin ar amuigh.ie}} {{Webarchive|url=https://web.archive.org/web/20250221203630/http://amuigh.ie/items/show/440 |date=2025-02-21 }}</ref> Thit Lamb faoi dhraíocht ag Conamara sna 1930idí agus rinne sé pictiúir go leor den cheantar. Bhí Lamb ina chónaí ar an g[[An Cheathrú Rua|Ceathrú Rua]] ó na tríochaidí go dtí gur cailleadh é i 1964.<ref name=":1" /> [[Íomhá:AnCheathruRua.jpg|clé|mion|Bhí Lamb ina chónaí ar an mBóthar Buí ar an g[[An Cheathrú Rua|Ceathrú Rua]] ó na tríochaidí go dtí 1964 agus baineann riar mhaith dá shaothar ealaíne le Conamara - daoine agus radharcanna ón gceantar. .<ref name=":1">{{Lua idirlín|url=http://www.beo.ie/alt-an-cheathru-rua.aspx|teideal=An Cheathrú Rua|údar=Rónán Mac Con Iomaire|dáta=Meitheamh 2003|language=ga-IE|work=Beo!|dátarochtana=2023-10-12}}</ref>|220x220px]] == Saol == Ba as [[Port an Dúnáin]] Charles Lamb agus ba é an t-údar [[Pádraic Ó Conaire]] a mhol dó a aghaidh a thabhairt ar Chonamara. Thug Lamb cuairt den chéad uair ar an gCeathrú Rua i 1921 agus é 28 bliain d’aois. Chuaigh sé chun cónaí ann dhá bhliain déag ina dhiaidh sin agus ba ann a chaith sé an chuid eile dá shaol. Bhunaigh sé scoil ealaíne ar an mbaile beag Gaeltachta agus mhúin sé daltaí ó gach cearn den domhan inti. Ceannródaí ab ea a bhean, Catherine Hueffer Lamb a bhí ar an gcéad bhean a cháiligh ina [[tréidlia]] – an t-aon bhean a bhí sa rang (ba é an scríbhneoir [[Ford Madox Ford]] a hathair).<ref name=":0" /> Mac le Charles Lamb ba ea [[Peadar Lamb]], duine de mhór[[aisteoir]]í na h[[Éire|Éireann]]. == Saothar == Tithe ceann tuí, curacha agus báid seoil, agus muintir Chonamara i mbun oibre agus spóirt atá le feiceáil sa chuid is mó de na pictiúir a phéinteáil Lamb idir na blianta 1935 agus 1964, a fhad is a bhí sé ina chónaí ar an gCeathrú Rua. Tá cuntas tábhachtach i saothar Lamb ar an saol mar a bhí ar an gCeathrú Rua i lár an chéid seo caite, tráth a raibh an saol comhaimseartha ag teacht sa mhullach ar shlí mhaireachtála thraidisiúnta na ndaoine a raibh cónaí orthu ann.<ref>{{Lua idirlín|url=https://tuairisc.ie/e12000-a-lorg-i-gceant-ar-phortraidi-charles-lamb-de-mhna-chonamara-agus-arann/|teideal=€12,000 á lorg i gceant ar phortráidí Charles Lamb de mhná Chonamara agus Árann|údar=Maitiú Ó Coimín|dáta=1 Deireadh Fómhair 2026|language=ga-IE|work=Tuairisc.ie|dátarochtana=2026-10-01}}</ref> Díoladh sa bhliain 2017, ar €2,500, saothar le Lamb ina bhfuil radharc de chósta Chonamara – 'Coastal Landscape – Carraroe'.<ref>{{Lua idirlín|url=https://tuairisc.ie/pictiuir-le-jack-b-yeats-de-shaor-bad-as-carna-gan-diol-ag-ceant-i-ach-loch-i-gcorca-dhuibhne-le-paul-henry-ceannaithe/|teideal=Pictiúir le Jack B Yeats de shaor bád as Carna gan díol ag ceant, ach ‘loch’ i gCorca Dhuibhne le Paul Henry ceannaithe|údar=Maitiú Ó Coimín|dáta=23 Samhain 2017|language=ga-IE|work=Tuairisc.ie|dátarochtana=2026-10-01}}</ref> Cuireadh 54 mír leis an ealaíontóir ar ceant ar an 20 Deireadh Fómhair 2026. == Féach freisin == * [[Charles Lamb (scríbhneoir aistí)]] * [[Peadar Lamb]], aisteoir * Ealaíontóirí [[Pádraic Reaney]], [[Paul Henry (ealaíontóir)|Paul Henry]] agus [[Daniel O'Neill]] == Tagairtí == {{reflist}}{{DEFAULTSORT:Lamb, Charles}} [[Catagóir:Péintéirí Éireannacha]] [[Catagóir:Conamara]] [[Catagóir:Daoine a rugadh i 1893]] [[Catagóir:Básanna i 1964]] [[Catagóir:An Cheathrú Rua]] [[Catagóir:Daoine as Contae Ard Mhacha]] peiecplwdrwnht3hm9dzts8vk68ibed Cornfhoiche Áiseach 0 112669 1329044 1277758 2026-10-01T22:39:50Z TGcoa 21229 1329044 wikitext text/x-wiki {{WD Bosca Sonraí Ainmhí Bheo}}Is speiceas de chuid na bhfoichí í '''an chornfhoiche Áiseach''' ('''''Vespa velutina''''')<ref>i mBearla, ''Asian hornet''</ref> san [[Fine (bitheolaíocht)|fhine]] Vespodae atá dúchasach d'Oirdheisceart na hÁise.<ref>Tugtar ''V. v. nigrithorax'' ar an bhfoirm is cúis imní mar gheall ar a hionradh ar an Eoraip, cé nach bhfuil aon seasamh tacsanomaíochta ag an ainm seo a thuilleadh.</ref> [[Íomhá:Asian hornet (33252984804) (2).jpg|clé|mion|220x220px]] [[Íomhá:Vespa_velutina_MHNT.jpg|mion| ''Vespa velutina nigrithorax'', grianghraf a tógadh i [[Toulouse]] sa bhliain 2013|clé|220x220px]] [[Íomhá:Vespa_Asiatica.jpg|alt=ulnaebones|mion| Sonraí ar nead foiche na hÁise. [https://ulnaebones.com/otros/ Nasc]|clé|270x270px]] == Tréithe == Beathaíonn an fhoiche seo, cosúil le foiche eile dá [[Géineas|ghéineas]], ar fheithidí ([[Beach|beacha]], [[Seangán|seangáin]], [[Féileacán|féileacáin]], [[Aifid|aifidí]], srl.) agus [[Inveirteabrach|inveirteabraigh]] eile. D'fhorbair an [[beach]] ''Apis cerana'', atá dúchasach don réigiún céanna leis an speiceas seo, meicníochtaí cosanta i gcoinne an chreachadóra seo, nach bhfuil i speicis chreiche eile. Ar an mórgóir, ní ionsaíonn cornfhoichí Áiseacha daoine ach amháin má ghriogtar chun feirge iad. Bíonn roinnt máithreacha aba i gcuasnóg cornfhoichí Áiseacha agus scaipeann siad san fhómhar lena gcuasnóga féin a fhothú.<ref name=":0">{{Luaigh foilseachán|title=Cuasnóg cornfhoichí Áiseacha aimsithe i gCorcaigh|url=https://www.rte.ie/news/nuacht/2025/0828/1530564-cuasnog-cornfhoichi-aiseacha-aimsithe-i-gcorcaigh/|date=2025-08-28|language=ga-IE|author=Nuacht RTÉ}}</ref> == In Éirinn == I mí Lúnasa 2025, agus arís in 2026, d'aimsigh saineolaithe ón tSeirbhís Páirceanna Náisiúnta agus Fiadhúlra cuasnóg cornfhoichí Áiseacha i gcathair Chorcaí. Rinneach anailís mhóilíneach ar an gcuasnóg in Ard-Mhúsaem na hÉireann chun fáil amach cá as go baileach ar tháinig na coirnfhoichí.<ref>{{Luaigh foilseachán|title=Saineolaithe fiadhúlra sa tóir ar chuasnóg cornfhoichí Áiseacha|url=https://www.rte.ie/news/nuacht/2026/1001/1593630-saineolaithe-fiadhulra-sa-toir-ar-chuasnog-cornfhoichi-aiseacha/|date=2026-10-01|language=ga-IE|author=Nuacht RTÉ}}</ref><ref name=":0" /> Dá lonnódh cornfhoichí Áiseacha in Éirinn, d'fhéadfaidís scrios a dhéanamh ar fheithidí dúchasacha na tíre, lena n-áirítear [[Beach meala|beacha meala]], beacha gabhair, beacha aonair, [[Bumbóg|bumbóga]], [[Féileacán|féileacáin]] agus mar sin siar. Maraíonn siad na hinveirteabraigh sin lena larbhaí féin a bheathú leo. Bhunaigh an tseirbhís fiadhúlra tascfhórsa chun dul i ngleic le cásanna mar é san am le teacht, más gá.<ref name=":0" /> ==Féach freisin== * [[Beach]] ==Tagairtí== {{Reflist}} [[Catagóir:Vespidae]] [[Catagóir:Hymenoptera na hÁise]] [[Catagóir:Hymenoptera na hEorpa]] qm6kzlyci7sm79hpmcbmtgsz4vfzf4i Úsáideoir:Marcas.oduinn/Clár Dubh/Téamh Domhanda 2 120000 1329047 1328942 2026-10-02T06:20:45Z Marcas.oduinn 33120 /* Buiséad teasa inmheánaigh an Domhain */ 1329047 wikitext text/x-wiki [ [[Úsáideoir:Marcas.oduinn/Tionscadal|Tionscadal]] ] == Ceanntásc == ••• [[:Úsáideoir:TGcoa]] ••• '' príomhscríbhneoir * [[Téamh domhanda]] '' Global warming * [[Aeráid]] '' Climate * [[Tonn teasa]] '' Heat wave * [[Falscaí]] '' Wild fire * [[Dífhoraoisiú]] '' Deforestation * [[Eostatacht]] '' Eustacy * [[:Catagóir:Téamh domhanda]] ** [[:Catagóir:Athrú aeráide]] * [[:Catagóir:Fuinneamh]] ** [[:Catagóir:Fuinneamh inbhuanaithe]] *** [[:Catagóir:Fuinneamh in-athnuaite]] **** [[:Catagóir:Cumhacht gréine]] **** [[:Catagóir:Cumhacht ghaoithe]] **** [[:Catagóir:Cumhacht gheoiteirmeach]] {| class= wikitable |+ Fuinneamh (J) nó cumhacht (W = J/s) ! Cineál !! Fuinneamh !! Cumhacht |- | Grian | [[Grianfhuinneamh]] | [[Grianchumhacht]] |- | Gaoth | [[Fuinneamh gaoithe]] | [[Cumhacht ghaoithe]] |- | Uisce | [[Fuinneamh hiodrálach]] | [[Hidrileictreachas]] |- | Geo | [[Fuinneamh geoiteirmeach]] | [[Cumhacht gheoiteirmeach]] |- | Bith | [[Bithbhreosla]] | [[]] |- | Tonn | [[Fuinneamh tonnta]] | [[Cumhacht tonnta]] |} == Ábhair == === Cúiseanna === * [[Gás ceaptha teasa]], [[Astaíochtaí gás ceaptha teasa]] # [[Astaíochtaí dé-ocsaíd charbóin]] #* [[Astaíochtaí gás ceaptha teasa de bharr talamhaíochta]], [[Lorg carbóin]], [[Poitéinseal téimh dhomhanda]] # ''[[:en:Effects of climate change|Effects of climate change]]'' - [[Éifeachtaí an athraithe aeráide]] === Aontas Eorpach === * [[:Catagóir:An tAontas Eorpach agus an comhshaol]] &#8658; [[:Catagóir:Beartas comhshaoil san AE]] &#8658; [[:Catagóir:Comhaontú Glas don Eoraip]], <s>an [[Comhaontú Glas Don Eoraip]]=</s>an [[Comhaontú Glas don Eoraip]], [[Cláir Réime um Thaighde agus Forbairt Theicneolaíoch]], [[Fís 2020]], [[Fís Eorpach]], [[Clár LIFE]], [[Oiriúnach do 55]], [[Sásra um Choigeartú Carbóin ar Theorainneacha an AE]]=[[Sásra Coigeartaithe Carbóin ar Theorainneacha an AE]] === Teicneolaíocht agus geilleagar === * ''[[:en:Renewable energy|Renewable energy]]'' - [[Fuinneamh in-athnuaite]], [[Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh gheoiteirmeach]], [[Cumhacht gheoiteirmeach]], [[Téamh geoiteirmeach]] # ''[[:en:Earth's internal heat budget|Earth's internal heat budget]]'' - [[Buiséad teasa inmheánaigh an Domhain]] # [[Fuinneamh gaoithe]]=[[Cumhacht ghaoithe]] # ''[[:en:Wave power|Wave power]]'' - [[Cumhacht tonnta]] # ''[[:en:Net-zero emissions|Net-zero emissions]]'' - [[Neodracht carbóin]]=[[Astaíochtaí glan-nialais]] # ''[[:en:Fossil fuel subsidies|Fossil fuel subsidies]]'' - [[Fóirdheontas breosla iontaise]] # ''[[:en:Carbon tariff|Carbon tariff]]'' - [[Tairif carbóin]] # ''[[:en:Carbon pricing|Carbon pricing]]'' - [[Praghsáil carbóin]] # ''[[:en: Carbon capture and storage| Carbon capture and storage]]'' - [[Gabháil agus stóráil carbóin]] # ''[[:en:Circular economy|Circular economy]]'' - [[Geilleagar ciorclach]] # ''[[:en:International Energy Agency|International Energy Agency]]'' - [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh]] #* [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh In-athnuaite]] # ''[[:en:Toxic waste|Toxic waste]]'' - [[Dramhaíl nimhiúil]] # ''[[:en:Public transport|Public transport]]'' - [[Iompar poiblí]] == Buiséad teasa inmheánaigh an Domhain == [[Íomhá:Earth heat flow.jpg | mion | upright=1.5 |''Global map of the flux of heat, in mW/m<sup>2</sup>, from Earth's interior to the surface.<ref name=Davies2010 /> The largest values of heat flux coincide with [[Dromanna aigéanacha]], and the smallest values of heat flux occur in stable continental interiors.]] Is méadrach bunúsach é '''Buiséad teasa inmheánaigh an Domhain''' maidir le stair teasa [[an Domhan|an Domhan]]. Meastar go dtagann 47±2 teirea[[vata]] (TW)<ref name=Davies2010 /> ar dromchla an Domhain, comes from two main sources in roughly equal amounts: the ''radiogenic heat'' produced by the [[Meath radaighníomhach]] of isotopes in the mantle and crust, and the ''primordial heat'' left over from the [[Domhain#Stair agus taiscéalaíocht|formation of Earth]].<ref name=Turcotte /> '' Earth's internal heat travels along [[geothermal gradient]]s and powers most geological processes. <ref name=Buffett>Buffett, B. A. (2007). Taking Earth's temperature. Science, 315(5820), 1801–1802.</ref> It drives [[comhiompar i screamh an Domhain|comhiompar i screamh an Domhain]], [[teicteonaic phlátaí]], [[orogeny|mountain building]], [[metamorphism|rock metamorphism]] agus [[bolcánacht]].<ref name=Turcotte /> [[Convective heat transfer]] within the planet's [[Earth's core|high-temperature metallic core]] is also theorized to sustain a [[geodynamo]] which generates [[Earth's magnetic field]]. <ref name=mit2010>{{lua idirlín | url = https://news.mit.edu/2010/explained-dynamo-0325 | teideal = Explained: Dynamo Theory | foilsitheoir = MIT News | údar = Morgan Bettex | dáta =25 Márta 2010}}</ref> <ref name=Kageyama1995>{{cite journal | last1=Kageyama | first1=Akira | last2=Sato | first2=Tetsuya |author3=the Complexity Simulation Group | title=Computer simulation of a magnetohydrodynamic dynamo. II | journal=Physics of Plasmas |date=1 January 1995 | volume=2 |issue=5 | pages=1421–1431 |doi=10.1063/1.871485 | bibcode=1995PhPl....2.1421K }}</ref><ref name=Glatzmaier>{{cite journal | last1=Glatzmaier | first1=Gary A. | last2=Roberts | first2=Paul H. | title=A three-dimensional convective dynamo solution with rotating and finitely conducting inner core and mantle | journal=Physics of the Earth and Planetary Interiors |year=1995 | volume=91 | issue=1–3 | pages=63–75 | doi=10.1016/0031-9201(95)03049-3 | bibcode=1995PEPI...91...63G}}</ref> '' Despite its geological significance, Earth's interior heat contributes only 0.03% of [[Earth's energy budget|Earth's total energy budget]] at the surface, which is dominated by 173,000&nbsp;TW of incoming [[solar radiation]]. <ref name=Archer>{{cite book | isbn=978-0-470-94341-0 | author=Archer, D. | year=2012 | title=Global Warming: Understanding the Forecast | publisher=John Wiley & Sons}}</ref> This external energy source powers most of the planet's atmospheric, oceanic, and biologic processes. Nevertheless on [[land]] and at the [[ocean floor]], the [[sensible heat]] absorbed from non-reflected [[insolation]] flows inward only by means of [[thermal conduction]], and thus penetrates only a few dozen centimeters on the daily cycle and only a few dozen meters on the annual cycle. This renders solar radiation minimally relevant for processes internal to [[Earth's crust]]. <ref name=Lowrie2007>Lowrie, W. (2007). ''Fundamentals of geophysics''. Cambridge: CUP, 2a eag.</ref> '' Global data on heat-flow density are collected and compiled by the International Heat Flow Commission of the [[International Association of Seismology and Physics of the Earth's Interior]]. <ref name=ihfc>[http://www.ihfc-iugg.org www.ihfc-iugg.org] IHFC: International Heat Flow Commission – Homepage. Retrieved 18/09/2019.</ref> == Tagairtí {{reflist | refs = <ref name=Davies2010>{{cite journal | last1=Davies | first1=J.H. | last2=Davies | first2=D.R. | date=22 February 2010 | title=Earth's surface heat flux | volume=1 | issue=1 | pages=5–24 | journal=Solid Earth | doi=10.5194/se-1-5-2010 | doi-access=free |bibcode=2010SolE....1....5D }}</ref> }} == Féach freisin == * [[Cumhacht gheoiteirmeach]] * [[Grádán geoiteirmeach]] * [[Difreáil pláinéadach]] == Tagairtí {{reflist | refs = <ref name=Turcotte>{{cite book | author1=Donald L. Turcotte | author2=Gerald Schubert | title=Geodynamics | url=https://books.google.com/books?id=-nCHlVuJ4FoC&q=primordial&pg=PA286 | date=25 March 2002|publisher=Cambridge University Press | isbn=978-0-521-66624-4}}</ref> }} == Buntásc == __NOINDEX__ __NOTOC__ idcmkc313wsesgmog6ryx8dv4ucnhzh 1329048 1329047 2026-10-02T06:21:01Z Marcas.oduinn 33120 1329048 wikitext text/x-wiki [ [[Úsáideoir:Marcas.oduinn/Tionscadal|Tionscadal]] ] == Ceanntásc == ••• [[:Úsáideoir:TGcoa]] ••• '' príomhscríbhneoir * [[Téamh domhanda]] '' Global warming * [[Aeráid]] '' Climate * [[Tonn teasa]] '' Heat wave * [[Falscaí]] '' Wild fire * [[Dífhoraoisiú]] '' Deforestation * [[Eostatacht]] '' Eustacy * [[:Catagóir:Téamh domhanda]] ** [[:Catagóir:Athrú aeráide]] * [[:Catagóir:Fuinneamh]] ** [[:Catagóir:Fuinneamh inbhuanaithe]] *** [[:Catagóir:Fuinneamh in-athnuaite]] **** [[:Catagóir:Cumhacht gréine]] **** [[:Catagóir:Cumhacht ghaoithe]] **** [[:Catagóir:Cumhacht gheoiteirmeach]] {| class= wikitable |+ Fuinneamh (J) nó cumhacht (W = J/s) ! Cineál !! Fuinneamh !! Cumhacht |- | Grian | [[Grianfhuinneamh]] | [[Grianchumhacht]] |- | Gaoth | [[Fuinneamh gaoithe]] | [[Cumhacht ghaoithe]] |- | Uisce | [[Fuinneamh hiodrálach]] | [[Hidrileictreachas]] |- | Geo | [[Fuinneamh geoiteirmeach]] | [[Cumhacht gheoiteirmeach]] |- | Bith | [[Bithbhreosla]] | [[]] |- | Tonn | [[Fuinneamh tonnta]] | [[Cumhacht tonnta]] |} == Ábhair == === Cúiseanna === * [[Gás ceaptha teasa]], [[Astaíochtaí gás ceaptha teasa]] # [[Astaíochtaí dé-ocsaíd charbóin]] #* [[Astaíochtaí gás ceaptha teasa de bharr talamhaíochta]], [[Lorg carbóin]], [[Poitéinseal téimh dhomhanda]] # ''[[:en:Effects of climate change|Effects of climate change]]'' - [[Éifeachtaí an athraithe aeráide]] === Aontas Eorpach === * [[:Catagóir:An tAontas Eorpach agus an comhshaol]] &#8658; [[:Catagóir:Beartas comhshaoil san AE]] &#8658; [[:Catagóir:Comhaontú Glas don Eoraip]], <s>an [[Comhaontú Glas Don Eoraip]]=</s>an [[Comhaontú Glas don Eoraip]], [[Cláir Réime um Thaighde agus Forbairt Theicneolaíoch]], [[Fís 2020]], [[Fís Eorpach]], [[Clár LIFE]], [[Oiriúnach do 55]], [[Sásra um Choigeartú Carbóin ar Theorainneacha an AE]]=[[Sásra Coigeartaithe Carbóin ar Theorainneacha an AE]] === Teicneolaíocht agus geilleagar === * ''[[:en:Renewable energy|Renewable energy]]'' - [[Fuinneamh in-athnuaite]], [[Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh gheoiteirmeach]], [[Cumhacht gheoiteirmeach]], [[Téamh geoiteirmeach]] # ''[[:en:Earth's internal heat budget|Earth's internal heat budget]]'' - [[Buiséad teasa inmheánaigh an Domhain]] # [[Fuinneamh gaoithe]]=[[Cumhacht ghaoithe]] # ''[[:en:Wave power|Wave power]]'' - [[Cumhacht tonnta]] # ''[[:en:Net-zero emissions|Net-zero emissions]]'' - [[Neodracht carbóin]]=[[Astaíochtaí glan-nialais]] # ''[[:en:Fossil fuel subsidies|Fossil fuel subsidies]]'' - [[Fóirdheontas breosla iontaise]] # ''[[:en:Carbon tariff|Carbon tariff]]'' - [[Tairif carbóin]] # ''[[:en:Carbon pricing|Carbon pricing]]'' - [[Praghsáil carbóin]] # ''[[:en: Carbon capture and storage| Carbon capture and storage]]'' - [[Gabháil agus stóráil carbóin]] # ''[[:en:Circular economy|Circular economy]]'' - [[Geilleagar ciorclach]] # ''[[:en:International Energy Agency|International Energy Agency]]'' - [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh]] #* [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh In-athnuaite]] # ''[[:en:Toxic waste|Toxic waste]]'' - [[Dramhaíl nimhiúil]] # ''[[:en:Public transport|Public transport]]'' - [[Iompar poiblí]] == Buiséad teasa inmheánaigh an Domhain == [[Íomhá:Earth heat flow.jpg | mion | upright=1.5 |''Global map of the flux of heat, in mW/m<sup>2</sup>, from Earth's interior to the surface.<ref name=Davies2010 /> The largest values of heat flux coincide with [[Dromanna aigéanacha]], and the smallest values of heat flux occur in stable continental interiors.]] Is méadrach bunúsach é '''Buiséad teasa inmheánaigh an Domhain''' maidir le stair teasa [[an Domhan|an Domhan]]. Meastar go dtagann 47±2 teirea[[vata]] (TW)<ref name=Davies2010 /> ar dromchla an Domhain, comes from two main sources in roughly equal amounts: the ''radiogenic heat'' produced by the [[Meath radaighníomhach]] of isotopes in the mantle and crust, and the ''primordial heat'' left over from the [[Domhain#Stair agus taiscéalaíocht|formation of Earth]].<ref name=Turcotte /> '' Earth's internal heat travels along [[geothermal gradient]]s and powers most geological processes. <ref name=Buffett>Buffett, B. A. (2007). Taking Earth's temperature. Science, 315(5820), 1801–1802.</ref> It drives [[comhiompar i screamh an Domhain|comhiompar i screamh an Domhain]], [[teicteonaic phlátaí]], [[orogeny|mountain building]], [[metamorphism|rock metamorphism]] agus [[bolcánacht]].<ref name=Turcotte /> [[Convective heat transfer]] within the planet's [[Earth's core|high-temperature metallic core]] is also theorized to sustain a [[geodynamo]] which generates [[Earth's magnetic field]]. <ref name=mit2010>{{lua idirlín | url = https://news.mit.edu/2010/explained-dynamo-0325 | teideal = Explained: Dynamo Theory | foilsitheoir = MIT News | údar = Morgan Bettex | dáta =25 Márta 2010}}</ref> <ref name=Kageyama1995>{{cite journal | last1=Kageyama | first1=Akira | last2=Sato | first2=Tetsuya |author3=the Complexity Simulation Group | title=Computer simulation of a magnetohydrodynamic dynamo. II | journal=Physics of Plasmas |date=1 January 1995 | volume=2 |issue=5 | pages=1421–1431 |doi=10.1063/1.871485 | bibcode=1995PhPl....2.1421K }}</ref><ref name=Glatzmaier>{{cite journal | last1=Glatzmaier | first1=Gary A. | last2=Roberts | first2=Paul H. | title=A three-dimensional convective dynamo solution with rotating and finitely conducting inner core and mantle | journal=Physics of the Earth and Planetary Interiors |year=1995 | volume=91 | issue=1–3 | pages=63–75 | doi=10.1016/0031-9201(95)03049-3 | bibcode=1995PEPI...91...63G}}</ref> '' Despite its geological significance, Earth's interior heat contributes only 0.03% of [[Earth's energy budget|Earth's total energy budget]] at the surface, which is dominated by 173,000&nbsp;TW of incoming [[solar radiation]]. <ref name=Archer>{{cite book | isbn=978-0-470-94341-0 | author=Archer, D. | year=2012 | title=Global Warming: Understanding the Forecast | publisher=John Wiley & Sons}}</ref> This external energy source powers most of the planet's atmospheric, oceanic, and biologic processes. Nevertheless on [[land]] and at the [[ocean floor]], the [[sensible heat]] absorbed from non-reflected [[insolation]] flows inward only by means of [[thermal conduction]], and thus penetrates only a few dozen centimeters on the daily cycle and only a few dozen meters on the annual cycle. This renders solar radiation minimally relevant for processes internal to [[Earth's crust]]. <ref name=Lowrie2007>Lowrie, W. (2007). ''Fundamentals of geophysics''. Cambridge: CUP, 2a eag.</ref> '' Global data on heat-flow density are collected and compiled by the International Heat Flow Commission of the [[International Association of Seismology and Physics of the Earth's Interior]]. <ref name=ihfc>[http://www.ihfc-iugg.org www.ihfc-iugg.org] IHFC: International Heat Flow Commission – Homepage. Retrieved 18/09/2019.</ref> == Tagairtí {{reflist | refs = <ref name=Davies2010>{{cite journal | last1=Davies | first1=J.H. | last2=Davies | first2=D.R. | date=22 February 2010 | title=Earth's surface heat flux | volume=1 | issue=1 | pages=5–24 | journal=Solid Earth | doi=10.5194/se-1-5-2010 | doi-access=free |bibcode=2010SolE....1....5D }}</ref> }} == Féach freisin * [[Cumhacht gheoiteirmeach]] * [[Grádán geoiteirmeach]] * [[Difreáil pláinéadach]] == Tagairtí {{reflist | refs = <ref name=Turcotte>{{cite book | author1=Donald L. Turcotte | author2=Gerald Schubert | title=Geodynamics | url=https://books.google.com/books?id=-nCHlVuJ4FoC&q=primordial&pg=PA286 | date=25 March 2002|publisher=Cambridge University Press | isbn=978-0-521-66624-4}}</ref> }} == Buntásc == __NOINDEX__ __NOTOC__ acon3l4a6017yl9kpmr463bpeovu63k 1329049 1329048 2026-10-02T06:30:05Z Marcas.oduinn 33120 1329049 wikitext text/x-wiki [ [[Úsáideoir:Marcas.oduinn/Tionscadal|Tionscadal]] ] == Ceanntásc == ••• [[:Úsáideoir:TGcoa]] ••• '' príomhscríbhneoir * [[Téamh domhanda]] '' Global warming * [[Aeráid]] '' Climate * [[Tonn teasa]] '' Heat wave * [[Falscaí]] '' Wild fire * [[Dífhoraoisiú]] '' Deforestation * [[Eostatacht]] '' Eustacy * [[:Catagóir:Téamh domhanda]] ** [[:Catagóir:Athrú aeráide]] * [[:Catagóir:Fuinneamh]] ** [[:Catagóir:Fuinneamh inbhuanaithe]] *** [[:Catagóir:Fuinneamh in-athnuaite]] **** [[:Catagóir:Cumhacht gréine]] **** [[:Catagóir:Cumhacht ghaoithe]] **** [[:Catagóir:Cumhacht gheoiteirmeach]] {| class= wikitable |+ Fuinneamh (J) nó cumhacht (W = J/s) ! Cineál !! Fuinneamh !! Cumhacht |- | Grian | [[Grianfhuinneamh]] | [[Grianchumhacht]] |- | Gaoth | [[Fuinneamh gaoithe]] | [[Cumhacht ghaoithe]] |- | Uisce | [[Fuinneamh hiodrálach]] | [[Hidrileictreachas]] |- | Geo | [[Fuinneamh geoiteirmeach]] | [[Cumhacht gheoiteirmeach]] |- | Bith | [[Bithbhreosla]] | [[]] |- | Tonn | [[Fuinneamh tonnta]] | [[Cumhacht tonnta]] |} == Ábhair == === Cúiseanna === * [[Gás ceaptha teasa]], [[Astaíochtaí gás ceaptha teasa]] # [[Astaíochtaí dé-ocsaíd charbóin]] #* [[Astaíochtaí gás ceaptha teasa de bharr talamhaíochta]], [[Lorg carbóin]], [[Poitéinseal téimh dhomhanda]] # ''[[:en:Effects of climate change|Effects of climate change]]'' - [[Éifeachtaí an athraithe aeráide]] === Aontas Eorpach === * [[:Catagóir:An tAontas Eorpach agus an comhshaol]] &#8658; [[:Catagóir:Beartas comhshaoil san AE]] &#8658; [[:Catagóir:Comhaontú Glas don Eoraip]], <s>an [[Comhaontú Glas Don Eoraip]]=</s>an [[Comhaontú Glas don Eoraip]], [[Cláir Réime um Thaighde agus Forbairt Theicneolaíoch]], [[Fís 2020]], [[Fís Eorpach]], [[Clár LIFE]], [[Oiriúnach do 55]], [[Sásra um Choigeartú Carbóin ar Theorainneacha an AE]]=[[Sásra Coigeartaithe Carbóin ar Theorainneacha an AE]] === Teicneolaíocht agus geilleagar === * ''[[:en:Renewable energy|Renewable energy]]'' - [[Fuinneamh in-athnuaite]], [[Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh gheoiteirmeach]], [[Cumhacht gheoiteirmeach]], [[Téamh geoiteirmeach]] # ''[[:en:Earth's internal heat budget|Earth's internal heat budget]]'' - [[Buiséad teasa inmheánaigh an Domhain]] # [[Fuinneamh gaoithe]]=[[Cumhacht ghaoithe]] # ''[[:en:Wave power|Wave power]]'' - [[Cumhacht tonnta]] # ''[[:en:Net-zero emissions|Net-zero emissions]]'' - [[Neodracht carbóin]]=[[Astaíochtaí glan-nialais]] # ''[[:en:Fossil fuel subsidies|Fossil fuel subsidies]]'' - [[Fóirdheontas breosla iontaise]] # ''[[:en:Carbon tariff|Carbon tariff]]'' - [[Tairif carbóin]] # ''[[:en:Carbon pricing|Carbon pricing]]'' - [[Praghsáil carbóin]] # ''[[:en: Carbon capture and storage| Carbon capture and storage]]'' - [[Gabháil agus stóráil carbóin]] # ''[[:en:Circular economy|Circular economy]]'' - [[Geilleagar ciorclach]] # ''[[:en:International Energy Agency|International Energy Agency]]'' - [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh]] #* [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh In-athnuaite]] # ''[[:en:Toxic waste|Toxic waste]]'' - [[Dramhaíl nimhiúil]] # ''[[:en:Public transport|Public transport]]'' - [[Iompar poiblí]] == Buiséad teasa inmheánaigh an Domhain == [[Íomhá:Earth heat flow.jpg | mion | upright=1.5 | Léarscáil an Domhain le sreabhadh teasa (mW/m<sup>2</sup>) ón taobh istigh go dtí an dromchla.<ref name=Davies2010 /> Feictear an sreabhadh is mó ag [[dromanna aigéanacha]], agus is lú laistigh dc ilchríocha seasmhacha.]] Is méadrach bunúsach é '''Buiséad teasa inmheánaigh an Domhain''' maidir le stair teasa [[an Domhan|an Domhan]]. Meastar go dtagann 47±2 teirea[[vata]] (TW)<ref name=Davies2010 /> ar dromchla an Domhain, comes from two main sources in roughly equal amounts: the ''radiogenic heat'' produced by the [[Meath radaighníomhach]] of isotopes in the mantle and crust, and the ''primordial heat'' left over from the [[Domhain#Stair agus taiscéalaíocht|formation of Earth]].<ref name=Turcotte /> '' Earth's internal heat travels along [[geothermal gradient]]s and powers most geological processes. <ref name=Buffett>Buffett, B. A. (2007). Taking Earth's temperature. Science, 315(5820), 1801–1802.</ref> It drives [[comhiompar i screamh an Domhain|comhiompar i screamh an Domhain]], [[teicteonaic phlátaí]], [[orogeny|mountain building]], [[metamorphism|rock metamorphism]] agus [[bolcánacht]].<ref name=Turcotte /> [[Convective heat transfer]] within the planet's [[Earth's core|high-temperature metallic core]] is also theorized to sustain a [[geodynamo]] which generates [[Earth's magnetic field]]. <ref name=mit2010>{{lua idirlín | url = https://news.mit.edu/2010/explained-dynamo-0325 | teideal = Explained: Dynamo Theory | foilsitheoir = MIT News | údar = Morgan Bettex | dáta =25 Márta 2010}}</ref> <ref name=Kageyama1995>{{cite journal | last1=Kageyama | first1=Akira | last2=Sato | first2=Tetsuya |author3=the Complexity Simulation Group | title=Computer simulation of a magnetohydrodynamic dynamo. II | journal=Physics of Plasmas |date=1 January 1995 | volume=2 |issue=5 | pages=1421–1431 |doi=10.1063/1.871485 | bibcode=1995PhPl....2.1421K }}</ref><ref name=Glatzmaier>{{cite journal | last1=Glatzmaier | first1=Gary A. | last2=Roberts | first2=Paul H. | title=A three-dimensional convective dynamo solution with rotating and finitely conducting inner core and mantle | journal=Physics of the Earth and Planetary Interiors |year=1995 | volume=91 | issue=1–3 | pages=63–75 | doi=10.1016/0031-9201(95)03049-3 | bibcode=1995PEPI...91...63G}}</ref> '' Despite its geological significance, Earth's interior heat contributes only 0.03% of [[Earth's energy budget|Earth's total energy budget]] at the surface, which is dominated by 173,000&nbsp;TW of incoming [[solar radiation]]. <ref name=Archer>{{cite book | isbn=978-0-470-94341-0 | author=Archer, D. | year=2012 | title=Global Warming: Understanding the Forecast | publisher=John Wiley & Sons}}</ref> This external energy source powers most of the planet's atmospheric, oceanic, and biologic processes. Nevertheless on [[land]] and at the [[ocean floor]], the [[sensible heat]] absorbed from non-reflected [[insolation]] flows inward only by means of [[thermal conduction]], and thus penetrates only a few dozen centimeters on the daily cycle and only a few dozen meters on the annual cycle. This renders solar radiation minimally relevant for processes internal to [[Earth's crust]]. <ref name=Lowrie2007>Lowrie, W. (2007). ''Fundamentals of geophysics''. Cambridge: CUP, 2a eag.</ref> '' Global data on heat-flow density are collected and compiled by the International Heat Flow Commission of the [[International Association of Seismology and Physics of the Earth's Interior]]. <ref name=ihfc>[http://www.ihfc-iugg.org www.ihfc-iugg.org] IHFC: International Heat Flow Commission – Homepage. Retrieved 18/09/2019.</ref> == Féach freisin * [[Cumhacht gheoiteirmeach]] * [[Grádán geoiteirmeach]] * [[Difreáil pláinéadach]] == Tagairtí {{reflist | refs = <ref name=Turcotte>{{cite book | author1=Donald L. Turcotte | author2=Gerald Schubert | title=Geodynamics | url=https://books.google.com/books?id=-nCHlVuJ4FoC&q=primordial&pg=PA286 | date=25 March 2002|publisher=Cambridge University Press | isbn=978-0-521-66624-4}}</ref> <ref name=Davies2010>{{cite journal | last1=Davies | first1=J.H. | last2=Davies | first2=D.R. | date=22 February 2010 | title=Earth's surface heat flux | volume=1 | issue=1 | pages=5–24 | journal=Solid Earth | doi=10.5194/se-1-5-2010 | doi-access=free |bibcode=2010SolE....1....5D }}</ref> }} == Buntásc == __NOINDEX__ __NOTOC__ 7e03rghsi74gh9zv6ajjd3kgmbtqnok 1329051 1329049 2026-10-02T07:02:29Z Marcas.oduinn 33120 1329051 wikitext text/x-wiki [ [[Úsáideoir:Marcas.oduinn/Tionscadal|Tionscadal]] ] == Ceanntásc == ••• [[:Úsáideoir:TGcoa]] ••• '' príomhscríbhneoir * [[Téamh domhanda]] '' Global warming * [[Aeráid]] '' Climate * [[Tonn teasa]] '' Heat wave * [[Falscaí]] '' Wild fire * [[Dífhoraoisiú]] '' Deforestation * [[Eostatacht]] '' Eustacy * [[:Catagóir:Téamh domhanda]] ** [[:Catagóir:Athrú aeráide]] * [[:Catagóir:Fuinneamh]] ** [[:Catagóir:Fuinneamh inbhuanaithe]] *** [[:Catagóir:Fuinneamh in-athnuaite]] **** [[:Catagóir:Cumhacht gréine]] **** [[:Catagóir:Cumhacht ghaoithe]] **** [[:Catagóir:Cumhacht gheoiteirmeach]] {| class= wikitable |+ Fuinneamh (J) nó cumhacht (W = J/s) ! Cineál !! Fuinneamh !! Cumhacht |- | Grian | [[Grianfhuinneamh]] | [[Grianchumhacht]] |- | Gaoth | [[Fuinneamh gaoithe]] | [[Cumhacht ghaoithe]] |- | Uisce | [[Fuinneamh hiodrálach]] | [[Hidrileictreachas]] |- | Geo | [[Fuinneamh geoiteirmeach]] | [[Cumhacht gheoiteirmeach]] |- | Bith | [[Bithbhreosla]] | [[]] |- | Tonn | [[Fuinneamh tonnta]] | [[Cumhacht tonnta]] |} == Ábhair == === Cúiseanna === * [[Gás ceaptha teasa]], [[Astaíochtaí gás ceaptha teasa]] # [[Astaíochtaí dé-ocsaíd charbóin]] #* [[Astaíochtaí gás ceaptha teasa de bharr talamhaíochta]], [[Lorg carbóin]], [[Poitéinseal téimh dhomhanda]] # ''[[:en:Effects of climate change|Effects of climate change]]'' - [[Éifeachtaí an athraithe aeráide]] === Aontas Eorpach === * [[:Catagóir:An tAontas Eorpach agus an comhshaol]] &#8658; [[:Catagóir:Beartas comhshaoil san AE]] &#8658; [[:Catagóir:Comhaontú Glas don Eoraip]], <s>an [[Comhaontú Glas Don Eoraip]]=</s>an [[Comhaontú Glas don Eoraip]], [[Cláir Réime um Thaighde agus Forbairt Theicneolaíoch]], [[Fís 2020]], [[Fís Eorpach]], [[Clár LIFE]], [[Oiriúnach do 55]], [[Sásra um Choigeartú Carbóin ar Theorainneacha an AE]]=[[Sásra Coigeartaithe Carbóin ar Theorainneacha an AE]] === Teicneolaíocht agus geilleagar === * ''[[:en:Renewable energy|Renewable energy]]'' - [[Fuinneamh in-athnuaite]], [[Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh gheoiteirmeach]], [[Cumhacht gheoiteirmeach]], [[Téamh geoiteirmeach]] # ''[[:en:Earth's internal heat budget|Earth's internal heat budget]]'' - [[Buiséad teasa inmheánaigh an Domhain]] # [[Fuinneamh gaoithe]]=[[Cumhacht ghaoithe]] # ''[[:en:Wave power|Wave power]]'' - [[Cumhacht tonnta]] # ''[[:en:Net-zero emissions|Net-zero emissions]]'' - [[Neodracht carbóin]]=[[Astaíochtaí glan-nialais]] # ''[[:en:Fossil fuel subsidies|Fossil fuel subsidies]]'' - [[Fóirdheontas breosla iontaise]] # ''[[:en:Carbon tariff|Carbon tariff]]'' - [[Tairif carbóin]] # ''[[:en:Carbon pricing|Carbon pricing]]'' - [[Praghsáil carbóin]] # ''[[:en: Carbon capture and storage| Carbon capture and storage]]'' - [[Gabháil agus stóráil carbóin]] # ''[[:en:Circular economy|Circular economy]]'' - [[Geilleagar ciorclach]] # ''[[:en:International Energy Agency|International Energy Agency]]'' - [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh]] #* [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh In-athnuaite]] # ''[[:en:Toxic waste|Toxic waste]]'' - [[Dramhaíl nimhiúil]] # ''[[:en:Public transport|Public transport]]'' - [[Iompar poiblí]] == Buiséad teasa inmheánaigh an Domhain == [[Íomhá:Earth heat flow.jpg | mion | upright=1.5 | Léarscáil an Domhain le sreabhadh teasa (mW/m<sup>2</sup>) ón taobh istigh go dtí an dromchla.<ref name=Davies2010 /> Feictear an sreabhadh is mó ag [[dromanna aigéanacha]], agus is lú laistigh d'ilchríocha seasmhacha.]] Is méadrach bunúsach é '''Buiséad teasa inmheánaigh an Domhain''' i stair teasa [[an Domhan|an Domhan]]. Meastar go dtagann 47±2 teirea[[vata]] (TW)<ref name=Davies2010 /> ar dromchla an Domhain as dhá phríomh-fhoinse le méideanna cothroma; teas radaigineach ginte ag [[meath radaighníomhach]] sa mhaintlín agus screamh; agus an teas príomhordúil fágtha tar éis [[Domhain#Stair agus taiscéalaíocht|an Domhan]] a chruthú.<ref name=Turcotte /> '' Earth's internal heat travels along [[geothermal gradient]]s and powers most geological processes.<ref name=Buffett> It drives [[comhiompar i screamh an Domhain|comhiompar i screamh an Domhain]], [[teicteonaic phlátaí]], [[orogeny|mountain building]], [[metamorphism|rock metamorphism]] agus [[bolcánacht]].<ref name=Turcotte /> [[Convective heat transfer]] within the planet's [[Earth's core|high-temperature metallic core]] is also theorized to sustain a [[geodynamo]] which generates [[Earth's magnetic field]].<ref name=mit2010 /><ref name=Kageyama1995 /> '' Despite its geological significance, Earth's interior heat contributes only 0.03% of [[Earth's energy budget|Earth's total energy budget]] at the surface, which is dominated by 173,000&nbsp;TW of incoming [[solar radiation]]. <ref name=Archer>{{cite book | isbn=978-0-470-94341-0 | author=Archer, D. | year=2012 | title=Global Warming: Understanding the Forecast | publisher=John Wiley & Sons}}</ref> This external energy source powers most of the planet's atmospheric, oceanic, and biologic processes. Nevertheless on [[land]] and at the [[ocean floor]], the [[sensible heat]] absorbed from non-reflected [[insolation]] flows inward only by means of [[thermal conduction]], and thus penetrates only a few dozen centimeters on the daily cycle and only a few dozen meters on the annual cycle. This renders solar radiation minimally relevant for processes internal to [[Earth's crust]]. <ref name=Lowrie2007>Lowrie, W. (2007). ''Fundamentals of geophysics''. Cambridge: CUP, 2a eag.</ref> '' Global data on heat-flow density are collected and compiled by the International Heat Flow Commission of the [[International Association of Seismology and Physics of the Earth's Interior]]. <ref name=ihfc>[http://www.ihfc-iugg.org www.ihfc-iugg.org] IHFC: International Heat Flow Commission – Homepage. Retrieved 18/09/2019.</ref> == Féach freisin * [[Cumhacht gheoiteirmeach]] * [[Grádán geoiteirmeach]] * [[Difreáil pláinéadach]] == Tagairtí {{reflist | refs = <ref name=Turcotte>{{cite book | author1=Donald L. Turcotte | author2=Gerald Schubert | title=Geodynamics | url=https://books.google.com/books?id=-nCHlVuJ4FoC&q=primordial&pg=PA286 | date=25 March 2002|publisher=Cambridge University Press | isbn=978-0-521-66624-4}}</ref> <ref name=Davies2010>{{cite journal | last1=Davies | first1=J.H. | last2=Davies | first2=D.R. | date=22 February 2010 | title=Earth's surface heat flux | volume=1 | issue=1 | pages=5–24 | journal=Solid Earth | doi=10.5194/se-1-5-2010 | doi-access=free |bibcode=2010SolE....1....5D }}</ref> <ref name=Buffett>Buffett, B. A. (2007). Taking Earth's temperature. Science, 315(5820), 1801–1802.</ref> <ref name=mit2010>{{lua idirlín | url = https://news.mit.edu/2010/explained-dynamo-0325 | teideal = Explained: Dynamo Theory | foilsitheoir = MIT News | údar = Morgan Bettex | dáta =25 Márta 2010}}</ref> <ref name=Kageyama1995>{{cite journal | last1=Kageyama | first1=Akira | last2=Sato | first2=Tetsuya |author3=the Complexity Simulation Group | title=Computer simulation of a magnetohydrodynamic dynamo. II | journal=Physics of Plasmas |date=1 January 1995 | volume=2 |issue=5 | pages=1421–1431 |doi=10.1063/1.871485 | bibcode=1995PhPl....2.1421K }}</ref><ref name=Glatzmaier>{{cite journal | last1=Glatzmaier | first1=Gary A. | last2=Roberts | first2=Paul H. | title=A three-dimensional convective dynamo solution with rotating and finitely conducting inner core and mantle | journal=Physics of the Earth and Planetary Interiors |year=1995 | volume=91 | issue=1–3 | pages=63–75 | doi=10.1016/0031-9201(95)03049-3 | bibcode=1995PEPI...91...63G}}</ref> }} == Buntásc == __NOINDEX__ __NOTOC__ o975fepq6pwod0jjcbvvq4o8jlusvhd 1329052 1329051 2026-10-02T07:05:46Z Marcas.oduinn 33120 /* Buiséad teasa inmheánaigh an Domhain */ 1329052 wikitext text/x-wiki [ [[Úsáideoir:Marcas.oduinn/Tionscadal|Tionscadal]] ] == Ceanntásc == ••• [[:Úsáideoir:TGcoa]] ••• '' príomhscríbhneoir * [[Téamh domhanda]] '' Global warming * [[Aeráid]] '' Climate * [[Tonn teasa]] '' Heat wave * [[Falscaí]] '' Wild fire * [[Dífhoraoisiú]] '' Deforestation * [[Eostatacht]] '' Eustacy * [[:Catagóir:Téamh domhanda]] ** [[:Catagóir:Athrú aeráide]] * [[:Catagóir:Fuinneamh]] ** [[:Catagóir:Fuinneamh inbhuanaithe]] *** [[:Catagóir:Fuinneamh in-athnuaite]] **** [[:Catagóir:Cumhacht gréine]] **** [[:Catagóir:Cumhacht ghaoithe]] **** [[:Catagóir:Cumhacht gheoiteirmeach]] {| class= wikitable |+ Fuinneamh (J) nó cumhacht (W = J/s) ! Cineál !! Fuinneamh !! Cumhacht |- | Grian | [[Grianfhuinneamh]] | [[Grianchumhacht]] |- | Gaoth | [[Fuinneamh gaoithe]] | [[Cumhacht ghaoithe]] |- | Uisce | [[Fuinneamh hiodrálach]] | [[Hidrileictreachas]] |- | Geo | [[Fuinneamh geoiteirmeach]] | [[Cumhacht gheoiteirmeach]] |- | Bith | [[Bithbhreosla]] | [[]] |- | Tonn | [[Fuinneamh tonnta]] | [[Cumhacht tonnta]] |} == Ábhair == === Cúiseanna === * [[Gás ceaptha teasa]], [[Astaíochtaí gás ceaptha teasa]] # [[Astaíochtaí dé-ocsaíd charbóin]] #* [[Astaíochtaí gás ceaptha teasa de bharr talamhaíochta]], [[Lorg carbóin]], [[Poitéinseal téimh dhomhanda]] # ''[[:en:Effects of climate change|Effects of climate change]]'' - [[Éifeachtaí an athraithe aeráide]] === Aontas Eorpach === * [[:Catagóir:An tAontas Eorpach agus an comhshaol]] &#8658; [[:Catagóir:Beartas comhshaoil san AE]] &#8658; [[:Catagóir:Comhaontú Glas don Eoraip]], <s>an [[Comhaontú Glas Don Eoraip]]=</s>an [[Comhaontú Glas don Eoraip]], [[Cláir Réime um Thaighde agus Forbairt Theicneolaíoch]], [[Fís 2020]], [[Fís Eorpach]], [[Clár LIFE]], [[Oiriúnach do 55]], [[Sásra um Choigeartú Carbóin ar Theorainneacha an AE]]=[[Sásra Coigeartaithe Carbóin ar Theorainneacha an AE]] === Teicneolaíocht agus geilleagar === * ''[[:en:Renewable energy|Renewable energy]]'' - [[Fuinneamh in-athnuaite]], [[Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh gheoiteirmeach]], [[Cumhacht gheoiteirmeach]], [[Téamh geoiteirmeach]] # ''[[:en:Earth's internal heat budget|Earth's internal heat budget]]'' - [[Buiséad teasa inmheánaigh an Domhain]] # [[Fuinneamh gaoithe]]=[[Cumhacht ghaoithe]] # ''[[:en:Wave power|Wave power]]'' - [[Cumhacht tonnta]] # ''[[:en:Net-zero emissions|Net-zero emissions]]'' - [[Neodracht carbóin]]=[[Astaíochtaí glan-nialais]] # ''[[:en:Fossil fuel subsidies|Fossil fuel subsidies]]'' - [[Fóirdheontas breosla iontaise]] # ''[[:en:Carbon tariff|Carbon tariff]]'' - [[Tairif carbóin]] # ''[[:en:Carbon pricing|Carbon pricing]]'' - [[Praghsáil carbóin]] # ''[[:en: Carbon capture and storage| Carbon capture and storage]]'' - [[Gabháil agus stóráil carbóin]] # ''[[:en:Circular economy|Circular economy]]'' - [[Geilleagar ciorclach]] # ''[[:en:International Energy Agency|International Energy Agency]]'' - [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh]] #* [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh In-athnuaite]] # ''[[:en:Toxic waste|Toxic waste]]'' - [[Dramhaíl nimhiúil]] # ''[[:en:Public transport|Public transport]]'' - [[Iompar poiblí]] == Buiséad teasa inmheánaigh an Domhain == [[Íomhá:Earth heat flow.jpg | mion | upright=1.5 | Léarscáil an Domhain le sreabhadh teasa (mW/m<sup>2</sup>) ón taobh istigh go dtí an dromchla.<ref name=Davies2010 /> Feictear an sreabhadh is mó ag [[dromanna aigéanacha]], agus is lú laistigh d'ilchríocha seasmhacha.]] Is méadrach bunúsach é '''Buiséad teasa inmheánaigh an Domhain''' i stair teasa [[an Domhan|an Domhan]]. Meastar go dtagann 47±2 teirea[[vata]] (TW)<ref name=Davies2010 /> ar dromchla an Domhain as dhá phríomh-fhoinse le méideanna cothroma; teas radaigineach ginte ag [[meath radaighníomhach]] sa mhaintlín agus screamh; agus an teas príomhordúil fágtha tar éis [[Domhain#Stair agus taiscéalaíocht|an Domhan]] a chruthú.<ref name=Turcotte /> '' Earth's internal heat travels along [[geothermal gradient]]s and powers most geological processes.<ref name=Buffett /> It drives [[comhiompar i screamh an Domhain|comhiompar i screamh an Domhain]], [[teicteonaic phlátaí]], [[orogeny|mountain building]], [[metamorphism|rock metamorphism]] agus [[bolcánacht]].<ref name=Turcotte /> [[Convective heat transfer]] within the planet's [[Earth's core|high-temperature metallic core]] is also theorized to sustain a [[geodynamo]] which generates [[Earth's magnetic field]].<ref name=mit2010 /><ref name=Kageyama1995 /> '' Despite its geological significance, Earth's interior heat contributes only 0.03% of [[Earth's energy budget|Earth's total energy budget]] at the surface, which is dominated by 173,000&nbsp;TW of incoming [[solar radiation]].<ref name=Archer /> This external energy source powers most of the planet's atmospheric, oceanic, and biologic processes. Nevertheless on [[land]] and at the [[ocean floor]], the [[sensible heat]] absorbed from non-reflected [[insolation]] flows inward only by means of [[thermal conduction]], and thus penetrates only a few dozen centimeters on the daily cycle and only a few dozen meters on the annual cycle. This renders solar radiation minimally relevant for processes internal to [[Earth's crust]].<ref name=Lowrie2007 /> '' Global data on heat-flow density are collected and compiled by the International Heat Flow Commission of the [[International Association of Seismology and Physics of the Earth's Interior]].<ref name=ihfc /> == Féach freisin * [[Cumhacht gheoiteirmeach]] * [[Grádán geoiteirmeach]] * [[Difreáil pláinéadach]] == Tagairtí {{reflist | refs = <ref name=Turcotte>{{cite book | author1=Donald L. Turcotte | author2=Gerald Schubert | title=Geodynamics | url=https://books.google.com/books?id=-nCHlVuJ4FoC&q=primordial&pg=PA286 | date=25 March 2002|publisher=Cambridge University Press | isbn=978-0-521-66624-4}}</ref> <ref name=Davies2010>{{cite journal | last1=Davies | first1=J.H. | last2=Davies | first2=D.R. | date=22 February 2010 | title=Earth's surface heat flux | volume=1 | issue=1 | pages=5–24 | journal=Solid Earth | doi=10.5194/se-1-5-2010 | doi-access=free |bibcode=2010SolE....1....5D }}</ref> <ref name=Buffett>Buffett, B. A. (2007). Taking Earth's temperature. Science, 315(5820), 1801–1802.</ref> <ref name=mit2010>{{lua idirlín | url = https://news.mit.edu/2010/explained-dynamo-0325 | teideal = Explained: Dynamo Theory | foilsitheoir = MIT News | údar = Morgan Bettex | dáta =25 Márta 2010}}</ref> <ref name=Kageyama1995>{{cite journal | last1=Kageyama | first1=Akira | last2=Sato | first2=Tetsuya |author3=the Complexity Simulation Group | title=Computer simulation of a magnetohydrodynamic dynamo. II | journal=Physics of Plasmas |date=1 January 1995 | volume=2 |issue=5 | pages=1421–1431 |doi=10.1063/1.871485 | bibcode=1995PhPl....2.1421K }}</ref><ref name=Glatzmaier>{{cite journal | last1=Glatzmaier | first1=Gary A. | last2=Roberts | first2=Paul H. | title=A three-dimensional convective dynamo solution with rotating and finitely conducting inner core and mantle | journal=Physics of the Earth and Planetary Interiors |year=1995 | volume=91 | issue=1–3 | pages=63–75 | doi=10.1016/0031-9201(95)03049-3 | bibcode=1995PEPI...91...63G}}</ref> <ref name=Archer>{{cite book | isbn=978-0-470-94341-0 | author=Archer, D. | year=2012 | title=Global Warming: Understanding the Forecast | publisher=John Wiley & Sons}}</ref> <ref name=Lowrie2007>Lowrie, W. (2007). ''Fundamentals of geophysics''. Cambridge: CUP, 2a eag.</ref> <ref name=ihfc>[http://www.ihfc-iugg.org www.ihfc-iugg.org] IHFC: International Heat Flow Commission – Homepage. Retrieved 18/09/2019.</ref> }} == Buntásc == __NOINDEX__ __NOTOC__ f3v0kuxi2vyqxkkle3ye0d6o6nzw8ul 1329054 1329052 2026-10-02T07:53:34Z Marcas.oduinn 33120 /* Buiséad teasa inmheánaigh an Domhain */ 1329054 wikitext text/x-wiki [ [[Úsáideoir:Marcas.oduinn/Tionscadal|Tionscadal]] ] == Ceanntásc == ••• [[:Úsáideoir:TGcoa]] ••• '' príomhscríbhneoir * [[Téamh domhanda]] '' Global warming * [[Aeráid]] '' Climate * [[Tonn teasa]] '' Heat wave * [[Falscaí]] '' Wild fire * [[Dífhoraoisiú]] '' Deforestation * [[Eostatacht]] '' Eustacy * [[:Catagóir:Téamh domhanda]] ** [[:Catagóir:Athrú aeráide]] * [[:Catagóir:Fuinneamh]] ** [[:Catagóir:Fuinneamh inbhuanaithe]] *** [[:Catagóir:Fuinneamh in-athnuaite]] **** [[:Catagóir:Cumhacht gréine]] **** [[:Catagóir:Cumhacht ghaoithe]] **** [[:Catagóir:Cumhacht gheoiteirmeach]] {| class= wikitable |+ Fuinneamh (J) nó cumhacht (W = J/s) ! Cineál !! Fuinneamh !! Cumhacht |- | Grian | [[Grianfhuinneamh]] | [[Grianchumhacht]] |- | Gaoth | [[Fuinneamh gaoithe]] | [[Cumhacht ghaoithe]] |- | Uisce | [[Fuinneamh hiodrálach]] | [[Hidrileictreachas]] |- | Geo | [[Fuinneamh geoiteirmeach]] | [[Cumhacht gheoiteirmeach]] |- | Bith | [[Bithbhreosla]] | [[]] |- | Tonn | [[Fuinneamh tonnta]] | [[Cumhacht tonnta]] |} == Ábhair == === Cúiseanna === * [[Gás ceaptha teasa]], [[Astaíochtaí gás ceaptha teasa]] # [[Astaíochtaí dé-ocsaíd charbóin]] #* [[Astaíochtaí gás ceaptha teasa de bharr talamhaíochta]], [[Lorg carbóin]], [[Poitéinseal téimh dhomhanda]] # ''[[:en:Effects of climate change|Effects of climate change]]'' - [[Éifeachtaí an athraithe aeráide]] === Aontas Eorpach === * [[:Catagóir:An tAontas Eorpach agus an comhshaol]] &#8658; [[:Catagóir:Beartas comhshaoil san AE]] &#8658; [[:Catagóir:Comhaontú Glas don Eoraip]], <s>an [[Comhaontú Glas Don Eoraip]]=</s>an [[Comhaontú Glas don Eoraip]], [[Cláir Réime um Thaighde agus Forbairt Theicneolaíoch]], [[Fís 2020]], [[Fís Eorpach]], [[Clár LIFE]], [[Oiriúnach do 55]], [[Sásra um Choigeartú Carbóin ar Theorainneacha an AE]]=[[Sásra Coigeartaithe Carbóin ar Theorainneacha an AE]] === Teicneolaíocht agus geilleagar === * ''[[:en:Renewable energy|Renewable energy]]'' - [[Fuinneamh in-athnuaite]], [[Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh gheoiteirmeach]], [[Cumhacht gheoiteirmeach]], [[Téamh geoiteirmeach]] # ''[[:en:Earth's internal heat budget|Earth's internal heat budget]]'' - [[Buiséad teasa inmheánaigh an Domhain]] # [[Fuinneamh gaoithe]]=[[Cumhacht ghaoithe]] # ''[[:en:Wave power|Wave power]]'' - [[Cumhacht tonnta]] # ''[[:en:Net-zero emissions|Net-zero emissions]]'' - [[Neodracht carbóin]]=[[Astaíochtaí glan-nialais]] # ''[[:en:Fossil fuel subsidies|Fossil fuel subsidies]]'' - [[Fóirdheontas breosla iontaise]] # ''[[:en:Carbon tariff|Carbon tariff]]'' - [[Tairif carbóin]] # ''[[:en:Carbon pricing|Carbon pricing]]'' - [[Praghsáil carbóin]] # ''[[:en: Carbon capture and storage| Carbon capture and storage]]'' - [[Gabháil agus stóráil carbóin]] # ''[[:en:Circular economy|Circular economy]]'' - [[Geilleagar ciorclach]] # ''[[:en:International Energy Agency|International Energy Agency]]'' - [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh]] #* [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh In-athnuaite]] # ''[[:en:Toxic waste|Toxic waste]]'' - [[Dramhaíl nimhiúil]] # ''[[:en:Public transport|Public transport]]'' - [[Iompar poiblí]] == Buiséad teasa inmheánaigh an Domhain == [[Íomhá:Earth heat flow.jpg | mion | upright=1.5 | Léarscáil an Domhain le sreabhadh teasa (mW/m<sup>2</sup>) ón taobh istigh go dtí an dromchla.<ref name=Davies2010 /> Feictear an sreabhadh is mó ag [[dromanna aigéanacha]], agus is lú laistigh d'ilchríocha seasmhacha.]] Is méadrach bunúsach é '''Buiséad teasa inmheánaigh an Domhain''' i stair teasa [[an Domhan|an Domhan]]. Meastar go dtagann 47±2 teirea[[vata]] (TW)<ref name=Davies2010 /> ar dromchla an Domhain as dhá phríomh-fhoinse le méideanna cothroma; teas radaigineach ginte ag [[meath radaighníomhach]] sa mhaintlín agus screamh; agus an teas príomhordúil fágtha tar éis [[an Domhan#Stair agus taiscéalaíocht|an Domhan]] a chruthú.<ref name=Turcotte /> Cuireann teas inmheánach an Domhain próiseas geolaíoch chun cinn,<ref name=Buffett /> san áireamh [[comhiompar i screamh an Domhain|comhiompair i screamh an Domhain]], [[teicteonaic phlátaí]], [[oraigineas|tógáil sléibhte]], [[meiteamorfacht|meiteamorfacht carraige]] agus [[bolcánacht]].<ref name=Turcotte /> I dteannta sin, meastar gur foinse [[réimse geomaighnéadach]] an Domhain é [[aistriú teasa chomhiompraigh]] laistigh de [[croí an Domhain|chroí]] an phláinéid.<ref name=mit2010 /><ref name=Kageyama1995 /> '' Despite its geological significance, Earth's interior heat contributes only 0.03% of [[Earth's energy budget|Earth's total energy budget]] at the surface, which is dominated by 173,000&nbsp;TW of incoming [[solar radiation]].<ref name=Archer /> This external energy source powers most of the planet's atmospheric, oceanic, and biologic processes. Nevertheless on [[land]] and at the [[ocean floor]], the [[sensible heat]] absorbed from non-reflected [[insolation]] flows inward only by means of [[thermal conduction]], and thus penetrates only a few dozen centimeters on the daily cycle and only a few dozen meters on the annual cycle. This renders solar radiation minimally relevant for processes internal to [[Earth's crust]].<ref name=Lowrie2007 /> '' Global data on heat-flow density are collected and compiled by the International Heat Flow Commission of the [[International Association of Seismology and Physics of the Earth's Interior]].<ref name=ihfc /> == Féach freisin * [[Cumhacht gheoiteirmeach]] * [[Grádán geoiteirmeach]] * [[Difreáil pláinéadach]] == Tagairtí {{reflist | refs = <ref name=Turcotte>{{cite book | author1=Donald L. Turcotte | author2=Gerald Schubert | title=Geodynamics | url=https://books.google.com/books?id=-nCHlVuJ4FoC&q=primordial&pg=PA286 | date=25 March 2002|publisher=Cambridge University Press | isbn=978-0-521-66624-4}}</ref> <ref name=Davies2010>{{cite journal | last1=Davies | first1=J.H. | last2=Davies | first2=D.R. | date=22 February 2010 | title=Earth's surface heat flux | volume=1 | issue=1 | pages=5–24 | journal=Solid Earth | doi=10.5194/se-1-5-2010 | doi-access=free |bibcode=2010SolE....1....5D }}</ref> <ref name=Buffett>Buffett, B. A. (2007). Taking Earth's temperature. Science, 315(5820), 1801–1802.</ref> <ref name=mit2010>{{lua idirlín | url = https://news.mit.edu/2010/explained-dynamo-0325 | teideal = Explained: Dynamo Theory | foilsitheoir = MIT News | údar = Morgan Bettex | dáta =25 Márta 2010}}</ref> <ref name=Kageyama1995>{{cite journal | last1=Kageyama | first1=Akira | last2=Sato | first2=Tetsuya |author3=the Complexity Simulation Group | title=Computer simulation of a magnetohydrodynamic dynamo. II | journal=Physics of Plasmas |date=1 January 1995 | volume=2 |issue=5 | pages=1421–1431 |doi=10.1063/1.871485 | bibcode=1995PhPl....2.1421K }}</ref><ref name=Glatzmaier>{{cite journal | last1=Glatzmaier | first1=Gary A. | last2=Roberts | first2=Paul H. | title=A three-dimensional convective dynamo solution with rotating and finitely conducting inner core and mantle | journal=Physics of the Earth and Planetary Interiors |year=1995 | volume=91 | issue=1–3 | pages=63–75 | doi=10.1016/0031-9201(95)03049-3 | bibcode=1995PEPI...91...63G}}</ref> <ref name=Archer>{{cite book | isbn=978-0-470-94341-0 | author=Archer, D. | year=2012 | title=Global Warming: Understanding the Forecast | publisher=John Wiley & Sons}}</ref> <ref name=Lowrie2007>Lowrie, W. (2007). ''Fundamentals of geophysics''. Cambridge: CUP, 2a eag.</ref> <ref name=ihfc>[http://www.ihfc-iugg.org www.ihfc-iugg.org] IHFC: International Heat Flow Commission – Homepage. Retrieved 18/09/2019.</ref> }} == Buntásc == __NOINDEX__ __NOTOC__ pr0l1b3f9q6s05pdgp37v4d9699zecn 1329055 1329054 2026-10-02T07:58:02Z Marcas.oduinn 33120 1329055 wikitext text/x-wiki [ [[Úsáideoir:Marcas.oduinn/Tionscadal|Tionscadal]] ] == Ceanntásc == ••• [[:Úsáideoir:TGcoa]] ••• '' príomhscríbhneoir * [[Téamh domhanda]] '' Global warming * [[Aeráid]] '' Climate * [[Tonn teasa]] '' Heat wave * [[Falscaí]] '' Wild fire * [[Dífhoraoisiú]] '' Deforestation * [[Eostatacht]] '' Eustacy * [[:Catagóir:Téamh domhanda]] ** [[:Catagóir:Athrú aeráide]] * [[:Catagóir:Fuinneamh]] ** [[:Catagóir:Fuinneamh inbhuanaithe]] *** [[:Catagóir:Fuinneamh in-athnuaite]] **** [[:Catagóir:Cumhacht gréine]] **** [[:Catagóir:Cumhacht ghaoithe]] **** [[:Catagóir:Cumhacht gheoiteirmeach]] {| class= wikitable |+ Fuinneamh (J) nó cumhacht (W = J/s) ! Cineál !! Fuinneamh !! Cumhacht |- | Grian | [[Grianfhuinneamh]] | [[Grianchumhacht]] |- | Gaoth | [[Fuinneamh gaoithe]] | [[Cumhacht ghaoithe]] |- | Uisce | [[Fuinneamh hiodrálach]] | [[Hidrileictreachas]] |- | Geo | [[Fuinneamh geoiteirmeach]] | [[Cumhacht gheoiteirmeach]] |- | Bith | [[Bithbhreosla]] | [[]] |- | Tonn | [[Fuinneamh tonnta]] | [[Cumhacht tonnta]] |} == Ábhair == === Cúiseanna === * [[Gás ceaptha teasa]], [[Astaíochtaí gás ceaptha teasa]] # [[Astaíochtaí dé-ocsaíd charbóin]] #* [[Astaíochtaí gás ceaptha teasa de bharr talamhaíochta]], [[Lorg carbóin]], [[Poitéinseal téimh dhomhanda]] # ''[[:en:Effects of climate change|Effects of climate change]]'' - [[Éifeachtaí an athraithe aeráide]] # ''[[:en:Earth's energy budget|Earth's energy budget]]'' - [[Buiséad fuinnimh an Domhain]] # ''[[:en:Earth's internal heat budget|Earth's internal heat budget]]'' - [[Buiséad teasa inmheánaigh an Domhain]] === Aontas Eorpach === * [[:Catagóir:An tAontas Eorpach agus an comhshaol]] &#8658; [[:Catagóir:Beartas comhshaoil san AE]] &#8658; [[:Catagóir:Comhaontú Glas don Eoraip]], <s>an [[Comhaontú Glas Don Eoraip]]=</s>an [[Comhaontú Glas don Eoraip]], [[Cláir Réime um Thaighde agus Forbairt Theicneolaíoch]], [[Fís 2020]], [[Fís Eorpach]], [[Clár LIFE]], [[Oiriúnach do 55]], [[Sásra um Choigeartú Carbóin ar Theorainneacha an AE]]=[[Sásra Coigeartaithe Carbóin ar Theorainneacha an AE]] === Teicneolaíocht agus geilleagar === * ''[[:en:Renewable energy|Renewable energy]]'' - [[Fuinneamh in-athnuaite]], [[Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh gheoiteirmeach]], [[Cumhacht gheoiteirmeach]], [[Téamh geoiteirmeach]] # [[Fuinneamh gaoithe]]=[[Cumhacht ghaoithe]] # ''[[:en:Wave power|Wave power]]'' - [[Cumhacht tonnta]] # ''[[:en:Net-zero emissions|Net-zero emissions]]'' - [[Neodracht carbóin]]=[[Astaíochtaí glan-nialais]] # ''[[:en:Fossil fuel subsidies|Fossil fuel subsidies]]'' - [[Fóirdheontas breosla iontaise]] # ''[[:en:Carbon tariff|Carbon tariff]]'' - [[Tairif carbóin]] # ''[[:en:Carbon pricing|Carbon pricing]]'' - [[Praghsáil carbóin]] # ''[[:en: Carbon capture and storage| Carbon capture and storage]]'' - [[Gabháil agus stóráil carbóin]] # ''[[:en:Circular economy|Circular economy]]'' - [[Geilleagar ciorclach]] # ''[[:en:International Energy Agency|International Energy Agency]]'' - [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh]] #* [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh In-athnuaite]] # ''[[:en:Toxic waste|Toxic waste]]'' - [[Dramhaíl nimhiúil]] # ''[[:en:Public transport|Public transport]]'' - [[Iompar poiblí]] == Buiséad teasa inmheánaigh an Domhain == [[Íomhá:Earth heat flow.jpg | mion | upright=1.5 | Léarscáil an Domhain le sreabhadh teasa (mW/m<sup>2</sup>) ón taobh istigh go dtí an dromchla.<ref name=Davies2010 /> Feictear an sreabhadh is mó ag [[dromanna aigéanacha]], agus is lú laistigh d'ilchríocha seasmhacha.]] Is méadrach bunúsach é '''Buiséad teasa inmheánaigh an Domhain''' i stair teasa [[an Domhan|an Domhan]]. Meastar go dtagann 47±2 teirea[[vata]] (TW)<ref name=Davies2010 /> ar dromchla an Domhain as dhá phríomh-fhoinse le méideanna cothroma; teas radaigineach ginte ag [[meath radaighníomhach]] sa mhaintlín agus screamh; agus an teas príomhordúil fágtha tar éis [[an Domhan#Stair agus taiscéalaíocht|an Domhan]] a chruthú.<ref name=Turcotte /> Cuireann teas inmheánach an Domhain próiseas geolaíoch chun cinn,<ref name=Buffett /> san áireamh [[comhiompar i screamh an Domhain|comhiompair i screamh an Domhain]], [[teicteonaic phlátaí]], [[oraigineas|tógáil sléibhte]], [[meiteamorfacht|meiteamorfacht carraige]] agus [[bolcánacht]].<ref name=Turcotte /> I dteannta sin, meastar gur foinse [[réimse geomaighnéadach]] an Domhain é [[aistriú teasa chomhiompraigh]] laistigh de [[croí an Domhain|chroí]] an phláinéid.<ref name=mit2010 /><ref name=Kageyama1995 /> '' Despite its geological significance, Earth's interior heat contributes only 0.03% of [[Earth's energy budget|Earth's total energy budget]] at the surface, which is dominated by 173,000&nbsp;TW of incoming [[solar radiation]].<ref name=Archer /> This external energy source powers most of the planet's atmospheric, oceanic, and biologic processes. Nevertheless on [[land]] and at the [[ocean floor]], the [[sensible heat]] absorbed from non-reflected [[insolation]] flows inward only by means of [[thermal conduction]], and thus penetrates only a few dozen centimeters on the daily cycle and only a few dozen meters on the annual cycle. This renders solar radiation minimally relevant for processes internal to [[Earth's crust]].<ref name=Lowrie2007 /> '' Global data on heat-flow density are collected and compiled by the International Heat Flow Commission of the [[International Association of Seismology and Physics of the Earth's Interior]].<ref name=ihfc /> == Féach freisin * [[Cumhacht gheoiteirmeach]] * [[Grádán geoiteirmeach]] * [[Difreáil pláinéadach]] == Tagairtí {{reflist | refs = <ref name=Turcotte>{{cite book | author1=Donald L. Turcotte | author2=Gerald Schubert | title=Geodynamics | url=https://books.google.com/books?id=-nCHlVuJ4FoC&q=primordial&pg=PA286 | date=25 March 2002|publisher=Cambridge University Press | isbn=978-0-521-66624-4}}</ref> <ref name=Davies2010>{{cite journal | last1=Davies | first1=J.H. | last2=Davies | first2=D.R. | date=22 February 2010 | title=Earth's surface heat flux | volume=1 | issue=1 | pages=5–24 | journal=Solid Earth | doi=10.5194/se-1-5-2010 | doi-access=free |bibcode=2010SolE....1....5D }}</ref> <ref name=Buffett>Buffett, B. A. (2007). Taking Earth's temperature. Science, 315(5820), 1801–1802.</ref> <ref name=mit2010>{{lua idirlín | url = https://news.mit.edu/2010/explained-dynamo-0325 | teideal = Explained: Dynamo Theory | foilsitheoir = MIT News | údar = Morgan Bettex | dáta =25 Márta 2010}}</ref> <ref name=Kageyama1995>{{cite journal | last1=Kageyama | first1=Akira | last2=Sato | first2=Tetsuya |author3=the Complexity Simulation Group | title=Computer simulation of a magnetohydrodynamic dynamo. II | journal=Physics of Plasmas |date=1 January 1995 | volume=2 |issue=5 | pages=1421–1431 |doi=10.1063/1.871485 | bibcode=1995PhPl....2.1421K }}</ref><ref name=Glatzmaier>{{cite journal | last1=Glatzmaier | first1=Gary A. | last2=Roberts | first2=Paul H. | title=A three-dimensional convective dynamo solution with rotating and finitely conducting inner core and mantle | journal=Physics of the Earth and Planetary Interiors |year=1995 | volume=91 | issue=1–3 | pages=63–75 | doi=10.1016/0031-9201(95)03049-3 | bibcode=1995PEPI...91...63G}}</ref> <ref name=Archer>{{cite book | isbn=978-0-470-94341-0 | author=Archer, D. | year=2012 | title=Global Warming: Understanding the Forecast | publisher=John Wiley & Sons}}</ref> <ref name=Lowrie2007>Lowrie, W. (2007). ''Fundamentals of geophysics''. Cambridge: CUP, 2a eag.</ref> <ref name=ihfc>[http://www.ihfc-iugg.org www.ihfc-iugg.org] IHFC: International Heat Flow Commission – Homepage. Retrieved 18/09/2019.</ref> }} == Buntásc == __NOINDEX__ __NOTOC__ m7ovo32buxpjur1zobc998e9j92oak8 1329056 1329055 2026-10-02T08:33:19Z Marcas.oduinn 33120 /* Cúiseanna */ 1329056 wikitext text/x-wiki [ [[Úsáideoir:Marcas.oduinn/Tionscadal|Tionscadal]] ] == Ceanntásc == ••• [[:Úsáideoir:TGcoa]] ••• '' príomhscríbhneoir * [[Téamh domhanda]] '' Global warming * [[Aeráid]] '' Climate * [[Tonn teasa]] '' Heat wave * [[Falscaí]] '' Wild fire * [[Dífhoraoisiú]] '' Deforestation * [[Eostatacht]] '' Eustacy * [[:Catagóir:Téamh domhanda]] ** [[:Catagóir:Athrú aeráide]] * [[:Catagóir:Fuinneamh]] ** [[:Catagóir:Fuinneamh inbhuanaithe]] *** [[:Catagóir:Fuinneamh in-athnuaite]] **** [[:Catagóir:Cumhacht gréine]] **** [[:Catagóir:Cumhacht ghaoithe]] **** [[:Catagóir:Cumhacht gheoiteirmeach]] {| class= wikitable |+ Fuinneamh (J) nó cumhacht (W = J/s) ! Cineál !! Fuinneamh !! Cumhacht |- | Grian | [[Grianfhuinneamh]] | [[Grianchumhacht]] |- | Gaoth | [[Fuinneamh gaoithe]] | [[Cumhacht ghaoithe]] |- | Uisce | [[Fuinneamh hiodrálach]] | [[Hidrileictreachas]] |- | Geo | [[Fuinneamh geoiteirmeach]] | [[Cumhacht gheoiteirmeach]] |- | Bith | [[Bithbhreosla]] | [[]] |- | Tonn | [[Fuinneamh tonnta]] | [[Cumhacht tonnta]] |} == Ábhair == === Cúiseanna === * [[Gás ceaptha teasa]], [[Astaíochtaí gás ceaptha teasa]] # [[Astaíochtaí dé-ocsaíd charbóin]] #* [[Astaíochtaí gás ceaptha teasa de bharr talamhaíochta]], [[Lorg carbóin]], [[Poitéinseal téimh dhomhanda]] # ''[[:en:Earth's energy budget|Earth's energy budget]]'' - [[Buiséad fuinnimh an Domhain]] # ''[[:en:Earth's internal heat budget|Earth's internal heat budget]]'' - [[Buiséad teasa inmheánaigh an Domhain]] # ''[[:en:Effects of climate change|Effects of climate change]]'' - [[Éifeachtaí an athraithe aeráide]] === Aontas Eorpach === * [[:Catagóir:An tAontas Eorpach agus an comhshaol]] &#8658; [[:Catagóir:Beartas comhshaoil san AE]] &#8658; [[:Catagóir:Comhaontú Glas don Eoraip]], <s>an [[Comhaontú Glas Don Eoraip]]=</s>an [[Comhaontú Glas don Eoraip]], [[Cláir Réime um Thaighde agus Forbairt Theicneolaíoch]], [[Fís 2020]], [[Fís Eorpach]], [[Clár LIFE]], [[Oiriúnach do 55]], [[Sásra um Choigeartú Carbóin ar Theorainneacha an AE]]=[[Sásra Coigeartaithe Carbóin ar Theorainneacha an AE]] === Teicneolaíocht agus geilleagar === * ''[[:en:Renewable energy|Renewable energy]]'' - [[Fuinneamh in-athnuaite]], [[Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh inbhuanaithe]], [[:Catagóir:Fuinneamh gheoiteirmeach]], [[Cumhacht gheoiteirmeach]], [[Téamh geoiteirmeach]] # [[Fuinneamh gaoithe]]=[[Cumhacht ghaoithe]] # ''[[:en:Wave power|Wave power]]'' - [[Cumhacht tonnta]] # ''[[:en:Net-zero emissions|Net-zero emissions]]'' - [[Neodracht carbóin]]=[[Astaíochtaí glan-nialais]] # ''[[:en:Fossil fuel subsidies|Fossil fuel subsidies]]'' - [[Fóirdheontas breosla iontaise]] # ''[[:en:Carbon tariff|Carbon tariff]]'' - [[Tairif carbóin]] # ''[[:en:Carbon pricing|Carbon pricing]]'' - [[Praghsáil carbóin]] # ''[[:en: Carbon capture and storage| Carbon capture and storage]]'' - [[Gabháil agus stóráil carbóin]] # ''[[:en:Circular economy|Circular economy]]'' - [[Geilleagar ciorclach]] # ''[[:en:International Energy Agency|International Energy Agency]]'' - [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh]] #* [[an Ghníomhaireacht Idirnáisiúnta Fuinnimh In-athnuaite]] # ''[[:en:Toxic waste|Toxic waste]]'' - [[Dramhaíl nimhiúil]] # ''[[:en:Public transport|Public transport]]'' - [[Iompar poiblí]] == Buiséad teasa inmheánaigh an Domhain == [[Íomhá:Earth heat flow.jpg | mion | upright=1.5 | Léarscáil an Domhain le sreabhadh teasa (mW/m<sup>2</sup>) ón taobh istigh go dtí an dromchla.<ref name=Davies2010 /> Feictear an sreabhadh is mó ag [[dromanna aigéanacha]], agus is lú laistigh d'ilchríocha seasmhacha.]] Is méadrach bunúsach é '''Buiséad teasa inmheánaigh an Domhain''' i stair teasa [[an Domhan|an Domhan]]. Meastar go dtagann 47±2 teirea[[vata]] (TW)<ref name=Davies2010 /> ar dromchla an Domhain as dhá phríomh-fhoinse le méideanna cothroma; teas radaigineach ginte ag [[meath radaighníomhach]] sa mhaintlín agus screamh; agus an teas príomhordúil fágtha tar éis [[an Domhan#Stair agus taiscéalaíocht|an Domhan]] a chruthú.<ref name=Turcotte /> Cuireann teas inmheánach an Domhain próiseas geolaíoch chun cinn,<ref name=Buffett /> san áireamh [[comhiompar i screamh an Domhain|comhiompair i screamh an Domhain]], [[teicteonaic phlátaí]], [[oraigineas|tógáil sléibhte]], [[meiteamorfacht|meiteamorfacht carraige]] agus [[bolcánacht]].<ref name=Turcotte /> I dteannta sin, meastar gur foinse [[réimse geomaighnéadach]] an Domhain é [[aistriú teasa chomhiompraigh]] laistigh de [[croí an Domhain|chroí]] an phláinéid.<ref name=mit2010 /><ref name=Kageyama1995 /> '' Despite its geological significance, Earth's interior heat contributes only 0.03% of [[Earth's energy budget|Earth's total energy budget]] at the surface, which is dominated by 173,000&nbsp;TW of incoming [[solar radiation]].<ref name=Archer /> This external energy source powers most of the planet's atmospheric, oceanic, and biologic processes. Nevertheless on [[land]] and at the [[ocean floor]], the [[sensible heat]] absorbed from non-reflected [[insolation]] flows inward only by means of [[thermal conduction]], and thus penetrates only a few dozen centimeters on the daily cycle and only a few dozen meters on the annual cycle. This renders solar radiation minimally relevant for processes internal to [[Earth's crust]].<ref name=Lowrie2007 /> '' Global data on heat-flow density are collected and compiled by the International Heat Flow Commission of the [[International Association of Seismology and Physics of the Earth's Interior]].<ref name=ihfc /> == Féach freisin * [[Cumhacht gheoiteirmeach]] * [[Grádán geoiteirmeach]] * [[Difreáil pláinéadach]] == Tagairtí {{reflist | refs = <ref name=Turcotte>{{cite book | author1=Donald L. Turcotte | author2=Gerald Schubert | title=Geodynamics | url=https://books.google.com/books?id=-nCHlVuJ4FoC&q=primordial&pg=PA286 | date=25 March 2002|publisher=Cambridge University Press | isbn=978-0-521-66624-4}}</ref> <ref name=Davies2010>{{cite journal | last1=Davies | first1=J.H. | last2=Davies | first2=D.R. | date=22 February 2010 | title=Earth's surface heat flux | volume=1 | issue=1 | pages=5–24 | journal=Solid Earth | doi=10.5194/se-1-5-2010 | doi-access=free |bibcode=2010SolE....1....5D }}</ref> <ref name=Buffett>Buffett, B. A. (2007). Taking Earth's temperature. Science, 315(5820), 1801–1802.</ref> <ref name=mit2010>{{lua idirlín | url = https://news.mit.edu/2010/explained-dynamo-0325 | teideal = Explained: Dynamo Theory | foilsitheoir = MIT News | údar = Morgan Bettex | dáta =25 Márta 2010}}</ref> <ref name=Kageyama1995>{{cite journal | last1=Kageyama | first1=Akira | last2=Sato | first2=Tetsuya |author3=the Complexity Simulation Group | title=Computer simulation of a magnetohydrodynamic dynamo. II | journal=Physics of Plasmas |date=1 January 1995 | volume=2 |issue=5 | pages=1421–1431 |doi=10.1063/1.871485 | bibcode=1995PhPl....2.1421K }}</ref><ref name=Glatzmaier>{{cite journal | last1=Glatzmaier | first1=Gary A. | last2=Roberts | first2=Paul H. | title=A three-dimensional convective dynamo solution with rotating and finitely conducting inner core and mantle | journal=Physics of the Earth and Planetary Interiors |year=1995 | volume=91 | issue=1–3 | pages=63–75 | doi=10.1016/0031-9201(95)03049-3 | bibcode=1995PEPI...91...63G}}</ref> <ref name=Archer>{{cite book | isbn=978-0-470-94341-0 | author=Archer, D. | year=2012 | title=Global Warming: Understanding the Forecast | publisher=John Wiley & Sons}}</ref> <ref name=Lowrie2007>Lowrie, W. (2007). ''Fundamentals of geophysics''. Cambridge: CUP, 2a eag.</ref> <ref name=ihfc>[http://www.ihfc-iugg.org www.ihfc-iugg.org] IHFC: International Heat Flow Commission – Homepage. Retrieved 18/09/2019.</ref> }} == Buntásc == __NOINDEX__ __NOTOC__ 98qp8lvf7r0s0srh53m9rcxvnpba2mi Foclóir téarmaí luibheolaíochta 0 123407 1329040 1328989 2026-10-01T21:22:57Z Conan Wolff 51812 cailciarrthach - calcicole; cailctheifeach - calcifuge 1329040 wikitext text/x-wiki {{Teimpléad:Athbhreithniú}} Míníonn an foclóir téarmaí luibheolaíochta seo téarmaí luibheolaíochta. ==A== *'''achtanamorfach''' (''actinomorphic'' as Béarla)<ref>“achtanamorfach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 1, 2026, from https://www.tearma.ie/q/achtanamorfach/ga/</ref>[[File:Fragaria vesca2.jpg|thumb|right|120px|Bláth achtanamorfach de ''[[Fragaria vesca]]'']]</br>Bíonn bláthanna aictiomorfacha ga-shiméadrach.<ref>Eckel, P. M. (n.d.). A Grammatical Dictionary of Botanical Latin. Missouri Botanical Garden. Retrieved March 1, 2026, from https://www.mobot.org/mobot/latindict/keyDetail.aspx?keyWord=actinomorphic</ref> <!--*'''acraifil''' (''acrophyll'' as Béarla)</br>Duilleoga rialta de phlanda aibí, a tháirgtear os cionn an bhoinn, murab ionann is an bhasaifil.--> *'''aff.'''</br>Ciallaíonn an giorrúchán "aff.", giorrúchán do "affinis", "cosúil le" nó "gaolmhar le". Léiríonn sé leibhéal éiginnteachta maidir le sainaithint speicis.<ref name = "Common abbreviations">Common abbreviations. (n.d.). The New York Botanical Garden. Retrieved September 29, 2026, from https://sweetgum.nybg.org/wiki/index.php?title=Common_Abbreviations</ref> *'''aicéin''' (''achene'' as Béarla)<ref>“aicéin.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 18, 2026, from https://www.tearma.ie/q/aic%C3%A9in/ga/</ref></br>Is toradh tirim, neamhoscailte, aon-shíolach é aicéin. Níl an síol ceangailte de bhalla an toraidh ach ag pointe amháin. Fásann an toradh ó ubhagán uachtarach aon-sheoimrín.<ref name = "FTG Fruit type Glossary">Glossary Fruit type. (2007). Fairchild Tropical Botanic Garden Virtual Herbarium (FTG). Retrieved April 18, 2026, from http://www.virtualherbarium.org/glossary/glossary.php?cid=65</ref> *'''aindréiciam''' (''androecium'' as Béarla)<ref>“aindréiciam.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 7, 2026, from https://www.tearma.ie/q/aindr%C3%A9iciam/ga/</ref></br>Is é an aindréiciam an téarma comhchoiteann do na horgáin atáirgthe fireanna sa bhláth, atá comhdhéanta de na staimín.<ref>Androecium, stamen, staminate, staminode. (2026, February 23). Master Gardeners of Northern Virginia. Retrieved March 7, 2026, from https://mgnv.org/plants/glossary/androecium-stamen-staminate/</ref> *'''aineoplóideach''' (''aneuploid'' as Béarla)<ref>“aineoplóideach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 27, 2026, from https://www.tearma.ie/q/aineopl%C3%B3ideach/ga/</ref></br>Is uimhir an chrómasóim mínormalach i ngéanóm é aineoplóideach.<ref name = "Reproductive Medicine Associates">Leary, W. (2025, November 23). Aneuploidy in Embryos: Chromosomal Abnormalities in IVF. Reproductive Medicine Associates. Retrieved September 27, 2026, from https://rmanetwork.com/blog/aneuploidy-embryos-abnormalities-ivf/</ref> {{Il-íomhánna | align = left | direction = horizontal | total_width = 180 | header = | image1 = 2020 year. Herbarium. Alchemilla vulgaris. img-014.jpg | alt1 = | caption1 = onn-aiseach | image2 = 2020 year. Herbarium. Alchemilla vulgaris. img-008.jpg | alt2 = | caption2 = all-aiseach }} *'''all-aiseach''' (''abaxial'' as Béarla)<ref>“all-aiseach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 18, 2026, from https://www.tearma.ie/q/all-aiseach/ga/</ref></br>Aidiacht, a bhfuil a treo urchomhaireach le treo na haise (= taobh íochtair).<ref name = "Flora of Rwanda Glossary" /> <!--*'''andragíneafór''' (''androgynophore'' as Béarla)</br>Gas ar a bhfuil an t-aindréiciam agus an gínéiciam de bhláth os cionn leibhéal ionsáite an pheirianta.--> <!--*'''andramoinéiciach''' (''andromonoecious'' as Béarla)</br>Córas annamh pórúcháin plandaí é andramoinéiciach ina dtáirgeann planda aonair bláthanna fireanna agus déghnéasacha araon.--> <!--*'''andrafór''' (''androphore'' as Béarla)</br>An gas nó an colún a thacaíonn leis na staimíní i mbláthanna áirithe.--> *'''angaispeirm''' (''angiosperm'' as Béarla)<ref>“angaispeirm.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 1, 2026, from https://www.tearma.ie/q/angaispeirm/ga/</ref>[[File:Okra (Abelmoschus esculentus) cross-section - 20080613.png|thumb|right|120px|In angaispeirm, bíonn na ubhúlaigh faoi iamh i gcairpéil.<ref name = "Bedecktsamer" />]]</br>Is grúpa plandaí iad na angiospermaigh a bhfuil ubhúlach acu atá iata i gcairpéil.<ref name = "Bedecktsamer">Bedecktsamer. (2007, June 18). Lexikon Der Biologie. Retrieved March 1, 2026, from https://www.spektrum.de/lexikon/biologie/bedecktsamer/7737</ref> ==B== *'''baictéar fosaithe nítrigine''' (''nitrogen-fixing bacterium'' as Béarla)<ref name = "fosú nítrigine">“fosú nítrigine.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 19, 2026, from https://www.tearma.ie/q/fos%C3%BA%20n%C3%ADtrigine/ga/</ref></br>Úsáideann baictéar fosaithe nítrigine einsím chun nítrigin atmaisféarach ({{Chem2|N2|auto=1}}) a thiontú go amóinia ({{Chem2|NH3|auto=1}}).<ref name = "Wagner, 2011">Wagner, S. C. (2011). Biological Nitrogen Fixation. Nature Education. Retrieved September 19, 2026, from https://www.nature.com/scitable/knowledge/library/biological-nitrogen-fixation-23570419/</ref> *'''baictéar nóidín''' (''nodule bacterium'' as Béarla)<ref name = "nóidín">“nóidín.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 19, 2026, from https://www.tearma.ie/q/n%C3%B3id%C3%ADn/ga/</ref></br>Déanann baictéir nóidín, amhail ''[[Rhizobium]]'' nó ''[[Bradyrhizobium]]'', coilíniú ar na fréamhacha agus cruthaíonn siad nóidíní. Maireann na baictéir sna nóidíní. Soláthraíonn na fosaitheoirí nítrigine seo nítrigin don phlanda.<ref name = "Wagner, 2011" /> *'''barraimsitheach''' (''acropetal'' as Béarla)<ref>“barraimsitheach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 18, 2026, from https://www.tearma.ie/q/barraimsitheach/ga/</ref></br>Ciallaíonn an téarma ''barraimsitheach'' go dtosaíonn rud ag fás nó ag forbairt ag an mbun agus go leanann sé aníos i dtreo an bharr.<ref name = "Tropical Forages Glossary">Cook BG, Pengelly BC, Schultze-Kraft R, Taylor M, Burkart S, Cardoso Arango JA, González Guzmán JJ, Cox K, Jones C, Peters M. & International Center for Tropical Agriculture (CIAT), Cali, Colombia and International Livestock Research Institute (ILRI), Nairobi, Kenya. (2020). Glossary. Tropical Forages: An Interactive Selection Tool. 2nd and Revised Edn. Retrieved April 18, 2026, from https://tropicalforages.info/text/entities/glossary.htm</ref> *'''bláthra''' (''inflorescence'' as Béarla)<ref name = "bláthra">“bláthra.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 9, 2026, from https://www.tearma.ie/q/bl%C3%A1thra/ga/</ref></br>Is grúpa bláthanna é bláthra.<ref name = "UCMP, 2009" /> *'''bleib''' (''bulb'' as Béarla)<ref>“bleib.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved February 28, 2026, from https://super.tearma.ie/q/bleib/ga/</ref>[[File:White onion cross section.jpg|thumb|right|70px|bleib]]</br>Is gas faoi thalamh modhnaithe é bleibe, atá timpeallaithe ag duilleoga modhnaithe.<ref>What is a bulb? (2020, March 17). Michigan State University Extension. Retrieved February 28, 2026, from https://www.canr.msu.edu/news/what-is-a-bulb</ref> *'''bliantóg''' (''annual plant'' as Béarla)<ref>“bliantóg.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved May 30, 2026, from https://www.tearma.ie/q/bliant%C3%B3g/ga/</ref></br>Bláthaíonn agus faigheann bliantóg bás i mbliain amháin.<ref name = "Jessop et al., 2011" /> [[File:Sorbus aucuparia vaisiai, 2006-0823.jpg|thumb|left|120px|Bréagthorthaí ''[[Sorbus aucuparia]]'']] *'''bréagthoradh''' (''accessory fruit'' as Béarla)<ref>“bréagthoradh.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 5, 2026, from https://www.tearma.ie/q/br%C3%A9agthoradh/ga/</ref></br> Is cineál toraidh é bréagthoradh a fhorbraíonn ó struchtúir cairpéil agus eachtarcairpéil araon.<ref name = "Bobrov & Romanov, 2019" /> ==C== *'''cailciarrthach''' (''calcicole'' as Béarla)<ref>cailciarrthach. (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved October 1, 2026, from https://www.tearma.ie/q/cailciarrthach/ga/</ref></br>Ní fhásann planda cailclonnaitheach ach ar ithreacha cailcreacha nó is fearr leis ithir cailcreach.<ref name = "Glossary CBN des Hauts-de-France" /> *'''cailctheifeach''' (''calcifuge'' as Béarla)<ref>cailctheifeach. (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved October 1, 2026, from https://www.tearma.ie/q/cailctheifeach/ga/</ref></br>Seachnaíonn planda cailctheifeach fás ar aolchloch. Is féidir le cailciam a bheith tocsaineach do na plandaí seo.<ref name = "Glossary CBN des Hauts-de-France" /> *'''cf.'''</br>Ciallaíonn an giorrúchán "cf.", giorrúchán do "confer", "cuir i gcomparáid". Léirítear aitheantas neamhchinnte le "cf." in ainm tacsóin.<ref name = "Florida Museum Glossary" /> *'''cill''' (''cell'' as Béarla)<ref name = "cell">“cell.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 26, 2026, from https://www.tearma.ie/q/cell/</ref></br>Is í cill an t-aonad struchtúrach bunúsach d'orgánaigh.<ref name = "Algae of Australia Glossary" /> *'''cill stórais''' (''storage cell'' as Béarla)<ref name = "cell" /></br>D’fhéadfadh go mbeadh cainníochtaí móra polaisiúicrídí, próitéiní, lipidí,<ref name = "Fasseas, 1980">Fasseas, C. (1980). [https://theses.gla.ac.uk/72881/1/10647162.pdf Fine structural studies on differentiation and dedifferentiation in the higher plant.]] University of Glasgow (United Kingdom).</ref>{{rp|1}} nó uisce i gcill stórais.<ref name = "Mauseth, 1995">Mauseth, J. D. (1995). [https://www.jstor.org/stable/2996453 Collapsible water-storage cells in cacti.] Bulletin of the Torrey Botanical Club, 145-151.</ref> *'''cléisteagamacht''' (''cleistogamy'' as Béarla)<ref>“cléisteagamacht.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 30, 2026, from https://www.tearma.ie/q/cl%C3%A9isteagamacht/ga/</ref></br>Ní osclaíonn bláthanna cléisteagamacha agus tá siad uathghamacha.<ref name = "Hickey & King, 2000" />{{rp|8}} *'''clóraplast''' (''chloroplast'' as Béarla)<ref name = "clóraplast">clóraplast. (n.d.-b). Gaois Research Group. Retrieved March 14, 2026, from https://www.gaois.ie/en/terminology/fiat/620910</ref></br>Is orgánaid cheallach plandaí é an [[clóraplast]] a dhéanann an [[fótaisintéis]].<ref name = "clóraplast" /> {{Il-íomhánna | align = left | direction = horizontal | total_width = 180 | header = | image1 = Inflorescences Corymb Kwiatostan BaldachGrono.svg | alt1 = | caption1 = coirím raicéimeach<!-- racemose corymb --> | image2 = Schirmrispe (inflorescence).svg | alt2 = | caption2 = coirím címeach<!-- cymose corymb --> }} *'''coirím''' (''corymb'' as Béarla)<ref>“coirím.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 19, 2026, from https://www.tearma.ie/q/coir%C3%ADm/ga/</ref></br>Is cineál bláthra é coirím ina dtosaíonn na craobhacha ó phointí difriúla, ach sroicheann siad an airde chéanna.<ref name = "Jessop et al., 2011" /> *'''coirt''' (''bark'' as Béarla)<ref>“coirt.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 20, 2026, from https://www.tearma.ie/q/coirt/ga/</ref></br>Is í an choirt an ciseal seachtrach cosanta de fhréamhacha agus gais plandaí adhmadacha.<ref name = "Hodgkiss, 2019" /> *'''colúinín''' (''columella'' as Béarla)<ref>“colúinín.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved June 1, 2026, from https://www.tearma.ie/q/col%C3%BAin%C3%ADn/ga/</ref></br>Is colún beag fíocháin é colúinín atá i lár capsúl.<ref name = "UCMP, 2009" /> *'''comhsheipealach''' (''gamosepalous'' as Béarla)<ref>“comhsheipealach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 23, 2026, from https://www.tearma.ie/q/comhsheipealach/ga/</ref></br>I gcailís chomhsheipealach bíonn na seipil comhleáite.<ref>Hyde, M.A., Wursten, B.T., Ballings, P. & Coates Palgrave, M. (n.d.). Flora of Mozambique: Glossary details: gamosepalous. Retrieved March 23, 2026, from https://www.mozambiqueflora.com/speciesdata/glossary-display.php?glossary_id=318</ref> *'''crann''' (''tree'' as Béarla)<ref>“crann.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved February 28, 2026, from https://super.tearma.ie/q/crann/ga/</ref>[[File:Tree Silhouette - geograph.org.uk - 2274631.jpg|thumb|right|70px|crann]]</br>Is planda adhmadach é crann le gas príomhúil amháin agus craobhacha tánaisteacha.<ref>Shrubs and trees: What defines a tree or a shrub? (2020, March 27). Los Angeles County Arboretum and Botanic Garden. Retrieved February 28, 2026, from https://arboretum.org/visit/library/online-exhibits/treasures-of-the-rare-book-collection-plants-of-mediterranean-climate-areas/shrubs-and-trees/</ref> *'''crann fíliginiteach''' (''phylogenetic tree'' as Béarla<!-- citation needed {{cn}} -->)[[Íomhá:Crann.png|thumb|right|90px|Crann fíliginiteach]]</br>Léiríonn [[crann fíliginiteach]] na gaolta idir orgánaigh éagsúla.<ref name = "Georgia Tech">Phylogenetic Trees. (n.d.). Georgia Tech Biological Sciences. Retrieved March 9, 2026, from https://organismalbio.biosci.gatech.edu/biodiversity/phylogenetic-trees/</ref> *'''crannlann''' (''arboretum'' as Béarla)<ref>“crannlann.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved May 30, 2026, from https://www.tearma.ie/q/crannlann/ga/</ref></br>Is bailiúchán crann agus toir é [[crannlann]].<ref>Forschungsstelle Realienkunde  Zentralinstitut für Kunstgeschichte. (n.d.). Arboretum. RDK Labor. Retrieved May 30, 2026, from https://www.rdklabor.de/wiki/Arboretum</ref> ==D== *'''deacaplóideach''' (''decaploid'' as Béarla)<!-- citation needed --></br>Tá deich sraith crómasóm i ngéanóm decaplóideach.<ref name = "Beentje, 2010" />{{rp|37}} *'''dé-éiciach''' (''dioecious'' as Béarla)<ref>“dé-éiciach.” (n.d.). téarma.ie. https://www.tearma.ie/q/d%C3%A9-%C3%A9iciach/ga/</ref></br>Bíonn daoine aonair fireanna agus baineanna ar leith ag plandaí dé-éiciach.<ref name = "Flora of Australia Glossary" /> *'''dioplóideach''' (''diploid'' as Béarla)<ref>“dioplóideach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved May 27, 2026, from https://www.tearma.ie/q/diopl%C3%B3ideach/ga/</ref></br>Tá dhá cheann de na tacair bhunúsacha crómasóm ag plandaí dioplóideacha sa núicléas.<ref name = "NSW Flora Glossary">National Herbarium of NSW,  Royal Botanic Garden, Sydney, Australia. (n.d.). New South Wales Flora Online: Glossary of Botanical Terms. Retrieved May 27, 2026, from https://plantnet.rbgsyd.nsw.gov.au/cgi-bin/NSWfl.pl?page=nswfl&glossary=yes&alpha=A</ref> [[File:Cuscuta campestris sl22.jpg|thumb|left|130px|Diúlán an seadán éigeanta ''[[Cuscuta campestris]]'']] *'''diúlán''' (''haustorium'' as Béarla)<ref>“diúlán.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 26, 2026, from https://www.tearma.ie/q/di%C3%BAl%C3%A1n/ga/</ref></br>Is orgán é diúlán trína n-ionsúnn seadán substaintí ceimiceacha óna óstach.<ref name = "Flora of Australia Glossary" /> ==E== *'''éaghasach''' (''acaulescent'' as Béarla)<ref>“éaghasach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved June 10, 2026, from https://www.tearma.ie/q/%C3%A9aghasach/ga/</ref>[[File:Carlina acaulis RF.jpg|thumb|right|120px|Is planda éaghasach é ''[[Carlina acaulis]]'']]</br>Is plandaí gan gas iad plandaí éaghasacha.<ref name = "Flora of Rwanda Glossary" /> *'''eipifít''' (''epiphyte'' as Béarla)<ref>“eipifít.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 9, 2026, from https://www.tearma.ie/q/eipif%C3%ADt/ga/</ref></br>Is planda é eipifít a fhásann ar phlanda eile, ach ní seadán é.<ref name = "UCMP, 2009" /> *'''eiseamláir an chineáil''' (''type specimen'' as Béarla)<ref>“eiseamláir an chineáil.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 23, 2026, from https://www.tearma.ie/q/eiseaml%C3%A1ir%20an%20chine%C3%A1il/ga/</ref>[[File:Cyne baetorta, HT, L39275.jpg|thumb|right|100px|An eiseamláir an chineáil de ''[[Cyne baetorta]]'' Barlow]]</br>Sainmhíníonn agus déanann an eiseamláir an chineáil ionadaíocht ar tacsón. Feidhmíonn sé mar thagairt fhisiciúil don tacsón.<ref>Ashworth, J. (2025, November 18). What is a type specimen? Natural History Museum, London. Retrieved March 23, 2026, from https://www.nhm.ac.uk/discover/what-is-a-type-specimen.html</ref> *'''eoplóideach''' (''euploid'' as Béarla)<ref>“eoplóideach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 27, 2026, from https://www.tearma.ie/q/eopl%C3%B3ideach/ga/</ref></br>Is uimhir an chrómasóim normalach i ngéanóm é eoplóideach.<ref name = "Reproductive Medicine Associates" /> ==F== *'''fad idirnódach''' (''internode distance'' as Béarla)<ref name = "internode" /></br>Tá an fad idirnódach athraitheach. Féadfaidh sé athrú bunaithe ar an solas gréine atá ar fáil.<ref name = "Rare Plant Atlas">Glossary. (n.d.). Rare Plant Atlas. Retrieved September 20, 2026, from https://www.rareplantatlas.com/glossary</ref> *'''faireog mheala''' (''nectary'' as Béarla)<ref>“faireog mheala.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 19, 2026, from https://www.tearma.ie/q/faireog%20mheala/ga/</ref></br>Is struchtúr faireogach é faireog mheala a scaoileann leacht siúcrach (neachtar). Is féidir leis a bheith ina struchtúr i mbláth (faireog mheala bláthach), nó in áit eile ar an bplanda (faireog mheala eachtar-bláthach).<ref name = "Flora of Rwanda Glossary" /> *'''fearsaidchruthach''' (''fusiform'' as Béarla)<ref>“fearsaidchruthach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 26, 2026, from https://www.tearma.ie/q/fearsaidchruthach/ga/</ref></br>Ciallaíonn fearsaidchruthach cruth fearsaid, níos tibhe sa lár agus ag barrchaolú ag an dá cheann.<ref name = "Algae of Australia Glossary" /> *'''fialamán''' (''velamen'' as Béarla)<ref>“fialamán.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved May 27, 2026, from https://www.tearma.ie/q/fialam%C3%A1n/ga/</ref></br>Is é an fialamán clúdach tiubh spúinseach na bhfréamhacha.<ref>Botanical nerd word: velamen. (2021, February 8). Toronto Botanical Garden. Retrieved May 27, 2026, from https://torontobotanicalgarden.ca/blog/word-of-the-week/word-of-the-week-velamen/</ref> [[File:Semele androgyna k4.jpg|thumb|left|140px|''[[Semele androgyna]]'' filleaclaid le torthaí]] *'''filleaclad''' (''phylloclade'' as Béarla)<ref>“filleaclad.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved June 11, 2026, from https://www.tearma.ie/q/filleaclad/ga/</ref></br> Is gas fótaisintéiseach cosúil le duilleog é filleaclad.<ref name = "Flora of Australia Glossary" /> *'''fosú nítrigine''' (''nitrogen fixation'' as Béarla)<ref name = "fosú nítrigine" /></br>Is é fosú nítrigine an próiseas ina ndéantar nítrigin atmaisféarach ({{Chem2|N2|auto=1}}) a thiontú go amóinia ({{Chem2|NH3|auto=1}}).<ref name = "Wagner, 2011" /> *'''fréamh chrapthach''' (''contractile root'' as Béarla)<ref>“fréamh chrapthach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved February 28, 2026, from https://super.tearma.ie/q/fr%C3%A9amh%20chrapthach/ga/</ref></br>Úsáideann plandaí fréamhacha chrapthach chun iad féin a tharraingt anuas.<ref>University of Florida, University of Kentucky, & Texas A&M University. (2023). Contractile Roots. PropG. Retrieved February 28, 2026, from https://propg.ifas.ufl.edu/07-geophytes/02-othergeophytes/01-geophytes-contractileroots.html</ref> *'''fréamhnóidín''' (''root nodule'' as Béarla)<ref name = "nóidín" /></br>Foirmítear nóidín fréimhe nuair a choilíniúnaíonn baictéir fosaithe nítrigine na fréamhacha.<ref name = "Wagner, 2011" /> ==G== *'''gaiméitifít''' (''gametophyte'' as Béarla)<ref name = "gaiméitifít" />[[File:Ricciocarpos natans.jpg|thumb|right|105px|Gaiméitifít de ''[[Ricciocarpos natans]]'']]</br>Fásann an gaiméitifít haplóideach ó spóir agus táirgeann sí gaiméite.<ref name = "gaiméitifít">gaiméitifít. (n.d.). Gaois Research Group. Retrieved March 15, 2026, from https://www.gaois.ie/en/terminology/fiat/619447</ref> [[File:Dandelion seed dispersal.jpg|thumb|left|110px|gaothscaipeadh síl]] *'''gaothscaipeadh síl''' (''anemochory'' as Béarla)<ref>“gaothscaipeadh síl.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 24, 2026, from https://www.tearma.ie/q/gaothscaipeadh%20s%C3%ADl/ga/</ref></br>Is é gaothscaipeadh síl scaipeadh síolta leis an ngaoth.<ref name = "Lewis, 2019" /> <!--*'''gasach''' (''caulescent'' as Béarla)</br>Planda a bhfuil gas dea-fhorbartha aige os cionn na talún. Frithchiallach: ''gearrghasach'' (gan gas soiléir).--> *'''gínéiciam''' (''gynoecium'' as Béarla)<ref>“gínéiciam.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 6, 2026, from https://www.tearma.ie/q/g%C3%ADn%C3%A9iciam/ga/</ref></br>Is é an gínéiciam an téarma comhchoiteann do orgáin atáirgthe baineanna an bhlátha, atá comhdhéanta de na cairpéil.<ref>Gynoecium, Carpel, Pistil. (2025, February 22). Master Gardeners Northern Virginia. Retrieved March 6, 2026, from https://mgnv.org/plants/glossary/gynoecium-carpel-pistil/</ref> <!--*'''ginmhill''' (''abort'' as Béarla)</br>Forbairt struchtúir nó orgáin a thréigean.--> ==H== *'''haplóideach''' (''haploid'' as Béarla)<ref>“haplóideach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 27, 2026, from https://www.tearma.ie/q/hapl%C3%B3ideach/ga/</ref></br>Níl ach sraith amháin crómasóm ag géanóm haplóideach.<ref name = "Reproductive Medicine Associates" /> *'''heicseaplóideach''' (''hexaploid'' as Béarla)<!-- citation needed --></br>Tá sé sraith crómasóm i géanóm heicseaplóideach.<ref name = "LabXchange" /> *'''heipteaplóideach''' (''heptaploid'' as Béarla)<!-- citation needed --></br>Tá seacht sraith crómasóm i géanóm heipteaplóideach.<ref name = "LabXchange" /> *'''heitreaspórach''' (''heterosporous'' as Béarla)<ref>“heitreaspórach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved February 28, 2026, from https://super.tearma.ie/q/heitreasp%C3%B3rach/ga/</ref></br>Táirgeann plandaí heitreaspóracha dhá chineál spóir.<ref name = "Flora of Rwanda Glossary" /> *'''homaspórach''' (''homosporous'' as Béarla)</br>Planda nach bhfuil ach spóir de chineál amháin aige.<ref name = "Glossary British Pteridological Society" /> ==I== *'''idirnód''' (''internode'' as Béarla)<ref name = "internode">“internode.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 20, 2026, from https://www.tearma.ie/q/internode/</ref></br/>Is éard atá in idirnód an chuid de ghas idir dhá nód.<ref name = "Hodgkiss, 2019" /> *'''ilseipealach''' (''polysepalous'' as Béarla)<ref>“ilseipealach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 23, 2026, from https://www.tearma.ie/q/ilseipealach/ga/</ref></br>I cailís ilseipealach, bíonn na séipéil scartha.<ref>Hyde, M.A., Wursten, B.T., Ballings, P. & Coates Palgrave, M. (2026). Flora of Caprivi: Glossary details: polysepalous. Retrieved March 23, 2026, from https://www.capriviflora.com/speciesdata/glossary-display.php?glossary_id=565</ref> *'''inspeirm''' (''endosperm'' as Béarla)<ref>“inspeirm.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved February 28, 2026, from https://www.tearma.ie/q/inspeirm/ga/</ref>[[File:Cocos nucifera00.jpg|thumb|right|100px|An inspeirm bán de shíol ''[[Cocos nucifera]]'']]</br>Is cuid den síol é an inspeirm agus cothaíonn sé an spóraifít óg.<ref>Endosperm. (2007, June 18). Lexikon Der Biologie. Retrieved February 28, 2026, from https://www.spektrum.de/lexikon/biologie/endosperm/21284</ref> ==L== [[File:Latex collection 04.jpg|thumb|left|upright|90px|Laitéis]] *'''laitéis''' (''latex'' as Béarla)<ref>“laitéis.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved May 30, 2026, from https://www.tearma.ie/q/lait%C3%A9is/ga/</ref></br>Is sú bán de roinnt plandaí é laitéis.<ref name = "vPlants" /> *'''lann''' (''lamina'' as Béarla)<ref>“lann.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 14, 2026, from https://www.tearma.ie/q/lann/ga/</ref></br>Is é an lann an chuid leacaithe de dhuilleog, scartha ón ngas agus ó bhonn an duilleoige.<ref>Botanical nerd word: lamina. (2018, September 25). Toronto Botanical Garden. Retrieved March 14, 2026, from https://torontobotanicalgarden.ca/blog/word-of-the-week/botanical-nerd-word-lamina/</ref> *'''lansach''' (''lanceolate'' as Béarla)<ref>“lansach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 21, 2026, from https://www.tearma.ie/q/lansach/ga/</ref>[[File:Leaf morphology lanceolate.png|thumb|right|140px|Duilleog lansach ]]</br>Bíonn duilleog lansach caol agus ubhchruthach. Bíonn an pointe is leithne inti thíos leis an lár.<ref name = "The Pea Key, 2007">The Australian Pea-flowered Legume Research Group. (2007). Leaf or leaflet shape. The Pea Key: An Interactive Key for Australian Pea-flowered Legumes. Retrieved March 21, 2026, from https://www.anbg.gov.au/cpbr/cd-keys/peakey/key/The%20Pea%20Key/Media/Html/41_leaf_shape.html</ref> *'''leathadh na bhfréamhacha''' (''branching of roots'' as Béarla)<ref>“leathadh na bhfréamhacha.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 27, 2026, from https://www.tearma.ie/q/leathadh%20na%20bhfr%C3%A9amhacha/ga/</ref></br>Tá leathadh na bhfréamhacha tábhachtach do phlandaí chun iad féin a ancaireadh agus chun uisce, mianraí agus cothaithigh a fháil.<ref name = "Atkinson et al., 2014">Atkinson, J. A., Rasmussen, A., Traini, R., Voß, U., Sturrock, C., Mooney, S. J., ... & Bennett, M. J. (2014). [https://pmc.ncbi.nlm.nih.gov/articles/PMC4213086/pdf/538.pdf Branching out in roots: uncovering form, function, and regulation.] Plant Physiology, 166(2), 538-550.</ref> *'''leictitíopa''' (''lectotype'' as Béarla)<ref>“leictitíopa.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 23, 2026, from https://www.tearma.ie/q/leictit%C3%ADopa/ga/</ref></br>Is sintíopa é leictitíopa a roghnaítear níos déanaí mar an eiseamláir an chineáil.<ref name = "McGrouther, 2020">McGrouther, M. (2020). Types of types. The Australian Museum. Retrieved March 23, 2026, from https://australian.museum/learn/animals/fishes/types-of-types/</ref> *'''liathghorm''' (''glaucous'' as Béarla)<ref>IDM & Foras na Gaeilge. (n.d.). glaucous. Foclóirí Ár Linne. Retrieved March 3, 2026, from https://www.focloir.ie/en/dictionary/ei/glaucous</ref>[[File:Picea pungens4.jpg|thumb|right|90px|Duilleoga liathghorm na ''[[Picea pungens]]'']]</br>Déanann an focal liathghorm cur síos ar dhromchla céiriúil atá idir ghorm agus liath.<ref>Eckel, P. M. (2023). A Grammatical Dictionary of Botanical Latin. Missouri Botanical Garden. Retrieved March 3, 2026, from https://www.mobot.org/mobot/latindict/keyDetail.aspx?keyWord=glaucous</ref> *'''luathbhaineannach''' (''protogynous'' as Béarla)<ref>“luathbhaineannach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 13, 2026, from https://www.tearma.ie/q/luathbhaineannach/ga/</ref></br>Bíonn céim baineann ag bláth luathbhaineannach roimh a chéim fhireann ar leith.<ref>New York Botanical Garden. (n.d.). Protogyny (protogynous). French Guianan E-Flora Project. Retrieved March 13, 2026, from https://sweetgum.nybg.org/science/projects/fg/glossary-details/?irn=1302</ref> *'''luathfhireannach''' (''protandrous'' as Béarla)<ref>“luathfhireannach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 13, 2026, from https://www.tearma.ie/q/luathfhireannach/ga/</ref></br>Bíonn céim fhireann ag bláth luathfhireannach roimh a chéim baineann ar leith.<ref>New York Botanical Garden. (n.d.-a). Protandry (protandrous). French Guianan E-Flora Project. Retrieved March 13, 2026, from https://sweetgum.nybg.org/science/projects/fg/glossary-details/?irn=1300</ref> ==M== *'''máthairshíol''' (''seed parent'' as Béarla)<ref>“máthairshíol.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved July 30, 2026, from https://www.tearma.ie/q/m%C3%A1thairsh%C3%ADol/ga/</ref></br> An máthairshíol a thugtar ar an phlanda a fhásann an síol.<ref>MacRobert, J., Setimela, P. S., Gethi, J., & Regasa, M. W. (2014). [https://excellenceinbreeding.org/sites/default/files/manual/98078.pdf Maize hybrid seed production manual.] {{Webarchive|url=https://web.archive.org/web/20260730221946/https://excellenceinbreeding.org/sites/default/files/manual/98078.pdf |date=2026-07-30 }}</ref> *'''meigeagaiméitifít''' (''megagametophyte'' as Béarla)<ref>“meigeagaiméitifít.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved February 28, 2026, from https://super.tearma.ie/q/meigeagaim%C3%A9itif%C3%ADt/ga/</ref></br>Cruthaítear an meigeagaiméitifít le fás na meigeaspóir. Gineann an meigeagaiméitifít gaiméit baineann an phlanda heitreaspórach.<ref>Government of South Australia. (2025, July 7). megagametophyte. Flora of South Australia. Retrieved February 28, 2026, from https://flora.sa.gov.au/glossary/megagametophyte</ref> *'''meigeaspór''' (''megaspore'' as Béarla)<ref>“meigeaspór.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 9, 2026, from https://www.tearma.ie/q/meigeasp%C3%B3r/ga/</ref></br>I bplandaí heitreaspóracha, is é an meigeaspór an cineál mór spóir. Fásann sé ina gaiméitifít baineann.<ref name = "UCMP, 2009" /> *'''meiteaxiléim''' (''metaxylem'' as Béarla)<!-- citation needed --></br>Is cuid den xiléim phríomhúil é an meiteaxiléim, ar céim luath í i bhforbairt an xiléim.<ref name = "Xylem - PropG" /> *'''micreagaiméitifít''' (''microgametophyte'' as Béarla)<ref>“micreagaiméitifít.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 21, 2026, from https://www.tearma.ie/q/micreagaim%C3%A9itif%C3%ADt/ga/</ref></br>Fásann an micreagaiméitifít ón micreaspór agus táirgeann sé na gaiméite fireann de phlanda heitreaspórach.<ref name = "Flora of Australia Glossary" /> *'''micreaspór''' (''microspore'' as Béarla)<ref>“micreaspór.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 9, 2026, from https://www.tearma.ie/q/micreasp%C3%B3r/</ref></br>I bplandaí heitreaspóracha, is é an micreaspór an cineál beag spóir. Fásann sé ina gaiméitifít fhireann.<ref name = "UCMP, 2009" /> *'''micripíl''' (''micropyle'' as Béarla)<ref>“micripíl.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 13, 2026, from https://www.tearma.ie/q/micrip%C3%ADl/ga/</ref></br>Is cainéal beag é an micripíl a thrasnaíonn ionar ubhúlach.<ref name = "Flora of Australia Glossary" /> <!--*'''micreastrobalas''' (microstrobilus as Béarla)<ref>https://www.tearma.ie/q/micro-/</ref><ref>https://super.tearma.ie/q/strobilus/</ref> An ceann is lú de dhá chineál bhuaircíní nó strobalas a tháirgeann gimnispeirmeacha, an ceann fireann é agus táirgeann sé an phailin.--> *'''monasómacht''' (''monosomy'' as Béarla)<ref>“monasómacht.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 27, 2026, from https://www.tearma.ie/q/monas%C3%B3macht/ga/</ref></br>Is cineál aineoplóideacht í an monasómacht. Sainmhínítear í trí scriosadh crómasóm i géanóm.<ref name = "Reproductive Medicine Associates" /> ==N== [[File:E mammillaris ies.jpg|thumb|left|70px|neachtar]] *'''naonaplóideach''' (''nonaploid'' as Béarla)<!-- citation needed --></br>Tá naoi sraith crómasóm i géanóm naonaplóideach.<ref name = "Sugiura et al., 2000">Sugiura, A., Ohkuma, T., Choi, Y. A., Tao, R., & Tamura, M. (2000). [https://journals.ashs.org/downloadpdf/view/journals/jashs/125/5/article-p609.pdf Production of nonaploid (2n= 9x) Japanese persimmons (''Diospyros kaki'') by pollination with unreduced (2n= 6x) pollen and embryo rescue culture.] Journal of the American Society for Horticultural Science, 125(5), 609-614.</ref> *'''neachtar''' (''nectar'' as Béarla)<ref name = "neachtar">“neachtar.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 19, 2026, from https://www.tearma.ie/q/neachtar/ga/</ref></br>Is leacht milis é neachtar a scaoileann faireog mheala na bláthanna mar luach saothair tarraingteach d'ainmhithe pailniúcháin.<ref name = "Betterbee" /> *'''nideog éiceolaíoch''' (''ecological niche'' as Béarla)<ref>“nideog éiceolaíoch.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 20, 2026, from https://www.tearma.ie/q/nideog%20%C3%A9iceola%C3%ADoch/ga/</ref></br>Is éard is nideog éiceolaíoch ann ná iomlán na gcaidreamh idir speiceas agus a comhshaol.<ref name = "Folkmann, 2019">Folkmann, M. (2019). [https://grabbe-gymnasium.de/spr/biologie/AB%20Glossar%20Oekologie.pdf Glossar zur Ökologie.] Detmold; Christian-Dietrich-Grabbe-Gymnasium.</ref> *'''nód''' (''node'' as Béarla)<ref>“nód.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 20, 2026, from https://www.tearma.ie/q/n%C3%B3d/ga/</ref></br>Is é nód an pointe ar an gas as a bhfásann duilleoga nó craobhacha.<ref name = "Devlin, 2026" /> *'''nóidín fréimhe''' (''root nodule'' as Béarla)<ref name = "nóidín" /></br>Foirmítear nóidín fréimhe nuair a choilíniúnaíonn baictéir fosaithe nítrigine na fréamhacha.<ref name = "Wagner, 2011" /> ==O== *'''ochtaplóideach''' (''octoploid'' as Béarla)<ref>“ochtaplóideach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 28, 2026, from https://www.tearma.ie/q/ochtapl%C3%B3ideach/ga/</ref></br>Tá ocht sraith crómasóm i géanóm ochtaplóideach.<ref name = "LabXchange" /> *'''olasóm''' (''elaiosome'' as Béarla)<ref>“olasóm.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved June 1, 2026, from https://www.tearma.ie/q/olas%C3%B3m/ga/</ref>[[File:Afzelia africana1.jpg|thumb|right|140px|Síolta ''[[Afzelia africana]]'' a bhfuil olasóm oráiste orthu]]</br>Is cuid chothaitheach de shíol é olasóm a mheallann ainmhithe cosúil le seangáin. Cuidíonn sé le scaipeadh síolta.<ref name = "Flora of Australia Glossary" /> *'''onn-aiseach''' (''adaxial'' as Béarla)<ref>“onn-aiseach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved July 28, 2026, from https://www.tearma.ie/q/onn-aiseach/ga/</ref></br>Tá dromchlaí onn-aiseach os comhair ais an struchtúir a bhfuil sé ceangailte leis.<ref name = "vPlants" /> ==P== *'''peinteaplóideach''' (''pentaploid'' as Béarla)<!-- citation needed --></br>Tá cúig shraith crómasóm i géanóm peinteaplóideach.<ref name = "LabXchange" /> <!--* '''peitínáit''' (''petiolate'' as Béarla) aidiacht ina ndéantar cur síos ar dhuilleoga nó ar struchtúir bhitheolaíocha a bhfuil gas (peitín) orthu, agus iad ceangailte go díreach le gas nó brainse. <ref>https://www.tearma.ie/q/petiolate/ ??</ref>--> *'''piorrachruthach''' (''pyriform'' as Béarla)<ref name = "piorrachruthach">“piorrachruthach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 11, 2026, from https://www.tearma.ie/q/piorrachruthach/</ref>[[File:Ficus pyriformis.JPG|thumb|right|125px|Torthaí piorrachruthacha an ''[[Ficus pyriformis]]'']]</br>Aidiacht, i gcruth péire.<ref name = "piorrachruthach" /> *'''prótaixiléim''' (''protoxylem'' as Béarla)<!-- citation needed --></br>Is cuid den xiléim phríomhúil é an prótaixiléim, ar céim luath í i bhforbairt an xiléim.<ref name = "Xylem - PropG" /> ==R== [[File:Inflorescences Raceme Kwiatostan Grono.svg|thumb|left|upright|55px|raicéim]] *'''raicéim''' (''raceme'' as Béarla)<ref>“raicéim.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 19, 2026, from https://super.tearma.ie/q/raic%C3%A9im/ga/</ref></br>Is cineál bláthra é raicéim le hais neamhroinnte ar a bhfuil bláthanna gasógacha.<ref name = "Jessop et al., 2011" /> ==S== <!--*'''scoitheadh''' (''abscission'' as Béarla)</br>Scaoileadh nádúrtha orgáin atá aibí nó sean, amhail toradh aibí nó duilleog aosta.--> <!--*'''snáthaidiúil''' (acicular as Béarla)</br>Caol nó snáthaidchruthach.--> *'''samár''' (''samara'' as Béarla)<ref>“samár.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved June 11, 2026, from https://www.tearma.ie/q/sam%C3%A1r/ga/</ref></br>Is toradh neamhoscailteach aonsíolta le sciatháin é samár.<ref name = "Gray, 1875" />{{rp|p=79}} *'''siogót''' (''zygote'' as Béarla)<ref>“siogót.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 26, 2026, from https://www.tearma.ie/q/siog%C3%B3t/ga/</ref></br>Is éard atá i siogót an chill dhioplóideach a eascraíonn as comhleá gaiméit.<ref name = "Algae of Australia Glossary" /> *'''síol''' (''seed'' as Béarla)<ref name = "síl" /></br>Is éard atá i síol suth agus a struchtúir chosanta agus a struchtúir chothaitheacha atá in ann forbairt ina phlanda.<ref name = "Hodgkiss, 2019" /> *'''síol inphéactha''' (''germinable seed'' as Béarla)<ref name = "síl">“síl.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 24, 2026, from https://www.tearma.ie/q/s%C3%ADl/</ref></br>Tá síolta inphéactha in ann forbairt ina síológ.<ref>Keimfähigkeit. (n.d.). Bundesverband Deutscher Pflanzenzüchter. Retrieved September 24, 2026, from https://www.bdp-online.de/de/Pflanzenzuechtung/Glossar/terms/Keimfaehigkeit/</ref> *'''síológ''' (''seedling'' as Béarla)<ref>“síológ.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 26, 2026, from https://www.tearma.ie/q/s%C3%ADol%C3%B3g/ga/</ref></br>Is planda beag é síológ a fhásann ó shíol agus de ghnáth ní bhíonn ach a cotailéadóin agus cúpla duilleog leis.<ref name = "Seed sowing glossary">Seed sowing glossary. (n.d.). Foundation for Arable Research. Retrieved September 26, 2026, from https://www.far.org.nz/schools/seed-sowing-glossary</ref> [[File:Arum creticum Marmaris White.jpg|thumb|left|120px|''[[Arum creticum]]'' le spáidín bán agus spáideog buí]] *'''spáideog''' (''spadix'' as Béarla)<ref>“spáideog.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 12, 2026, from https://www.tearma.ie/q/sp%C3%A1ideog/ga/</ref></br>Is cineál bláthra é spáideog ina mbíonn bláthanna ag fás ar ais tiubh, feolmhar.<ref name = "Flora of Rwanda Glossary" /> *'''spáidín''' (''spathe'' as Béarla)<ref>“spáidín.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 12, 2026, from https://www.tearma.ie/q/sp%C3%A1id%C3%ADn/ga/</ref></br>Is bracht mór é spáidín a thimpeallaíonn an spáideog.<ref name = "Sterry, 1997">Sterry, P. (1997). [https://www.google.de/books/edition/Collins_Complete_British_Wildlife_Photog/H2oXAAAACAAJ?hl=en Collins Complete British Wildlife Photoguide.] Kiribati: HarperCollins.</ref>{{rp|p=356}} *'''speiceas i mbaol criticiúil''' (''critically endangered species'' as Béarla)<ref name = "speiceas i mbaol criticiúil" />[[File:凹脈金花茶 Camellia impressinervis -香港公園 Hong Kong Park, Hong Kong- (39897970614).jpg|thumb|right|100px|Is speiceas i mbaol criticiúil é ''[[Camellia impressinervis]]''.<ref>Wheeler, L. & Rivers, M.C. 2015. ''Camellia impressinervis''. The IUCN Red List of Threatened Species 2015: e.T62053740A62053758. https://dx.doi.org/10.2305/IUCN.UK.2015-2.RLTS.T62053740A62053758.en. Accessed on 01 March 2026.</ref>]]<br/>Is speicis iad speicis atá i mbaol criticiúil díothaithe sa nádúr atá thar a bheith ard.<ref name = "speiceas i mbaol criticiúil">Fiontar & Scoil na Gaeilge, DCU. (n.d.). “speiceas i mbaol criticiúil.” Grúpa Taighde Gaois. Retrieved March 1, 2026, from https://www.gaois.ie/en/terminology?Query=speiceas+i+mbaol+critici%C3%BAil</ref> *'''speiceas is lú imní''' (''least-concern species'' as Béarla)<!-- citation needed --></br>Is tacsóin forleathana agus flúirseacha iad speiceas is lú imní.<ref name = "IUCN, 2012">IUCN. (2012). [https://portals.iucn.org/library/sites/library/files/documents/RL-2001-001-2nd.pdf IUCN Red List Categories and Criteria: Version 3.1. Second edition.] Gland, Switzerland and Cambridge, UK: IUCN. iv + 32pp.</ref> Tá riosca níos ísle díothaithe ag na speicis seo.<ref>Frequently Asked Questions. (n.d.). IUCN Red List of Threatened Species. Retrieved April 18, 2026, from https://www.iucnredlist.org/about/faqs#Why%20are%20LC%20species%20on%20the%20Red%20List</ref> *'''speiceas leochaileach''' (''vulnerable species'' as Béarla)<ref name = "speiceas leochaileach" /></br>Tá riosca ard díothaithe sa nádúr ag speiceas leochaileach.<ref name = "speiceas leochaileach">speiceas leochaileach. (n.d.). Gaois Research Group. Retrieved March 10, 2026, from https://www.gaois.ie/en/terminology/fiat/635130</ref> *'''spor''' (''spur'' as Béarla)<ref>“spor.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 20, 2026, from https://www.tearma.ie/q/spor/ga/</ref></br>Is síneadh feadánach log den coróinín é spor.<ref name = "Devlin, 2026" /> [[File:Prunus AbscissionZone 1 (35974302350).jpg|thumb|right|120px|Sraith scoite ''[[Prunus]]'']] *'''sraith scoite''' (''abscission layer'' as Béarla)<ref>“sraith scoite.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved August 31, 2026, from https://www.tearma.ie/q/sraith%20scoite/ga/</ref></br> Is sraith cealla í sraith scoite ina mbriseann orgán titimeach, mar shampla duilleog.<ref>Botanical Orchid Glossary: Glossary Term: Abscission layer. (n.d.). Orchids of New Guinea. Retrieved August 31, 2026, from https://www.orchidsnewguinea.com/orchid-glossary/define-term/Abscission+layer/</ref> [[File:Phyla cuneifolia runner.jpg|thumb|left|120px|''[[Phyla cuneifolia]]'' stólan]] *'''stólan''' (''stolon'' as Béarla)<ref>“stólan.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved June 11, 2026, from https://www.tearma.ie/q/st%C3%B3lan/ga/</ref></br>Gas cothrománach is ea stólan a shníonn os cionn, ar nó faoi dhromchla na talún<ref name = "Flora of Rwanda Glossary" /> agus a fhásann planda nua.<ref name = "Glossary British Pteridological Society" /> *'''strobalas''' (''strobilus'' as Béarla)<ref>“strobalas.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 14, 2026, from https://www.tearma.ie/q/strobalas/ga/</ref></br>Is éard is strobalas ann ná struchtúr cosúil le buaircín atá comhdhéanta de spóraifille atá iompaithe go dlúth ar an ais.<ref name = "Flora of Australia Glossary" /> ==T== *'''teipeal''' (''tepal'' as Béarla)<ref>“teipeal.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 4, 2026, from https://www.tearma.ie/q/teipeal/ga/</ref></br>Úsáidtear an téarma teipal do chodanna an peirianta má tá cuma an-chosúil ar na peitil agus ar na seipil.<ref>Hyde, M.A., Wursten, B.T., Ballings, P. & Coates Palgrave, M. (2026). Flora of Caprivi: Glossary details: tepal. https://www.capriviflora.com/speciesdata/glossary-display.php?glossary_id=768, retrieved 4 March 2026</ref> *'''teitreaplóideach''' (''tetraploid'' as Béarla)<ref>“teitreaplóideach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 27, 2026, from https://www.tearma.ie/q/teitreapl%C3%B3ideach/ga/</ref></br>Tá dhá shraith bhreise crómasóm ag géanóm teitreaplóideach.<ref name = "Reproductive Medicine Associates" /> [[File:Tetradium daniellii (Benn.) T.G. Hartley.jpg|thumb|left|120px|Torthú bláthra ''[[Tetradium daniellii]]'']] *'''torthú bláthra''' (''infructescence'' as Béarla)<ref name = "bláthra" /></br>Is é an torthú bláthra an struchtúr ina dtaispeántar torthaí ar phlanda.<ref name = "Glossary for Vascular Plants">Glossary for Vascular Plants. (2018, November 19). New York Botanical Garden. Retrieved March 9, 2026, from https://sweetgum.nybg.org/science/glossary/glossary-list/?ImagesOnly=yes&LimitPerPage=75&rownum=676</ref> *'''treoir neachtair''' (''nectar guide'' as Béarla)<ref name = "neachtar" /></br>Is marcanna nó patrúin ar bhláthanna iad treoracha neachtair a threoraíonn feithidí chuig an neachtar.<ref name = "Betterbee">Glossary of beekeeping Terms. (n.d.). Betterbee. Retrieved September 19, 2026, from https://www.betterbee.com/glossary/</ref> *'''triocóm''' (''trichome'' as Béarla)<ref>“triocóm.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 29, 2026, from https://www.tearma.ie/q/trioc%C3%B3m/ga/</ref></br>Is struchtúr filiméadach nó cosúil le ribe gruaige é triocóm.<ref name = "Benisch, n.d." /> *'''trioplóideach''' (''triploid'' as Béarla)<ref>“trioplóideach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 27, 2026, from https://www.tearma.ie/q/triopl%C3%B3ideach/ga/</ref></br>Tá sraith bhreise crómasóm ag géanóm trioplóideach.<ref name = "Reproductive Medicine Associates" /> *'''trísómacht''' (''trisomy'' as Béarla)<ref>“trísómacht.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 27, 2026, from https://www.tearma.ie/q/tr%C3%ADs%C3%B3macht/ga/</ref></br>Is cineál aineoplóideacht í an trísómacht. Sainmhínítear í mar cóip breise crómasóm i géanóm.<ref name = "Reproductive Medicine Associates" /> ==U== *'''uathghamacht''' (''autogamy'' as Béarla)<ref>“uathghamacht.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 30, 2026, from https://www.tearma.ie/q/uathghamacht/ga/</ref></br>Is é uathghamacht toirchiú ubhúlach le pailin an phlanda chéanna.<ref name = "Hickey & King, 2000" />{{rp|4}} *'''uathpholaplóideach''' (''autopolyploid'' as Béarla)<ref>“uathpholaplóideach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 15, 2026, from https://www.tearma.ie/q/uathpholapl%C3%B3ideach/ga/</ref></br>Is cineál planda polaplóideach é planda uathpholaplóideach a chruthaítear trí géanóm amháin a dhúbailt. I bplandaí uathpholaplóideacha, tagann na crómasóm go léir ón speiceas céanna.<ref>Lefers, M. & Holmgren Lab. (2004). autopolyploid. Hedgehog Signaling Glossary. Retrieved March 15, 2026, from https://groups.molbiosci.northwestern.edu/holmgren/Glossary/Definitions/Def-A/autopolyploid.html</ref> *'''ubhagán uachtarach''' (''superior ovary'' as Béarla)<ref>“ubhagán uachtarach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 18, 2026, from https://www.tearma.ie/q/ubhag%C3%A1n%20uachtarach/ga/</ref></br>Tá ubhagán uachtarach suite os cionn an phointe ina bhfuil na seipil, na peitil agus na staimín ceangailte.<ref name = "Flora of Rwanda Glossary" /> [[File:Trapa japonica floating seed in Yokotake, Kanzaki.jpg|thumb|left|100px|uiscescaipeadh síl]] *'''uiscescaipeadh síl''' (''hydrochory'' as Béarla)<ref>“uiscescaipeadh síl.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 24, 2026, from https://www.tearma.ie/q/uiscescaipeadh%20s%C3%ADl/ga/</ref></br>Is é uiscescaipeadh síl scaipeadh síolta trí uisce.<ref name = "Lewis, 2019" /> *'''umbal''' (''umbel'' as Béarla)<ref name = "umbal">“umbal.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved March 1, 2026, from https://www.tearma.ie/q/umbal/ga/</ref>{{Il-íomhánna | align = right | direction = horizontal | total_width = 180 | header = | image1 = Inflorescences Umbel Kwiatostan Baldach.svg | alt1 = | caption1 = umbal | image2 = Inflorescences Umbel Kwiatostan BaldachZłożony.svg | alt2 = | caption2 = umbal comhshuite }}</br>Is cineál bláthra craobhach é umbal. Bíonn bláthanna sa bláthra ina bhfuil na gasóga go léir ar an fhad céanna agus ag teacht ó phointe amháin.<ref name = "Nelson, 2012">Nelson, R. C. (2012). The Description of Flowers. University of Rochester. Retrieved March 1, 2026, from https://www.cs.rochester.edu/u/nelson/wildflowers/glossaries/flowers/</ref> *'''umbal comhshuite''' (''compound umbel'' as Béarla)<ref name = "umbal" /></br>Is cineál bláthra é umbal comhshuite ina n-eascraíonn roinnt umbal as aon phointe amháin.<ref>Inflorescences 15-Compound umbel. (n.d.). University of Illinois. Retrieved March 9, 2026, from https://www.life.illinois.edu/help/digitalflowers/Inflorescences/15.htm</ref> ==X== [[File:Decussate (PSF).png|thumb|left|100px|x-chruthach]] *'''xantaifill''' (''xanthophyll'' as Béarla)<ref>“xantaifill.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 20, 2026, from https://www.tearma.ie/q/xantaifill/ga/</ref></br>Is grúpa líocha caraitéanóideacha oráiste é xantaifill. Cosúil le caraitéin, cuidíonn xantaifill le fótaisintéis.<ref name = "Hodgkiss, 2019" /> *'''x-chruthach''' (''decussate'' as Béarla)<ref>“x-chruthach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 20, 2026, from https://www.tearma.ie/q/x-chruthach/ga/</ref></br>Ciallaíonn suíomh x-chruthach duilleoga go bhfuil péirí duilleoga socraithe ag uillinn 90° le péirí duilleoga cóngaracha thuas agus thíos. Tá na péirí trasnaithe i bhfoirm X.<ref name = "Hodgkiss, 2019" /> *'''xéirifíteach''' (''xerophytic'' as Béarla)<ref>“xéirifíteach.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved April 12, 2026, from https://www.tearma.ie/q/x%C3%A9irif%C3%ADteach/ga/</ref>[[File:Echinocactus grusonii flora cologne.jpg|thumb|right|120px|Is plandaí xéirifíteacha iad na cachtais.<ref name = "Duke University">Xerophytes “Cactus-Like” collection. (n.d.). Duke University. Retrieved April 12, 2026, from https://liveplantcollections.biology.duke.edu/featured-collections/xeric</ref>]]</br>Tá plandaí xéirifíteacha oiriúnaithe do aeráid nó do ghnáthóg thirim.<ref name = "Flora of Rwanda Glossary" /> *'''xiléim''' (''xylem'' as Béarla)<ref name = "xiléim">“xiléim.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved May 30, 2026, from https://www.tearma.ie/q/xil%C3%A9im/ga/</ref></br>Is fíochán lignithe é an xiléim atá freagrach as iompar uisce i bplandaí.<ref name = "Xylem - PropG">University of Florida, University of Kentucky, & Texas A&M University. (n.d.). Xylem. PropG. Retrieved May 30, 2026, from https://propg.ifas.ufl.edu/01-biology/02-cell-types/12-celltypes-xylem.html</ref> *'''xiléim phríomhúil''' (''primary xylem'' as Béarla)<ref name = "xiléim" /></br>Is céim luath forbartha í an xiléim phríomhúil agus tá sé déanta as prótaixiléim agus meiteaxiléim.<ref name = "Xylem - PropG" /> *'''xiléim thánaisteach''' (''secondary xylem'' as Béarla)<ref name = "xiléim" /></br>Déantar an xiléim thánaisteach ón sraith chaimbiam. Tá sé freagrach as forbairt leataobhach agus fás adhmad.<ref name = "Xylem - PropG" /> ==Y== *'''Y-chrómasóm''' (''Y-chromosome'' as Béarla)<ref>Y-chrómasóm. (n.d.-b). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 30, 2026, from https://www.tearma.ie/q/Y-chr%C3%B3mas%C3%B3m/ga/</ref></br>Sa chóras XY, tugann an crómasóm Y céannacht fhireann. Is fireannaigh iad plandaí XY ach is baineannaigh iad plandaí XX.<ref name = "Andreuzza, 2020">Andreuzza, S. (2020). [https://pmc.ncbi.nlm.nih.gov/articles/PMC7268795/ Y Keep Your X? Insights into the Genetic Basis of Plant Sex Chromosome Evolution.] Plant Cell. 2020 Jun;32(6):1769-1770. doi: 10.1105/tpc.20.00265. Epub 2020 Apr 7. PMID: 32265318; PMCID: PMC7268795.</ref> ==Z== [[File:Goral Girardinia diversifolia AJTJ.jpg|thumb|left|120px|zóscaipeadh síl]] *'''zóscaipeadh síl''' (''zoochory'' as Béarla)<ref>“zóscaipeadh síl.” (n.d.). An Bunachar Náisiúnta Téarmaíochta Don Ghaeilge. Retrieved September 24, 2026, from https://www.tearma.ie/q/z%C3%B3scaipeadh%20s%C3%ADl/ga/</ref></br>Is é zóscaipeadh síl scaipeadh síolta ag ainmhithe.<ref name = "Lewis, 2019">Lewis, A. (2019, August 23). Seed dispersal: 5 ways trees spread seeds. Woodland Trust. Retrieved September 24, 2026, from https://www.woodlandtrust.org.uk/blog/2019/08/seed-dispersal/</ref> ==Tagairtí== <references> <!-- Especially useful sources for definitions can be collected down here: --> <ref name = "Glossary British Pteridological Society">Glossary. (n.d.). British Pteridological Society. Retrieved April 18, 2026, from https://britishfernsociety.org.uk/Glossary/</ref> <ref name = "Gray, 1875">Gray, Asa. (1875). [https://www.biodiversitylibrary.org/page/56536335 Botany for young people and common subjects : how plants grow : a simple introduction to structural botany : with popular flora, or an arrangement and description of common plants, both wild and cultivated : illustrated by 500 wood engravings.] Ivison, Blakeman, Taylor.</ref> <ref name = "Flora of Australia Glossary">Government of South Australia. (n.d.). Flora of Australia Glossary. Flora of South Australia. Retrieved March 13, 2026, from https://flora.sa.gov.au/glossary/</ref> <ref name = "Flora of Rwanda Glossary">The Rwanda flora team. (2026). Flora of Rwanda: Glossary. Retrieved April 12, 2026, from https://www.rwandaflora.com/speciesdata/glossary.php</ref> <ref name = "Jessop et al., 2011">Jessop, J.P., Toelken, H.R. & Kellermann, J. (2011). [https://www.researchgate.net/publication/344409776_Glossary_of_botanical_terms_version_1 Glossary of botanical terms (version 1).] In: Kellermann, J. (ed.), Flora of South Australia (ed. 5). 24 pp. (State Herbarium of South Australia: Adelaide). www.flora.sa.gov.au/ed5</ref> <ref name = "UCMP, 2009">UCMP Glossary: Botany. (2009). University of California Museum of Paleontology. Retrieved March 9, 2026, from https://ucmp.berkeley.edu/glossary/gloss8botany.html</ref> <ref name = "vPlants">Plant Glossary. (n.d.). vPlants: A Virtual Herbarium of the Chicago Region. Retrieved May 30, 2026, from https://vplants.org/portal/plants/glossary/index.php</ref> <ref name = "Bobrov & Romanov, 2019"><!-- Definitions of fruit terminology -->Bobrov, A. V. C., & Romanov, M. S. (2019). [https://www.tandfonline.com/doi/pdf/10.1080/23818107.2019.1663448 Morphogenesis of fruits and types of fruit of angiosperms.] Botany letters, 166(3), 366-399.</ref> <ref name = "Hodgkiss, 2019">Hodgkiss, R. J. (2019). Glossary of Botanical Terms. The Succulent Plant Page. Retrieved September 19, 2026, from https://succulent-plant.com/glossary/plantglossary.html</ref> <ref name = "Devlin, 2026">Devlin, Z. (2026). Irish Wildflower Glossary. Wildflowers of Ireland. Retrieved September 20, 2026, from https://www.wildflowersofireland.net/glossary.php</ref> <ref name = "Algae of Australia Glossary">Huisman, J. M., & Entwisle, T. J. (2022). Algae of Australia Glossary. Department of Climate Change, Energy, the Environment and Water. Retrieved September 26, 2026, from https://www.dcceew.gov.au/science-research/abrs/online-resources/glossaries/algae</ref> <ref name = "LabXchange">Harvard University & Amgen Foundation. (2024, May 14). Glossary: Chromosome Variation. LabXchange. Retrieved September 28, 2026, from https://www.labxchange.org/library/items/lb:LabXchange:25aad058:html:1</ref> <ref name = "Beentje, 2010">Beentje, H. (2010). [https://staugorchidsociety.org/PDF/The-Kew-Plant-Glossary-an-Illustrated-Dictionary-of-Plant-Terms-by-Beentje-Henk-z-lib.org_.pdf The Kew Plant Glossary: An Illustrated Dictionary of Plant Terms.} Royal Botanic Gardens Kew.</ref> <ref name = "Benisch, n.d.">Benisch, C. (n.d.). Glossary of entomology terms. Kerbtier – Beetle Fauna of Germany. Retrieved September 29, 2026, from https://www.kerbtier.de/Pages/Content/enGlossar.html</ref> <ref name = "Florida Museum Glossary">Glossary of Terms. (n.d.). Florida Museum of Natural History. Retrieved September 29, 2026, from https://www.floridamuseum.ufl.edu/florida-vertebrate-fossils/glossary/</ref> <ref name = "Hickey & King, 2000">Hickey, M., & King, C. (2000). [https://books.google.de/books?id=4Lr3CwAAQBAJ&lpg=PR7&dq=botany%20cf.%20and%20aff.&lr&pg=PA1#v=onepage&q&f=false The Cambridge Illustrated Glossary of Botanical Terms.] Cambridge University Press.</ref> <ref name = "Glossary CBN des Hauts-de-France">Glossaire des termes scientifiques utilisés par le CBN des Hauts-de-France. (n.d.). CBN Des Hauts-de-France. Retrieved October 1, 2026, from https://www.cbnhdf.fr/glossaire-termes-scientifiques-utilises-cbn-bailleul</ref> </references> 30majk5d5whuixwwsnsl46c052f1mtd Tionól Thuaisceart Éireann (1973) 0 128509 1329027 2026-10-01T14:57:49Z Conradder 34685 Leathanach cruthaithe le '{{WD Bosca Sonraí Eagraíochta}} Ba reachtas é '''Tionól Thuaisceart Éireann''' a bhunaigh [[Rialtas na Ríochta Aontaithe]] ar 3 Bealtaine 1973, chun [[dílárú]] a athbhunú [[Tuaisceart Éireann|sa réigiún]] le [[Feidhmeannas Thuaisceart Éireann (1974)|feidhmeannas comhroinnte cumhachta]]. Díscaoileadh é i mí an Mhárta 1975. == Stair == Rinne cuid 1 d''''Acht Tionól Thuaisceart Éireann (1973)''' an tionól nua agus Toghchán Thionól Thuaiscear...' 1329027 wikitext text/x-wiki {{WD Bosca Sonraí Eagraíochta}} Ba reachtas é '''Tionól Thuaisceart Éireann''' a bhunaigh [[Rialtas na Ríochta Aontaithe]] ar 3 Bealtaine 1973, chun [[dílárú]] a athbhunú [[Tuaisceart Éireann|sa réigiún]] le [[Feidhmeannas Thuaisceart Éireann (1974)|feidhmeannas comhroinnte cumhachta]]. Díscaoileadh é i mí an Mhárta 1975. == Stair == Rinne cuid 1 d''''Acht Tionól Thuaisceart Éireann (1973)''' an tionól nua agus [[Toghchán Thionól Thuaisceart Éireann 1973|reáchtáladh toghchán]] ar 23 Meitheamh 1973. Fuair an tAcht Bhunreacht Thuaisceart Éireann (1973) aontú na banríona ar 18 Iúil 1973, mar sin, cealaíodh [[Parlaimint Thuaisceart na hÉireann]] agus [[Gobharnóir Thuaisceart Éireann]]. Fosta, rinne an t-acht soláthar dó fheidhmeannas comhroinnte cumhachta. Toghadh 180 mball, trí [[Aonvóta inaistrithe]], as 12 thoghcheantar. Bhuail an tionól le cheile, ar 31 Iúil 1973, den chéad uair. Thogh siad [[Nat Minford]] mar Cheann Comhairle i rith seisiúin anordúil. I ndiaidh [[Comhaontú Sunningdale|Chomhaontú Sunningdale]], bunaíodh feidhmeannas comhroinnte cumhachta ar 1 Eanáir 1974. I ndiaidh agóide Aontachtaí, faoi Chomhairle Uile-Éireann a bhí molta, thit an fheidhmeannas agus an tionól ar 28 Bealtaine 1974, nuair a d'éirigh [[Brian Faulkner]] as Príomhfheidhmeannach. Cuireadh an tionól ar fionraí an lá ina dhiaidh sin, bhí sé ina stad go dtí 28 Márta 1975, nuair a lánscoireadh é go foirmiúil trí Acht Thuaisceart Éireann (1974). == Baill den Fheidhmeannas Thuaisceart Éireann (1974) == {| class="wikitable" |- !Oifig !Ainm !Téarma !colspan="2"|Páirtí |- |Príomhfheidhmeannach |[[Brian Faulkner]] |1974 ! style="background:{{Páirtí Aontachtach Uladh/meta/color}};" | |[[PAU]] |- |Leas-Phríomhfheidhmeannach |[[Gerry Fitt]] |1974 ! style="background:{{Páirtí Sóisialta Daonlathach an Lucht Oibre/meta/color}};" | |[[PSDLO]] |- |Aire Talmhaíochta |[[Leslie Morrell]] |1974 ! style="background:{{Páirtí Aontachtach Uladh/meta/color}};" | |[[PAU]] |- |Aire Tráchtála |[[John Hume]] |1974 ! style="background:{{Páirtí Sóisialta Daonlathach an Lucht Oibre/meta/color}};" | |[[PSDLO]] |- |Aire Oideachais |[[Basil McIvor]] |1974 ! style="background:{{Páirtí Aontachtach Uladh/meta/color}};" | |[[PAU]] |- |Aire Timpeallachta |[[Roy Bradford]] |1974 ! style="background:{{Páirtí Aontachtach Uladh/meta/color}};" | |[[PAU]] |- |Aire Airgeadais |[[Herbert Kirk]] |1974 ! style="background:{{Páirtí Aontachtach Uladh/meta/color}};" | |[[PAU]] |- |Aire Sláinte agus Seirbhísí Sóisialta |[[Paddy Devlin]] |1974 ! style="background:{{Páirtí Sóisialta Daonlathach an Lucht Oibre/meta/color}};" | |[[PSDLO]] |- | Aire Tithíochta, Rialtais Áitiúil agus Pleanála |[[Austin Currie]] |1974 ! style="background:{{Páirtí Sóisialta Daonlathach an Lucht Oibre/meta/color}};" | |[[PSDLO]] |- |Aire Eolais |[[John Baxter (Northern Ireland politician)|John Baxter]] |1974 ! style="background:{{Páirtí Aontachtach Uladh/meta/color}};" | |[[PAU]] |- | Aire Dlí agus Ceann Oifig Leasú an Dlí |[[Oliver Napier]] |1974 ! style="background:{{Páirtí Comhghuaillíochta Thuaisceart Éireann/meta/color}};" | |[[Páirtí Comhghuaillíochta Thuaisceart Éireann|Comhaontas]] |} == Tagairtí == {{reflist}} {{síol-ni}} {{Tionól Thuaisceart Éireann}} [[Catagóir:Polaitíocht Thuaisceart Éireann]] [[Catagóir:Tionól Thuaisceart Éireann]] [[Catagóir:Rialtas Thuaisceart Éireann]] 56vqvd1k593aqae4rllw3u1hhiu0vja Pygmalion 26 0 128510 1329029 2026-10-01T16:21:44Z Eomurchadha 4240 Leathanach cruthaithe le 'Is aistriúchán Gaeilge agus oiriúnú é '''Pygmalion 26''' ar shaothar clasaiceach polaitiúil an údair [[G.B. Shaw]]], Pygmalion. Tugann an léiriú seo saothar Shaw go [[Béal Feirste]] na bliana 2026. Pléann Pygmalion le ceist na haicme sóisialta agus leis an dóigh a n-aithnítear an aicme sin trí bhlas cainte. Cé aige a bhfuil sé de cheart a rá gur cainteoir dúchais Gaeilge é? Pléann Pygmalion 26 an ceist seo leis an ngreann agus an íoróin a bh...' 1329029 wikitext text/x-wiki Is aistriúchán Gaeilge agus oiriúnú é '''Pygmalion 26''' ar shaothar clasaiceach polaitiúil an údair [[G.B. Shaw]]], Pygmalion. Tugann an léiriú seo saothar Shaw go [[Béal Feirste]] na bliana 2026. Pléann Pygmalion le ceist na haicme sóisialta agus leis an dóigh a n-aithnítear an aicme sin trí bhlas cainte. Cé aige a bhfuil sé de cheart a rá gur cainteoir dúchais Gaeilge é? Pléann Pygmalion 26 an ceist seo leis an ngreann agus an íoróin a bhaineann le Pygmalion féin, agus leis an mbeocht, an greann agus an cultúr teanga a fhaightear i nGaeltacht uirbeach [[Iarthar Bhéal Feirste]]. [[catagóir:Drámaí Gaeilge]] [[catagóir:Aistriúcháin ar dhrámaí]] flkhxzrt0m1fnuc1xegbypqwmt8l25s Christa Pike 0 128511 1329045 2026-10-01T22:53:46Z TGcoa 21229 Leathanach cruthaithe le '{{WD Bosca Sonraí Duine}} Daoradh chun báis '''Christa Pike''' sa bhliain 1996, nuair a bhí sí 20 bliain d'aois, as bean óg, Colleen Slemmer, a dhúnmharú an bhliain roimhe sin. Ar an 30 Meán Fómhair 2026, theip ar an iarracht a rinne oifigigh i bpríosún i stát Tennessee Pike a chur chun báis in ainneoin gur thug siad dhá instealladh de dhruga marfach di. Bhí sí le bheith ar an gcéad bhean a cuireadh chun báis in Tennessee le 200 bliain. Tar é...' 1329045 wikitext text/x-wiki {{WD Bosca Sonraí Duine}} Daoradh chun báis '''Christa Pike''' sa bhliain 1996, nuair a bhí sí 20 bliain d'aois, as bean óg, Colleen Slemmer, a dhúnmharú an bhliain roimhe sin. Ar an 30 Meán Fómhair 2026, theip ar an iarracht a rinne oifigigh i bpríosún i stát Tennessee Pike a chur chun báis in ainneoin gur thug siad dhá instealladh de dhruga marfach di. Bhí sí le bheith ar an gcéad bhean a cuireadh chun báis in Tennessee le 200 bliain. Tar éis d'oifigigh an dá instealladh den druga pentobarbital a thabhairt di, más ea, bhí sí fós ina beatha. Is cosúil nach raibh sí ach ina suan codlata ó bhí sí ag srannadh go hard. Tugadh Christa Pike ón bpríosún in Nashville chun an ospidéil.<ref>{{Luaigh foilseachán|title=Christa Pike fós beo ainneoin iarracht í a chur chun báis|url=https://www.rte.ie/news/nuacht/2026/1001/1593604-christa-pike-fos-beo-ainneoin-iarracht-i-a-chur-chun-bais/|date=2026-10-01|language=ga-IE|author=Nuacht RTÉ}}</ref> == Féach freisin == == Tagairtí == {{reflist}}{{síol}} [[Catagóir:Dúnmharfóirí]] [[Catagóir:Mná Meiriceánacha an 21ú haois]] [[Catagóir:Mná]] [[Catagóir:Daoine as Tennessee]] qyjs23b31t7431rbx3c3d1epg1i5yvs 1329053 1329045 2026-10-02T07:50:00Z TGcoa 21229 1329053 wikitext text/x-wiki {{WD Bosca Sonraí Duine}} Daoradh chun báis '''Christa Pike''' sa bhliain 1996, nuair a bhí sí 20 bliain d'aois, as bean óg, Colleen Slemmer, a dhúnmharú an bhliain roimhe sin. Rugadh Christa Gail Pike in Beckley, [[Virginia Thiar]], ar an 10 Márta 1976.<ref name="enwiki">{{Lua idirlín|url=https://en.wikipedia.org/wiki/Christa_Pike|teideal=Christa Pike|work=Wikipedia|language=en|dátarochtana=2026-10-02}}</ref> == An dúnmharú == Bhí Pike agus Slemmer ag freastal ar ionad oiliúna Job Corps in Knoxville, [[Tennessee]], agus bhí éad ar Pike léi mar gheall ar a buachaill féin, Tadaryl Shipp. Ar an 12 Eanáir 1995, agus í ocht mbliana déag d'aois, mheall Pike Slemmer go háit iargúlta in éineacht le Shipp agus le cara léi, Shadolla Peterson.<ref name="cbs">{{Lua idirlín|url=https://www.cbsnews.com/news/what-to-know-christa-pike-first-woman-executed-tennessee-200-years/|teideal=Tennessee cancels executions after Christa Pike survives botched lethal injection|údar=Emily Mae Czachor|dáta=2026-10-01|language=en|work=CBS News|dátarochtana=2026-10-02}}</ref> Bhuail siad í go dona, greanadh peinteagram ar a hucht, agus chaith Pike píosa asfailt lena ceann. Choinnigh sí blúire de bhlaosc Slemmer mar chuimhneachán.<ref name="ca6">{{Lua idirlín|url=https://www.opn.ca6.uscourts.gov/opinions.pdf/19a0205p-06.pdf|teideal=Pike v. Gross, No. 16-5854|dáta=2019-08-22|language=en|work=United States Court of Appeals for the Sixth Circuit|dátarochtana=2026-10-02}}</ref> [[Íomhá:SQ Lethal Injection Room.jpg|clé|mion|220x220px|Seomra "instealladh an bháis", San Quentin]] == Sa phríosúin == Rinne Pike ionsaí ar Patricia Jones in 2001. Chuir sí plean éalaithe i bhfeidhm in 2012. == Iarracht Pike a chur chun báis == Chinn [[Cúirt Uachtarach na Stát Aontaithe|Cúirt Uachtarach na S-A]] (6–3) dul ar aghaidh leis an mbású in 2026. Ar an 30 Meán Fómhair 2026, theip ar an iarracht a rinne oifigigh i bpríosún i stát Tennessee Pike a chur chun báis in ainneoin gur thug siad dhá instealladh de dhruga marfach di. Bhí sí le bheith ar an gcéad bhean a chuirfí chun báis in Tennessee le breis is 200 bliain.<ref name="cbs" /> Tar éis d'oifigigh an dá instealladh den druga pentobarbital a thabhairt di, más ea, bhí sí fós ina beatha. Is cosúil nach raibh sí ach ina suan codlata ó bhí sí ag srannadh go hard. Tugadh Christa Pike ón bpríosún in [[Nashville, Tennessee|Nashville]] chun an ospidéil.<ref>{{Luaigh foilseachán|title=Christa Pike fós beo ainneoin iarracht í a chur chun báis|url=https://www.rte.ie/news/nuacht/2026/1001/1593604-christa-pike-fos-beo-ainneoin-iarracht-i-a-chur-chun-bais/|date=2026-10-01|language=ga-IE|author=Nuacht RTÉ}}</ref> An lá dár gcionn, bhí a beatha i mbaol, dar lena dlíodóirí.<ref name="wsmv">{{Lua idirlín|url=https://www.wsmv.com/2026/10/01/she-is-alive-christa-pike-is-hospitalized-after-failed-tn-execution-heres-what-we-know-about-her-condition/|teideal='She is alive': Christa Pike is hospitalized after failed TN execution. Here's what we know about her condition|údar=Chasity Maynard|dáta=2026-10-01|language=en|work=WSMV|dátarochtana=2026-10-02}}</ref> D'ordaigh gobharnóir Tennessee, Bill Lee, athbhreithniú neamhspleách ar an iarracht, agus chuir sé stop le cur chun báis go deireadh na bliana.<ref name="cbs" /> == Féach freisin == * [[Pionós an bháis]] * [[Gary Gilmore]] * [[Ronnie Lee Gardner]] * [[Clive Stafford Smith]] == Tagairtí == {{reflist}}{{DEFAULTSORT:Pike, Christa }} [[Catagóir:Dúnmharfóirí]] [[Catagóir:Mná Meiriceánacha an 21ú haois]] [[Catagóir:Mná]] [[Catagóir:Daoine as Tennessee]] [[Catagóir:Daoine a rugadh i 1976]] [[Catagóir:Daoine as Virginia Thiar]] [[Catagóir:Coirpigh Mheiriceánacha]] [[Catagóir:Daoine beo]] [[Catagóir:Tennessee]] l3lsi7oq301p6k30a7ztjlf1ri41q6f Béal Feirste Theas agus an Dún Láir (Toghcheantar Tionóil) 0 128512 1329058 2026-10-02T11:01:29Z Conradder 34685 Leathanach cruthaithe le '{{WD Bosca Geografaíocht Pholaitiúil}} Is toghcheantar [[Tionól Thuaisceart Éireann|Thionól Thuaisceart Éireann]] é '''Béal Feirste Theas an Dún Láir''' ({{lang-en|Belfast South and Mid Down}}). Tiocfaidh an toghcheantar i bhfeidhm ag an chéad toghchán eile. Tiocfaidh sé in ionad an toghcheantair [[Béal Feirste Theas (Toghcheantar Tionóil)|Bhéal Feirste Theas]]. ==Baill== ==Toghcháin== == Féach freisin == * Béal Feirste Theas (Toghcheantar T...' 1329058 wikitext text/x-wiki {{WD Bosca Geografaíocht Pholaitiúil}} Is toghcheantar [[Tionól Thuaisceart Éireann|Thionól Thuaisceart Éireann]] é '''Béal Feirste Theas an Dún Láir''' ({{lang-en|Belfast South and Mid Down}}). Tiocfaidh an toghcheantar i bhfeidhm ag an chéad toghchán eile. Tiocfaidh sé in ionad an toghcheantair [[Béal Feirste Theas (Toghcheantar Tionóil)|Bhéal Feirste Theas]]. ==Baill== ==Toghcháin== == Féach freisin == * [[Béal Feirste Theas (Toghcheantar Tionóil)]] == Tagairtí == {{reflist}} {{stumpa}} {{Teimpléad:Tionól Thuaisceart Éireann}} [[Catagóir:Polaitíocht Thuaisceart Éireann]] [[Catagóir:Tionól Thuaisceart Éireann]] cjczb2zrvln65z5jqnu023wpqafjiqt