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/~2025-29132-17|~2025-29132-17]] ([[Plé úsáideora:~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]]
[[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;" |
|-
! scope="row" style="text-align:left" | [[Dylan McDermott]]
| [[Dr. Ben Harmon]] || [[Johnny Morgan]] || colspan="5" style="background-color:lightgrey;" |
|-
! 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;" | || [[Zoe Benson]] || colspan="2" style="background-color:lightgrey;" | || [[Sophie Green]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Denis O'Hare]]
| [[Larry Harvey]] || style="background-color:lightgrey;" | || [[Spalding]] || [[Stanley]] || [[Liz Taylor]] || [[William van Henderson]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Jessica Lange]]
| [[Constance Langdon]] || [[Sister Jude Martin]] || [[Fiona Goode]] || [[Elsa Mars]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Zachary Quinto]]
| [[Chad Warwick]] || [[Dr. Oliver Thredson]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Joseph Fiennes]]
| style="background-color:lightgrey;" | || [[Msgr. Timothy Howard]] || colspan="5" style="background-color:lightgrey;" |
|-
! 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;" | || [[Grace Bertrand]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[James Cromwell]]
| style="background-color:lightgrey;" | || [[Dr. Arthur Arden]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Frances Conroy]]
| [[Moira O'Hara]] || [[Shachath]] || [[Myrtle Snow]] || [[Gloria Mott]] || style="background-color:lightgrey;" | || [[Mama Polk]]
|-
! scope="row" style="text-align:left" | [[Emma Roberts]]
| colspan="2" style="background-color:lightgrey;" | || [[Madison Montgomery]] || [[Maggie Esmeralda]] || colspan="2" style="background-color:lightgrey;" | || [[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;" | || [[Marie Delphine LaLaurie|Delphine LaLaurie]] || [[Ethel Darling]] || [[Iris]] || [[Agnes Mary Winstead]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Michael Chiklis]]
| colspan="3" style="background-color:lightgrey;" | || [[Dell Toledo]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Finn Wittrock]]
| colspan="3" style="background-color:lightgrey;" | || [[Dandy Mott]] || [[Tristan Duffy]] <hr/> [[Rudolph Valentino]] || [[Jether Polk]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Angela Bassett]]
| colspan="2" style="background-color:lightgrey;" | || [[Marie Laveau]] || [[Desiree Dupree]] || [[Ramona Royale]] || [[Monet Tumusiime]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Wes Bentley]]
| colspan="3" style="background-color:lightgrey;" | || [[Edward Mordrake]] || [[Det. John Lowe]] || [[Dylan]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Matt Bomer]]
| colspan="3" style="background-color:lightgrey;" | || [[Andy]] || [[Donovan]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Chloë Sevigny]]
| style="background-color:lightgrey;" | || [[Shelley]] || colspan="2" style="background-color:lightgrey;" | || [[Dr. Alex Lowe]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Cheyenne Jackson]]
| colspan="4" style="background-color:lightgrey;" | || [[Will Drake]] || [[Sidney Aaron James]] || [[Dr. Rudy Vincent]]
|-
! scope="row" style="text-align:left" | [[Lady Gaga]]
| colspan="4" style="background-color:lightgrey;" | || [[Elizabeth Johnson]] || [[Scathach]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Cuba Gooding, Jr.]]
| colspan="5" style="background-color:lightgrey;" | || [[Dominic Banks]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[André Holland]]
| colspan="5" style="background-color:lightgrey;" | || [[Matt Miller]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Billie Lourd]]
| colspan="6" style="background-color:lightgrey;" | || [[Winter Anderson]]
|-
! scope="row" style="text-align:left" | [[Alison Pill]]
| colspan="6" style="background-color:lightgrey;" | || [[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;" | || [[Kaylee]] || colspan="4" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Christine Estabrook]]
| [[Marcy]] || colspan="3" style="background-color:lightgrey;" | || [[Marcy]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Jamie Brewer]]
| [[Adelaide Langdon]] || style="background-color:lightgrey;" | || [[Nan]] || [[Marjorie]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Matt Ross (actor)|Matt Ross]]
| [[Dr. Charles Montgomery]] || colspan="3" style="background-color:lightgrey;" | || [[Dr. Charles Montgomery]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Adina Porter]]
| [[Sally Freeman]] || colspan="4" style="background-color:lightgrey;" | || [[Lee Harris]] || [[Beverly Hope]]
|-
! scope="row" style="text-align:left" | [[Teddy Sears]]
| [[Patrick]] || colspan="6" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Anthony Ruivivar]]
| [[Miguel Ramos]] || colspan="3" style="background-color:lightgrey;" | || [[Richard Ramirez]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Adam Levine]]
| style="background-color:lightgrey;" | || [[Leo Morrison]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Jenna Dewan-Tatum]]
| style="background-color:lightgrey;" | || [[Teresa Morrison]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Clea DuVall]]
| style="background-color:lightgrey;" | || [[Wendy Peyser]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Naomi Grossman]]
| style="background-color:lightgrey;" | || [[Pepper]] || style="background-color:lightgrey;" | || [[Pepper]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Fredric Lehne]]
| style="background-color:lightgrey;" | || [[Frank McCann]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Britne Oldford]]
| style="background-color:lightgrey;" | || [[Alma Walker]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Robin Bartlett]]
| style="background-color:lightgrey;" | || [[Dr. Miranda Crump]] || [[Cecily Pembroke]] || colspan="4" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Robin Weigert]]
| style="background-color:lightgrey;" | || [[Cynthia Potter]] || colspan="3" style="background-color:lightgrey;" | || [[Mama Polk]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Josh Hamilton]]
| colspan="2" style="background-color:lightgrey;" | || [[Hank Foxx]] || colspan="4" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Alexander Dreymon]]
| colspan="2" style="background-color:lightgrey;" | || [[Luke Ramsey]] || colspan="4" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Lance Reddick]]
| colspan="2" style="background-color:lightgrey;" | || [[Papa Legba]] || colspan="4" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Leslie Jordan]]
| colspan="2" style="background-color:lightgrey;" | || [[Quentin Fleming]] || colspan="2" style="background-color:lightgrey;" | || [[Ashley Gilbert]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Grace Gummer]]
| colspan="2" style="background-color:lightgrey;" | || [[Millie]] || [[Penny]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[John Carroll Lynch]]
| colspan="3" style="background-color:lightgrey;" | || [[Twisty the Clown]] || [[John Wayne Gacy]] || style="background-color:lightgrey;" | || [[Twisty the Clown]]
|-
! scope="row" style="text-align:left" | [[Skyler Samuels]]
| colspan="3" style="background-color:lightgrey;" | || [[Bonnie Lipton]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Patti LaBelle]]
| colspan="3" style="background-color:lightgrey;" | || [[Dora Brown]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Lee Tergesen]]
| colspan="3" style="background-color:lightgrey;" | || [[Vince]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Chrissy Metz]]
| colspan="3" style="background-color:lightgrey;" | || [[Barbara]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Malcolm-Jamal Warner]]
| colspan="3" style="background-color:lightgrey;" | || [[Angus T. Jefferson]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Matthew Glave]]
| colspan="3" style="background-color:lightgrey;" | || [[Larry Gayheart]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Angela Sarafyan]]
| colspan="3" style="background-color:lightgrey;" | || [[Alice]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[David Burtka]]
| colspan="3" style="background-color:lightgrey;" | || [[Michael Beck]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Richard T. Jones]]
| colspan="4" style="background-color:lightgrey;" | || [[Det. Andrew Hahn]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Max Greenfield]]
| colspan="4" style="background-color:lightgrey;" | || [[Gabriel]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Alexandra Daddario]]
| colspan="4" style="background-color:lightgrey;" | || [[Natacha Rambova]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Saniyya Sidney]]
| colspan="5" style="background-color:lightgrey;" | || [[Flora Harris]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Chaz Bono]]
| colspan="5" style="background-color:lightgrey;" | || [[Brian Wells]] || [[Gary Longstreet]]
|-
! scope="row" style="text-align:left" | [[Shannon Lucio]]
| colspan="5" style="background-color:lightgrey;" | || [[Diana Cross]] || style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Jacob Artist]]
| colspan="5" style="background-color:lightgrey;" | || [[Todd Allan Connors]] || colspan="1" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Brian Howe (aisteoir)|Brian Howe]]
| colspan="5" style="background-color:lightgrey;" | || [[Mark Phillips]] || colspan="1" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Emma Bell]]
| colspan="5" style="background-color:lightgrey;" | || [[Tracy Logan]] || colspan="1" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | James Morosini
| colspan="5" style="background-color:lightgrey;" | || [[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;" | || [[Det. Jack Samuels]]
|-
! scope="row" style="text-align:left" | Cooper Dodson
| colspan="6" style="background-color:lightgrey;" | || [[Ozymandias "Oz" Mayfair-Richards]]
|-
! scope="row" style="text-align:left" | [[Leslie Grossman]]
| colspan="6" style="background-color:lightgrey;" | || [[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;" |
|-
! scope="row" style="text-align:left" | [[Charles S. Dutton]]
| [[Detective Granger]] || colspan="6" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Eric Stonestreet]]
| [[Derek]] || colspan="6" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Ian McShane]]
| style="background-color:lightgrey;" | || [[Leigh Emerson]] || colspan="5" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Gabourey Sidibe]]
| colspan="2" style="background-color:lightgrey;" | || [[Queenie]] || [[Regina Ross]] || [[Queenie]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Danny Huston]]
| colspan="2" style="background-color:lightgrey;" | || [[The Axeman of New Orleans|The Axeman]] || [[Massimo Dolcefino]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Mare Winningham]]
| colspan="2" style="background-color:lightgrey;" | || [[Alicia Spencer]] || [[Rita Gayheart]] || [[Hazel Evers]] || style="background-color:lightgrey;" | || ''níos déanaí''
|-
! scope="row" style="text-align:left" | [[Patti LuPone]]
| colspan="2" style="background-color:lightgrey;" | || [[Joan Ramsey]] || colspan="4" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Stevie Nicks]]
| colspan="2" style="background-color:lightgrey;" | || [[Stevie Nicks]] (''í féin'') || colspan="4" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Celia Weston]]
| colspan="3" style="background-color:lightgrey;" | || [[Lillian Hemmings]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Neil Patrick Harris]]
| colspan="3" style="background-color:lightgrey;" | || [[Chester Creb]] || colspan="3" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Naomi Campbell]]
| colspan="4" style="background-color:lightgrey;" | || [[Claudia Bankson]] || colspan="2" style="background-color:lightgrey;" |
|-
! scope="row" style="text-align:left" | [[Billy Eichner]]
| colspan="6" style="background-color:lightgrey;" | || [[Harrison Wilton]]
|-
! colspan="9" style="background-color:#ccf;" |
===Foireann eile===
|-
! scope="row" style="text-align:left" | [[Lena Dunham]]
| colspan="6" style="background-color:lightgrey;" | || |[[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 .. " "
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 .. ' ' .. 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 .. " "
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 .. ' ' .. 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 .. " "
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 .. ' ' .. 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 .. ' ' .. 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]] ⇒ [[:Catagóir:Beartas comhshaoil san AE]] ⇒ [[: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 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]] ⇒ [[:Catagóir:Beartas comhshaoil san AE]] ⇒ [[: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 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]] ⇒ [[:Catagóir:Beartas comhshaoil san AE]] ⇒ [[: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 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]] ⇒ [[:Catagóir:Beartas comhshaoil san AE]] ⇒ [[: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 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]] ⇒ [[:Catagóir:Beartas comhshaoil san AE]] ⇒ [[: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 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]] ⇒ [[:Catagóir:Beartas comhshaoil san AE]] ⇒ [[: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 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]] ⇒ [[:Catagóir:Beartas comhshaoil san AE]] ⇒ [[: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 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]] ⇒ [[:Catagóir:Beartas comhshaoil san AE]] ⇒ [[: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 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