Wikipedia
gpewiki
https://gpe.wikipedia.org/wiki/Main_Page
MediaWiki 1.47.0-wmf.19
first-letter
Media
Special
Talk
User
User talk
Wikipedia
Wikipedia talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Burundi
0
1370
111966
111734
2026-09-16T01:34:27Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111966
wikitext
text/x-wiki
{{Databox|item=Q967}}
'''Burundi''' (/bəˈrʊndi/ (listen), /-ˈrʌn-/), alias '''Republic of Burundi''' (Kirundi: ''Repuburika y’Uburundi''<ref>[https://web.archive.org/web/20220616022648/https://www.presidence.gov.bi/2018/07/03/6271/ "Constitution de la République du Burundi promulguée le 07 juin 2018"]. 3 July 2018.</ref> [u.βu.ɾǔː.ndi]; Swahili: ''Jamuhuri ya Burundi''; French: ''République du Burundi'' [buʁundi, byʁyndi]), be sam landlocked country for Great Rift Valley insyd wey dey de junction between de African Great Lakes region den East Africa. Ebe border by [[Rwanda]] to de north, [[Tanzania]] to de east den southeast, den de [[Democratic Republic of the Congo]] to de west; Lake Tanganyika dey lie along ein southwestern border. De capital cities be Gitega den Bujumbura, de latter be de country ein largest city.<ref>[https://web.archive.org/web/20190225103031/https://www.presidence.gov.bi/2019/02/13/loi-n104-du-04-fevrier-2019-portant-fixation-de-la-capitale-politique-et-de-la-capitale-economique-du-burundi/ "Loi n°1/04 du 04 février 2019 portant Fixation de la Capitale Politique et de la Capitale Economique du Burundi"]. 13 February 2019. Retrieved 24 February 2019.</ref>
Burundi remain primarily rural society, plus just 13.4% of de population dey live insyd urban areas for 2019 insyd.<ref>[https://web.archive.org/web/20210122232849/https://www.cia.gov/the-world-factbook/countries/burundi/ "Burundi"], ''The World Factbook'', Central Intelligence Agency, 31 January 2024, retrieved 5 February 2024</ref> Burundi be densely populated, den chaw young people emigrate dey search of opportunities elsewhere. Roughly 85% of de population be of Hutu ethnic origin, 15% be Tutsi, den fewer dan 1% be Twa.<ref>[[:en:Burundi#Eggers|Eggers]], p. ix.</ref> De official languages of Burundi be Kirundi, French, den English—Kirundi be officially dem recognise as de sole national language.<ref>Maurer, Sous la direction de Bruno (1 October 2016). ''[https://books.google.com/books?id=2OA9DQAAQBAJ&q=langues+officielles+au+burundi+kirundi+fran%C3%A7ais+anglais&pg=PA104 Les approches bi-plurilingues d'enseignement-apprentissage: autour du programme Écoles et langues nationales en Afrique (ELAN-Afrique): Actes du colloque du 26–27 mars 2015, Université Paul-Valéry, Montpellier, France]''. Archives contemporaines. ISBN <bdi>[[:en:Special:BookSources/9782813001955|9782813001955]]</bdi>. [https://web.archive.org/web/20180410203233/https://books.google.com/books?id=2OA9DQAAQBAJ&lpg=PA104&ots=tFzjIGhvwU&dq=langues+officielles+au+burundi+kirundi+fran%C3%A7ais+anglais&hl=ru&pg=PA104 Archived] from the original on 10 April 2018. Retrieved 10 April 2018 – via Google Books.</ref> Na dem make English official language for 2014 insyd.<ref>[https://www.rfi.fr/fr/afrique/20140829-le-burundi-met-ordre-politique-linguistique "Burundi: l'anglais officialisé aux côtés du français et du kirundi"]. ''RFI'' (insyd French). 29 August 2014. Retrieved 14 July 2021.</ref>
One of de smallest countries insyd Africa, dem dey use Burundi ein land mostly for subsistence agriculture den grazing, wey edey lead to deforestation, soil erosion, den habitat loss.<ref>Bermingham, Eldredge, Dick, Christopher W. and Moritz, Craig (2005). ''Tropical Rainforests: Past, Present, and Future''. Chicago, Illinois: University of Chicago Press, p. 146. ISBN 0-226-04468-8</ref> As of 2005, na de country be almost completely deforested. Na less dan 6% of ein land be cover by trees, den ova half of dat be for commercial plantations.<ref>Butler, Rhett A. (2006). [https://rainforests.mongabay.com/20burundi.htm "Burundi"]. ''Mongabay''. [https://web.archive.org/web/20060505214856/https://rainforests.mongabay.com/20burundi.htm Archived] from the original on 5 May 2006.</ref> Burundi be de poorest country for de world insyd by nominal GDP per capita, wey ebe one of de least developed countries. Edey face widespread poverty, corruption, instability, authoritarianism, den illiteracy. De 2018 World Happiness Report rank de country as de world ein least happy plus rank of 156.<ref>Collinson, Patrick (14 March 2018). [https://www.theguardian.com/world/2018/mar/14/finland-happiest-country-world-un-report "Finland is the happiest country in the world, says UN report"]. ''The Guardian''. [https://web.archive.org/web/20180314234610/https://www.theguardian.com/world/2018/mar/14/finland-happiest-country-world-un-report Archived] from the original on 14 March 2018. Retrieved 15 March 2018.</ref> Burundi be member of de [[African Union]], Common Market for Eastern and Southern Africa, United Nations, East African Community (EAC), den de Non-Aligned Movement.
=== Subdivisions ===
{| class="wikitable"
|
{| class="wikitable sortable"
|+
!Province
!Capital
!Area<ref>[https://web.archive.org/web/20150714122552/http://www.geohive.com/cntry/burundi_ext.aspx "Burundi: administrative units, extended"]. GeoHive. Archived from [http://www.geohive.com/cntry/burundi_ext.aspx the original] on 14 July 2015. Retrieved 13 July 2015.</ref>
(km<sup>2</sup>)
!Population<ref>Law, Gwillim. [http://www.statoids.com/ubi.html "Provinces of Burundi"]. ''Statoids''. Retrieved 13 July 2015.</ref>
(2008 census)
!Density (per km<sup>2</sup>)
!Communes
|-
| colspan="5" |'''Eastern Burundi'''
|-
|Cankuzo
|Cankuzo
|1,964.54
|228,873
|116.5
|5
|-
|Gitega
|Gitega
|1,978.96
|725,223
|366.5
|11
|-
|Rutana
|Rutana
|1,959.45
|333,510
|170.2
|6
|-
|Ruyigi
|Ruyigi
|2,338.88
|400,530
|171.2
|7
|-
| colspan="5" |'''Northern Burundi'''
|-
|Karuzi
|Karuzi
|1,457.40
|436,443
|299.5
|7
|-
|Kayanza
|Kayanza
|1,233.24
|585,412
|474.7
|9
|-
|Kirundo
|Kirundo
|1,703.34
|628,256
|368.8
|7
|-
|Muyinga
|Muyinga
|1,836.26
|632,409
|344.4
|7
|-
|Ngozi
|Ngozi
|1,473.86
|660,717
|448.3
|9
|-
| colspan="5" |'''Southern Burundi'''
|-
|Bururi
|Bururi
|1,644.68
|313,102
|190.4
|6
|-
|Makamba
|Makamba
|1,959.60
|430,899
|219.9
|6
|-
|Rumonge
|Rumonge
|1,079.72
|352,026
|326.0
|5
|-
| colspan="5" |'''Western Burundi'''
|-
|Bubanza
|Bubanza
|1,089.04
|338,023
|310.4
|5
|-
|Bujumbura Mairie
|Bujumbura
|86.52
|497,166
|5746.3
|13
|-
|Bujumbura Rural
|Isale
|1,059.84
|464,818
|438.6
|9
|-
|Cibitoke
|Cibitoke
|1,635.53
|460,435
|281.5
|6
|-
|Muramvya
|Muramvya
|695.52
|292,589
|420.7
|5
|-
|Mwaro
|Mwaro
|839.60
|273,143
|325.3
|6
|}
|}
== Demographics ==
{| class="wikitable"
! colspan="10" |
Largest cities anaa towns insyd Burundi
Source:<ref>[https://simplemaps.com/static/data/country-cities/bi/bi.xlsx "Burundi Cities by Population"].</ref>
|-
!
!Rank
!Name
!Province
!Pop.
!
|-
| rowspan="11" |
|1
|Bujumbura
|Bujumbura Mairie
|374,809
| rowspan="11" |
|-
|2
|Gitega
|Gitega
|135,467
|-
|3
|Ngozi
|Ngozi
|39,884
|-
|4
|Rumonge
|Bururi
|35,931
|-
|5
|Cibitoke
|Cibitoke
|23,885
|-
|6
|Kayanza
|Kayanza
|21,767
|-
|7
|Bubanza
|Bubanza
|20,031
|-
|8
|Karuzi
|Karuzi
|10,705
|-
|9
|Kirundo
|Kirundo
|10,024
|-
|10
|Muyinga
|Muyinga
|9,609
|}
== References ==
[[Category:Burundi]]
<references />
== Bibliography ==
* Eggers, Ellen K. (2006). ''Historical Dictionary of Burundi'' (3rd ed.). Lanham, Maryland: Scarecrow Press. ISBN <bdi>[[:en:Special:BookSources/0-8108-5302-7|0-8108-5302-7]]</bdi>.
* Lemarchand, Rene (1996). ''[https://books.google.com/books?id=3d_r13a3IgMC&pg=PR17 Burundi: Ethnic Conflict and Genocide]''. Cambridge University Press. ISBN <bdi>[[:en:Special:BookSources/978-0-521-56623-0|978-0-521-56623-0]]</bdi>.
== You fi read further ==
* Abdallah, Ahmedou Ould ''Burundi on the Brink, 1993–95: A UN Special Envoy Reflects on Preventive Diplomacy''
* Allen, J. A.; et al. (2003). ''Africa South of the Sahara 2004: South of the Sahara''. New York, New York: Taylor and Francis Group. ISBN [[:en:Special:BookSources/1-85743-183-9|<bdi>1-85743-183-9</bdi>.]]
* Bentley, Kristina and Southall, Roger ''An African Peace Process: Mandela, South Africa, and Burundi''
* Chrétien, Jean-Pierre ''The Great Lakes of Africa: Two Thousand Years of History''
* Daley, Patricia ''Gender and Genocide in Burundi: The Search for Spaces of Peace in the Great Lakes Region''
* Gates, Henry Lewis; Anthony Appiah (1999). ''[[iarchive:africanaencyclop00appi|Africana: The Encyclopedia of the African and African American Experience]].'' New York, New York: Basic Civitas Books. ISBN <bdi>[[:en:Special:BookSources/0-465-00071-1|0-465-00071-1]]</bdi>.
* Ewusi, Kale and Akwanga, Ebenezer ''Burundi's Negative Peace: The Shadow of a Broken Continent in the Era of Nepad''
* Jennings, Christian ''Across the Red River: Rwanda, Burundi and the Heart of Darkness''
* Kayoya, Michel ''My Father's Footsteps'' (''Sur les traces de mon père'') East African Publishing House, 1973
* Kayoya, Michel ''Entre deux mondes'' (Between two worlds) Lavigerie Éditeurs, Bujumbura: 1971. Kayoya was murdered during the 1972 genocide.
* Kidder, Tracy, ''Strength in What Remains'' (A biography of a Burundian immigrant to the US)
* Krueger, Robert; Kathleen Tobin Krueger (2007). ''From Bloodshed to Hope in Burundi: Our Embassy Years during Genocide''. Austin, Texas: University of Texas Press. ISBN <bdi>[[:en:Special:BookSources/978-0-292-71486-1|978-0-292-71486-1]]</bdi>.
* Melady, Thomas Patrick ''Burundi: The Tragic Years''
* Nivonzima, David and Fendell, Len ''Unlocking Horns: Forgiveness and Reconciliation in Burundi''
* Uvin, Peter ''Life After Violence: A People's Story of Burundi''
* Watt, Nigel ''Burundi: The Biography of a Small African Country''
* Weinstein, Warren (2006). ''Historical Dictionary of Burundi''. Metuchen, New Jersey: Scarecrow Press. ISBN <bdi>[[:en:Special:BookSources/0-8108-0962-1|0-8108-0962-1]]</bdi>.1st. edition.
== External links ==
* Records of [https://web.archive.org/web/20230808155412/https://search.archives.un.org/united-nations-international-commission-of-inquiry-for-burundi-unicib-1995-1996 the United Nations International Commission of Inquiry for Burundi (UNICIB) (1995–1996)] at the United Nations Archives
* [https://web.archive.org/web/20180420053748/http://www.burundi.gov.bi/ Official Burundi government website]
* [https://web.archive.org/web/20121204213713/http://justice.gov.bi/ Official Website of the Ministry of Justice of Burundi]
* [https://web.archive.org/web/20110813050117/https://www.cia.gov/library/publications/world-leaders-1/world-leaders-b/burundi.html Chief of State and Cabinet Members]
* [https://web.archive.org/web/20210122232849/https://www.cia.gov/the-world-factbook/countries/burundi/ Burundi]. ''[[:en:The_World_Factbook|The World Factbook]]''. [[:en:Central_Intelligence_Agency|Central Intelligence Agency]].
* [https://web.archive.org/web/20090523153822/http://ucblibraries.colorado.edu/govpubs/for/burundi.htm Burundi] from ''UCB Libraries GovPubs''
* [https://www.bbc.co.uk/news/world-africa-13085064 Burundi] from the [[:en:BBC_News|BBC News]]
* [http://www.ifs.du.edu/ifs/frm_CountryProfile.aspx?Country=BI Key Development Forecasts for Burundi] from [[:en:International_Futures|International Futures]]
[[Category:Central African countries]]
[[Category:East African countries]]
[[Category:Countries den territories wer English be official language]]
[[Category:French-speaking countries den territories]]
[[Category:Landlocked countries]]
[[Category:Least developed countries]]
[[Category:Member states of de Organisation internationale de la Francophonie]]
[[Category:Member states of de United Nations]]
[[Category:Member states of de African Union]]
[[Category:Republics]]
[[Category:States and territories dem establish insyd 1962]]
[[Category:Swahili-speaking countries den territories]]
[[Category:1962 establishments insyd Burundi]]
[[Category:Countries for Africa insyd]]
[[Category:Former monarchies of Africa]]
m0uta5pyv1yqsg0umwkod8knetdd3fe
Ethel Delali Cofie
0
1486
111969
77603
2026-09-16T03:08:55Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111969
wikitext
text/x-wiki
{{Databox|item=Q24248220}}
'''Ethel Delali Cofie''' be Ghanaian entrepreneur, IT professional den consultant.<ref>Quist, Emmanuel (16 December 2015). [https://web.archive.org/web/20160828201527/http://pulse.com.gh/building/meet-the-boss-ethel-cofie-one-of-the-top-5-women-changing-it-in-africa-id4469336.html "Meet the Boss: Ethel Cofie, one of the top 5 women changing IT in Africa - Building - Pulse"]. ''pulse.com.gh''. Retrieved 9 April 2016.</ref><ref>Cofie, Ethel (12 August 2014). [http://www.cnn.com/2014/08/12/tech/african-women-breaking-down-tech-barriers/index.html "It's not a man's world: The African women breaking down tech barriers"]. CNN. Retrieved 10 June 2016.</ref><ref>[https://web.archive.org/web/20170209190102/https://yali.state.gov/wp-content/uploads/sites/4/2014/07/2014-Washington-Fellow-Bios.pdf "2014-Washington-Fellow-Bios.pdf"] (PDF).</ref> She be founding member of Women in Tech Africa.<ref>[https://web.archive.org/web/20161230160742/https://alueducation.com/alu-co-hosts-launch-of-women-in-technology-mauritius/ "ALU Co-Hosts Launch of Women in Technology Mauritius - ALU"]. ''ALU''. 10 October 2016. Archived from [https://alueducation.com/alu-co-hosts-launch-of-women-in-technology-mauritius/ the original] on 30 December 2016. Retrieved 28 December 2016.</ref><ref>[http://techcabal.com/2016/07/28/women-in-teck-week/ "Women in Tech Africa is holding a Women in Tech Week in Nairobi, this September | TechCabal"]. 28 July 2016. Retrieved 28 December 2016.</ref><ref>Adesanya, Adedayo. [https://web.archive.org/web/20170525044247/http://pulse.ng/events/women-in-tech-africa-id5523382.html "Women In Tech Africa - Events - Pulse"]. Retrieved 28 December 2016.</ref><ref>[https://web.archive.org/web/20210526112709/https://www.thestandpoint.com.gh/ "Glitz top 100 inspirational women – Page 100 – Glitz Africa Magazine"]. Retrieved 28 May 2022.</ref> She sanso be de CEO den founder of Edel Technology Consulting.<ref>ethelcofie. [https://ethelcofie.com/ "Ethel Cofie – Technology,Innovation and Emerging Markets"]. Retrieved 27 March 2024.</ref>
== Ein education ==
Cofie get bachelor's degree for Computer Science insyd from de Valley View University wey dey Ghana, She get master's degree for Distribution Systems insyd from de University of Brighton, den Executive Degree for Leadership, Business den Entrepreneurship from de Yale School of Management.<ref name=":0">[http://techherng.com/ethel-d-cofie/ "Ethel D. Cofie"]. ''Tech her''. Retrieved 10 April 2016.</ref>
== Ein career den affiliations ==
She zuk chaw technological den commercial roles for ein previous job for de United Kingdom, [[Nigeria]], den [[Sierra Leone]] insyd. She sanso job plus Vodafone Ghana as Head of Commercial Solutions.<ref>[https://web.archive.org/web/20161229102140/http://girlsinict.org/profiles-of-women-in-ICT/ethel-cofie "Ethel Cofie | Girls In ICT"]. ''girlsinict.org''. Retrieved 28 December 2016.</ref><ref>[http://www.lionessesofafrica.com/lioness-ethel-cofie/ "Ethel Cofie, founder of Edel Technology Consulting, pioneering 'Women-in-Tech' leader, Ghana"]. ''Lionesses of Africa Website''. 27 November 2016. Retrieved 6 January 2017.</ref>
Cofie be de CEO den Founder of EDEL Technology Consulting, IT consulting company for [[West Africa]] den Europe insyd.<ref>[http://www.edelitconsult.com/ "EDEL Technology Consulting"]. ''www.edelitconsult.com''. Retrieved 28 December 2016.</ref><ref>ModernGhana.Com. [https://www.modernghana.com/sports/694007/women-shine-at-6th-ghana-information-technology-and-telecoms.html "Women Shine At 6th Ghana Information Technology And Telecoms Awards"]. ''ModernGhana.com''. Retrieved 28 December 2016.</ref> She be member of de board of companies across [[Africa]], wey dey include Egotickets den AMOSS Holdings SA.<ref name=":0" /><ref>[http://www.lionessesofafrica.com/blog/2016/2/16/video-ethel-cofie-one-of-the-top-5-women-changing-the-face-of-tech-in-africa "VIDEO: Ethel Cofie, one of the top 5 women changing the face of Tech in Africa"]. ''Lionesses of Africa Website''. 16 February 2016. Retrieved 9 April 2016.</ref>
== Ein awards den recognition ==
Dem recognize Ethel den ein initiatives:
* Fellow of United States President Barack Obama's Young African Leaders Initiative Network (YALI)<ref name=":1">[https://web.archive.org/web/20170209190102/https://yali.state.gov/wp-content/uploads/sites/4/2014/07/2014-Washington-Fellow-Bios.pdf "Wayback Machine"] (PDF). ''web.archive.org''. Retrieved 8 May 2024.</ref>
* Dem name am one of de Top 5 Women impacting IT for Africa insyd
* Dem shortlist am for United Nations GEM Tech Award for October 2014 insyd.<ref>[https://www.itu.int/en/action/women/gem/Pages/finalists.aspx "GEM-Tech Awards 2014: Finalists"]. ''ITU''. Retrieved 8 May 2024.</ref>
* 100 Most Outstanding Women Entrepreneurs for Ghana insyd<ref>Akpah, Prince (8 March 2016). [https://www.ghanaweb.com/GhanaHomePage/entertainment/Meet-the-most-influential-young-women-in-Ghana-421815 "Meet the most influential young women in Ghana"]. ''Ghana Web''. Retrieved 8 May 2024.</ref>
* Africa Woman of Influence for Business: ICT Category insyd
* Africa's Leading Women for IT insyd<ref>[http://www.itnewsafrica.com/2015/08/africas-leading-women-in-tech-2015/ "Africa's leading women in tech 2015 - IT News Africa"]. ''www.itnewsafrica.com''. 12 August 2015. Retrieved 8 May 2024.</ref>
* CEO Global recognize am as Africa's Most Influential Woman for Business den Government insyd for ICT<ref>[https://www.lionessesofafrica.com/blog/2016/11/27/ethel-cofie-recognized-as-africas-most-influential-woman-in-business-and-government-for-ict-by-ceo-global "Ethel Cofie recognized as Africa's Most Influential Woman in Business and Government for ICT by CEO Global"]. ''Lionesses of Africa''. 27 November 2016. Retrieved 8 May 2024.</ref>
* USA Secretary of Commerce Penny Pritzker mention Ethel Cofie for ein 2014 Global Entrepreneurship Summit speech for Morocco insyd<ref>[https://obamawhitehouse.archives.gov/blog/2014/11/24/keeping-cabinet-global-entrepreneurship-summit "Keeping Up With the Cabinet: Our Trip to the Global Entrepreneurship Summit"]. ''whitehouse.gov''. 24 November 2014. Retrieved 8 May 2024.</ref>
* She chop de 2020 Glitz Africa Ghana Women award<ref>[https://ghana.unfpa.org/en/news/distinguished-women-honoured-2020-glitz-africa-ghana-women-year-honours "Africa Ghana Women award"]. ''ghana.unfpa.org''. Retrieved 22 March 2022.</ref>
== References ==
<references />
[[Category:Human]]
[[Category:Living people]]
[[Category:Ghanaians]]
[[Category:Ghanaian businesspeople]]
[[Category:Yale School of Management alumni]]
[[Category:African business biography stubs]]
[[Category:20th-century Ghanaian women]]
[[Category:Valley View University alumni]]
[[Category:Alumni of de University of Brighton]]
[[Category:Ghanaian chief executives]]
qfw7ethw464g7bc5rc9wknuryrzz2cy
User talk:DaSupremo
3
2102
111938
111671
2026-09-15T20:30:11Z
Nimmzo
7362
/* Lua module Yesno protection */ new section
111938
wikitext
text/x-wiki
== Welcome to the Ghanaian Pidgin Wikipedia! ==
Hi DaSupremo, and also ping @[[User:Yaw tuba|Yaw tuba]], @[[User:Gyanford|Gyanford]], @[[User:Feliciopedro2|Feliciopedro2]], @[[User:Sunkanmi12|Sunkanmi12]], @[[User:NanaKojo16|NanaKojo16]], @[[User:NanaYawBotar|NanaYawBotar]], @[[User:Afimaame|Afimaame]], @[[User:Elkay20|Elkay20]] and @[[User:Ibn Dagara|Ibn Dagara]].
Welcome to the Ghanaian Pidgin Wikipedia! You and all your co-contributors have done a great job so far in getting here, and I would like to congratulate you on finally having the newest official Wikipedia edition! Well done to all of you!
For previous wikis, there have usually been some technical issues that take some time to fix, but for the first time in many years, I think all of the normal technical issues have actually already bene solved now, less than one day after the Wikipedia was created. Visual editor works like it should, the same with the DiscussionTools, Wikidata support has been enabled, and the statistics in [[Special:Statistics]] look correct.
But still, if you notice any issues, or if there are things you want to do but aren't able to for some reason, please feel free to reach out to me, and I can help figure out how to solve them.
Best of luck to all of you with your new Wikipedia, and happy editing! 🎉 [[User:Jon Harald Søby|Jon Harald Søby]] ([[User talk:Jon Harald Søby|talk]]) 01:07, 6 July 2023 (GMT)
:Hello [[User:Jon Harald Søby|Jon Harald Søby]] ([[User talk:Jon Harald Søby|talk]]) thanks for that and we are also grateful for your continuous help and support. We would like to fix the use of bare URLS for references. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 13:48, 6 July 2023 (GMT)
:Thanks [[User:NanaKojo16|NanaKojo16]] ([[User talk:NanaKojo16|talk]]) 08:38, 7 July 2023 (GMT)
==Modifications to the home page==
Hello dear [[User:DaSupremo|DaSupremo]]
I've made a slight modification to the homepage, by adding the number of existing articles.
And I designed and programmed a new template for the introduction of the home page.
I hope you see it:[[User:Osps7/Test]]
With regards--[[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) 18:26, 19 August 2023 (GMT)
:Wow...thanks for that. [[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) It will help us track and remove vandalism on articles. Really grateful [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 21:38, 19 August 2023 (GMT)
==Important inquiry==
Dear [[User:DaSupremo|DaSupremo]], I am trying to work on developing the Ghanaian Pidgin Wikipedia by adding new tools and improving the work of the Ghanaian Pidgin Wikipedia by adding software tools that contribute to increasing effectiveness and contribute to protecting the encyclopedia from vandalism.
I'm trying to work on an add-on (MediaWiki:Gadget-autocomplete.js)
But I need permissions, how can I request permissions?
With regards--[[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) 11:42, 20 August 2023 (GMT)
:I think you can propose it on [[phab:|Phabricator]] and start working on it. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 12:36, 20 August 2023 (GMT)
== Suggestions ==
First off, congratulations on leading the creation of and becoming admin of this Wikipedia, which is still the newest AFAIK. Hope that this project continues to grow and thrive. Onto the suggestions: with regards to the references, I think if you used your admin permissions to import the CS1 citation templates from enwiki it would also take care of the dependent modules. Or maybe someone from the community should file a request on MetaWiki. Documentation templates would also be handy I also think it might be a good idea to add a system or template for handling linguistic issues: for instance, I've already seen a page copied from enwiki with no effort made to translate it (although I can't find the specific page right now). Thanks! [[User:MSG17|MSG17]] ([[User talk:MSG17|talk]]) 15:43, 24 August 2023 (GMT)
:Thanks for the good wishes. I would really need help cos I am not conversant with the templates. I will ask a couple of guys around. Thanks again [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:34, 24 August 2023 (GMT)
==suggestion==
Dear [[User:DaSupremo|DaSupremo]],
What do you think of the idea of adding a new section to the home page called “In the News” and updating it continuously?--[[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) 12:00, 10 September 2023 (GMT)
:Sounds good. A very good idea [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 12:07, 10 September 2023 (GMT)
== Note ==
Dear @[[User:DaSupremo|DaSupremo]], I hope you are well.
Over the past few days, I have developed a bot that I will activate here soon. It will create categories and templates that will help us. [[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) 22:03, 3 November 2023 (GMT)
:Hello [[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]), I am good and you? Noted and thanks for the continuous support. We really appreciate it. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:21, 3 November 2023 (GMT)
== Translation ==
Hi, could you please translate this to Ghanaian Pidgin?
Guosa is a constructed interlanguage originally created by Alex Igbineweka in 1965. It was designed to be a combination of the indigenous languages of Nigeria and to serve as a lingua franca to West Africa.
It has the following characteristics:
* It is an isolating language with subject–verb–object word order.
* There are no articles.
* There is no grammatical gender or noun class system.
* Most grammatical meaning is expressed through particles that precede the words they modify.
* Adjectives follow the noun.
* Guosa is generally prepositional.
Thank you. --[[User:Caro de Segeda|Caro de Segeda]] ([[User talk:Caro de Segeda|talk]]) 07:12, 16 November 2023 (GMT)
:Hello [[User:Caro de Segeda|Caro de Segeda]] ([[User talk:Caro de Segeda|talk]]), thanks for reaching out. This is the Ghanaian Pidgin translation:
:Guosa be constructed interlanguage wey Alex Igbineweka originally create am for 1965 insyd. Dem design am make e be combination of de indigenous languages for Nigeria wey e go serve as lingua franca go West Africa.
:E get de characteristics wey dey follow:
:•E be language wey dey isolate plus subject–verb–object word order.
:•No articles dey.
:•No grammatical gender anaa noun class system dey.
:•Dem dey express chaw grammatical meaning thru particles wey dey precede de words dem modify.
:•Adjectives dey follow de noun.
:•Guosa be generally prepositional. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 12:03, 16 November 2023 (GMT)
==Importing citation templates==
Was looking at importing cite journal, cite book, and cite web. Best way to do this would be to use this tool and select "Include all templates and transcluded pages" https://gpe.wikipedia.org/wiki/Special:Import
Would be happy to but only certain user groups have permission to use the tool. Best [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 12:30, 26 October 2024 (GMT)
:By the way hope to see you do more healthcare translations. Once we get the templates imported things will come through better. Best [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 12:44, 26 October 2024 (GMT)
::Thanks [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) for this information. It is valuable for us. I have checked it out and I realized it is a good tool. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 14:05, 26 October 2024 (GMT)
:::Are you able to make me a member of one of these groups "Administrators or Importers" so that I can help. Looking at "Template:Cite book" and not sure it worked properly. [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 23:17, 26 October 2024 (GMT)
::::No please. But I think you can request for a temporal admin [[metawiki:Steward_requests/Permissions#Administrator_access|here]] to enable you carry that task. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 11:05, 27 October 2024 (GMT)
== delete ==
Can you please delete [[Talk:Audrey Sitsofe Gadzekpo]] and [[Talk:Joseph Kwame Kumah]]? they are orphaned. Best regards, [[User:TenWhile6|TenWhile6]] ([[User talk:TenWhile6|talk]]) 17:01, 14 November 2024 (GMT)
:Done [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 18:59, 14 November 2024 (GMT)
== Thank you for being a medical translator! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{| style="background-color: #fdffe7; border: 1px solid #fceb92;"
|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[File:Wiki Project Med Foundation logo.svg|100px]]
|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" |'''The 2024 Cure Translators Award'''
|-
| style="vertical-align: middle; padding: 3px;" |In 2024 you [https://mdwiki.toolforge.org/Translation_Dashboard/leaderboard.php?camp=all&project=all&year=2024&start=Filter joined us as a medical translator]. Thank you from [[m:WikiProject_Med|Wiki Project Med]] for helping bring free, complete, accurate, up-to-date health information to the public. We look forwards to working together in 2025.
|}
Thanks again :-) -- [https://mdwiki.org/wiki/User:Doc_James <span style="color:#0000f1">'''Doc James'''</span>] along with the rest of the team at '''[[m:WikiProject_Med|Wiki Project Med Foundation]]''' 06:54, 26 January 2025 (GMT)
</div>
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_Translators_2024&oldid=28173086 -->
:I appreciate the award. Hope to do more this year [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 10:24, 26 January 2025 (GMT)
== Request for help ==
Hello @[[User:DaSupremo|DaSupremo]],
My name is [[User:UOzurumba (WMF)|Uzoma]], I am the Movement Communications Specialist supporting the [[mediawikiwiki:Wikimedia_Language_and_Product_Localization|Wikimedia Language and Product Localization]] team. I am reaching out because you [[mediawikiwiki:Translation_suggestions:_Topic-based_&_Community-defined_lists/Collaborators#User_names_and_campaigns|indicated interest]] in participating in the [[mediawikiwiki:Translation_suggestions:_Topic-based_&_Community-defined_lists|Translation suggestions: Topic-based & Community-defined lists]] project.
We now have the [https://sw.m.wikipedia.org/w/index.php?title=Special:ContentTranslation&campaign=contributionsmenu&to=sw&filter-type=automatic&filter-id=collections&active-list=suggestions&from=en Community-defined list feature] in the [https://sw.m.wikipedia.org/w/index.php?title=Special:ContentTranslation&campaign=contributionsmenu&to=sw&filter-type=automatic&filter-id=previous-edits&active-list=draft&from=en Content translation tool]. We want to approach organisers of Wiki campaigns that involve translation happening now or soon to add the collection tags to their article list. So that people who use the Content translation tool can discover these campaigns and participate directly from the moment they access the tool using their mobile device. The campaign suggestions will be in the "All Collection" category of the Translation suggestion feature in the tool, as illustrated in the GIF below.
[[File:How_to_select_a_specific_collection_&_all_collections_(1).gif|Screen record of how to select a specific collection and "all collections"]]
'''Our request'''
Please help us by providing a list of the campaigns happening in your community and the organisers we can approach to add the tag. This is important to us because we need to learn from its usage for campaigns.
I would appreciate your help connecting me to the campaigns you are preparing for in your community.
I look forward to your response, and please let me know if you need any clarification. Thank you so much!
Best regards, [[User:UOzurumba (WMF)|UOzurumba (WMF)]] ([[User talk:UOzurumba (WMF)|talk]]) 22:28, 11 February 2025 (GMT)
:Hello @[[User:UOzurumba (WMF)|UOzurumba (WMF)]] thanks for reaching out. The Ghanaian Pidgin Wikipedia will be participating in this year's [[metawiki:Wiki_Loves_Ramadan_2025/Participants#Participating_Communities|Wiki Loves Ramadan]]. I will keep you posted when the community participates in subsequent editathons and campaigns. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:43, 11 February 2025 (GMT)
::Thank you so much, @[[User:DaSupremo|DaSupremo]], for this information. I will keep in touch.
::Best regards, [[User:UOzurumba (WMF)|UOzurumba (WMF)]] ([[User talk:UOzurumba (WMF)|talk]]) 18:47, 13 February 2025 (GMT)
:::Ok @[[User:UOzurumba (WMF)|UOzurumba (WMF)]] [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:14, 13 February 2025 (GMT)
== Follow-up on Incomplete Information for Wiki Loves Ramadan 2025 ==
Hi DaSupremo,
Thank you for signing up your community for For Wiki Loves Ramadan 2025. Please provide the following missing information on the [[m:Wiki Loves Ramadan 2025/Participants|participants' page of Wiki Loves Ramadan 2025]].
* Local Project Page Link
* Local Organizer
* Jury Tools Link
* Jury Members
''For the Team'', [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 05:49, 1 April 2025 (GMT)
:Hello [[User:ZI Jony|'''ZI Jony''']] [[User talk:ZI Jony|<sup>''(Talk)''</sup>]], thanks for the message. Please none of the information above were created because I am the only person contributing on the Ghanaian Pidgin Wikipedia participating in the contest. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo#top|talk]]) 11:00, 1 April 2025 (UTC) [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 11:01, 1 April 2025 (GMT)
::@[[User:DaSupremo|DaSupremo]], thank you for your efforts. Unfortunately, above requirements are mandatory. I would like to request you to create an local Wikipedia project page (you would be able to copy content from [[m:Wiki Loves Ramadan 2025/Sample|here]], and then translate in your local language). Ask others to join with you as local organizer and jury members. [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 14:23, 1 April 2025 (GMT)
:::Thanks. Can I still participate as a participant because we did not apply for a grant to organise this event so we have no funds to award winners and its associated cost? [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 14:29, 1 April 2025 (GMT)
::::@[[User:DaSupremo|DaSupremo]], you still can continue as an local participant. Most of local organizers work without grant, as there are international prizes available. [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 14:46, 1 April 2025 (GMT)
:::::Oh okay...thanks. I will set up the local page then. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 15:10, 1 April 2025 (GMT)
== Reminder: Submit Your Local Results for Wiki Loves Ramadan 2025 by 15 May ==
Dear DaSupremo,
Thank you for your valuable contributions to '''Wiki Loves Ramadan 2025''' in your communities!
This is a kind reminder that the '''deadline to submit your local results is 15 May 2025'''.
Please make sure to submit the '''complete and detailed results''' of your local contest on the following Meta-Wiki page:
'''[[m:Wiki Loves Ramadan 2025/Results]]'''
Additionally, feel free to add a brief summary of your local event under the '''Results''' section in your country/region’s row on the participants page:
'''[[m:Wiki Loves Ramadan 2025/Participants]]'''
If you need any assistance during this process, don’t hesitate to reach out.
Thank you for your continued dedication and support!
For, Wiki Loves Ramadan International Team 11:51, 2 May 2025 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/Local_organizers&oldid=28651179 -->
==Testing the tool==
Hey DaSupremo was just testing the tool here and thus had put it in my user space. Article is not actually translated
https://gpe.wikipedia.org/w/index.php?title=Rabies&action=history
[[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 15:24, 7 May 2025 (GMT)
:Hello @[[User:Doc James|Doc James]], yeah I realized that and that is the reason I am moving them to mainspace and translating them. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:01, 7 May 2025 (GMT)
::Excellent, and we have the disease infobox / other infoboxes formating correctly now. See [[Glioblastoma]] [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 15:59, 8 May 2025 (GMT)
:::Great. Thank you for this. Now we can have infoboxes on the Ghanaian Pidgin Wikipedia. Greatly appreciated [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 17:28, 8 May 2025 (GMT)
== Final Reminder – Submit Full Local Results for Wiki Loves Ramadan 2025 by 15 May EOD ==
Dear DaSupremo,
This is a final reminder that the deadline to submit your '''full and detailed local results''' for '''Wiki Loves Ramadan 2025''' is '''15 May 2025''' EOD.
Please ensure you complete the following as soon as possible:
* Submit your full results on Meta-Wiki here: '''[[m:Wiki Loves Ramadan 2025/Results]]'''
* Add a brief summary of your local event under the "Results" column on: '''[[Wiki Loves Ramadan 2025/Participants]]'''
Failure to submit by the deadline may result in exclusion from the international jury consideration.
If you need help or encounter any issues, feel free to contact the international team.
Thank you once again for your dedication and hard work!
''Warm regards,''<br/>
'''Wiki Loves Ramadan International Team''', 02:39, 15 May 2025 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/Local_organizers&oldid=28651179 -->
== Share Your Feedback – Wiki Loves Ramadan 2025 ==
Dear DaSupremo
Thank you for being a part of '''[[m:Special:MyLanguage/Wiki Loves Ramadan 2025|Wiki Loves Ramadan 2025]]''' — whether as a contributor, jury member, or local organizer. Your efforts helped make this campaign a meaningful celebration of culture, heritage, and community on Wikimedia platforms.
To help us improve and grow this initiative in future years, we kindly ask you to complete a short '''feedback form'''. Your responses are valuable in shaping how we support contributors like you.
* '''Feedback Form:''' [https://docs.google.com/forms/d/e/1FAIpQLSdXEtaqszxcwmTJa8pGT60E7GDtpbssNadR9vZFVFbLicGFBg/viewform Submit your feedback here]
* '''Deadline to submit:''' 31 May 2025
It will only take a few minutes to complete, and your input will directly impact how we plan, communicate, and collaborate in the future.
Thank you again for your support. We look forward to having you with us in future campaigns!
Warm regards,<br/>
''Wiki Loves Ramadan International Team'' 08:51, 19 May 2025 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/Participants&oldid=28751574 -->
== Wiki Loves Ramadan 2025 – Global Top 10 Winner: Congratulations! ==
'''Dear DaSupremo,'''
Congratulations! You have been selected as one of the '''Top 10 Global Winners''' (ranks 4 to 10) of the '''[[m:Wiki Loves Ramadan 2025|Wiki Loves Ramadan 2025]]''' campaign. Your contributions and participation have greatly enriched the project, and we sincerely appreciate your efforts.
To send you your prize and the official campaign T-shirt, we kindly request the following details:
* Full name:
* Wikimedia username:
* Country of residency:
* Email address:
* Preferred T-shirt size (M, L, XL):
* Preferred T-shirt color (Black, White, Navy):
'''Please send the above information within 24 hours to:''' '''support@wikilovesramadan.org'''
Your prize will be delivered through the [https://www.tremendous.com/catalog/ Tremendous] platform.
Also, we kindly request you to fill the '''[https://docs.google.com/forms/d/e/1FAIpQLSdXEtaqszxcwmTJa8pGT60E7GDtpbssNadR9vZFVFbLicGFBg/viewform Participant Feedback Form]''' at your earliest convenience.
Once again, thank you for your amazing contribution.
'''Best regards,'''
''Wiki Loves Ramadan International Team'', [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 03:43, 27 May 2025 (GMT)
:Hello @[[User:ZI Jony|ZI Jony]], Thanks for the message. I have some reservations about the Winner of the campaign. I do not understand the language but it is clear when an article is created in a particular language. Most of their contributions (from what I sampled) where actually 'discussion pages' rather than translated articles. See [[:bn:আলাপ:মরক্কোতে_আশুরা|this]], [[:bn:আলাপ:গ্রেটার_টলেডো_ইসলামিক_সেন্টার|this]], [[:bn:আলাপ:মুসলিম_আমেরিকান_সোসাইটি|this]] and most could be found on the [[xtools:pages/bn.wikipedia.org/Hasan muntaseer/1|Xtool]]. Moreover, they were not even registered on the dashboard as we were told it was a requirement. On the dashboard, only [[wmfdashboard:courses/Wiki_Loves_Ramadan/Wiki_Loves_Ramadan_2025|241 articles]] where created in the Bangla Wikipedia. I might be wrong but their results need to be reviewed to ensure fairness and transparency. Thank you. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 08:03, 27 May 2025 (GMT)
::[[User:DaSupremo|DaSupremo]], I believe that the same question you maybe asked to Dnshitobu earlier! Mostly tracking categories are used in the talk page of the articles for almost all Wikipedia, including Bangla and English Wikipedia. They use a template on the article talk page where a description also placed, instead of using on the main articles. Using dashboard were not a mandatory tool, because many wikis' developed thier own jury tools, like Bangla, Ukrainian, even English Wikipedia also used a different tool called [https://fountain.toolforge.org Fountain], it’s depend on local organizers which tool they are comfortable to use. Bangla Wikipedia was submitted 1806 articles, due to non-relevant issue they removed several articles. For you clarity, Bangla Wikipedia was looking for additional jury members to complete thier jury process in time, and I joined to help then, in the meantime I have re-reviewd several articles. So, I believe that the jury process were well strictured and trusted. I kindly request you to provide the details you have been asked at your earliest convenience. Additional inquiry, are you attending EduWiki Conference 2025? Or, someone who can receive your gift and certificate from the conference let me know in the same email. Thank you! [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 10:51, 27 May 2025 (GMT)
:::Ok...thanks for the detailed explanation. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 11:03, 27 May 2025 (GMT)
== [[José Rafael Córdero Sánchez]] ==
Hi DaSupremo, I need your help about this article because is a crosswiki spam, for more details please check: [[:nl:Overleg Wikipedia:Checklijst langdurig structureel vandalisme/Josercs1|this report]] from Dutch Wikipedia. Thank you. [[User:Taichi|Taichi]] ([[User talk:Taichi|talk]]) 23:48, 16 October 2025 (GMT)
:Hello @[[User:Taichi|Taichi]]. Thanks for reaching out and well noted. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 00:01, 17 October 2025 (GMT)
== [[Samata (fashion entrepreneur)]] ==
Hi DaSupremo, I noticed that you expanded this article in 2023 by translating content from English Wikipedia. The English Wikipedia article was deleted earlier this year as most of the sources were found to be spam or unreliable. Other language Wikipedias like French, Arabic, Swahili and Igbo have also deleted this article on similar grounds. It seems the original English article was written by a spammer for promotional purposes, therefore the Ghanaian Pidgin article (which was primarily translated from English) should also be deleted. Let me know your thoughts. [[User:Acoustical|Acoustical]] ([[User talk:Acoustical|talk]]) 19:16, 25 November 2025 (GMT)
:Hello @[[User:Acoustical|Acoustical]]. Thanks for reaching out and well noted. Since it has been deleted from other language Wikipedias, I think it should be deleted too on the Ghanaian Pidgin WIkipedia. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:32, 25 November 2025 (GMT)
== Undeletion Request ==
hello @[[User:DaSupremo|DaSupremo]]
I noticed that you previously improved the article about Adebayo Temitayo (Realjjfrosh). I wanted to let you know that the page was later deleted.
If you have time, I would appreciate any guidance on whether the sources used (Punch, Vanguard, ThisDay, BusinessDay, Daily Trust) meet the project’s notability standards, or how the article could be reworked to comply fully with policy.
Thank you for your earlier improvements and for any advice you may be able to offer. [[Special:Contributions/~2026-74643-7|~2026-74643-7]] ([[User talk:~2026-74643-7|talk]]) 12:13, 3 February 2026 (GMT)
:It was deleted because of (Spam and it was a ([[metawiki:steward|steward]] action)) [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 12:19, 3 February 2026 (GMT)
::Ok thanks [[Special:Contributions/~2026-74643-7|~2026-74643-7]] ([[User talk:~2026-74643-7|talk]]) 12:39, 3 February 2026 (GMT)
== Thank you for being a medical contributors! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{| style="background-color: #fdffe7; color: #000; border: 1px solid #fceb92;"
|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[File:Wiki Project Med Foundation logo.svg|130px]]
|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" |'''The 2025 Cure Award'''
|-
| style="vertical-align: middle; padding: 3px;" |In 2025 you '''[[mdwiki:WikiProjectMed:WikiProject_Medicine/Stats/Top_medical_editors_2025_(all)|were one of the top medical editors in your language]]'''. Thank you from [[m:WikiProject_Med|Wiki Project Med]] for helping bring free, complete, accurate, up-to-date health information to the public. We appreciate you and the vital work you do!
Wiki Project Med Foundation is a [[meta:Wikimedia_thematic_organizations|thematic organization]] whose mission is to improve our health content. '''[[meta:Wiki_Project_Med#People_interested|Consider joining for 2026]]''', there are no associated costs.
Additionally one of our primary efforts revolves around translating health content. We invite you to '''[https://mdwiki.toolforge.org/Translation_Dashboard/index.php try our new workflow]''' if you have not already. Our dashboard automatically [https://mdwiki.toolforge.org/Translation_Dashboard/leaderboard.php collects statistics] of your efforts and we are working on [https://mdwiki.toolforge.org/fixwikirefs.php tools to automatically improve formating].
|}
Look forwards to collaborating in the year ahead. Thanks again :-) -- [[mdwiki:User:Doc_James|<span style="color:#0000f1">'''Doc James'''</span>]] along with the rest of the team at '''[[m:WikiProject_Med|Wiki Project Med Foundation]]''' 07:42, 14 February 2026 (GMT)
</div>
(This message was sent to [[:User:DaSupremo]] and is being posted here due to a redirect.)
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_Other_Language_Editors_2025&oldid=30070084 -->
== Thank you for being a medical translator! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{| style="background-color: #fdffe7; color: #000; border: 1px solid #fceb92;"
|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[File:Wiki Project Med Foundation logo.svg|100px]]
|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" |'''The 2025 Cure Translators Award'''
|-
| style="vertical-align: middle; padding: 3px;" |In 2025 you [https://mdwiki.toolforge.org/Translation_Dashboard/leaderboard.php?camp=all&user_group=all&year=2025&month=All joined us as a medical translator]. Thank you from [[m:WikiProject_Med|Wiki Project Med]] for helping bring free, complete, accurate, up-to-date health information to the public.
Wiki Project Med Foundation is a [[meta:Wikimedia_thematic_organizations|thematic organization]] whose mission is to improve our health content. '''[[meta:Wiki_Project_Med#People_interested|Consider formally joining the organization for 2026]]''', there are no associated costs.
|}
Look forwards to collaborating further in the year ahead. Thanks again :-) -- [[mdwiki:User:Doc_James|<span style="color:#0000f1">'''Doc James'''</span>]] along with the rest of the team at '''[[m:WikiProject_Med|Wiki Project Med Foundation]]''' 07:53, 14 February 2026 (GMT)
</div>
(This message was sent to [[:User:DaSupremo]] and is being posted here due to a redirect.)
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_Translators_2025&oldid=30070105 -->
== Feminism and Folklore 2026 – Community Organisers & Jury ==
Hello {{PAGENAME}}!,
Thank you for taking the lead in organising '''Feminism and Folklore 2026''' in your community. We truly appreciate your efforts!
To ensure a smooth and successful campaign, please make sure you have:
* Fully completed all details on the [[:m:Feminism and Folklore 2026/Project Page|Feminism and Folklore 2026 Project Page]]:
* Started promoting the campaign within your community.
* Requested a local administrator to place a '''sitenotice''' about the campaign so users are notified.
* Used the '''[https://tools.wikilovesfolklore.org/fnf/ Article List Generator Tool]''' and shared the generated article lists with your community.
=== Internet & Childcare Support ===
Community organisers and jury members who require '''internet and childcare support''' (non-mandatory, opt-in, request-only support) should fill the support request form '''by 22 February 2026'''.
'''[https://docs.google.com/forms/d/e/1FAIpQLSeutXEF1yTnJfExWUYPIf6SkhcnTgul07BeI-biqT4RE_vsrA/viewform Link to the form]'''
Requests submitted after this date will not be entertained.
=== Important Participation Guidelines ===
* Minimum article size: '''3000 bytes and 300 words''' (final decision may be set by local organisers).
* If your country is not listed on the Article list generator tool, please contact us.
=== Community Engagement ===
* Keep your community active and motivated throughout the campaign.
* Share your achievements and notable articles with us so we can highlight them globally.
* In the support form, please indicate if you would like a '''quick coordination call after the campaign'''.
Let’s make '''Feminism and Folklore''', under the banner of '''#WeTogether''', help bridge the '''gender gap''' and '''folklore gap''' on Wikipedia worldwide. 🌍✊
Thank you for your collaboration!
''If someone from your community organisers or jury has missed this message feel free to share this message with them.''
Feminism and Folklore International Team.
–[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 05:17, 16 February 2026 (GMT)
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/fnf26&oldid=30083330 -->
== Translation request ==
Hello, DaSupremo.
Can you translate and upload the articles [[:en:Bazardüzü]] and [[:en:Campi Flegrei]] in Ghanaian Pidgin Wikipedia?
Yours sincerely, [[User:Kurcke|Kurcke]] ([[User talk:Kurcke|talk]]) 07:39, 15 March 2026 (GMT)
:Hello @[[User:Kurcke|Kurcke]]. Noted [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 13:22, 15 March 2026 (GMT)
::Hello, DaSupremo.
::Thank you very much for the new article.
::Yours sincerely, [[User:Kurcke|Kurcke]] ([[User talk:Kurcke|talk]]) 16:43, 9 April 2026 (GMT)
:::Welcome @[[User:Kurcke|Kurcke]] [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:47, 9 April 2026 (GMT)
== Next Steps and Feedback meeting for Feminism and Folklore Organizers ==
<div style="border:8px maroon ridge; padding:6px;">
[[File:Feminism and Folklore 2026 logo.svg|center|550px|frameless]]
<div lang="en" dir="ltr" class="mw-content-ltr" style="padding: 1em 2em;">
<div style="text-align: center; width: 100%;">''{{int:please-translate}}''</div>
Dear Organizer,
I hope this message finds you well.
First and foremost, on behalf of the International Team I want to extend my gratitude to you for your efforts in organizing the '''Feminism and Folklore 2026''' campaign on your local Wikipedia. Your contribution has been instrumental in bridging the gender and folk gap on Wikipedia, and we truly appreciate your dedication to this important cause.
As the campaign has ended I wanted to inform you about the next steps. It's time to commence the jury process using the CampWiz or Fountain tool where your campaign was hosted. Please ensure that you update the details of the jury, campaign links and the names of organizers accurately on the [[:m:Feminism and Folklore 2026/Project Page|sign-up page]].
Once the jury process is completed, kindly update only the top 3 winners details on the [[:m:Feminism and Folklore 2026/Results|results page]] accordingly. The deadline for jury submission of results is '''April 30, 2026'''. However, if you find that the number of articles is high and you require more time, please don't hesitate to inform us via email or on campaign Meta Wiki talk page. We are more than willing to approve an extension if needed.
Should you encounter any issues with the tools, please feel free to reach out to us on Telegram for assistance.
Your feedback and progress updates are crucial for us to improve the campaign and better understand your community's insights. Therefore, we kindly ask you to spare just an hour to collectively share your progress and achievements with us during our '''[[:m:Event:Feminism and Folklore 2026 Post-Campaign Office Hour|community feedback session]]'''. Your input will greatly assist us in making the campaign more meaningful and impactful.
Thank you once again for your hard work and dedication to the Feminism and Folklore campaign. Your efforts are deeply appreciated, and we look forward to hearing from you soon.
Warm regards,
[[User:Tiven2240|Tiven2240]]
on behalf of Feminism and Folklore International Team
<nowiki>#WeTogether</nowiki>
</div></div>
--[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 11:57, 11 April 2026 (GMT)
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/fnf26&oldid=30391231 -->
== You may be an eligible candidate for the U4C election ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Greetings,
The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years.
This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required.
The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will week between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run.
In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 18:33, 28 April 2026 (GMT) </div>
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30471754 -->
== Ghanaian Pidgin ==
Hello. I'm looking for Ghanaian Pidgin translation of descriptions of a few items for Wikidata. Would you help? [[User:Eurohunter|Eurohunter]] ([[User talk:Eurohunter|talk]]) 19:45, 7 May 2026 (GMT)
:Sure [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 20:07, 7 May 2026 (GMT)
:: I'm looking for:
: "studio album by Basshunter"
: "compilation album by Basshunter"
: "song by Käärijä den Basshunter"
: "single by Käärijä den Basshunter"
: "promotional single by Basshunter"
: "music video by Basshunter"
: "lyric video by Basshunter"
:: [[User:Eurohunter|Eurohunter]] ([[User talk:Eurohunter|talk]]) 20:17, 7 May 2026 (GMT)
:::@[[User:Eurohunter|Eurohunter]] Done [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:25, 8 May 2026 (GMT)
:::: So they are almost like English with the only difference of "den"? [[User:Eurohunter|Eurohunter]] ([[User talk:Eurohunter|talk]]) 18:00, 8 May 2026 (GMT)
:::::Ghanaian Pidgin is more of English with a bit of local Ghanaian languages [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 18:50, 8 May 2026 (GMT)
:::::: Good to know. All added. Thanks a lot. [[User:Eurohunter|Eurohunter]] ([[User talk:Eurohunter|talk]]) 21:30, 8 May 2026 (GMT)
== Request writing about Isabelle de Charriere (Q123386) ==
hi DaSupremo Would you like to write about Isabelle de Charriere (Q123386) for the GPE Wikipedia? It'll be appreciated if it 'll be done. [[User:Boss-well63|Boss-well63]] ([[User talk:Boss-well63|talk]]) 18:41, 29 May 2026 (GMT)
== Final Reminder: Submission of Local Winners for Feminism and Folklore 2026 ==
Dear Feminism and Folklore organiser,
This is a friendly reminder that the deadline for submitting the names and details of your local winners for '''Feminism and Folklore 2026''' is '''5 June 2026'''.
Please ensure that your community's [[:m:Feminism and Folklore 2026/Results|winner information]] is submitted before this date. Communities that do not provide their winner data by the deadline will unfortunately not be eligible for prize distribution, and the international organizing team will not be able to accommodate late submissions received after 5 June 2026.
Thank you for your prompt attention to this matter and for your participation in the campaign.
Best regards,
'''Feminism and Folklore International Organizing Team'''
--[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 02:09, 3 June 2026 (GMT)
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/wlf2026&oldid=30627457 -->
== Thank you for organising Feminism and Folklore 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
[[File:Feminism and Folklore 2026 logo.svg|right|350px]]
Dear {{PAGENAME}},
Your dedication, coordination, and hard work played a vital role in making this year's [[:m:Feminism and Folklore 2026|Feminism and Folklore]] campaign successful. We truly appreciate the time and effort you invested in engaging your community and supporting participants.
As we have completed the jury phase and begin planning for next year's campaign, we would like to learn from your experiences. Please complete the organisers' feedback form and share your insights, challenges, and suggestions on how we can improve the campaign.
'''This feedback form is mandatory for all organisers''', as it helps us evaluate the campaign and make meaningful improvements for future editions.
'''Form link [https://docs.google.com/forms/d/e/1FAIpQLSf6IsGAsxkTEWTwueyLg-gBjRVlY3g2kTNj3xRhDiILiQnQwQ/viewform?usp=dialog here]'''
Please submit your response by '''25 June 2026'''.
Thank you once again for your invaluable contributions and for helping make Feminism and Folklore a global success. We look forward to working with you again in the future!
Regards,
'''Feminism and Folklore Team'''
--[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 12:05, 18 June 2026 (GMT)
</div>
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/wlf2026&oldid=30704175 -->
== Thank you for being a part of Feminism and Folklore 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
[[File:Feminism and Folklore 2026 logo.svg|right|350px]]
Dear {{PAGENAME}},
Your contributions helped make this year's [[:Feminism and Folklore 2026|Feminism and Folklore]] campaign a great success, and we are truly grateful for your time, knowledge, and dedication to documenting women's stories and folklore on Wikimedia projects.
As we reflect on this year's campaign and prepare for the next edition, we'd love to hear about your experience. Please take a few minutes to fill out our feedback form and share your thoughts and suggestions.
As a token of our appreciation, everyone who completes the form will receive a '''special digital postcard'''! in their email. This year marks '''''25 years of Wikipedia''''', and the postcard has been created to celebrate this milestone and to recognize the incredible efforts of participants like you who continue to enrich free knowledge for the world.
'''Form Link - [https://docs.google.com/forms/d/e/1FAIpQLSdqFZN9IdWbAnZ_7DyG5bIsuq7KAkdsIxweC_TdPH9In-tthQ/viewform?usp=dialog here]'''
Please complete the feedback form by '''25 June 2026'''.
Thank you once again for making Feminism and Folklore 2026 a success. We hope to see you again in future campaigns!
Best regards,
Feminism and Folklore international Team.
--[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 14:31, 18 June 2026 (GMT)
</div>
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/wlf2026&oldid=30704478 -->
== Share your Wiki Loves Ramadan 2026 journey! ==
Dear Organizer,
On behalf of the Wiki Loves Ramadan International Team, I want to send a massive thank you for your leadership and hard work during the 2026 campaign. Organizing local events, coordinating juries, and tracking metrics takes a lot of effort, and your dedication has been vital to bridging the knowledge gap regarding Islamic heritage and traditions.
As we wrap up this year's campaign, we would love to hear how things went in your community. We have put together the Organizer Feedback Form to capture your successes, challenges, and metrics.
* '''Link to form''': https://docs.google.com/forms/d/e/1FAIpQLSfDsuYSv2S4RCQuwAO9MlykJwgPIy-l9ENTr7I_GxpfVuo2TA/viewform
* '''Deadline''': 31 July 2026
Thank you again for championing this campaign. We couldn't do this without you.
Warm Regards, [[m:User:ZI Jony|ZI Jony]] (Project Lead) for the Wiki Loves Ramadan 2026 International Team. 20:12, 29 June 2026 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/2026/Organizers&oldid=30750499 -->
== Thank you for joining Wiki Loves Ramadan 2026! ==
Dear Participant,
Thank you so much for participating in the Wiki Loves Ramadan 2026 campaign! Whether you were writing articles or uploading photos to Wikimedia Commons, your contributions have helped share beautiful traditions, Islamic history, and cultural heritage with the rest of the world.
We want to make sure next year's campaign is even better, and we need your help to do it! We would love it if you could take 3–5 minutes to fill out our quick '''Participant Feedback Form'''.
* '''Link to form''': https://docs.google.com/forms/d/e/1FAIpQLScw_bPHsVzpby50jc2_syJD5-mS9scnRL5BLv9UXH2tK3Mr8w/viewform
Thank you again for sharing your knowledge and creativity with the Wikimedia movement. Keep an eye on your talk page and our social media for the final winner announcements soon! Happy editing,
Warm Regards, [[m:User:ZI Jony|ZI Jony]] (Project Lead) for the Wiki Loves Ramadan 2026 International Team. 20:13, 29 June 2026 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/2026/Participants&oldid=30750498 -->
== Congratulations! You are an International Winner for Wiki Loves Ramadan 2026 ==
Hello DaSupremo
On behalf of the '''Wiki Loves Ramadan International Team''', I am absolutely thrilled to inform you that you have been selected as an International Winner for the 2026 Content Writing Competition! Your incredible dedication to writing and expanding articles has been recognized, and you have officially won the '''Consolation top 10 winner'''.
To claim your prize, we have just sent an important email to the address linked to your Wikimedia account from '''support@wikilovesramadan.org'''.
Action required: Please check your email inbox right away. If you don't see it, make sure to check your Spam, Promotions, or Social folders, as official emails sometimes get filtered there by mistake.
Please follow the instructions in that email to fill out your winner's form so we can process your reward.
Congratulations again on this amazing achievement, and thank you for helping us share Islamic history and culture with the world! [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 16:31, 30 June 2026 (GMT)
== Nuking ==
Could you undo the nuking you just did on the editing I was doing the past few days? I put a lot of work into that, like with making sure the coding worked into Ghanaian Pidgin for "Module:If preview/styles.css" and so-on: like my entire weekend was spent just on this. And I saw you were helping correct any mistakes I had made with translating, which I appreciated, so I don't know why you've changed course. [[Special:Contributions/~2026-39972-87|~2026-39972-87]] ([[User talk:~2026-39972-87|talk]]) 22:43, 14 July 2026 (GMT)
:Hello @[[User:~2026-39972-87|~2026-39972-87]]. Thanks for reaching out. I deleted your edits because they were not properly translated into the Ghanaian Pidgin and I initially cautioned you. You continued making wrong translations using AI. I am the only admin for this language and it is making my work tedious. Because of your bad translations I can not keep up with edits which could involve vandalism and spamming articles. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:54, 14 July 2026 (GMT)
::Right, okay: I will slow down, keep things simpler/not tedious so they can be reviewed. Could you however un-nuke the code-related articles in the meantime: just those ones specifically? That took hours to do, like to make sure I had all the right code sections moved over not to cause errors. And I found a good number of code sections you created where you hadn’t actually transferred over the documentation that made those sections works. [[Special:Contributions/~2026-39763-56|~2026-39763-56]] ([[User talk:~2026-39763-56|talk]]) 23:21, 14 July 2026 (GMT)
:::Hello @[[User:~2026-39763-56|~2026-39763-56]], thanks for understanding and please keep the edits simple to aid in making any necessary corrections. I really appreciate the edits you made but I just could not keep up with the reviewing process hence the reason I deleted them. I am very sorry about that. I will also would like to ask you to create an account if you are comfortable to prevent valuable edits like yours being deleted since it is on a temporal account. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 23:26, 14 July 2026 (GMT)
::::I can do that, yes, thank you. Can you though restore the code article creations like Infobox character? Looking through your logs, you should be able to tell which ones are code articles from the names. Or if you want I can list them. Since even with an account those would take a ''while'' to create again. [[Special:Contributions/~2026-39870-28|~2026-39870-28]] ([[User talk:~2026-39870-28|talk]]) 11:45, 15 July 2026 (GMT)
:::::Hello @[[User:~2026-39870-28|~2026-39870-28]], please can you share them with me. I tried searching for them but your username keeps changing because it is a temporal account. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 17:35, 15 July 2026 (GMT)
::::::Your [[Special:Log/DaSupremo|logs from the 14th of July list them all here]]: is that helpful? I also tried doing a more simple article [[Spider-Woman (Gwen Stacy)|here]]: is this acceptable, or is it ''too'' simple )requiring more detail)? [[Special:Contributions/~2026-39923-93|~2026-39923-93]] ([[User talk:~2026-39923-93|talk]]) 13:40, 16 July 2026 (GMT)
:::::::Hello @[[User:~2026-39923-93|~2026-39923-93]]. Thanks. It helps and the article looks ''too'' simple. You can improve on it but the mass edit won't be of help. Thanks for your understanding [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:34, 16 July 2026 (GMT)
== Gentle Reminder: Kindly submit your Organizer Feedback for Wiki Loves Ramadan 2026 ==
Dear Organizer,
Hope you are doing well and keeping safe.
We are reaching out to express our heartfelt gratitude for your relentless efforts and dedication in organizing Wiki Loves Ramadan 2026 in your local community. Organizing campaigns takes a lot of hard work, and your leadership has truly made a wonderful impact in bridging the knowledge gap regarding Islamic history and culture.
As we are wrapping up this year’s activities, we kindly remind you to share your local campaign report and experience with us. If you haven't done so already, please take a few minutes to fill out the Organizer Feedback Form.
* '''Link to form''': https://docs.google.com/forms/d/e/1FAIpQLSfDsuYSv2S4RCQuwAO9MlykJwgPIy-l9ENTr7I_GxpfVuo2TA/viewform
* '''Deadline''': 31 July 2026
Your feedback is incredibly valuable to us. It will not only help us prepare our global impact report but also guide us in securing better resources and funding for organizers like you in the upcoming years. (You will also find a small section inside the form to provide your local language translations for the 2027 campaign banners!).
Thank you so much for being a pillar of this campaign. Together, we can make the 2027 edition even more successful!
Warm Regards, [[m:User:ZI Jony|ZI Jony]] (Project Lead) for the Wiki Loves Ramadan 2026 International Team. 20:47, 19 July 2026 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/2026/Organizers&oldid=30750499 -->
== Lua module Yesno protection ==
Hello, DaSupremo. Could you please protect [[Module:Yesno]] so that only administrators can edit it?
Below is a list of Lua modules that indicate "This module is subject to page protection," but are not currently protected:
# [[Module:Citation/CS1]]
# [[Module:Data]]
# [[Module:Error]]
# [[Module:Icon]]
# [[Module:Medals table]]
# [[Module:Portal bar]]
# [[Module:WikidataCheck]]
See the list of Lua [https://gpe.wikipedia.org/wiki/Special:ProtectedPages?namespace=828&type=edit&level=0&size-mode=min&size= protected] modules.<br />
Thanks in advance.<br /> [[User:Nimmzo|Nimmzo]] ([[User talk:Nimmzo|talk]]) 20:30, 15 September 2026 (GMT)
i5s0gyyjvmin771kg4i3trbuzskxyyt
111947
111938
2026-09-15T22:18:47Z
DaSupremo
9
/* Lua module Yesno protection */ Reply
111947
wikitext
text/x-wiki
== Welcome to the Ghanaian Pidgin Wikipedia! ==
Hi DaSupremo, and also ping @[[User:Yaw tuba|Yaw tuba]], @[[User:Gyanford|Gyanford]], @[[User:Feliciopedro2|Feliciopedro2]], @[[User:Sunkanmi12|Sunkanmi12]], @[[User:NanaKojo16|NanaKojo16]], @[[User:NanaYawBotar|NanaYawBotar]], @[[User:Afimaame|Afimaame]], @[[User:Elkay20|Elkay20]] and @[[User:Ibn Dagara|Ibn Dagara]].
Welcome to the Ghanaian Pidgin Wikipedia! You and all your co-contributors have done a great job so far in getting here, and I would like to congratulate you on finally having the newest official Wikipedia edition! Well done to all of you!
For previous wikis, there have usually been some technical issues that take some time to fix, but for the first time in many years, I think all of the normal technical issues have actually already bene solved now, less than one day after the Wikipedia was created. Visual editor works like it should, the same with the DiscussionTools, Wikidata support has been enabled, and the statistics in [[Special:Statistics]] look correct.
But still, if you notice any issues, or if there are things you want to do but aren't able to for some reason, please feel free to reach out to me, and I can help figure out how to solve them.
Best of luck to all of you with your new Wikipedia, and happy editing! 🎉 [[User:Jon Harald Søby|Jon Harald Søby]] ([[User talk:Jon Harald Søby|talk]]) 01:07, 6 July 2023 (GMT)
:Hello [[User:Jon Harald Søby|Jon Harald Søby]] ([[User talk:Jon Harald Søby|talk]]) thanks for that and we are also grateful for your continuous help and support. We would like to fix the use of bare URLS for references. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 13:48, 6 July 2023 (GMT)
:Thanks [[User:NanaKojo16|NanaKojo16]] ([[User talk:NanaKojo16|talk]]) 08:38, 7 July 2023 (GMT)
==Modifications to the home page==
Hello dear [[User:DaSupremo|DaSupremo]]
I've made a slight modification to the homepage, by adding the number of existing articles.
And I designed and programmed a new template for the introduction of the home page.
I hope you see it:[[User:Osps7/Test]]
With regards--[[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) 18:26, 19 August 2023 (GMT)
:Wow...thanks for that. [[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) It will help us track and remove vandalism on articles. Really grateful [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 21:38, 19 August 2023 (GMT)
==Important inquiry==
Dear [[User:DaSupremo|DaSupremo]], I am trying to work on developing the Ghanaian Pidgin Wikipedia by adding new tools and improving the work of the Ghanaian Pidgin Wikipedia by adding software tools that contribute to increasing effectiveness and contribute to protecting the encyclopedia from vandalism.
I'm trying to work on an add-on (MediaWiki:Gadget-autocomplete.js)
But I need permissions, how can I request permissions?
With regards--[[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) 11:42, 20 August 2023 (GMT)
:I think you can propose it on [[phab:|Phabricator]] and start working on it. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 12:36, 20 August 2023 (GMT)
== Suggestions ==
First off, congratulations on leading the creation of and becoming admin of this Wikipedia, which is still the newest AFAIK. Hope that this project continues to grow and thrive. Onto the suggestions: with regards to the references, I think if you used your admin permissions to import the CS1 citation templates from enwiki it would also take care of the dependent modules. Or maybe someone from the community should file a request on MetaWiki. Documentation templates would also be handy I also think it might be a good idea to add a system or template for handling linguistic issues: for instance, I've already seen a page copied from enwiki with no effort made to translate it (although I can't find the specific page right now). Thanks! [[User:MSG17|MSG17]] ([[User talk:MSG17|talk]]) 15:43, 24 August 2023 (GMT)
:Thanks for the good wishes. I would really need help cos I am not conversant with the templates. I will ask a couple of guys around. Thanks again [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:34, 24 August 2023 (GMT)
==suggestion==
Dear [[User:DaSupremo|DaSupremo]],
What do you think of the idea of adding a new section to the home page called “In the News” and updating it continuously?--[[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) 12:00, 10 September 2023 (GMT)
:Sounds good. A very good idea [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 12:07, 10 September 2023 (GMT)
== Note ==
Dear @[[User:DaSupremo|DaSupremo]], I hope you are well.
Over the past few days, I have developed a bot that I will activate here soon. It will create categories and templates that will help us. [[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]) 22:03, 3 November 2023 (GMT)
:Hello [[User:Osps7|Osps7]] ([[User talk:Osps7|talk]]), I am good and you? Noted and thanks for the continuous support. We really appreciate it. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:21, 3 November 2023 (GMT)
== Translation ==
Hi, could you please translate this to Ghanaian Pidgin?
Guosa is a constructed interlanguage originally created by Alex Igbineweka in 1965. It was designed to be a combination of the indigenous languages of Nigeria and to serve as a lingua franca to West Africa.
It has the following characteristics:
* It is an isolating language with subject–verb–object word order.
* There are no articles.
* There is no grammatical gender or noun class system.
* Most grammatical meaning is expressed through particles that precede the words they modify.
* Adjectives follow the noun.
* Guosa is generally prepositional.
Thank you. --[[User:Caro de Segeda|Caro de Segeda]] ([[User talk:Caro de Segeda|talk]]) 07:12, 16 November 2023 (GMT)
:Hello [[User:Caro de Segeda|Caro de Segeda]] ([[User talk:Caro de Segeda|talk]]), thanks for reaching out. This is the Ghanaian Pidgin translation:
:Guosa be constructed interlanguage wey Alex Igbineweka originally create am for 1965 insyd. Dem design am make e be combination of de indigenous languages for Nigeria wey e go serve as lingua franca go West Africa.
:E get de characteristics wey dey follow:
:•E be language wey dey isolate plus subject–verb–object word order.
:•No articles dey.
:•No grammatical gender anaa noun class system dey.
:•Dem dey express chaw grammatical meaning thru particles wey dey precede de words dem modify.
:•Adjectives dey follow de noun.
:•Guosa be generally prepositional. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 12:03, 16 November 2023 (GMT)
==Importing citation templates==
Was looking at importing cite journal, cite book, and cite web. Best way to do this would be to use this tool and select "Include all templates and transcluded pages" https://gpe.wikipedia.org/wiki/Special:Import
Would be happy to but only certain user groups have permission to use the tool. Best [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 12:30, 26 October 2024 (GMT)
:By the way hope to see you do more healthcare translations. Once we get the templates imported things will come through better. Best [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 12:44, 26 October 2024 (GMT)
::Thanks [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) for this information. It is valuable for us. I have checked it out and I realized it is a good tool. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 14:05, 26 October 2024 (GMT)
:::Are you able to make me a member of one of these groups "Administrators or Importers" so that I can help. Looking at "Template:Cite book" and not sure it worked properly. [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 23:17, 26 October 2024 (GMT)
::::No please. But I think you can request for a temporal admin [[metawiki:Steward_requests/Permissions#Administrator_access|here]] to enable you carry that task. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 11:05, 27 October 2024 (GMT)
== delete ==
Can you please delete [[Talk:Audrey Sitsofe Gadzekpo]] and [[Talk:Joseph Kwame Kumah]]? they are orphaned. Best regards, [[User:TenWhile6|TenWhile6]] ([[User talk:TenWhile6|talk]]) 17:01, 14 November 2024 (GMT)
:Done [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 18:59, 14 November 2024 (GMT)
== Thank you for being a medical translator! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{| style="background-color: #fdffe7; border: 1px solid #fceb92;"
|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[File:Wiki Project Med Foundation logo.svg|100px]]
|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" |'''The 2024 Cure Translators Award'''
|-
| style="vertical-align: middle; padding: 3px;" |In 2024 you [https://mdwiki.toolforge.org/Translation_Dashboard/leaderboard.php?camp=all&project=all&year=2024&start=Filter joined us as a medical translator]. Thank you from [[m:WikiProject_Med|Wiki Project Med]] for helping bring free, complete, accurate, up-to-date health information to the public. We look forwards to working together in 2025.
|}
Thanks again :-) -- [https://mdwiki.org/wiki/User:Doc_James <span style="color:#0000f1">'''Doc James'''</span>] along with the rest of the team at '''[[m:WikiProject_Med|Wiki Project Med Foundation]]''' 06:54, 26 January 2025 (GMT)
</div>
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_Translators_2024&oldid=28173086 -->
:I appreciate the award. Hope to do more this year [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 10:24, 26 January 2025 (GMT)
== Request for help ==
Hello @[[User:DaSupremo|DaSupremo]],
My name is [[User:UOzurumba (WMF)|Uzoma]], I am the Movement Communications Specialist supporting the [[mediawikiwiki:Wikimedia_Language_and_Product_Localization|Wikimedia Language and Product Localization]] team. I am reaching out because you [[mediawikiwiki:Translation_suggestions:_Topic-based_&_Community-defined_lists/Collaborators#User_names_and_campaigns|indicated interest]] in participating in the [[mediawikiwiki:Translation_suggestions:_Topic-based_&_Community-defined_lists|Translation suggestions: Topic-based & Community-defined lists]] project.
We now have the [https://sw.m.wikipedia.org/w/index.php?title=Special:ContentTranslation&campaign=contributionsmenu&to=sw&filter-type=automatic&filter-id=collections&active-list=suggestions&from=en Community-defined list feature] in the [https://sw.m.wikipedia.org/w/index.php?title=Special:ContentTranslation&campaign=contributionsmenu&to=sw&filter-type=automatic&filter-id=previous-edits&active-list=draft&from=en Content translation tool]. We want to approach organisers of Wiki campaigns that involve translation happening now or soon to add the collection tags to their article list. So that people who use the Content translation tool can discover these campaigns and participate directly from the moment they access the tool using their mobile device. The campaign suggestions will be in the "All Collection" category of the Translation suggestion feature in the tool, as illustrated in the GIF below.
[[File:How_to_select_a_specific_collection_&_all_collections_(1).gif|Screen record of how to select a specific collection and "all collections"]]
'''Our request'''
Please help us by providing a list of the campaigns happening in your community and the organisers we can approach to add the tag. This is important to us because we need to learn from its usage for campaigns.
I would appreciate your help connecting me to the campaigns you are preparing for in your community.
I look forward to your response, and please let me know if you need any clarification. Thank you so much!
Best regards, [[User:UOzurumba (WMF)|UOzurumba (WMF)]] ([[User talk:UOzurumba (WMF)|talk]]) 22:28, 11 February 2025 (GMT)
:Hello @[[User:UOzurumba (WMF)|UOzurumba (WMF)]] thanks for reaching out. The Ghanaian Pidgin Wikipedia will be participating in this year's [[metawiki:Wiki_Loves_Ramadan_2025/Participants#Participating_Communities|Wiki Loves Ramadan]]. I will keep you posted when the community participates in subsequent editathons and campaigns. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:43, 11 February 2025 (GMT)
::Thank you so much, @[[User:DaSupremo|DaSupremo]], for this information. I will keep in touch.
::Best regards, [[User:UOzurumba (WMF)|UOzurumba (WMF)]] ([[User talk:UOzurumba (WMF)|talk]]) 18:47, 13 February 2025 (GMT)
:::Ok @[[User:UOzurumba (WMF)|UOzurumba (WMF)]] [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:14, 13 February 2025 (GMT)
== Follow-up on Incomplete Information for Wiki Loves Ramadan 2025 ==
Hi DaSupremo,
Thank you for signing up your community for For Wiki Loves Ramadan 2025. Please provide the following missing information on the [[m:Wiki Loves Ramadan 2025/Participants|participants' page of Wiki Loves Ramadan 2025]].
* Local Project Page Link
* Local Organizer
* Jury Tools Link
* Jury Members
''For the Team'', [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 05:49, 1 April 2025 (GMT)
:Hello [[User:ZI Jony|'''ZI Jony''']] [[User talk:ZI Jony|<sup>''(Talk)''</sup>]], thanks for the message. Please none of the information above were created because I am the only person contributing on the Ghanaian Pidgin Wikipedia participating in the contest. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo#top|talk]]) 11:00, 1 April 2025 (UTC) [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 11:01, 1 April 2025 (GMT)
::@[[User:DaSupremo|DaSupremo]], thank you for your efforts. Unfortunately, above requirements are mandatory. I would like to request you to create an local Wikipedia project page (you would be able to copy content from [[m:Wiki Loves Ramadan 2025/Sample|here]], and then translate in your local language). Ask others to join with you as local organizer and jury members. [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 14:23, 1 April 2025 (GMT)
:::Thanks. Can I still participate as a participant because we did not apply for a grant to organise this event so we have no funds to award winners and its associated cost? [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 14:29, 1 April 2025 (GMT)
::::@[[User:DaSupremo|DaSupremo]], you still can continue as an local participant. Most of local organizers work without grant, as there are international prizes available. [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 14:46, 1 April 2025 (GMT)
:::::Oh okay...thanks. I will set up the local page then. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 15:10, 1 April 2025 (GMT)
== Reminder: Submit Your Local Results for Wiki Loves Ramadan 2025 by 15 May ==
Dear DaSupremo,
Thank you for your valuable contributions to '''Wiki Loves Ramadan 2025''' in your communities!
This is a kind reminder that the '''deadline to submit your local results is 15 May 2025'''.
Please make sure to submit the '''complete and detailed results''' of your local contest on the following Meta-Wiki page:
'''[[m:Wiki Loves Ramadan 2025/Results]]'''
Additionally, feel free to add a brief summary of your local event under the '''Results''' section in your country/region’s row on the participants page:
'''[[m:Wiki Loves Ramadan 2025/Participants]]'''
If you need any assistance during this process, don’t hesitate to reach out.
Thank you for your continued dedication and support!
For, Wiki Loves Ramadan International Team 11:51, 2 May 2025 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/Local_organizers&oldid=28651179 -->
==Testing the tool==
Hey DaSupremo was just testing the tool here and thus had put it in my user space. Article is not actually translated
https://gpe.wikipedia.org/w/index.php?title=Rabies&action=history
[[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 15:24, 7 May 2025 (GMT)
:Hello @[[User:Doc James|Doc James]], yeah I realized that and that is the reason I am moving them to mainspace and translating them. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:01, 7 May 2025 (GMT)
::Excellent, and we have the disease infobox / other infoboxes formating correctly now. See [[Glioblastoma]] [[User:Doc James|Doc James]] ([[User talk:Doc James|talk]]) 15:59, 8 May 2025 (GMT)
:::Great. Thank you for this. Now we can have infoboxes on the Ghanaian Pidgin Wikipedia. Greatly appreciated [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 17:28, 8 May 2025 (GMT)
== Final Reminder – Submit Full Local Results for Wiki Loves Ramadan 2025 by 15 May EOD ==
Dear DaSupremo,
This is a final reminder that the deadline to submit your '''full and detailed local results''' for '''Wiki Loves Ramadan 2025''' is '''15 May 2025''' EOD.
Please ensure you complete the following as soon as possible:
* Submit your full results on Meta-Wiki here: '''[[m:Wiki Loves Ramadan 2025/Results]]'''
* Add a brief summary of your local event under the "Results" column on: '''[[Wiki Loves Ramadan 2025/Participants]]'''
Failure to submit by the deadline may result in exclusion from the international jury consideration.
If you need help or encounter any issues, feel free to contact the international team.
Thank you once again for your dedication and hard work!
''Warm regards,''<br/>
'''Wiki Loves Ramadan International Team''', 02:39, 15 May 2025 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/Local_organizers&oldid=28651179 -->
== Share Your Feedback – Wiki Loves Ramadan 2025 ==
Dear DaSupremo
Thank you for being a part of '''[[m:Special:MyLanguage/Wiki Loves Ramadan 2025|Wiki Loves Ramadan 2025]]''' — whether as a contributor, jury member, or local organizer. Your efforts helped make this campaign a meaningful celebration of culture, heritage, and community on Wikimedia platforms.
To help us improve and grow this initiative in future years, we kindly ask you to complete a short '''feedback form'''. Your responses are valuable in shaping how we support contributors like you.
* '''Feedback Form:''' [https://docs.google.com/forms/d/e/1FAIpQLSdXEtaqszxcwmTJa8pGT60E7GDtpbssNadR9vZFVFbLicGFBg/viewform Submit your feedback here]
* '''Deadline to submit:''' 31 May 2025
It will only take a few minutes to complete, and your input will directly impact how we plan, communicate, and collaborate in the future.
Thank you again for your support. We look forward to having you with us in future campaigns!
Warm regards,<br/>
''Wiki Loves Ramadan International Team'' 08:51, 19 May 2025 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/Participants&oldid=28751574 -->
== Wiki Loves Ramadan 2025 – Global Top 10 Winner: Congratulations! ==
'''Dear DaSupremo,'''
Congratulations! You have been selected as one of the '''Top 10 Global Winners''' (ranks 4 to 10) of the '''[[m:Wiki Loves Ramadan 2025|Wiki Loves Ramadan 2025]]''' campaign. Your contributions and participation have greatly enriched the project, and we sincerely appreciate your efforts.
To send you your prize and the official campaign T-shirt, we kindly request the following details:
* Full name:
* Wikimedia username:
* Country of residency:
* Email address:
* Preferred T-shirt size (M, L, XL):
* Preferred T-shirt color (Black, White, Navy):
'''Please send the above information within 24 hours to:''' '''support@wikilovesramadan.org'''
Your prize will be delivered through the [https://www.tremendous.com/catalog/ Tremendous] platform.
Also, we kindly request you to fill the '''[https://docs.google.com/forms/d/e/1FAIpQLSdXEtaqszxcwmTJa8pGT60E7GDtpbssNadR9vZFVFbLicGFBg/viewform Participant Feedback Form]''' at your earliest convenience.
Once again, thank you for your amazing contribution.
'''Best regards,'''
''Wiki Loves Ramadan International Team'', [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 03:43, 27 May 2025 (GMT)
:Hello @[[User:ZI Jony|ZI Jony]], Thanks for the message. I have some reservations about the Winner of the campaign. I do not understand the language but it is clear when an article is created in a particular language. Most of their contributions (from what I sampled) where actually 'discussion pages' rather than translated articles. See [[:bn:আলাপ:মরক্কোতে_আশুরা|this]], [[:bn:আলাপ:গ্রেটার_টলেডো_ইসলামিক_সেন্টার|this]], [[:bn:আলাপ:মুসলিম_আমেরিকান_সোসাইটি|this]] and most could be found on the [[xtools:pages/bn.wikipedia.org/Hasan muntaseer/1|Xtool]]. Moreover, they were not even registered on the dashboard as we were told it was a requirement. On the dashboard, only [[wmfdashboard:courses/Wiki_Loves_Ramadan/Wiki_Loves_Ramadan_2025|241 articles]] where created in the Bangla Wikipedia. I might be wrong but their results need to be reviewed to ensure fairness and transparency. Thank you. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 08:03, 27 May 2025 (GMT)
::[[User:DaSupremo|DaSupremo]], I believe that the same question you maybe asked to Dnshitobu earlier! Mostly tracking categories are used in the talk page of the articles for almost all Wikipedia, including Bangla and English Wikipedia. They use a template on the article talk page where a description also placed, instead of using on the main articles. Using dashboard were not a mandatory tool, because many wikis' developed thier own jury tools, like Bangla, Ukrainian, even English Wikipedia also used a different tool called [https://fountain.toolforge.org Fountain], it’s depend on local organizers which tool they are comfortable to use. Bangla Wikipedia was submitted 1806 articles, due to non-relevant issue they removed several articles. For you clarity, Bangla Wikipedia was looking for additional jury members to complete thier jury process in time, and I joined to help then, in the meantime I have re-reviewd several articles. So, I believe that the jury process were well strictured and trusted. I kindly request you to provide the details you have been asked at your earliest convenience. Additional inquiry, are you attending EduWiki Conference 2025? Or, someone who can receive your gift and certificate from the conference let me know in the same email. Thank you! [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 10:51, 27 May 2025 (GMT)
:::Ok...thanks for the detailed explanation. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 11:03, 27 May 2025 (GMT)
== [[José Rafael Córdero Sánchez]] ==
Hi DaSupremo, I need your help about this article because is a crosswiki spam, for more details please check: [[:nl:Overleg Wikipedia:Checklijst langdurig structureel vandalisme/Josercs1|this report]] from Dutch Wikipedia. Thank you. [[User:Taichi|Taichi]] ([[User talk:Taichi|talk]]) 23:48, 16 October 2025 (GMT)
:Hello @[[User:Taichi|Taichi]]. Thanks for reaching out and well noted. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 00:01, 17 October 2025 (GMT)
== [[Samata (fashion entrepreneur)]] ==
Hi DaSupremo, I noticed that you expanded this article in 2023 by translating content from English Wikipedia. The English Wikipedia article was deleted earlier this year as most of the sources were found to be spam or unreliable. Other language Wikipedias like French, Arabic, Swahili and Igbo have also deleted this article on similar grounds. It seems the original English article was written by a spammer for promotional purposes, therefore the Ghanaian Pidgin article (which was primarily translated from English) should also be deleted. Let me know your thoughts. [[User:Acoustical|Acoustical]] ([[User talk:Acoustical|talk]]) 19:16, 25 November 2025 (GMT)
:Hello @[[User:Acoustical|Acoustical]]. Thanks for reaching out and well noted. Since it has been deleted from other language Wikipedias, I think it should be deleted too on the Ghanaian Pidgin WIkipedia. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:32, 25 November 2025 (GMT)
== Undeletion Request ==
hello @[[User:DaSupremo|DaSupremo]]
I noticed that you previously improved the article about Adebayo Temitayo (Realjjfrosh). I wanted to let you know that the page was later deleted.
If you have time, I would appreciate any guidance on whether the sources used (Punch, Vanguard, ThisDay, BusinessDay, Daily Trust) meet the project’s notability standards, or how the article could be reworked to comply fully with policy.
Thank you for your earlier improvements and for any advice you may be able to offer. [[Special:Contributions/~2026-74643-7|~2026-74643-7]] ([[User talk:~2026-74643-7|talk]]) 12:13, 3 February 2026 (GMT)
:It was deleted because of (Spam and it was a ([[metawiki:steward|steward]] action)) [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 12:19, 3 February 2026 (GMT)
::Ok thanks [[Special:Contributions/~2026-74643-7|~2026-74643-7]] ([[User talk:~2026-74643-7|talk]]) 12:39, 3 February 2026 (GMT)
== Thank you for being a medical contributors! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{| style="background-color: #fdffe7; color: #000; border: 1px solid #fceb92;"
|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[File:Wiki Project Med Foundation logo.svg|130px]]
|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" |'''The 2025 Cure Award'''
|-
| style="vertical-align: middle; padding: 3px;" |In 2025 you '''[[mdwiki:WikiProjectMed:WikiProject_Medicine/Stats/Top_medical_editors_2025_(all)|were one of the top medical editors in your language]]'''. Thank you from [[m:WikiProject_Med|Wiki Project Med]] for helping bring free, complete, accurate, up-to-date health information to the public. We appreciate you and the vital work you do!
Wiki Project Med Foundation is a [[meta:Wikimedia_thematic_organizations|thematic organization]] whose mission is to improve our health content. '''[[meta:Wiki_Project_Med#People_interested|Consider joining for 2026]]''', there are no associated costs.
Additionally one of our primary efforts revolves around translating health content. We invite you to '''[https://mdwiki.toolforge.org/Translation_Dashboard/index.php try our new workflow]''' if you have not already. Our dashboard automatically [https://mdwiki.toolforge.org/Translation_Dashboard/leaderboard.php collects statistics] of your efforts and we are working on [https://mdwiki.toolforge.org/fixwikirefs.php tools to automatically improve formating].
|}
Look forwards to collaborating in the year ahead. Thanks again :-) -- [[mdwiki:User:Doc_James|<span style="color:#0000f1">'''Doc James'''</span>]] along with the rest of the team at '''[[m:WikiProject_Med|Wiki Project Med Foundation]]''' 07:42, 14 February 2026 (GMT)
</div>
(This message was sent to [[:User:DaSupremo]] and is being posted here due to a redirect.)
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_Other_Language_Editors_2025&oldid=30070084 -->
== Thank you for being a medical translator! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{| style="background-color: #fdffe7; color: #000; border: 1px solid #fceb92;"
|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[File:Wiki Project Med Foundation logo.svg|100px]]
|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" |'''The 2025 Cure Translators Award'''
|-
| style="vertical-align: middle; padding: 3px;" |In 2025 you [https://mdwiki.toolforge.org/Translation_Dashboard/leaderboard.php?camp=all&user_group=all&year=2025&month=All joined us as a medical translator]. Thank you from [[m:WikiProject_Med|Wiki Project Med]] for helping bring free, complete, accurate, up-to-date health information to the public.
Wiki Project Med Foundation is a [[meta:Wikimedia_thematic_organizations|thematic organization]] whose mission is to improve our health content. '''[[meta:Wiki_Project_Med#People_interested|Consider formally joining the organization for 2026]]''', there are no associated costs.
|}
Look forwards to collaborating further in the year ahead. Thanks again :-) -- [[mdwiki:User:Doc_James|<span style="color:#0000f1">'''Doc James'''</span>]] along with the rest of the team at '''[[m:WikiProject_Med|Wiki Project Med Foundation]]''' 07:53, 14 February 2026 (GMT)
</div>
(This message was sent to [[:User:DaSupremo]] and is being posted here due to a redirect.)
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_Translators_2025&oldid=30070105 -->
== Feminism and Folklore 2026 – Community Organisers & Jury ==
Hello {{PAGENAME}}!,
Thank you for taking the lead in organising '''Feminism and Folklore 2026''' in your community. We truly appreciate your efforts!
To ensure a smooth and successful campaign, please make sure you have:
* Fully completed all details on the [[:m:Feminism and Folklore 2026/Project Page|Feminism and Folklore 2026 Project Page]]:
* Started promoting the campaign within your community.
* Requested a local administrator to place a '''sitenotice''' about the campaign so users are notified.
* Used the '''[https://tools.wikilovesfolklore.org/fnf/ Article List Generator Tool]''' and shared the generated article lists with your community.
=== Internet & Childcare Support ===
Community organisers and jury members who require '''internet and childcare support''' (non-mandatory, opt-in, request-only support) should fill the support request form '''by 22 February 2026'''.
'''[https://docs.google.com/forms/d/e/1FAIpQLSeutXEF1yTnJfExWUYPIf6SkhcnTgul07BeI-biqT4RE_vsrA/viewform Link to the form]'''
Requests submitted after this date will not be entertained.
=== Important Participation Guidelines ===
* Minimum article size: '''3000 bytes and 300 words''' (final decision may be set by local organisers).
* If your country is not listed on the Article list generator tool, please contact us.
=== Community Engagement ===
* Keep your community active and motivated throughout the campaign.
* Share your achievements and notable articles with us so we can highlight them globally.
* In the support form, please indicate if you would like a '''quick coordination call after the campaign'''.
Let’s make '''Feminism and Folklore''', under the banner of '''#WeTogether''', help bridge the '''gender gap''' and '''folklore gap''' on Wikipedia worldwide. 🌍✊
Thank you for your collaboration!
''If someone from your community organisers or jury has missed this message feel free to share this message with them.''
Feminism and Folklore International Team.
–[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 05:17, 16 February 2026 (GMT)
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/fnf26&oldid=30083330 -->
== Translation request ==
Hello, DaSupremo.
Can you translate and upload the articles [[:en:Bazardüzü]] and [[:en:Campi Flegrei]] in Ghanaian Pidgin Wikipedia?
Yours sincerely, [[User:Kurcke|Kurcke]] ([[User talk:Kurcke|talk]]) 07:39, 15 March 2026 (GMT)
:Hello @[[User:Kurcke|Kurcke]]. Noted [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 13:22, 15 March 2026 (GMT)
::Hello, DaSupremo.
::Thank you very much for the new article.
::Yours sincerely, [[User:Kurcke|Kurcke]] ([[User talk:Kurcke|talk]]) 16:43, 9 April 2026 (GMT)
:::Welcome @[[User:Kurcke|Kurcke]] [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:47, 9 April 2026 (GMT)
== Next Steps and Feedback meeting for Feminism and Folklore Organizers ==
<div style="border:8px maroon ridge; padding:6px;">
[[File:Feminism and Folklore 2026 logo.svg|center|550px|frameless]]
<div lang="en" dir="ltr" class="mw-content-ltr" style="padding: 1em 2em;">
<div style="text-align: center; width: 100%;">''{{int:please-translate}}''</div>
Dear Organizer,
I hope this message finds you well.
First and foremost, on behalf of the International Team I want to extend my gratitude to you for your efforts in organizing the '''Feminism and Folklore 2026''' campaign on your local Wikipedia. Your contribution has been instrumental in bridging the gender and folk gap on Wikipedia, and we truly appreciate your dedication to this important cause.
As the campaign has ended I wanted to inform you about the next steps. It's time to commence the jury process using the CampWiz or Fountain tool where your campaign was hosted. Please ensure that you update the details of the jury, campaign links and the names of organizers accurately on the [[:m:Feminism and Folklore 2026/Project Page|sign-up page]].
Once the jury process is completed, kindly update only the top 3 winners details on the [[:m:Feminism and Folklore 2026/Results|results page]] accordingly. The deadline for jury submission of results is '''April 30, 2026'''. However, if you find that the number of articles is high and you require more time, please don't hesitate to inform us via email or on campaign Meta Wiki talk page. We are more than willing to approve an extension if needed.
Should you encounter any issues with the tools, please feel free to reach out to us on Telegram for assistance.
Your feedback and progress updates are crucial for us to improve the campaign and better understand your community's insights. Therefore, we kindly ask you to spare just an hour to collectively share your progress and achievements with us during our '''[[:m:Event:Feminism and Folklore 2026 Post-Campaign Office Hour|community feedback session]]'''. Your input will greatly assist us in making the campaign more meaningful and impactful.
Thank you once again for your hard work and dedication to the Feminism and Folklore campaign. Your efforts are deeply appreciated, and we look forward to hearing from you soon.
Warm regards,
[[User:Tiven2240|Tiven2240]]
on behalf of Feminism and Folklore International Team
<nowiki>#WeTogether</nowiki>
</div></div>
--[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 11:57, 11 April 2026 (GMT)
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/fnf26&oldid=30391231 -->
== You may be an eligible candidate for the U4C election ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Greetings,
The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years.
This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required.
The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will week between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run.
In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 18:33, 28 April 2026 (GMT) </div>
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30471754 -->
== Ghanaian Pidgin ==
Hello. I'm looking for Ghanaian Pidgin translation of descriptions of a few items for Wikidata. Would you help? [[User:Eurohunter|Eurohunter]] ([[User talk:Eurohunter|talk]]) 19:45, 7 May 2026 (GMT)
:Sure [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 20:07, 7 May 2026 (GMT)
:: I'm looking for:
: "studio album by Basshunter"
: "compilation album by Basshunter"
: "song by Käärijä den Basshunter"
: "single by Käärijä den Basshunter"
: "promotional single by Basshunter"
: "music video by Basshunter"
: "lyric video by Basshunter"
:: [[User:Eurohunter|Eurohunter]] ([[User talk:Eurohunter|talk]]) 20:17, 7 May 2026 (GMT)
:::@[[User:Eurohunter|Eurohunter]] Done [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:25, 8 May 2026 (GMT)
:::: So they are almost like English with the only difference of "den"? [[User:Eurohunter|Eurohunter]] ([[User talk:Eurohunter|talk]]) 18:00, 8 May 2026 (GMT)
:::::Ghanaian Pidgin is more of English with a bit of local Ghanaian languages [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 18:50, 8 May 2026 (GMT)
:::::: Good to know. All added. Thanks a lot. [[User:Eurohunter|Eurohunter]] ([[User talk:Eurohunter|talk]]) 21:30, 8 May 2026 (GMT)
== Request writing about Isabelle de Charriere (Q123386) ==
hi DaSupremo Would you like to write about Isabelle de Charriere (Q123386) for the GPE Wikipedia? It'll be appreciated if it 'll be done. [[User:Boss-well63|Boss-well63]] ([[User talk:Boss-well63|talk]]) 18:41, 29 May 2026 (GMT)
== Final Reminder: Submission of Local Winners for Feminism and Folklore 2026 ==
Dear Feminism and Folklore organiser,
This is a friendly reminder that the deadline for submitting the names and details of your local winners for '''Feminism and Folklore 2026''' is '''5 June 2026'''.
Please ensure that your community's [[:m:Feminism and Folklore 2026/Results|winner information]] is submitted before this date. Communities that do not provide their winner data by the deadline will unfortunately not be eligible for prize distribution, and the international organizing team will not be able to accommodate late submissions received after 5 June 2026.
Thank you for your prompt attention to this matter and for your participation in the campaign.
Best regards,
'''Feminism and Folklore International Organizing Team'''
--[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 02:09, 3 June 2026 (GMT)
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/wlf2026&oldid=30627457 -->
== Thank you for organising Feminism and Folklore 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
[[File:Feminism and Folklore 2026 logo.svg|right|350px]]
Dear {{PAGENAME}},
Your dedication, coordination, and hard work played a vital role in making this year's [[:m:Feminism and Folklore 2026|Feminism and Folklore]] campaign successful. We truly appreciate the time and effort you invested in engaging your community and supporting participants.
As we have completed the jury phase and begin planning for next year's campaign, we would like to learn from your experiences. Please complete the organisers' feedback form and share your insights, challenges, and suggestions on how we can improve the campaign.
'''This feedback form is mandatory for all organisers''', as it helps us evaluate the campaign and make meaningful improvements for future editions.
'''Form link [https://docs.google.com/forms/d/e/1FAIpQLSf6IsGAsxkTEWTwueyLg-gBjRVlY3g2kTNj3xRhDiILiQnQwQ/viewform?usp=dialog here]'''
Please submit your response by '''25 June 2026'''.
Thank you once again for your invaluable contributions and for helping make Feminism and Folklore a global success. We look forward to working with you again in the future!
Regards,
'''Feminism and Folklore Team'''
--[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 12:05, 18 June 2026 (GMT)
</div>
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/wlf2026&oldid=30704175 -->
== Thank you for being a part of Feminism and Folklore 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
[[File:Feminism and Folklore 2026 logo.svg|right|350px]]
Dear {{PAGENAME}},
Your contributions helped make this year's [[:Feminism and Folklore 2026|Feminism and Folklore]] campaign a great success, and we are truly grateful for your time, knowledge, and dedication to documenting women's stories and folklore on Wikimedia projects.
As we reflect on this year's campaign and prepare for the next edition, we'd love to hear about your experience. Please take a few minutes to fill out our feedback form and share your thoughts and suggestions.
As a token of our appreciation, everyone who completes the form will receive a '''special digital postcard'''! in their email. This year marks '''''25 years of Wikipedia''''', and the postcard has been created to celebrate this milestone and to recognize the incredible efforts of participants like you who continue to enrich free knowledge for the world.
'''Form Link - [https://docs.google.com/forms/d/e/1FAIpQLSdqFZN9IdWbAnZ_7DyG5bIsuq7KAkdsIxweC_TdPH9In-tthQ/viewform?usp=dialog here]'''
Please complete the feedback form by '''25 June 2026'''.
Thank you once again for making Feminism and Folklore 2026 a success. We hope to see you again in future campaigns!
Best regards,
Feminism and Folklore international Team.
--[[User:MediaWiki message delivery|MediaWiki message delivery]] ([[User talk:MediaWiki message delivery|talk]]) 14:31, 18 June 2026 (GMT)
</div>
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/wlf2026&oldid=30704478 -->
== Share your Wiki Loves Ramadan 2026 journey! ==
Dear Organizer,
On behalf of the Wiki Loves Ramadan International Team, I want to send a massive thank you for your leadership and hard work during the 2026 campaign. Organizing local events, coordinating juries, and tracking metrics takes a lot of effort, and your dedication has been vital to bridging the knowledge gap regarding Islamic heritage and traditions.
As we wrap up this year's campaign, we would love to hear how things went in your community. We have put together the Organizer Feedback Form to capture your successes, challenges, and metrics.
* '''Link to form''': https://docs.google.com/forms/d/e/1FAIpQLSfDsuYSv2S4RCQuwAO9MlykJwgPIy-l9ENTr7I_GxpfVuo2TA/viewform
* '''Deadline''': 31 July 2026
Thank you again for championing this campaign. We couldn't do this without you.
Warm Regards, [[m:User:ZI Jony|ZI Jony]] (Project Lead) for the Wiki Loves Ramadan 2026 International Team. 20:12, 29 June 2026 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/2026/Organizers&oldid=30750499 -->
== Thank you for joining Wiki Loves Ramadan 2026! ==
Dear Participant,
Thank you so much for participating in the Wiki Loves Ramadan 2026 campaign! Whether you were writing articles or uploading photos to Wikimedia Commons, your contributions have helped share beautiful traditions, Islamic history, and cultural heritage with the rest of the world.
We want to make sure next year's campaign is even better, and we need your help to do it! We would love it if you could take 3–5 minutes to fill out our quick '''Participant Feedback Form'''.
* '''Link to form''': https://docs.google.com/forms/d/e/1FAIpQLScw_bPHsVzpby50jc2_syJD5-mS9scnRL5BLv9UXH2tK3Mr8w/viewform
Thank you again for sharing your knowledge and creativity with the Wikimedia movement. Keep an eye on your talk page and our social media for the final winner announcements soon! Happy editing,
Warm Regards, [[m:User:ZI Jony|ZI Jony]] (Project Lead) for the Wiki Loves Ramadan 2026 International Team. 20:13, 29 June 2026 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/2026/Participants&oldid=30750498 -->
== Congratulations! You are an International Winner for Wiki Loves Ramadan 2026 ==
Hello DaSupremo
On behalf of the '''Wiki Loves Ramadan International Team''', I am absolutely thrilled to inform you that you have been selected as an International Winner for the 2026 Content Writing Competition! Your incredible dedication to writing and expanding articles has been recognized, and you have officially won the '''Consolation top 10 winner'''.
To claim your prize, we have just sent an important email to the address linked to your Wikimedia account from '''support@wikilovesramadan.org'''.
Action required: Please check your email inbox right away. If you don't see it, make sure to check your Spam, Promotions, or Social folders, as official emails sometimes get filtered there by mistake.
Please follow the instructions in that email to fill out your winner's form so we can process your reward.
Congratulations again on this amazing achievement, and thank you for helping us share Islamic history and culture with the world! [[User:ZI Jony|ZI Jony]] ([[User talk:ZI Jony|talk]]) 16:31, 30 June 2026 (GMT)
== Nuking ==
Could you undo the nuking you just did on the editing I was doing the past few days? I put a lot of work into that, like with making sure the coding worked into Ghanaian Pidgin for "Module:If preview/styles.css" and so-on: like my entire weekend was spent just on this. And I saw you were helping correct any mistakes I had made with translating, which I appreciated, so I don't know why you've changed course. [[Special:Contributions/~2026-39972-87|~2026-39972-87]] ([[User talk:~2026-39972-87|talk]]) 22:43, 14 July 2026 (GMT)
:Hello @[[User:~2026-39972-87|~2026-39972-87]]. Thanks for reaching out. I deleted your edits because they were not properly translated into the Ghanaian Pidgin and I initially cautioned you. You continued making wrong translations using AI. I am the only admin for this language and it is making my work tedious. Because of your bad translations I can not keep up with edits which could involve vandalism and spamming articles. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:54, 14 July 2026 (GMT)
::Right, okay: I will slow down, keep things simpler/not tedious so they can be reviewed. Could you however un-nuke the code-related articles in the meantime: just those ones specifically? That took hours to do, like to make sure I had all the right code sections moved over not to cause errors. And I found a good number of code sections you created where you hadn’t actually transferred over the documentation that made those sections works. [[Special:Contributions/~2026-39763-56|~2026-39763-56]] ([[User talk:~2026-39763-56|talk]]) 23:21, 14 July 2026 (GMT)
:::Hello @[[User:~2026-39763-56|~2026-39763-56]], thanks for understanding and please keep the edits simple to aid in making any necessary corrections. I really appreciate the edits you made but I just could not keep up with the reviewing process hence the reason I deleted them. I am very sorry about that. I will also would like to ask you to create an account if you are comfortable to prevent valuable edits like yours being deleted since it is on a temporal account. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 23:26, 14 July 2026 (GMT)
::::I can do that, yes, thank you. Can you though restore the code article creations like Infobox character? Looking through your logs, you should be able to tell which ones are code articles from the names. Or if you want I can list them. Since even with an account those would take a ''while'' to create again. [[Special:Contributions/~2026-39870-28|~2026-39870-28]] ([[User talk:~2026-39870-28|talk]]) 11:45, 15 July 2026 (GMT)
:::::Hello @[[User:~2026-39870-28|~2026-39870-28]], please can you share them with me. I tried searching for them but your username keeps changing because it is a temporal account. [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 17:35, 15 July 2026 (GMT)
::::::Your [[Special:Log/DaSupremo|logs from the 14th of July list them all here]]: is that helpful? I also tried doing a more simple article [[Spider-Woman (Gwen Stacy)|here]]: is this acceptable, or is it ''too'' simple )requiring more detail)? [[Special:Contributions/~2026-39923-93|~2026-39923-93]] ([[User talk:~2026-39923-93|talk]]) 13:40, 16 July 2026 (GMT)
:::::::Hello @[[User:~2026-39923-93|~2026-39923-93]]. Thanks. It helps and the article looks ''too'' simple. You can improve on it but the mass edit won't be of help. Thanks for your understanding [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 16:34, 16 July 2026 (GMT)
== Gentle Reminder: Kindly submit your Organizer Feedback for Wiki Loves Ramadan 2026 ==
Dear Organizer,
Hope you are doing well and keeping safe.
We are reaching out to express our heartfelt gratitude for your relentless efforts and dedication in organizing Wiki Loves Ramadan 2026 in your local community. Organizing campaigns takes a lot of hard work, and your leadership has truly made a wonderful impact in bridging the knowledge gap regarding Islamic history and culture.
As we are wrapping up this year’s activities, we kindly remind you to share your local campaign report and experience with us. If you haven't done so already, please take a few minutes to fill out the Organizer Feedback Form.
* '''Link to form''': https://docs.google.com/forms/d/e/1FAIpQLSfDsuYSv2S4RCQuwAO9MlykJwgPIy-l9ENTr7I_GxpfVuo2TA/viewform
* '''Deadline''': 31 July 2026
Your feedback is incredibly valuable to us. It will not only help us prepare our global impact report but also guide us in securing better resources and funding for organizers like you in the upcoming years. (You will also find a small section inside the form to provide your local language translations for the 2027 campaign banners!).
Thank you so much for being a pillar of this campaign. Together, we can make the 2027 edition even more successful!
Warm Regards, [[m:User:ZI Jony|ZI Jony]] (Project Lead) for the Wiki Loves Ramadan 2026 International Team. 20:47, 19 July 2026 (GMT)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/WLR/List/2026/Organizers&oldid=30750499 -->
== Lua module Yesno protection ==
Hello, DaSupremo. Could you please protect [[Module:Yesno]] so that only administrators can edit it?
Below is a list of Lua modules that indicate "This module is subject to page protection," but are not currently protected:
# [[Module:Citation/CS1]]
# [[Module:Data]]
# [[Module:Error]]
# [[Module:Icon]]
# [[Module:Medals table]]
# [[Module:Portal bar]]
# [[Module:WikidataCheck]]
See the list of Lua [https://gpe.wikipedia.org/wiki/Special:ProtectedPages?namespace=828&type=edit&level=0&size-mode=min&size= protected] modules.<br />
Thanks in advance.<br /> [[User:Nimmzo|Nimmzo]] ([[User talk:Nimmzo|talk]]) 20:30, 15 September 2026 (GMT)
:Hello @[[User:Nimmzo|Nimmzo]]. Thanks for this information. They are protected now. Thanks [[User:DaSupremo|DaSupremo]] ([[User talk:DaSupremo|talk]]) 22:18, 15 September 2026 (GMT)
8wtz9a01pw0m2bx4xl2duhj4r88aoj2
Module:Yesno
828
2530
111939
40740
2026-09-15T22:05:53Z
DaSupremo
9
Protected "[[Module:Yesno]]" ([Edit=Allow only administrators] (indefinite) [Move am=Allow only administrators] (indefinite))
20790
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
swdskn7svew8i9wuydn9uj5l3r2ghcs
Taraba State University
0
4585
111973
77805
2026-09-16T10:12:57Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111973
wikitext
text/x-wiki
{{Databox}}
'''Taraba State University''' dem sanso know am as '''TSU''' dey locate insyd Jalingo, Taraba State [[Nigeria]]. Na dem establish de varsity by de Taraba State Government for 2008 insyd, make e widen access to university education give Taraba State indigenes den promote economic growth den development insyd de state particularly den de country at large.
== Vice chancellors ==
Na de 1st Vice Chancellor of de varsity from de inception be Dr. Ahmed Usman Jalingo wey serve from 2008-2010. He die for March 2011 insyd. De followi dat, Prof. Michael Noku serve as Acting Vice Chancellor til in January 2012, wen de second vice chancellor, Prof. Mohammed Sani Yahaya take ova de office til again wen Dr. Catherine Musa Ashashim take ova as Acting Vice Chancellor insyd October, 2016 to 28th February, 2017. For 1st March 2017, Prof. Vincent Ado Tenebe join de list as de 3rd vice chancellor of de varsity.<ref>[https://www.tsuniversity.edu.ng/history-traditions/ "History & Traditions | Taraba State University"]. Retrieved 2022-12-31.</ref> However, for 1st March 2022, Prof. Sunday Paul Bako cam turn de Vice Chancellor, wey he be de current Vice Chancellor of de varsity.<ref>[https://web.archive.org/web/20241215165326/https://www.tsuniversity.edu.ng/prof-sunday-bako-vice-chancellor/ "Prof. Sunday Bako – Vice-Chancellor | Taraba State University"]. Retrieved 2022-12-31.</ref>
== Faculty of education ==
* Science Education.
* Arts den Social Sciences Education.
* Educational Foundations.
== Faculty of Agriculture ==
* Agronomy.
* Animal Science.
* Agricultural Economics & Extension.
== Faculty of Social den Management Science ==
Dis be de list of Courses offer insyd TASU Faculty of Social den Management Science.
* Political Science den International Relations.
* Geography.
* Sociology.
* Mass Communication.
* Economics.
* Business Administration.
* Accountancy.
* Public Administration.
* Islamic studies<ref>Fapohunda, Olusegun (2021-10-09). [https://www.myschoolgist.com/ng/tasu-courses/ "List Of TASU Courses And Programmes Offered"]. ''MySchoolGist''. Retrieved 2022-12-26.</ref>
== Faculty of Science ==
* Biological Sciences.
* Chemistry.
* Physics.
* Mathematics and Statistics.
* Computer Science.
== Faculty of Arts<ref>Akemim (2018-01-14). [https://web.archive.org/web/20240720011833/https://eduinformant.com/tasu-courses "List of Courses Offered at Taraba State University"]. ''Eduinformant''. Retrieved 2022-12-25.</ref> ==
* Language den Linguistics.
* Religious Studies.
* History den Archeology.
== Faculty of engineering ==
* Agricultural and Bio-Resources Engineering.
* Civil Engineering.
* Electrical and Electronic Engineering.
* Mechanical Engineering<ref>Fapohunda, Olusegun (2021-10-09). [https://www.myschoolgist.com/ng/tasu-courses/ "List Of TASU Courses And Programmes Offered"]. ''MySchoolGist''. Retrieved 2022-12-26.</ref>
== References ==
<references />
== External links ==
* [https://www.tsuniversity.edu.ng/ Official website]
* https://web.archive.org/web/20240525123035/https://www.northnods.com/tsu-convocation/
[[Category:Universities den colleges insyd Nigeria]]
[[Category:Educational institutions dem establish insyd 2008]]
[[Category:2008 establishments insyd Nigeria]]
dj351h3qcd2qtqm4h84e3efq5vx5vj8
University of Benin (Nigeria)
0
4969
111979
111549
2026-09-16T10:41:22Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111979
wikitext
text/x-wiki
{{Databox}}
'''University of Benin''' ('''UNIBEN''') be public research university wey dey Benin City, Edo State, Nigeria.<ref>[https://web.archive.org/web/20110723180148/http://www.fme.gov.ng/index.php?option=com_content&view=article&id=82&Itemid=53 "Departments -Tertiary"]. ''Ministry of Education (Nigeria)''. Archived from [http://www.fme.gov.ng/index.php?option=com_content&view=article&id=82&Itemid=53 the original] on 23 July 2011. Retrieved 7 July 2019.</ref> edey mong de universities wey de Federal Government of Nigeria dey own wey dem found am for 1970 insyd.<ref>[http://thenationonlineng.net/uniben-x-raying-48-year-old/ "UNIBEN… X-raying a 48-year-old"]. ''The Nation Nigeria''. 22 March 2018. Retrieved 7 July 2019.</ref> Currently de school dey run two campuses wey dem get fifteen faculties wey dey include central library wey dem name John Harris Library.<ref>Umukoro, Immanuel Ovemeso; Tiamiyu, Mutawakilu Adisa (1 December 2017). [[doi:10.1177/0961000616653176|"Determinants of e-library services' use among university students: A study of John Harris Library, University of Benin, Nigeria"]]. ''Journal of Librarianship and Information Science''. '''49''' (4): 438–453. doi:[[doi:10.1177/0961000616653176|10.1177/0961000616653176]]. ISSN [[issn:0961-0006|0961-0006]]. S2CID [https://api.semanticscholar.org/CorpusID:32173962 32173962].</ref> De buildings wey dey UNIBEN be sparsely built wey dem no dey close to each other.<ref>[https://trek.zone/en "Trek Zone: Travel News & Best Tourist Attractions"]. ''Trek Zone''. Retrieved 29 January 2023.</ref>
UNIBEN get teaching hospital wey dem dey call University of Benin Teaching Hospital (UBTH).<ref>[https://web.archive.org/web/20220523173932/https://guardian.ng/features/uneasy-calm-as-ubth-awaits-new-cmd/ "Uneasy calm as UBTH awaits new CMD"]. ''The Guardian Nigeria News - Nigeria and World News''. 4 August 2017. Retrieved 23 May 2022.</ref>
== De School Ein History ==
[[File:Unibenmaingate.jpg|right|thumb|University Main Gate Ugbowo Campus]]
[[File:Faculty-of-Management-Science-University-of-Benin.jpg|thumb|Faculty of Management Science University of Benin]]
Dem found de school for 1970 insyd.<ref>[https://theconversation.com/institutions/university-of-benin-3614 "University of Benin on The Conversation"]. ''theconversation.com''. Retrieved 1 April 2023.</ref> E first start as Institute give Technology till dem recognize am as full fledge university wey National Universities Commision (NUC) acredit am for 1st July 1971 insyd.<ref>[https://www.vanguardngr.com/2018/11/uniben-retains-2nd-position-in-nuc-programme-accreditation-vc "Uniben retains second position in Nuc programme accreditation-VC"]. ''Vanguard News''. 15 November 2018. Retrieved 6 July 2019.</ref><ref>[http://uniben.edu/about-us.html "Brief History"]. University of Benin. Retrieved 6 July 2019.</ref> E come turn federal government-owned University for 1st April, 1975 insyd.<ref>[https://www.uniben.edu/about-uniben.html#:~:text=HISTORY%20OF%20THE%20UNIVERSITY%20OF,as%20Midwest%20Institute%20of%20Technology "UniBEN - ABOUT Us"]. ''www.uniben.edu''. Retrieved 30 July 2023.</ref>
== John Harris Library ==
[[File:John_Harris_Library,_UNIBEN.jpg|thumb|John Harris Library, UNIBEN]]
De John Harris Library be academic library wey dey Ugbowo campus insyd. Dem name am after pioneer University Librarian, John Harris.University of Benin wey dem found 1970 wey dem formerly know am as Institute of Technology be de parent institution give de library.<ref>Oyinloye, Maxwell A. (1992). [https://worldlibraries.dom.edu/index.php/worldlib/article/view/241/197 "View of The Pioneers: William John Harris (1903-1980) | World Libraries"]. ''World Libraries''. '''2''' (2). Retrieved 13 July 2021.</ref>
De library dey hold chaw volume of collection give print plus nonprint format wey edey directly opposite de clinical student dema hostel wey dey de university ein premises.De books plus shelves wey dem acquire for de library insyd dey cover all dey courses wey de university dey offer.Ibi University librarian wey dey oveersee de library ein affairs.
Dem establish through de promulgation of de Institute of Technology edict for 1970 insyd but National University Commission (NUC) accord am university status for 1st July,1971 insyd.<ref>[https://www.topuniversities.com/universities/university-benin-nigeria "University of Benin, Nigeria"]. ''Top Universities''. Retrieved 13 July 2021.</ref>
'''Branch Libraries'''
* Faculty of Arts Library
* Faculty of Environmental Science Library
* Faculty of Law Library
* Faculty of Pharmacy Library
* Faculty of Agriculture Library
* Faculty of Education Library
* Faculty of Engineering Library
* College of Medical Sciences Library
* Faculty of Physical Sciences Library
* Faculty of Management Sciences Library
* Faculty of Life Sciences Library
* Faculty of Social Sciences Library
* Medical Sub-Library (UBTH)
== College of Medical Sciences ==
UNIBEN ein college of Medical of Sciences dey teach medical plus awards wey be professional degree give physicians plus surgeons.De college get three schools plus institute wey dema names be:
=== School of Medicine ===
Dem establish am for 1973 insyd, wey de faculty of medicine dey run 6year Bachelor of Medicine plus Bachelor of Surgery (MBBS) wwy ebi full-time degree programDe school ein first dean be Professor T. Belo-Osagie wey na he be Dean for 1973 wey he end ein tenure for 1975.As Professor T. Belo-Osagie left, Professor K . Diete-Koki wey claim de school ein Dean title.Since then, de school come get chaw Deans plus head of departments for de last years. De school ein immediate past Dean be Prof. Dr. (med) E. Oviasu wey de current Dean be Professor Wilson E. Sadoh.<ref name=":2">[https://web.archive.org/web/20240722181354/http://colmed.uniben.edu/?page_id=65 "About – College of Medical Sciences"]. ''colmed.uniben.edu''. Retrieved 2 October 2018.</ref>
=== School of Basic Medical Science ===
Dem establish de school Basic Medical Science for December 2003 insyd by de College of Medical science wey dem launch am finally for January 2004 insyd.De school dey undertake undergraduate programe give B.Sc
Plus,de school dey provide services give de oda school wey dey de college insyd: School of Medicine and Dentistry plus de oda faculties wey dey de University insyd:Science plus school of pharmacy
De school of basic medical sciences get de following seven departments:
# Anatomy
# Medical Biochemistry
# Medical Laboratory Science<ref>[https://web.archive.org/web/20220208133246/https://alluniversity.com.ng/uniben-faculties-and-departments/ "2022 Updated List of UNIBEN Faculties and Departments"]. ''Latest JAMB News | All Nigerian Universities News''. 31 January 2021. Retrieved 8 February 2022.</ref>
# Nursing Science
# Physiology
# Physiotherapy
# Radiography den Radiation Science.<ref name=":2" />
=== School of Dentistry ===
De school of Dentistry dey coordinate courses plus curricula for de college insyd wey edey led to de Bachelor of Dental Surgery (BDS) degree.Dem establish De school of Dentistry wey na dem no am for 1976 wey dem admit ein first batch of students for 1976/1977 academic session insyd.Dem establish am as integral part of de college of Medical Sciences for 1975 by amendment go de Edict wey establish de University of Benin.For 2012 insyd,with international Federal of Endodontic Associations(IFEA) dema support,Donations wey comot de University of Texas wey dey Houston School of Dentistry plus de Owen family,Dr. Mbachan Collins Okwen BDS.(Benin),DBS,MBA. introduce regenerative endodonticss plus modern microscopic endodontics for de University of Benin Teaching Hospital Insyd.<ref name=":2" /><ref>[https://archive.today/20130320165024/http://www.db.uth.tmc.edu/about-school/news-media/5150 "Star of the South Table Clinic winners announced | UTHealth School of…"]. 20 March 2013. Archived from [http://www.db.uth.tmc.edu/about-school/news-media/5150 the original] on 20 March 2013. Retrieved 2 October 2018.</ref>
== Faculties wey dey University of Benin ==
{| class="wikitable"
!Code
!Title
|-
|AGR
|Faculty of Agriculture (AGR)
|-
|ART
|Faculty of Arts (ART)
|-
|BMS
|School of Basic Medical Sciences (BMS)
|-
|CBT
|CBT Practice Categories (CBT)
|-
|CED
|Centre for Entrepreneurship Development (CED)
|-
|CERHI
|Centre of Excellence in Reproductive Health Innovation (CERHI)
|-
|CFPDS
|Centre for Forensic Programmes and DNA Studies (CFPDS)
|-
|COEW
|College of Education Warri (COEW)
|-
|CPGE
|College of Petroleum and Gas Engineering, PTI Campus (CPGE)
|-
|DCOEM
|College of Education Mosogar (Delta State) (DCOEM)
|-
|DEN
|Faculty of Dentistry (DEN)
|-
|EDU
|Faculty of Education (EDU)
|-
|ENG
|Faculty of Engineering (ENG)
|-
|ENV
|Faculty of Environmental Sciences (ENV)
|-
|FCETA
|Federal College of Education (Technical) Asaba (FCETA)
|-
|FCETAL
|Federal College of Education (Technical) Akoka (FCETAL)
|-
|FLC
|French Language Centre (FLC)
|-
|GST
|Office for General Studies (GST)
|-
|ICH
|Institute of Child Health (ICH)
|-
|INE
|Institute of Education (INE)
|-
|INP
|Institute of Public Administration and Extension Services (INP)
|-
|JUPEB
|Joint Universities Preliminary Examinations Board (JUPEB)
|-
|JUPEB_AK
|Joint Universities Preliminary Examinations Board (FCET AKOKA) (JUPEB_AK)
|-
|LAW
|Faculty of Law (LAW)
|-
|LSC
|Faculty of Life Sciences (LSC)
|-
|MED
|Faculty of Medicine (MED)
|-
|MGS
|Faculty of Management Sciences (MGS)
|-
|NILS
|The National Institute for Legislative and Democratic Studies (NILS)
|-
|PHA
|Faculty of Pharmacy (PHA)
|-
|PSC
|Faculty of Physical Sciences (PSC)
|-
|SAGMS
|St. Albert The Great Major Seminary (SAGMS)
|-
|SAS
|All Saints Ekpoma (SAS)
|-
|SCN
|School of Science, PTI Campus (SCN)
|-
|SPESSE
|Centre for SUSTAINABLE PROCUREMENT, ENVIRONMENTAL & SOCIAL STANDARDS ENHANCEMENT (SPESSE) (SPESSE)
|-
|SSC
|Faculty of Social Sciences (SSC)
|-
|UBITS
|Office for University of Benin Industrial Training and Graded Reports Scheme (UBITS)
|-
|VNM
|Faculty of Veterinary Medicine (VNM)
|}
<ref>[https://web.archive.org/web/20240722191934/https://waeup.uniben.edu/@@login?camefrom=/faculties/@@index "WAeUP.Kofa - Student Management System"]. ''waeup.uniben.edu''. Retrieved 30 July 2023.</ref>
== De School ein Vice chancellors ==
* Kenneth Robson Hill, pioneer Vice Chancellor<ref name="noang.org">[https://noang.org/university-of-benin/ "University of Benin | Nigerian Optometric Association"]. ''noang.org''. Retrieved 16 July 2021.</ref>
* T.M. Yesufu, the first indigenous Vice Chancellor<ref name="noang.org" />
* Adamu Baike, 2nd indigenous Vice Chancellor
* Grace Alele-Williams, Nigeria's first female vice-chancellor. She served from 1985 to 1991<ref>[https://mathshistory.st-andrews.ac.uk/Biographies/Alele-Williams/ "Grace Alele-Williams - Biography"]. ''Maths History''. Retrieved 16 July 2021.</ref>
* Andrew Onokheroraye<ref name="vanguardngr.com">[https://www.vanguardngr.com/2009/08/uniben-vc-tussle-a-contest-of-indigene-or-merit/ "UNIBEN VC tussle: A contest of indigene or merit?"]. ''Vanguard News''. 9 August 2009. Retrieved 16 July 2021.</ref>
* Abhulimen Richard Anao<ref name="vanguardngr.com" />
* Emmanuel Nwanze<ref>Udo, Mary (20 March 2017). [https://blerf.org/index.php/biography/nwanze-dr-emmanuel-andrew-chukwuedo/ "NWANZE, Dr. Emmanuel Andrew Chukwuedo"]. ''Biographical Legacy and Research Foundation''. Retrieved 4 June 2024.</ref>
* Osayuki Godwin Oshodin, 2009-2014<ref>[https://web.archive.org/web/20230409203834/https://guardian.ng/saturday-magazine/c105-saturday-magazine/oshodin-a-study-in-university-administration/ "OSHODIN: A Study In University Administration"]. ''The Guardian Nigeria News - Nigeria and World News''. 27 February 2015. Retrieved 16 July 2021.</ref>
* Faraday Osasere Orumwense, 2014- 2019<ref>[https://www.sunnewsonline.com/unibens-giant-strides-at-48/ "UNIBEN'S giant strides at 48"]. ''The Sun Nigeria''. 31 May 2018. Retrieved 16 July 2021.</ref>
* Lilian Salami, 2019–present<ref>[https://www.premiumtimesng.com/regional/south-south-regional/359826-uniben-appoints-second-female-vice-chancellor.html "UNIBEN appoints second female vice-chancellor | Premium Times Nigeria"]. 27 October 2019. Retrieved 16 July 2021.</ref>
== Notable alumni ==
* Enyinnaya Abaribe, politician from Abia State<ref>Kassim, Felix (30 December 2021). [https://platinumpost.ng/2021/12/30/abaribe-ramatu-tijjani-aliyu-bag-huriwa-man-woman-of-the-year-award/ "Abaribe, Ramatu Tijjani Aliyu bag HURIWA Man/Woman of the year award"]. ''Platinum Post News''. Retrieved 24 May 2022.</ref>
* Oladipo Agboluaje,<ref>[https://www.geisteswissenschaften.fu-berlin.de/en/v/interweaving-performance-cultures/fellows/fellows_2017_2018/oladipo_agboluaje/index.html "Oladipo Agboluaje"]. ''International Research Center''. Freie Universität Berlin. 10 October 2008. Retrieved 25 February 2019.</ref> actor
* Emmanuel Agwoje,<ref>Fyn-Sydney, Seiperi (1 May 2010). [https://www.modernghana.com/news/273740/1/emmanuel-osa-agwoje-a-phenomenal-example-in-nigeri.html "Emmanuel Osa Agwoje, a phenomenal example in Nigeria Capital Market"]. ''Modern Ghana''. Retrieved 25 February 2019.</ref> banker
* Winifred Akpani, businesswoman, den founder/CEO of Northwest Petroleum & Gas Company Limited
* Aigboje Aig-Imoukhuede,<ref>[https://www.bloomberg.com/research/stocks/private/person.asp?personId=30716517&privcapId=305358086&previousCapId=22818286&previousTitle=TRANSNATIONAL%20CORP%20OF%20NIGERI "Company Overview of Coronation Capital (Mauritius) Limited"]. Bloomberg. 25 February 2019. Retrieved 26 February 2019.</ref> co-founder Access Bank Plc and founder & chairmo, Africa Initiative for Governance
* Josephine Anenih,<ref>[https://web.archive.org/web/20221006153730/https://blerf.org/index.php/biography/anenih-josephine-nwogo/ "ANENIH, Barr Josephine Nwogo"]. ''BLERF's Who's Who in Nigeria''. Biographical Legacy and Research Foundation. 11 November 2016. Retrieved 25 February 2019.</ref> lawyer den former minister
* Helen Asemota,<ref>[https://www.mona.uwi.edu/marcom/newsroom/entry/2828 "HELEN ASEMOTA PROMOTED TO PROFESSOR | Marketing and Communications Office, The University of West Indies at Mona"]. ''www.mona.uwi.edu''. Retrieved 21 December 2019.</ref> professor of biochemistry den biotechnology
* Lota Chukwu,<ref>[https://web.archive.org/web/20230422061355/http://www.evatese.com/meet-lota-chukwu-the-nollywood-elixir-celeb-of-the-week/ "Meet Lota Chukwu The Nollywood Elixir | Celeb Of The Week - Evatese Blog"]. ''www.evatese.com''. Retrieved 8 February 2021.</ref> actress
* George Edozie,<ref>[https://web.archive.org/web/20190226111401/https://artstrings.africa/new-nigerian-conjunctures-the-art-of-george-edozie/ "New Nigerian Conjunctures: The Art of George Edozie"]. ''Artstrings''. 21 September 2018. Retrieved 25 February 2019.</ref> artist
* Abiodun Falodun, rector, Edo State Polytechnic<ref>[https://thenationonlineng.net/dvc-delivers-unibens-150th-inaugural-lecture/ "DVC delivers UNIBEN's 150th inaugural lecture"]. ''The Nation Newspaper''. 11 March 2015. Retrieved 20 July 2019.</ref>
* Babatunde Fashola,<ref>[https://web.archive.org/web/20190226172801/https://www.nationalhelm.co/2017/11/fashola-reunites-former-law-classmates-uniben-30-years-anniversary.html "Fashola Reunites With Former Law Classmates At UNIBEN For 30 Years Anniversary"]. ''National Helm''. 13 November 2017. Retrieved 25 February 2019.</ref> former Lagos State governor, wey na he serve two terms from May 29, 2007, to May 29, 2015, den current minister of Power, Work & Housing insyd Nigeria
* James Ibori,<ref>[http://saharareporters.com/2009/11/12/ibori-our-convocation-speaker-not-here-uniben-students-staff-and-alumni-tell-acting-vc "Ibori, our convocation speaker? Not here! UNIBEN students, staff and alumni tell Acting VC Kubeyinje"]. ''Sahara Reporters''. 12 November 2009. Retrieved 26 February 2019.</ref> former Governor of Delta State from 29 May 1999 to 29 May 2007
* Tom Ilube,<ref>[https://www.city.ac.uk/news/2018/january/in-conversation-with-tom-ilube "Tom Ilube receives honorary degree from City"]. ''City, University of London''. 30 January 2018. Retrieved 25 February 2019.</ref> founder den CEO, Crossword Cybersecurity
* Wellington Jighere, 2015 WESPA ''Scrabble'' champion<ref>Wang, Yanan. [https://www.washingtonpost.com/news/morning-mix/wp/2015/11/10/meet-wellington-jighere-the-unlikely-first-african-winner-of-the-world-scrabble-championship/ "With the word 'felty,' for 36 points, Wellington Jighere becomes the first African world Scrabble champion"]. ''Washington Post''. Retrieved 25 February 2019.</ref>
* Patience Maseli, first female deputy director of Upstream Division for de Department of Petroleum Resources<ref>Thomas-Odia, Ijeoma (13 April 2019). [https://m.guardian.ng/guardian-woman/women-must-work-hard-to-be-relevant-in-male-dominated-fields/ "Women must work hard to be relevant in male-dominated field"]. Guardian. Retrieved 16 April 2019.</ref>
* Richard Mofe-Damijo,<ref>[https://web.archive.org/web/20190226111324/http://www.businessdayliberia.com/2018/03/20/biography-net-worth-of-nollywood-actor-rmd/ "Biography & Net Worth of Nollywood Actor RMD"]. ''Business Day Liberia''. 20 March 2018. Retrieved 26 February 2019.</ref> Nollywood actor
* Darlington Obaseki,<ref>[https://www.vanguardngr.com/2017/08/fg-appoints-obaseki-substantive-cmd-ubth/ "FG appoints Obaseki substantive CMD of UBTH"]. ''Vanguard News''. 26 August 2017. Retrieved 5 July 2019.</ref> medical doctor den professor
* Gideon Obhakhan, former Commissioner for Education, Edo State, Nigeria<ref name=":0">[https://www.vanguardngr.com/2020/05/gideon-obhakhan-a-man-in-a-class-of-his-own/ "Gideon Obhakhan: A man in a class of his own"]. ''Vanguard News''. 17 May 2020. Retrieved 26 January 2022.</ref>
* Omoni Oboli, Nigerian actress, film director den producer<ref>[https://web.archive.org/web/20221208024218/https://www.nyfa.edu/nyfa-news/alumni/omoni-oboli-2/ "Omoni Oboli"]. ''Alumni | New York Film Academy''. Retrieved 15 July 2021.</ref>
* Loretta Ogboro-Okor<ref>[https://web.archive.org/web/20230812200252/https://unuedo.org/loretta-oduware-ogboro-okor/ "Loretta Oduware Ogboro-Okor – UNUEDO Renaissance"]. Retrieved 12 August 2023.</ref>
* Bright Okpocha ("Basketmouth"),<ref>Kagire, Linda M. (22 February 2019). [https://www.newtimes.co.rw/entertainment/basketmouth-perform-kigali "Basketmouth to perform in Kigali"]. ''New Times (Rwanda)''. Retrieved 25 February 2019.</ref> comedian
* Suyi Davies Okungbowa,<ref>Reader, Civilian (23 May 2019). [https://civilianreader.com/2019/05/23/interview-with-suyi-davies-okungbowa/ "Interview with Suyi Davies Okungbowa"]. ''Civilian Reader''. Retrieved 18 January 2022.</ref> author den scholar
* Ovie Omo-Agege,<ref>Adurokiya, Ebenezer (18 April 2018). [https://web.archive.org/web/20190226054434/https://www.tribuneonlineng.com/142797/ "Things you should know about Senator Ovie Omo-Agege"]. ''Nigerian Tribune''. Retrieved 25 February 2019.</ref> senator insyd de Nigerian eighth senate
* Chike Onuorah<ref>Nigeria, Guardian (3 July 2016). [https://web.archive.org/web/20231218142419/https://editor.guardian.ng/art/a-journey-through-discerning-minds-of-onuorah/ "A journey through discerning minds of Onuorah"]. ''The Guardian Nigeria News - Nigeria and World News''. Retrieved 18 December 2023.</ref> artist den painter
* Osonye Tess Onwueme,<ref>[https://web.archive.org/web/20190201125536/http://www.africanbookscollective.com/authors-editors/osonye-tess-onwueme "Tess Osonye Onwueme"]. ''African Books Collective''. Retrieved 25 February 2019.</ref> writer den professor
* Victor F. Peretomode,<ref>Okafor, Chido (17 May 2019). [https://m.guardian.ng/news/how-we-tamed-cultism-in-delsu-by-vice-chancellor "How we tamed Cultism in DELSU, by vice chancellor"]. ''Guardian Newspapers''. Retrieved 27 June 2019.</ref> academic den professor
* Benedict Peters,<ref>Mikva, Keren (19 February 2015). [https://moguldom.com/88726/12-things-didnt-know-benedict-peters/3/ "12 Things You Didn't Know About Nigerian Billionaire Benedict Peters"]. ''Moguldom''. Retrieved 25 February 2019.</ref> founder of Aiteo group
* Amaju Pinnick,<ref>[https://guardian.ng/sport/amaju-pinnick-others-for-uniben-alumni-awards/ "Amaju Pinnick, others For UNIBEN Alumni Awards"]. ''guardian.ng''. 25 August 2018. [https://web.archive.org/web/20190415195209/https://guardian.ng/sport/amaju-pinnick-others-for-uniben-alumni-awards/ Archived] from the original on 15 April 2019. Retrieved 15 April 2019.</ref><ref>[https://web.archive.org/web/20231209212719/http://aitonline.tv/post-uniben_honours_nff_president_pinnick__others_for_sports_excellence/ "Post UNIBEN honours NFF President and others for sports excellence"]. ''aitonline.tv''. Retrieved 28 August 2019.</ref> Presido Nigeria Football Federation
* Ijeoma Uchegbu,<ref>[https://web.archive.org/web/20181021232552/http://www.biopharminternational.com/talent-pool "The Talent Pool"]. ''BioPharm International''. BioPharm International-12-02-2006. '''2006''' (7). 2 December 2006. Retrieved 25 February 2019.</ref> scientist den professor
* Emmanuel Uduaghan,<ref>[https://www.bloomberg.com/research/stocks/private/person.asp?personId=241355340&privcapId=128471872&previousCapId=128471872&previousTitle=Niger%20Delta%20Power%20Holding%20Company%20Limited "Company Overview of Niger Delta Power Holding Company Limited"]. Bloomberg. 25 February 2019. Retrieved 25 February 2019.</ref> former governor, Delta State
* Sabina Umeh,<ref>[https://www.bellanaija.com/2017/02/entrepreneur-kese-jabari-his-former-beauty-queen-wife-sabina-umeh-cover-mode-men-magazines-february-issue-as-they-dish-on-their-30-year-romance/ "Entrepreneur Kese Jabari & his Beauty Queen/Musician Wife Sabina Umeh cover Mode Men Magazine's February Issue as they dish on their 30-Year Romance"]. ''BellaNaija''. 9 February 2017. Retrieved 25 February 2019.</ref> singer
== Awards ==
'''Africa Outstanding University of the Year Award, 2023''' <ref>[https://punchng.com/uniben-wins-africa-outstanding-varsity-award/ "UNIBEN wins Africa outstanding varsity award"]. 26 March 2023. Retrieved 7 April 2023.</ref>
== Notable faculty ==
* Alexander Oppenheim (1973–1977),<ref>Greenfield, Richard (15 December 1997). [https://web.archive.org/web/20211125061341/https://www.malkin-71.net/news/obituaries/obituary-sir-alexander-oppenheim-1289007.html "Obituary: Sir Alexander Oppenheim"]. ''The Independent''. Retrieved 12 March 2021.</ref> mathematician
== Photo gallery ==
<gallery>
File:University_of_Benin_front_view.jpg
File:Faculty_of_Education,_University_of_Benin.jpg|Faculty of Education, UNIBEN
File:Faculty_of_Law,_University_of_Benin.jpg|Faculty of Law, UNIBEN
File:Faculty_of_Pharmacy,_University_of_Benin.jpg|Faculty of Pharmacy, UNIBEN
File:University_of_Benin_Main_Gate_02,_Benin_City,_Edo_State.jpg|University of Benin Main Gate
File:University_of_Benin,_Gate_Entrance,_University_of_Benin,_Edo_State.jpg|University of Benin, Gate Entrance
File:St._Albert_Catholic_Church_main_gate,_University_of_Benin,_Benin_City,_Edo_State.jpg|St. Albert Catholic Church, University of Benin
File:Erastus_B.O._Akingbola_Hostel,_University_of_Benin,_Edo_State.jpg|Erastus B.O. Akingbola Hostel, University of Benin
File:Faculty_of_Environmental_Sciences,_University_of_Benin,_Edo_State.jpg|Faculty of Environmental Sciences, University of Benin
File:Faculty_of_Management_Sciences,_University_of_Benin,_Edo_State.jpg|Faculty of Management Sciences, University of Benin
File:Centre_for_Research,_Innovation_and_Development,_University_of_Benin,_Edo_State.jpg|Centre for Research, Innovation and Development, University of Benin
File:Department_of_Quantity_Surveying_03,_University_of_Benin,_Edo_State.jpg|Department of Quantity Surveying, University of Benin
</gallery>
== References ==
<references />
== External links ==
* [https://www.uniben.edu/ Official website]
{{Commons}}
[[Category:Public universities insyd Nigeria]]
[[Category:1970s establishments insyd Nigeria]]
[[Category:Education insyd Benin City]]
[[Category:Coordinates for Wikidata top]]
[[Category:Universities den colleges insyd Nigeria]]
[[Category:Universities den colleges dem establish insyd 1970]]
[[Category:Educational institutions dem establish insyd 1970]]
iueq2xtfr8ua3smlwiqcpz9k0lgak51
Module:Citation/CS1
828
4993
111940
75536
2026-09-15T22:06:56Z
DaSupremo
9
Protected "[[Module:Citation/CS1]]" ([Edit=Allow only administrators] (indefinite) [Move am=Allow only administrators] (indefinite))
75535
Scribunto
text/plain
require ('strict');
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
each of these counts against the Lua upvalue limit
]]
local validation; -- functions in Module:Citation/CS1/Date_validation
local utilities; -- functions in Module:Citation/CS1/Utilities
local z = {}; -- table of tables in Module:Citation/CS1/Utilities
local identifiers; -- functions and tables in Module:Citation/CS1/Identifiers
local metadata; -- functions in Module:Citation/CS1/COinS
local cfg = {}; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
local whitelist = {}; -- table of tables listing valid template parameter names; defined in Module:Citation/CS1/Whitelist
--[[------------------< P A G E S C O P E V A R I A B L E S >---------------
declare variables here that have page-wide scope that are not brought in from
other modules; that are created here and used here
]]
local added_deprecated_cat; -- Boolean flag so that the category is added only once
local added_vanc_errs; -- Boolean flag so we only emit one Vancouver error / category
local added_generic_name_errs; -- Boolean flag so we only emit one generic name error / category and stop testing names once an error is encountered
local added_numeric_name_errs; -- Boolean flag so we only emit one numeric name error / category and stop testing names once an error is encountered
local added_numeric_name_maint; -- Boolean flag so we only emit one numeric name maint category and stop testing names once a category has been emitted
local is_preview_mode; -- true when article is in preview mode; false when using 'Preview page with this template' (previewing the module)
local is_sandbox; -- true when using sandbox modules to render citation
--[[--------------------------< F I R S T _ S E T >------------------------------------------------------------
Locates and returns the first set value in a table of values where the order established in the table,
left-to-right (or top-to-bottom), is the order in which the values are evaluated. Returns nil if none are set.
This version replaces the original 'for _, val in pairs do' and a similar version that used ipairs. With the pairs
version the order of evaluation could not be guaranteed. With the ipairs version, a nil value would terminate
the for-loop before it reached the actual end of the list.
]]
local function first_set (list, count)
local i = 1;
while i <= count do -- loop through all items in list
if utilities.is_set( list[i] ) then
return list[i]; -- return the first set list member
end
i = i + 1; -- point to next
end
end
--[[--------------------------< A D D _ V A N C _ E R R O R >----------------------------------------------------
Adds a single Vancouver system error message to the template's output regardless of how many error actually exist.
To prevent duplication, added_vanc_errs is nil until an error message is emitted.
added_vanc_errs is a Boolean declared in page scope variables above
]]
local function add_vanc_error (source, position)
if added_vanc_errs then return end
added_vanc_errs = true; -- note that we've added this category
utilities.set_message ('err_vancouver', {source, position});
end
--[[--------------------------< I S _ S C H E M E >------------------------------------------------------------
does this thing that purports to be a URI scheme seem to be a valid scheme? The scheme is checked to see if it
is in agreement with http://tools.ietf.org/html/std66#section-3.1 which says:
Scheme names consist of a sequence of characters beginning with a
letter and followed by any combination of letters, digits, plus
("+"), period ("."), or hyphen ("-").
returns true if it does, else false
]]
local function is_scheme (scheme)
return scheme and scheme:match ('^%a[%a%d%+%.%-]*:'); -- true if scheme is set and matches the pattern
end
--[=[-------------------------< I S _ D O M A I N _ N A M E >--------------------------------------------------
Does this thing that purports to be a domain name seem to be a valid domain name?
Syntax defined here: http://tools.ietf.org/html/rfc1034#section-3.5
BNF defined here: https://tools.ietf.org/html/rfc4234
Single character names are generally reserved; see https://tools.ietf.org/html/draft-ietf-dnsind-iana-dns-01#page-15;
see also [[Single-letter second-level domain]]
list of TLDs: https://www.iana.org/domains/root/db
RFC 952 (modified by RFC 1123) requires the first and last character of a hostname to be a letter or a digit. Between
the first and last characters the name may use letters, digits, and the hyphen.
Also allowed are IPv4 addresses. IPv6 not supported
domain is expected to be stripped of any path so that the last character in the last character of the TLD. tld
is two or more alpha characters. Any preceding '//' (from splitting a URL with a scheme) will be stripped
here. Perhaps not necessary but retained in case it is necessary for IPv4 dot decimal.
There are several tests:
the first character of the whole domain name including subdomains must be a letter or a digit
internationalized domain name (ASCII characters with .xn-- ASCII Compatible Encoding (ACE) prefix xn-- in the TLD) see https://tools.ietf.org/html/rfc3490
single-letter/digit second-level domains in the .org, .cash, and .today TLDs
q, x, and z SL domains in the .com TLD
i and q SL domains in the .net TLD
single-letter SL domains in the ccTLDs (where the ccTLD is two letters)
two-character SL domains in gTLDs (where the gTLD is two or more letters)
three-plus-character SL domains in gTLDs (where the gTLD is two or more letters)
IPv4 dot-decimal address format; TLD not allowed
returns true if domain appears to be a proper name and TLD or IPv4 address, else false
]=]
local function is_domain_name (domain)
if not domain then
return false; -- if not set, abandon
end
domain = domain:gsub ('^//', ''); -- strip '//' from domain name if present; done here so we only have to do it once
if not domain:match ('^[%w]') then -- first character must be letter or digit
return false;
end
if domain:match ('^%a+:') then -- hack to detect things that look like s:Page:Title where Page: is namespace at Wikisource
return false;
end
local patterns = { -- patterns that look like URLs
'%f[%w][%w][%w%-]+[%w]%.%a%a+$', -- three or more character hostname.hostname or hostname.tld
'%f[%w][%w][%w%-]+[%w]%.xn%-%-[%w]+$', -- internationalized domain name with ACE prefix
'%f[%a][qxz]%.com$', -- assigned one character .com hostname (x.com times out 2015-12-10)
'%f[%a][iq]%.net$', -- assigned one character .net hostname (q.net registered but not active 2015-12-10)
'%f[%w][%w]%.%a%a$', -- one character hostname and ccTLD (2 chars)
'%f[%w][%w][%w]%.%a%a+$', -- two character hostname and TLD
'^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?', -- IPv4 address
'[%a%d]+%:?' -- IPv6 address
}
for _, pattern in ipairs (patterns) do -- loop through the patterns list
if domain:match (pattern) then
return true; -- if a match then we think that this thing that purports to be a URL is a URL
end
end
for _, d in ipairs (cfg.single_letter_2nd_lvl_domains_t) do -- look for single letter second level domain names for these top level domains
if domain:match ('%f[%w][%w]%.' .. d) then
return true
end
end
return false; -- no matches, we don't know what this thing is
end
--[[--------------------------< I S _ U R L >------------------------------------------------------------------
returns true if the scheme and domain parts of a URL appear to be a valid URL; else false.
This function is the last step in the validation process. This function is separate because there are cases that
are not covered by split_url(), for example is_parameter_ext_wikilink() which is looking for bracketted external
wikilinks.
]]
local function is_url (scheme, domain)
if utilities.is_set (scheme) then -- if scheme is set check it and domain
return is_scheme (scheme) and is_domain_name (domain);
else
return is_domain_name (domain); -- scheme not set when URL is protocol-relative
end
end
--[[--------------------------< S P L I T _ U R L >------------------------------------------------------------
Split a URL into a scheme, authority indicator, and domain.
First remove Fully Qualified Domain Name terminator (a dot following TLD) (if any) and any path(/), query(?) or fragment(#).
If protocol-relative URL, return nil scheme and domain else return nil for both scheme and domain.
When not protocol-relative, get scheme, authority indicator, and domain. If there is an authority indicator (one
or more '/' characters immediately following the scheme's colon), make sure that there are only 2.
Any URL that does not have news: scheme must have authority indicator (//). TODO: are there other common schemes
like news: that don't use authority indicator?
Strip off any port and path;
]]
local function split_url (url_str)
local scheme, authority, domain;
url_str = url_str:gsub ('([%a%d])%.?[/%?#].*$', '%1'); -- strip FQDN terminator and path(/), query(?), fragment (#) (the capture prevents false replacement of '//')
if url_str:match ('^//%S*') then -- if there is what appears to be a protocol-relative URL
domain = url_str:match ('^//(%S*)')
elseif url_str:match ('%S-:/*%S+') then -- if there is what appears to be a scheme, optional authority indicator, and domain name
scheme, authority, domain = url_str:match ('(%S-:)(/*)(%S+)'); -- extract the scheme, authority indicator, and domain portions
if utilities.is_set (authority) then
authority = authority:gsub ('//', '', 1); -- replace place 1 pair of '/' with nothing;
if utilities.is_set(authority) then -- if anything left (1 or 3+ '/' where authority should be) then
return scheme; -- return scheme only making domain nil which will cause an error message
end
else
if not scheme:match ('^news:') then -- except for news:..., MediaWiki won't link URLs that do not have authority indicator; TODO: a better way to do this test?
return scheme; -- return scheme only making domain nil which will cause an error message
end
end
domain = domain:gsub ('(%a):%d+', '%1'); -- strip port number if present
end
return scheme, domain;
end
--[[--------------------------< L I N K _ P A R A M _ O K >---------------------------------------------------
checks the content of |title-link=, |series-link=, |author-link=, etc. for properly formatted content: no wikilinks, no URLs
Link parameters are to hold the title of a Wikipedia article, so none of the WP:TITLESPECIALCHARACTERS are allowed:
# < > [ ] | { } _
except the underscore which is used as a space in wiki URLs and # which is used for section links
returns false when the value contains any of these characters.
When there are no illegal characters, this function returns TRUE if value DOES NOT appear to be a valid URL (the
|<param>-link= parameter is ok); else false when value appears to be a valid URL (the |<param>-link= parameter is NOT ok).
]]
local function link_param_ok (value)
local scheme, domain;
if value:find ('[<>%[%]|{}]') then -- if any prohibited characters
return false;
end
scheme, domain = split_url (value); -- get scheme or nil and domain or nil from URL;
return not is_url (scheme, domain); -- return true if value DOES NOT appear to be a valid URL
end
--[[--------------------------< L I N K _ T I T L E _ O K >---------------------------------------------------
Use link_param_ok() to validate |<param>-link= value and its matching |<title>= value.
|<title>= may be wiki-linked but not when |<param>-link= has a value. This function emits an error message when
that condition exists
check <link> for inter-language interwiki-link prefix. prefix must be a MediaWiki-recognized language
code and must begin with a colon.
]]
local function link_title_ok (link, lorig, title, torig)
local orig;
if utilities.is_set (link) then -- don't bother if <param>-link doesn't have a value
if not link_param_ok (link) then -- check |<param>-link= markup
orig = lorig; -- identify the failing link parameter
elseif title:find ('%[%[') then -- check |title= for wikilink markup
orig = torig; -- identify the failing |title= parameter
elseif link:match ('^%a+:') then -- if the link is what looks like an interwiki
local prefix = link:match ('^(%a+):'):lower(); -- get the interwiki prefix
if cfg.inter_wiki_map[prefix] then -- if prefix is in the map, must have preceding colon
orig = lorig; -- flag as error
end
end
end
if utilities.is_set (orig) then
link = ''; -- unset
utilities.set_message ('err_bad_paramlink', orig); -- URL or wikilink in |title= with |title-link=;
end
return link; -- link if ok, empty string else
end
--[[--------------------------< C H E C K _ U R L >------------------------------------------------------------
Determines whether a URL string appears to be valid.
First we test for space characters. If any are found, return false. Then split the URL into scheme and domain
portions, or for protocol-relative (//example.com) URLs, just the domain. Use is_url() to validate the two
portions of the URL. If both are valid, or for protocol-relative if domain is valid, return true, else false.
Because it is different from a standard URL, and because this module used external_link() to make external links
that work for standard and news: links, we validate newsgroup names here. The specification for a newsgroup name
is at https://tools.ietf.org/html/rfc5536#section-3.1.4
]]
local function check_url( url_str )
if nil == url_str:match ("^%S+$") then -- if there are any spaces in |url=value it can't be a proper URL
return false;
end
local scheme, domain;
scheme, domain = split_url (url_str); -- get scheme or nil and domain or nil from URL;
if 'news:' == scheme then -- special case for newsgroups
return domain:match('^[%a%d%+%-_]+%.[%a%d%+%-_%.]*[%a%d%+%-_]$');
end
return is_url (scheme, domain); -- return true if value appears to be a valid URL
end
--[=[-------------------------< I S _ P A R A M E T E R _ E X T _ W I K I L I N K >----------------------------
Return true if a parameter value has a string that begins and ends with square brackets [ and ] and the first
non-space characters following the opening bracket appear to be a URL. The test will also find external wikilinks
that use protocol-relative URLs. Also finds bare URLs.
The frontier pattern prevents a match on interwiki-links which are similar to scheme:path URLs. The tests that
find bracketed URLs are required because the parameters that call this test (currently |title=, |chapter=, |work=,
and |publisher=) may have wikilinks and there are articles or redirects like '//Hus' so, while uncommon, |title=[[//Hus]]
is possible as might be [[en://Hus]].
]=]
local function is_parameter_ext_wikilink (value)
local scheme, domain;
if value:match ('%f[%[]%[%a%S*:%S+.*%]') then -- if ext. wikilink with scheme and domain: [xxxx://yyyyy.zzz]
scheme, domain = split_url (value:match ('%f[%[]%[(%a%S*:%S+).*%]'));
elseif value:match ('%f[%[]%[//%S+.*%]') then -- if protocol-relative ext. wikilink: [//yyyyy.zzz]
scheme, domain = split_url (value:match ('%f[%[]%[(//%S+).*%]'));
elseif value:match ('%a%S*:%S+') then -- if bare URL with scheme; may have leading or trailing plain text
scheme, domain = split_url (value:match ('(%a%S*:%S+)'));
elseif value:match ('^//%S+') or value:match ('%s//%S+') then -- if protocol-relative bare URL: //yyyyy.zzz; authority indicator (//) must be be preceded nothing or by whitespace
scheme, domain = split_url (value:match ('(//%S+)')); -- what is left should be the domain
else
return false; -- didn't find anything that is obviously a URL
end
return is_url (scheme, domain); -- return true if value appears to be a valid URL
end
--[[-------------------------< C H E C K _ F O R _ U R L >-----------------------------------------------------
loop through a list of parameters and their values. Look at the value and if it has an external link, emit an error message.
]]
local function check_for_url (parameter_list, error_list)
for k, v in pairs (parameter_list) do -- for each parameter in the list
if is_parameter_ext_wikilink (v) then -- look at the value; if there is a URL add an error message
table.insert (error_list, utilities.wrap_style ('parameter', k));
end
end
end
--[[--------------------------< S A F E _ F O R _ U R L >------------------------------------------------------
Escape sequences for content that will be used for URL descriptions
]]
local function safe_for_url( str )
if str:match( "%[%[.-%]%]" ) ~= nil then
utilities.set_message ('err_wikilink_in_url', {});
end
return str:gsub( '[%[%]\n]', {
['['] = '[',
[']'] = ']',
['\n'] = ' ' } );
end
--[[--------------------------< E X T E R N A L _ L I N K >----------------------------------------------------
Format an external link with error checking
]]
local function external_link (URL, label, source, access)
local err_msg = '';
local domain;
local path;
local base_url;
if not utilities.is_set (label) then
label = URL;
if utilities.is_set (source) then
utilities.set_message ('err_bare_url_missing_title', {utilities.wrap_style ('parameter', source)});
else
error (cfg.messages["bare_url_no_origin"]); -- programmer error; valid parameter name does not have matching meta-parameter
end
end
if not check_url (URL) then
utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)});
end
domain, path = URL:match ('^([/%.%-%+:%a%d]+)([/%?#].*)$'); -- split the URL into scheme plus domain and path
if path then -- if there is a path portion
path = path:gsub ('[%[%]]', {['['] = '%5b', [']'] = '%5d'}); -- replace '[' and ']' with their percent-encoded values
URL = table.concat ({domain, path}); -- and reassemble
end
base_url = table.concat ({ "[", URL, " ", safe_for_url (label), "]" }); -- assemble a wiki-markup URL
if utilities.is_set (access) then -- access level (subscription, registration, limited)
base_url = utilities.substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[access].class, cfg.presentation[access].title, base_url}); -- add the appropriate icon
end
return base_url;
end
--[[--------------------------< D E P R E C A T E D _ P A R A M E T E R >--------------------------------------
Categorize and emit an error message when the citation contains one or more deprecated parameters. The function includes the
offending parameter name to the error message. Only one error message is emitted regardless of the number of deprecated
parameters in the citation.
added_deprecated_cat is a Boolean declared in page scope variables above
]]
local function deprecated_parameter(name)
if not added_deprecated_cat then
added_deprecated_cat = true; -- note that we've added this category
utilities.set_message ('err_deprecated_params', {name}); -- add error message
end
end
--[=[-------------------------< K E R N _ Q U O T E S >--------------------------------------------------------
Apply kerning to open the space between the quote mark provided by the module and a leading or trailing quote
mark contained in a |title= or |chapter= parameter's value.
This function will positive kern either single or double quotes:
"'Unkerned title with leading and trailing single quote marks'"
" 'Kerned title with leading and trailing single quote marks' " (in real life the kerning isn't as wide as this example)
Double single quotes (italic or bold wiki-markup) are not kerned.
Replaces Unicode quote marks in plain text or in the label portion of a [[L|D]] style wikilink with typewriter
quote marks regardless of the need for kerning. Unicode quote marks are not replaced in simple [[D]] wikilinks.
Call this function for chapter titles, for website titles, etc.; not for book titles.
]=]
local function kern_quotes (str)
local cap = '';
local wl_type, label, link;
wl_type, label, link = utilities.is_wikilink (str); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]]
if 1 == wl_type then -- [[D]] simple wikilink with or without quote marks
if mw.ustring.match (str, '%[%[[\"“”\'‘’].+[\"“”\'‘’]%]%]') then -- leading and trailing quote marks
str = utilities.substitute (cfg.presentation['kern-left'], str);
str = utilities.substitute (cfg.presentation['kern-right'], str);
elseif mw.ustring.match (str, '%[%[[\"“”\'‘’].+%]%]') then -- leading quote marks
str = utilities.substitute (cfg.presentation['kern-left'], str);
elseif mw.ustring.match (str, '%[%[.+[\"“”\'‘’]%]%]') then -- trailing quote marks
str = utilities.substitute (cfg.presentation['kern-right'], str);
end
else -- plain text or [[L|D]]; text in label variable
label = mw.ustring.gsub (label, '[“”]', '\"'); -- replace “” (U+201C & U+201D) with " (typewriter double quote mark)
label = mw.ustring.gsub (label, '[‘’]', '\''); -- replace ‘’ (U+2018 & U+2019) with ' (typewriter single quote mark)
cap = mw.ustring.match (label, "^([\"\'][^\'].+)"); -- match leading double or single quote but not doubled single quotes (italic markup)
if utilities.is_set (cap) then
label = utilities.substitute (cfg.presentation['kern-left'], cap);
end
cap = mw.ustring.match (label, "^(.+[^\'][\"\'])$") -- match trailing double or single quote but not doubled single quotes (italic markup)
if utilities.is_set (cap) then
label = utilities.substitute (cfg.presentation['kern-right'], cap);
end
if 2 == wl_type then
str = utilities.make_wikilink (link, label); -- reassemble the wikilink
else
str = label;
end
end
return str;
end
--[[--------------------------< F O R M A T _ S C R I P T _ V A L U E >----------------------------------------
|script-title= holds title parameters that are not written in Latin-based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should
not be italicized and may be written right-to-left. The value supplied by |script-title= is concatenated onto Title after Title has been wrapped
in italic markup.
Regardless of language, all values provided by |script-title= are wrapped in <bdi>...</bdi> tags to isolate RTL languages from the English left to right.
|script-title= provides a unique feature. The value in |script-title= may be prefixed with a two-character ISO 639-1 language code and a colon:
|script-title=ja:*** *** (where * represents a Japanese character)
Spaces between the two-character code and the colon and the colon and the first script character are allowed:
|script-title=ja : *** ***
|script-title=ja: *** ***
|script-title=ja :*** ***
Spaces preceding the prefix are allowed: |script-title = ja:*** ***
The prefix is checked for validity. If it is a valid ISO 639-1 language code, the lang attribute (lang="ja") is added to the <bdi> tag so that browsers can
know the language the tag contains. This may help the browser render the script more correctly. If the prefix is invalid, the lang attribute
is not added. At this time there is no error message for this condition.
Supports |script-title=, |script-chapter=, |script-<periodical>=
]]
local function format_script_value (script_value, script_param)
local lang=''; -- initialize to empty string
local name;
if script_value:match('^%l%l%l?%s*:') then -- if first 3 or 4 non-space characters are script language prefix
lang = script_value:match('^(%l%l%l?)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script
if not utilities.is_set (lang) then
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing title part']}); -- prefix without 'title'; add error message
return ''; -- script_value was just the prefix so return empty string
end
-- if we get this far we have prefix and script
name = cfg.lang_tag_remap[lang] or mw.language.fetchLanguageName( lang, cfg.this_wiki_code ); -- get language name so that we can use it to categorize
if utilities.is_set (name) then -- is prefix a proper ISO 639-1 language code?
script_value = script_value:gsub ('^%l+%s*:%s*', ''); -- strip prefix from script
-- is prefix one of these language codes?
if utilities.in_array (lang, cfg.script_lang_codes) then
utilities.add_prop_cat ('script', {name, lang})
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['unknown language code']}); -- unknown script-language; add error message
end
lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['invalid language code']}); -- invalid language code; add error message
lang = ''; -- invalid so set lang to empty string
end
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing prefix']}); -- no language code prefix; add error message
end
script_value = utilities.substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is RTL
return script_value;
end
--[[--------------------------< S C R I P T _ C O N C A T E N A T E >------------------------------------------
Initially for |title= and |script-title=, this function concatenates those two parameter values after the script
value has been wrapped in <bdi> tags.
]]
local function script_concatenate (title, script, script_param)
if utilities.is_set (script) then
script = format_script_value (script, script_param); -- <bdi> tags, lang attribute, categorization, etc.; returns empty string on error
if utilities.is_set (script) then
title = title .. ' ' .. script; -- concatenate title and script title
end
end
return title;
end
--[[--------------------------< W R A P _ M S G >--------------------------------------------------------------
Applies additional message text to various parameter values. Supplied string is wrapped using a message_list
configuration taking one argument. Supports lower case text for {{citation}} templates. Additional text taken
from citation_config.messages - the reason this function is similar to but separate from wrap_style().
]]
local function wrap_msg (key, str, lower)
if not utilities.is_set ( str ) then
return "";
end
if true == lower then
local msg;
msg = cfg.messages[key]:lower(); -- set the message to lower case before
return utilities.substitute ( msg, str ); -- including template text
else
return utilities.substitute ( cfg.messages[key], str );
end
end
--[[----------------< W I K I S O U R C E _ U R L _ M A K E >-------------------
Makes a Wikisource URL from Wikisource interwiki-link. Returns the URL and appropriate
label; nil else.
str is the value assigned to |chapter= (or aliases) or |title= or |title-link=
]]
local function wikisource_url_make (str)
local wl_type, D, L;
local ws_url, ws_label;
local wikisource_prefix = table.concat ({'https://', cfg.this_wiki_code, '.wikisource.org/wiki/'});
wl_type, D, L = utilities.is_wikilink (str); -- wl_type is 0 (not a wikilink), 1 (simple wikilink), 2 (complex wikilink)
if 0 == wl_type then -- not a wikilink; might be from |title-link=
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title
});
ws_label = str; -- label for the URL
end
elseif 1 == wl_type then -- simple wikilink: [[Wikisource:ws article]]
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title
});
ws_label = str; -- label for the URL
end
elseif 2 == wl_type then -- non-so-simple wikilink: [[Wikisource:ws article|displayed text]] ([[L|D]])
str = L:match ('^[Ww]ikisource:(.+)') or L:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_label = D; -- get ws article name from display portion of interwiki link
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title without namespace from link portion of wikilink
});
end
end
if ws_url then
ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable URL
ws_url = ws_url:gsub ('%%23', '#'); -- undo percent-encoding of fragment marker
end
return ws_url, ws_label, L or D; -- return proper URL or nil and a label or nil
end
--[[----------------< F O R M A T _ P E R I O D I C A L >-----------------------
Format the three periodical parameters: |script-<periodical>=, |<periodical>=,
and |trans-<periodical>= into a single Periodical meta-parameter.
]]
local function format_periodical (script_periodical, script_periodical_source, periodical, trans_periodical)
if not utilities.is_set (periodical) then
periodical = ''; -- to be safe for concatenation
else
periodical = utilities.wrap_style ('italic-title', periodical); -- style
end
periodical = script_concatenate (periodical, script_periodical, script_periodical_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
if utilities.is_set (trans_periodical) then
trans_periodical = utilities.wrap_style ('trans-italic-title', trans_periodical);
if utilities.is_set (periodical) then
periodical = periodical .. ' ' .. trans_periodical;
else -- here when trans-periodical without periodical or script-periodical
periodical = trans_periodical;
utilities.set_message ('err_trans_missing_title', {'periodical'});
end
end
return periodical;
end
--[[------------------< F O R M A T _ C H A P T E R _ T I T L E >---------------
Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=,
and |chapter-url= into a single chapter meta- parameter (chapter_url_source used
for error messages).
]]
local function format_chapter_title (script_chapter, script_chapter_source, chapter, chapter_source, trans_chapter, trans_chapter_source, chapter_url, chapter_url_source, no_quotes, access)
local ws_url, ws_label, L = wikisource_url_make (chapter); -- make a wikisource URL and label from a wikisource interwiki link
if ws_url then
ws_label = ws_label:gsub ('_', ' '); -- replace underscore separators with space characters
chapter = ws_label;
end
if not utilities.is_set (chapter) then
chapter = ''; -- to be safe for concatenation
else
if false == no_quotes then
chapter = kern_quotes (chapter); -- if necessary, separate chapter title's leading and trailing quote marks from module provided quote marks
chapter = utilities.wrap_style ('quoted-title', chapter);
end
end
chapter = script_concatenate (chapter, script_chapter, script_chapter_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
if utilities.is_set (chapter_url) then
chapter = external_link (chapter_url, chapter, chapter_url_source, access); -- adds bare_url_missing_title error if appropriate
elseif ws_url then
chapter = external_link (ws_url, chapter .. ' ', 'ws link in chapter'); -- adds bare_url_missing_title error if appropriate; space char to move icon away from chap text; TODO: better way to do this?
chapter = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, chapter});
end
if utilities.is_set (trans_chapter) then
trans_chapter = utilities.wrap_style ('trans-quoted-title', trans_chapter);
if utilities.is_set (chapter) then
chapter = chapter .. ' ' .. trans_chapter;
else -- here when trans_chapter without chapter or script-chapter
chapter = trans_chapter;
chapter_source = trans_chapter_source:match ('trans%-?(.+)'); -- when no chapter, get matching name from trans-<param>
utilities.set_message ('err_trans_missing_title', {chapter_source});
end
end
return chapter;
end
--[[----------------< H A S _ I N V I S I B L E _ C H A R S >-------------------
This function searches a parameter's value for non-printable or invisible characters.
The search stops at the first match.
This function will detect the visible replacement character when it is part of the Wikisource.
Detects but ignores nowiki and math stripmarkers. Also detects other named stripmarkers
(gallery, math, pre, ref) and identifies them with a slightly different error message.
See also coins_cleanup().
Output of this function is an error message that identifies the character or the
Unicode group, or the stripmarker that was detected along with its position (or,
for multi-byte characters, the position of its first byte) in the parameter value.
]]
local function has_invisible_chars (param, v)
local position = ''; -- position of invisible char or starting position of stripmarker
local capture; -- used by stripmarker detection to hold name of the stripmarker
local stripmarker; -- boolean set true when a stripmarker is found
capture = string.match (v, '[%w%p ]*'); -- test for values that are simple ASCII text and bypass other tests if true
if capture == v then -- if same there are no Unicode characters
return;
end
for _, invisible_char in ipairs (cfg.invisible_chars) do
local char_name = invisible_char[1]; -- the character or group name
local pattern = invisible_char[2]; -- the pattern used to find it
position, _, capture = mw.ustring.find (v, pattern); -- see if the parameter value contains characters that match the pattern
if position and (cfg.invisible_defs.zwj == capture) then -- if we found a zero-width joiner character
if mw.ustring.find (v, cfg.indic_script) then -- it's ok if one of the Indic scripts
position = nil; -- unset position
elseif cfg.emoji_t[mw.ustring.codepoint (v, position+1)] then -- is zwj followed by a character listed in emoji{}?
position = nil; -- unset position
end
end
if position then
if 'nowiki' == capture or 'math' == capture or -- nowiki and math stripmarkers (not an error condition)
('templatestyles' == capture and utilities.in_array (param, {'id', 'quote'})) then -- templatestyles stripmarker allowed in these parameters
stripmarker = true; -- set a flag
elseif true == stripmarker and cfg.invisible_defs.del == capture then -- because stripmakers begin and end with the delete char, assume that we've found one end of a stripmarker
position = nil; -- unset
else
local err_msg;
if capture and not (cfg.invisible_defs.del == capture or cfg.invisible_defs.zwj == capture) then
err_msg = capture .. ' ' .. char_name;
else
err_msg = char_name .. ' ' .. 'character';
end
utilities.set_message ('err_invisible_char', {err_msg, utilities.wrap_style ('parameter', param), position}); -- add error message
return; -- and done with this parameter
end
end
end
end
--[[-------------------< A R G U M E N T _ W R A P P E R >----------------------
Argument wrapper. This function provides support for argument mapping defined
in the configuration file so that multiple names can be transparently aliased to
single internal variable.
]]
local function argument_wrapper ( args )
local origin = {};
return setmetatable({
ORIGIN = function ( self, k )
local dummy = self[k]; -- force the variable to be loaded.
return origin[k];
end
},
{
__index = function ( tbl, k )
if origin[k] ~= nil then
return nil;
end
local args, list, v = args, cfg.aliases[k];
if type( list ) == 'table' then
v, origin[k] = utilities.select_one ( args, list, 'err_redundant_parameters' );
if origin[k] == nil then
origin[k] = ''; -- Empty string, not nil
end
elseif list ~= nil then
v, origin[k] = args[list], list;
else
-- maybe let through instead of raising an error?
-- v, origin[k] = args[k], k;
error( cfg.messages['unknown_argument_map'] .. ': ' .. k);
end
-- Empty strings, not nil;
if v == nil then
v = '';
origin[k] = '';
end
tbl = rawset( tbl, k, v );
return v;
end,
});
end
--[[--------------------------< N O W R A P _ D A T E >-------------------------
When date is YYYY-MM-DD format wrap in nowrap span: <span ...>YYYY-MM-DD</span>.
When date is DD MMMM YYYY or is MMMM DD, YYYY then wrap in nowrap span:
<span ...>DD MMMM</span> YYYY or <span ...>MMMM DD,</span> YYYY
DOES NOT yet support MMMM YYYY or any of the date ranges.
]]
local function nowrap_date (date)
local cap = '';
local cap2 = '';
if date:match("^%d%d%d%d%-%d%d%-%d%d$") then
date = utilities.substitute (cfg.presentation['nowrap1'], date);
elseif date:match("^%a+%s*%d%d?,%s+%d%d%d%d$") or date:match ("^%d%d?%s*%a+%s+%d%d%d%d$") then
cap, cap2 = string.match (date, "^(.*)%s+(%d%d%d%d)$");
date = utilities.substitute (cfg.presentation['nowrap2'], {cap, cap2});
end
return date;
end
--[[--------------------------< S E T _ T I T L E T Y P E >---------------------
This function sets default title types (equivalent to the citation including
|type=<default value>) for those templates that have defaults. Also handles the
special case where it is desirable to omit the title type from the rendered citation
(|type=none).
]]
local function set_titletype (cite_class, title_type)
if utilities.is_set (title_type) then
if 'none' == cfg.keywords_xlate[title_type] then
title_type = ''; -- if |type=none then type parameter not displayed
end
return title_type; -- if |type= has been set to any other value use that value
end
return cfg.title_types [cite_class] or ''; -- set template's default title type; else empty string for concatenation
end
--[[--------------------------< S A F E _ J O I N >-----------------------------
Joins a sequence of strings together while checking for duplicate separation characters.
]]
local function safe_join( tbl, duplicate_char )
local f = {}; -- create a function table appropriate to type of 'duplicate character'
if 1 == #duplicate_char then -- for single byte ASCII characters use the string library functions
f.gsub = string.gsub
f.match = string.match
f.sub = string.sub
else -- for multi-byte characters use the ustring library functions
f.gsub = mw.ustring.gsub
f.match = mw.ustring.match
f.sub = mw.ustring.sub
end
local str = ''; -- the output string
local comp = ''; -- what does 'comp' mean?
local end_chr = '';
local trim;
for _, value in ipairs( tbl ) do
if value == nil then value = ''; end
if str == '' then -- if output string is empty
str = value; -- assign value to it (first time through the loop)
elseif value ~= '' then
if value:sub(1, 1) == '<' then -- special case of values enclosed in spans and other markup.
comp = value:gsub( "%b<>", "" ); -- remove HTML markup (<span>string</span> -> string)
else
comp = value;
end
-- typically duplicate_char is sepc
if f.sub(comp, 1, 1) == duplicate_char then -- is first character same as duplicate_char? why test first character?
-- Because individual string segments often (always?) begin with terminal punct for the
-- preceding segment: 'First element' .. 'sepc next element' .. etc.?
trim = false;
end_chr = f.sub(str, -1, -1); -- get the last character of the output string
-- str = str .. "<HERE(enchr=" .. end_chr .. ")" -- debug stuff?
if end_chr == duplicate_char then -- if same as separator
str = f.sub(str, 1, -2); -- remove it
elseif end_chr == "'" then -- if it might be wiki-markup
if f.sub(str, -3, -1) == duplicate_char .. "''" then -- if last three chars of str are sepc''
str = f.sub(str, 1, -4) .. "''"; -- remove them and add back ''
elseif f.sub(str, -5, -1) == duplicate_char .. "]]''" then -- if last five chars of str are sepc]]''
trim = true; -- why? why do this and next differently from previous?
elseif f.sub(str, -4, -1) == duplicate_char .. "]''" then -- if last four chars of str are sepc]''
trim = true; -- same question
end
elseif end_chr == "]" then -- if it might be wiki-markup
if f.sub(str, -3, -1) == duplicate_char .. "]]" then -- if last three chars of str are sepc]] wikilink
trim = true;
elseif f.sub(str, -3, -1) == duplicate_char .. '"]' then -- if last three chars of str are sepc"] quoted external link
trim = true;
elseif f.sub(str, -2, -1) == duplicate_char .. "]" then -- if last two chars of str are sepc] external link
trim = true;
elseif f.sub(str, -4, -1) == duplicate_char .. "'']" then -- normal case when |url=something & |title=Title.
trim = true;
end
elseif end_chr == " " then -- if last char of output string is a space
if f.sub(str, -2, -1) == duplicate_char .. " " then -- if last two chars of str are <sepc><space>
str = f.sub(str, 1, -3); -- remove them both
end
end
if trim then
if value ~= comp then -- value does not equal comp when value contains HTML markup
local dup2 = duplicate_char;
if f.match(dup2, "%A" ) then dup2 = "%" .. dup2; end -- if duplicate_char not a letter then escape it
value = f.gsub(value, "(%b<>)" .. dup2, "%1", 1 ) -- remove duplicate_char if it follows HTML markup
else
value = f.sub(value, 2, -1 ); -- remove duplicate_char when it is first character
end
end
end
str = str .. value; -- add it to the output string
end
end
return str;
end
--[[--------------------------< I S _ S U F F I X >-----------------------------
returns true if suffix is properly formed Jr, Sr, or ordinal in the range 1–9.
Puncutation not allowed.
]]
local function is_suffix (suffix)
if utilities.in_array (suffix, {'Jr', 'Sr', 'Jnr', 'Snr', '1st', '2nd', '3rd'}) or suffix:match ('^%dth$') then
return true;
end
return false;
end
--[[--------------------< I S _ G O O D _ V A N C _ N A M E >-------------------
For Vancouver style, author/editor names are supposed to be rendered in Latin
(read ASCII) characters. When a name uses characters that contain diacritical
marks, those characters are to be converted to the corresponding Latin
character. When a name is written using a non-Latin alphabet or logogram, that
name is to be transliterated into Latin characters. The module doesn't do this
so editors may/must.
This test allows |first= and |last= names to contain any of the letters defined
in the four Unicode Latin character sets
[http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A
[http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF
[http://www.unicode.org/charts/PDF/U0100.pdf Latin Extended-A] 0100–017F
[http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F
|lastn= also allowed to contain hyphens, spaces, and apostrophes.
(http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)
|firstn= also allowed to contain hyphens, spaces, apostrophes, and periods
This original test:
if nil == mw.ustring.find (last, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%']*$")
or nil == mw.ustring.find (first, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%'%.]+[2-6%a]*$") then
was written outside of the code editor and pasted here because the code editor
gets confused between character insertion point and cursor position. The test has
been rewritten to use decimal character escape sequence for the individual bytes
of the Unicode characters so that it is not necessary to use an external editor
to maintain this code.
\195\128-\195\150 – À-Ö (U+00C0–U+00D6 – C0 controls)
\195\152-\195\182 – Ø-ö (U+00D8-U+00F6 – C0 controls)
\195\184-\198\191 – ø-ƿ (U+00F8-U+01BF – C0 controls, Latin extended A & B)
\199\132-\201\143 – DŽ-ɏ (U+01C4-U+024F – Latin extended B)
]]
local function is_good_vanc_name (last, first, suffix, position)
if not suffix then
if first:find ('[,%s]') then -- when there is a space or comma, might be first name/initials + generational suffix
first = first:match ('(.-)[,%s]+'); -- get name/initials
suffix = first:match ('[,%s]+(.+)$'); -- get generational suffix
end
end
if utilities.is_set (suffix) then
if not is_suffix (suffix) then
add_vanc_error (cfg.err_msg_supl.suffix, position);
return false; -- not a name with an appropriate suffix
end
end
if nil == mw.ustring.find (last, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143\225\184\128-\225\187\191%-%s%']*$") or
nil == mw.ustring.find (first, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143\225\184\128-\225\187\191%-%s%'%.]*$") then
add_vanc_error (cfg.err_msg_supl['non-Latin char'], position);
return false; -- not a string of Latin characters; Vancouver requires Romanization
end;
return true;
end
--[[--------------------------< R E D U C E _ T O _ I N I T I A L S >------------------------------------------
Attempts to convert names to initials in support of |name-list-style=vanc.
Names in |firstn= may be separated by spaces or hyphens, or for initials, a period.
See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/.
Vancouver style requires family rank designations (Jr, II, III, etc.) to be rendered
as Jr, 2nd, 3rd, etc. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/.
This code only accepts and understands generational suffix in the Vancouver format
because Roman numerals look like, and can be mistaken for, initials.
This function uses ustring functions because firstname initials may be any of the
Unicode Latin characters accepted by is_good_vanc_name ().
]]
local function reduce_to_initials (first, position)
if first:find (',', 1, true) then
return first; -- commas not allowed; abandon
end
local name, suffix = mw.ustring.match (first, "^(%u+) ([%dJS][%drndth]+)$");
if not name then -- if not initials and a suffix
name = mw.ustring.match (first, "^(%u+)$"); -- is it just initials?
end
if name then -- if first is initials with or without suffix
if 3 > mw.ustring.len (name) then -- if one or two initials
if suffix then -- if there is a suffix
if is_suffix (suffix) then -- is it legitimate?
return first; -- one or two initials and a valid suffix so nothing to do
else
add_vanc_error (cfg.err_msg_supl.suffix, position); -- one or two initials with invalid suffix so error message
return first; -- and return first unmolested
end
else
return first; -- one or two initials without suffix; nothing to do
end
end
end -- if here then name has 3 or more uppercase letters so treat them as a word
local initials_t, names_t = {}, {}; -- tables to hold name parts and initials
local i = 1; -- counter for number of initials
names_t = mw.text.split (first, '[%s%-]+'); -- split into a sequence of names and possible suffix
while names_t[i] do -- loop through the sequence
if 1 < i and names_t[i]:match ('[%dJS][%drndth]+%.?$') then -- if not the first name, and looks like a suffix (may have trailing dot)
names_t[i] = names_t[i]:gsub ('%.', ''); -- remove terminal dot if present
if is_suffix (names_t[i]) then -- if a legitimate suffix
table.insert (initials_t, ' ' .. names_t[i]); -- add a separator space, insert at end of initials sequence
break; -- and done because suffix must fall at the end of a name
end -- no error message if not a suffix; possibly because of Romanization
end
if 3 > i then
table.insert (initials_t, mw.ustring.sub (names_t[i], 1, 1)); -- insert the initial at end of initials sequence
end
i = i + 1; -- bump the counter
end
return table.concat (initials_t); -- Vancouver format does not include spaces.
end
--[[--------------------------< I N T E R W I K I _ P R E F I X E N _ G E T >----------------------------------
extract interwiki prefixen from <value>. Returns two one or two values:
false – no prefixen
nil – prefix exists but not recognized
project prefix, language prefix – when value has either of:
:<project>:<language>:<article>
:<language>:<project>:<article>
project prefix, nil – when <value> has only a known single-letter prefix
nil, language prefix – when <value> has only a known language prefix
accepts single-letter project prefixen: 'd' (wikidata), 's' (wikisource), and 'w' (wikipedia) prefixes; at this
writing, the other single-letter prefixen (b (wikibook), c (commons), m (meta), n (wikinews), q (wikiquote), and
v (wikiversity)) are not supported.
]]
local function interwiki_prefixen_get (value, is_link)
if not value:find (':%l+:') then -- if no prefix
return false; -- abandon; boolean here to distinguish from nil fail returns later
end
local prefix_patterns_linked_t = { -- sequence of valid interwiki and inter project prefixen
'^%[%[:([dsw]):(%l%l+):', -- wikilinked; project and language prefixes
'^%[%[:(%l%l+):([dsw]):', -- wikilinked; language and project prefixes
'^%[%[:([dsw]):', -- wikilinked; project prefix
'^%[%[:(%l%l+):', -- wikilinked; language prefix
}
local prefix_patterns_unlinked_t = { -- sequence of valid interwiki and inter project prefixen
'^:([dsw]):(%l%l+):', -- project and language prefixes
'^:(%l%l+):([dsw]):', -- language and project prefixes
'^:([dsw]):', -- project prefix
'^:(%l%l+):', -- language prefix
}
local cap1, cap2;
for _, pattern in ipairs ((is_link and prefix_patterns_linked_t) or prefix_patterns_unlinked_t) do
cap1, cap2 = value:match (pattern);
if cap1 then
break; -- found a match so stop looking
end
end
if cap1 and cap2 then -- when both then :project:language: or :language:project: (both forms allowed)
if 1 == #cap1 then -- length == 1 then :project:language:
if cfg.inter_wiki_map[cap2] then -- is language prefix in the interwiki map?
return cap1, cap2; -- return interwiki project and interwiki language
end
else -- here when :language:project:
if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map?
return cap2, cap1; -- return interwiki project and interwiki language
end
end
return nil; -- unknown interwiki language
elseif not (cap1 or cap2) then -- both are nil?
return nil; -- we got something that looks like a project prefix but isn't; return fail
elseif 1 == #cap1 then -- here when one capture
return cap1, nil; -- length is 1 so return project, nil language
else -- here when one capture and its length it more than 1
if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map?
return nil, cap1; -- return nil project, language
end
end
end
--[[--------------------------< L I S T _ P E O P L E >--------------------------
Formats a list of people (authors, contributors, editors, interviewers, translators)
names in the list will be linked when
|<name>-link= has a value
|<name>-mask- does NOT have a value; masked names are presumed to have been
rendered previously so should have been linked there
when |<name>-mask=0, the associated name is not rendered
]]
local function list_people (control, people, etal)
local sep;
local namesep;
local format = control.format;
local maximum = control.maximum;
local name_list = {};
if 'vanc' == format then -- Vancouver-like name styling?
sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between names is a comma
namesep = cfg.presentation['sep_name_vanc']; -- last/first separator is a space
else
sep = cfg.presentation['sep_nl']; -- name-list separator between names is a semicolon
namesep = cfg.presentation['sep_name']; -- last/first separator is <comma><space>
end
if sep:sub (-1, -1) ~= " " then sep = sep .. " " end
if utilities.is_set (maximum) and maximum < 1 then return "", 0; end -- returned 0 is for EditorCount; not used for other names
for i, person in ipairs (people) do
if utilities.is_set (person.last) then
local mask = person.mask;
local one;
local sep_one = sep;
if utilities.is_set (maximum) and i > maximum then
etal = true;
break;
end
if mask then
local n = tonumber (mask); -- convert to a number if it can be converted; nil else
if n then
one = 0 ~= n and string.rep("—", n) or nil; -- make a string of (n > 0) mdashes, nil else, to replace name
person.link = nil; -- don't create link to name if name is replaces with mdash string or has been set nil
else
one = mask; -- replace name with mask text (must include name-list separator)
sep_one = " "; -- modify name-list separator
end
else
one = person.last; -- get surname
local first = person.first -- get given name
if utilities.is_set (first) then
if ("vanc" == format) then -- if Vancouver format
one = one:gsub ('%.', ''); -- remove periods from surnames (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)
if not person.corporate and is_good_vanc_name (one, first, nil, i) then -- and name is all Latin characters; corporate authors not tested
first = reduce_to_initials (first, i); -- attempt to convert first name(s) to initials
end
end
one = one .. namesep .. first;
end
end
if utilities.is_set (person.link) then
one = utilities.make_wikilink (person.link, one); -- link author/editor
end
if one then -- if <one> has a value (name, mdash replacement, or mask text replacement)
local proj, tag = interwiki_prefixen_get (one, true); -- get the interwiki prefixen if present
if 'w' == proj and ('Wikipedia' == mw.site.namespaces.Project['name']) then
proj = nil; -- for stuff like :w:de:<article>, :w is unnecessary TODO: maint cat?
end
if proj then
local proj_name = ({['d'] = 'Wikidata', ['s'] = 'Wikisource', ['w'] = 'Wikipedia'})[proj]; -- :w (wikipedia) for linking from a non-wikipedia project
if proj_name then
one = one .. utilities.wrap_style ('interproj', proj_name); -- add resized leading space, brackets, static text, language name
utilities.add_prop_cat ('interproj-linked-name', proj); -- categorize it; <proj> is sort key
tag = nil; -- unset; don't do both project and language
end
end
if tag == cfg.this_wiki_code then
tag = nil; -- stuff like :en:<article> at en.wiki is pointless TODO: maint cat?
end
if tag then
local lang = cfg.lang_tag_remap[tag] or cfg.mw_languages_by_tag_t[tag];
if lang then -- error messaging done in extract_names() where we know parameter names
one = one .. utilities.wrap_style ('interwiki', lang); -- add resized leading space, brackets, static text, language name
utilities.add_prop_cat ('interwiki-linked-name', tag); -- categorize it; <tag> is sort key
end
end
table.insert (name_list, one); -- add it to the list of names
table.insert (name_list, sep_one); -- add the proper name-list separator
end
end
end
local count = #name_list / 2; -- (number of names + number of separators) divided by 2
if 0 < count then
if 1 < count and not etal then
if 'amp' == format then
name_list[#name_list-2] = " & "; -- replace last separator with ampersand text
elseif 'and' == format then
if 2 == count then
name_list[#name_list-2] = cfg.presentation.sep_nl_and; -- replace last separator with 'and' text
else
name_list[#name_list-2] = cfg.presentation.sep_nl_end; -- replace last separator with '(sep) and' text
end
end
end
name_list[#name_list] = nil; -- erase the last separator
end
local result = table.concat (name_list); -- construct list
if etal and utilities.is_set (result) then -- etal may be set by |display-authors=etal but we might not have a last-first list
result = result .. sep .. cfg.messages['et al']; -- we've got a last-first list and etal so add et al.
end
return result, count; -- return name-list string and count of number of names (count used for editor names only)
end
--[[--------------------< M A K E _ C I T E R E F _ I D >-----------------------
Generates a CITEREF anchor ID if we have at least one name or a date. Otherwise
returns an empty string.
namelist is one of the contributor-, author-, or editor-name lists chosen in that
order. year is Year or anchor_year.
]]
local function make_citeref_id (namelist, year)
local names={}; -- a table for the one to four names and year
for i,v in ipairs (namelist) do -- loop through the list and take up to the first four last names
names[i] = v.last
if i == 4 then break end -- if four then done
end
table.insert (names, year); -- add the year at the end
local id = table.concat(names); -- concatenate names and year for CITEREF id
if utilities.is_set (id) then -- if concatenation is not an empty string
return "CITEREF" .. id; -- add the CITEREF portion
else
return ''; -- return an empty string; no reason to include CITEREF id in this citation
end
end
--[[--------------------------< C I T E _ C L A S S _A T T R I B U T E _M A K E >------------------------------
construct <cite> tag class attribute for this citation.
<cite_class> – config.CitationClass from calling template
<mode> – value from |mode= parameter
]]
local function cite_class_attribute_make (cite_class, mode)
local class_t = {};
table.insert (class_t, 'citation'); -- required for blue highlight
if 'citation' ~= cite_class then
table.insert (class_t, cite_class); -- identify this template for user css
table.insert (class_t, utilities.is_set (mode) and mode or 'cs1'); -- identify the citation style for user css or javascript
else
table.insert (class_t, utilities.is_set (mode) and mode or 'cs2'); -- identify the citation style for user css or javascript
end
for _, prop_key in ipairs (z.prop_keys_t) do
table.insert (class_t, prop_key); -- identify various properties for user css or javascript
end
return table.concat (class_t, ' '); -- make a big string and done
end
--[[---------------------< N A M E _ H A S _ E T A L >--------------------------
Evaluates the content of name parameters (author, editor, etc.) for variations on
the theme of et al. If found, the et al. is removed, a flag is set to true and
the function returns the modified name and the flag.
This function never sets the flag to false but returns its previous state because
it may have been set by previous passes through this function or by the associated
|display-<names>=etal parameter
]]
local function name_has_etal (name, etal, nocat, param)
if utilities.is_set (name) then -- name can be nil in which case just return
local patterns = cfg.et_al_patterns; -- get patterns from configuration
for _, pattern in ipairs (patterns) do -- loop through all of the patterns
if name:match (pattern) then -- if this 'et al' pattern is found in name
name = name:gsub (pattern, ''); -- remove the offending text
etal = true; -- set flag (may have been set previously here or by |display-<names>=etal)
if not nocat then -- no categorization for |vauthors=
utilities.set_message ('err_etal', {param}); -- and set an error if not added
end
end
end
end
return name, etal;
end
--[[---------------------< N A M E _ I S _ N U M E R I C >----------------------
Add an error message and category when <name> parameter value does not contain letters.
Add a maintenance category when <name> parameter value has numeric characters mixed with characters that are
not numeric characters; could be letters and/or punctuation characters.
This function will only emit one error and one maint message for the current template. Does not emit both error
and maint messages/categories for the same parameter value.
returns nothing
]]
local function name_is_numeric (name, name_alias, list_name)
local patterns = {
'^%D+%d', -- <name> must have digits preceded by other characters
'^%D*%d+%D+', -- <name> must have digits followed by other characters
}
if not added_numeric_name_errs and mw.ustring.match (name, '^[%A]+$') then -- if we have not already set an error message and <name> does not have any alpha characters
utilities.set_message ('err_numeric_names', name_alias); -- add an error message
added_numeric_name_errs = true; -- set the flag so we emit only one error message
return; -- when here no point in further testing; abandon
end
if not added_numeric_name_maint then -- if we have already set a maint message
for _, pattern in ipairs (patterns) do -- spin through list of patterns
if mw.ustring.match (name, pattern) then -- digits preceded or followed by anything but digits; %D+ includes punctuation
utilities.set_message ('maint_numeric_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template
added_numeric_name_maint = true; -- set the flag so we emit only one maint message
return; -- when here no point in further testing; abandon
end
end
end
end
--[[-----------------< N A M E _ H A S _ M U L T _ N A M E S >------------------
Evaluates the content of last/surname (authors etc.) parameters for multiple names.
Multiple names are indicated if there is more than one comma or any "unescaped"
semicolons. Escaped semicolons are ones used as part of selected HTML entities.
If the condition is met, the function adds the multiple name maintenance category.
Same test for first except that commas should not appear in given names (MOS:JR says
that the generational suffix does not take a separator character). Titles, degrees,
postnominals, affiliations, all normally comma separated don't belong in a citation.
<name> – name parameter value
<list_name> – AuthorList, EditorList, etc
<limit> – number of allowed commas; 1 (default) for surnames; 0 for given names
returns nothing
]]
local function name_has_mult_names (name, list_name, limit)
local _, commas, semicolons, nbsps;
limit = limit and limit or 1;
if utilities.is_set (name) then
_, commas = name:gsub (',', ''); -- count the number of commas
_, semicolons = name:gsub (';', ''); -- count the number of semicolons
-- nbsps probably should be its own separate count rather than merged in
-- some way with semicolons because Lua patterns do not support the
-- grouping operator that regex does, which means there is no way to add
-- more entities to escape except by adding more counts with the new
-- entities
_, nbsps = name:gsub (' ',''); -- count nbsps
-- There is exactly 1 semicolon per entity, so subtract nbsps
-- from semicolons to 'escape' them. If additional entities are added,
-- they also can be subtracted.
if limit < commas or 0 < (semicolons - nbsps) then
utilities.set_message ('maint_mult_names', cfg.special_case_translation [list_name]); -- add a maint message
end
end
end
--[=[-------------------------< I S _ G E N E R I C >----------------------------------------------------------
Compares values assigned to various parameters according to the string provided as <item> in the function call.
<item> can have on of two values:
'generic_names' – for name-holding parameters: |last=, |first=, |editor-last=, etc
'generic_titles' – for |title=
There are two types of generic tests. The 'accept' tests look for a pattern that should not be rejected by the
'reject' test. For example,
|author=[[John Smith (author)|Smith, John]]
would be rejected by the 'author' reject test. But piped wikilinks with 'author' disambiguation should not be
rejected so the 'accept' test prevents that from happening. Accept tests are always performed before reject
tests.
Each of the 'accept' and 'reject' sequence tables hold tables for en.wiki (['en']) and local.wiki (['local'])
that each can hold a test sequence table The sequence table holds, at index [1], a test pattern, and, at index
[2], a boolean control value. The control value tells string.find() or mw.ustring.find() to do plain-text search (true)
or a pattern search (false). The intent of all this complexity is to make these searches as fast as possible so
that we don't run out of processing time on very large articles.
Returns
true when a reject test finds the pattern or string
false when an accept test finds the pattern or string
nil else
]=]
local function is_generic (item, value, wiki)
local test_val;
local str_lower = { -- use string.lower() for en.wiki (['en']) and use mw.ustring.lower() or local.wiki (['local'])
['en'] = string.lower,
['local'] = mw.ustring.lower,
}
local str_find = { -- use string.find() for en.wiki (['en']) and use mw.ustring.find() or local.wiki (['local'])
['en'] = string.find,
['local'] = mw.ustring.find,
}
local function test (val, test_t, wiki) -- local function to do the testing; <wiki> selects lower() and find() functions
val = test_t[2] and str_lower[wiki](value) or val; -- when <test_t[2]> set to 'true', plaintext search using lowercase value
return str_find[wiki] (val, test_t[1], 1, test_t[2]); -- return nil when not found or matched
end
local test_types_t = {'accept', 'reject'}; -- test accept patterns first, then reject patterns
local wikis_t = {'en', 'local'}; -- do tests for each of these keys; en.wiki first, local.wiki second
for _, test_type in ipairs (test_types_t) do -- for each test type
for _, generic_value in pairs (cfg.special_case_translation[item][test_type]) do -- spin through the list of generic value fragments to accept or reject
for _, wiki in ipairs (wikis_t) do
if generic_value[wiki] then
if test (value, generic_value[wiki], wiki) then -- go do the test
return ('reject' == test_type); -- param value rejected, return true; false else
end
end
end
end
end
end
--[[--------------------------< N A M E _ I S _ G E N E R I C >------------------------------------------------
calls is_generic() to determine if <name> is a 'generic name' listed in cfg.generic_names; <name_alias> is the
parameter name used in error messaging
]]
local function name_is_generic (name, name_alias)
if not added_generic_name_errs and is_generic ('generic_names', name) then
utilities.set_message ('err_generic_name', name_alias); -- set an error message
added_generic_name_errs = true;
end
end
--[[--------------------------< N A M E _ C H E C K S >--------------------------------------------------------
This function calls various name checking functions used to validate the content of the various name-holding parameters.
]]
local function name_checks (last, first, list_name, last_alias, first_alias)
local accept_name;
if utilities.is_set (last) then
last, accept_name = utilities.has_accept_as_written (last); -- remove accept-this-as-written markup when it wraps all of <last>
if not accept_name then -- <last> not wrapped in accept-as-written markup
name_has_mult_names (last, list_name); -- check for multiple names in the parameter
name_is_numeric (last, last_alias, list_name); -- check for names that have no letters or are a mix of digits and other characters
name_is_generic (last, last_alias); -- check for names found in the generic names list
end
end
if utilities.is_set (first) then
first, accept_name = utilities.has_accept_as_written (first); -- remove accept-this-as-written markup when it wraps all of <first>
if not accept_name then -- <first> not wrapped in accept-as-written markup
name_has_mult_names (first, list_name, 0); -- check for multiple names in the parameter; 0 is number of allowed commas in a given name
name_is_numeric (first, first_alias, list_name); -- check for names that have no letters or are a mix of digits and other characters
name_is_generic (first, first_alias); -- check for names found in the generic names list
end
local wl_type, D = utilities.is_wikilink (first);
if 0 ~= wl_type then
first = D;
utilities.set_message ('err_bad_paramlink', first_alias);
end
end
return last, first; -- done
end
--[[----------------------< E X T R A C T _ N A M E S >-------------------------
Gets name list from the input arguments
Searches through args in sequential order to find |lastn= and |firstn= parameters
(or their aliases), and their matching link and mask parameters. Stops searching
when both |lastn= and |firstn= are not found in args after two sequential attempts:
found |last1=, |last2=, and |last3= but doesn't find |last4= and |last5= then the
search is done.
This function emits an error message when there is a |firstn= without a matching
|lastn=. When there are 'holes' in the list of last names, |last1= and |last3=
are present but |last2= is missing, an error message is emitted. |lastn= is not
required to have a matching |firstn=.
When an author or editor parameter contains some form of 'et al.', the 'et al.'
is stripped from the parameter and a flag (etal) returned that will cause list_people()
to add the static 'et al.' text from Module:Citation/CS1/Configuration. This keeps
'et al.' out of the template's metadata. When this occurs, an error is emitted.
]]
local function extract_names(args, list_name)
local names = {}; -- table of names
local last; -- individual name components
local first;
local link;
local mask;
local i = 1; -- loop counter/indexer
local n = 1; -- output table indexer
local count = 0; -- used to count the number of times we haven't found a |last= (or alias for authors, |editor-last or alias for editors)
local etal = false; -- return value set to true when we find some form of et al. in an author parameter
local last_alias, first_alias, link_alias; -- selected parameter aliases used in error messaging
while true do
last, last_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'err_redundant_parameters', i ); -- search through args for name components beginning at 1
first, first_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'err_redundant_parameters', i );
link, link_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i );
mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i );
if last then -- error check |lastn= alias for unknown interwiki link prefix; done here because this is where we have the parameter name
local project, language = interwiki_prefixen_get (last, true); -- true because we expect interwiki links in |lastn= to be wikilinked
if nil == project and nil == language then -- when both are nil
utilities.set_message ('err_bad_paramlink', last_alias); -- not known, emit an error message -- TODO: err_bad_interwiki?
last = utilities.remove_wiki_link (last); -- remove wikilink markup; show display value only
end
end
if link then -- error check |linkn= alias for unknown interwiki link prefix
local project, language = interwiki_prefixen_get (link, false); -- false because wiki links in |author-linkn= is an error
if nil == project and nil == language then -- when both are nil
utilities.set_message ('err_bad_paramlink', link_alias); -- not known, emit an error message -- TODO: err_bad_interwiki?
link = nil; -- unset so we don't link
link_alias = nil;
end
end
last, etal = name_has_etal (last, etal, false, last_alias); -- find and remove variations on et al.
first, etal = name_has_etal (first, etal, false, first_alias); -- find and remove variations on et al.
last, first = name_checks (last, first, list_name, last_alias, first_alias); -- multiple names, extraneous annotation, etc. checks
if first and not last then -- if there is a firstn without a matching lastn
local alias = first_alias:find ('given', 1, true) and 'given' or 'first'; -- get first or given form of the alias
utilities.set_message ('err_first_missing_last', {
first_alias, -- param name of alias missing its mate
first_alias:gsub (alias, {['first'] = 'last', ['given'] = 'surname'}), -- make param name appropriate to the alias form
}); -- add this error message
elseif not first and not last then -- if both firstn and lastn aren't found, are we done?
count = count + 1; -- number of times we haven't found last and first
if 2 <= count then -- two missing names and we give up
break; -- normal exit or there is a two-name hole in the list; can't tell which
end
else -- we have last with or without a first
local result;
link = link_title_ok (link, link_alias, last, last_alias); -- check for improper wiki-markup
if first then
link = link_title_ok (link, link_alias, first, first_alias); -- check for improper wiki-markup
end
names[n] = {last = last, first = first, link = link, mask = mask, corporate = false}; -- add this name to our names list (corporate for |vauthors= only)
n = n + 1; -- point to next location in the names table
if 1 == count then -- if the previous name was missing
utilities.set_message ('err_missing_name', {list_name:match ("(%w+)List"):lower(), i - 1}); -- add this error message
end
count = 0; -- reset the counter, we're looking for two consecutive missing names
end
i = i + 1; -- point to next args location
end
return names, etal; -- all done, return our list of names and the etal flag
end
--[[--------------------------< N A M E _ T A G _ G E T >------------------------------------------------------
attempt to decode |language=<lang_param> and return language name and matching tag; nil else.
This function looks for:
<lang_param> as a tag in cfg.lang_tag_remap{}
<lang_param> as a name in cfg.lang_name_remap{}
<lang_param> as a name in cfg.mw_languages_by_name_t
<lang_param> as a tag in cfg.mw_languages_by_tag_t
when those fail, presume that <lang_param> is an IETF-like tag that MediaWiki does not recognize. Strip all
script, region, variant, whatever subtags from <lang_param> to leave just a two or three character language tag
and look for the new <lang_param> in cfg.mw_languages_by_tag_t{}
on success, returns name (in properly capitalized form) and matching tag (in lowercase); on failure returns nil
]]
local function name_tag_get (lang_param)
local lang_param_lc = mw.ustring.lower (lang_param); -- use lowercase as an index into the various tables
local name;
local tag;
name = cfg.lang_tag_remap[lang_param_lc]; -- assume <lang_param_lc> is a tag; attempt to get remapped language name
if name then -- when <name>, <lang_param> is a tag for a remapped language name
if cfg.lang_name_remap[name:lower()][2] ~= lang_param_lc then
utilities.set_message ('maint_unknown_lang'); -- add maint category if not already added
return name, cfg.lang_name_remap[name:lower()][2]; -- so return name and tag from lang_name_remap[name]; special case to xlate sr-ec and sr-el to sr-cyrl and sr-latn
end
return name, lang_param_lc; -- so return <name> from remap and <lang_param_lc>
end
tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- still assuming that <lang_param_lc> is a tag; strip script, region, variant subtags
name = cfg.lang_tag_remap[tag]; -- attempt to get remapped language name with language subtag only
if name then -- when <name>, <tag> is a tag for a remapped language name
return name, tag; -- so return <name> from remap and <tag>
end
if cfg.lang_name_remap[lang_param_lc] then -- not a remapped tag, assume <lang_param_lc> is a name; attempt to get remapped language tag
return cfg.lang_name_remap[lang_param_lc][1], cfg.lang_name_remap[lang_param_lc][2]; -- for this <lang_param_lc>, return a (possibly) new name and appropriate tag
end
name = cfg.mw_languages_by_tag_t[lang_param_lc]; -- assume that <lang_param_lc> is a tag; attempt to get its matching language name
if name then
return name, lang_param_lc; -- <lang_param_lc> is a tag so return it and <name>
end
tag = cfg.mw_languages_by_name_t[lang_param_lc]; -- assume that <lang_param_lc> is a language name; attempt to get its matching tag
if tag then
return cfg.mw_languages_by_tag_t[tag], tag; -- <lang_param_lc> is a name so return the name from the table and <tag>
end
tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- is <lang_param_lc> an IETF-like tag that MediaWiki doesn't recognize? <tag> gets the language subtag; nil else
if tag then
name = cfg.mw_languages_by_tag_t[tag]; -- attempt to get a language name using the shortened <tag>
if name then
return name, tag; -- <lang_param_lc> is an unrecognized IETF-like tag so return <name> and language subtag
end
end
end
--[[-------------------< L A N G U A G E _ P A R A M E T E R >------------------
Gets language name from a provided two- or three-character ISO 639 code. If a code
is recognized by MediaWiki, use the returned name; if not, then use the value that
was provided with the language parameter.
When |language= contains a recognized language (either code or name), the page is
assigned to the category for that code: Category:Norwegian-language sources (no).
For valid three-character code languages, the page is assigned to the single category
for '639-2' codes: Category:CS1 ISO 639-2 language sources.
Languages that are the same as the local wiki are not categorized. MediaWiki does
not recognize three-character equivalents of two-character codes: code 'ar' is
recognized but code 'ara' is not.
This function supports multiple languages in the form |language=nb, French, th
where the language names or codes are separated from each other by commas with
optional space characters.
]]
local function language_parameter (lang)
local tag; -- some form of IETF-like language tag; language subtag with optional region, sript, vatiant, etc subtags
local lang_subtag; -- ve populates |language= with mostly unecessary region subtags the MediaWiki does not recognize; this is the base language subtag
local name; -- the language name
local language_list = {}; -- table of language names to be rendered
local names_t = {}; -- table made from the value assigned to |language=
local this_wiki_name = mw.language.fetchLanguageName (cfg.this_wiki_code, cfg.this_wiki_code); -- get this wiki's language name
names_t = mw.text.split (lang, '%s*,%s*'); -- names should be a comma separated list
for _, lang in ipairs (names_t) do -- reuse lang here because we don't yet know if lang is a language name or a language tag
name, tag = name_tag_get (lang); -- attempt to get name/tag pair for <lang>; <name> has proper capitalization; <tag> is lowercase
if utilities.is_set (tag) then
lang_subtag = tag:gsub ('^(%a%a%a?)%-.*', '%1'); -- for categorization, strip any IETF-like tags from language tag
if cfg.this_wiki_code ~= lang_subtag then -- when the language is not the same as this wiki's language
if 2 == lang_subtag:len() then -- and is a two-character tag
utilities.add_prop_cat ('foreign-lang-source', {name, tag}, lang_subtag); -- categorize it; tag appended to allow for multiple language categorization
else -- or is a recognized language (but has a three-character tag)
utilities.add_prop_cat ('foreign-lang-source-2', {lang_subtag}, lang_subtag); -- categorize it differently TODO: support multiple three-character tag categories per cs1|2 template?
end
elseif cfg.local_lang_cat_enable then -- when the language and this wiki's language are the same and categorization is enabled
utilities.add_prop_cat ('local-lang-source', {name, lang_subtag}); -- categorize it
end
else
name = lang; -- return whatever <lang> has so that we show something
utilities.set_message ('maint_unknown_lang'); -- add maint category if not already added
end
table.insert (language_list, name);
name = ''; -- so we can reuse it
end
name = utilities.make_sep_list (#language_list, language_list);
if (1 == #language_list) and (lang_subtag == cfg.this_wiki_code) then -- when only one language, find lang name in this wiki lang name; for |language=en-us, 'English' in 'American English'
return ''; -- if one language and that language is this wiki's return an empty string (no annotation)
end
return (" " .. wrap_msg ('language', name)); -- otherwise wrap with '(in ...)'
--[[ TODO: should only return blank or name rather than full list
so we can clean up the bunched parenthetical elements Language, Type, Format
]]
end
--[[-----------------------< S E T _ C S _ S T Y L E >--------------------------
Gets the default CS style configuration for the given mode.
Returns default separator and either postscript as passed in or the default.
In CS1, the default postscript and separator are '.'.
In CS2, the default postscript is the empty string and the default separator is ','.
]]
local function set_cs_style (postscript, mode)
if utilities.is_set(postscript) then
-- emit a maintenance message if user postscript is the default cs1 postscript
-- we catch the opposite case for cs2 in set_style
if mode == 'cs1' and postscript == cfg.presentation['ps_' .. mode] then
utilities.set_message ('maint_postscript');
end
else
postscript = cfg.presentation['ps_' .. mode];
end
return cfg.presentation['sep_' .. mode], postscript;
end
--[[--------------------------< S E T _ S T Y L E >-----------------------------
Sets the separator and postscript styles. Checks the |mode= first and the
#invoke CitationClass second. Removes the postscript if postscript == none.
]]
local function set_style (mode, postscript, cite_class)
local sep;
if 'cs2' == mode then
sep, postscript = set_cs_style (postscript, 'cs2');
elseif 'cs1' == mode then
sep, postscript = set_cs_style (postscript, 'cs1');
elseif 'citation' == cite_class then
sep, postscript = set_cs_style (postscript, 'cs2');
else
sep, postscript = set_cs_style (postscript, 'cs1');
end
if cfg.keywords_xlate[postscript:lower()] == 'none' then
-- emit a maintenance message if user postscript is the default cs2 postscript
-- we catch the opposite case for cs1 in set_cs_style
if 'cs2' == mode or ('cs1' ~= mode and 'citation' == cite_class) then -- {{citation |title=Title |mode=cs1 |postscript=none}} should not emit maint message
utilities.set_message ('maint_postscript');
end
postscript = '';
end
return sep, postscript
end
--[=[-------------------------< I S _ P D F >-----------------------------------
Determines if a URL has the file extension that is one of the PDF file extensions
used by [[MediaWiki:Common.css]] when applying the PDF icon to external links.
returns true if file extension is one of the recognized extensions, else false
]=]
local function is_pdf (url)
return url:match ('%.pdf$') or url:match ('%.PDF$') or
url:match ('%.pdf[%?#]') or url:match ('%.PDF[%?#]') or
url:match ('%.PDF#') or url:match ('%.pdf#');
end
--[[--------------------------< S T Y L E _ F O R M A T >-----------------------
Applies CSS style to |format=, |chapter-format=, etc. Also emits an error message
if the format parameter does not have a matching URL parameter. If the format parameter
is not set and the URL contains a file extension that is recognized as a PDF document
by MediaWiki's commons.css, this code will set the format parameter to (PDF) with
the appropriate styling.
]]
local function style_format (format, url, fmt_param, url_param)
if utilities.is_set (format) then
format = utilities.wrap_style ('format', format); -- add leading space, parentheses, resize
if not utilities.is_set (url) then
utilities.set_message ('err_format_missing_url', {fmt_param, url_param}); -- add an error message
end
elseif is_pdf (url) then -- format is not set so if URL is a PDF file then
format = utilities.wrap_style ('format', 'PDF'); -- set format to PDF
else
format = ''; -- empty string for concatenation
end
return format;
end
--[[---------------------< G E T _ D I S P L A Y _ N A M E S >------------------
Returns a number that defines the number of names displayed for author and editor
name lists and a Boolean flag to indicate when et al. should be appended to the name list.
When the value assigned to |display-xxxxors= is a number greater than or equal to zero,
return the number and the previous state of the 'etal' flag (false by default
but may have been set to true if the name list contains some variant of the text 'et al.').
When the value assigned to |display-xxxxors= is the keyword 'etal', return a number
that is one greater than the number of authors in the list and set the 'etal' flag true.
This will cause the list_people() to display all of the names in the name list followed by 'et al.'
In all other cases, returns nil and the previous state of the 'etal' flag.
inputs:
max: A['DisplayAuthors'] or A['DisplayEditors'], etc; a number or some flavor of etal
count: #a or #e
list_name: 'authors' or 'editors'
etal: author_etal or editor_etal
This function sets an error message when |display-xxxxors= value greater than or equal to number of names but
not when <max> comes from {{cs1 config}} global settings. When using global settings, <param> is set to the
keyword 'cs1 config' which is used to supress the normal error. Error is suppressed because it is to be expected
that some citations in an article will have the same or fewer names that the limit specified in {{cs1 config}}.
]]
local function get_display_names (max, count, list_name, etal, param)
if utilities.is_set (max) then
if 'etal' == max:lower():gsub("[ '%.]", '') then -- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings
max = count + 1; -- number of authors + 1 so display all author name plus et al.
etal = true; -- overrides value set by extract_names()
elseif max:match ('^%d+$') then -- if is a string of numbers
max = tonumber (max); -- make it a number
if (max >= count) and ('cs1 config' ~= param) then -- error when local |display-xxxxors= value greater than or equal to number of names; not an error when using global setting
utilities.set_message ('err_disp_name', {param, max}); -- add error message
max = nil;
end
else -- not a valid keyword or number
utilities.set_message ('err_disp_name', {param, max}); -- add error message
max = nil; -- unset; as if |display-xxxxors= had not been set
end
end
return max, etal;
end
--[[----------< E X T R A _ T E X T _ I N _ P A G E _ C H E C K >---------------
Adds error if |page=, |pages=, |quote-page=, |quote-pages= has what appears to be
some form of p. or pp. abbreviation in the first characters of the parameter content.
check page for extraneous p, p., pp, pp., pg, pg. at start of parameter value:
good pattern: '^P[^%.P%l]' matches when page begins PX or P# but not Px
where x and X are letters and # is a digit
bad pattern: '^[Pp][PpGg]' matches when page begins pp, pP, Pp, PP, pg, pG, Pg, PG
]]
local function extra_text_in_page_check (val, name)
if not val:match (cfg.vol_iss_pg_patterns.good_ppattern) then
for _, pattern in ipairs (cfg.vol_iss_pg_patterns.bad_ppatterns) do -- spin through the selected sequence table of patterns
if val:match (pattern) then -- when a match, error so
utilities.set_message ('err_extra_text_pages', name); -- add error message
return; -- and done
end
end
end
end
--[[--------------------------< E X T R A _ T E X T _ I N _ V O L _ I S S _ C H E C K >------------------------
Adds error if |volume= or |issue= has what appears to be some form of redundant 'type' indicator. Applies to
both; this function looks for issue text in both |issue= and |volume= and looks for volume-like text in |voluem=
and |issue=.
For |volume=:
'V.', or 'Vol.' (with or without the dot) abbreviations or 'Volume' in the first characters of the parameter
content (all case insensitive). 'V' and 'v' (without the dot) are presumed to be roman numerals so
are allowed.
For |issue=:
'No.', 'I.', 'Iss.' (with or without the dot) abbreviations, or 'Issue' in the first characters of the
parameter content (all case insensitive); numero styling: 'n°' with degree sign U+00B0, and № precomposed
numero sign U+2116.
Single character values ('v', 'i', 'n') allowed when not followed by separator character ('.', ':', '=', or
whitespace character) – param values are trimmed of whitespace by MediaWiki before delivered to the module.
<val> is |volume= or |issue= parameter value
<name> is |volume= or |issue= parameter name for error message
<selector> is 'v' for |volume=, 'i' for |issue=
sets error message on failure; returns nothing
]]
local function extra_text_in_vol_iss_check (val, name, selector)
if not utilities.is_set (val) then
return;
end
local handler = 'v' == selector and 'err_extra_text_volume' or 'err_extra_text_issue';
val = val:lower(); -- force parameter value to lower case
for _, pattern in ipairs (cfg.vol_iss_pg_patterns.vi_patterns_t) do -- spin through the sequence table of patterns
if val:match (pattern) then -- when a match, error so
utilities.set_message (handler, name); -- add error message
return; -- and done
end
end
end
--[=[-------------------------< G E T _ V _ N A M E _ T A B L E >----------------------------------------------
split apart a |vauthors= or |veditors= parameter. This function allows for corporate names, wrapped in doubled
parentheses to also have commas; in the old version of the code, the doubled parentheses were included in the
rendered citation and in the metadata. Individual author names may be wikilinked
|vauthors=Jones AB, [[E. B. White|White EB]], ((Black, Brown, and Co.))
]=]
local function get_v_name_table (vparam, output_table, output_link_table)
local _, accept = utilities.has_accept_as_written (vparam);
if accept then
utilities.add_prop_cat ('vanc-accept'); -- add properties category
end
local name_table = mw.text.split(vparam, "%s*,%s*"); -- names are separated by commas
local wl_type, label, link; -- wl_type not used here; just a placeholder
local i = 1;
while name_table[i] do
if name_table[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of corporate with one or more commas; this segment has the opening doubled parentheses
local name = name_table[i];
i = i + 1; -- bump indexer to next segment
while name_table[i] do
name = name .. ', ' .. name_table[i]; -- concatenate with previous segments
if name_table[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parentheses
break; -- and done reassembling so
end
i = i + 1; -- bump indexer
end
table.insert (output_table, name); -- and add corporate name to the output table
table.insert (output_link_table, ''); -- no wikilink
else
wl_type, label, link = utilities.is_wikilink (name_table[i]); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]]
table.insert (output_table, label); -- add this name
if 1 == wl_type then
table.insert (output_link_table, label); -- simple wikilink [[D]]
else
table.insert (output_link_table, link); -- no wikilink or [[L|D]]; add this link if there is one, else empty string
end
end
i = i + 1;
end
return output_table;
end
--[[--------------------------< P A R S E _ V A U T H O R S _ V E D I T O R S >--------------------------------
This function extracts author / editor names from |vauthors= or |veditors= and finds matching |xxxxor-maskn= and
|xxxxor-linkn= in args. It then returns a table of assembled names just as extract_names() does.
Author / editor names in |vauthors= or |veditors= must be in Vancouver system style. Corporate or institutional names
may sometimes be required and because such names will often fail the is_good_vanc_name() and other format compliance
tests, are wrapped in doubled parentheses ((corporate name)) to suppress the format tests.
Supports generational suffixes Jr, 2nd, 3rd, 4th–6th.
This function sets the Vancouver error when a required comma is missing and when there is a space between an author's initials.
]]
local function parse_vauthors_veditors (args, vparam, list_name)
local names = {}; -- table of names assembled from |vauthors=, |author-maskn=, |author-linkn=
local v_name_table = {};
local v_link_table = {}; -- when name is wikilinked, targets go in this table
local etal = false; -- return value set to true when we find some form of et al. vauthors parameter
local last, first, link, mask, suffix;
local corporate = false;
vparam, etal = name_has_etal (vparam, etal, true); -- find and remove variations on et al. do not categorize (do it here because et al. might have a period)
v_name_table = get_v_name_table (vparam, v_name_table, v_link_table); -- names are separated by commas
for i, v_name in ipairs(v_name_table) do
first = ''; -- set to empty string for concatenation and because it may have been set for previous author/editor
local accept_name;
v_name, accept_name = utilities.has_accept_as_written (v_name); -- remove accept-this-as-written markup when it wraps all of <v_name>
if accept_name then
last = v_name;
corporate = true; -- flag used in list_people()
elseif string.find(v_name, "%s") then
if v_name:find('[;%.]') then -- look for commonly occurring punctuation characters;
add_vanc_error (cfg.err_msg_supl.punctuation, i);
end
local lastfirstTable = {}
lastfirstTable = mw.text.split(v_name, "%s+")
first = table.remove(lastfirstTable); -- removes and returns value of last element in table which should be initials or generational suffix
if not mw.ustring.match (first, '^%u+$') then -- mw.ustring here so that later we will catch non-Latin characters
suffix = first; -- not initials so assume that whatever we got is a generational suffix
first = table.remove(lastfirstTable); -- get what should be the initials from the table
end
last = table.concat(lastfirstTable, ' ') -- returns a string that is the concatenation of all other names that are not initials and generational suffix
if not utilities.is_set (last) then
first = ''; -- unset
last = v_name; -- last empty because something wrong with first
add_vanc_error (cfg.err_msg_supl.name, i);
end
if mw.ustring.match (last, '%a+%s+%u+%s+%a+') then
add_vanc_error (cfg.err_msg_supl['missing comma'], i); -- matches last II last; the case when a comma is missing
end
if mw.ustring.match (v_name, ' %u %u$') then -- this test is in the wrong place TODO: move or replace with a more appropriate test
add_vanc_error (cfg.err_msg_supl.initials, i); -- matches a space between two initials
end
else
last = v_name; -- last name or single corporate name? Doesn't support multiword corporate names? do we need this?
end
if utilities.is_set (first) then
if not mw.ustring.match (first, "^%u?%u$") then -- first shall contain one or two upper-case letters, nothing else
add_vanc_error (cfg.err_msg_supl.initials, i); -- too many initials; mixed case initials (which may be ok Romanization); hyphenated initials
end
is_good_vanc_name (last, first, suffix, i); -- check first and last before restoring the suffix which may have a non-Latin digit
if utilities.is_set (suffix) then
first = first .. ' ' .. suffix; -- if there was a suffix concatenate with the initials
suffix = ''; -- unset so we don't add this suffix to all subsequent names
end
else
if not corporate then
is_good_vanc_name (last, '', nil, i);
end
end
link = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ) or v_link_table[i];
mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i );
names[i] = {last = last, first = first, link = link, mask = mask, corporate = corporate}; -- add this assembled name to our names list
end
return names, etal; -- all done, return our list of names
end
--[[--------------------------< S E L E C T _ A U T H O R _ E D I T O R _ S O U R C E >------------------------
Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or
select one of |editorn= / editor-lastn= / |editor-firstn= or |veditors= as the source of the editor name list.
Only one of these appropriate three will be used. The hierarchy is: |authorn= (and aliases) highest and |authors= lowest;
|editorn= (and aliases) highest and |veditors= lowest (support for |editors= withdrawn)
When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second
test which mimicks the test used in extract_names() when looking for a hole in the author name list. There may be a better
way to do this, I just haven't discovered what that way is.
Emits an error message when more than one xxxxor name source is provided.
In this function, vxxxxors = vauthors or veditors; xxxxors = authors as appropriate.
]]
local function select_author_editor_source (vxxxxors, xxxxors, args, list_name)
local lastfirst = false;
if utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 1 ) or -- do this twice in case we have a |first1= without a |last1=; this ...
utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 1 ) or -- ... also catches the case where |first= is used with |vauthors=
utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 2 ) or
utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 2 ) then
lastfirst = true;
end
if (utilities.is_set (vxxxxors) and true == lastfirst) or -- these are the three error conditions
(utilities.is_set (vxxxxors) and utilities.is_set (xxxxors)) or
(true == lastfirst and utilities.is_set (xxxxors)) then
local err_name;
if 'AuthorList' == list_name then -- figure out which name should be used in error message
err_name = 'author';
else
err_name = 'editor';
end
utilities.set_message ('err_redundant_parameters', err_name .. '-name-list parameters'); -- add error message
end
if true == lastfirst then return 1 end; -- return a number indicating which author name source to use
if utilities.is_set (vxxxxors) then return 2 end;
if utilities.is_set (xxxxors) then return 3 end;
return 1; -- no authors so return 1; this allows missing author name test to run in case there is a first without last
end
--[[--------------------------< I S _ V A L I D _ P A R A M E T E R _ V A L U E >------------------------------
This function is used to validate a parameter's assigned value for those parameters that have only a limited number
of allowable values (yes, y, true, live, dead, etc.). When the parameter value has not been assigned a value (missing
or empty in the source template) the function returns the value specified by ret_val. If the parameter value is one
of the list of allowed values returns the translated value; else, emits an error message and returns the value
specified by ret_val.
TODO: explain <invert>
]]
local function is_valid_parameter_value (value, name, possible, ret_val, invert)
if not utilities.is_set (value) then
return ret_val; -- an empty parameter is ok
end
if (not invert and utilities.in_array (value, possible)) then -- normal; <value> is in <possible> table
return cfg.keywords_xlate[value]; -- return translation of parameter keyword
elseif invert and not utilities.in_array (value, possible) then -- invert; <value> is not in <possible> table
return value; -- return <value> as it is
else
utilities.set_message ('err_invalid_param_val', {name, value}); -- not an allowed value so add error message
return ret_val;
end
end
--[[--------------------------< T E R M I N A T E _ N A M E _ L I S T >----------------------------------------
This function terminates a name list (author, contributor, editor) with a separator character (sepc) and a space
when the last character is not a sepc character or when the last three characters are not sepc followed by two
closing square brackets (close of a wikilink). When either of these is true, the name_list is terminated with a
single space character.
]]
local function terminate_name_list (name_list, sepc)
if (string.sub (name_list, -3, -1) == sepc .. '. ') then -- if already properly terminated
return name_list; -- just return the name list
elseif (string.sub (name_list, -1, -1) == sepc) or (string.sub (name_list, -3, -1) == sepc .. ']]') then -- if last name in list ends with sepc char
return name_list .. " "; -- don't add another
else
return name_list .. sepc .. ' '; -- otherwise terminate the name list
end
end
--[[-------------------------< F O R M A T _ V O L U M E _ I S S U E >-----------------------------------------
returns the concatenation of the formatted volume and issue (or journal article number) parameters as a single
string; or formatted volume or formatted issue, or an empty string if neither are set.
]]
local function format_volume_issue (volume, issue, article, cite_class, origin, sepc, lower)
if not utilities.is_set (volume) and not utilities.is_set (issue) and not utilities.is_set (article) then
return '';
end
-- same condition as in format_pages_sheets()
local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin);
local is_numeric_vol = volume and (volume:match ('^[MDCLXVI]+$') or volume:match ('^%d+$')); -- is only uppercase roman numerals or only digits?
local is_long_vol = volume and (4 < mw.ustring.len(volume)); -- is |volume= value longer than 4 characters?
if volume and (not is_numeric_vol and is_long_vol) then -- when not all digits or Roman numerals, is |volume= longer than 4 characters?
utilities.add_prop_cat ('long-vol'); -- yes, add properties cat
end
if is_journal then -- journal-style formatting
local vol = '';
if utilities.is_set (volume) then
if is_numeric_vol then -- |volume= value all digits or all uppercase Roman numerals?
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, volume}); -- render in bold face
elseif is_long_vol then -- not all digits or Roman numerals; longer than 4 characters?
vol = utilities.substitute (cfg.messages['j-vol'], {sepc, utilities.hyphen_to_dash (volume)}); -- not bold
else -- four or fewer characters
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, utilities.hyphen_to_dash (volume)}); -- bold
end
end
vol = vol .. (utilities.is_set (issue) and utilities.substitute (cfg.messages['j-issue'], issue) or '')
vol = vol .. (utilities.is_set (article) and utilities.substitute (cfg.messages['j-article-num'], article) or '')
return vol;
end
if 'podcast' == cite_class and utilities.is_set (issue) then
return wrap_msg ('issue', {sepc, issue}, lower);
end
if 'conference' == cite_class and utilities.is_set (article) then -- |article-number= supported only in journal and conference cites
if utilities.is_set (volume) and utilities.is_set (article) then -- both volume and article number
return wrap_msg ('vol-art', {sepc, utilities.hyphen_to_dash (volume), article}, lower);
elseif utilities.is_set (article) then -- article number alone; when volume alone, handled below
return wrap_msg ('art', {sepc, article}, lower);
end
end
-- all other types of citation
if utilities.is_set (volume) and utilities.is_set (issue) then
return wrap_msg ('vol-no', {sepc, utilities.hyphen_to_dash (volume), issue}, lower);
elseif utilities.is_set (volume) then
return wrap_msg ('vol', {sepc, utilities.hyphen_to_dash (volume)}, lower);
else
return wrap_msg ('issue', {sepc, issue}, lower);
end
end
--[[-------------------------< F O R M A T _ P A G E S _ S H E E T S >-----------------------------------------
adds static text to one of |page(s)= or |sheet(s)= values and returns it with all of the others set to empty strings.
The return order is:
page, pages, sheet, sheets
Singular has priority over plural when both are provided.
]]
local function format_pages_sheets (page, pages, sheet, sheets, cite_class, origin, sepc, nopp, lower)
if 'map' == cite_class then -- only cite map supports sheet(s) as in-source locators
if utilities.is_set (sheet) then
if 'journal' == origin then
return '', '', wrap_msg ('j-sheet', sheet, lower), '';
else
return '', '', wrap_msg ('sheet', {sepc, sheet}, lower), '';
end
elseif utilities.is_set (sheets) then
if 'journal' == origin then
return '', '', '', wrap_msg ('j-sheets', sheets, lower);
else
return '', '', '', wrap_msg ('sheets', {sepc, sheets}, lower);
end
end
end
local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin);
if utilities.is_set (page) then
if is_journal then
return utilities.substitute (cfg.messages['j-page(s)'], page), '', '', '';
elseif not nopp then
return utilities.substitute (cfg.messages['p-prefix'], {sepc, page}), '', '', '';
else
return utilities.substitute (cfg.messages['nopp'], {sepc, page}), '', '', '';
end
elseif utilities.is_set (pages) then
if is_journal then
return utilities.substitute (cfg.messages['j-page(s)'], pages), '', '', '';
elseif tonumber(pages) ~= nil and not nopp then -- if pages is only digits, assume a single page number
return '', utilities.substitute (cfg.messages['p-prefix'], {sepc, pages}), '', '';
elseif not nopp then
return '', utilities.substitute (cfg.messages['pp-prefix'], {sepc, pages}), '', '';
else
return '', utilities.substitute (cfg.messages['nopp'], {sepc, pages}), '', '';
end
end
return '', '', '', ''; -- return empty strings
end
--[[--------------------------< I N S O U R C E _ L O C _ G E T >----------------------------------------------
returns one of the in-source locators: page, pages, or at.
If any of these are interwiki links to Wikisource, returns the label portion of the interwiki-link as plain text
for use in COinS. This COinS thing is done because here we convert an interwiki-link to an external link and
add an icon span around that; get_coins_pages() doesn't know about the span. TODO: should it?
TODO: add support for sheet and sheets?; streamline;
TODO: make it so that this function returns only one of the three as the single in-source (the return value assigned
to a new name)?
]]
local function insource_loc_get (page, page_orig, pages, pages_orig, at)
local ws_url, ws_label, coins_pages, L; -- for Wikisource interwiki-links; TODO: this corrupts page metadata (span remains in place after cleanup; fix there?)
if utilities.is_set (page) then
if utilities.is_set (pages) or utilities.is_set (at) then
pages = ''; -- unset the others
at = '';
end
extra_text_in_page_check (page, page_orig); -- emit error message when |page= value begins with what looks like p., pp., etc.
ws_url, ws_label, L = wikisource_url_make (page); -- make ws URL from |page= interwiki link; link portion L becomes tooltip label
if ws_url then
page = external_link (ws_url, ws_label .. ' ', 'ws link in page'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
page = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, page});
coins_pages = ws_label;
end
elseif utilities.is_set (pages) then
if utilities.is_set (at) then
at = ''; -- unset
end
extra_text_in_page_check (pages, pages_orig); -- emit error message when |page= value begins with what looks like p., pp., etc.
ws_url, ws_label, L = wikisource_url_make (pages); -- make ws URL from |pages= interwiki link; link portion L becomes tooltip label
if ws_url then
pages = external_link (ws_url, ws_label .. ' ', 'ws link in pages'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
pages = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, pages});
coins_pages = ws_label;
end
elseif utilities.is_set (at) then
ws_url, ws_label, L = wikisource_url_make (at); -- make ws URL from |at= interwiki link; link portion L becomes tooltip label
if ws_url then
at = external_link (ws_url, ws_label .. ' ', 'ws link in at'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
at = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, at});
coins_pages = ws_label;
end
end
return page, pages, at, coins_pages;
end
--[[--------------------------< I S _ U N I Q U E _ A R C H I V E _ U R L >------------------------------------
add error message when |archive-url= value is same as |url= or chapter-url= (or alias...) value
]]
local function is_unique_archive_url (archive, url, c_url, source, date)
if utilities.is_set (archive) then
if archive == url or archive == c_url then
utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)}); -- add error message
return '', ''; -- unset |archive-url= and |archive-date= because same as |url= or |chapter-url=
end
end
return archive, date;
end
--[=[-------------------------< A R C H I V E _ U R L _ C H E C K >--------------------------------------------
Check archive.org URLs to make sure they at least look like they are pointing at valid archives and not to the
save snapshot URL or to calendar pages. When the archive URL is 'https://web.archive.org/save/' (or http://...)
archive.org saves a snapshot of the target page in the URL. That is something that Wikipedia should not allow
unwitting readers to do.
When the archive.org URL does not have a complete timestamp, archive.org chooses a snapshot according to its own
algorithm or provides a calendar 'search' result. [[WP:ELNO]] discourages links to search results.
This function looks at the value assigned to |archive-url= and returns empty strings for |archive-url= and
|archive-date= and an error message when:
|archive-url= holds an archive.org save command URL
|archive-url= is an archive.org URL that does not have a complete timestamp (YYYYMMDDhhmmss 14 digits) in the
correct place
otherwise returns |archive-url= and |archive-date=
There are two mostly compatible archive.org URLs:
//web.archive.org/<timestamp>... -- the old form
//web.archive.org/web/<timestamp>... -- the new form
The old form does not support or map to the new form when it contains a display flag. There are four identified flags
('id_', 'js_', 'cs_', 'im_') but since archive.org ignores others following the same form (two letters and an underscore)
we don't check for these specific flags but we do check the form.
This function supports a preview mode. When the article is rendered in preview mode, this function may return a modified
archive URL:
for save command errors, return undated wildcard (/*/)
for timestamp errors when the timestamp has a wildcard, return the URL unmodified
for timestamp errors when the timestamp does not have a wildcard, return with timestamp limited to six digits plus wildcard (/yyyymm*/)
A secondary function is to return an archive-url timestamp from those urls that have them (archive.org and
archive.today). The timestamp is used by validation.archive_date_check() to see if the value in |archive-date=
matches the timestamp in the archive url.
]=]
local function archive_url_check (url, date)
local err_msg = ''; -- start with the error message empty
local path, timestamp, flag; -- portions of the archive.org URL
timestamp = url:match ('//archive.today/(%d%d%d%d%d%d%d%d%d%d%d%d%d%d)/') or -- get timestamp from archive.today urls
url:match ('//archive.today/(%d%d%d%d%.%d%d%.%d%d%-%d%d%d%d%d%d)/'); -- this timestamp needs cleanup
if timestamp then -- if this was an archive.today url ...
return url, date, timestamp:gsub ('[%.%-]', ''); -- return ArchiveURL, ArchiveDate, and timestamp (dots and dashes removed) from |archive-url=, and done
end
-- here for archive.org urls
if (not url:match('//web%.archive%.org/')) and (not url:match('//liveweb%.archive%.org/')) then -- also deprecated liveweb Wayback machine URL
return url, date; -- not an archive.org archive, return ArchiveURL and ArchiveDate
end
if url:match('//web%.archive%.org/save/') then -- if a save command URL, we don't want to allow saving of the target page
err_msg = cfg.err_msg_supl.save;
url = url:gsub ('(//web%.archive%.org)/save/', '%1/*/', 1); -- for preview mode: modify ArchiveURL
elseif url:match('//liveweb%.archive%.org/') then
err_msg = cfg.err_msg_supl.liveweb;
else
path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/'); -- split out some of the URL parts for evaluation
if not path then -- malformed in some way; pattern did not match
err_msg = cfg.err_msg_supl.timestamp;
elseif 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here
err_msg = cfg.err_msg_supl.timestamp;
if '*' ~= flag then
local replacement = timestamp:match ('^%d%d%d%d%d%d') or timestamp:match ('^%d%d%d%d'); -- get the first 6 (YYYYMM) or first 4 digits (YYYY)
if replacement then -- nil if there aren't at least 4 digits (year)
replacement = replacement .. string.rep ('0', 14 - replacement:len()); -- year or yearmo (4 or 6 digits) zero-fill to make 14-digit timestamp
url=url:gsub ('(//web%.archive%.org/[^%d]*)%d[^/]*', '%1' .. replacement .. '*', 1) -- for preview, modify ts to 14 digits plus splat for calendar display
end
end
elseif utilities.is_set (path) and 'web/' ~= path then -- older archive URLs do not have the extra 'web/' path element
err_msg = cfg.err_msg_supl.path;
elseif utilities.is_set (flag) and not utilities.is_set (path) then -- flag not allowed with the old form URL (without the 'web/' path element)
err_msg = cfg.err_msg_supl.flag;
elseif utilities.is_set (flag) and not flag:match ('%a%a_') then -- flag if present must be two alpha characters and underscore (requires 'web/' path element)
err_msg = cfg.err_msg_supl.flag;
else
return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url=
end
end
-- if here, something not right so
utilities.set_message ('err_archive_url', {err_msg}); -- add error message and
if is_preview_mode then
return url, date, timestamp; -- preview mode so return ArchiveURL, ArchiveDate, and timestamp from |archive-url=
else
return '', ''; -- return empty strings for ArchiveURL and ArchiveDate
end
end
--[[--------------------------< P L A C E _ C H E C K >--------------------------------------------------------
check |place=, |publication-place=, |location= to see if these params include digits. This function added because
many editors misuse location to specify the in-source location (|page(s)= and |at= are supposed to do that)
returns the original parameter value without modification; added maint cat when parameter value contains digits
]]
local function place_check (param_val)
if not utilities.is_set (param_val) then -- parameter empty or omitted
return param_val; -- return that empty state
end
if mw.ustring.find (param_val, '%d') then -- not empty, are there digits in the parameter value
utilities.set_message ('maint_location'); -- yep, add maint cat
end
return param_val; -- and done
end
--[[--------------------------< I S _ A R C H I V E D _ C O P Y >----------------------------------------------
compares |title= to 'Archived copy' (placeholder added by bots that can't find proper title); if matches, return true; nil else
]]
local function is_archived_copy (title)
title = mw.ustring.lower(title); -- switch title to lower case
if title:find (cfg.special_case_translation.archived_copy.en) then -- if title is 'Archived copy'
return true;
elseif cfg.special_case_translation.archived_copy['local'] then
if mw.ustring.find (title, cfg.special_case_translation.archived_copy['local']) then -- mw.ustring() because might not be Latin script
return true;
end
end
end
--[[--------------------------< D I S P L A Y _ N A M E S _ S E L E C T >--------------------------------------
for any of the |display-authors=, |display-editors=, etc parameters, select either the local or global setting.
When both are present, look at <local_display_names> value. When the value is some sort of 'et al.'string,
special handling is required.
When {{cs1 config}} has |display-<namelist>= AND this template has |display-<namelist>=etal AND:
the number of names specified by <number_of_names> is:
greater than the number specified in the global |display-<namelist>= parameter (<global_display_names>)
use global |display-<namelist>= parameter value
set overridden maint category
less than or equal to the number specified in the global |display-<namelist>= parameter
use local |display-<namelist>= parameter value
The purpose of this function is to prevent categorizing a template that has fewer names than the global setting
to keep the etal annotation specified by <local_display_names>.
]]
local function display_names_select (global_display_names, local_display_names, param_name, number_of_names, test)
if global_display_names and utilities.is_set (local_display_names) then -- when both
if 'etal' == local_display_names:lower():gsub("[ '%.]", '') then -- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings
number_of_names = tonumber (number_of_names); -- convert these to numbers for comparison
local global_display_names_num = tonumber (global_display_names); -- <global_display_names> not set when parameter value is not digits
if number_of_names > global_display_names_num then -- template has more names than global config allows to be displayed?
utilities.set_message ('maint_overridden_setting'); -- set a maint message because global is overriding local |display-<namelist>=etal
return global_display_names, 'cs1 config'; -- return global with spoof parameter name (for get_display_names())
else
return local_display_names, param_name; -- return local because fewer names so let <local_display_names> control
end
end
-- here when <global_display_names> and <local_display_names> both numbers; <global_display_names> controls
utilities.set_message ('maint_overridden_setting'); -- set a maint message
return global_display_names, 'cs1 config'; -- return global with spoof parameter name (for get_display_names())
end
-- here when only one of <global_display_names> or <local_display_names> set
if global_display_names then
return global_display_names, 'cs1 config'; -- return global with spoof parameter name (for get_display_names())
else
return local_display_names, param_name; -- return local
end
end
--[[--------------------------< M O D E _ S E T >--------------------------------------------------------------
fetch global mode setting from {{cs1 config}} (if present) or from |mode= (if present); global setting overrides
local |mode= parameter value. When both are present, emit maintenance message
]]
local function mode_set (Mode, Mode_origin)
local mode;
if cfg.global_cs1_config_t['Mode'] then -- global setting in {{cs1 config}}; nil when empty or assigned value invalid
mode = is_valid_parameter_value (cfg.global_cs1_config_t['Mode'], 'cs1 config: mode', cfg.keywords_lists['mode'], ''); -- error messaging 'param' here is a hoax
else
mode = is_valid_parameter_value (Mode, Mode_origin, cfg.keywords_lists['mode'], '');
end
if cfg.global_cs1_config_t['Mode'] and utilities.is_set (Mode) then -- when template has |mode=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
return mode;
end
--[[--------------------------< Q U O T E _ M A K E >----------------------------------------------------------
create quotation from |quote=, |trans-quote=, and/or script-quote= with or without |quote-page= or |quote-pages=
when any of those three quote parameters are set, this function unsets <PostScript>. When none of those parameters
are set, |quote-page= and |quote-pages= are unset to nil so that they are not included in the template's metadata
]]
local function quote_make (quote, trans_quote, script_quote, quote_page, quote_pages, nopp, sepc, postscript)
if utilities.is_set (quote) or utilities.is_set (trans_quote) or utilities.is_set (script_quote) then
if utilities.is_set (quote) then
if quote:sub(1, 1) == '"' and quote:sub(-1, -1) == '"' then -- if first and last characters of quote are quote marks
quote = quote:sub(2, -2); -- strip them off
end
end
quote = kern_quotes (quote); -- kern if needed
quote = utilities.wrap_style ('quoted-text', quote ); -- wrap in <q>...</q> tags
if utilities.is_set (script_quote) then
quote = script_concatenate (quote, script_quote, 'script-quote'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after quote is wrapped
end
if utilities.is_set (trans_quote) then
if trans_quote:sub(1, 1) == '"' and trans_quote:sub(-1, -1) == '"' then -- if first and last characters of |trans-quote are quote marks
trans_quote = trans_quote:sub(2, -2); -- strip them off
end
quote = quote .. " " .. utilities.wrap_style ('trans-quoted-title', trans_quote );
end
if utilities.is_set (quote_page) or utilities.is_set (quote_pages) then -- add page prefix
local quote_prefix = '';
if utilities.is_set (quote_page) then
extra_text_in_page_check (quote_page, 'quote-page'); -- add to maint cat if |quote-page= value begins with what looks like p., pp., etc.
if not nopp then
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, quote_page}), '', '', '';
else
quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, quote_page}), '', '', '';
end
elseif utilities.is_set (quote_pages) then
extra_text_in_page_check (quote_pages, 'quote-pages'); -- add to maint cat if |quote-pages= value begins with what looks like p., pp., etc.
if tonumber(quote_pages) ~= nil and not nopp then -- if only digits, assume single page
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, quote_pages}), '', '';
elseif not nopp then
quote_prefix = utilities.substitute (cfg.messages['pp-prefix'], {sepc, quote_pages}), '', '';
else
quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, quote_pages}), '', '';
end
end
quote = quote_prefix .. ": " .. quote;
else
quote = sepc .. " " .. quote;
end
postscript = ""; -- cs1|2 does not supply terminal punctuation when |quote= is set
elseif utilities.is_set (quote_page) or utilities.is_set (quote_pages) then
quote_page = nil; -- unset; these require |quote=; TODO: error message?
quote_pages = nil;
end
return quote, quote_page, quote_pages, postscript;
end
--[[--------------------------< C H E C K _ P U B L I S H E R _ N A M E >--------------------------------------
look for variations of '<text>: <text>' that might be '<location>: <publisher>' in |publisher= parameter value.
when found, emit a maintenance message; return nil else
<publisher> is the value assigned to |publisher= or |institution=
]]
local function check_publisher_name (publisher)
local patterns_t = {
'^[%w%s]+%s*:%s*[%w%s]+$', -- plain text <location>: <publisher>
'^%[+[%w%s:|]+%]+%s*:%s*[%w%s]+$', -- partially wikilinked [[<location>]]: <publisher>
'^[%w%s]+%s*:%s*%[+[%w%s:|]+%]+$', -- partially wikilinked <location>: [[<publisher>]]
'^%[+[%w%s:|]+%]+%s*:%s*%[+[%w%s:|]+%]+$', -- wikilinked [[<location>]]: [[<publisher>]]
}
for _, pattern in ipairs (patterns_t) do -- spin through the patterns_t sequence
if mw.ustring.match (publisher, pattern) then -- does this pattern match?
utilities.set_message ('maint_publisher_location'); -- set a maint message
return; -- and done
end
end
end
--[[--------------------------< C I T A T I O N 0 >------------------------------------------------------------
This is the main function doing the majority of the citation formatting.
]]
local function citation0( config, args )
--[[
Load Input Parameters
The argument_wrapper facilitates the mapping of multiple aliases to single internal variable.
]]
local A = argument_wrapper ( args );
local i
-- Pick out the relevant fields from the arguments. Different citation templates
-- define different field names for the same underlying things.
local author_etal;
local a = {}; -- authors list from |lastn= / |firstn= pairs or |vauthors=
local Authors;
local NameListStyle;
if cfg.global_cs1_config_t['NameListStyle'] then -- global setting in {{cs1 config}} overrides local |name-list-style= parameter value; nil when empty or assigned value invalid
NameListStyle = is_valid_parameter_value (cfg.global_cs1_config_t['NameListStyle'], 'cs1 config: name-list-style', cfg.keywords_lists['name-list-style'], ''); -- error messaging 'param' here is a hoax
else
NameListStyle = is_valid_parameter_value (A['NameListStyle'], A:ORIGIN('NameListStyle'), cfg.keywords_lists['name-list-style'], '');
end
if cfg.global_cs1_config_t['NameListStyle'] and utilities.is_set (A['NameListStyle']) then -- when template has |name-list-style=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
local Collaboration = A['Collaboration'];
do -- to limit scope of selected
local selected = select_author_editor_source (A['Vauthors'], A['Authors'], args, 'AuthorList');
if 1 == selected then
a, author_etal = extract_names (args, 'AuthorList'); -- fetch author list from |authorn= / |lastn= / |firstn=, |author-linkn=, and |author-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
a, author_etal = parse_vauthors_veditors (args, A['Vauthors'], 'AuthorList'); -- fetch author list from |vauthors=, |author-linkn=, and |author-maskn=
elseif 3 == selected then
Authors = A['Authors']; -- use content of |people= or |credits=; |authors= is deprecated; TODO: constrain |people= and |credits= to cite av media, episode, serial?
end
if utilities.is_set (Collaboration) then
author_etal = true; -- so that |display-authors=etal not required
end
end
local editor_etal;
local e = {}; -- editors list from |editor-lastn= / |editor-firstn= pairs or |veditors=
do -- to limit scope of selected
local selected = select_author_editor_source (A['Veditors'], nil, args, 'EditorList'); -- support for |editors= withdrawn
if 1 == selected then
e, editor_etal = extract_names (args, 'EditorList'); -- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
e, editor_etal = parse_vauthors_veditors (args, args.veditors, 'EditorList'); -- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn=
end
end
local Chapter = A['Chapter']; -- done here so that we have access to |contribution= from |chapter= aliases
local Chapter_origin = A:ORIGIN ('Chapter');
local Contribution; -- because contribution is required for contributor(s)
if 'contribution' == Chapter_origin then
Contribution = Chapter; -- get the name of the contribution
end
local c = {}; -- contributors list from |contributor-lastn= / contributor-firstn= pairs
if utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (A['Periodical']) then -- |contributor= and |contribution= only supported in book cites
c = extract_names (args, 'ContributorList'); -- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn=
if 0 < #c then
if not utilities.is_set (Contribution) then -- |contributor= requires |contribution=
utilities.set_message ('err_contributor_missing_required_param', 'contribution'); -- add missing contribution error message
c = {}; -- blank the contributors' table; it is used as a flag later
end
if 0 == #a then -- |contributor= requires |author=
utilities.set_message ('err_contributor_missing_required_param', 'author'); -- add missing author error message
c = {}; -- blank the contributors' table; it is used as a flag later
end
end
else -- if not a book cite
if utilities.select_one (args, cfg.aliases['ContributorList-Last'], 'err_redundant_parameters', 1 ) then -- are there contributor name list parameters?
utilities.set_message ('err_contributor_ignored'); -- add contributor ignored error message
end
Contribution = nil; -- unset
end
local Title = A['Title'];
local TitleLink = A['TitleLink'];
local auto_select = ''; -- default is auto
local accept_link;
TitleLink, accept_link = utilities.has_accept_as_written (TitleLink, true); -- test for accept-this-as-written markup
if (not accept_link) and utilities.in_array (TitleLink, {'none', 'pmc', 'doi'}) then -- check for special keywords
auto_select = TitleLink; -- remember selection for later
TitleLink = ''; -- treat as if |title-link= would have been empty
end
TitleLink = link_title_ok (TitleLink, A:ORIGIN ('TitleLink'), Title, 'title'); -- check for wiki-markup in |title-link= or wiki-markup in |title= when |title-link= is set
local Section = ''; -- {{cite map}} only; preset to empty string for concatenation if not used
if 'map' == config.CitationClass and 'section' == Chapter_origin then
Section = A['Chapter']; -- get |section= from |chapter= alias list; |chapter= and the other aliases not supported in {{cite map}}
Chapter = ''; -- unset for now; will be reset later from |map= if present
end
local Periodical = A['Periodical'];
local Periodical_origin = A:ORIGIN('Periodical');
local ScriptPeriodical = A['ScriptPeriodical'];
local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical');
local TransPeriodical = A['TransPeriodical'];
local TransPeriodical_origin = A:ORIGIN ('TransPeriodical');
if (utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (TransPeriodical))) then
local param;
if utilities.is_set (Periodical) then -- get a parameter name from one of these periodical related meta-parameters
Periodical = ''; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = Periodical_origin -- get parameter name for error messaging
elseif utilities.is_set (TransPeriodical) then
TransPeriodical = ''; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = TransPeriodical_origin; -- get parameter name for error messaging
elseif utilities.is_set (ScriptPeriodical) then
ScriptPeriodical = ''; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = ScriptPeriodical_origin; -- get parameter name for error messaging
end
if utilities.is_set (param) then -- if we found one
utilities.set_message ('err_periodical_ignored', {param}); -- emit an error message
end
end
if utilities.is_set (Periodical) then
local i;
Periodical, i = utilities.strip_apostrophe_markup (Periodical); -- strip apostrophe markup so that metadata isn't contaminated
if i then -- non-zero when markup was stripped so emit an error message
utilities.set_message ('err_apostrophe_markup', {Periodical_origin});
end
end
if 'mailinglist' == config.CitationClass then -- special case for {{cite mailing list}}
if utilities.is_set (Periodical) and utilities.is_set (A ['MailingList']) then -- both set emit an error TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', Periodical_origin) .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'mailinglist')});
end
Periodical = A ['MailingList']; -- error or no, set Periodical to |mailinglist= value because this template is {{cite mailing list}}
Periodical_origin = A:ORIGIN('MailingList');
end
-- web and news not tested for now because of
-- Wikipedia:Administrators%27_noticeboard#Is_there_a_semi-automated_tool_that_could_fix_these_annoying_"Cite_Web"_errors?
if not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) then -- 'periodical' templates require periodical parameter
-- local p = {['journal'] = 'journal', ['magazine'] = 'magazine', ['news'] = 'newspaper', ['web'] = 'website'}; -- for error message
local p = {['journal'] = 'journal', ['magazine'] = 'magazine'}; -- for error message
if p[config.CitationClass] then
utilities.set_message ('err_missing_periodical', {config.CitationClass, p[config.CitationClass]});
end
end
local Volume;
if 'citation' == config.CitationClass then
if utilities.is_set (Periodical) then
if not utilities.in_array (Periodical_origin, cfg.citation_no_volume_t) then -- {{citation}} does not render |volume= when these parameters are used
Volume = A['Volume']; -- but does for all other 'periodicals'
end
elseif utilities.is_set (ScriptPeriodical) then
if 'script-website' ~= ScriptPeriodical_origin then -- {{citation}} does not render volume for |script-website=
Volume = A['Volume']; -- but does for all other 'periodicals'
end
else
Volume = A['Volume']; -- and does for non-'periodical' cites
end
elseif utilities.in_array (config.CitationClass, cfg.templates_using_volume) then -- render |volume= for cs1 according to the configuration settings
Volume = A['Volume'];
end
extra_text_in_vol_iss_check (Volume, A:ORIGIN ('Volume'), 'v');
local Issue;
if 'citation' == config.CitationClass then
if utilities.is_set (Periodical) and utilities.in_array (Periodical_origin, cfg.citation_issue_t) then -- {{citation}} may render |issue= when these parameters are used
Issue = utilities.hyphen_to_dash (A['Issue']);
end
elseif utilities.in_array (config.CitationClass, cfg.templates_using_issue) then -- conference & map books do not support issue; {{citation}} listed here because included in settings table
if not (utilities.in_array (config.CitationClass, {'conference', 'map', 'citation'}) and not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical))) then
Issue = utilities.hyphen_to_dash (A['Issue']);
end
end
local ArticleNumber;
if utilities.in_array (config.CitationClass, {'journal', 'conference'}) or ('citation' == config.CitationClass and utilities.is_set (Periodical) and 'journal' == Periodical_origin) then
ArticleNumber = A['ArticleNumber'];
end
extra_text_in_vol_iss_check (Issue, A:ORIGIN ('Issue'), 'i');
local Page;
local Pages;
local At;
local QuotePage;
local QuotePages;
if not utilities.in_array (config.CitationClass, cfg.templates_not_using_page) then -- TODO: rewrite to emit ignored parameter error message?
Page = A['Page'];
Pages = utilities.hyphen_to_dash (A['Pages']);
At = A['At'];
QuotePage = A['QuotePage'];
QuotePages = utilities.hyphen_to_dash (A['QuotePages']);
end
local NoPP = is_valid_parameter_value (A['NoPP'], A:ORIGIN('NoPP'), cfg.keywords_lists['yes_true_y'], nil);
local Mode = mode_set (A['Mode'], A:ORIGIN('Mode'));
-- separator character and postscript
local sepc, PostScript = set_style (Mode:lower(), A['PostScript'], config.CitationClass);
local Quote;
Quote, QuotePage, QuotePages, PostScript = quote_make (A['Quote'], A['TransQuote'], A['ScriptQuote'], QuotePage, QuotePages, NoPP, sepc, PostScript);
local Edition = A['Edition'];
local PublicationPlace = place_check (A['PublicationPlace'], A:ORIGIN('PublicationPlace'));
local Place = place_check (A['Place'], A:ORIGIN('Place'));
local PublisherName = A['PublisherName'];
local PublisherName_origin = A:ORIGIN('PublisherName');
if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then
local i = 0;
PublisherName, i = utilities.strip_apostrophe_markup (PublisherName); -- strip apostrophe markup so that metadata isn't contaminated; publisher is never italicized
if i and (0 < i) then -- non-zero when markup was stripped so emit an error message
utilities.set_message ('err_apostrophe_markup', {PublisherName_origin});
end
end
if ('document' == config.CitationClass) and not utilities.is_set (PublisherName) then
utilities.set_message ('err_missing_publisher', {config.CitationClass, 'publisher'});
end
local Newsgroup = A['Newsgroup']; -- TODO: strip apostrophe markup?
local Newsgroup_origin = A:ORIGIN('Newsgroup');
if 'newsgroup' == config.CitationClass then
if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then -- general use parameter |publisher= not allowed in cite newsgroup
utilities.set_message ('err_parameter_ignored', {PublisherName_origin});
end
PublisherName = nil; -- ensure that this parameter is unset for the time being; will be used again after COinS
end
if 'book' == config.CitationClass or 'encyclopaedia' == config.CitationClass or ('citation' == config.CitationClass and not utilities.is_set (Periodical)) then
local accept;
PublisherName, accept = utilities.has_accept_as_written (PublisherName); -- check for and remove accept-as-written markup from |publisher= wrapped
if not accept then -- when no accept-as-written markup
check_publisher_name (PublisherName); -- emit maint message when |publisher= might be prefixed with publisher's location
end
end
local URL = A['URL']; -- TODO: better way to do this for URL, ChapterURL, and MapURL?
local UrlAccess = is_valid_parameter_value (A['UrlAccess'], A:ORIGIN('UrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (URL) and utilities.is_set (UrlAccess) then
UrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', 'url');
end
local ChapterURL = A['ChapterURL'];
local ChapterUrlAccess = is_valid_parameter_value (A['ChapterUrlAccess'], A:ORIGIN('ChapterUrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (ChapterURL) and utilities.is_set (ChapterUrlAccess) then
ChapterUrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', {A:ORIGIN('ChapterUrlAccess'):gsub ('%-access', '')});
end
local MapUrlAccess = is_valid_parameter_value (A['MapUrlAccess'], A:ORIGIN('MapUrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (A['MapURL']) and utilities.is_set (MapUrlAccess) then
MapUrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', {'map-url'});
end
local this_page = mw.title.getCurrentTitle(); -- also used for COinS and for language
local no_tracking_cats = is_valid_parameter_value (A['NoTracking'], A:ORIGIN('NoTracking'), cfg.keywords_lists['yes_true_y'], nil);
-- check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories
if not utilities.is_set (no_tracking_cats) then -- ignore if we are already not going to categorize this page
if cfg.uncategorized_namespaces[this_page.namespace] then -- is this page's namespace id one of the uncategorized namespace ids?
no_tracking_cats = "true"; -- set no_tracking_cats
end
for _, v in ipairs (cfg.uncategorized_subpages) do -- cycle through page name patterns
if this_page.text:match (v) then -- test page name against each pattern
no_tracking_cats = "true"; -- set no_tracking_cats
break; -- bail out if one is found
end
end
end
-- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we're at it)
utilities.select_one (args, {'page', 'p', 'pp', 'pages', 'at', 'sheet', 'sheets'}, 'err_redundant_parameters'); -- this is a dummy call simply to get the error message and category
local coins_pages;
Page, Pages, At, coins_pages = insource_loc_get (Page, A:ORIGIN('Page'), Pages, A:ORIGIN('Pages'), At);
if utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- both |publication-place= and |place= (|location=) allowed if different
utilities.add_prop_cat ('location-test'); -- add property cat to evaluate how often PublicationPlace and Place are used together
if PublicationPlace == Place then
Place = ''; -- unset; don't need both if they are the same
end
elseif not utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- when only |place= (|location=) is set ...
PublicationPlace = Place; -- promote |place= (|location=) to |publication-place
end
if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same
local URL_origin = A:ORIGIN('URL'); -- get name of parameter that holds URL
local ChapterURL_origin = A:ORIGIN('ChapterURL'); -- get name of parameter that holds ChapterURL
local ScriptChapter = A['ScriptChapter'];
local ScriptChapter_origin = A:ORIGIN ('ScriptChapter');
local Format = A['Format'];
local ChapterFormat = A['ChapterFormat'];
local TransChapter = A['TransChapter'];
local TransChapter_origin = A:ORIGIN ('TransChapter');
local TransTitle = A['TransTitle'];
local ScriptTitle = A['ScriptTitle'];
--[[
Parameter remapping for cite encyclopedia:
When the citation has these parameters:
|encyclopedia= and |title= then map |title= to |article= and |encyclopedia= to |title= for rendering
|encyclopedia= and |article= then map |encyclopedia= to |title= for rendering
|trans-title= maps to |trans-chapter= when |title= is re-mapped
|url= maps to |chapter-url= when |title= is remapped
All other combinations of |encyclopedia=, |title=, and |article= are not modified
]]
local Encyclopedia = A['Encyclopedia']; -- used as a flag by this module and by ~/COinS
local ScriptEncyclopedia = A['ScriptEncyclopedia'];
local TransEncyclopedia = A['TransEncyclopedia'];
if utilities.is_set (Encyclopedia) or utilities.is_set (ScriptEncyclopedia) then -- emit error message when Encyclopedia set but template is other than {{cite encyclopedia}} or {{citation}}
if 'encyclopaedia' ~= config.CitationClass and 'citation' ~= config.CitationClass then
if utilities.is_set (Encyclopedia) then
utilities.set_message ('err_parameter_ignored', {A:ORIGIN ('Encyclopedia')});
else
utilities.set_message ('err_parameter_ignored', {A:ORIGIN ('ScriptEncyclopedia')});
end
Encyclopedia = nil; -- unset these because not supported by this template
ScriptEncyclopedia = nil;
TransEncyclopedia = nil;
end
elseif utilities.is_set (TransEncyclopedia) then
utilities.set_message ('err_trans_missing_title', {'encyclopedia'});
end
if ('encyclopaedia' == config.CitationClass) or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then
if utilities.is_set (Periodical) and utilities.is_set (Encyclopedia) then -- when both parameters set emit an error message; {{citation}} only; Periodical not allowed in {{cite encyclopedia}}
utilities.set_message ('err_periodical_ignored', {Periodical_origin});
end
if utilities.is_set (Encyclopedia) or utilities.is_set (ScriptEncyclopedia) then
Periodical = Encyclopedia; -- error or no, set Periodical to Encyclopedia for rendering; {{citation}} could (not legitimately) have both; use Encyclopedia
Periodical_origin = A:ORIGIN ('Encyclopedia');
ScriptPeriodical = ScriptEncyclopedia;
ScriptPeriodical_origin = A:ORIGIN ('ScriptEncyclopedia');
if utilities.is_set (Title) or utilities.is_set (ScriptTitle) then
if not utilities.is_set (Chapter) then
Chapter = Title; -- |encyclopedia= and |title= are set so map |title= params to |article= params for rendering
ScriptChapter = ScriptTitle;
ScriptChapter_origin = A:ORIGIN('ScriptTitle')
TransChapter = TransTitle;
ChapterURL = URL;
ChapterURL_origin = URL_origin;
ChapterUrlAccess = UrlAccess;
ChapterFormat = Format;
if not utilities.is_set (ChapterURL) and utilities.is_set (TitleLink) then
Chapter = utilities.make_wikilink (TitleLink, Chapter);
end
Title = Periodical; -- now map |encyclopedia= params to |title= params for rendering
ScriptTitle = ScriptPeriodical or '';
TransTitle = TransEncyclopedia or '';
Periodical = ''; -- redundant so unset
ScriptPeriodical = '';
URL = '';
Format = '';
TitleLink = '';
end
elseif utilities.is_set (Chapter) or utilities.is_set (ScriptChapter) then -- |title= not set
Title = Periodical; -- |encyclopedia= set and |article= set so map |encyclopedia= to |title= for rendering
ScriptTitle = ScriptPeriodical or '';
TransTitle = TransEncyclopedia or '';
Periodical = ''; -- redundant so unset
ScriptPeriodical = '';
end
end
end
-- special case for cite techreport.
local ID = A['ID'];
if (config.CitationClass == "techreport") then -- special case for cite techreport
if utilities.is_set (A['Number']) then -- cite techreport uses 'number', which other citations alias to 'issue'
if not utilities.is_set (ID) then -- can we use ID for the "number"?
ID = A['Number']; -- yes, use it
else -- ID has a value so emit error message
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'id') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'number')});
end
end
end
-- Account for the oddity that is {{cite conference}}, before generation of COinS data.
local ChapterLink -- = A['ChapterLink']; -- deprecated as a parameter but still used internally by cite episode
local Conference = A['Conference'];
local BookTitle = A['BookTitle'];
local TransTitle_origin = A:ORIGIN ('TransTitle');
if 'conference' == config.CitationClass then
if utilities.is_set (BookTitle) then
Chapter = Title;
Chapter_origin = 'title';
-- ChapterLink = TitleLink; -- |chapter-link= is deprecated
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
ChapterURL_origin = URL_origin;
URL_origin = '';
ChapterFormat = Format;
TransChapter = TransTitle;
TransChapter_origin = TransTitle_origin;
Title = BookTitle;
Format = '';
-- TitleLink = '';
TransTitle = '';
URL = '';
end
elseif 'speech' ~= config.CitationClass then
Conference = ''; -- not cite conference or cite speech so make sure this is empty string
end
local use_lowercase = ( sepc == ',' ); -- controls capitalization of certain static text
-- cite map oddities
local Cartography = "";
local Scale = "";
local Sheet = A['Sheet'] or '';
local Sheets = A['Sheets'] or '';
if config.CitationClass == "map" then
if utilities.is_set (Chapter) then --TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'map') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', Chapter_origin)}); -- add error message
end
Chapter = A['Map'];
Chapter_origin = A:ORIGIN('Map');
ChapterURL = A['MapURL'];
ChapterURL_origin = A:ORIGIN('MapURL');
TransChapter = A['TransMap'];
ScriptChapter = A['ScriptMap']
ScriptChapter_origin = A:ORIGIN('ScriptMap')
ChapterUrlAccess = MapUrlAccess;
ChapterFormat = A['MapFormat'];
Cartography = A['Cartography'];
if utilities.is_set ( Cartography ) then
Cartography = sepc .. " " .. wrap_msg ('cartography', Cartography, use_lowercase);
end
Scale = A['Scale'];
if utilities.is_set ( Scale ) then
Scale = sepc .. " " .. Scale;
end
end
-- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data.
local Series = A['Series'];
if 'episode' == config.CitationClass or 'serial' == config.CitationClass then
local SeriesLink = A['SeriesLink'];
SeriesLink = link_title_ok (SeriesLink, A:ORIGIN ('SeriesLink'), Series, 'series'); -- check for wiki-markup in |series-link= or wiki-markup in |series= when |series-link= is set
local Network = A['Network'];
local Station = A['Station'];
local s, n = {}, {};
-- do common parameters first
if utilities.is_set (Network) then table.insert(n, Network); end
if utilities.is_set (Station) then table.insert(n, Station); end
ID = table.concat(n, sepc .. ' ');
if 'episode' == config.CitationClass then -- handle the oddities that are strictly {{cite episode}}
local Season = A['Season'];
local SeriesNumber = A['SeriesNumber'];
if utilities.is_set (Season) and utilities.is_set (SeriesNumber) then -- these are mutually exclusive so if both are set TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'season') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'seriesno')}); -- add error message
SeriesNumber = ''; -- unset; prefer |season= over |seriesno=
end
-- assemble a table of parts concatenated later into Series
if utilities.is_set (Season) then table.insert(s, wrap_msg ('season', Season, use_lowercase)); end
if utilities.is_set (SeriesNumber) then table.insert(s, wrap_msg ('seriesnum', SeriesNumber, use_lowercase)); end
if utilities.is_set (Issue) then table.insert(s, wrap_msg ('episode', Issue, use_lowercase)); end
Issue = ''; -- unset because this is not a unique parameter
Chapter = Title; -- promote title parameters to chapter
ScriptChapter = ScriptTitle;
ScriptChapter_origin = A:ORIGIN('ScriptTitle');
ChapterLink = TitleLink; -- alias |episode-link=
TransChapter = TransTitle;
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
ChapterURL_origin = URL_origin;
ChapterFormat = Format;
Title = Series; -- promote series to title
TitleLink = SeriesLink;
Series = table.concat(s, sepc .. ' '); -- this is concatenation of season, seriesno, episode number
if utilities.is_set (ChapterLink) and not utilities.is_set (ChapterURL) then -- link but not URL
Chapter = utilities.make_wikilink (ChapterLink, Chapter);
elseif utilities.is_set (ChapterLink) and utilities.is_set (ChapterURL) then -- if both are set, URL links episode;
Series = utilities.make_wikilink (ChapterLink, Series);
end
URL = ''; -- unset
TransTitle = '';
ScriptTitle = '';
Format = '';
else -- now oddities that are cite serial
Issue = ''; -- unset because this parameter no longer supported by the citation/core version of cite serial
Chapter = A['Episode']; -- TODO: make |episode= available to cite episode someday?
if utilities.is_set (Series) and utilities.is_set (SeriesLink) then
Series = utilities.make_wikilink (SeriesLink, Series);
end
Series = utilities.wrap_style ('italic-title', Series); -- series is italicized
end
end
-- end of {{cite episode}} stuff
-- handle type parameter for those CS1 citations that have default values
local TitleType = A['TitleType'];
local Degree = A['Degree'];
if utilities.in_array (config.CitationClass, {'AV-media-notes', 'document', 'interview', 'mailinglist', 'map', 'podcast', 'pressrelease', 'report', 'speech', 'techreport', 'thesis'}) then
TitleType = set_titletype (config.CitationClass, TitleType);
if utilities.is_set (Degree) and "Thesis" == TitleType then -- special case for cite thesis
TitleType = Degree .. ' ' .. cfg.title_types ['thesis']:lower();
end
end
if utilities.is_set (TitleType) then -- if type parameter is specified
TitleType = utilities.substitute ( cfg.messages['type'], TitleType); -- display it in parentheses
-- TODO: Hack on TitleType to fix bunched parentheses problem
end
-- legacy: promote PublicationDate to Date if neither Date nor Year are set.
local Date = A['Date'];
local Date_origin; -- to hold the name of parameter promoted to Date; required for date error messaging
local PublicationDate = A['PublicationDate'];
local Year = A['Year'];
if utilities.is_set (Year) then
validation.year_check (Year); -- returns nothing; emits maint message when |year= doesn't hold a 'year' value
end
if not utilities.is_set (Date) then
Date = Year; -- promote Year to Date
Year = nil; -- make nil so Year as empty string isn't used for CITEREF
if not utilities.is_set (Date) and utilities.is_set (PublicationDate) then -- use PublicationDate when |date= and |year= are not set
Date = PublicationDate; -- promote PublicationDate to Date
PublicationDate = ''; -- unset, no longer needed
Date_origin = A:ORIGIN('PublicationDate'); -- save the name of the promoted parameter
else
Date_origin = A:ORIGIN('Year'); -- save the name of the promoted parameter
end
else
Date_origin = A:ORIGIN('Date'); -- not a promotion; name required for error messaging
end
if PublicationDate == Date then PublicationDate = ''; end -- if PublicationDate is same as Date, don't display in rendered citation
--[[
Go test all of the date-holding parameters for valid MOS:DATE format and make sure that dates are real dates. This must be done before we do COinS because here is where
we get the date used in the metadata.
Date validation supporting code is in Module:Citation/CS1/Date_validation
]]
local DF = is_valid_parameter_value (A['DF'], A:ORIGIN('DF'), cfg.keywords_lists['df'], '');
if not utilities.is_set (DF) then
DF = cfg.global_df; -- local |df= if present overrides global df set by {{use xxx date}} template
end
local ArchiveURL;
local ArchiveDate;
local ArchiveFormat = A['ArchiveFormat'];
local archive_url_timestamp; -- timestamp from wayback machine url
ArchiveURL, ArchiveDate, archive_url_timestamp = archive_url_check (A['ArchiveURL'], A['ArchiveDate'])
ArchiveFormat = style_format (ArchiveFormat, ArchiveURL, 'archive-format', 'archive-url');
ArchiveURL, ArchiveDate = is_unique_archive_url (ArchiveURL, URL, ChapterURL, A:ORIGIN('ArchiveURL'), ArchiveDate); -- add error message when URL or ChapterURL == ArchiveURL
local AccessDate = A['AccessDate'];
local COinS_date = {}; -- holds date info extracted from |date= for the COinS metadata by Module:Date verification
local DoiBroken = A['DoiBroken'];
local Embargo = A['Embargo'];
local anchor_year; -- used in the CITEREF identifier
do -- create defined block to contain local variables error_message, date_parameters_list, mismatch
local error_message = '';
-- AirDate has been promoted to Date so not necessary to check it
local date_parameters_list = {
['access-date'] = {val = AccessDate, name = A:ORIGIN ('AccessDate')},
['archive-date'] = {val = ArchiveDate, name = A:ORIGIN ('ArchiveDate')},
['date'] = {val = Date, name = Date_origin},
['doi-broken-date'] = {val = DoiBroken, name = A:ORIGIN ('DoiBroken')},
['pmc-embargo-date'] = {val = Embargo, name = A:ORIGIN ('Embargo')},
['publication-date'] = {val = PublicationDate, name = A:ORIGIN ('PublicationDate')},
['year'] = {val = Year, name = A:ORIGIN ('Year')},
};
local error_list = {};
anchor_year, Embargo = validation.dates(date_parameters_list, COinS_date, error_list);
if utilities.is_set (Year) and utilities.is_set (Date) then -- both |date= and |year= not normally needed;
validation.year_date_check (Year, A:ORIGIN ('Year'), Date, A:ORIGIN ('Date'), error_list);
end
if 0 == #error_list then -- error free dates only; 0 when error_list is empty
local modified = false; -- flag
if utilities.is_set (DF) then -- if we need to reformat dates
modified = validation.reformat_dates (date_parameters_list, DF); -- reformat to DF format, use long month names if appropriate
end
if true == validation.date_hyphen_to_dash (date_parameters_list) then -- convert hyphens to dashes where appropriate
modified = true;
utilities.set_message ('maint_date_format'); -- hyphens were converted so add maint category
end
-- for those wikis that can and want to have English date names translated to the local language; not supported at en.wiki
if cfg.date_name_auto_xlate_enable and validation.date_name_xlate (date_parameters_list, cfg.date_digit_auto_xlate_enable ) then
utilities.set_message ('maint_date_auto_xlated'); -- add maint cat
modified = true;
end
if modified then -- if the date_parameters_list values were modified
AccessDate = date_parameters_list['access-date'].val; -- overwrite date holding parameters with modified values
ArchiveDate = date_parameters_list['archive-date'].val;
Date = date_parameters_list['date'].val;
DoiBroken = date_parameters_list['doi-broken-date'].val;
PublicationDate = date_parameters_list['publication-date'].val;
end
if archive_url_timestamp and utilities.is_set (ArchiveDate) then
validation.archive_date_check (ArchiveDate, archive_url_timestamp, DF); -- does YYYYMMDD in archive_url_timestamp match date in ArchiveDate
end
else
utilities.set_message ('err_bad_date', {utilities.make_sep_list (#error_list, error_list)}); -- add this error message
end
end -- end of do
if utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) or -- {{cite book}}, {{cite encyclopedia}}; TODO: {{cite conference}} and others?
('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) or -- {{citation}} as an encylopedia citation
('citation' == config.CitationClass and not utilities.is_set (Periodical)) then -- {{citation}} as a book citation
if utilities.is_set (PublicationPlace) then
if not utilities.is_set (PublisherName) then
local date = COinS_date.rftdate and tonumber (COinS_date.rftdate:match ('%d%d%d%d')); -- get year portion of COinS date (because in Arabic numerals); convert string to number
if date and (1850 <= date) then -- location has no publisher; if date is 1850 or later
utilities.set_message ('maint_location_no_publisher'); -- add maint cat
end
else -- PublisherName has a value
if cfg.keywords_xlate['none'] == PublisherName then -- if that value is 'none' (only for book and encyclopedia citations)
PublisherName = ''; -- unset
end
end
end
end
local ID_list = {}; -- sequence table of rendered identifiers
local ID_list_coins = {}; -- table of identifiers and their values from args; key is same as cfg.id_handlers's key
local Class = A['Class']; -- arxiv class identifier
local ID_support = {
{A['ASINTLD'], 'ASIN', 'err_asintld_missing_asin', A:ORIGIN ('ASINTLD')},
{DoiBroken, 'DOI', 'err_doibroken_missing_doi', A:ORIGIN ('DoiBroken')},
{Embargo, 'PMC', 'err_embargo_missing_pmc', A:ORIGIN ('Embargo')},
}
ID_list, ID_list_coins = identifiers.identifier_lists_get (args, {DoiBroken = DoiBroken, ASINTLD = A['ASINTLD'], Embargo = Embargo, Class = Class, Year=anchor_year}, ID_support);
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, {{cite ssrn}}, before generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- |arxiv= or |eprint= required for cite arxiv; |biorxiv=, |citeseerx=, |medrxiv=, |ssrn= required for their templates
if not (args[cfg.id_handlers[config.CitationClass:upper()].parameters[1]] or -- can't use ID_list_coins k/v table here because invalid parameters omitted
args[cfg.id_handlers[config.CitationClass:upper()].parameters[2]]) then -- which causes unexpected parameter missing error message
utilities.set_message ('err_' .. config.CitationClass .. '_missing'); -- add error message
end
Periodical = ({['arxiv'] = 'arXiv', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['medrxiv'] = 'medRxiv', ['ssrn'] = 'Social Science Research Network'})[config.CitationClass];
end
-- Link the title of the work if no |url= was provided, but we have a |pmc= or a |doi= with |doi-access=free
if config.CitationClass == "journal" and not utilities.is_set (URL) and not utilities.is_set (TitleLink) and not utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) then -- TODO: remove 'none' once existing citations have been switched to 'off', so 'none' can be used as token for "no title" instead
if 'none' ~= cfg.keywords_xlate[auto_select] then -- if auto-linking not disabled
if identifiers.auto_link_urls[auto_select] then -- manual selection
URL = identifiers.auto_link_urls[auto_select]; -- set URL to be the same as identifier's external link
URL_origin = cfg.id_handlers[auto_select:upper()].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title=
elseif identifiers.auto_link_urls['pmc'] then -- auto-select PMC
URL = identifiers.auto_link_urls['pmc']; -- set URL to be the same as the PMC external link if not embargoed
URL_origin = cfg.id_handlers['PMC'].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title=
elseif identifiers.auto_link_urls['doi'] then -- auto-select DOI
URL = identifiers.auto_link_urls['doi'];
URL_origin = cfg.id_handlers['DOI'].parameters[1];
end
end
if utilities.is_set (URL) then -- set when using an identifier-created URL
if utilities.is_set (AccessDate) then -- |access-date= requires |url=; identifier-created URL is not |url=
utilities.set_message ('err_accessdate_missing_url'); -- add an error message
AccessDate = ''; -- unset
end
if utilities.is_set (ArchiveURL) then -- |archive-url= requires |url=; identifier-created URL is not |url=
utilities.set_message ('err_archive_missing_url'); -- add an error message
ArchiveURL = ''; -- unset
end
end
end
-- At this point fields may be nil if they weren't specified in the template use. We can use that fact.
-- Test if citation has no title
if not utilities.is_set (Title) and not utilities.is_set (TransTitle) and not utilities.is_set (ScriptTitle) then -- has special case for cite episode
utilities.set_message ('err_citation_missing_title', {'episode' == config.CitationClass and 'series' or 'title'});
end
if utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) and
utilities.in_array (config.CitationClass, {'journal', 'citation'}) and
(utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and
('journal' == Periodical_origin or 'script-journal' == ScriptPeriodical_origin) then -- special case for journal cites
Title = ''; -- set title to empty string
utilities.set_message ('maint_untitled'); -- add maint cat
end
-- COinS metadata (see <http://ocoins.info/>) for automated parsing of citation information.
-- handle the oddity that is cite encyclopedia and {{citation |encyclopedia=something}}. Here we presume that
-- when Periodical, Title, and Chapter are all set, then Periodical is the book (encyclopedia) title, Title
-- is the article title, and Chapter is a section within the article. So, we remap
local coins_chapter = Chapter; -- default assuming that remapping not required
local coins_title = Title; -- et tu
if 'encyclopaedia' == config.CitationClass or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then
if utilities.is_set (Chapter) and utilities.is_set (Title) and utilities.is_set (Periodical) then -- if all are used then
coins_chapter = Title; -- remap
coins_title = Periodical;
end
end
local coins_author = a; -- default for coins rft.au
if 0 < #c then -- but if contributor list
coins_author = c; -- use that instead
end
-- this is the function call to COinS()
local OCinSoutput = metadata.COinS({
['Periodical'] = utilities.strip_apostrophe_markup (Periodical), -- no markup in the metadata
['Encyclopedia'] = Encyclopedia, -- just a flag; content ignored by ~/COinS
['Chapter'] = metadata.make_coins_title (coins_chapter, ScriptChapter), -- Chapter and ScriptChapter stripped of bold / italic / accept-as-written markup
['Degree'] = Degree; -- cite thesis only
['Title'] = metadata.make_coins_title (coins_title, ScriptTitle), -- Title and ScriptTitle stripped of bold / italic / accept-as-written markup
['PublicationPlace'] = PublicationPlace,
['Date'] = COinS_date.rftdate, -- COinS_date.* has correctly formatted date values if Date is valid;
['Season'] = COinS_date.rftssn,
['Quarter'] = COinS_date.rftquarter,
['Chron'] = COinS_date.rftchron,
['Series'] = Series,
['Volume'] = Volume,
['Issue'] = Issue,
['ArticleNumber'] = ArticleNumber,
['Pages'] = coins_pages or metadata.get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At, QuotePage, QuotePages}, 7)), -- pages stripped of external links
['Edition'] = Edition,
['PublisherName'] = PublisherName or Newsgroup, -- any apostrophe markup already removed from PublisherName
['URL'] = first_set ({ChapterURL, URL}, 2),
['Authors'] = coins_author,
['ID_list'] = ID_list_coins,
['RawPage'] = this_page.prefixedText,
}, config.CitationClass);
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, and {{cite ssrn}} AFTER generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- we have set rft.jtitle in COinS to arXiv, bioRxiv, CiteSeerX, medRxiv, or ssrn now unset so it isn't displayed
Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal
end
-- special case for cite newsgroup. Do this after COinS because we are modifying Publishername to include some static text
if 'newsgroup' == config.CitationClass and utilities.is_set (Newsgroup) then
PublisherName = utilities.substitute (cfg.messages['newsgroup'], external_link( 'news:' .. Newsgroup, Newsgroup, Newsgroup_origin, nil ));
end
local Editors;
local EditorCount; -- used only for choosing {ed.) or (eds.) annotation at end of editor name-list
local Contributors; -- assembled contributors name list
local contributor_etal;
local Translators; -- assembled translators name list
local translator_etal;
local t = {}; -- translators list from |translator-lastn= / translator-firstn= pairs
t = extract_names (args, 'TranslatorList'); -- fetch translator list from |translatorn= / |translator-lastn=, -firstn=, -linkn=, -maskn=
local Interviewers;
local interviewers_list = {};
interviewers_list = extract_names (args, 'InterviewerList'); -- process preferred interviewers parameters
local interviewer_etal;
-- Now perform various field substitutions.
-- We also add leading spaces and surrounding markup and punctuation to the
-- various parts of the citation, but only when they are non-nil.
do
local last_first_list;
local control = {
format = NameListStyle, -- empty string, '&', 'amp', 'and', or 'vanc'
maximum = nil, -- as if display-authors or display-editors not set
mode = Mode
};
do -- do editor name list first because the now unsupported coauthors used to modify control table
local display_names, param = display_names_select (cfg.global_cs1_config_t['DisplayEditors'], A['DisplayEditors'], A:ORIGIN ('DisplayEditors'), #e);
control.maximum, editor_etal = get_display_names (display_names, #e, 'editors', editor_etal, param);
Editors, EditorCount = list_people (control, e, editor_etal);
if 1 == EditorCount and (true == editor_etal or 1 < #e) then -- only one editor displayed but includes etal then
EditorCount = 2; -- spoof to display (eds.) annotation
end
end
do -- now do interviewers
local display_names, param = display_names_select (cfg.global_cs1_config_t['DisplayInterviewers'], A['DisplayInterviewers'], A:ORIGIN ('DisplayInterviewers'), #interviewers_list);
control.maximum, interviewer_etal = get_display_names (display_names, #interviewers_list, 'interviewers', interviewer_etal, param);
Interviewers = list_people (control, interviewers_list, interviewer_etal);
end
do -- now do translators
local display_names, param = display_names_select (cfg.global_cs1_config_t['DisplayTranslators'], A['DisplayTranslators'], A:ORIGIN ('DisplayTranslators'), #t);
control.maximum, translator_etal = get_display_names (display_names, #t, 'translators', translator_etal, param);
Translators = list_people (control, t, translator_etal);
end
do -- now do contributors
local display_names, param = display_names_select (cfg.global_cs1_config_t['DisplayContributors'], A['DisplayContributors'], A:ORIGIN ('DisplayContributors'), #c);
control.maximum, contributor_etal = get_display_names (display_names, #c, 'contributors', contributor_etal, param);
Contributors = list_people (control, c, contributor_etal);
end
do -- now do authors
local display_names, param = display_names_select (cfg.global_cs1_config_t['DisplayAuthors'], A['DisplayAuthors'], A:ORIGIN ('DisplayAuthors'), #a, author_etal);
control.maximum, author_etal = get_display_names (display_names, #a, 'authors', author_etal, param);
last_first_list = list_people (control, a, author_etal);
if utilities.is_set (Authors) then
Authors, author_etal = name_has_etal (Authors, author_etal, false, 'authors'); -- find and remove variations on et al.
if author_etal then
Authors = Authors .. ' ' .. cfg.messages['et al']; -- add et al. to authors parameter
end
else
Authors = last_first_list; -- either an author name list or an empty string
end
end -- end of do
if utilities.is_set (Authors) and utilities.is_set (Collaboration) then
Authors = Authors .. ' (' .. Collaboration .. ')'; -- add collaboration after et al.
end
end
local ConferenceFormat = A['ConferenceFormat'];
local ConferenceURL = A['ConferenceURL'];
ConferenceFormat = style_format (ConferenceFormat, ConferenceURL, 'conference-format', 'conference-url');
Format = style_format (Format, URL, 'format', 'url');
-- special case for chapter format so no error message or cat when chapter not supported
if not (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia))) then
ChapterFormat = style_format (ChapterFormat, ChapterURL, 'chapter-format', 'chapter-url');
end
if not utilities.is_set (URL) then
if utilities.in_array (config.CitationClass, {"web", "podcast", "mailinglist"}) or -- |url= required for cite web, cite podcast, and cite mailinglist
('citation' == config.CitationClass and ('website' == Periodical_origin or 'script-website' == ScriptPeriodical_origin)) then -- and required for {{citation}} with |website= or |script-website=
utilities.set_message ('err_cite_web_url');
end
-- do we have |accessdate= without either |url= or |chapter-url=?
if utilities.is_set (AccessDate) and not utilities.is_set (ChapterURL) then -- ChapterURL may be set when URL is not set;
utilities.set_message ('err_accessdate_missing_url');
AccessDate = '';
end
end
local UrlStatus = is_valid_parameter_value (A['UrlStatus'], A:ORIGIN('UrlStatus'), cfg.keywords_lists['url-status'], '');
local OriginalURL
local OriginalURL_origin
local OriginalFormat
local OriginalAccess;
UrlStatus = UrlStatus:lower(); -- used later when assembling archived text
if utilities.is_set ( ArchiveURL ) then
if utilities.is_set (ChapterURL) then -- if chapter-url= is set apply archive url to it
OriginalURL = ChapterURL; -- save copy of source chapter's url for archive text
OriginalURL_origin = ChapterURL_origin; -- name of |chapter-url= parameter for error messages
OriginalFormat = ChapterFormat; -- and original |chapter-format=
if 'live' ~= UrlStatus then
ChapterURL = ArchiveURL -- swap-in the archive's URL
ChapterURL_origin = A:ORIGIN('ArchiveURL') -- name of |archive-url= parameter for error messages
ChapterFormat = ArchiveFormat or ''; -- swap in archive's format
ChapterUrlAccess = nil; -- restricted access levels do not make sense for archived URLs
end
elseif utilities.is_set (URL) then
OriginalURL = URL; -- save copy of original source URL
OriginalURL_origin = URL_origin; -- name of URL parameter for error messages
OriginalFormat = Format; -- and original |format=
OriginalAccess = UrlAccess;
if 'live' ~= UrlStatus then -- if URL set then |archive-url= applies to it
URL = ArchiveURL -- swap-in the archive's URL
URL_origin = A:ORIGIN('ArchiveURL') -- name of archive URL parameter for error messages
Format = ArchiveFormat or ''; -- swap in archive's format
UrlAccess = nil; -- restricted access levels do not make sense for archived URLs
end
end
elseif utilities.is_set (UrlStatus) then -- if |url-status= is set when |archive-url= is not set
utilities.set_message ('maint_url_status'); -- add maint cat
end
if utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or -- if any of the 'periodical' cites except encyclopedia
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) then
local chap_param;
if utilities.is_set (Chapter) then -- get a parameter name from one of these chapter related meta-parameters
chap_param = A:ORIGIN ('Chapter')
elseif utilities.is_set (TransChapter) then
chap_param = A:ORIGIN ('TransChapter')
elseif utilities.is_set (ChapterURL) then
chap_param = A:ORIGIN ('ChapterURL')
elseif utilities.is_set (ScriptChapter) then
chap_param = ScriptChapter_origin;
else utilities.is_set (ChapterFormat)
chap_param = A:ORIGIN ('ChapterFormat')
end
if utilities.is_set (chap_param) then -- if we found one
utilities.set_message ('err_chapter_ignored', {chap_param}); -- add error message
Chapter = ''; -- and set them to empty string to be safe with concatenation
TransChapter = '';
ChapterURL = '';
ScriptChapter = '';
ChapterFormat = '';
end
else -- otherwise, format chapter / article title
local no_quotes = false; -- default assume that we will be quoting the chapter parameter value
if utilities.is_set (Contribution) and 0 < #c then -- if this is a contribution with contributor(s)
if utilities.in_array (Contribution:lower(), cfg.keywords_lists.contribution) then -- and a generic contribution title
no_quotes = true; -- then render it unquoted
end
end
Chapter = format_chapter_title (ScriptChapter, ScriptChapter_origin, Chapter, Chapter_origin, TransChapter, TransChapter_origin, ChapterURL, ChapterURL_origin, no_quotes, ChapterUrlAccess); -- Contribution is also in Chapter
if utilities.is_set (Chapter) then
Chapter = Chapter .. ChapterFormat ;
if 'map' == config.CitationClass and utilities.is_set (TitleType) then
Chapter = Chapter .. ' ' .. TitleType; -- map annotation here; not after title
end
Chapter = Chapter .. sepc .. ' ';
elseif utilities.is_set (ChapterFormat) then -- |chapter= not set but |chapter-format= is so ...
Chapter = ChapterFormat .. sepc .. ' '; -- ... ChapterFormat has error message, we want to see it
end
end
-- Format main title
local plain_title = false;
local accept_title;
Title, accept_title = utilities.has_accept_as_written (Title, true); -- remove accept-this-as-written markup when it wraps all of <Title>
if accept_title and ('' == Title) then -- only support forced empty for now "(())"
Title = cfg.messages['notitle']; -- replace by predefined "No title" message
-- TODO: utilities.set_message ( 'err_redundant_parameters', ...); -- issue proper error message instead of muting
ScriptTitle = ''; -- just mute for now
TransTitle = ''; -- just mute for now
plain_title = true; -- suppress text decoration for descriptive title
utilities.set_message ('maint_untitled'); -- add maint cat
end
if not accept_title then -- <Title> not wrapped in accept-as-written markup
if '...' == Title:sub (-3) then -- if ellipsis is the last three characters of |title=
Title = Title:gsub ('(%.%.%.)%.+$', '%1'); -- limit the number of dots to three
elseif not mw.ustring.find (Title, '%.%s*%a%.$') and -- end of title is not a 'dot-(optional space-)letter-dot' initialism ...
not mw.ustring.find (Title, '%s+%a%.$') then -- ...and not a 'space-letter-dot' initial (''Allium canadense'' L.)
Title = mw.ustring.gsub(Title, '%' .. sepc .. '$', ''); -- remove any trailing separator character; sepc and ms.ustring() here for languages that use multibyte separator characters
end
if utilities.is_set (ArchiveURL) and is_archived_copy (Title) then
utilities.set_message ('maint_archived_copy'); -- add maintenance category before we modify the content of Title
end
if is_generic ('generic_titles', Title) then
utilities.set_message ('err_generic_title'); -- set an error message
end
end
if (not plain_title) and (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'document', 'pressrelease', 'podcast', 'newsgroup', 'mailinglist', 'interview', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) or
('map' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)))) then -- special case for cite map when the map is in a periodical treat as an article
Title = kern_quotes (Title); -- if necessary, separate title's leading and trailing quote marks from module provided quote marks
Title = utilities.wrap_style ('quoted-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle );
elseif plain_title or ('report' == config.CitationClass) then -- no styling for cite report and descriptive titles (otherwise same as above)
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); -- for cite report, use this form for trans-title
else
Title = utilities.wrap_style ('italic-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-italic-title', TransTitle);
end
if utilities.is_set (TransTitle) then
if utilities.is_set (Title) then
TransTitle = " " .. TransTitle;
else
utilities.set_message ('err_trans_missing_title', {'title'});
end
end
if utilities.is_set (Title) then -- TODO: is this the right place to be making Wikisource URLs?
if utilities.is_set (TitleLink) and utilities.is_set (URL) then
utilities.set_message ('err_wikilink_in_url'); -- set an error message because we can't have both
TitleLink = ''; -- unset
end
if not utilities.is_set (TitleLink) and utilities.is_set (URL) then
Title = external_link (URL, Title, URL_origin, UrlAccess) .. TransTitle .. Format;
URL = ''; -- unset these because no longer needed
Format = "";
elseif utilities.is_set (TitleLink) and not utilities.is_set (URL) then
local ws_url;
ws_url = wikisource_url_make (TitleLink); -- ignore ws_label return; not used here
if ws_url then
Title = external_link (ws_url, Title .. ' ', 'ws link in title-link'); -- space char after Title to move icon away from italic text; TODO: a better way to do this?
Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], TitleLink, Title});
Title = Title .. TransTitle;
else
Title = utilities.make_wikilink (TitleLink, Title) .. TransTitle;
end
else
local ws_url, ws_label, L; -- Title has italic or quote markup by the time we get here which causes is_wikilink() to return 0 (not a wikilink)
ws_url, ws_label, L = wikisource_url_make (Title:gsub('^[\'"]*(.-)[\'"]*$', '%1')); -- make ws URL from |title= interwiki link (strip italic or quote markup); link portion L becomes tooltip label
if ws_url then
Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup
Title = external_link (ws_url, Title .. ' ', 'ws link in title'); -- space char after Title to move icon away from italic text; TODO: a better way to do this?
Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, Title});
Title = Title .. TransTitle;
else
Title = Title .. TransTitle;
end
end
else
Title = TransTitle;
end
if utilities.is_set (Place) then
Place = " " .. wrap_msg ('written', Place, use_lowercase) .. sepc .. " ";
end
local ConferenceURL_origin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL
if utilities.is_set (Conference) then
if utilities.is_set (ConferenceURL) then
Conference = external_link( ConferenceURL, Conference, ConferenceURL_origin, nil );
end
Conference = sepc .. " " .. Conference .. ConferenceFormat;
elseif utilities.is_set (ConferenceURL) then
Conference = sepc .. " " .. external_link( ConferenceURL, nil, ConferenceURL_origin, nil );
end
local Position = '';
if not utilities.is_set (Position) then
local Minutes = A['Minutes'];
local Time = A['Time'];
if utilities.is_set (Minutes) then
if utilities.is_set (Time) then --TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'minutes') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'time')});
end
Position = " " .. Minutes .. " " .. cfg.messages['minutes'];
else
if utilities.is_set (Time) then
local TimeCaption = A['TimeCaption']
if not utilities.is_set (TimeCaption) then
TimeCaption = cfg.messages['event'];
if sepc ~= '.' then
TimeCaption = TimeCaption:lower();
end
end
Position = " " .. TimeCaption .. " " .. Time;
end
end
else
Position = " " .. Position;
At = '';
end
Page, Pages, Sheet, Sheets = format_pages_sheets (Page, Pages, Sheet, Sheets, config.CitationClass, Periodical_origin, sepc, NoPP, use_lowercase);
At = utilities.is_set (At) and (sepc .. " " .. At) or "";
Position = utilities.is_set (Position) and (sepc .. " " .. Position) or "";
if config.CitationClass == 'map' then
local Sections = A['Sections']; -- Section (singular) is an alias of Chapter so set earlier
local Inset = A['Inset'];
if utilities.is_set ( Inset ) then
Inset = sepc .. " " .. wrap_msg ('inset', Inset, use_lowercase);
end
if utilities.is_set ( Sections ) then
Section = sepc .. " " .. wrap_msg ('sections', Sections, use_lowercase);
elseif utilities.is_set ( Section ) then
Section = sepc .. " " .. wrap_msg ('section', Section, use_lowercase);
end
At = At .. Inset .. Section;
end
local Others = A['Others'];
if utilities.is_set (Others) and 0 == #a and 0 == #e then -- add maint cat when |others= has value and used without |author=, |editor=
if config.CitationClass == "AV-media-notes"
or config.CitationClass == "audio-visual" then -- special maint for AV/M which has a lot of 'false' positives right now
utilities.set_message ('maint_others_avm')
else
utilities.set_message ('maint_others');
end
end
Others = utilities.is_set (Others) and (sepc .. " " .. Others) or "";
if utilities.is_set (Translators) then
Others = safe_join ({sepc .. ' ', wrap_msg ('translated', Translators, use_lowercase), Others}, sepc);
end
if utilities.is_set (Interviewers) then
Others = safe_join ({sepc .. ' ', wrap_msg ('interview', Interviewers, use_lowercase), Others}, sepc);
end
local TitleNote = A['TitleNote'];
TitleNote = utilities.is_set (TitleNote) and (sepc .. " " .. TitleNote) or "";
if utilities.is_set (Edition) then
if Edition:match ('%f[%a][Ee]d%n?%.?$') or Edition:match ('%f[%a][Ee]dition$') then -- Ed, ed, Ed., ed., Edn, edn, Edn., edn.
utilities.set_message ('err_extra_text_edition'); -- add error message
end
Edition = " " .. wrap_msg ('edition', Edition);
else
Edition = '';
end
Series = utilities.is_set (Series) and wrap_msg ('series', {sepc, Series}) or ""; -- not the same as SeriesNum
local Agency = A['Agency'] or ''; -- |agency= is supported by {{cite magazine}}, {{cite news}}, {{cite press release}}, {{cite web}}, and certain {{citation}} templates
if utilities.is_set (Agency) then -- this testing done here because {{citation}} supports 'news' citations
if utilities.in_array (config.CitationClass, {'magazine', 'news', 'pressrelease', 'web'}) or ('citation' == config.CitationClass and utilities.in_array (Periodical_origin, {"magazine", "newspaper", "work"})) then
Agency = wrap_msg ('agency', {sepc, Agency}); -- format for rendering
else
Agency = ''; -- unset; not supported
utilities.set_message ('err_parameter_ignored', {'agency'}); -- add error message
end
end
Volume = format_volume_issue (Volume, Issue, ArticleNumber, config.CitationClass, Periodical_origin, sepc, use_lowercase);
if utilities.is_set (AccessDate) then
local retrv_text = " " .. cfg.messages['retrieved']
AccessDate = nowrap_date (AccessDate); -- wrap in nowrap span if date in appropriate format
if (sepc ~= ".") then retrv_text = retrv_text:lower() end -- if mode is cs2, lower case
AccessDate = utilities.substitute (retrv_text, AccessDate); -- add retrieved text
AccessDate = utilities.substitute (cfg.presentation['accessdate'], {sepc, AccessDate}); -- allow editors to hide accessdates
end
if utilities.is_set (ID) then ID = sepc .. " " .. ID; end
local Docket = A['Docket'];
if "thesis" == config.CitationClass and utilities.is_set (Docket) then
ID = sepc .. " Docket " .. Docket .. ID;
end
if "report" == config.CitationClass and utilities.is_set (Docket) then -- for cite report when |docket= is set
ID = sepc .. ' ' .. Docket; -- overwrite ID even if |id= is set
end
if utilities.is_set (URL) then
URL = " " .. external_link( URL, nil, URL_origin, UrlAccess );
end
-- We check length of PostScript here because it will have been nuked by
-- the quote parameters. We'd otherwise emit a message even if there wasn't
-- a displayed postscript.
-- TODO: Should the max size (1) be configurable?
-- TODO: Should we check a specific pattern?
if utilities.is_set(PostScript) and mw.ustring.len(PostScript) > 1 then
utilities.set_message ('maint_postscript')
end
local Archived;
if utilities.is_set (ArchiveURL) then
if not utilities.is_set (ArchiveDate) then -- ArchiveURL set but ArchiveDate not set
utilities.set_message ('err_archive_missing_date'); -- emit an error message
ArchiveURL = ''; -- empty string for concatenation
ArchiveDate = ''; -- empty string for concatenation
end
else
if utilities.is_set (ArchiveDate) then -- ArchiveURL not set but ArchiveDate is set
utilities.set_message ('err_archive_date_missing_url'); -- emit an error message
ArchiveURL = ''; -- empty string for concatenation
ArchiveDate = ''; -- empty string for concatenation
end
end
if utilities.is_set (ArchiveURL) then
local arch_text;
if "live" == UrlStatus then
arch_text = cfg.messages['archived'];
if sepc ~= "." then arch_text = arch_text:lower() end
if utilities.is_set (ArchiveDate) then
Archived = sepc .. ' ' .. utilities.substitute ( cfg.messages['archived-live'],
{external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil) .. ArchiveFormat, ArchiveDate } );
else
Archived = '';
end
if not utilities.is_set (OriginalURL) then
utilities.set_message ('err_archive_missing_url');
Archived = ''; -- empty string for concatenation
end
elseif utilities.is_set (OriginalURL) then -- UrlStatus is empty, 'dead', 'unfit', 'usurped', 'bot: unknown'
if utilities.in_array (UrlStatus, {'unfit', 'usurped', 'bot: unknown'}) then
arch_text = cfg.messages['archived-unfit'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. ' ' .. arch_text .. ArchiveDate; -- format already styled
if 'bot: unknown' == UrlStatus then
utilities.set_message ('maint_bot_unknown'); -- and add a category if not already added
else
utilities.add_prop_cat ('unfit'); -- and add a category if not already added
end
else -- UrlStatus is empty, 'dead'
arch_text = cfg.messages['archived-dead'];
if sepc ~= "." then arch_text = arch_text:lower() end
if utilities.is_set (ArchiveDate) then
Archived = sepc .. " " .. utilities.substitute ( arch_text,
{ external_link( OriginalURL, cfg.messages['original'], OriginalURL_origin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled
else
Archived = ''; -- unset for concatenation
end
end
else -- OriginalUrl not set
utilities.set_message ('err_archive_missing_url');
Archived = ''; -- empty string for concatenation
end
elseif utilities.is_set (ArchiveFormat) then
Archived = ArchiveFormat; -- if set and ArchiveURL not set ArchiveFormat has error message
else
Archived = '';
end
local TranscriptURL = A['TranscriptURL']
local TranscriptFormat = A['TranscriptFormat'];
TranscriptFormat = style_format (TranscriptFormat, TranscriptURL, 'transcript-format', 'transcripturl');
local Transcript = A['Transcript'];
local TranscriptURL_origin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL
if utilities.is_set (Transcript) then
if utilities.is_set (TranscriptURL) then
Transcript = external_link( TranscriptURL, Transcript, TranscriptURL_origin, nil );
end
Transcript = sepc .. ' ' .. Transcript .. TranscriptFormat;
elseif utilities.is_set (TranscriptURL) then
Transcript = external_link( TranscriptURL, nil, TranscriptURL_origin, nil );
end
local Publisher;
if utilities.is_set (PublicationDate) then
PublicationDate = wrap_msg ('published', PublicationDate);
end
if utilities.is_set (PublisherName) then
if utilities.is_set (PublicationPlace) then
Publisher = sepc .. " " .. PublicationPlace .. ": " .. PublisherName .. PublicationDate;
else
Publisher = sepc .. " " .. PublisherName .. PublicationDate;
end
elseif utilities.is_set (PublicationPlace) then
Publisher= sepc .. " " .. PublicationPlace .. PublicationDate;
else
Publisher = PublicationDate;
end
-- Several of the above rely upon detecting this as nil, so do it last.
if (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (TransPeriodical)) then
if utilities.is_set (Title) or utilities.is_set (TitleNote) then
Periodical = sepc .. " " .. format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin);
else
Periodical = format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin);
end
end
local Language = A['Language'];
if utilities.is_set (Language) then
Language = language_parameter (Language); -- format, categories, name from ISO639-1, etc.
else
Language=''; -- language not specified so make sure this is an empty string;
--[[ TODO: need to extract the wrap_msg from language_parameter
so that we can solve parentheses bunching problem with Format/Language/TitleType
]]
end
--[[
Handle the oddity that is cite speech. This code overrides whatever may be the value assigned to TitleNote (through |department=) and forces it to be " (Speech)" so that
the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided).
]]
if "speech" == config.CitationClass then -- cite speech only
TitleNote = TitleType; -- move TitleType to TitleNote so that it renders ahead of |event=
TitleType = ''; -- and unset
if utilities.is_set (Periodical) then -- if Periodical, perhaps because of an included |website= or |journal= parameter
if utilities.is_set (Conference) then -- and if |event= is set
Conference = Conference .. sepc .. " "; -- then add appropriate punctuation to the end of the Conference variable before rendering
end
end
end
-- Piece all bits together at last. Here, all should be non-nil.
-- We build things this way because it is more efficient in LUA
-- not to keep reassigning to the same string variable over and over.
local tcommon;
local tcommon2; -- used for book cite when |contributor= is set
if utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (Periodical) then -- special cases for book cites
if utilities.is_set (Contributors) then -- when we are citing foreword, preface, introduction, etc.
tcommon = safe_join ({Title, TitleNote}, sepc); -- author and other stuff will come after this and before tcommon2
tcommon2 = safe_join ({TitleType, Series, Language, Volume, Others, Edition, Publisher}, sepc);
else
tcommon = safe_join ({Title, TitleNote, TitleType, Series, Language, Volume, Others, Edition, Publisher}, sepc);
end
elseif 'map' == config.CitationClass then -- special cases for cite map
if utilities.is_set (Chapter) then -- map in a book; TitleType is part of Chapter
tcommon = safe_join ({Title, Edition, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc);
elseif utilities.is_set (Periodical) then -- map in a periodical
tcommon = safe_join ({Title, TitleType, Periodical, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc);
else -- a sheet or stand-alone map
tcommon = safe_join ({Title, TitleType, Edition, Scale, Series, Language, Cartography, Others, Publisher}, sepc);
end
elseif 'episode' == config.CitationClass then -- special case for cite episode
tcommon = safe_join ({Title, TitleNote, TitleType, Series, Language, Edition, Publisher}, sepc);
else -- all other CS1 templates
tcommon = safe_join ({Title, TitleNote, Conference, Periodical, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc);
end
if #ID_list > 0 then
ID_list = safe_join( { sepc .. " ", table.concat( ID_list, sepc .. " " ), ID }, sepc );
else
ID_list = ID;
end
local Via = A['Via'];
Via = utilities.is_set (Via) and wrap_msg ('via', Via) or '';
local idcommon;
if 'audio-visual' == config.CitationClass or 'episode' == config.CitationClass then -- special case for cite AV media & cite episode position transcript
idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Quote }, sepc );
else
idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Quote }, sepc );
end
local text;
local pgtext = Position .. Sheet .. Sheets .. Page .. Pages .. At;
local OrigDate = A['OrigDate'];
OrigDate = utilities.is_set (OrigDate) and wrap_msg ('origdate', OrigDate) or '';
if utilities.is_set (Date) then
if utilities.is_set (Authors) or utilities.is_set (Editors) then -- date follows authors or editors when authors not set
Date = " (" .. Date .. ")" .. OrigDate .. sepc .. " "; -- in parentheses
else -- neither of authors and editors set
if (string.sub(tcommon, -1, -1) == sepc) then -- if the last character of tcommon is sepc
Date = " " .. Date .. OrigDate; -- Date does not begin with sepc
else
Date = sepc .. " " .. Date .. OrigDate; -- Date begins with sepc
end
end
end
if utilities.is_set (Authors) then
if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Authors termination
Authors = terminate_name_list (Authors, sepc); -- when no date, terminate with 0 or 1 sepc and a space
end
if utilities.is_set (Editors) then
local in_text = '';
local post_text = '';
if utilities.is_set (Chapter) and 0 == #c then
in_text = cfg.messages['in'] .. ' ';
if (sepc ~= '.') then
in_text = in_text:lower(); -- lowercase for cs2
end
end
if EditorCount <= 1 then
post_text = ' (' .. cfg.messages['editor'] .. ')'; -- be consistent with no-author, no-date case
else
post_text = ' (' .. cfg.messages['editors'] .. ')';
end
Editors = terminate_name_list (in_text .. Editors .. post_text, sepc); -- terminate with 0 or 1 sepc and a space
end
if utilities.is_set (Contributors) then -- book cite and we're citing the intro, preface, etc.
local by_text = sepc .. ' ' .. cfg.messages['by'] .. ' ';
if (sepc ~= '.') then by_text = by_text:lower() end -- lowercase for cs2
Authors = by_text .. Authors; -- author follows title so tweak it here
if utilities.is_set (Editors) and utilities.is_set (Date) then -- when Editors make sure that Authors gets terminated
Authors = terminate_name_list (Authors, sepc); -- terminate with 0 or 1 sepc and a space
end
if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Contributors termination
Contributors = terminate_name_list (Contributors, sepc); -- terminate with 0 or 1 sepc and a space
end
text = safe_join( {Contributors, Date, Chapter, tcommon, Authors, Place, Editors, tcommon2, pgtext, idcommon }, sepc );
else
text = safe_join( {Authors, Date, Chapter, Place, Editors, tcommon, pgtext, idcommon }, sepc );
end
elseif utilities.is_set (Editors) then
if utilities.is_set (Date) then
if EditorCount <= 1 then
Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editor'];
else
Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editors'];
end
else
if EditorCount <= 1 then
Editors = Editors .. " (" .. cfg.messages['editor'] .. ")" .. sepc .. " "
else
Editors = Editors .. " (" .. cfg.messages['editors'] .. ")" .. sepc .. " "
end
end
text = safe_join( {Editors, Date, Chapter, Place, tcommon, pgtext, idcommon}, sepc );
else
if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then
text = safe_join( {Chapter, Place, tcommon, pgtext, Date, idcommon}, sepc );
else
text = safe_join( {Chapter, Place, tcommon, Date, pgtext, idcommon}, sepc );
end
end
if utilities.is_set (PostScript) and PostScript ~= sepc then
text = safe_join( {text, sepc}, sepc ); -- Deals with italics, spaces, etc.
if '.' == sepc then -- remove final seperator if present
text = text:gsub ('%' .. sepc .. '$', ''); -- dot must be escaped here
else
text = mw.ustring.gsub (text, sepc .. '$', ''); -- using ustring for non-dot sepc (likely a non-Latin character)
end
end
text = safe_join( {text, PostScript}, sepc );
-- Now enclose the whole thing in a <cite> element
local options_t = {};
options_t.class = cite_class_attribute_make (config.CitationClass, Mode);
local Ref = is_valid_parameter_value (A['Ref'], A:ORIGIN('Ref'), cfg.keywords_lists['ref'], nil, true); -- nil when |ref=harv; A['Ref'] else
if 'none' ~= cfg.keywords_xlate[(Ref and Ref:lower()) or ''] then
local namelist_t = {}; -- holds selected contributor, author, editor name list
local year = first_set ({Year, anchor_year}, 2); -- Year first for legacy citations and for YMD dates that require disambiguation
if #c > 0 then -- if there is a contributor list
namelist_t = c; -- select it
elseif #a > 0 then -- or an author list
namelist_t = a;
elseif #e > 0 then -- or an editor list
namelist_t = e;
end
local citeref_id;
if #namelist_t > 0 then -- if there are names in namelist_t
citeref_id = make_citeref_id (namelist_t, year); -- go make the CITEREF anchor
if mw.uri.anchorEncode (citeref_id) == ((Ref and mw.uri.anchorEncode (Ref)) or '') then -- Ref may already be encoded (by {{sfnref}}) so citeref_id must be encoded before comparison
utilities.set_message ('maint_ref_duplicates_default');
end
else
citeref_id = ''; -- unset
end
options_t.id = Ref or citeref_id;
end
if string.len (text:gsub('%b<>', '')) <= 2 then -- remove html and html-like tags; then get length of what remains;
z.error_cats_t = {}; -- blank the categories list
z.error_msgs_t = {}; -- blank the error messages list
OCinSoutput = nil; -- blank the metadata string
text = ''; -- blank the the citation
utilities.set_message ('err_empty_citation'); -- set empty citation message and category
end
local render_t = {}; -- here we collect the final bits for concatenation into the rendered citation
if utilities.is_set (options_t.id) then -- here we wrap the rendered citation in <cite ...>...</cite> tags
table.insert (render_t, utilities.substitute (cfg.presentation['cite-id'], {mw.uri.anchorEncode(options_t.id), mw.text.nowiki(options_t.class), text})); -- when |ref= is set or when there is a namelist
else
table.insert (render_t, utilities.substitute (cfg.presentation['cite'], {mw.text.nowiki(options_t.class), text})); -- when |ref=none or when namelist_t empty and |ref= is missing or is empty
end
if OCinSoutput then -- blanked when citation is 'empty' so don't bother to add boilerplate metadata span
table.insert (render_t, utilities.substitute (cfg.presentation['ocins'], OCinSoutput)); -- format and append metadata to the citation
end
local template_name = ('citation' == config.CitationClass) and 'citation' or 'cite ' .. (cfg.citation_class_map_t[config.CitationClass] or config.CitationClass);
local template_link = '[[Template:' .. template_name .. '|' .. template_name .. ']]';
local msg_prefix = '<code class="cs1-code">{{' .. template_link .. '}}</code>: ';
if 0 ~= #z.error_msgs_t then
mw.addWarning (utilities.substitute (cfg.messages.warning_msg_e, template_link));
table.insert (render_t, ' '); -- insert a space between citation and its error messages
table.sort (z.error_msgs_t); -- sort the error messages list; sorting includes wrapping <span> and <code> tags; hidden-error sorts ahead of visible-error
local hidden = true; -- presume that the only error messages emited by this template are hidden
for _, v in ipairs (z.error_msgs_t) do -- spin through the list of error messages
if v:find ('cs1-visible-error', 1, true) then -- look for the visible error class name
hidden = false; -- found one; so don't hide the error message prefix
break; -- and done because no need to look further
end
end
z.error_msgs_t[1] = table.concat ({utilities.error_comment (msg_prefix, hidden), z.error_msgs_t[1]}); -- add error message prefix to first error message to prevent extraneous punctuation
table.insert (render_t, table.concat (z.error_msgs_t, '; ')); -- make a big string of error messages and add it to the rendering
end
if 0 ~= #z.maint_cats_t then
mw.addWarning (utilities.substitute (cfg.messages.warning_msg_m, template_link));
table.sort (z.maint_cats_t); -- sort the maintenance messages list
local maint_msgs_t = {}; -- here we collect all of the maint messages
if 0 == #z.error_msgs_t then -- if no error messages
table.insert (maint_msgs_t, msg_prefix); -- insert message prefix in maint message livery
end
for _, v in ipairs( z.maint_cats_t ) do -- append maintenance categories
table.insert (maint_msgs_t, -- assemble new maint message and add it to the maint_msgs_t table
table.concat ({v, ' (', utilities.substitute (cfg.messages[':cat wikilink'], v), ')'})
);
end
table.insert (render_t, utilities.substitute (cfg.presentation['hidden-maint'], table.concat (maint_msgs_t, ' '))); -- wrap the group of maint messages with proper presentation and save
end
if not no_tracking_cats then
local sort_key;
local cat_wikilink = 'cat wikilink';
if cfg.enable_sort_keys then -- when namespace sort keys enabled
local namespace_number = mw.title.getCurrentTitle().namespace; -- get namespace number for this wikitext
sort_key = (0 ~= namespace_number and (cfg.name_space_sort_keys[namespace_number] or cfg.name_space_sort_keys.other)) or nil; -- get sort key character; nil for mainspace
cat_wikilink = (not sort_key and 'cat wikilink') or 'cat wikilink sk'; -- make <cfg.messages> key
end
for _, v in ipairs (z.error_cats_t) do -- append error categories
table.insert (render_t, utilities.substitute (cfg.messages[cat_wikilink], {v, sort_key}));
end
if cfg.id_limits_data_load_fail then -- boolean true when load failed
utilities.set_message ('maint_id_limit_load_fail'); -- done here because this maint cat emits no message
end
for _, v in ipairs (z.maint_cats_t) do -- append maintenance categories
table.insert (render_t, utilities.substitute (cfg.messages[cat_wikilink], {v, sort_key}));
end
for _, v in ipairs (z.prop_cats_t) do -- append properties categories
table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v)); -- no sort keys
end
end
return table.concat (render_t); -- make a big string and done
end
--[[--------------------------< V A L I D A T E >--------------------------------------------------------------
Looks for a parameter's name in one of several whitelists.
Parameters in the whitelist can have three values:
true - active, supported parameters
false - deprecated, supported parameters
nil - unsupported parameters
]]
local function validate (name, cite_class, empty)
local name = tostring (name);
local enum_name; -- parameter name with enumerator (if any) replaced with '#'
local state;
local function state_test (state, name) -- local function to do testing of state values
if true == state then return true; end -- valid actively supported parameter
if false == state then
if empty then return nil; end -- empty deprecated parameters are treated as unknowns
deprecated_parameter (name); -- parameter is deprecated but still supported
return true;
end
if 'tracked' == state then
local base_name = name:gsub ('%d', ''); -- strip enumerators from parameter names that have them to get the base name
utilities.add_prop_cat ('tracked-param', {base_name}, base_name); -- add a properties category; <base_name> modifies <key>
return true;
end
return nil;
end
if name:find ('#') then -- # is a cs1|2 reserved character so parameters with # not permitted
return nil;
end
-- replace enumerator digit(s) with # (|last25= becomes |last#=) (mw.ustring because non-Western 'local' digits)
enum_name = mw.ustring.gsub (name, '%d+$', '#'); -- where enumerator is last charaters in parameter name (these to protect |s2cid=)
enum_name = mw.ustring.gsub (enum_name, '%d+([%-l])', '#%1'); -- where enumerator is in the middle of the parameter name; |author#link= is the oddity
if 'document' == cite_class then -- special case for {{cite document}}
state = whitelist.document_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
return false;
end
if utilities.in_array (cite_class, whitelist.preprint_template_list_t) then -- limited parameter sets allowed for these templates
state = whitelist.limited_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
state = whitelist.preprint_arguments_t[cite_class][name]; -- look in the parameter-list for the template identified by cite_class
if true == state_test (state, name) then return true; end
return false; -- not supported because not found or name is set to nil
end -- end limited parameter-set templates
if utilities.in_array (cite_class, whitelist.unique_param_template_list_t) then -- template-specific parameters for templates that accept parameters from the basic argument list
state = whitelist.unique_arguments_t[cite_class][name]; -- look in the template-specific parameter-lists for the template identified by cite_class
if true == state_test (state, name) then return true; end
end -- if here, fall into general validation
state = whitelist.common_parameters_t[enum_name]; -- all other templates; all normal parameters allowed; this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
return false; -- not supported because not found or name is set to nil
end
--[=[-------------------------< I N T E R _ W I K I _ C H E C K >----------------------------------------------
check <value> for inter-language interwiki-link markup. <prefix> must be a MediaWiki-recognized language
code. when these values have the form (without leading colon):
[[<prefix>:link|label]] return label as plain-text
[[<prefix>:link]] return <prefix>:link as plain-text
return value as is else
]=]
local function inter_wiki_check (parameter, value)
local prefix = value:match ('%[%[(%a+):'); -- get an interwiki prefix if one exists
local _;
if prefix and cfg.inter_wiki_map[prefix:lower()] then -- if prefix is in the map, needs preceding colon so
utilities.set_message ('err_bad_paramlink', parameter); -- emit an error message
_, value, _ = utilities.is_wikilink (value); -- extract label portion from wikilink
end
return value;
end
--[[--------------------------< M I S S I N G _ P I P E _ C H E C K >------------------------------------------
Look at the contents of a parameter. If the content has a string of characters and digits followed by an equal
sign, compare the alphanumeric string to the list of cs1|2 parameters. If found, then the string is possibly a
parameter that is missing its pipe. There are two tests made:
{{cite ... |title=Title access-date=2016-03-17}} -- the first parameter has a value and whitespace separates that value from the missing pipe parameter name
{{cite ... |title=access-date=2016-03-17}} -- the first parameter has no value (whitespace after the first = is trimmed by MediaWiki)
cs1|2 shares some parameter names with XML/HTML attributes: class=, title=, etc. To prevent false positives XML/HTML
tags are removed before the search.
If a missing pipe is detected, this function adds the missing pipe maintenance category.
]]
local function missing_pipe_check (parameter, value)
local capture;
value = value:gsub ('%b<>', ''); -- remove XML/HTML tags because attributes: class=, title=, etc.
capture = value:match ('%s+(%a[%w%-]+)%s*=') or value:match ('^(%a[%w%-]+)%s*='); -- find and categorize parameters with possible missing pipes
if capture and validate (capture) then -- if the capture is a valid parameter name
utilities.set_message ('err_missing_pipe', parameter);
end
end
--[[--------------------------< H A S _ E X T R A N E O U S _ P U N C T >--------------------------------------
look for extraneous terminal punctuation in most parameter values; parameters listed in skip table are not checked
]]
local function has_extraneous_punc (param, value)
if 'number' == type (param) then
return;
end
param = param:gsub ('%d+', '#'); -- enumerated name-list mask params allow terminal punct; normalize
if cfg.punct_skip[param] then
return; -- parameter name found in the skip table so done
end
if value:match ('[,;:]$') then
utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat
end
if value:match ('^=') then -- sometimes an extraneous '=' character appears ...
utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat
end
end
--[[--------------------------< H A S _ T W L _ U R L >--------------------------------------------------------
look for The Wikipedia Library urls in url-holding parameters. TWL urls are accessible for readers who are not
active extended confirmed Wikipedia editors. This function emits an error message when such urls are discovered.
looks for: '.wikipedialibrary.idm.oclc.org'
]]
local function has_twl_url (url_params_t)
local url_error_t = {}; -- sequence of url-holding parameters that have a TWL url
for param, value in pairs (url_params_t) do
if value:find ('%.wikipedialibrary%.idm%.oclc%.org') then -- has the TWL base url?
table.insert (url_error_t, utilities.wrap_style ('parameter', param)); -- add parameter name to the list
end
end
if 0 ~= #url_error_t then -- non-zero when there are errors
table.sort (url_error_t);
utilities.set_message ('err_param_has_twl_url', {utilities.make_sep_list (#url_error_t, url_error_t)}); -- add this error message
return true;
end
end
--[[--------------------------< H A S _ E X T R A N E O U S _ U R L >------------------------------------------
look for extraneous url parameter values; parameters listed in skip table are not checked
]]
local function has_extraneous_url (non_url_param_t)
local url_error_t = {};
check_for_url (non_url_param_t, url_error_t); -- extraneous url check
if 0 ~= #url_error_t then -- non-zero when there are errors
table.sort (url_error_t);
utilities.set_message ('err_param_has_ext_link', {utilities.make_sep_list (#url_error_t, url_error_t)}); -- add this error message
end
end
--[[--------------------------< _ C I T A T I O N >------------------------------------------------------------
Module entry point
frame – from template call (citation()); may be nil when called from another module
args – table of all cs1|2 parameters in the template (the template frame)
config – table of template-supplied parameter (the #invoke frame)
]]
local function _citation (frame, args, config) -- save a copy in case we need to display an error message in preview mode
if not frame then
frame = mw.getCurrentFrame(); -- if called from another module, get a frame for frame-provided functions
end
-- i18n: set the name that your wiki uses to identify sandbox subpages from sandbox template invoke (or can be set here)
local sandbox = ((config.SandboxPath and '' ~= config.SandboxPath) and config.SandboxPath) or '/sandbox'; -- sandbox path from {{#invoke:Citation/CS1/sandbox|citation|SandboxPath=/...}}
is_sandbox = nil ~= string.find (frame:getTitle(), sandbox, 1, true); -- is this invoke the sandbox module?
sandbox = is_sandbox and sandbox or ''; -- use i18n sandbox to load sandbox modules when this module is the sandox; live modules else
cfg = mw.loadData ('Module:Citation/CS1/Configuration' .. sandbox); -- load sandbox versions of support modules when {{#invoke:Citation/CS1/sandbox|...}}; live modules else
whitelist = mw.loadData ('Module:Citation/CS1/Whitelist' .. sandbox);
utilities = require ('Module:Citation/CS1/Utilities' .. sandbox);
validation = require ('Module:Citation/CS1/Date_validation' .. sandbox);
identifiers = require ('Module:Citation/CS1/Identifiers' .. sandbox);
metadata = require ('Module:Citation/CS1/COinS' .. sandbox);
utilities.set_selected_modules (cfg); -- so that functions in Utilities can see the selected cfg tables
identifiers.set_selected_modules (cfg, utilities); -- so that functions in Identifiers can see the selected cfg tables and selected Utilities module
validation.set_selected_modules (cfg, utilities); -- so that functions in Date validataion can see selected cfg tables and the selected Utilities module
metadata.set_selected_modules (cfg, utilities); -- so that functions in COinS can see the selected cfg tables and selected Utilities module
z = utilities.z; -- table of error and category tables in Module:Citation/CS1/Utilities
is_preview_mode = not utilities.is_set (frame:preprocess ('{{REVISIONID}}'));
local suggestions = {}; -- table where we store suggestions if we need to loadData them
local error_text; -- used as a flag
local capture; -- the single supported capture when matching unknown parameters using patterns
local empty_unknowns = {}; -- sequence table to hold empty unknown params for error message listing
for k, v in pairs( args ) do -- get parameters from the parent (template) frame
v = mw.ustring.gsub (v, '^%s*(.-)%s*$', '%1'); -- trim leading/trailing whitespace; when v is only whitespace, becomes empty string
if v ~= '' then
if ('string' == type (k)) then
k = mw.ustring.gsub (k, '%d', cfg.date_names.local_digits); -- for enumerated parameters, translate 'local' digits to Western 0-9
end
if not validate( k, config.CitationClass ) then
if type (k) ~= 'string' then -- exclude empty numbered parameters
if v:match("%S+") ~= nil then
error_text = utilities.set_message ('err_text_ignored', {v});
end
elseif validate (k:lower(), config.CitationClass) then
error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, k:lower()}); -- suggest the lowercase version of the parameter
else
if nil == suggestions.suggestions then -- if this table is nil then we need to load it
suggestions = mw.loadData ('Module:Citation/CS1/Suggestions' .. sandbox); --load sandbox version of suggestion module when {{#invoke:Citation/CS1/sandbox|...}}; live module else
end
for pattern, param in pairs (suggestions.patterns) do -- loop through the patterns to see if we can suggest a proper parameter
capture = k:match (pattern); -- the whole match if no capture in pattern else the capture if a match
if capture then -- if the pattern matches
param = utilities.substitute (param, capture); -- add the capture to the suggested parameter (typically the enumerator)
if validate (param, config.CitationClass) then -- validate the suggestion to make sure that the suggestion is supported by this template (necessary for limited parameter lists)
error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, param}); -- set the suggestion error message
else
error_text = utilities.set_message ('err_parameter_ignored', {k}); -- suggested param not supported by this template
v = ''; -- unset
end
end
end
if not utilities.is_set (error_text) then -- couldn't match with a pattern, is there an explicit suggestion?
if (suggestions.suggestions[ k:lower() ] ~= nil) and validate (suggestions.suggestions[ k:lower() ], config.CitationClass) then
utilities.set_message ('err_parameter_ignored_suggest', {k, suggestions.suggestions[ k:lower() ]});
else
utilities.set_message ('err_parameter_ignored', {k});
v = ''; -- unset value assigned to unrecognized parameters (this for the limited parameter lists)
end
end
end
end
args[k] = v; -- save this parameter and its value
elseif not utilities.is_set (v) then -- for empty parameters
if not validate (k, config.CitationClass, true) then -- is this empty parameter a valid parameter
k = ('' == k) and '(empty string)' or k; -- when k is empty string (or was space(s) trimmed to empty string), replace with descriptive text
table.insert (empty_unknowns, utilities.wrap_style ('parameter', k)); -- format for error message and add to the list
end
-- crude debug support that allows us to render a citation from module {{#invoke:}} TODO: keep?
-- elseif args[k] ~= nil or (k == 'postscript') then -- when args[k] has a value from {{#invoke}} frame (we don't normally do that)
-- args[k] = v; -- overwrite args[k] with empty string from pframe.args[k] (template frame); v is empty string here
end -- not sure about the postscript bit; that gets handled in parameter validation; historical artifact?
end
if 0 ~= #empty_unknowns then -- create empty unknown error message
utilities.set_message ('err_param_unknown_empty', {
1 == #empty_unknowns and '' or 's',
utilities.make_sep_list (#empty_unknowns, empty_unknowns)
});
end
local non_url_param_t = {}; -- table of parameters and values that are not url-holding parameters
local url_param_t = {}; -- table of url-holding paramters and their values
for k, v in pairs( args ) do
if 'string' == type (k) then -- don't evaluate positional parameters
has_invisible_chars (k, v); -- look for invisible characters
end
has_extraneous_punc (k, v); -- look for extraneous terminal punctuation in parameter values
missing_pipe_check (k, v); -- do we think that there is a parameter that is missing a pipe?
args[k] = inter_wiki_check (k, v); -- when language interwiki-linked parameter missing leading colon replace with wiki-link label
if 'string' == type (k) then -- when parameter k is not positional
if not cfg.url_skip[k] then -- and not in url skip table
non_url_param_t[k] = v; -- make a parameter/value list for extraneous url check
else -- and is in url skip table (a url-holding parameter)
url_param_t[k] = v; -- make a parameter/value list to check for values that are The Wikipedia Library url
end
end
end
has_extraneous_url (non_url_param_t); -- look for url in parameter values where a url does not belong
if has_twl_url (url_param_t) then -- look for url-holding parameters that hold a The Wikipedia Library url
args['url-access'] = 'subscription';
end
return table.concat ({
frame:extensionTag ('templatestyles', '', {src='Module:Citation/CS1' .. sandbox .. '/styles.css'}),
citation0( config, args)
});
end
--[[--------------------------< C I T A T I O N >--------------------------------------------------------------
Template entry point
]]
local function citation (frame)
local config_t = {}; -- table to store parameters from the module {{#invoke:}}
local args_t = frame:getParent().args; -- get template's preset parameters
for k, v in pairs (frame.args) do -- get parameters from the {{#invoke}} frame
config_t[k] = v;
-- args_t[k] = v; -- crude debug support that allows us to render a citation from module {{#invoke:}}; skips parameter validation; TODO: keep?
end
return _citation (frame, args_t, config_t)
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
citation = citation, -- template entry point
_citation = _citation, -- module entry point
}
swdh50lofyqq0wmp3o2c259fg8s2nxi
University of Abuja
0
5348
111978
78764
2026-09-16T10:38:46Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111978
wikitext
text/x-wiki
{{Databox|item=Q3509297}}De '''University of Abuja''' be tertiary institution wey dey Nigerian capital, Abuja. Dem establish am for January 1988<ref name="auto">{{Cite web|title=Welcome to University of Abuja|url=https://www.uniabuja.edu.ng/about/our-history|access-date=2021-09-01|website=Laravel|language=en|archive-date=2022-03-01|archive-url=https://web.archive.org/web/20220301005028/https://www.uniabuja.edu.ng/about/our-history|url-status=dead}}</ref> (under Decree No. 110 of 1992 as amended) as dual-mode university plus de mandate say dem go run conventional den distance learning programmes. Academic work start for de university for 1990 insyd plus de matriculation of ein pioneer students.<ref>{{Cite web|url=https://guardian.ng/sunday-magazine/cle-commends-uniabuja-on-law-students-feat/|title=CLE commends UniAbuaj on low students feat|website=guardian.ng|date=20 September 2015|access-date=2020-03-03|archive-date=2020-03-03|archive-url=https://web.archive.org/web/20200303215048/https://guardian.ng/sunday-magazine/cle-commends-uniabuja-on-law-students-feat/|url-status=live}}</ref>
== Dema History ==
De university start from sam temporary site, made up of three blocks of building wey be for sam primary school wey dey Gwagwalada, wey be de mini-campus". Academic activities start for de mini-campus for 1990 insyd, after wey dem allocate university sam expanse of land covering ova11,800 hectares (29,000 acres) along de Abuja city Airport road for de development of ein main campus.
Relocation go de permanent site be ongoing to date. De campus now dey host three female den two male hostels housing thousands of students. However, de distance learning offices of de university dey within de Abuja municipality (Area 3 Garki) wer dem dey hold contact sessions of de programme.
== Dema Library ==
Dem establish de University Libraryfor 1988 so say ego support teaching, learning den research so say ego meet de objectives of de University of Abuja plus information resources online den offline. De University main library dey de main Campus along Airport Road, Abuja.<ref>{{Cite web|title=UNIVERSITY OF ABUJA LIBRARY's open resources {{!}} University of Abuja Open Education Resources (OER)|url=https://oer.uniabuja.edu.ng/university-of-abuja-library/resources|access-date=2022-12-30|website=oer.uniabuja.edu.ng|language=en|archive-date=2022-12-30|archive-url=https://web.archive.org/web/20221230084103/https://oer.uniabuja.edu.ng/university-of-abuja-library/resources|url-status=live}}</ref>
== Dema Academics ==
De university dey offer diploma, undergraduate den post-graduate degree programmes as well as sam Centre for Distance Learning School wey dey provide university education give menners wey no go fi acquire such education through de regular university system den menners wey get interest say dem go acquire new knowledge den specialised skills.
Sam list of faculties den colleges wey currently dey de University of Abuja dey include:
* Faculty of Agriculture
* Faculty of Art
* Faculty of Education
* Faculty of Engineering
* Faculty of Law
* Faculty of Management Sciences
* Faculty of Sciences
* Faculty of Social Sciences
* Faculty of Veterinary Medicine
* School of Post Graduate Studies
* School of Remedial Studies
* College of Health Sciences
* College of Medicine
* The Institute of Legislative Education
De University get further plans say ego commence de Geology den Mining program for 2023/2024 academic session wey de Vice Chancellor of de University of Abuja, Professor Abdul-Rasheed Na’Allah state.
== Dema Council den Administration ==
De key organs den officers wey dey de administration den governance of de university insyd be de Governing Council, de Senate, de Congregation den de Convocation, de Vice-Chancellor, Two Deputy Vice Chancellors (Administration den Academic), de Registrar den Secretary to Council, de Bursar, de University Librarian, Deans of Faculties, Directors of Centres den Institutes den Heads of Department. All dese organs den officials dey get support from de Committee system wey be de pivot of administration of de university.<ref>{{Cite web|url=https://www.uniabuja.edu.ng/about-us/goverance|title=About Us -' Governance|website=UniAbuja|access-date=3 March 2020|archive-date=9 August 2017|archive-url=https://web.archive.org/web/20170809173344/https://www.uniabuja.edu.ng/about-us/goverance|url-status=live}}</ref>
=== De Governing Council ===
De Council dey consist of de Chairman wey sana be Pro-Chancellor of de university, de Vice Chancellors (Administration den Academic) sam representative of de Federal Ministry of Education, four persons wey National Council of Ministers appoint dem say make dem represent broad national interests, four persons wey Senate appoint from ein members, one persons each wey Congregation appoint den de Convocation among dema members den de Registrar as Secretary give Council. De council be de highest policy-making organ give de university.
=== De Senate ===
De Senate be de highest University authority for academic matters top. Ebe de general function of ce Senate say ego organise den control teaching for de university den de admission den discipline of students, as well as ce promotion of research. De Senate dey comprise of de Vice-Chancellor as Chairman, de Deputy Vice-Chancellors, de Professors, de University Librarian, Deans, Directors den Deputy Deans, Heads of Academic Departments, one member of academic staff wey dey represent each Faculty den de Registrar as Secretary.
=== De Congregation ===
De Congregation be made up of all members of staff of de university wey na dem be university graduates by appointment. De Vice-Chancellor be de Chairman wey de Registrar be de Secretary. Congregation meetings, wey be statutory, dem dey bell dem so say dem go give members opportunities den get say for matters wey dey affect dema welfare.
De university dey run sam consultancy services sub-degree program den sam institute of education wey dey cater for de professional needs of teachers den specialised needs of government education bodies; edey provide avenues give de establishment of linkages for education matters top plus organisations den institutions wey dey within den outsyd Nigeria.
De University for ein 96th regular meeting tym for May 2023 insyd promote 19 of ein academic staff t=go professorial rank. Dem promote 8 go de rank of professor, wey dem promote 11 go de rank of associate professor.<ref>{{Cite web|url=https://thenationonlineng.net/uniabuja-promotes-19-to-rank-of-professor/|title=UniAbuja promotes 19 to rank of professor - The Nation Newspaper|access-date=2023-06-01|archive-date=2023-06-01|archive-url=https://web.archive.org/web/20230601103129/https://thenationonlineng.net/uniabuja-promotes-19-to-rank-of-professor/|url-status=live}}</ref><ref>{{Cite web|url=https://www.vanguardngr.com/2023/05/uniabuja-promotes-19-academic-staff/|title=UniAbuja promotes 19 academic staff - Vanguard News|access-date=2023-06-01|archive-date=2023-06-01|archive-url=https://web.archive.org/web/20230601103431/https://www.vanguardngr.com/2023/05/uniabuja-promotes-19-academic-staff/|url-status=live}}</ref>
For de 96th Regular meeting insyd, de Governing Council of de University of Abuja approve de appointment of de youngest professor of law wey dey Nigeria insyd den de first female professor of law from Northwest Nigeria, Aisha Sani Maikudi, alongsyd Professor Philip Afaha as Deputy Vice Chancellors Academic den Administrative respectively.<ref>{{cite web|url=https://punchng.com/uniabuja-appoints-youngest-professor-of-law-as-dvc/|title=UNIABUJA appoints youngest professor of law as DVC|date=8 May 2023|access-date=1 June 2023|archive-date=1 June 2023|archive-url=https://web.archive.org/web/20230601104251/https://punchng.com/uniabuja-appoints-youngest-professor-of-law-as-dvc/|url-status=live}}</ref><ref>{{cite web|url=https://www.thisdaylive.com/index.php/2023/05/10/uniabuja-appoints-youngest-professor-of-law-dvc/|title=UNIABUJA Appoints Youngest Professor of Law DVC - THISDAYLIVE|access-date=2023-06-01|archive-date=2023-06-01|archive-url=https://web.archive.org/web/20230601104825/https://www.thisdaylive.com/index.php/2023/05/10/uniabuja-appoints-youngest-professor-of-law-dvc/|url-status=live}}</ref>
== Gallery ==
<gallery>
File:UniAbuja.Entrance_MG_0127_(1).jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja.Entrance_MG_0127_(1).jpg|De main gate entrance of De University of Abuja Nigeria
File:UniAbuja_Photowalk_senate.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja_Photowalk_senate.jpg|Senate den Admin Building
File:UniAbuja_Photowalk_senate_1.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja_Photowalk_senate_1.jpg|Side view of Senate Building
File:UniAbuja_Photowalk_faculty_of_arts.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja_Photowalk_faculty_of_arts.jpg|Faculty of Arts
File:UniAbuja_Photowalk_CDL_&_CL_Building.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja_Photowalk_CDL_&_CL_Building.jpg|Centre for Distance Learning
File:UniAbuja_Photowalk_faculty_of_Management_Science.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja_Photowalk_faculty_of_Management_Science.jpg|Faculty of Management sciences
File:UniAbuja_Photowalk_lady_justice.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja_Photowalk_lady_justice.jpg|The Lady justice at Law faculty
File:UniAbuja.ClinicMG_0183.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja.ClinicMG_0183.jpg|University Clinic
File:UniAbuja.AgricDeptMG_0159.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja.AgricDeptMG_0159.jpg|Faculty of Agriculture
File:UniAbuja.FemaleHostelMG_0213.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja.FemaleHostelMG_0213.jpg|De new female Hostel
File:UniAbuja.Faculty2MG_0223.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja.Faculty2MG_0223.jpg|Faculty of Social Sciences at University of Abuja, Abuja, Nigeria
File:UniAbuja.Lecture2MG_0154.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja.Lecture2MG_0154.jpg|Faculty of Agriculture Lecture theatre
File:UniAbuja.VetHospitalMG_0165.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja.VetHospitalMG_0165.jpg|Veterinary Teaching Hospital
File:UniAbuja_Photowalk_law.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja_Photowalk_law.jpg|Faculty of Law
File:UniAbuja_Photowalk_library_sign.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja_Photowalk_library_sign.jpg|Library sign
File:UniAbuja.Lecture_7MG_0196.jpg|link=https://en.wikipedia.org/wiki/File:UniAbuja.Lecture_7MG_0196.jpg|ETF main hall
</gallery>
== Notable alumni ==
* Aishah Ahmad, deputy governor Central Bank of Nigeria.<ref name="BellaNaija 2017">{{cite web|title=Buhari nominates Aisha Ahmad as Central Bank Deputy Governor|website=BellaNaija|date=2017-10-06|url=https://www.bellanaija.com/2017/10/aisha-ahmad-central-bank-deputy-governor/|access-date=2023-06-01|archive-date=2023-06-01|archive-url=https://web.archive.org/web/20230601061626/https://www.bellanaija.com/2017/10/aisha-ahmad-central-bank-deputy-governor/|url-status=live}}</ref>
* Chuks Anyaduba - lawyer, filmmaker den humanitarian
* Natasha Akpoti-Udaughan - Nigerian Politician, Lawyer den Activist
* Dike Chukwumerije - Nigerian spoken word den performance poetry artist den author
* Jake Okechukwu Effoduh<ref name="RefinedNG 2020">{{cite web|title=Jake Okechukwu Effoduh now a Queen Elizabeth Scholar|website=RefinedNG|date=2020-11-09|url=https://refinedng.com/jake-okechukwu-effoduh-becomes-a-queen-elizabeth-scholar/|access-date=2023-06-01|archive-date=2023-06-01|archive-url=https://web.archive.org/web/20230601062035/https://refinedng.com/jake-okechukwu-effoduh-becomes-a-queen-elizabeth-scholar/|url-status=live}}</ref> - radio personality, human rights activist den lawyer
* Olumide Idowu<ref name="atlascorps.org">{{cite web|title=» Olumide Idowu|website=atlascorps.org|url=https://atlascorps.org/fellow/olumide-idowu/|access-date=2023-06-01|archive-date=2023-06-01|archive-url=https://web.archive.org/web/20230601122621/https://atlascorps.org/fellow/olumide-idowu/|url-status=live}}</ref> - youth campaigner den climate change activist
* JaySynths – record producer
* Kanayo O. Kanayo - actor, film maker den lawyer
* Ebuka Obi-Uchendu - Lawyer, media personality
* P-Square, Afrobeat duo
* Imaan Sulaiman-Ibrahim – director-general of NAPTIP
* Uba Sani, Current governor of Kaduna State
== References ==
[[Category:University of Abuja| ]]
[[Category:Universities den colleges insyd Nigeria]]
[[Category:Educational institutions dem establish insyd 1988]]
[[Category:Education insyd Abuja]]
[[Category:Public universities insyd Nigeria]]
[[Category:1988 establishments insyd Nigeria]]
[[Category:Universities den colleges insyd Africa]]
[[Category:Universities insyd West Africa]]
[[Category:Education insyd West Africa]]
[[Category:Education insyd Africa]]
<references />
== External links ==
{{Commons}}
* [https://web.archive.org/web/20100411045946/http://www.uniabuja.edu.ng/ Official website]
* [https://web.archive.org/web/20081006195024/http://www.unibuja.com/ Universities Socketworks College Portal]
{{authority control}}
oq25sz58c1spof8qzwjs4q9j4fdlo4j
Mukuba University
0
5774
111970
98456
2026-09-16T07:06:46Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111970
wikitext
text/x-wiki
{{Databox}}
'''Mukuba University''' be public university insyd Garneton (Itimpi), Kitwe, Zambia. De Mukuba University, formerly Copperbelt Secondary Teachers College (COSETCO), na dem establish am insyd 1974 by de Ministry of Education make e train Teachers of Science for deployment for secondary schools around de country insyd. Since ein inception, COSETCO as institution train teachers of mathematics, natural sciences, den home economics.<ref>[http://www.universityworldnews.com/article.php?story=2012110218183395 "Government to turn five institutions into universities"]. University World News. Retrieved 16 October 2014.</ref><ref>[https://web.archive.org/web/20240528020551/https://www.lusakatimes.com/2013/05/16/president-sata-to-launch-palabana-university/ "President Sata to Launch Palabana University"]. Lusaka Times. May 16, 2013. Retrieved 16 October 2014.</ref><ref>Phiri, B.J.; Shaba, T. (2023). ''[https://books.google.com/books?id=XkrYEAAAQBAJ&pg=PA273 Historical Dictionary of Zambia]''. Historical Dictionaries of Africa. Rowman & Littlefield Publishers. p. 273. ISBN <bdi>[[:en:Special:BookSources/978-1-5381-4602-6|978-1-5381-4602-6]]</bdi>. Retrieved 17 December 2023.</ref><ref>Onyancha, O.B.; Tella, A. (2023). ''[https://books.google.com/books?id=2bjFEAAAQBAJ&pg=PA283 Impact of Global University Ranking Systems on Developing Countries]''. Advances in Higher Education and Professional Development. IGI Global. p. 283. ISBN <bdi>[[:en:Special:BookSources/978-1-6684-8267-4|978-1-6684-8267-4]]</bdi>. Retrieved 17 December 2023.</ref>
== Academic Reorganization ==
Insyd 2008 de institution start dey offer bachelor's degrees wey na dem establish four schools wey na dem reorganise dem go three by 2018 for de restructuring process insyd:
1. School of Education dey offer various courses, wey dey include psychology, philosophy, sociology, special education den communication skills.
2. De School of Applied Science den Technology dey offer majors insyd nutritional sciences, as well as clothing den textile sciences.
3. De School of Mathematical den Natural Sciences dey offer degrees insyd mathematics, computer science, geography, biology, chemistry, physics den agriculture sciences. All programmes run thru full time/ regular mode, as well as via open den distance learning (ODL) mode.
== ICT ==
De university establish dedicated Centre give ICT, de Centre for Information Communication Technology. De Unit get four sections, namely
1. Networking Section,
2. Training Section,
3. Software Development Section den
4. Support and Consultancy Section.
De University Library be de principal information provider give all students den staff.
== References ==
<references />
== External links ==
* [https://web.archive.org/web/20160304050304/http://www.mukuba.edu.zm/ Official website]
[[Category:Universities insyd Zambia]]
[[Category:Buildings den structures insyd Copperbelt Province]]
[[Category:Educational institutions dem establish insyd 1974]]
[[Category:1974 establishments insyd Zambia]]
[[Category:Education insyd Zambia]]
[[Category:Universities den colleges dem establish insyd 1974]]
1s6tgklm30xh7kqesgun1pvexwx3qva
Batna 2 University
0
6175
111965
98270
2026-09-16T01:08:12Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111965
wikitext
text/x-wiki
{{Databox}}
De '''University of Batna 2''' ('''Mostefa Ben Boulaïd'''<ref>[http://m.huffpost.com/mg/entry/14630712 "L'université Batna 2 baptisée "Mostefa Benboulaïd""]. ''Al Huffington Post'' (in French). Retrieved 2017-02-09.</ref>) (''Arabic'': '''جامعة باتنة 2 مصطفى بن بولعيد''') be non-profit Algerian public University<ref>[https://web.archive.org/web/20160320115423/http://www.aps.dz/regions/26286-deux-universit%25C3%25A9s,-d%25C3%25A9sormais-%25C3%25A0-batna "Algérie Presse Service - Deux universités, désormais à Batna"]. ''www.aps.dz''. Archived from [http://www.aps.dz/regions/26286-deux-universit%25C3%25A9s,-d%25C3%25A9sormais-%25C3%25A0-batna the original] on 2016-03-20. Retrieved 2016-03-07.</ref> wey dey locate insyd Fesdis,<ref>[https://web.archive.org/web/20241203185757/https://www.djazairess.com/fr/batnainfo/1715 "Batna : Le pôle universitaire de Fesdis opérationnel dès la prochaine rentrée"]. ''Djazairess''. Retrieved 2016-03-07.</ref> Wilaya of Batna insyd [[Algeria]]. Na dem found am insyd 1977 as University of Batna<ref>[https://web.archive.org/web/20180923223804/http://www.lestrepublicain.com/index.php?option=com_k2&view=item&id=28157:l%25E2%2580%2599universit%25C3%25A9-partenaire-de-24-%25C3%25A9tablissements-%25C3%25A9trangers&Itemid=651 "L'université, partenaire de 24 établissements étrangers - L'Est Républicain"]. ''www.lestrepublicain.com''. Retrieved 2016-03-08.</ref> den then dem restructure<ref name=":0">[https://web.archive.org/web/20250620164722/https://www.djazairess.com/fr/batnainfo/4572 "Batna: Université Batna 1 et université Batna 2, deux administrations distinctes"]. ''Djazairess''. Retrieved 2016-03-07.</ref> insyd July 2015 by presidential decree,<ref>[http://www.joradp.dz/FTP/jo-francais/2015/F2015038.pdf "Décret portant sur la création de l'Université de Batna 2"] (PDF). ''www.joradp.dz''. 12 July 2015.</ref> which lead to split into two distinct universities,<ref name=":0" /> namely [[Batna 1 University|University of Batna 1]] den University of Batna 2. For 4 February 2017, na dem name de university after de Algerian national Hero Mostefa Ben Boulaïd. Dem sanso dey bell am de father of de Algerian revolution<ref name=":2">[https://web.archive.org/web/20230517234906/https://www.djazairess.com/fr/reflexion/12986 "LES MARTYRS DE LA REVOLUTION ALGERIENNE : Mostefa Ben Boulaïd, le " Père de la Révolution algérienne ""]. ''Djazairess''. Retrieved 2017-02-17.</ref> wey na dem hold ein centenary<ref name=":3">[http://www.huffpostmaghreb.com/2017/02/05/centenaire-naissance-benb_n_14629052.html "Batna: Le centenaire de la naissance de Mostefa Benboulaïd célébré à Arris"]. ''Al Huffington Post''. Retrieved 2017-02-17.</ref> celebration insyd de city of Batna. Now UB2 University Mostefa Ben Boulaïd be one of de largest Universities<ref>Ministry of Higher Education, Scientific Research. [https://web.archive.org/web/20170608211415/https://www.mesrs.dz/universites "Universities in Algeria"]. ''MESRS''. Ministry of Higher Education and Scientific Research. Archived from [https://www.mesrs.dz/universites the original] on 2017-06-08. Retrieved 2016-03-10.</ref> insyd Algeria den Africa plus ein (33,458)<ref name=":1">[https://web.archive.org/web/20180923223812/https://www.lanation.dz/Enseignement-superieur-a-Batna-Reception-imminente-de-plus-de-2-000-places-pedagogiques_a21325.html "Enseignement supérieur à Batna : Réception imminente de plus de 2 000 places pédagogiques"]. ''La Nation - Quotidien National d'Information''. Archived from [http://www.lanation.dz/Enseignement-superieur-a-Batna-Reception-imminente-de-plus-de-2-000-places-pedagogiques_a21325.html the original] on 2018-09-23. Retrieved 2016-03-08.</ref> students dem enroll den (1,833)<ref name=":1" /> staff members. Under de authority of de vice-chancellor Dr. Tayeb Bouzid, de university dey comprise general management office, four vice-rectorates, five faculties, three institutes, den central library.
== History ==
Insyd 1977, na dem found de university under de name of University of Batna. Insyd de 1980s, na dem name am after Pr. Abrouk Madani, former lecturer den researcher wey act as de first Rector. Insyd de 1990s de university structures expand thru de opening of fresh Faculties den Institutes, whch encourage de rectorate ein administration make dem suggest de name of de Algerian national Hero Mostefa Ben Boulaïd. Dem sanso dey bell am de father of de Algerian revolution<ref name=":2" /> wey dem hold ein centenary<ref name=":3" /> celebration insyd de city of Batna for 4 February 2017 for recognition of ein great efforts den leadership as de first commander of zone 1 insyd de Aurès during de Algerian liberation war against de French for de mid 1950s insyd. As of July 2015, na de structure dey comprise nine faculties, five institutes den central library. Due to de continuously increasing demand of de baccalaureate holders insys Algeria, de Ministry of Higher Education den Scientific Research, plus de recommendation of de prime Minister Abdelmalek Sellal, adopt fresh decentralization strategy as part of de fresh LMD (Licence Master Doctorate) orientations for better den efficient higher educational management. Na dis be major reconstruction dat split de university into 2 distinct Universities, namely: University of Batna 1 den University of Batna 2. Now dem widely know University of Batna 2 Mostefa Ben Boulaïd as science/technology oriented, although e dey comprise faculty of medicine wey dey include department of medicine den pharmacy den faculty of Letters den Foreign Languages wer English den French departments dey offer wide range of courses wey dey include de fields of linguistics, didactics, culture den civilization.
== Campus ==
UB2 get five campuses: main campus wey dey locate insyd Fesdis (151 hectares), den four insyd de centre of city of Batna (19 hectares).
=== Fesdis Main Campus ===
[[File:UB2_Fesdis.jpg|alt=|thumb|Fesdis main campus]]
* De total surface of Fesdis Main Campus dey stretche across 151 hectares, of wich dem build 65 hectares wey dem intend for academic purposes.
=== Conference Center ===
[[File:EX_Mouhafada.jpg|thumb|Conference Center "EX Mouhafada"]]
* Dem sanso know am as "Ex Mouhafada", de building dey insyd de heart of Batna city plus ein (3000) sq/m, wey dem consider am as e roundabout of most events for University of Batna 2. De campus dey span approximately (100) metres of de City Hall (Daira of Batna) for Route de Biskra, 05000 Batna;
=== Central Campus ===
[[File:Central_Campus_UB2.jpg|thumb|Central Campus: Abrouk Madani Center]]
* "Abrouk Madani Center" (A.M.C) be campus wey dem dedicate am to students den teachers of technology. De surface of C.A.M. be around (8000) sq/m. Dis structure dey situate insyd 1, Rue Chahid Boukhlouf Med El Hadi, 05000 Batna.
=== Medical Campus ===
[[File:CHU_UB2.jpg|thumb|Medical Campus UB2]]
* Centre Hospitalier Universitaire de Batna dem sanso know am as CHU Benflis Al-Tohamy University Hospital<ref>[https://web.archive.org/web/20190323201838/http://www.sante.dz/chu-batna/chub.html "chubatna"]. ''www.sante.dz''. Retrieved 2016-03-19.</ref> be one of de largest campuses insyd [[Algeria]] plus ein 5,000 square meters. E get capacity of 540 rooms den nine medical services, six surgery services den main emergency pavilion. Med students dey learn de disciplines wey follow: Internal Medicine, Pediatry, Cardiology, Nephrology, Neuro-endocrinology, Burnings, Hematology, General Surgery, Maxillo-facial, Pediatric Surgery, Urology, Orthopedics, Neurosurgery, Ophthalmology, Legal Medicine, Work Medicine, Neurosurgery, Dermatology, Neurology, Physiology, Rheumatology, Gastroenterology, Epidemiology, Dental surgery.
=== Pharmacy Campus ===
* Dey locate insyd 742 Lgts district wey dey total 3,000-square-metre (32,000 sq ft) surface.
== Architecture ==
* Dem inspire Fesdis Main Campus architecture of UB2 by de Chicago School. Dem design de buildings plus cubic architectural style base for steel-frame construction den solid glasses, wich give de university futuristic view. De conceptions, designs den constructions na dem be realized by:
# BET Houcine Abdelaziz
# BETAC
# BE/TBatna
# BET/SEETA
# BET Hidjazi Cherif
# BET Hafiane
* Na dem build de Conference Center insyd de 1970s wey na ebe de property of de National Liberation Party (FLN) til de 1990s. Dem construct am by Algerian entrepreneurs during de era of Socialism, de structure dey comprise two-floor building den fully Auditorium dem equip.
* De Central Campus be old construction wey na dem build by de French insyd de 18th century. Dem characterize am by French Colonial Style, na dem initially build de Central Campus as Hospital wey serve military French troops insyd de Aures.
* Na dem build both Medical den Pharmacy campuses insyd de 1980s wey na dem restore am insyd de 2000s make e expand de capacity of de structure for Med den Pharm students due to de growing population insyd Algeria.
== Housing ==
UB2 dey offer free-of-charge accommodation give more dan 3000 students plus seven buildings insyd de Fesdis Main Campus spread over 20 hectares plus capacity of 2,000+1,000 beds.
== Food Services ==
UB2 get three restaurants den three cafeterias dem divide as follows: two restaurants plus cafeteria insyd Fesdis Main Campus, den restaurant-cafeteria insyd Central Campus. UB2 dey offer day service per plus more dan 6,000 meals dem serve every day.
== Transportation ==
Dem dey run dis service for UB2 by (French: "''Office National des Œuvres Universitaires''") (ONOU). E mainly dey offer free-of-charge transportation to all students thru buses plus overall fleet of 140 private companies dey own. Seventy buses dey serve de Fesdis Main Campus Line den seventy for de rest of campuses.
== Athletics ==
Fesdis Main Campus get stadium den semi-Olympic indoor swimming pool, plus five outdoor sport facilities, den finally indoor fitness room. De UB2 currently dey construct another space dem dedicate give athletics, den two outdoor mid-size courtyards give soccer. All dese structures be managed by de Physical den Sport Education Institute. Dem dey offer chaw sport disciplines, such as football, basketball, volleyball, handball, athletics, den swimming.
== Organization and administration ==
De University of Batna 2 get front office (French: ''Rectorat''), Cabinet, Management Office (French: ''Secétariat Général'' SG), four vice-rectorates, five faculties, three institutes, den central library.
=== Vice Rectorate ===
* Public & External Affairs
* Graduate Studies & Students' Affairs
* Postgraduate Studies
* Development & Planning
=== Faculties den institutes ===
* Faculty of Medicine
* Faculty of Technology;
* Faculty of Maths & Computing
* Faculty of Life & Natural Science
* Faculty of Letters & Foreign Languages
* Institute of Physical & Sport Education
* Institute of Health & Safety
* Institute of Earth & Universe Science
== University staff ==
UB2 staff be (1,833) wey teachers be 1,220 den 613 employees.
== Graduate den postgraduate programs ==
University Batna 2 get worldwide recognized educational system, wich be part of de LMD reform wey na dem initiate insyd Europe by de Bologna Process wey dey offer Bachelor's, Master's den Doctorate degrees.
=== Graduate program ===
Academic den Professional Master's in Technology, namely Engineering, Electrical Engineering, Mechanical Engineering, den Civil Engineering. Professional training sanso be part of dis program. Students dem enroll: 27,700 dey prepare for bachelor's den master's degrees.
=== Postgraduate program ===
Academic Doctorate ES Science den PhD (Doctorate "D"). 1,971 students dey conduct dema research dispatched as follows: 1,183 Doctorate ES Science, PhD 350, den 422 dey prepare Magister.
=== Post-Doctoral Studies ===
16 Postdoc students dey undertake "NEP" National Exceptional Program (French: PNE Programme National Exceptionnel)
=== Sabbatical/Academic year ===
15 scholars for 2015–2016.
== International cooperation den conventions ==
* Erasmus+
* Miscellaneous Exchanges den Conventions<ref name=":4">[https://web.archive.org/web/20160330132826/http://www.univ-batna.dz/index.php/fr/2014-02-04-08-47-56/vice-rectorat-des-relations-exterieures?id=261 "Universités Partenaires"]. ''www.univ-batna2.dz''. Archived from [http://www.univ-batna.dz/index.php/fr/2014-02-04-08-47-56/vice-rectorat-des-relations-exterieures?id=261 the original] on 2016-03-30. Retrieved 2016-03-20.</ref>
{| class="wikitable sortable"
|+''Universities dem partner<ref name=":4" />''
!Counties
!No. conventions
|-
|USA
|01
|-
|Italy
|02
|-
|France
|13
|-
|Spain
|01
|-
|Germany
|01
|-
|Brasil
|01
|-
|[[Tunisia]]
|03
|-
|[[Morocco]]
|01
|-
|[[Egypt]]
|02
|-
|Russia
|01
|}
== De UB2 Open University ==
Online courses via UB2 TV<ref>[https://www.youtube.com/channel/UC5qhQcSopPWZm6WV44FszSg "University Batna 2"]. ''YouTube''. Retrieved 2016-03-20.</ref> den Radio den E-Learning Platform (Moodle).
== Intensive Language Teaching Center ==
''(French: Centre d'Enseignement Intensif des Langues')''
De Intensive Language Teaching Center be one of de most important structures insyd UB2. Dem enroll 1,385 students thru three levels dey follow de Common European Framework of Reference for Languages. De center dey offer wide range of intensive teaching wey dey cover de many languages plus de following number of students dem enroll:
* 495 students dey learn American English
* 390 students dey learn French
* 190 students dey learn German
* 40 students dey learn Chinese
* 5 students dey learn Amazigh
== Central library ==
UB2 get central library wey dey situate insyd Fesdis Main Campus, den 8 dedicated faculty den institute libraries.
== Research laboratories ==
Der be 15 research laboratories insyd UB2.
== Students' associations den activities ==
UB2 dey comprise eight National Students' associations:
# Union Nationale des Etudiants Algériens
# Alliance pour le Renouveau
# Union Générale des Etudiants Algériens
# Solidarité Nationale des Etudiant
# Organisation Nationale du Salue Etudiant
# Ligue Nationale des Etudiants Algériens
# Union Générale des Etudiants Libres
# Organisation Nationale des Etudiants Algériens
== Traditions, customs den religion ==
De UB2 dey locate insyd de Capital of de Aures. Amazigh den Arabic cultures be de core of homogeneous society wey dey live plus de peaceful values of [[Islam]].
== Alumni ==
Ein mission be make e make de University of UB2 more open for de world, as well as make dem dey keep de former students, employees in touch for de national den international level.
== References ==
<references />
== External links ==
* [http://www.univ-batna2.dz/ UB2 Official Website]
* [https://web.archive.org/web/20170704155417/http://www.univ-batna.dz/ Hadj Lakhdar University]
* [https://web.archive.org/web/20130825111229/https://www.mesrs.dz/ Ministry of Higher Education and Scientific Research in Algeria]
* [https://web.archive.org/web/20240803203317/https://www.4icu.org/reviews/16956.htm World University Ranking UniRank]
[[Category:Universities insyd Algeria]]
[[Category:University of Batna]]
[[Category:1977 establishments insyd Algeria]]
[[Category:Universities den colleges dem establish insyd 1977]]
[[Category:Buildings den structures insyd Batna Province]]
[[Category:Educational institutions dem establish insyd 1977]]
[[Category:Education insyd Algeria]]
82aouzwkxlikehkm2h8g6zhumbjzrr9
Wendy Holdener
0
6719
111980
57672
2026-09-16T11:39:37Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111980
wikitext
text/x-wiki
{{Databox}}
'''Wendy Holdener''' (born 12 May 1993) be Swiss World Cup alpine ski racer wey dey specialise insyd slalom den combined.<ref>[https://www.fis-ski.com/DB/general/athlete-biography.html?sector=AL&fiscode=516280 "Wendy Holdener Biography"]. ''fis-ski.com''. Retrieved 7 March 2022.</ref><ref>Merrell, Chloe (14 January 2022). [https://olympics.com/en/news/wendy-holdener-alpine-skiing-slalom-profile "Top things to know about the resilient Wendy Holdener"]. ''olympics.com''. Retrieved 20 July 2024.</ref><ref>Douglas, Steve (8 February 2019). [https://www.cbc.ca/sports/olympics/winter/alpine-skiing/alpine-ski-worlds-womens-combined-1.5011100 "Switzerland's Holdener retains combined title at skiing worlds"]. ''CBC''. Retrieved 20 July 2024.</ref> She be two-time World champion insyd combined den five-time Olympic medalist,<ref>[https://olympics.com/beijing-2022/olympic-games/en/results/alpine-skiing/athlete-profile-n1048557-wendy-holdener.htm "Wendy Holdener Profile"]. ''olympics.com''. Retrieved 7 March 2022.</ref> four individual plus one gold medal insyd de team event for Pyeongchang insyd 2018.<ref>[https://www.olympedia.org/results/9000122 "Team, Mixed - Date 24 February 2018"]. ''olympedia.org''. Retrieved 7 March 2022.</ref><ref>[https://web.archive.org/web/20240720232953/https://www.x-bionic.com/en-ch/blogs/x-athletes/swissski "SwissSki"]. ''X-BIONIC''. Retrieved 20 July 2024.</ref> Four years later insyd 2022, she win silver medal insyd de combined.<ref>[https://www.nbcolympics.com/athletes/wendy-holdener-836102 "Wendy Holdener Olympic Profile | NBC Olympics"]. ''www.nbcolympics.com''. Retrieved 9 April 2022.</ref><ref>[https://olympics.nbcsports.com/2021/03/19/wendy-holdener-world-cup-finals-coronavirus/ "Wendy Holdener, Olympic medalist Alpine skier, out of World Cup Finals"]. ''OlympicTalk | NBC Sports''. Associated Press. 19 March 2021. Retrieved 9 April 2022.</ref>
== Career ==
[[File:Third_place,_Wendy_Holdener.jpg|left|thumb|Holdener for Stockholm ein Hammarbybacken for 2018 insyd]]
Holdener make ein World Cup debut insyd Sölden insyd October 2010, wey she attain ein first podium insyd March 2013, second place insyd slalom for Ofterschwang. Insyd 2016, she gain ein first two World Cup victories wey she win de crystal globe title insyd de combined discipline.<ref>[https://skiracing.com/hometown-hero-wendy-holdener-wins-alpine-combined-globe-in-lenzerheide/ "Hometown hero Wendy Holdener takes combined globe in Lenzerheide"]. ''skiracing.com''. 13 March 2016. Retrieved 7 March 2022.</ref>
Holdener ein first win insyd World Cup slalom cam insyd November 2022 for Killington, she share plus Anna Swenn-Larsson, after thirty previous podiums insyd de discipline widout victory. Anoda win cam two weeks later for Sestriere, Italy.
Holdener fini de season insyd seventh place overall insyd de 2023 season<ref>[https://www.fis-ski.com/DB/alpine-skiing/cup-standings.html?sectorcode=AL&seasoncode=2023&cupcode=WC&disciplinecode=ALL&gendercode=W&nationcode= "CUP STANDINGS WORLD CUP Season 2023 Women Overall"]. ''fis-ski.com''. Retrieved 11 March 2023.</ref> den second insyd Slalom.<ref>[https://www.fis-ski.com/DB/alpine-skiing/cup-standings.html?sectorcode=AL&seasoncode=2023&cupcode=WC&disciplinecode=SL&gendercode=W&nationcode= "CUP STANDINGS WORLD CUP Season 2023 Women Slalom"]. ''fis-ski.com''. Retrieved 7 April 2024.</ref>
== World Cup results ==
=== Season titles ===
* 2 titles – (2 combined)
{| class="wikitable" style="font-size:95%; text-align:center; border:grey solid 1px; border-collapse:collapse;" width="10%"
| style="background:#369; color:white; width:5%;" |'''Season'''
| style="background:#4180be; color:white; width:5%;" |'''Discipline'''
|-
!2016
|Combined
|-
!2018
|Combined
|}
=== Season standings ===
[[File:Podium_Women's_Slalom_2023_(33).jpg|thumb|Holdener dey celebrate podium finish insyd Slalom for 2023 insyd plus Shiffrin & [[Petra Vlhová|Vlhová]].]]
{| class="wikitable"
| rowspan="2" |'''Season'''
|-
|Age
|'''Overall'''
|Slalom
|Giant
slalom
|Super-G
|Downhill
|Combined
|Parallel
|-
|2011
|''17''
|89
|38
|—
|—
|49
|27
| rowspan="9" |—
|-
|2012
|''18''
|67
|31
|—
|—
|—
|19
|-
|2013
|''19''
|20
|6
|42
|—
|—
|33
|-
|2014
|''20''
|29
|10
|35
|—
|—
|12
|-
|2015
|''21''
|22
|8
|46
|52
|—
|7
|-
|2016
|''22''
|6
|3
|30
|45
|—
|1
|-
|2017
|''23''
|8
|3
|22
|53
|—
|3
|-
|2018
|''24''
|2
|2
|8
|22
|39
|1
|-
|2019
|''25''
|3
|3
|7
|22
|48
|3
|-
|2020
|''26''
|6
|4
|6
|15
|38
|2
|13
|-
|2021
|''27''
|10
|5
|22
|27
|—
| rowspan="4" |—
|20
|-
|2022
|''28''
|14
|5
|25
|25
|46
|—
|-
|2023
|''29''
|7
|2
|17
|24
|—
| rowspan="2data-sort-value=""" |—
|-
|2024
|''30''
|''20''
|''7''
|''29''
|—
|—
|}
: Standings thru 26 December 2023
=== Race podiums ===
* 5 wins – (2 SL, 1 PSL, 2 AC)
* [[File:Wendy Holdener Grandvalira 2023 GS 1st run (6).jpg|thumb|Holdener skiing insyd 2023]]49 podiums – (35 SL, 5 PSL, 5 AC, 2 GS, 2 SG)
{| class="wikitable"
| colspan="1" rowspan="2" |'''Season'''
|-
|Date
|Location
|Discipline
|Place
|-
|'''2013'''
|10 March 2013
|Ofterschwang, Germany
|Slalom
|2nd
|-
|'''2015'''
|29 December 2014
|Kühtai, Austria
|Slalom
|3rd
|-
| rowspan="5" |'''2016'''
|29 December 2015
|Lienz, Austria
|Slalom
|2nd
|-
|23 February 2016
|Stockholm, Sweden
|City event
|'''1st'''
|-
|28 February 2016
| Soldeu, Andorra
|Combined
|2nd
|-
|6 March 2016
|Jasná, Slovakia
|Slalom
|2nd
|-
|13 March 2016
| Lenzerheide, Switzerland
|Combined
|'''1st'''
|-
| rowspan="6" |'''2017'''
|12 November 2016
|Levi, Finland
|Slalom
|2nd
|-
|27 November 2016
|Killington, USA
|Slalom
|3rd
|-
|11 December 2016
|Sestriere, Italy
|Slalom
|3rd
|-
|29 December 2016
|Semmering, Austria
|Slalom
|3rd
|-
|8 January 2017
|Maribor, Slovenia
|Slalom
|2nd
|-
|10 January 2017
|Flachau, Austria
|Slalom
|3rd
|-
| rowspan="11" |'''2018'''
|12 November 2017
|Levi, Finland
|Slalom
|3rd
|-
|28 December 2017
|Lienz, Austria
|Slalom
|2nd
|-
|1 January 2018
| Oslo, Norway
|City event
|2nd
|-
|3 January 2018
|Zagreb, Croatia
|Slalom
|2nd
|-
|7 January 2018
|Kranjska Gora, Slovenia
|Slalom
|3rd
|-
|26 January 2018
| rowspan="2" | Lenzerheide, Switzerland
|Combined
|'''1st'''
|-
|28 January 2018
|Slalom
|3rd
|-
|30 January 2018
|Stockholm, Sweden
|City event
|2nd
|-
|3 March 2018
| Crans-Montana, Switzerland
|Super-G
|3rd
|-
|10 March 2018
|Ofterschwang, Germany
|Slalom
|2nd
|-
|17 March 2018
|Åre, Sweden
|Slalom
|2nd
|-
| rowspan="8" |'''2019'''
|9 December 2018
| St. Moritz, Switzerland
|Parallel slalom
|3rd
|-
|29 December 2018
|Semmering, Austria
|Slalom
|3rd
|-
|1 January 2019
| Oslo, Norway
|City event
|3rd
|-
|5 January 2019
|Zagreb, Croatia
|Slalom
|3rd
|-
|2 February 2019
|Maribor, Slovenia
|Slalom
|3rd
|-
|24 February 2019
| Crans-Montana, Switzerland
|Combined
|3rd
|-
|9 March 2019
|Špindlerův Mlýn, Czech Republic
|Slalom
|2nd
|-
|16 March 2019
| Soldeu, Andorra
|Slalom
|2nd
|-
| rowspan="6" |'''2020'''
|23 November 2019
|Levi, Finland
|Slalom
|2nd
|-
|17 December 2019
|Courchevel, France
|Giant slalom
|3rd
|-
|12 January 2020
|Altenmarkt, Austria
|Combined
|2nd
|-
|9 February 2020
|Garmisch-Partenkirchen, Germany
|Super-G
|3rd
|-
|15 February 2020
| rowspan="2" |Kranjska Gora, Slovenia
|Giant slalom
|3rd
|-
|16 February 2020
|Slalom
|2nd
|-
| rowspan="3" |'''2021'''
|12 January 2021
|Flachau, Austria
|Slalom
|3rd
|-
|6 March 2021
|Jasná, Slovakia
|Slalom
|3rd
|-
|13 March 2021
|Åre, Sweden
|Slalom
|3rd
|-
| rowspan="2" |'''2022'''
|28 November 2021
|Killington, USA
|Slalom
|3rd
|-
|9 January 2022
|Kranjska Gora, Slovenia
|Slalom
|2nd
|-
| rowspan="5" |'''2023'''
|20 November 2022
|Levi, Finland
|Slalom
|2nd
|-
|27 November 2022
|Killington, USA
|Slalom
|'''1st'''
|-
|11 December 2022
|Sestriere, Italy
|Slalom
|'''1st'''
|-
|28 January 2023
|Špindlerův Mlýn, Czech Republic
|Slalom
|3rd
|-
|11 March 2023
|Åre, Sweden
|Slalom
|2nd
|-
| rowspan="1" |'''2024'''
|26 November 2023
|Killington, USA
|Slalom
|3rd
|}
== World Championship results ==
{| class="wikitable"
| colspan="1" rowspan="2" |'''Year'''
|-
|Age
|Slalom
|Giant
slalom
|Super-G
|Downhill
|Combined
|Parallel
|Team Event
|-
|2011
|''17''
|DNF2
|29
|—
|—
|—
| rowspan="5" |—
|5
|-
|2013
|''19''
|11
|26
|—
|—
|—
|9
|-
|2015
|''21''
|DNF2
|17
|—
|—
|—
|4
|-
|2017
|''23''
|2
|—
|—
|—
|1
|4
|-
|2019
|''25''
|17
|15
|14
|—
|1
|1
|-
|2021
|''27''
|4
|8
|—
|—
|DNF SL
|7
|4
|-
|2023
|''29''
|DNF2
|18
|—
|—
|2
|2
|5
|}
== Olympic results ==
{| class="wikitable"
| colspan="1" rowspan="2" |'''Year'''
|-
|Age
|Slalom
|Giant
slalom
|Super-G
|Downhill
|Combined
|Team event
|-
|2014
|''20''
|DNF1
|DNF1
|—
|—
|—
|—
|-
|2018
|''24''
|2
|9
|—
|—
|3
|1
|-
|2022
|''28''
|3
|9
|—
|—
|2
|—
|}
== References ==
<references />
== External links ==
{{Commons}}
* [https://www.fis-ski.com/DB/general/athlete-biography.html?sectorcode=AL&competitorid=148331 Wendy Holdener] at FIS (alpine)
* [https://olympics.com/en/athletes/wendy-holdener Wendy Holdener] at Olympics.com
* [https://www.olympedia.org/athletes/128455 Wendy Holdener] at Olympedia
* [https://www.ski-db.com/db/profiles/wendy_holdener_sui_516280.php Wendy Holdener] at Ski-DB Alpine Ski Database
* [https://web.archive.org/web/20161204/https://www.sports-reference.com/olympics/athletes/ho/wendy-holdener-1.html Wendy Holdener] at Olympics at Sports-Reference.com (archived)
* [https://web.archive.org/web/20210506073605/https://www.swiss-ski.ch/ski-alpin/athleten/detail/wendy-holdener/ Swiss Ski team] at Swiss Ski Team (insyd German)
* [https://web.archive.org/web/20160302025624/http://www.head.com/us/athletes/ski/race/wendy-holdener/ Head Skis] at Head website
* [http://www.wendyholdener.ch/ Official website] (insyd German)
[[Category:Human]]
[[Category:Swiss female alpine skiers]]
[[Category:1993 births]]
[[Category:Alpine skiers at de 2014 Winter Olympics]]
[[Category:Alpine skiers at de 2018 Winter Olympics]]
[[Category:Alpine skiers at de 2022 Winter Olympics]]
[[Category:Olympic alpine skiers for Switzerland]]
[[Category:Medalists at de 2018 Winter Olympics]]
[[Category:Medalists at de 2022 Winter Olympics]]
[[Category:Olympic medalists insyd alpine skiing]]
[[Category:Olympic gold medalists for Switzerland]]
[[Category:Olympic silver medalists for Switzerland]]
[[Category:Olympic bronze medalists for Switzerland]]
[[Category:Sportspeople wey komot de canton of Schwyz]]
[[Category:21st-century Swiss women]]
c2ccihjid0w8nd90hs0889qs37ysp8q
Christine Girard
0
8333
111968
49142
2026-09-16T02:01:16Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111968
wikitext
text/x-wiki
{{Databox}}
'''Christine Girard''' (born January 3, 1985)<ref name=":0">[https://web.archive.org/web/20110527162037/http://www.iwf.net/results/results_athlete_e.php?compid=809 "GIRARD Christine ---- 03.01.1985---- CAN"]. ''iwf.net''. 2010. Archived from [http://www.iwf.net/results/results_athlete_e.php?compid=809 the original] on May 27, 2011. Retrieved September 9, 2024.</ref> be Canadian weightlifter wey komot Rouyn-Noranda, Quebec (currently dey live insyd Gatineau, Quebec). She dey compete insyd de 63 kg division. Na Girard be de first Canadian female make she win medal insyd weightlifting wen she win gold for de 2012 London Olympics. She sanso win Commonwealth Games den Pan American Games titles insyd ein weight class wey na she win multiple medals insyd each of those competitions. She dey zuk de Commonwealth games record den de Pan-American Games record insyd de Clean den Jerk.
== Career ==
Weightlifting cam turn passion give Girard den ein three sistos wen dem move go Quebec. She begin training early wey she enter ein first provincial competition wen na she be 12.<ref name=":1">[http://www.christinegirard.ca/EN/PROFIL "Christine Girard Profile"]. [https://web.archive.org/web/20131016030946/http://www.christinegirard.ca/EN/PROFIL Archived] from the original on October 16, 2013. Retrieved July 31, 2012.</ref> Girard cam turn member of de national team insyd 2001 for de age of 16 wen she compete insyd Greece. Insyd 2002, she win bronze medal for de Commonwealth Games wich she improve upon insyd 2006 plus silver. For de 2006 University World Championships she win de bronze medal.<ref name=":0" /> She next win silver for de 2007 Pan American Games. Girard then fini 8th for de 2007 World Weightlifting Championships plus total of 221 kg. Girard then enter de [[2008 Summer Olympics]], she improve upon dis by she fini fourth, plus total of 228 kg den 3 kg away from a medal.<ref name=":0" />
[[File:Christine_Girard_2010.jpg|left|thumb|Girard for de 2010 Commonwealth Games.]]
Girard build upon dese achievements by she finally win crown as champion wen she win de gold medal for de 2010 Commonwealth Games insyd Delhi wey she plete ein Commonwealth Games medal collection. En route to she win ein gold, Girard set Commonwealth Games record insyd de snatch at 105 kg, insyd de clean den jerk she add additional 130 kg for total of 235 kg wich na dem sanso be Commonwealth records.<ref>[https://www.cbc.ca/sports/girard-wins-canada-s-2nd-weightlifting-gold-1.932398 "Girard wins Canada's 2 weightlifting gold"]. CBC Sports. July 31, 2012.</ref> Girard next conquer de 2011 Pan American Games wen na she win de gold insyd ein weight class insyd Guadalajara.<ref>[https://www.cbc.ca/sports/pan-am-games-canadian-trail-1.977228 "Pan Am Games: Canadian Trail"]. CBC Sports. October 30, 2011. Retrieved July 31, 2012.</ref>
For de [[2012 Summer Olympics]], Girard participate insyd de women's 63 kg. She fini fourth insyd de snatch portion, then second insyd de clean den jerk, she lift 133 kg. Ein total of 236 kg put am third, behind Maiya Maneza den Svetlana Tsarukayeva.<ref>[http://www.ctvolympics.ca/other/news/article/canadian-girard-4th-after-snatch-portion-53kg-weightlifting.html "Canadian Girard Wins Bronze in 53kg Weightlifting"]. CTV Olympics. July 31, 2012. Retrieved July 31, 2012.</ref><ref>[https://web.archive.org/web/20180420073828/http://www.recorder.ca/2012/07/31/canadian-weightlifter-christine-girard-wins-bronze "Canadian weightlifter Christine Girard wins bronze"]. Retrieved July 31, 2012.</ref> She cam turn de first Canadian woman, den third Canadian overall, make she win medal insyd weightlifting.<ref>[http://www.winnipegfreepress.com/sports/olympics/christine-girard-wins-bronze-medal-in-weightlifting-at-london-olympics-164441366.html "Girard makes history, wins Canada's first Olympic weightlifting medal"]. ''Winnipeg Free Press''. July 31, 2012.</ref> Girard say dat na winning de Olympic medal be one of ein top two best moments for life insyd, "''It is very hard to describe how I feel.'' ''Four years ago in Beijing I came fourth, and since then I have spent the past four years training through injuries and various changes in my life to get to this moment. All I have been thinking about is getting on the podium. Now I have reached it. It feels good. I should say my wedding comes close, but this is completely different''.<ref>Rosie DiManno (July 31, 2012). [https://www.thestar.com/sports/london2012/article/1235037--london-2012-canada-s-three-bronze-medals-costly-for-olympic-hosts-dimanno "London 2012: Canada's three bronze medals costly for Olympic hosts: DiManno"]. ''Toronto Star''.</ref>
Insyd July 2016, de International Weightlifting Federation (IWF) report say de IOC dey reanalyse samples dem take insyd 2012 dem uncover prohibited anabolic agents insyd both de gold medallist den silver medallist.<ref name=":2">[http://www.iwf.net/2016/07/27/public-disclosures-4/ PUBLIC DISCLOSURES | International Weightlifting Federation]. Iwf.net. Retrieved on October 21, 2016.. </ref> Na dem comfirm dese insyd 2018, wey make Girard de first Canadian gold medallist insyd female weightlifting since ein introduction insyd 2000. Na dem confirm dis insyd April 2018.<ref>[http://www.cbc.ca/sports/olympics/canadian-christine-girard-olympic-gold-medal-2102-1.4626610 "Canadian weightlifter gets 2012 Olympic gold after top 2 stripped of medals - CBC Sports"]. Retrieved April 19, 2018.</ref>
After reanalysis of de 2008 Beijing Olympics insyd August 2016, de IWF report say silver medallist na Irina Nekrassova use substance dem prohibit.<ref name=":2" /> Na dem confirm dis insyd 2018 wey dem award Girard bronze medal, wey dey precede ein previous standing of first female Canadian weightlifting medallist to 2008.<ref>[https://www.olympic.org/christine-girard "Christine Girard Olympic Profile"]. Retrieved April 19, 2018.</ref> Girard receive both de Beijing bronze den London gold medals for ceremony insyd Ottawa for December 3, 2018.<ref>Schmunk, Rhianna (December 3, 2018). [https://www.cbc.ca/news/canada/british-columbia/canadian-weightlifter-christine-girard-receives-her-olympics-medals-1.4929717 "Years after being denied by doping cheats, weightlifter Christine Girard receives Olympic medals"]. ''CBC News''. Retrieved June 26, 2019.</ref>
Insyd October 2019, na dem induct Girard into de Canadian Olympic Committee ein Hall of Fame.<ref>[https://olympic.ca/press/canadian-olympic-hall-of-fame-class-of-2019-unveiled/ "Canadian Olympic Hall of Fame Class of 2019 unveiled"]. ''Team Canada - Official Olympic Team Website''. Retrieved May 9, 2022.</ref>
Insyd July 2020, na dem induct Girard into de Pan-American Weightlifting Federation ein Hall of Fame.<ref>[https://iwf.sport/2020/07/28/pan-american-weightlifting-federation-hall-fame-2020/ "The Pan American Weightlifting Federation – Hall of Fame 2020"]. ''International Weightlifting Federation''. July 28, 2020. Retrieved July 31, 2024.</ref>
Insyd February 2023, na dem name Girard Chef de Mission for Team Canada for de 2023 Pan-American Games insyd Santiago, Chile.<ref>[https://olympic.ca/press/christine-girard-named-team-canadas-chef-de-mission-for-santiago-2023/ "Christine Girard named Team Canada's Chef de Mission for Santiago 2023"]. ''Team Canada - Official Olympic Team Website''. Retrieved July 31, 2024.</ref>
== Coaching ==
Girard begin dey coach oda athletes insyd weightlifting after ein move to BC while na she dey prepare for de [[2012 Summer Olympics]]. Upon ein return from de Olympic Games, Girard begin dey coach insyd greater capacity. She start ein own weightlifting club – de Kilophile Weightlifting Club – wey dey offer coaching services to oda fitness centres notably insyd Crossfit Gyms.
== Anti-Doping Advocacy ==
Girard be involved insyd anti-doping advocacy work for both de domestic den international level. Girard be for de board of directors top for de [https://cces.ca/ Canadian Centre for Ethics in Sport],<ref>[https://cces.ca/governance "Governance | Canadian Centre for Ethics in Sport"]. ''cces.ca''. Retrieved May 9, 2022.</ref> de International Weightlifting Federation ein Anti-Doping Commission<ref>[https://iwf.sport/focus-on-iwf/commissions/ "Commissions"]. Retrieved May 9, 2022.</ref> wey ebe Education Ambassador plus de International Testing Agency.<ref>[https://web.archive.org/web/20240809094216/https://ita.sport/ambassador/christine-girard-oly/ International Testing Agency-Christine Girard OLY"]. ''International Testing Agency''. Retrieved May 9, 2022.</ref>
== Ein life matter ==
Na dem born Girard insyd Elliot Lake, Ontario buh she move plus ein family to Rouyn-Noranda, Quebec insyd 1992 wen na she be seven.<ref name=":1" /> She then move go White Rock, British Columbia insyd January 2010, before she return to Quebec insyd 2018, dis time she settle insyd de city of Gatineau insyd Canada ein National Capital Region.<ref name=":1" /> Na weightlifting be family affair give Girard wey ein family continue dey hold provincial den local roles for de sport insyd Quebec.<ref name=":1" /> For June 11, 2011 she marry ein coachie Walter Bailey. She get three kiddies.<ref name=":1" />
== Occupational Therapy ==
Insyd 2021, Girard receive ein Masters of Health Sciences Degree insyd Occupational Therapy from de University of Ottawa. Girard be practicing Occupational Therapist,<ref>[https://www.cgirard.ca/ "Performance Through Wellness Performance Mieux-Être | Occupational Therapy Gatineau | 745 Chemin d'Aylmer, Gatineau, QC, Canada"]. ''Performance Through''. Retrieved July 31, 2024.</ref> wey she register plus de College of Occupational Therapists of Ontario den Association canadienne des ergothérapeutes.
== References ==
<references />
== External links ==
Wikimedia Commons get media wey relate to '''''[[commons:Category:Christine_Girard|Christine Girard]]'''''.
* [https://web.archive.org/web/20180804023122/http://christinegirard.ca/ Official website] at de Wayback Machine (archived August 4, 2018)
* [https://iwf.sport/weightlifting_/athletes-bios/?athlete=&id=809 Christine Girard] at de International Weightlifting Federation
* [https://web.archive.org/web/20220101/https://thecgf.com/results/athletes/55837 Christine Girard] at de Commonwealth Games Federation (archived)
* [https://olympic.ca/team-canada/christine-girard/ Christine Girard] at Team Canada
* [https://olympics.com/en/athletes/christine-girard Christine Girard] at Olympics.com
* [https://www.olympedia.org/athletes/116267 Christine Girard] at Olympedia
{| class="wikitable mw-collapsible"
! colspan="2" |Olympic champions insyd weightlifting – Women's Middleweight
|-
| colspan="2" |
* 2000: Chen Xiaomin (CHN)
* 2004: Nataliya Skakun (UKR)
* 2008: Pak Hyon-suk (PRK)
* 2012: Christine Girard (CAN)
* 2016: Deng Wei (CHN)
* 2020: Maude Charron (CAN)
|}
{| class="wikitable mw-collapsible"
! colspan="2" |Commonwealth Games Champions insyd Weightlifting – Women's Light Heavyweight
|-
| colspan="2" |
* 2002 Madeleine Yamechi (CMR)
* 2006 Jeane Lassen (CAN)
* 2010 Christine Girard (CAN)
* 2014 Marie Fegue (CMR)
* 2018 Punam Yadav (IND)
|}
{| class="wikitable mw-collapsible"
! colspan="2" |Pan American Champions insyd Weightlifting – Women's Middleweight
|-
| colspan="2" |63 kg (1999–2015) · 64 kg (2019–)
|-
| colspan="2" |
* 1999 Miel McGerrigle (CAN)
* 2003 Ubaldina Valoyes (COL)
* 2007 Leydi Solís (COL)
* 2011 Christine Girard (CAN)
* 2015 Mercedes Pérez (COL)
* 2019 Mercedes Pérez (COL)
|}
[[Category:Human]]
[[Category:1985 births]]
[[Category:Canadian female weightlifters]]
[[Category:Commonwealth Games gold medallists for Canada]]
[[Category:Commonwealth Games silver medallists for Canada]]
[[Category:Commonwealth Games bronze medallists for Canada]]
[[Category:Medalists at de 2008 Summer Olympics]]
[[Category:Medalists at de 2012 Summer Olympics]]
[[Category:Olympic gold medalists for Canada]]
[[Category:Olympic bronze medalists for Canada]]
[[Category:Olympic medalists insyd weightlifting]]
[[Category:Olympic weightlifters for Canada]]
[[Category:People wey komot Elliot Lake]]
[[Category:Sportspeople wey komot Rouyn-Noranda]]
[[Category:People wey komot White Rock, British Columbia]]
[[Category:Sportspeople wey komot British Columbia]]
[[Category:Sportspeople wey komot Quebec]]
[[Category:Strength sportspeople wey komot Ontario]]
[[Category:Weightlifters at de 2002 Commonwealth Games]]
[[Category:Weightlifters at de 2006 Commonwealth Games]]
[[Category:Weightlifters at de 2010 Commonwealth Games]]
[[Category:Weightlifters at de 2007 Pan American Games]]
[[Category:Weightlifters at de 2008 Summer Olympics]]
[[Category:Weightlifters at de 2011 Pan American Games]]
[[Category:Weightlifters at de 2012 Summer Olympics]]
[[Category:Commonwealth Games medallists insyd weightlifting]]
[[Category:Pan American Games medalists insyd weightlifting]]
[[Category:Pan American Games gold medalists for Canada]]
[[Category:Pan American Games silver medalists for Canada]]
[[Category:Medalists at de 2007 Pan American Games]]
[[Category:Medalists at de 2011 Pan American Games]]
[[Category:21st-century Canadian women]]
[[Category:Medallists at de 2002 Commonwealth Games]]
[[Category:Medallists at de 2006 Commonwealth Games]]
[[Category:Medallists at de 2010 Commonwealth Games]]
[[Category:University of Ottawa alumni]]
pnml6wb8f56r7edkdvq2i5d7sa4k4mf
Module:Data
828
28343
111941
106800
2026-09-15T22:07:33Z
DaSupremo
9
Protected "[[Module:Data]]" ([Edit=Allow only administrators] (indefinite) [Move am=Allow only administrators] (indefinite))
106800
Scribunto
text/plain
local mt = {}
function mt.__index(t, k)
return function(frame)
local success, data = pcall(mw.loadData, k)
if not success then
success, data = pcall(mw.loadJsonData, k)
if not success then
error("'" .. k .. "' is not a valid data page")
end
end
for i, v in ipairs(frame.args) do
local ty = type(data)
if ty ~= 'table' then
local args = {}
for j = 1, i - 1 do
args[j] = frame.args[j]
end
if frame.args.softfail then
return '<span class="error">[[Category:Pages with failed Module:Data lookups]]Error: Tried to read index "' .. mw.text.nowiki(v) .. '" of mw.loadData("' .. mw.text.nowiki(k) .. '").' .. mw.text.nowiki(table.concat(args, '.')) .. ', which is a ' .. ty .. '</span>'
else
error('Tried to read index "' .. v .. '" of mw.loadData("' .. k .. '").' .. table.concat(args, '.') .. ', which is a ' .. ty)
end
end
local nextdata = data[v]
if nextdata == nil and tonumber(v) then
data = data[tonumber(v)]
else
data = nextdata
end
end
return data
end
end
return setmetatable({}, mt)
ame5rcrdmkbs09kdr0t75hcd2f2jeyu
Module:Error
828
28493
111942
107053
2026-09-15T22:09:25Z
DaSupremo
9
Protected "[[Module:Error]]" ([Edit=Allow only administrators] (indefinite) [Move am=Allow only administrators] (indefinite))
107053
Scribunto
text/plain
-- This module implements {{error}}.
local p = {}
function p._error(args)
local tag = mw.ustring.lower(tostring(args.tag))
-- Work out what html tag we should use.
if not (tag == 'p' or tag == 'span' or tag == 'div') then
tag = 'strong'
end
-- Generate the html.
return tostring(mw.html.create(tag)
:addClass('error')
:cssText(args.style)
:wikitext(tostring(args.message or args[1] or error('no message specified', 2)))
)
end
function p.error(frame)
local args
if type(frame.args) == 'table' then
-- We're being called via #invoke. The args are passed through to the module
-- from the template page, so use the args that were passed into the template.
args = frame.args
else
-- We're being called from another module or from the debug console, so assume
-- the args are passed in directly.
args = frame
end
-- if the message parameter is present but blank, change it to nil so that Lua will
-- consider it false.
if args.message == "" then
args.message = nil
end
return p._error(args)
end
return p
p2nz3ttxcounymhrrhzzv162xd74myk
Wikipedia:Lua
4
29173
111934
108884
2026-09-15T19:10:11Z
Nimmzo
7362
/* Read further */ +[[Special:PrefixIndex/Module:]]
111934
wikitext
text/x-wiki
[[Lua]] be a lightweight [[scripting language]] wey fi be embedded insyd [[Wikipedia:Templates|templates]] thru de [[mw:Extension:Scribunto|Scribunto]] [[MediaWiki extension]] to create scripts on de English Wikipedia. Since February 2013, Lua code be available for use on de English Wikipedia via the <code>{{mwl|#invoke|}}</code> function. {{As of|2022|10}}, Scribunto supports Lua 5.1.
== Read further ==
* [[Special:PrefixIndex/Module:]] List wey Lua modules dey
7ow4wf8b2xdffmgyuglfa20ubb3w6y2
111935
111934
2026-09-15T19:50:18Z
Nimmzo
7362
/* lead section */ red wikilink → [[mw:Help:Templates/en|templates]]. Switch back to Ghanaian Pidgin language when the article will be created
111935
wikitext
text/x-wiki
[[Lua]] be a lightweight [[scripting language]] wey fi be embedded insyd [[mw:Help:Templates/en|templates]] thru de [[mw:Extension:Scribunto|Scribunto]] [[MediaWiki extension]] to create scripts on de English Wikipedia. Since February 2013, Lua code be available for use on de English Wikipedia via the <code>{{mwl|#invoke|}}</code> function. {{As of|2022|10}}, Scribunto supports Lua 5.1.
== Read further ==
* [[Special:PrefixIndex/Module:]] List wey Lua modules dey
f2qx74olithwr1izkwt9szsuqrmxi14
111936
111935
2026-09-15T20:00:07Z
Nimmzo
7362
/* lead section */ the keyword is `safe`
111936
wikitext
text/x-wiki
[[Lua]] be one safe programming language wey people fit put inside [[mw:Help:Templates/en|templates]] through de [[mw:Extension:Scribunto|Scribunto]] MediaWiki extension, so dem fit create scripts for de Ghanaian Pidgin Wikipedia. Since February 2013, Lua code be available for use on de English Wikipedia via the <code>{{mwl|#invoke|}}</code> function. {{As of|2022|10}}, Scribunto supports Lua 5.1.
== Read further ==
* [[Special:PrefixIndex/Module:]] List wey Lua modules dey
3ao44mb7bnwsskxq9jw3rinj5mh59et
111937
111936
2026-09-15T20:10:18Z
Nimmzo
7362
/* lead section */ +syntaxhighlight inline
111937
wikitext
text/x-wiki
[[Lua]] be one safe programming language wey people fit put inside [[mw:Help:Templates/en|templates]] through de [[mw:Extension:Scribunto|Scribunto]] MediaWiki extension, so dem fit create scripts for de Ghanaian Pidgin Wikipedia. Since February 2013, people fit use Lua code for de Wikipedia through <syntaxhighlight lang="wikitext" inline>#invoke:</syntaxhighlight> Scribunto dey support Lua 5.1.
== Read further ==
* [[Special:PrefixIndex/Module:]] List wey Lua modules dey
6f102yg59sf4wyhqq2m6g2hyrz7x8gc
Module:WikidataCheck
828
29251
111946
109168
2026-09-15T22:16:12Z
DaSupremo
9
Protected "[[Module:WikidataCheck]]" ([Edit=Allow only administrators] (indefinite) [Move am=Allow only administrators] (indefinite))
109168
Scribunto
text/plain
local p = {}
function p.wikidatacheck(frame)
local pframe = frame:getParent()
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
local property = config.property
local value = config.value or ""
local catbase = config.category
local namespaces = config.namespaces
local nocatsame = config.nocatsame or ""
local ignorecase = config.ignorecase or ""
local qid = config.qid or ""
local onlysourced = (config.onlysourced == 'yes') or false
local ok = false -- one-way flag to check if we're in a good namespace
local ns = mw.title.getCurrentTitle().namespace
for v in mw.text.gsplit( namespaces, ",", true) do
if tonumber(v) == ns then
ok = true
end
end
if not ok then -- not in one of the approved namespaces
return ""
end
local entity
if qid == "" then
entity = mw.wikibase.getEntityObject()
else
entity = mw.wikibase.getEntityObject(qid)
end
if not entity then -- no Wikidata item
return "[[Category:" .. catbase .. " not in Wikidata]]"
end
if value == "" then
return nil -- Using Wikidata
end
local claims = entity.claims or {}
local hasProp = claims[property]
if not hasProp then -- no claim of that property
return "[[Category:" .. catbase .. " not in Wikidata]]" -- bad. Bot needs to add the property
end
if ignorecase ~= "" then
value = string.lower( value )
end
for i, v in ipairs(hasProp) do -- Now we try to iterate over all possible values?
propValue = (v.mainsnak.datavalue or {}).value
if ignorecase ~= "" then
propValue = string.lower( propValue )
end
local sourced = false -- check for external refs a la Module:WikidataIB onlysourced
if v.references then
for j, vr in ipairs(v.references) do
local ref = mw.wikibase.renderSnaks(vr.snaks)
if not ref:find("Wiki") then
sourced = true
break
end
end
end
if propValue == value and (not onlysourced or sourced) then
if nocatsame == "" then
return "[[Category:" .. catbase .. " same as Wikidata]]" -- yay!
else
return nil -- if nocatsame, the "same as" category is not added
end
end
end
return "[[Category:" .. catbase .. " different from Wikidata]]" -- needs human review :(
end
return p
0aruyv7g8m0jjwgb2002hlhcpqup2xw
Module:Icon
828
29349
111943
109352
2026-09-15T22:11:20Z
DaSupremo
9
Protected "[[Module:Icon]]" ([Edit=Allow only administrators] (indefinite) [Move am=Allow only administrators] (indefinite))
109352
Scribunto
text/plain
-- This module implements [[Template:Icon]].
require("strict")
local yesNo = require("Module:Yesno")
local getArgs = require("Module:Arguments").getArgs
local p = {}
-- Determine whether we're being called from a sandbox
local sandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) and '/sandbox' or ''
-- Implements [[Template:Icon]]
-- Returns the icon image corresponding to a string (like 'B')
function p._main(args, data)
local data_module = 'Module:Icon/data'..sandbox
data = data or mw.loadData(data_module)
local code = args.class or args[1]
local iconData
if code then
code = code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case
iconData = data[code]
end
if not iconData then
iconData = data._DEFAULT
end
return string.format(
'[[File:%s%s%s|%s|class=noviewer|alt=%s]]',
iconData.image,
iconData.tooltip and '|' .. iconData.tooltip or '',
iconData.link == false and '|link=' or '',
args.size or '16x16px',
iconData.alt or ''
)
end
-- Implements [[Template:Icon link]], a superset of [[Template:Icon]]
-- Returns an icon, plus a suitably formatted wikilink
function p._link(args, data)
args.size = args.size or args.iconsize
local icon = p._main(args, data)
-- If no link given in args[2], default back to [[Template:Icon]]
if not args[2] then
return icon
end
-- Strip wiki markup out of link
local getPlain = require("Module:Text").Text().getPlain
local link = getPlain(args[2])
local display = args[3] or args[2]
-- italicize display string, if requested
if yesNo(args.i) or yesNo(args.italic) or yesNo(args.italics) then
display = '<i>'..display..'</i>'
end
-- if display is link, just use standard wlink
if link == display then
return '<span class="nowrap">'..icon..' </span>[['..link..']]'
end
return '<span class="nowrap">'..icon..' </span>[['..link..'|'..display..']]'
end
function p.main(frame)
local args = getArgs(frame,{parentFirst=true})
return p._main(args)
end
function p.link(frame)
local args = getArgs(frame,{parentFirst=true})
return p._link(args)
end
p[''] = function (frame) return p._main(frame.args) end
return p
7i1qzcjn891dcsvokxm98rcqxwkasz0
Module:Portal bar
828
29359
111945
109363
2026-09-15T22:15:26Z
DaSupremo
9
Protected "[[Module:Portal bar]]" ([Edit=Allow only administrators] (indefinite) [Move am=Allow only administrators] (indefinite))
109363
Scribunto
text/plain
-- This module implements {{portal bar}}.
require('strict')
-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true)
local sandbox = isSandbox and '/sandbox' or ''
local portalModule = require('Module:Portal'..sandbox)
local getImageName = portalModule._image
local checkPortals = portalModule._checkPortals
local processPortalArgs = portalModule._processPortalArgs
local yesno = require( 'Module:Yesno' )
local getArgs = require('Module:Arguments').getArgs
local p = {}
local function sandboxVersion(s)
return isSandbox and s.."-sand" or s
end
-- Builds the portal bar used by {{portal bar}}.
function p._main( portals, args )
-- check for sensible args
args = type(args) == "table" and args or {}
-- Normalize arguments
for key, default in pairs({border=true,redlinks=false,tracking=true}) do
if args[key] == nil then args[key] = default end
args[key] = yesno(args[key], default)
end
local nav = mw.html.create( 'div' )
:addClass(sandboxVersion('portal-bar'))
:addClass( 'noprint metadata noviewer' )
:attr( 'role', 'navigation' )
:attr( 'aria-label' , 'Portals' )
:addClass(sandboxVersion(args.border and 'portal-bar-bordered' or 'portal-bar-unbordered'))
local trackingCat = ''
-- Allow any number of portals
args.minPortals = 0
args.maxPortals = -1
-- Check to see whether there are redlinks, filter out unless args.redlink is true
portals, trackingCat = checkPortals(portals, args)
nav:wikitext(trackingCat)
if #portals == 0 then
return trackingCat
end
local related = yesno(args.related)
if related then
nav:addClass(sandboxVersion('portal-bar-related'))
else
local header = nav:tag('span')
header:addClass(sandboxVersion('portal-bar-header'))
header:wikitext('[[Wikipedia:Contents/Portals|Portal]]')
if #portals > 1 then
header:wikitext('s')
end
header:wikitext(':')
end
local container = nav:tag('ul')
container:addClass(sandboxVersion('portal-bar-content'))
if related then
container:addClass(sandboxVersion('portal-bar-content-related'))
end
local size = related and '28x24px' or '21x19px'
for _, portal in ipairs( portals ) do
container
:tag( 'li' )
:addClass(sandboxVersion('portal-bar-item'))
:wikitext( string.format('<span class="nowrap">[[File:%s|%s]] </span>[[Portal:%s|%s]]',
getImageName(portal,true), size, portal, portal))
end
local styleFile = 'Module:Portal bar'..sandbox..'/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = styleFile }
} .. tostring( nav )
end
-- Processes external arguments and sends them to the other functions.
function p.main( frame )
local origArgs = getArgs(frame)
local portals, args = processPortalArgs(origArgs)
return p._main( portals, args )
end
return p
c7p57p1u4f7i16ztm0ndswnq2g77epa
Module:Medals table
828
29453
111944
109528
2026-09-15T22:12:13Z
DaSupremo
9
Protected "[[Module:Medals table]]" ([Edit=Allow only administrators] (indefinite) [Move am=Allow only administrators] (indefinite))
109528
Scribunto
text/plain
require('strict')
local getArgs = require('Module:Arguments').getArgs
local flagg = require('Module:Flagg').luaMain
local p = {}
local function deflag(s)
s = mw.ustring.gsub(s or '', '%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*%]%]', '')
s = mw.ustring.gsub(s, '%[%[[Ii][Mm][Aa][Gg][Ee]:[^%[%]]*%]%]', '')
s = mw.ustring.gsub(s, '<[^<>]*>', '')
s = mw.ustring.gsub(s, '%s*%([A-Z][A-Z][A-Z]%)%s*$', '')
while s:match('^%s*&[Nn][Bb][Ss][Pp];%s*') do
s = mw.ustring.gsub(s, '^%s*&[Nn][Bb][Ss][Pp];%s*', '')
end
s = mw.ustring.gsub(s, '%s*&[Nn][Bb][Ss][Pp];%s*$', '')
s = mw.ustring.gsub(s, '%s%s+', ' ')
s = mw.ustring.gsub(s, '^%s*(.-?)%s*$', '%1')
return s
end
local function ifexists(arg)
return ((arg or '') ~= '') and arg or false
end
function p.createTable(frame, args)
if not args then
args = getArgs(frame)
end
local team = args['team'] or 'Nation'
local root = mw.html.create()
local host = args['host'] or ''
local host1 = args['host1'] or ''
local host2 = args['host2'] or ''
local hostColor = '#ccccff'
local defaultRowColor = 'inherit'
local flagTemplate = ifexists(args['flag_template']) or 'flagteam'
local age = args['age']
local event = args['event']
local legendpos = (args['legend_position'] or 't'):lower()
local header, footer = '', ''
local totalGold = 0
local totalSilver = 0
local totalBronze = 0
local remainingGold = 0
local remainingSilver = 0
local remainingBronze = 0
local remainingStart = 0
local remainingEnd = 0
local limitReached = false
local showLimit = tonumber(args['show_limit'])
local lang = mw.getContentLanguage()
local function getFlag(code)
if (flagTemplate == 'flagteam' or mw.ustring.lower(flagTemplate) == 'flagcountry') then
local alias = ifexists(event) or '23px'
local fout = flagg(frame,{'usce', code, mw.ustring.match(alias, "[12]%d%d%d") or alias})
if (flagTemplate == 'flagteam') then
fout = fout..' <span style="font-size:90%;">('..code..')</span>'
end
return fout
end
if age then
return frame:expandTemplate{title = flagTemplate, args = {age, code} }
end
return frame:expandTemplate{title = flagTemplate, args = {code, event} }
end
-- build the legend
if host2 ~= '' and host1 ~= '' then
if args['name_' .. host1] then
host1 = args['name_' .. host1]
elseif host1:match('^([A-Z][A-Z][A-Z])') then
host1 = getFlag(host1)
end
if args['name_' .. host2] then
host2 = args['name_' .. host2]
elseif host2:match('^([A-Z][A-Z][A-Z])') then
host2 = getFlag(host2)
end
host = 'Host nations (' .. deflag(host1) .. ', ' .. deflag(host2) .. ')'
host = frame:expandTemplate{title = 'color box', args = {hostColor, ' * ', 'border=darkgray'}} ..' '.. host
elseif host ~= '' then
if args['name_' .. host] then
host = args['name_' .. host]
elseif host:match('^([A-Z][A-Z][A-Z])') then
host = getFlag(host)
end
host = 'Host nation (' .. deflag(host) .. ')'
host = host .. (args['host_note'] or '')
host = frame:expandTemplate{title = 'color box', args = {hostColor, ' * ', 'border=darkgray'}} ..' '.. host
end
local leading = ''
if args['leading'] then
leading = frame:expandTemplate{title = 'legend', args = {'#E9D66B', "'''Leading in that sport'''"}}
end
if legendpos == 't' then
header = header .. host .. leading
else
footer = footer .. host .. leading
end
local sticky = frame:extensionTag{ name = "templatestyles", args = {src = "template:sticky header/styles.css" } }
root = root
:tag('table')
:addClass('wikitable')
:addClass('sortable')
:addClass('sticky-header-multi')
:addClass('plainrowheaders')
:addClass('jquery-tablesorter')
:css('text-align', 'center')
root:tag('caption')
:wikitext(args['caption'])
-- add the header row
local row = root:tag('tr')
if not args['hide_rank'] then
row:tag('th')
:attr('scope', 'col')
:wikitext('Rank')
end
row
:tag('th')
:attr('scope', 'col')
:wikitext(team)
:tag('th')
:attr('scope', 'col')
:addClass('headerSort')
:css('width', '4em')
:css('background-color', 'gold')
:css('color', '#333')
:wikitext('Gold')
:tag('th')
:attr('scope', 'col')
:addClass('headerSort')
:css('width', '4em')
:css('background-color', 'silver')
:css('color', '#333')
:wikitext('Silver')
:tag('th')
:attr('scope', 'col')
:addClass('headerSort')
:css('width', '4em')
:css('background-color', '#c96')
:css('color', '#333')
:wikitext('Bronze')
:tag('th')
:attr('scope', 'col')
:css('width', '4em')
:wikitext('Total')
-- enumerate the rows
local rowNums = {}
local IOCs = {}
for k,v in pairs(args) do
k = ''..k
local IOC = k:match('^gold_([A-Z][A-Z][A-Z])$') or k:match('^gold_(%d+)$')
or k:match('^silver_([A-Z][A-Z][A-Z])$') or k:match('^silver_(%d+)$')
or k:match('^bronze_([A-Z][A-Z][A-Z])$') or k:match('^bronze_(%d+)$')
if IOC and IOCs[IOC] == nil then
IOCs[IOC] = 1
local gold = (tonumber(args['gold_' .. IOC]) or 0)
local silver = (tonumber(args['silver_' .. IOC]) or 0)
local bronze = (tonumber(args['bronze_' .. IOC]) or 0)
local noskip = args['skip_' .. IOC] and 0 or 1
local nation = args['name_' .. IOC] or getFlag(IOC)
nation = deflag(nation)
if nation:match('%[%[[^%[%]%|]*%|([^%[%]]*)%]%]') then
nation = nation:match('%[%[[^%[%]%|]*%|([^%[%]]*)%]%]')
end
if nation:match('%[%[([^%[%]%|]*)%]%]') then
nation = nation:match('%[%[([^%[%]%|]*)%]%]')
end
table.insert(rowNums, {gold, silver, bronze, noskip, nation, IOC})
end
end
if args['team'] == 'Games' then
table.sort(rowNums, function (a,b)
return a[5] < b[5]
end
)
else
table.sort(rowNums, function (a, b)
return a[1] > b[1] or (a[1] == b[1] and a[2] > b[2])
or (a[1] == b[1] and a[2] == b[2] and a[3] > b[3])
or (a[1] == b[1] and a[2] == b[2] and a[3] == b[3] and a[4] > b[4])
or (a[1] == b[1] and a[2] == b[2] and a[3] == b[3] and a[4] == b[4] and a[5] < b[5])
end
)
end
local lastGold, lastSilver, lastBronze = -1
local rank = 0
local lastspan, lastrankcell = 1, nil
for i, anum in ipairs(rowNums) do
local IOC = anum[6]
if args['skip_' .. IOC] then
lastGold, lastSilver, lastBronze, lastspan = -1, -1, -1, 1
else
rank = rank + 1
end
local nation = args['name_' .. IOC] or getFlag(IOC)
local gold = tonumber(args['gold_' .. IOC]) or 0
local silver = tonumber(args['silver_' .. IOC]) or 0
local bronze = tonumber(args['bronze_' .. IOC]) or 0
local isHost = args['host_' .. IOC]
-- this is mainly for the parameter names example so you can override it.
local total = tonumber(args['total_' .. IOC]) or (gold + silver + bronze)
local color = isHost and hostColor or defaultRowColor
if not args['grand_total'] then
totalGold = totalGold + gold
totalSilver = totalSilver + silver
totalBronze = totalBronze + bronze
end
if args['host_' .. IOC] then
nation = nation .. '*'
end
if args['note_' .. IOC] then
nation = nation .. args['note_' .. IOC]
end
if showLimit and (rank>showLimit) then
if remainingStart == 0 then remainingStart = rank end
limitReached = true
remainingGold = remainingGold + gold
remainingSilver = remainingSilver + silver
remainingBronze = remainingBronze + bronze
else
local row
if args['leading_' .. IOC] then
row = root:tag('tr'):css('background-color', '#E9D66B'):css('color', '#202122')
color = '#E9D66B'
else
row = root:tag('tr')
end
--Don't put the color on the row because of ranks spanning multiple rows.
--:css('background-color', color):css('color', '#202122')
if not args['hide_rank'] then
if (gold == lastGold) and (silver == lastSilver) and (bronze == lastBronze) then
lastspan = lastspan + 1
lastrankcell:attr('rowspan',lastspan)
else
lastspan = 1
if args['skip_' .. IOC] then
lastrankcell = row:tag('td'):wikitext(frame:expandTemplate{title = 'sort', args = {'999', '–'}})
else
lastrankcell = row:tag('td'):wikitext(rank)
lastGold = gold
lastSilver = silver
lastBronze = bronze
end
end
end
row:tag('th')
:attr('scope', 'row')
:css('background-color', color)
:css('color', 'inherit')
:css('text-align','left')
:wikitext(nation)
:tag('td')
:wikitext(lang:formatNum(gold))
:tag('td')
:wikitext(lang:formatNum(silver))
:tag('td')
:wikitext(lang:formatNum(bronze))
:tag('td')
:wikitext(lang:formatNum(total))
end
remainingEnd = rank
end
if limitReached then
root:tag('tr')
:tag('td')
:wikitext(remainingStart..'–'..remainingEnd)
:tag('td')
:css('font-style', 'italic')
:css('text-align','left')
:wikitext(args['remaining_link'] or args['remaining_text'] or 'Remaining')
:tag('td')
:wikitext(lang:formatNum(remainingGold))
:tag('td')
:wikitext(lang:formatNum(remainingSilver))
:tag('td')
:wikitext(lang:formatNum(remainingBronze))
:tag('td')
:wikitext(lang:formatNum(remainingGold + remainingSilver + remainingBronze))
end
if not (team:match('^[A-Z][A-Z][A-Z]$') or team:match('>[A-Z][A-Z][A-Z]<')) then
team = team:lower()
end
if team:match('^games$') then team = 'game' end
local colspan
if args['hide_rank'] then
colspan = 1
else
colspan = 2
end
if not args['hide_totals'] then
root:tag('tr')
:addClass('sortbottom')
:css('background', 'var(--background-color-neutral,#eaecf0)')
:css('color', 'var(--color-base,#202122)')
:css('font-weight', 'bold')
:tag('th')
:wikitext('Totals ('..remainingEnd..' entries)')
:attr('scope', 'row')
:attr('colspan', colspan)
:css('font-weight', 'bold')
:tag('td')
:wikitext(lang:formatNum(tonumber(args['total_gold']) or totalGold))
:tag('td')
:wikitext(lang:formatNum(tonumber(args['total_silver']) or totalSilver))
:tag('td')
:wikitext(lang:formatNum(tonumber(args['total_bronze']) or totalBronze))
:tag('td')
:wikitext(lang:formatNum(tonumber(args['grand_total']) or (totalGold + totalSilver + totalBronze)))
end
-- Build the rest of the footer
if args['source'] or args['notes'] then
if footer ~= '' then
footer = footer .. '<br>'
end
footer = frame:expandTemplate{ title = 'refbegin' } .. footer
if args['source'] then
footer = footer .. 'Source: ' .. args['source']
end
if args['notes'] then
if args['source'] then
footer = footer .. '<br>'
end
footer = footer .. 'Notes: ' .. args['notes']
end
footer = footer .. frame:expandTemplate{ title = 'refend' }
end
return header .. sticky .. tostring(root) .. footer
end
return p
jwa1hugyrr5r3vcu7ziob4og81l5kyw
2026 FIFA U-20 Women's World Cup
0
29519
111960
109647
2026-09-15T23:56:39Z
DaSupremo
9
Improve article
111960
wikitext
text/x-wiki
{{Databox}}
De '''2026 FIFA U-20 Women's World Cup''' (Polish: ''Mistrzostwa Świata FIFA U-20 Kobiet Polska 2026'') be de 12th edition of de FIFA U-20 Women's World Cup, de biennial international women's youth football championship wey be contested by de under-20 national teams of de member associations of FIFA. Dem dey host am by Poland. E be de second time wey na Poland host a FIFA tournament having host de men's FIFA U-20 World Cup insyd 2019. E sanso be de first time wey Poland host a FIFA women's tournament.<ref>{{cite web|url=https://www.fifa.com/about-fifa/organisation/fifa-council/media-releases/fifa-council-appoints-chile-and-poland-as-hosts-of-fifa-youth-competitions|title=FIFA Council appoints Chile and Poland as hosts of FIFA youth competitions|publisher=Fédération Internationale de Football Association|website=FIFA.com|access-date=17 December 2023|date=17 December 2023}}</ref>
North Korea be de defending champions, na dem win a joint-record third title insyd 2024.
== References ==
<references />
== External links ==
564mpw0jbttrsz4icrc204z1hkldxoe
111961
111960
2026-09-16T00:00:43Z
DaSupremo
9
/* Host selection */ Improve article
111961
wikitext
text/x-wiki
{{Databox}}
De '''2026 FIFA U-20 Women's World Cup''' (Polish: ''Mistrzostwa Świata FIFA U-20 Kobiet Polska 2026'') be de 12th edition of de FIFA U-20 Women's World Cup, de biennial international women's youth football championship wey be contested by de under-20 national teams of de member associations of FIFA. Dem dey host am by Poland. E be de second time wey na Poland host a FIFA tournament having host de men's FIFA U-20 World Cup insyd 2019. E sanso be de first time wey Poland host a FIFA women's tournament.<ref>{{cite web|url=https://www.fifa.com/about-fifa/organisation/fifa-council/media-releases/fifa-council-appoints-chile-and-poland-as-hosts-of-fifa-youth-competitions|title=FIFA Council appoints Chile and Poland as hosts of FIFA youth competitions|publisher=Fédération Internationale de Football Association|website=FIFA.com|access-date=17 December 2023|date=17 December 2023}}</ref>
North Korea be de defending champions, na dem win a joint-record third title insyd 2024.
==Host selection==
Na dem announce Poland as de 2026 Women's U-20 World Cup hosts following de FIFA Council meeting on 17 December 2023 insyd [[Jeddah]], [[Saudi Arabia]].<ref>{{cite news |title=Polska gospodarzem Mistrzostw Świata Kobiet U-20 w 2026 roku! |url=https://pzpn.pl/federacja/aktualnosci/2023-12-17/polska-gospodarzem-mistrzostw-swiata-kobiet-u-20-w-2026-roku |access-date=18 December 2023 |publisher=[[Polish Football Association]]|date=17 December 2023 |language=pl}}</ref>
== References ==
<references />
== External links ==
mzhjrs3e6dca2avy58m9j1q0h315xkn
Casey Murphy
0
30171
111967
111891
2026-09-16T01:43:22Z
InternetArchiveBot
29
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
111967
wikitext
text/x-wiki
{{Databox}}
'''Casey Grace Murphy''' (born April 25, 1996) be an American professional soccer player wey dey play as a goalkeeper give Boston Legacy FC of de National Women's Soccer League (NWSL) den de United States national team.
Murphy play college soccer give de Rutgers Scarlet Knights, twice earning Big Ten Goalkeeper of de Year den All-American honors. She begin ein professional career plus Montpellier insyd 2018 before entering de NWSL plus Reign FC, joining de Courage insyd 2021, den shifting to de Legacy for ein inaugural season insyd 2026.
Murphy make ein senior debut give de United States insyd 2021. Na dem include am on de squad wey win gold at de [[Football at the 2024 Summer Olympics – Women's tournament|2024 Paris Olympics]].
== Early life den college career ==
Na dem raise Murphy insyd Bridgewater Township, New Jersey, de daughter of Michael den Jill Murphy, wey she get a bro. She start dey play soccer at de age of five. At around de age of 10, she start to play only as a goalkeeper. Murphy attend den play soccer den basketball give Bridgewater-Raritan High School.<ref name="ru-profile">{{cite web |title=Casey Murphy |url=https://scarletknights.com/sports/womens-soccer/roster/casey-murphy/2982 |access-date=April 10, 2023 |publisher=[[Rutgers Scarlet Knights women's soccer]]}}</ref><ref>{{cite news|url=https://www.app.com/story/sports/2019/07/10/us-womens-national-soccer-team-10-more-potential-nj-star-players/1684045001/|title=US Women's National Soccer Team: 10 more potential NJ star players|date=July 10, 2019|access-date=April 10, 2023|work=[[Asbury Park Press]]|first=Ella|last=Brockway}}</ref> She sanso train plus de Players Development Academy (PDA) Slammers, part of de Elite Clubs National League,<ref name="jsn-2021">{{cite news|url=https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|title=Jersey Girl Casey Murphy Makes Her Case to Be the Next USWNT Star|date=December 7, 2021|access-date=April 10, 2023|work=Jersey Sporting News|first=Jenna|last=Tonelli|archive-date=April 11, 2023|archive-url=https://web.archive.org/web/20230411030616/https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|url-status=dead}}</ref> wer she win a U17 national championship. ''TopDrawerSoccer.com'' rate Murphy as de No. 18 overall youth player insyd New Jersey den a four-star recruit.<ref name="ru-profile" />
=== Rutgers Scarlet Knights ===
Insyd 2014, Murphy choose to attend Rutgers University,<ref name="sk_draft">{{Cite web |date=Aug 14, 2014 |title=Rutgers Women's Soccer Newcomer Series: GK Casey Murphy |url=http://scarletknights.com/news/2014/8/14/Rutgers_Women_s_Soccer_Newcomer_Series_GK_Casey_Murphy.aspx |accessdate=May 20, 2018 |publisher=Scarlet Knights}}</ref> wer na she play NCAA Division I college soccer give de Rutgers Scarlet Knights til 2017.<ref>{{Cite web |title=Casey Murphy |url=http://www.ussoccer.com/players/2014/04/28/16/10/casey-murphy |url-status=dead |archive-url=https://web.archive.org/web/20161212020815/http://www.ussoccer.com/players/2014/04/28/16/10/casey-murphy |archive-date=December 12, 2016 |access-date=Dec 10, 2016 |website=www.ussoccer.com}}</ref><ref name="ru-profile"/>
She redshirt ein final year to compete insyd de 2018 FIFA U-20 Women's World Cup.<ref name="app-draft">{{cite news|url=https://www.app.com/story/sports/college/rutgers/2018/01/18/nwsl-nwsldraft-caseymurphy-caseymurphyrutgers/1042965001/|title=Rutgers: Casey Murphy selected 13th overall by Sky Blue FC in NWSL Draft; Carli Lloyd traded home|date=January 18, 2018|access-date=April 10, 2023|work=[[Asbury Park Press]]|first=Josh|last=Newman}}</ref> Murphy earn de Female Big Ten Medal of Honor insyd May 2018.<ref name="sk_award">{{Cite web |date=May 1, 2018 |title=Murphy & Rexrode Bestowed Big Ten Medal of Honor at RAwards |url=http://scarletknights.com/news/2018/5/1/rutgers-leadership-academy-murphy-rexrode-bestowed-big-ten-medal-of-honor-at-rawards.aspx |accessdate=May 20, 2018 |publisher=Scarlet Knights}}</ref> Thru out ein career, she earn several accolades den distinctions, wey dey include twice de Big Ten Goalkeeper of de Year, twice an All-Big Ten First Team selection, den twice an All-American.<ref name="nwsl_draft">{{cite press release|url=http://scarletknights.com/news/2018/1/18/murphy-drafted-into-national-womens-soccer-league.aspx|title=Murphy Drafted into National Women's Soccer League|publisher=Scarlet Knights|date=January 18, 2018|accessdate=May 20, 2018}}</ref> Na dem sanso name Murphy a 2017 MAC Hermann Trophy semifinalist.<ref name="sk_award" /> Plus 45 clean sheets insyd ein college career, Murphy be Rutgers ein all-time leader for career shutouts den ranks second insyd Big Ten history.<ref name="nwsl_draft" />
== Club career ==
=== Montpellier ===
On January 18, 2018, National Women's Soccer League club Sky Blue FC select Murphy plus de 13th overall pick insyd de 2018 NWSL College Draft.<ref name="app-draft">{{cite news|url=https://www.app.com/story/sports/college/rutgers/2018/01/18/nwsl-nwsldraft-caseymurphy-caseymurphyrutgers/1042965001/|title=Rutgers: Casey Murphy selected 13th overall by Sky Blue FC in NWSL Draft; Carli Lloyd traded home|date=January 18, 2018|access-date=April 10, 2023|work=[[Asbury Park Press]]|first=Josh|last=Newman}}</ref> De day after de draft, Murphy sign a professional contract plus Montpellier HSC to play insyd France ein Division 1 Féminine.<ref name="jsn-2021">{{cite news|url=https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|title=Jersey Girl Casey Murphy Makes Her Case to Be the Next USWNT Star|date=December 7, 2021|access-date=April 10, 2023|work=Jersey Sporting News|first=Jenna|last=Tonelli|archive-date=April 11, 2023|archive-url=https://web.archive.org/web/20230411030616/https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|url-status=dead}}</ref><ref name="mhsc_sign">{{cite web |title=Murphy Signs with Montpellier Hérault Sport Club of France – Rutgers University |url=http://scarletknights.com/news/2018/1/19/womens-soccer-murphy-signs-with-montpellier-h-rault-sport-club-of-france.aspx |website=Rutgers University}}</ref> She make ein professional debut against Fleury on February 21.<ref name="FBref">{{FBref}}</ref> She initially be expected to return to de NWSL insyd June, buh insyd April she extend ein contract plus Montpellier.<ref>{{Cite web |date=Apr 3, 2018 |title=Casey Murphy Reste Montpelliéraine! |url=http://www.mhscfoot.com/articles/2017-2018/feminines/casey-murphy-reste-montpellieraine |accessdate=May 20, 2018 |publisher=Montpellier Hérault Sport Club |language=French}}</ref> She start 11 games insyd ein first season plus Montpellier as dem place third insyd de 2017–18 season, earning de Division 1 Best Keeper Award wey she be selected by French media insyd de league ein Best XI.<ref>{{cite web |date=May 20, 2018 |title=Murphy Selected as Best D1 Female Goalkeeper by the French Football Federation |url=https://scarletknights.com/news/2018/5/23/womens-soccer-murphy-selected-as-d1-female-goalkeeper-by-the-french-football-federation.aspx |accessdate=July 22, 2018}}</ref><ref>{{Cite web |date=May 20, 2018 |title=Le MHSC mis à l'honneur lors des trophées de la D1 féminine |url=http://www.mhscfoot.com/depeches/le-mhsc-mis-lhonneur-lors-des-trophees-de-la-d1-femininine |accessdate=May 20, 2018 |publisher=Montpellier Hérault Sport Club |language=French}}</ref> She sanso participate insyd both de ''Coupe de France Féminine'' den de UEFA Women's Champions League.
Murphy play every minute of de 2018–19 season as Montpellier san place third behind league powerhouses Lyon den Paris Saint-Germain.<ref>{{cite web |title=2018-2019 Division 1 Féminine Stats |url=https://fbref.com/en/comps/193/2018-2019/2018-2019-Premiere-Ligue-Stats |access-date=2024-11-16 |website=[[FBref.com]]}}</ref>
=== Reign FC ===
On May 15, 2019, Murphy sign plus Reign FC (dem later sanso be known as OL Reign).<ref name="jsn-2021">{{cite news|url=https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|title=Jersey Girl Casey Murphy Makes Her Case to Be the Next USWNT Star|date=December 7, 2021|access-date=April 10, 2023|work=Jersey Sporting News|first=Jenna|last=Tonelli|archive-date=April 11, 2023|archive-url=https://web.archive.org/web/20230411030616/https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|url-status=dead}}</ref><ref>{{cite news|title=Reign FC Signs Goalkeeper Casey Murphy|url=https://www.reignfc.com/news/2019/5/15/reign-fc-signs-goalkeeper-casey-murphy|accessdate=15 May 2019|publisher=Reign FC|date=15 May 2019|archive-date=December 9, 2019|archive-url=https://web.archive.org/web/20191209190745/https://www.reignfc.com/news/2019/5/15/reign-fc-signs-goalkeeper-casey-murphy|url-status=dead}}</ref> She make ein NWSL debut on May 27, 2019, making four saves insyd a 2–1 win against de North Carolina Courage, wich mark de Reign ein first victory over de team.<ref>{{cite news|url=https://www.reignfc.com/news/2019/5/31/match-forecast-reign-fc-battle-the-houston-dash-at-cheney-stadium-4lthd|title=Match Forecast: Reign FC Battle the Houston Dash at Cheney Stadium|date=2019-05-31|publisher=[[Seattle Reign FC]]|access-date=2024-11-16}}</ref> She keep 6 clean sheets insyd 19 starts insyd ein first NWSL season as de Reign place fourth insyd de standings wey na she be one of three finalists for NWSL Goalkeeper of de Year.<ref>{{cite web |title=2019 Reign FC Stats |url=https://fbref.com/en/squads/257fad2b/2019/Reign-FC-Stats |access-date=2024-11-16 |website=[[FBref.com]]}}</ref><ref>{{cite news|url=https://www.blackandredunited.com/washington-spirit-womens-soccer/2019/11/1/20944366/aubrey-bledsoe-2019-nwsl-goalkeeper-of-the-year-washington-spirit|title=Aubrey Bledsoe named 2019 NWSL Goalkeeper of the Year|last=Anderson|first=Jason|date=2019-11-01|website=Black and Red United|publisher=[[SB Nation]]|access-date=2024-06-27}}</ref> De following year, she make only six club appearances during de pandemic-shortened 2020 season.<ref name="FBref">{{FBref}}</ref>
=== North Carolina Courage ===
[[File:NC_Courage_vs_Bay_FC_(Sep_2024)_083.jpg|thumb|Murphy plus de North Carolina Courage insyd 2024]]
On October 22, 2020, na dem trade Murphy to de North Carolina Courage along plus $140,000 insyd allocation money in exchange for [[Crystal Dunn]].<ref name="jsn-2021">{{cite news|url=https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|title=Jersey Girl Casey Murphy Makes Her Case to Be the Next USWNT Star|date=December 7, 2021|access-date=April 10, 2023|work=Jersey Sporting News|first=Jenna|last=Tonelli|archive-date=April 11, 2023|archive-url=https://web.archive.org/web/20230411030616/https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|url-status=dead}}</ref><ref>{{cite press release|title=North Carolina Trades Crystal Dunn to OL Reign; Portland Acquires Dunn in Exchange For Allocation Money, Draft Pick and International Slot|url=https://www.nwslsoccer.com/news/north-carolina-trades-crystal-dunn-to-ol-reign-portland-acquires-dunn-in-exchange-for-allocation-money-draft-pick-and-international-slot|publisher=[[National Women's Soccer League]]|access-date=April 10, 2023|language=en-US}}</ref> She sign a two-year contract plus de team before de season begin.<ref>{{cite news|url=https://www.nwslsoccer.com/news/casey-murphy-signs-two-year-deal-with-nc-courage|title=Casey Murphy Signs Two-Year Deal with NC Courage|date=2021-02-05|publisher=[[National Women's Soccer League]]|access-date=2024-11-16}}</ref> She start all buh one match give de Courage insyd de 2021 season, keeping 11 clean sheets insyd 23 games.<ref>{{cite web |title=2021 North Carolina Courage Stats (NWSL) |url=https://fbref.com/en/squads/85c458aa/2021/North-Carolina-Courage-Stats |access-date=2025-03-10 |website=[[FBref.com]]}}</ref> On November 7, 2021, she make a season-high 12 saves insyd a 1–0 loss to de Washington Spirit insyd de first round of de playoffs.<ref name="FBref">{{FBref}}</ref>
Murphy balance duties give club den country during de 2022 season. Na she ne an unused substitute for [[Katelyn Rowland]] insyd de preseason NWSL Challenge Cup final on May 7, 2022, wich de Courage win against de Washington Spirit.<ref name="FBref">{{FBref}}</ref> She record 6 clean sheets insyd 18 games insyd de regular season as North Carolina fini insyd seventh place, missing de playoffs.<ref>{{cite web |title=2022 North Carolina Courage Stats (NWSL) |url=https://fbref.com/en/squads/85c458aa/2022/North-Carolina-Courage-Stats |access-date=2024-11-16 |website=[[FBref.com]]}}</ref> At de start of 2023, she sign a three-year extension plus de Courage.<ref>{{cite news|url=https://www.nccourage.com/news/courage-and-goalkeeper-casey-murphy-agree-to-three-year-contract/|title=Courage and Goalkeeper Casey Murphy agree to three-year contract|date=2023-01-03|publisher=[[North Carolina Courage]]|access-date=2024-11-16}}</ref> On September 9, 2023, she help North Carolina to a 2–0 victory over Racing Louisville insyd de Challenge Cup final.<ref>{{cite web |title=Casey Murphy 2023 Match Logs |url=https://fbref.com/en/players/493c384e/matchlogs/2023/Casey-Murphy-Match-Logs |access-date=2024-11-16 |website=[[FBref.com]]}}</ref> She start all buh two games insyd de 2023 regular season, recording 9 clean sheets insyd 20 games as North Carolina rise to third insyd de standings.<ref>{{cite news|url=https://fbref.com/en/squads/85c458aa/2023/North-Carolina-Courage-Stats|title=2023 North Carolina Courage Stats (NWSL)|website=[[FBref.com]]|access-date=2025-03-10}}</ref>
On September 8, 2024, Murphy save [[Alex Morgan]] ein penalty kick insyd de last game of Morgan ein career, helping de Courage to a 4–1 away win against de San Diego Wave.<ref>{{cite news|url=https://www.goal.com/en-us/lists/video-alex-morgan-misses-penalty-uswnt-legend-final-game-announcing-retirement/blt3bee07a0ea768f23|title=Alex Morgan misses penalty in USWNT legend's final game|last=Bruton|first=Chris|date=2024-09-09|website=[[Goal (website)|Goal]]|access-date=2024-11-16}}</ref> Murphy play every minute of de 2024 season, wey she plete ein first iron woman season plus de Courage as dem place fifth insyd de standings.<ref>{{cite news|url=https://www.nwslsoccer.com/news/seven-nwsl-players-declared-2024-iron-women|title=Seven NWSL Players Declared 2024 Iron Women|date=2024-11-04|publisher=[[National Women's Soccer League]]|access-date=2024-11-16}}</ref>
Murphy cam be a free agent at de end of de 2025 season wey na she no re-sign plus de Courage. Na dem report insyd October 2025 say she sign a contract plus new National Women's Soccer League expansion team Boston Legacy FC, wich gk begin play insyd 2026.<ref>{{cite web |last1=Kassouf |first1=Jeff |title=USWNT keeper Murphy signs for NWSL newcomers Boston - sources |url=https://www.espn.com/soccer/story/_/id/46478124/uswnt-casey-murphy-north-carolina-courage-boston-legacy-nwsl |access-date=November 12, 2025 |website=ESPN}}</ref>
=== Boston Legacy FC ===
On December 15, 2025, Boston Legacy FC announce say dem sign Murphy thru de 2029 season plus a mutual option for 2030.<ref>{{Cite web |date=2025-12-15 |title=Source: NWSL's Legacy sign Murphy to $1.5M deal |url=https://www.espn.com/soccer/story/_/id/47314259/nwsl-boston-legacy-signs-gk-casey-murphy-record-deal-source |access-date=2025-12-15 |website=ESPN.com |language=en}}</ref>
== International career ==
Murphy be a United States youth international at de U14, U15, U18, U20, den U23 levels.<ref>{{Cite web |title=Casey Murphy |url=https://www.ussoccer.com/players/m/casey-murphy |accessdate=May 20, 2018 |publisher=U.S. Soccer}}</ref> She represent de United States at de 2016 FIFA U-20 Women's World Cup.
Na Murphy be a starter give de United States under-20 national team during de 2016 FIFA U-20 Women's World Cup<ref>{{cite press release|url=https://www.concacaf.com/under-20s-women/article/u-s-rallies-past-mexico-for-u-20-wwc-semifinal-spot/|title=U.S. rallies past Mexico for U-20 WWC semifinal spot|date=February 9, 2018|access-date=April 10, 2023|publisher=[[Concacaf]]}}</ref> wey she sanso start give de United States under-23 team.<ref>{{cite news|url=https://www.onthebanks.com/2018/1/18/16906604/rutgers-womens-soccer-all-american-casey-murphy-selected-13th-in-nwsl-draft-skyblue-fc-carli-lloyd|title=Rutgers Women's Soccer All-American Casey Murphy Selected 13th In NWSL Draft By Local Club SkyBlue FC|date=January 18, 2018|access-date=April 10, 2023|work=On the Banks|first=Aaron|last=Breitman}}</ref>
Murphy receive ein first call-up to de senior United States women's national soccer team for a set of friendlies insyd June 2018 against China PR, buh na she no play.<ref name="jsn-2021">{{cite news|url=https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|title=Jersey Girl Casey Murphy Makes Her Case to Be the Next USWNT Star|date=December 7, 2021|access-date=April 10, 2023|work=Jersey Sporting News|first=Jenna|last=Tonelli|archive-date=April 11, 2023|archive-url=https://web.archive.org/web/20230411030616/https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|url-status=dead}}</ref><ref name="nwsl_draft">{{cite press release|url=http://scarletknights.com/news/2018/1/18/murphy-drafted-into-national-womens-soccer-league.aspx|title=Murphy Drafted into National Women's Soccer League|publisher=Scarlet Knights|date=January 18, 2018|accessdate=May 20, 2018}}</ref><ref>{{cite news|url=http://americansoccernow.com/articles/on-the-heels-of-her-first-uswnt-call-up-murphy-eyes-further-breakthrough|title=On the heels of her first USWNT call-up, Murphy eyes further breakthrough|date=July 3, 2018|access-date=April 10, 2023|work=American Soccer Now|first=John|last=Halloran}}</ref>
Na dem san call Murphy up by United States head coach [[Vlatko Andonovski]] for de 2021 SheBelieves Cup, buh na she no appear insyd de tournament.<ref name="jsn-2021">{{cite news|url=https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|title=Jersey Girl Casey Murphy Makes Her Case to Be the Next USWNT Star|date=December 7, 2021|access-date=April 10, 2023|work=Jersey Sporting News|first=Jenna|last=Tonelli|archive-date=April 11, 2023|archive-url=https://web.archive.org/web/20230411030616/https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|url-status=dead}}</ref>
Na Murphy be part of de senior United States team to travel to Australia for a pair of friendly matches insyd November 2021. She make ein first appearance for de senior team on November 26, 2021, insyd a 3–0 victory against de Australia women's national soccer team wer na she record a clean sheet wey she receive player of de match honors.<ref name="jsn-2021">{{cite news|url=https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|title=Jersey Girl Casey Murphy Makes Her Case to Be the Next USWNT Star|date=December 7, 2021|access-date=April 10, 2023|work=Jersey Sporting News|first=Jenna|last=Tonelli|archive-date=April 11, 2023|archive-url=https://web.archive.org/web/20230411030616/https://www.jerseysportingnews.com/casey-murphy-new-jersey-national-team/|url-status=dead}}</ref> Insyd international friendlies from 2022 til April 7, 2023, in preparation for de 2023 FIFA Women's World Cup, Murphy den incumbent starter [[Alyssa Naeher]] each get 11 starting appearances give de United States.<ref>{{cite news|url=https://www.washingtonpost.com/sports/2023/04/07/alyssa-naeher-casey-murphy-uswnt-world-cup-goalkeeper/|title=For USWNT's Vlatko Andonovski, keeper question looms as World Cup nears|date=April 7, 2023|access-date=April 10, 2023|newspaper=[[Washington Post]]|first=Steven|last=Goff}}</ref>
Na dem select Murphy to de 18-player roster for de [[Football at the 2024 Summer Olympics – Women's tournament|2024 Summer Olympics]].<ref>{{cite news|url=https://www.nytimes.com/athletic/5593017/2024/06/26/uswnt-olympics-roster-2024/|title=Alex Morgan not selected to USWNT for Paris Olympics: Full roster for 2024 Games|last=Linehan|first=Meg|date=2024-06-26|website=[[The Athletic]]|access-date=2024-06-26}}</ref> She go unused as a substitute for [[Alyssa Naeher]] as de United States win de gold medal.
== Personal life ==
While at Rutgers, she begin dey date [[track and field]] athlete Chris Mirabelli. Dem cam be engaged insyd 2021 wey dem marry insyd December 2023 insyd Philadelphia.<ref>{{Cite web |date=July 26, 2023 |title=Women's World Cup 2023: Meet the Players Competing for Team USA |url=https://www.eonline.com/news/1381152/womens-world-cup-2023-meet-the-players-competing-for-team-usa |website=E! Online}}</ref><ref>{{Cite web |last=Strohm |first=Emily |date=December 18, 2023 |title=U.S. Women's Soccer Goalie Casey Murphy Is Married: Exclusive Photos from Her 'Romantic, Winter' Wedding! |url=https://people.com/nwsl-goalie-casey-murphy-is-married-see-exclusive-photos-from-her-romantic-winter-wedding-8414394 |access-date=2023-12-27 |website=[[People (magazine)|People]] |language=en}}</ref>
==Career statistics==
===International===
{{updated|match played October 27, 2024}}
{| class="wikitable" style="text-align:center"
|-
!National Team !! Year !! Apps !! Goals !! Shutouts
|-
|rowspan=4|[[United States women's national soccer team|United States]]
|[[2021 in American soccer#Women's|2021]]||2||0||1
|-
|[[2022 in American soccer#Women's|2022]]||9||0||6
|-
|[[2023 in American soccer#Women's|2023]]||6||0||6
|-
|[[2024 in American soccer#Women's|2024]]|| 3 || 0 || 2
|-
!colspan=2| Total || 20 || 0 || 15
|}
==Honors==
'''United States'''
* [[Summer Olympic Games]] Gold Medal: [[Football at the 2024 Summer Olympics – Women's tournament|2024]]<ref>{{Cite web |last=Jurejko |first=Jonathan |date=10 August 2024 |title=Brazil 0-1 United States: Emma Hayes leads USA to Olympic gold |url=https://www.bbc.com/sport/olympics/live/cvg5l5306z6t |access-date=10 August 2024 |website=BBC Sport |language=}}</ref>
* [[CONCACAF Women's Championship]]: [[2022 CONCACAF W Championship|2022]]<ref>{{cite news |last=Das |first=Andrew |date=July 19, 2022 |title=U.S. Women Beat Canada to Claim Spot in Paris Olympics |work=The New York Times |url=https://www.nytimes.com/2022/07/19/sports/soccer/uswnt-canada-concacaf-w-championship.html}}</ref>
* [[SheBelieves Cup]]: [[2021 SheBelieves Cup|2021]];<ref>{{cite web |url=https://www.ussoccer.com/stories/2021/02/shebelieves-cup-uswnt-6-argentina-0-match-report-stats-standings |title=U.S. Women's National Team Rolls to Title at 2021 SheBelieves Cup, Presented by Visa, With Dominant 6-0 Victory Against Argentina |date=February 25, 2021 |website=U.S. Soccer}}</ref> [[2022 SheBelieves Cup|2022]];<ref>{{cite web |title=U.S. Women's National Team Defeats Iceland 5-0 to Win Third Consecutive and Fifth Overall SheBelieves Cup Title, Presented by Visa |url=https://www.ussoccer.com/stories/2022/02/2022-shebelieves-cup-uswnt-5-iceland-0-match-report-stats-standings |work=U.S. Soccer |date=February 23, 2022}}</ref> [[2023 SheBelieves Cup|2023]],<ref>{{Cite web |last=Herrera |first=Sandra |date=22 February 2023 |title=USWNT vs. Brazil score: USA win SheBelieves Cup with Alex Morgan and Mallory Swanson dominating in attack |url=https://www.cbssports.com/soccer/news/uswnt-vs-brazil-score-usa-win-shebelieves-cup-with-alex-morgan-and-mallory-swanson-dominating-in-attack/live/ |access-date=23 February 2023 |website=CBS Sports |language=}}</ref>[[2024 SheBelieves Cup|2024]]<ref>{{Cite web |title=2024 Shebelieves Cup final USWNT vs Canada result |url=https://www.ussoccer.com/stories/2024/04/2024-shebelieves-cup-final-uswnt-vs-canada-result-score-stats-goals-highlights-match-recap|access-date=April 9, 2024 |work=U.S. Soccer }}</ref>
* [[CONCACAF W Gold Cup]]: [[2024 CONCACAF W Gold Cup|2024]]<ref>{{cite web |date=March 11, 2024 |title=Horan the hero as USA down Brazil to win W Gold Cup crown|url=https://www.concacaf.com/w-gold-cup/news/horan-the-hero-as-usa-down-brazil-to-win-w-gold-cup-crown/ |access-date=March 11, 2024|website=CONCACAF.com}}</ref>
'''North Carolina Courage'''
* [[NWSL Challenge Cup]]: [[2022 NWSL Challenge Cup|2022]], [[2023 NWSL Challenge Cup|2023]]
'''Individual'''
* [[Big Ten Conference]] Goalkeeper of the Year: [[2015 NCAA Division I women's soccer season|2015]], [[2017 NCAA Division I women's soccer season|2017]]
== References ==
<references />
==External links==
{{Commons category}}
* {{NWSL player|casey-grace-murphy|Casey Murphy}}
* [https://web.archive.org/web/20241203043228/https://www.nccourage.com/roster/casey-murphy-2/ Casey Murphy] {{Webarchive|url=https://web.archive.org/web/20241203043228/https://www.nccourage.com/roster/casey-murphy-2/ |date=December 3, 2024 }} at [[North Carolina Courage]]
* [https://scarletknights.com/sports/womens-soccer/roster/casey-murphy/2982 Casey Murphy] at [[Rutgers Scarlet Knights women's soccer|Rutgers Scarlet Knights]]
* {{U.S. Soccer player|m/casey-murphy|archive=20180629155314}}
* {{Soccerway|casey-murphy/467989}}
* {{FBref player|493c384e}}
{{DEFAULTSORT:Murphy, Casey}}
[[Category:Human]]
[[Category:1996 births]]
[[Category:American women's soccer players]]
[[Category:Rutgers Scarlet Knights women's soccer players]]
[[Category:United States women's under-20 international soccer players]]
[[Category:United States women's international soccer players]]
[[Category:Gotham FC draft picks]]
[[Category:Women's association football goalkeepers]]
[[Category:Montpellier FC players]]
[[Category:Première Ligue players]]
[[Category:Bridgewater-Raritan High School alumni]]
[[Category:Sportspeople wey komot Bridgewater Township, New Jersey]]
[[Category:Soccer players wey komot Somerset County, New Jersey]]
[[Category:American expatriate sportspeople insyd France]]
[[Category:Expatriate women's footballers insyd France]]
[[Category:Seattle Reign FC players]]
[[Category:National Women's Soccer League players]]
[[Category:North Carolina Courage players]]
[[Category:Boston Legacy FC players]]
[[Category:2023 FIFA Women's World Cup players]]
[[Category:21st-century American sportswomen]]
[[Category:United States women's youth international soccer players]]
[[Category:Footballers at de 2024 Summer Olympics]]
[[Category:Medalists at de 2024 Summer Olympics]]
[[Category:Olympic gold medalists for de United States insyd soccer]]
[[Category:2022 CONCACAF W Championship players]]
[[Category:2016 FIFA U-20 Women's World Cup players]]
56i059xu9k4t0cg70xeat01ilq0xtkl
Kim Maslin-Kammerdeiner
0
30173
111948
111648
2026-09-15T23:06:33Z
DaSupremo
9
Improve article
111948
wikitext
text/x-wiki
{{Databox}}
'''Kimberlee Kammerdeiner''' (née '''Maslin'''; born August 12, 1964) be an American retired soccer goalkeeper den former member of de United States women's national soccer team. Considered a pioneer of women's soccer insyd de United States, she be a member of de 1991 United States women's national soccer team wey win de first Women's World Cup insyd China. From 1988 to 1991, she play 843 minutes widout allowing a goal – a record at de time.<ref>{{cite web |title=All-Time Leaders |url=http://www.ussoccer.com/teams/us-women/records/alltime-leaders.aspx |url-status=dead |archiveurl=https://web.archive.org/web/20130416084318/http://www.ussoccer.com/Teams/US-Women/Records/AllTime-Leaders.aspx |archivedate=April 16, 2013 |accessdate=March 29, 2013 |publisher=US Soccer}}</ref> Insyd 1990, na dem name am to de Soccer America all-decade team.<ref>{{cite news|title=For the Record|newspaper=Washington Post|date=January 18, 1990}}</ref>
== Early life ==
Kim grow up insyd Rutledge, Pennsylvania. Since na der be no high school girls soccer team to play on at dat time at Swarthmore High School, she play goalie insyd de boys' soccer program for two seasons. First, she play on de boy's JV team as a sophomore, den then on de boy's varsity team as a junior. Na she sanso be a standout insyd Field Hockey, Basketball den Lacrosse, wey dem elect am to play field hockey instead of soccer insyd ein senior high school season. She sanso play ein club soccer for de Landsdowne Misfits, a girls travel team. Dem recruit am for multiple sports plus NCAA D-I scholarship offers for field hockey, soccer den lacrosse, she elect to play soccer give George Mason University.
=== George Mason University ===
Maslin-Kammerdeiner attend George Mason University wey she play give de Patriots, first as a field player for two seasons, den later as a goaltender, leading de Patriots to an upset insyd de NCAA Division I championship game against de North Carolina Tar Heels insyd 1985.<ref>{{cite news|title=Credit George Mason With Save; Patriots Get Top Goalkeeper; Mead Finds Extra Playing Time|newspaper=Washington Post|date=November 1, 1994}}</ref>
== Playing career ==
=== International ===
Maslin-Kammerdeiner parlay ein NCAA title success into a tryout for de US National Team, wey then Anson Dorrance coach, wey na she be head coach at North Carolina, de team Maslin ekn GMU Patriots beat insyd de 1985 Championship. Na dem select am to, wey she play give de United States women's national soccer team from 1988 to 1991, plus 17 National Team appearances (caps) insyd dat time frame, recording nine shutouts, wey dey include ein first 843 minutes of ein international career widout allowing a goal – a record wey still dey stand. Insyd 1991, she be de starting goalie for de US National team for much of de World Cup qualifying period, buh she loose ein starting job shortly before de 1991 World Cup after losing sam pre-World Cup exhibition games. She cam be de back-up goaltender on de US team wey win de first Women's World Cup insyd China.<ref>{{cite news|title=Miscellaneous|newspaper=Washington Post|date=January 23, 1992}}</ref>
She retire from competition after de 1991 World Cup, wey she later cam be a school teacher den soccer coach insyd Virginia.
== References ==
<references />
== External links ==
bvc5e9j1e4aq7g6am9skztd4ay6vl21
111949
111948
2026-09-15T23:08:53Z
DaSupremo
9
Improve article
111949
wikitext
text/x-wiki
{{Databox}}
'''Kimberlee Kammerdeiner''' (née '''Maslin'''; born August 12, 1964) be an American retired soccer goalkeeper den former member of de United States women's national soccer team. Considered a pioneer of women's soccer insyd de United States, she be a member of de 1991 United States women's national soccer team wey win de first Women's World Cup insyd China. From 1988 to 1991, she play 843 minutes widout allowing a goal – a record at de time.<ref>{{cite web |title=All-Time Leaders |url=http://www.ussoccer.com/teams/us-women/records/alltime-leaders.aspx |url-status=dead |archiveurl=https://web.archive.org/web/20130416084318/http://www.ussoccer.com/Teams/US-Women/Records/AllTime-Leaders.aspx |archivedate=April 16, 2013 |accessdate=March 29, 2013 |publisher=US Soccer}}</ref> Insyd 1990, na dem name am to de Soccer America all-decade team.<ref>{{cite news|title=For the Record|newspaper=Washington Post|date=January 18, 1990}}</ref>
== Early life ==
Kim grow up insyd Rutledge, Pennsylvania. Since na der be no high school girls soccer team to play on at dat time at Swarthmore High School, she play goalie insyd de boys' soccer program for two seasons. First, she play on de boy's JV team as a sophomore, den then on de boy's varsity team as a junior. Na she sanso be a standout insyd Field Hockey, Basketball den Lacrosse, wey dem elect am to play field hockey instead of soccer insyd ein senior high school season. She sanso play ein club soccer for de Landsdowne Misfits, a girls travel team. Dem recruit am for multiple sports plus NCAA D-I scholarship offers for field hockey, soccer den lacrosse, she elect to play soccer give George Mason University.
=== George Mason University ===
Maslin-Kammerdeiner attend George Mason University wey she play give de Patriots, first as a field player for two seasons, den later as a goaltender, leading de Patriots to an upset insyd de NCAA Division I championship game against de North Carolina Tar Heels insyd 1985.<ref>{{cite news|title=Credit George Mason With Save; Patriots Get Top Goalkeeper; Mead Finds Extra Playing Time|newspaper=Washington Post|date=November 1, 1994}}</ref>
== Playing career ==
=== International ===
Maslin-Kammerdeiner parlay ein NCAA title success into a tryout for de US National Team, wey then Anson Dorrance coach, wey na she be head coach at North Carolina, de team Maslin ekn GMU Patriots beat insyd de 1985 Championship. Na dem select am to, wey she play give de United States women's national soccer team from 1988 to 1991, plus 17 National Team appearances (caps) insyd dat time frame, recording nine shutouts, wey dey include ein first 843 minutes of ein international career widout allowing a goal – a record wey still dey stand. Insyd 1991, she be de starting goalie for de US National team for much of de World Cup qualifying period, buh she loose ein starting job shortly before de 1991 World Cup after losing sam pre-World Cup exhibition games. She cam be de back-up goaltender on de US team wey win de first Women's World Cup insyd China.<ref>{{cite news|title=Miscellaneous|newspaper=Washington Post|date=January 23, 1992}}</ref>
She retire from competition after de 1991 World Cup, wey she later cam be a school teacher den soccer coach insyd Virginia.
== References ==
<references />
==External links==
* [https://web.archive.org/web/20150905/http://www.fifa.com/fifa-tournaments/players-coaches/people=182411/index.html Kim Maslin-Kammerdeiner] – FIFA competition record (archived)
{{DEFAULTSORT:Maslin-Kammerdeiner, Kim}}
[[Category:Human]]
[[Category:1964 births]]
[[Category:United States women's international soccer players]]
[[Category:Women's association football goalkeepers]]
[[Category:1991 FIFA Women's World Cup players]]
[[Category:FIFA Women's World Cup–winning players]]
[[Category:American women's soccer players]]
[[Category:George Mason Patriots women's soccer players]]
[[Category:20th-century American sportswomen]]
4by6hv0zgjfvqfsvdl7ayrgn5yvxenx
111951
111949
2026-09-15T23:17:19Z
DaSupremo
9
/* External links */ Improve article
111951
wikitext
text/x-wiki
{{Databox}}
'''Kimberlee Kammerdeiner''' (née '''Maslin'''; born August 12, 1964) be an American retired soccer goalkeeper den former member of de United States women's national soccer team. Considered a pioneer of women's soccer insyd de United States, she be a member of de 1991 United States women's national soccer team wey win de first Women's World Cup insyd China. From 1988 to 1991, she play 843 minutes widout allowing a goal – a record at de time.<ref>{{cite web |title=All-Time Leaders |url=http://www.ussoccer.com/teams/us-women/records/alltime-leaders.aspx |url-status=dead |archiveurl=https://web.archive.org/web/20130416084318/http://www.ussoccer.com/Teams/US-Women/Records/AllTime-Leaders.aspx |archivedate=April 16, 2013 |accessdate=March 29, 2013 |publisher=US Soccer}}</ref> Insyd 1990, na dem name am to de Soccer America all-decade team.<ref>{{cite news|title=For the Record|newspaper=Washington Post|date=January 18, 1990}}</ref>
== Early life ==
Kim grow up insyd Rutledge, Pennsylvania. Since na der be no high school girls soccer team to play on at dat time at Swarthmore High School, she play goalie insyd de boys' soccer program for two seasons. First, she play on de boy's JV team as a sophomore, den then on de boy's varsity team as a junior. Na she sanso be a standout insyd Field Hockey, Basketball den Lacrosse, wey dem elect am to play field hockey instead of soccer insyd ein senior high school season. She sanso play ein club soccer for de Landsdowne Misfits, a girls travel team. Dem recruit am for multiple sports plus NCAA D-I scholarship offers for field hockey, soccer den lacrosse, she elect to play soccer give George Mason University.
=== George Mason University ===
Maslin-Kammerdeiner attend George Mason University wey she play give de Patriots, first as a field player for two seasons, den later as a goaltender, leading de Patriots to an upset insyd de NCAA Division I championship game against de North Carolina Tar Heels insyd 1985.<ref>{{cite news|title=Credit George Mason With Save; Patriots Get Top Goalkeeper; Mead Finds Extra Playing Time|newspaper=Washington Post|date=November 1, 1994}}</ref>
== Playing career ==
=== International ===
Maslin-Kammerdeiner parlay ein NCAA title success into a tryout for de US National Team, wey then Anson Dorrance coach, wey na she be head coach at North Carolina, de team Maslin ekn GMU Patriots beat insyd de 1985 Championship. Na dem select am to, wey she play give de United States women's national soccer team from 1988 to 1991, plus 17 National Team appearances (caps) insyd dat time frame, recording nine shutouts, wey dey include ein first 843 minutes of ein international career widout allowing a goal – a record wey still dey stand. Insyd 1991, she be de starting goalie for de US National team for much of de World Cup qualifying period, buh she loose ein starting job shortly before de 1991 World Cup after losing sam pre-World Cup exhibition games. She cam be de back-up goaltender on de US team wey win de first Women's World Cup insyd China.<ref>{{cite news|title=Miscellaneous|newspaper=Washington Post|date=January 23, 1992}}</ref>
She retire from competition after de 1991 World Cup, wey she later cam be a school teacher den soccer coach insyd Virginia.
== References ==
<references />
==External links==
* [https://web.archive.org/web/20150905/http://www.fifa.com/fifa-tournaments/players-coaches/people=182411/index.html Kim Maslin-Kammerdeiner] – FIFA competition record (archived)
* [https://www.playmakerstats.com/player/kim-maslin-kammerdeiner/181894 Kim Maslin-Kammerdeiner] – Playmakerstats
{{DEFAULTSORT:Maslin-Kammerdeiner, Kim}}
[[Category:Human]]
[[Category:1964 births]]
[[Category:United States women's international soccer players]]
[[Category:Women's association football goalkeepers]]
[[Category:1991 FIFA Women's World Cup players]]
[[Category:FIFA Women's World Cup–winning players]]
[[Category:American women's soccer players]]
[[Category:George Mason Patriots women's soccer players]]
[[Category:20th-century American sportswomen]]
ddnjvbuozefyy2ict2vmn238ci1xfc3
Amy Griffin
0
30174
111952
111677
2026-09-15T23:32:17Z
DaSupremo
9
Improve article
111952
wikitext
text/x-wiki
{{Databox}}
'''Amy Griffin''' (née '''Allmann'''; born October 25, 1965) be an American soccer coach den former player. As a player, Griffin play give de United States women's national soccer team wey she win de 1991 FIFA Women's World Cup. She currently be de head coach of de United States women's national deaf soccer team.<ref>{{cite web |title=Head Coach: Amy Griffin |url=https://usdwnt.com/amygriffin/ |accessdate=December 1, 2019 |publisher=US Deaf Women's National Team}}</ref>
== Early life ==
Griffin grow up insyd Federal Way, Washington, wer she attend Decatur High School wey she play give de club soccer team, F.C. Royals.<ref>{{cite web |title=Amy (Allmann) Griffin |url=http://www.fwps.org/info/notable/griffin.html |url-status=dead |archiveurl=https://web.archive.org/web/20130209142023/http://www.fwps.org/info/notable/griffin.html |archivedate=February 9, 2013 |accessdate=May 3, 2013 |publisher=Federal Way Public Schools}}</ref><ref>{{cite web |title=The Agony Of Victory – After U.S. Soccer Triumph, Women Fight To Keep Sport In Public Eye |url=https://archive.seattletimes.com/archive/19911225/1324968/the-agony-of-victory----after-us-soccer-triumph-women-fight-to-keep-sport-in-public-eye |access-date=May 3, 2013 |publisher=Seattle Times}}</ref>
=== University of Central Florida ===
Griffin attend de University of Central Florida wer she play goalkeeper give de Knights from 1984 to 1987. Insyd 1987, na dem name am NCAA ein Adidas Goalkeeper of de Year. Griffin den teammate [[Michelle Akers]] help lead UCF to three NCAA Tournament appearances, wey dey include a trip to de Final Four insyd 1987.
Na dem induct Griffin into de Central Florida Hall of Fame insyd 1999, de school ein second women's soccer honoree. Na de first be ein teammate at UCF, Michelle Akers.<ref name="uw_bio">{{cite web |title=Amy Griffin |url=http://www.gohuskies.com/sports/w-soccer/mtt/allmann_amy00.html |url-status=dead |archiveurl=https://web.archive.org/web/20101117010754/http://www.gohuskies.com/sports/w-soccer/mtt/allmann_amy00.html |archivedate=November 17, 2010 |accessdate=May 3, 2013 |publisher=University of Washington}}</ref><ref name="ucf_bio">{{cite web |title=Amy Allmann |url=http://www.ucfathletics.com/genrel/allmann_amy00.html |url-status=usurped |archive-url=https://web.archive.org/web/20120227050829/http://www.ucfathletics.com/genrel/allmann_amy00.html |archive-date=February 27, 2012 |accessdate=May 3, 2013 |publisher=University of Central Florida}}</ref>
== Playing career ==
=== International ===
Griffin play give de United States women's national soccer team from 1987 to 1991 wey na she dey on de squad wey win de first ever FIFA Women's World Cup insyd 1991. Insyd 23 career national team starts (plus 24 caps), she post a 12–8–3 record plus a 0.99 goals against average.<ref name="ucf_bio">{{cite web |title=Amy Allmann |url=http://www.ucfathletics.com/genrel/allmann_amy00.html |url-status=usurped |archive-url=https://web.archive.org/web/20120227050829/http://www.ucfathletics.com/genrel/allmann_amy00.html |archive-date=February 27, 2012 |accessdate=May 3, 2013 |publisher=University of Central Florida}}</ref><ref>{{cite web |date=July 9, 1994 |title=Women Quietly Get Their Kicks |url=https://www.chicagotribune.com/1994/07/09/women-quietly-get-their-kicks/ |access-date=May 3, 2013 |publisher=Chicago Tribune}}</ref>
=== International career statistics ===
{| class="wikitable" style="text-align:center"
! colspan="3" |{{fbw|USA}}
|-
!Year
!Apps
!Goals
|-
|1987
|9
|0
|-
|1988
|7
|0
|-
|1989
|–
|–
|-
|1990
|2
|0
|-
|1991
|6
|0
|-
!Total
!24
!0
|}
== Coaching career ==
Griffin be one of de first nine women to obtain a United States Soccer Federation (USSF) level "A" coaching license. She be active insyd de Olympic Development program wey she coach at de 1995 U.S. Olympic Sports Festival. Insyd 1998, she cam be a staff coach for both de NSCAA den de U.S. Soccer Federation.
Griffin be head coach at de University of New Mexico wer she start de program insyd 1993. De New Mexico Lobos post a 27–24–1 record under Griffin, wey dey include a 10–7–3 mark insyd 1995 en route to a second-place finish insyd de Western Athletic Conference. Prior to dat, she serve as assistant coach at San Diego State University. Griffin later re-join [[Lesle Gallimore]], former head coach at San Diego State, at de University of Washington wey she spend over a decade plus de Huskies, most recently as associate head coach.
Na Griffin be an assistant coach at Santa Clara University from 1989 to 1991. Na she sanso be an assistant coach at ein alma mater, University of Central Florida.
Insyd 2012, na Griffin be a goalkeeper coach give de United States under-20 women's national soccer team wey she help guide de team to gold at de 2012 FIFA U-20 Women's World Cup.
Insyd 2015, dem announce Griffin was as de new head coach of de United States women's national deaf soccer team.
Griffin sanso be currently de executive director of de Seattle Reign Academy insyd Seattle, Washington.
== Personal life ==
Griffin dey live insyd Seattle, Washington, alongside ein husbie Jack den dema two sons, Nick, born insyd 2001, den Ben, born insyd 2003.
== Broadcasting career ==
Griffin serve as broadcast commentator plus NBC, ESPN den Fox Network. She provide analysis for ESPN2 during de 1995 den 1999 women's soccer World Cups wey na she be de color analyst plus [[Andrés Cantor]] for NBC ein 2000 Sydney Olympic coverage.<ref name="ucf_bio">{{cite web |title=Amy Allmann |url=http://www.ucfathletics.com/genrel/allmann_amy00.html |url-status=usurped |archive-url=https://web.archive.org/web/20120227050829/http://www.ucfathletics.com/genrel/allmann_amy00.html |archive-date=February 27, 2012 |accessdate=May 3, 2013 |publisher=University of Central Florida}}</ref><ref>[https://www.latimes.com/archives/la-xpm-2000-sep-12-sp-19683-story.html Jones, Grahame L. "Lalas and Cantor Have a New 'Goooooooooool,'" ''Los Angeles Times'', Tuesday 12 September 2000.] Retrieved 3 October 2025.</ref>
== Health concerns plus artificial turf ==
Amy Griffin play an important role by bringing forward concerns about de health of women soccer players, particularly goal keepers. She collect data about athletes plus [[cancer]] wey na dem play on artificial turf wey dey contain "crumb rubber".<ref name="Weeks">{{cite journal |last1=Weeks |first1=Jennifer |date=2015 |title=Turf Wars |url=https://www.sciencehistory.org/distillations/magazine/turf-wars |journal=Distillations Magazine |volume=1 |issue=3 |pages=34–37 |accessdate=March 22, 2018}}</ref><ref name="USAToday">{{cite news|title=Why Won't the Government Say Whether This Artificial Turf is Safe?|url=http://usatodayhss.com/2015/amy-griffin-soccer-artificial-turf-cancer|accessdate=November 6, 2015|work=USA Today|date=September 30, 2015}}</ref> As of 2015, ein list of 200 athletes plus cancer contain 150 soccer players, 95 of whom be goalkeepers.<ref name="Fernandez">{{cite news|last1=Fernandez|first1=Erick|title=ESPN Is Running A Segment On Turf That Should Worry Everyone|url=http://www.huffingtonpost.com/entry/espn-report-turf-dangers-cancer_5638f8efe4b00a4d2e0c12df|accessdate=November 6, 2015|work=Huffington Post|date=November 3, 2015}}</ref>
== References ==
<references />
== External links ==
s85wvco02y1vbwr30i2m5xgxis37h1k
111953
111952
2026-09-15T23:36:03Z
DaSupremo
9
Improve article
111953
wikitext
text/x-wiki
{{Databox}}
'''Amy Griffin''' (née '''Allmann'''; born October 25, 1965) be an American soccer coach den former player. As a player, Griffin play give de United States women's national soccer team wey she win de 1991 FIFA Women's World Cup. She currently be de head coach of de United States women's national deaf soccer team.<ref>{{cite web |title=Head Coach: Amy Griffin |url=https://usdwnt.com/amygriffin/ |accessdate=December 1, 2019 |publisher=US Deaf Women's National Team}}</ref>
== Early life ==
Griffin grow up insyd Federal Way, Washington, wer she attend Decatur High School wey she play give de club soccer team, F.C. Royals.<ref>{{cite web |title=Amy (Allmann) Griffin |url=http://www.fwps.org/info/notable/griffin.html |url-status=dead |archiveurl=https://web.archive.org/web/20130209142023/http://www.fwps.org/info/notable/griffin.html |archivedate=February 9, 2013 |accessdate=May 3, 2013 |publisher=Federal Way Public Schools}}</ref><ref>{{cite web |title=The Agony Of Victory – After U.S. Soccer Triumph, Women Fight To Keep Sport In Public Eye |url=https://archive.seattletimes.com/archive/19911225/1324968/the-agony-of-victory----after-us-soccer-triumph-women-fight-to-keep-sport-in-public-eye |access-date=May 3, 2013 |publisher=Seattle Times}}</ref>
=== University of Central Florida ===
Griffin attend de University of Central Florida wer she play goalkeeper give de Knights from 1984 to 1987. Insyd 1987, na dem name am NCAA ein Adidas Goalkeeper of de Year. Griffin den teammate [[Michelle Akers]] help lead UCF to three NCAA Tournament appearances, wey dey include a trip to de Final Four insyd 1987.
Na dem induct Griffin into de Central Florida Hall of Fame insyd 1999, de school ein second women's soccer honoree. Na de first be ein teammate at UCF, Michelle Akers.<ref name="uw_bio">{{cite web |title=Amy Griffin |url=http://www.gohuskies.com/sports/w-soccer/mtt/allmann_amy00.html |url-status=dead |archiveurl=https://web.archive.org/web/20101117010754/http://www.gohuskies.com/sports/w-soccer/mtt/allmann_amy00.html |archivedate=November 17, 2010 |accessdate=May 3, 2013 |publisher=University of Washington}}</ref><ref name="ucf_bio">{{cite web |title=Amy Allmann |url=http://www.ucfathletics.com/genrel/allmann_amy00.html |url-status=usurped |archive-url=https://web.archive.org/web/20120227050829/http://www.ucfathletics.com/genrel/allmann_amy00.html |archive-date=February 27, 2012 |accessdate=May 3, 2013 |publisher=University of Central Florida}}</ref>
== Playing career ==
=== International ===
Griffin play give de United States women's national soccer team from 1987 to 1991 wey na she dey on de squad wey win de first ever FIFA Women's World Cup insyd 1991. Insyd 23 career national team starts (plus 24 caps), she post a 12–8–3 record plus a 0.99 goals against average.<ref name="ucf_bio">{{cite web |title=Amy Allmann |url=http://www.ucfathletics.com/genrel/allmann_amy00.html |url-status=usurped |archive-url=https://web.archive.org/web/20120227050829/http://www.ucfathletics.com/genrel/allmann_amy00.html |archive-date=February 27, 2012 |accessdate=May 3, 2013 |publisher=University of Central Florida}}</ref><ref>{{cite web |date=July 9, 1994 |title=Women Quietly Get Their Kicks |url=https://www.chicagotribune.com/1994/07/09/women-quietly-get-their-kicks/ |access-date=May 3, 2013 |publisher=Chicago Tribune}}</ref>
=== International career statistics ===
{| class="wikitable" style="text-align:center"
! colspan="3" |{{fbw|USA}}
|-
!Year
!Apps
!Goals
|-
|1987
|9
|0
|-
|1988
|7
|0
|-
|1989
|–
|–
|-
|1990
|2
|0
|-
|1991
|6
|0
|-
!Total
!24
!0
|}
== Coaching career ==
Griffin be one of de first nine women to obtain a United States Soccer Federation (USSF) level "A" coaching license. She be active insyd de Olympic Development program wey she coach at de 1995 U.S. Olympic Sports Festival. Insyd 1998, she cam be a staff coach for both de NSCAA den de U.S. Soccer Federation.
Griffin be head coach at de University of New Mexico wer she start de program insyd 1993. De New Mexico Lobos post a 27–24–1 record under Griffin, wey dey include a 10–7–3 mark insyd 1995 en route to a second-place finish insyd de Western Athletic Conference. Prior to dat, she serve as assistant coach at San Diego State University. Griffin later re-join [[Lesle Gallimore]], former head coach at San Diego State, at de University of Washington wey she spend over a decade plus de Huskies, most recently as associate head coach.
Na Griffin be an assistant coach at Santa Clara University from 1989 to 1991. Na she sanso be an assistant coach at ein alma mater, University of Central Florida.
Insyd 2012, na Griffin be a goalkeeper coach give de United States under-20 women's national soccer team wey she help guide de team to gold at de 2012 FIFA U-20 Women's World Cup.
Insyd 2015, dem announce Griffin was as de new head coach of de United States women's national deaf soccer team.
Griffin sanso be currently de executive director of de Seattle Reign Academy insyd Seattle, Washington.
== Personal life ==
Griffin dey live insyd Seattle, Washington, alongside ein husbie Jack den dema two sons, Nick, born insyd 2001, den Ben, born insyd 2003.
== Broadcasting career ==
Griffin serve as broadcast commentator plus NBC, ESPN den Fox Network. She provide analysis for ESPN2 during de 1995 den 1999 women's soccer World Cups wey na she be de color analyst plus [[Andrés Cantor]] for NBC ein 2000 Sydney Olympic coverage.<ref name="ucf_bio">{{cite web |title=Amy Allmann |url=http://www.ucfathletics.com/genrel/allmann_amy00.html |url-status=usurped |archive-url=https://web.archive.org/web/20120227050829/http://www.ucfathletics.com/genrel/allmann_amy00.html |archive-date=February 27, 2012 |accessdate=May 3, 2013 |publisher=University of Central Florida}}</ref><ref>[https://www.latimes.com/archives/la-xpm-2000-sep-12-sp-19683-story.html Jones, Grahame L. "Lalas and Cantor Have a New 'Goooooooooool,'" ''Los Angeles Times'', Tuesday 12 September 2000.] Retrieved 3 October 2025.</ref>
== Health concerns plus artificial turf ==
Amy Griffin play an important role by bringing forward concerns about de health of women soccer players, particularly goal keepers. She collect data about athletes plus [[cancer]] wey na dem play on artificial turf wey dey contain "crumb rubber".<ref name="Weeks">{{cite journal |last1=Weeks |first1=Jennifer |date=2015 |title=Turf Wars |url=https://www.sciencehistory.org/distillations/magazine/turf-wars |journal=Distillations Magazine |volume=1 |issue=3 |pages=34–37 |accessdate=March 22, 2018}}</ref><ref name="USAToday">{{cite news|title=Why Won't the Government Say Whether This Artificial Turf is Safe?|url=http://usatodayhss.com/2015/amy-griffin-soccer-artificial-turf-cancer|accessdate=November 6, 2015|work=USA Today|date=September 30, 2015}}</ref> As of 2015, ein list of 200 athletes plus cancer contain 150 soccer players, 95 of whom be goalkeepers.<ref name="Fernandez">{{cite news|last1=Fernandez|first1=Erick|title=ESPN Is Running A Segment On Turf That Should Worry Everyone|url=http://www.huffingtonpost.com/entry/espn-report-turf-dangers-cancer_5638f8efe4b00a4d2e0c12df|accessdate=November 6, 2015|work=Huffington Post|date=November 3, 2015}}</ref>
== References ==
<references />
==External links==
{{Commons}}
* [https://gohuskies.com/coaches.aspx?rc=4169&path=wsoc Washington coach profile]
{{DEFAULTSORT:Griffin, Amy}}
[[Category:1965 births]]
[[Category:Human]]
[[Category:United States women's international soccer players]]
[[Category:University of Central Florida alumni]]
[[Category:1991 FIFA Women's World Cup players]]
[[Category:UCF Knights women's soccer players]]
[[Category:Washington Huskies women's soccer coaches]]
[[Category:Sportspeople wey komot Federal Way, Washington]]
[[Category:Soccer players wey komot King County, Washington]]
[[Category:American women's soccer players]]
[[Category:American soccer head coaches]]
[[Category:FIFA Women's World Cup–winning players]]
[[Category:Women's association football goalkeepers]]
[[Category:American female sports coaches]]
[[Category:New Mexico Lobos women's soccer coaches]]
[[Category:20th-century American sportswomen]]
7fnxwfnz2ta0flgwk6qx8dmbusc5im8
Janou Levels
0
30185
111971
111626
2026-09-16T10:07:38Z
DaSupremo
9
Improve article
111971
wikitext
text/x-wiki
{{Databox}}
'''Janou Levels''' (born 30 October 2000) be a Dutch professional football player wey dey play as a defender give Liga F club Real Madrid. Levels captain de Netherlands women's national under-23 football team, wey she be capped give de Netherlands national team once. She previously play give Dutch teams CTO den PSV.
== Club career ==
Levels start dey play football at de age of five for SHH Herten.<ref name="SHH2">{{cite web |date=27 April 2018 |title=Janou Levels tekent 2-jarig profcontract bij PSV |url=https://www.shh-herten.nl/janou-levels-tekent-2-jarig-profcontract-bij-psv |accessdate=24 February 2022 |publisher=SSH Herten |language=nl}}</ref> At de age of 14, she move go CTO insyd Eindhoven.<ref name="SHH2" />
At de age of 17, Levels signed give PSV ahead of de 2018–19 Eredivisie season.<ref>{{Cite web |date=26 April 2018 |title=VROUWENTEAM LEGT PATTIWAEL, LEVELS EN VAN SCHOONHOVEN VAST |url=https://www.psv.nl/media/artikel/vrouwenteam-legt-pattiwael-levels-en-van-schoonhoven-vast |access-date=24 February 2022 |publisher=[[PSV (women)|PSV]] |language=nl}}</ref> Na she be a part of de PSV team wey loose de 2020 Eredivisie Cup Final to FC Twente. Insyd April 2020, she sign a new contract plus PSV. Insyd de 2020–21 KNVB Women's Cup Final against ADO Den Haag, Levels concede a peculiar penalty for handball. De ball touch ein hand insyd de 18-yard box, wen she raise am to appeal for supposed handball by ein opponent. Nevertheless, PSV win de match 1–0, wey dem earn dema first major honour. Insyd April 2021, she sign a new three-year contract plus de club. In total, she make 117 appearances give PSV insyd five seasons plus de club. Insyd June 2023, na dem transfer Levels to Frauen-Bundesliga club Bayer Leverkusen.
On 11 July 2026, na dem announce say Levels sign a four-year deal plus Liga F club Real Madrid til June 2030.<ref>{{Cite web |date=11 July 2026 |title=REAL MADRID C.F. - ERROR |url=https://www.realmadrid.com/es-ES/noticias/club/comunicados/comunicado-oficial-janou-levels-11-07-2026 |access-date=11 July 2026 |website=www.realmadrid.com |language=ES}}</ref>
== International career ==
Insyd October 2021, na dem name Levels to de Netherlands women's national football team for de first time. De next month, she make ein senior debut insyd a match against Japan. She dey insyd de Dutch squad for three matches insyd February 2022.
== Personal life ==
Levels grow up insyd Herten, Netherlands. She be de daughter of Jo Levels, wey play give VVV-Venlo.
== References ==
<references />
== External links ==
74ya9j0r0mdfjzfbcoco4fhdksarruc
111972
111971
2026-09-16T10:11:50Z
DaSupremo
9
/* Club career */ Add reference
111972
wikitext
text/x-wiki
{{Databox}}
'''Janou Levels''' (born 30 October 2000) be a Dutch professional football player wey dey play as a defender give Liga F club Real Madrid. Levels captain de Netherlands women's national under-23 football team, wey she be capped give de Netherlands national team once. She previously play give Dutch teams CTO den PSV.
== Club career ==
Levels start dey play football at de age of five for SHH Herten.<ref name="SHH2">{{cite web |date=27 April 2018 |title=Janou Levels tekent 2-jarig profcontract bij PSV |url=https://www.shh-herten.nl/janou-levels-tekent-2-jarig-profcontract-bij-psv |accessdate=24 February 2022 |publisher=SSH Herten |language=nl}}</ref> At de age of 14, she move go CTO insyd Eindhoven.<ref name="SHH2" />
At de age of 17, Levels signed give PSV ahead of de 2018–19 Eredivisie season.<ref>{{Cite web |date=26 April 2018 |title=VROUWENTEAM LEGT PATTIWAEL, LEVELS EN VAN SCHOONHOVEN VAST |url=https://www.psv.nl/media/artikel/vrouwenteam-legt-pattiwael-levels-en-van-schoonhoven-vast |access-date=24 February 2022 |publisher=[[PSV (women)|PSV]] |language=nl}}</ref><ref>{{cite news|url=https://nos.nl/artikel/2264633-toekomst-van-oranjevrouwen-de-20-grootste-talenten-van-nederland|title=Toekomst van Oranjevrouwen: de 20 grootste talenten van Nederland|language=nl|work=[[Nederlandse Omroep Stichting]]|date=22 December 2018|accessdate=24 February 2022}}</ref> Na she be a part of de PSV team wey loose de 2020 Eredivisie Cup Final to FC Twente. Insyd April 2020, she sign a new contract plus PSV. Insyd de 2020–21 KNVB Women's Cup Final against ADO Den Haag, Levels concede a peculiar penalty for handball. De ball touch ein hand insyd de 18-yard box, wen she raise am to appeal for supposed handball by ein opponent. Nevertheless, PSV win de match 1–0, wey dem earn dema first major honour. Insyd April 2021, she sign a new three-year contract plus de club. In total, she make 117 appearances give PSV insyd five seasons plus de club. Insyd June 2023, na dem transfer Levels to Frauen-Bundesliga club Bayer Leverkusen.
On 11 July 2026, na dem announce say Levels sign a four-year deal plus Liga F club Real Madrid til June 2030.<ref>{{Cite web |date=11 July 2026 |title=REAL MADRID C.F. - ERROR |url=https://www.realmadrid.com/es-ES/noticias/club/comunicados/comunicado-oficial-janou-levels-11-07-2026 |access-date=11 July 2026 |website=www.realmadrid.com |language=ES}}</ref>
== International career ==
Insyd October 2021, na dem name Levels to de Netherlands women's national football team for de first time. De next month, she make ein senior debut insyd a match against Japan. She dey insyd de Dutch squad for three matches insyd February 2022.
== Personal life ==
Levels grow up insyd Herten, Netherlands. She be de daughter of Jo Levels, wey play give VVV-Venlo.
== References ==
<references />
== External links ==
i0pizwc8wl5ygeagnqjeqp67a1hm3ln
111974
111972
2026-09-16T10:13:27Z
DaSupremo
9
/* Club career */ Add references
111974
wikitext
text/x-wiki
{{Databox}}
'''Janou Levels''' (born 30 October 2000) be a Dutch professional football player wey dey play as a defender give Liga F club Real Madrid. Levels captain de Netherlands women's national under-23 football team, wey she be capped give de Netherlands national team once. She previously play give Dutch teams CTO den PSV.
== Club career ==
Levels start dey play football at de age of five for SHH Herten.<ref name="SHH2">{{cite web |date=27 April 2018 |title=Janou Levels tekent 2-jarig profcontract bij PSV |url=https://www.shh-herten.nl/janou-levels-tekent-2-jarig-profcontract-bij-psv |accessdate=24 February 2022 |publisher=SSH Herten |language=nl}}</ref> At de age of 14, she move go CTO insyd Eindhoven.<ref name="SHH2" />
At de age of 17, Levels signed give PSV ahead of de 2018–19 Eredivisie season.<ref>{{Cite web |date=26 April 2018 |title=VROUWENTEAM LEGT PATTIWAEL, LEVELS EN VAN SCHOONHOVEN VAST |url=https://www.psv.nl/media/artikel/vrouwenteam-legt-pattiwael-levels-en-van-schoonhoven-vast |access-date=24 February 2022 |publisher=[[PSV (women)|PSV]] |language=nl}}</ref><ref>{{cite news|url=https://nos.nl/artikel/2264633-toekomst-van-oranjevrouwen-de-20-grootste-talenten-van-nederland|title=Toekomst van Oranjevrouwen: de 20 grootste talenten van Nederland|language=nl|work=[[Nederlandse Omroep Stichting]]|date=22 December 2018|accessdate=24 February 2022}}</ref> Na she be a part of de PSV team wey loose de 2020 Eredivisie Cup Final to FC Twente.<ref>{{cite news|url=https://www.1limburg.nl/limburgse-doelpunten-eerste-editie-eredivisie-cu|title=Limburgse doelpunten in eerste editie Eredivisie Cup|language=nl|work=1 Limburg|date=28 February 2020|accessdate=24 February 2022}}{{Dead link|date=October 2025|bot=InternetArchiveBot}}</ref> Insyd April 2020, she sign a new contract plus PSV.<ref>{{cite news|url=https://www.ed.nl/psv/drie-speelsters-verlengen-contract-bij-psv~a62fed98/|title=Drie speelsters verlengen contract bij PSV|language=nl|work=[[Eindhovens Dagblad]]|date=22 April 2020|accessdate=24 February 2022}}</ref> Insyd de 2020–21 KNVB Women's Cup Final against ADO Den Haag, Levels concede a peculiar penalty for handball. De ball touch ein hand insyd de 18-yard box, wen she raise am to appeal for supposed handball by ein opponent.<ref>{{cite news|url=https://www.ad.nl/nederlands-voetbal/bizar-psver-appelleert-voor-hands-en-krijgt-zelf-een-penalty-tegen~a0b6812e/|title=Bizar: PSV'er appelleert voor hands en krijgt zélf een penalty tegen|language=nl|work=[[Algemeen Dagblad]]|date=5 June 2021|accessdate=24 February 2022}}</ref><ref>{{cite magazine|url=https://www.vi.nl/nieuws/opmerkelijk-penaltymoment-houdt-psv-vrouwen-niet-van-de-beker-af|title=Opmerkelijk penaltymoment houdt PSV vrouwen niet van de beker af|language=nl|magazine=[[Voetbal International]]|date=5 June 2021|accessdate=24 February 2022}}</ref> Nevertheless, PSV win de match 1–0, wey dem earn dema first major honour.<ref>{{cite news|url=https://www.ed.nl/psv/psv-verovert-eerste-prijs-in-clubhistorie-bij-de-vrouwen~a537d159/|title=PSV verovert eerste prijs in clubhistorie bij de vrouwen|language=nl|work=[[Eindhovens Dagblad]]|date=5 June 2021|accessdate=24 February 2022}}</ref> Insyd April 2021, she sign a new three-year contract plus de club.<ref name="ED21">{{cite news|url=https://www.ed.nl/vrouwenvoetbal/psv-linksback-janou-levels-het-belangrijkste-is-dat-wij-aan-het-einde-van-de-streep-prijzen-binnenhalen~a9613bd2/|title=PSV-linksback Janou Levels: 'Het belangrijkste is dat wij aan het einde van de streep prijzen binnenhalen'|language=nl|work=[[Eindhovens Dagblad]]|date=18 April 2021|accessdate=24 February 2022}}</ref> In total, she make 117 appearances give PSV insyd five seasons plus de club. Insyd June 2023, na dem transfer Levels to Frauen-Bundesliga club Bayer Leverkusen.<ref>{{cite news|url=https://www.ed.nl/sport-regio/bayer-leverkusen-betaalt-psv-transfersom-voor-overname-janou-levels~abedcccf/|title=Bayer Leverkusen betaalt PSV transfersom voor overname Janou Levels|language=nl|work=[[Eindhovens Dagblad]]|date=21 June 2023|accessdate=2 July 2023}}</ref>
On 11 July 2026, na dem announce say Levels sign a four-year deal plus Liga F club Real Madrid til June 2030.<ref>{{Cite web |date=11 July 2026 |title=REAL MADRID C.F. - ERROR |url=https://www.realmadrid.com/es-ES/noticias/club/comunicados/comunicado-oficial-janou-levels-11-07-2026 |access-date=11 July 2026 |website=www.realmadrid.com |language=ES}}</ref>
== International career ==
Insyd October 2021, na dem name Levels to de Netherlands women's national football team for de first time. De next month, she make ein senior debut insyd a match against Japan. She dey insyd de Dutch squad for three matches insyd February 2022.
== Personal life ==
Levels grow up insyd Herten, Netherlands. She be de daughter of Jo Levels, wey play give VVV-Venlo.
== References ==
<references />
== External links ==
52w2kfnw0cd8avm2d3ilrfo9nkkco1b
111975
111974
2026-09-16T10:14:22Z
DaSupremo
9
/* International career */ Add references
111975
wikitext
text/x-wiki
{{Databox}}
'''Janou Levels''' (born 30 October 2000) be a Dutch professional football player wey dey play as a defender give Liga F club Real Madrid. Levels captain de Netherlands women's national under-23 football team, wey she be capped give de Netherlands national team once. She previously play give Dutch teams CTO den PSV.
== Club career ==
Levels start dey play football at de age of five for SHH Herten.<ref name="SHH2">{{cite web |date=27 April 2018 |title=Janou Levels tekent 2-jarig profcontract bij PSV |url=https://www.shh-herten.nl/janou-levels-tekent-2-jarig-profcontract-bij-psv |accessdate=24 February 2022 |publisher=SSH Herten |language=nl}}</ref> At de age of 14, she move go CTO insyd Eindhoven.<ref name="SHH2" />
At de age of 17, Levels signed give PSV ahead of de 2018–19 Eredivisie season.<ref>{{Cite web |date=26 April 2018 |title=VROUWENTEAM LEGT PATTIWAEL, LEVELS EN VAN SCHOONHOVEN VAST |url=https://www.psv.nl/media/artikel/vrouwenteam-legt-pattiwael-levels-en-van-schoonhoven-vast |access-date=24 February 2022 |publisher=[[PSV (women)|PSV]] |language=nl}}</ref><ref>{{cite news|url=https://nos.nl/artikel/2264633-toekomst-van-oranjevrouwen-de-20-grootste-talenten-van-nederland|title=Toekomst van Oranjevrouwen: de 20 grootste talenten van Nederland|language=nl|work=[[Nederlandse Omroep Stichting]]|date=22 December 2018|accessdate=24 February 2022}}</ref> Na she be a part of de PSV team wey loose de 2020 Eredivisie Cup Final to FC Twente.<ref>{{cite news|url=https://www.1limburg.nl/limburgse-doelpunten-eerste-editie-eredivisie-cu|title=Limburgse doelpunten in eerste editie Eredivisie Cup|language=nl|work=1 Limburg|date=28 February 2020|accessdate=24 February 2022}}{{Dead link|date=October 2025|bot=InternetArchiveBot}}</ref> Insyd April 2020, she sign a new contract plus PSV.<ref>{{cite news|url=https://www.ed.nl/psv/drie-speelsters-verlengen-contract-bij-psv~a62fed98/|title=Drie speelsters verlengen contract bij PSV|language=nl|work=[[Eindhovens Dagblad]]|date=22 April 2020|accessdate=24 February 2022}}</ref> Insyd de 2020–21 KNVB Women's Cup Final against ADO Den Haag, Levels concede a peculiar penalty for handball. De ball touch ein hand insyd de 18-yard box, wen she raise am to appeal for supposed handball by ein opponent.<ref>{{cite news|url=https://www.ad.nl/nederlands-voetbal/bizar-psver-appelleert-voor-hands-en-krijgt-zelf-een-penalty-tegen~a0b6812e/|title=Bizar: PSV'er appelleert voor hands en krijgt zélf een penalty tegen|language=nl|work=[[Algemeen Dagblad]]|date=5 June 2021|accessdate=24 February 2022}}</ref><ref>{{cite magazine|url=https://www.vi.nl/nieuws/opmerkelijk-penaltymoment-houdt-psv-vrouwen-niet-van-de-beker-af|title=Opmerkelijk penaltymoment houdt PSV vrouwen niet van de beker af|language=nl|magazine=[[Voetbal International]]|date=5 June 2021|accessdate=24 February 2022}}</ref> Nevertheless, PSV win de match 1–0, wey dem earn dema first major honour.<ref>{{cite news|url=https://www.ed.nl/psv/psv-verovert-eerste-prijs-in-clubhistorie-bij-de-vrouwen~a537d159/|title=PSV verovert eerste prijs in clubhistorie bij de vrouwen|language=nl|work=[[Eindhovens Dagblad]]|date=5 June 2021|accessdate=24 February 2022}}</ref> Insyd April 2021, she sign a new three-year contract plus de club.<ref name="ED21">{{cite news|url=https://www.ed.nl/vrouwenvoetbal/psv-linksback-janou-levels-het-belangrijkste-is-dat-wij-aan-het-einde-van-de-streep-prijzen-binnenhalen~a9613bd2/|title=PSV-linksback Janou Levels: 'Het belangrijkste is dat wij aan het einde van de streep prijzen binnenhalen'|language=nl|work=[[Eindhovens Dagblad]]|date=18 April 2021|accessdate=24 February 2022}}</ref> In total, she make 117 appearances give PSV insyd five seasons plus de club. Insyd June 2023, na dem transfer Levels to Frauen-Bundesliga club Bayer Leverkusen.<ref>{{cite news|url=https://www.ed.nl/sport-regio/bayer-leverkusen-betaalt-psv-transfersom-voor-overname-janou-levels~abedcccf/|title=Bayer Leverkusen betaalt PSV transfersom voor overname Janou Levels|language=nl|work=[[Eindhovens Dagblad]]|date=21 June 2023|accessdate=2 July 2023}}</ref>
On 11 July 2026, na dem announce say Levels sign a four-year deal plus Liga F club Real Madrid til June 2030.<ref>{{Cite web |date=11 July 2026 |title=REAL MADRID C.F. - ERROR |url=https://www.realmadrid.com/es-ES/noticias/club/comunicados/comunicado-oficial-janou-levels-11-07-2026 |access-date=11 July 2026 |website=www.realmadrid.com |language=ES}}</ref>
== International career ==
Insyd October 2021, na dem name Levels to de Netherlands women's national football team for de first time.<ref>{{cite news|url=https://www.1limburg.nl/levels-oranje-leeuwin-nooit-gedacht-wel-gedroomd|title=Levels is Oranje Leeuwin: 'Nooit gedacht, wel gedroomd'|language=nl|work=1 Limburg|date=18 October 2021|accessdate=24 February 2022}}</ref> De next month, she make ein senior debut insyd a match against Japan.<ref>{{cite news|url=https://www.limburger.nl/cnt/dmf20211129_96660976|title=Oranje Leeuwinnen spelen bij debuut Hertense Janou Levels bloedeloos gelijk tegen Japan|language=nl|work=[[De Limburger]]|date=29 November 2021|accessdate=24 February 2022}}</ref> She dey insyd de Dutch squad for three matches insyd February 2022.<ref>{{cite news|url=https://www.1limburg.nl/janou-levels-alsnog-opgeroepen-voor-oranje-leeuwinnen|title=Janou Levels alsnog opgeroepen voor Oranje Leeuwinnen|language=nl|work=1 Limburg|date=14 February 2022|accessdate=24 February 2022}}</ref>
== Personal life ==
Levels grow up insyd Herten, Netherlands. She be de daughter of Jo Levels, wey play give VVV-Venlo.
== References ==
<references />
== External links ==
majhp4new6j8d0w5g7wco1c84mznzhi
111976
111975
2026-09-16T10:15:04Z
DaSupremo
9
/* Personal life */ Add reference
111976
wikitext
text/x-wiki
{{Databox}}
'''Janou Levels''' (born 30 October 2000) be a Dutch professional football player wey dey play as a defender give Liga F club Real Madrid. Levels captain de Netherlands women's national under-23 football team, wey she be capped give de Netherlands national team once. She previously play give Dutch teams CTO den PSV.
== Club career ==
Levels start dey play football at de age of five for SHH Herten.<ref name="SHH2">{{cite web |date=27 April 2018 |title=Janou Levels tekent 2-jarig profcontract bij PSV |url=https://www.shh-herten.nl/janou-levels-tekent-2-jarig-profcontract-bij-psv |accessdate=24 February 2022 |publisher=SSH Herten |language=nl}}</ref> At de age of 14, she move go CTO insyd Eindhoven.<ref name="SHH2" />
At de age of 17, Levels signed give PSV ahead of de 2018–19 Eredivisie season.<ref>{{Cite web |date=26 April 2018 |title=VROUWENTEAM LEGT PATTIWAEL, LEVELS EN VAN SCHOONHOVEN VAST |url=https://www.psv.nl/media/artikel/vrouwenteam-legt-pattiwael-levels-en-van-schoonhoven-vast |access-date=24 February 2022 |publisher=[[PSV (women)|PSV]] |language=nl}}</ref><ref>{{cite news|url=https://nos.nl/artikel/2264633-toekomst-van-oranjevrouwen-de-20-grootste-talenten-van-nederland|title=Toekomst van Oranjevrouwen: de 20 grootste talenten van Nederland|language=nl|work=[[Nederlandse Omroep Stichting]]|date=22 December 2018|accessdate=24 February 2022}}</ref> Na she be a part of de PSV team wey loose de 2020 Eredivisie Cup Final to FC Twente.<ref>{{cite news|url=https://www.1limburg.nl/limburgse-doelpunten-eerste-editie-eredivisie-cu|title=Limburgse doelpunten in eerste editie Eredivisie Cup|language=nl|work=1 Limburg|date=28 February 2020|accessdate=24 February 2022}}{{Dead link|date=October 2025|bot=InternetArchiveBot}}</ref> Insyd April 2020, she sign a new contract plus PSV.<ref>{{cite news|url=https://www.ed.nl/psv/drie-speelsters-verlengen-contract-bij-psv~a62fed98/|title=Drie speelsters verlengen contract bij PSV|language=nl|work=[[Eindhovens Dagblad]]|date=22 April 2020|accessdate=24 February 2022}}</ref> Insyd de 2020–21 KNVB Women's Cup Final against ADO Den Haag, Levels concede a peculiar penalty for handball. De ball touch ein hand insyd de 18-yard box, wen she raise am to appeal for supposed handball by ein opponent.<ref>{{cite news|url=https://www.ad.nl/nederlands-voetbal/bizar-psver-appelleert-voor-hands-en-krijgt-zelf-een-penalty-tegen~a0b6812e/|title=Bizar: PSV'er appelleert voor hands en krijgt zélf een penalty tegen|language=nl|work=[[Algemeen Dagblad]]|date=5 June 2021|accessdate=24 February 2022}}</ref><ref>{{cite magazine|url=https://www.vi.nl/nieuws/opmerkelijk-penaltymoment-houdt-psv-vrouwen-niet-van-de-beker-af|title=Opmerkelijk penaltymoment houdt PSV vrouwen niet van de beker af|language=nl|magazine=[[Voetbal International]]|date=5 June 2021|accessdate=24 February 2022}}</ref> Nevertheless, PSV win de match 1–0, wey dem earn dema first major honour.<ref>{{cite news|url=https://www.ed.nl/psv/psv-verovert-eerste-prijs-in-clubhistorie-bij-de-vrouwen~a537d159/|title=PSV verovert eerste prijs in clubhistorie bij de vrouwen|language=nl|work=[[Eindhovens Dagblad]]|date=5 June 2021|accessdate=24 February 2022}}</ref> Insyd April 2021, she sign a new three-year contract plus de club.<ref name="ED21">{{cite news|url=https://www.ed.nl/vrouwenvoetbal/psv-linksback-janou-levels-het-belangrijkste-is-dat-wij-aan-het-einde-van-de-streep-prijzen-binnenhalen~a9613bd2/|title=PSV-linksback Janou Levels: 'Het belangrijkste is dat wij aan het einde van de streep prijzen binnenhalen'|language=nl|work=[[Eindhovens Dagblad]]|date=18 April 2021|accessdate=24 February 2022}}</ref> In total, she make 117 appearances give PSV insyd five seasons plus de club. Insyd June 2023, na dem transfer Levels to Frauen-Bundesliga club Bayer Leverkusen.<ref>{{cite news|url=https://www.ed.nl/sport-regio/bayer-leverkusen-betaalt-psv-transfersom-voor-overname-janou-levels~abedcccf/|title=Bayer Leverkusen betaalt PSV transfersom voor overname Janou Levels|language=nl|work=[[Eindhovens Dagblad]]|date=21 June 2023|accessdate=2 July 2023}}</ref>
On 11 July 2026, na dem announce say Levels sign a four-year deal plus Liga F club Real Madrid til June 2030.<ref>{{Cite web |date=11 July 2026 |title=REAL MADRID C.F. - ERROR |url=https://www.realmadrid.com/es-ES/noticias/club/comunicados/comunicado-oficial-janou-levels-11-07-2026 |access-date=11 July 2026 |website=www.realmadrid.com |language=ES}}</ref>
== International career ==
Insyd October 2021, na dem name Levels to de Netherlands women's national football team for de first time.<ref>{{cite news|url=https://www.1limburg.nl/levels-oranje-leeuwin-nooit-gedacht-wel-gedroomd|title=Levels is Oranje Leeuwin: 'Nooit gedacht, wel gedroomd'|language=nl|work=1 Limburg|date=18 October 2021|accessdate=24 February 2022}}</ref> De next month, she make ein senior debut insyd a match against Japan.<ref>{{cite news|url=https://www.limburger.nl/cnt/dmf20211129_96660976|title=Oranje Leeuwinnen spelen bij debuut Hertense Janou Levels bloedeloos gelijk tegen Japan|language=nl|work=[[De Limburger]]|date=29 November 2021|accessdate=24 February 2022}}</ref> She dey insyd de Dutch squad for three matches insyd February 2022.<ref>{{cite news|url=https://www.1limburg.nl/janou-levels-alsnog-opgeroepen-voor-oranje-leeuwinnen|title=Janou Levels alsnog opgeroepen voor Oranje Leeuwinnen|language=nl|work=1 Limburg|date=14 February 2022|accessdate=24 February 2022}}</ref>
== Personal life ==
Levels grow up insyd Herten, Netherlands. She be de daughter of Jo Levels, wey play give VVV-Venlo.<ref name="ED21" />
== References ==
<references />
== External links ==
b25brvr2eufhup4jvb79x9ztp6v0d7y
111977
111976
2026-09-16T10:17:46Z
DaSupremo
9
Improve article
111977
wikitext
text/x-wiki
{{Databox}}
'''Janou Levels''' (born 30 October 2000) be a Dutch professional football player wey dey play as a defender give Liga F club Real Madrid. Levels captain de Netherlands women's national under-23 football team, wey she be capped give de Netherlands national team once. She previously play give Dutch teams CTO den PSV.
== Club career ==
Levels start dey play football at de age of five for SHH Herten.<ref name="SHH2">{{cite web |date=27 April 2018 |title=Janou Levels tekent 2-jarig profcontract bij PSV |url=https://www.shh-herten.nl/janou-levels-tekent-2-jarig-profcontract-bij-psv |accessdate=24 February 2022 |publisher=SSH Herten |language=nl}}</ref> At de age of 14, she move go CTO insyd Eindhoven.<ref name="SHH2" />
At de age of 17, Levels signed give PSV ahead of de 2018–19 Eredivisie season.<ref>{{Cite web |date=26 April 2018 |title=VROUWENTEAM LEGT PATTIWAEL, LEVELS EN VAN SCHOONHOVEN VAST |url=https://www.psv.nl/media/artikel/vrouwenteam-legt-pattiwael-levels-en-van-schoonhoven-vast |access-date=24 February 2022 |publisher=[[PSV (women)|PSV]] |language=nl}}</ref><ref>{{cite news|url=https://nos.nl/artikel/2264633-toekomst-van-oranjevrouwen-de-20-grootste-talenten-van-nederland|title=Toekomst van Oranjevrouwen: de 20 grootste talenten van Nederland|language=nl|work=[[Nederlandse Omroep Stichting]]|date=22 December 2018|accessdate=24 February 2022}}</ref> Na she be a part of de PSV team wey loose de 2020 Eredivisie Cup Final to FC Twente.<ref>{{cite news|url=https://www.1limburg.nl/limburgse-doelpunten-eerste-editie-eredivisie-cu|title=Limburgse doelpunten in eerste editie Eredivisie Cup|language=nl|work=1 Limburg|date=28 February 2020|accessdate=24 February 2022}}</ref> Insyd April 2020, she sign a new contract plus PSV.<ref>{{cite news|url=https://www.ed.nl/psv/drie-speelsters-verlengen-contract-bij-psv~a62fed98/|title=Drie speelsters verlengen contract bij PSV|language=nl|work=[[Eindhovens Dagblad]]|date=22 April 2020|accessdate=24 February 2022}}</ref> Insyd de 2020–21 KNVB Women's Cup Final against ADO Den Haag, Levels concede a peculiar penalty for handball. De ball touch ein hand insyd de 18-yard box, wen she raise am to appeal for supposed handball by ein opponent.<ref>{{cite news|url=https://www.ad.nl/nederlands-voetbal/bizar-psver-appelleert-voor-hands-en-krijgt-zelf-een-penalty-tegen~a0b6812e/|title=Bizar: PSV'er appelleert voor hands en krijgt zélf een penalty tegen|language=nl|work=[[Algemeen Dagblad]]|date=5 June 2021|accessdate=24 February 2022}}</ref><ref>{{cite magazine|url=https://www.vi.nl/nieuws/opmerkelijk-penaltymoment-houdt-psv-vrouwen-niet-van-de-beker-af|title=Opmerkelijk penaltymoment houdt PSV vrouwen niet van de beker af|language=nl|magazine=[[Voetbal International]]|date=5 June 2021|accessdate=24 February 2022}}</ref> Nevertheless, PSV win de match 1–0, wey dem earn dema first major honour.<ref>{{cite news|url=https://www.ed.nl/psv/psv-verovert-eerste-prijs-in-clubhistorie-bij-de-vrouwen~a537d159/|title=PSV verovert eerste prijs in clubhistorie bij de vrouwen|language=nl|work=[[Eindhovens Dagblad]]|date=5 June 2021|accessdate=24 February 2022}}</ref> Insyd April 2021, she sign a new three-year contract plus de club.<ref name="ED21">{{cite news|url=https://www.ed.nl/vrouwenvoetbal/psv-linksback-janou-levels-het-belangrijkste-is-dat-wij-aan-het-einde-van-de-streep-prijzen-binnenhalen~a9613bd2/|title=PSV-linksback Janou Levels: 'Het belangrijkste is dat wij aan het einde van de streep prijzen binnenhalen'|language=nl|work=[[Eindhovens Dagblad]]|date=18 April 2021|accessdate=24 February 2022}}</ref> In total, she make 117 appearances give PSV insyd five seasons plus de club. Insyd June 2023, na dem transfer Levels to Frauen-Bundesliga club Bayer Leverkusen.<ref>{{cite news|url=https://www.ed.nl/sport-regio/bayer-leverkusen-betaalt-psv-transfersom-voor-overname-janou-levels~abedcccf/|title=Bayer Leverkusen betaalt PSV transfersom voor overname Janou Levels|language=nl|work=[[Eindhovens Dagblad]]|date=21 June 2023|accessdate=2 July 2023}}</ref>
On 11 July 2026, na dem announce say Levels sign a four-year deal plus Liga F club Real Madrid til June 2030.<ref>{{Cite web |date=11 July 2026 |title=REAL MADRID C.F. - ERROR |url=https://www.realmadrid.com/es-ES/noticias/club/comunicados/comunicado-oficial-janou-levels-11-07-2026 |access-date=11 July 2026 |website=www.realmadrid.com |language=ES}}</ref>
== International career ==
Insyd October 2021, na dem name Levels to de Netherlands women's national football team for de first time.<ref>{{cite news|url=https://www.1limburg.nl/levels-oranje-leeuwin-nooit-gedacht-wel-gedroomd|title=Levels is Oranje Leeuwin: 'Nooit gedacht, wel gedroomd'|language=nl|work=1 Limburg|date=18 October 2021|accessdate=24 February 2022}}</ref> De next month, she make ein senior debut insyd a match against Japan.<ref>{{cite news|url=https://www.limburger.nl/cnt/dmf20211129_96660976|title=Oranje Leeuwinnen spelen bij debuut Hertense Janou Levels bloedeloos gelijk tegen Japan|language=nl|work=[[De Limburger]]|date=29 November 2021|accessdate=24 February 2022}}</ref> She dey insyd de Dutch squad for three matches insyd February 2022.<ref>{{cite news|url=https://www.1limburg.nl/janou-levels-alsnog-opgeroepen-voor-oranje-leeuwinnen|title=Janou Levels alsnog opgeroepen voor Oranje Leeuwinnen|language=nl|work=1 Limburg|date=14 February 2022|accessdate=24 February 2022}}</ref>
== Personal life ==
Levels grow up insyd Herten, Netherlands. She be de daughter of Jo Levels, wey play give VVV-Venlo.<ref name="ED21" />
== References ==
<references />
==External links==
*{{DFB|janou-levels}}
*[https://www.worldfootball.net/player_summary/janou-levels/ Janou Levels] at WorldFootball.net
*{{Soccerway|440061}}
{{DEFAULTSORT:Levels, Janou}}
[[Category:2000 births]]
[[Category:Human]]
[[Category:Dutch women's footballers]]
[[Category:Netherlands women's youth international footballers]]
[[Category:Netherlands women's international footballers]]
[[Category:Footballers wey komot Limburg (Netherlands)]]
[[Category:PSV (women) players]]
[[Category:Bayer 04 Leverkusen (women) players]]
[[Category:VfL Wolfsburg (women) players]]
[[Category:Real Madrid Femenino players]]
[[Category:Frauen-Bundesliga players]]
[[Category:Liga F players]]
[[Category:Women's association football defenders]]
[[Category:Sportspeople wey komot Roermond]]
[[Category:Dutch expatriate women's footballers]]
[[Category:Dutch expatriate sportspeople insyd Germany]]
[[Category:Expatriate women's footballers insyd Germany]]
[[Category:Dutch expatriate sportspeople insyd Spain]]
[[Category:Expatriate women's footballers insyd Spain]]
[[Category:21st-century Dutch sportswomen]]
76ofp2q483189xiusr8uozge1e6ez85
Astroneer
0
30231
111962
111742
2026-09-16T00:07:23Z
DaSupremo
9
Make sum corrections
111962
wikitext
text/x-wiki
{{Databox}}
'''''Astroneer''''', dem officially stylize insyd all caps,<ref>{{Cite web |title=ASTRONEER on Steam |url=https://store.steampowered.com/app/361420/ASTRONEER/ |url-status=live |archive-url=https://web.archive.org/web/20230724162747/https://store.steampowered.com/app/361420/ASTRONEER/ |archive-date=July 24, 2023 |access-date=2023-07-24 |website=store.steampowered.com |language=en}}</ref><ref>{{Cite web |title=Buy ASTRONEER {{!}} Xbox |url=https://www.xbox.com/en-us/games/store/ASTRONEER/9NBLGGH43KZB |url-status=live |archive-url=https://web.archive.org/web/20230724162747/https://www.xbox.com/en-us/games/store/ASTRONEER/9NBLGGH43KZB |archive-date=July 24, 2023 |access-date=2023-07-24 |website=www.xbox.com}}</ref><ref>{{Cite web |title=ASTRONEER |url=https://store.playstation.com/en-us/product/UP2467-CUSA16473_00-ASTRONEER0000000 |url-status=live |archive-url=https://web.archive.org/web/20230724162748/https://store.playstation.com/en-us/product/UP2467-CUSA16473_00-ASTRONEER0000000 |archive-date=July 24, 2023 |access-date=2023-07-24 |website=store.playstation.com}}</ref><ref>{{Cite web |title=ASTRONEER for Nintendo Switch - Nintendo Official Site |url=https://www.nintendo.com/store/products/astroneer-switch/ |url-status=live |archive-url=https://web.archive.org/web/20230724162748/https://www.nintendo.com/store/products/astroneer-switch/ |archive-date=July 24, 2023 |access-date=2023-07-24 |website=www.nintendo.com |language=en-us}}</ref> be 2019 sandbox adventure game wey dem develop den publish by American studio System Era Softworks. Dem release de game thru early access insyd December 2016 before a full release on February 6, 2019. De player be tasked plus colonizing planets, creating structures, den collecting resources. Dem dey call de character an Astroneer wey de player fit travel to planets to activate cores den plete de game. Dem dey reward players upon completion of core activation, most notably a suit den/anaa visor.
== References ==
<references />
== External links ==
9o943lxpkksu4d7dnep6h917btbywcw
111963
111962
2026-09-16T00:10:12Z
DaSupremo
9
/* Awards */ Improve article
111963
wikitext
text/x-wiki
{{Databox}}
'''''Astroneer''''', dem officially stylize insyd all caps,<ref>{{Cite web |title=ASTRONEER on Steam |url=https://store.steampowered.com/app/361420/ASTRONEER/ |url-status=live |archive-url=https://web.archive.org/web/20230724162747/https://store.steampowered.com/app/361420/ASTRONEER/ |archive-date=July 24, 2023 |access-date=2023-07-24 |website=store.steampowered.com |language=en}}</ref><ref>{{Cite web |title=Buy ASTRONEER {{!}} Xbox |url=https://www.xbox.com/en-us/games/store/ASTRONEER/9NBLGGH43KZB |url-status=live |archive-url=https://web.archive.org/web/20230724162747/https://www.xbox.com/en-us/games/store/ASTRONEER/9NBLGGH43KZB |archive-date=July 24, 2023 |access-date=2023-07-24 |website=www.xbox.com}}</ref><ref>{{Cite web |title=ASTRONEER |url=https://store.playstation.com/en-us/product/UP2467-CUSA16473_00-ASTRONEER0000000 |url-status=live |archive-url=https://web.archive.org/web/20230724162748/https://store.playstation.com/en-us/product/UP2467-CUSA16473_00-ASTRONEER0000000 |archive-date=July 24, 2023 |access-date=2023-07-24 |website=store.playstation.com}}</ref><ref>{{Cite web |title=ASTRONEER for Nintendo Switch - Nintendo Official Site |url=https://www.nintendo.com/store/products/astroneer-switch/ |url-status=live |archive-url=https://web.archive.org/web/20230724162748/https://www.nintendo.com/store/products/astroneer-switch/ |archive-date=July 24, 2023 |access-date=2023-07-24 |website=www.nintendo.com |language=en-us}}</ref> be 2019 sandbox adventure game wey dem develop den publish by American studio System Era Softworks. Dem release de game thru early access insyd December 2016 before a full release on February 6, 2019. De player be tasked plus colonizing planets, creating structures, den collecting resources. Dem dey call de character an Astroneer wey de player fit travel to planets to activate cores den plete de game. Dem dey reward players upon completion of core activation, most notably a suit den/anaa visor.
== Awards ==
{| class="wikitable sortable"
|-
! Year !! Award !! Category !! Result !! Ref
|-
| rowspan="6" style="text-align:center;" |2019
| [[SXSW Gaming Awards]]
| Gamer's Voice: Video Game
| {{won}}
| style="text-align:center;" | <ref name="Trent-20192">{{cite web |last=Trent |first=Logan |date=March 17, 2019 |title=2019 SXSW Gaming Awards Winners Announced |url=https://gaming.sxsw.com/news/2019/2019-sxsw-gaming-awards-winners-announced/ |url-status=dead |archive-url=https://web.archive.org/web/20190321065552/https://gaming.sxsw.com/news/2019/2019-sxsw-gaming-awards-winners-announced/ |archive-date=March 21, 2019 |website=[[South by Southwest]]}}</ref>
|-
| rowspan="5" |[[2019 Webby Awards]]
| Adventure Game
| {{won}}
| rowspan="5" style="text-align:center;" |<ref name="Liao-2019">{{cite web |last=Liao |first=Shannon |date=April 23, 2019 |title=Here are all the winners of the 2019 Webby Awards |url=https://www.theverge.com/2019/4/23/18511329/2019-webby-awards-all-the-winners |url-status=live |archive-url=https://web.archive.org/web/20190423233428/https://www.theverge.com/2019/4/23/18511329/2019-webby-awards-all-the-winners/ |archive-date=April 23, 2019 |access-date=April 24, 2019 |website=[[The Verge]]}}</ref>
|-
| Best Art Direction (People's Voice)
| {{won}}
|-
| Best Game Design (People's Voice)
| {{won}}
|-
| Best User Experience
| {{won}}
|-
| Best Visual Design (People's Voice)
| {{won}}
|-
|2020
| [[2020 Webby Awards]]
| Independent Creator
| {{won}}
| style="text-align:center;" |<ref name="Webby-2020">{{cite web |date=May 19, 2020 |title=Webby Awards: Games |url=https://winners.webbyawards.com/#/winners/games |access-date=May 20, 2020 |website=[[Webby Award|The Webby Awards]]}}</ref>
|}
== References ==
<references />
== External links ==
bz7tekea6cu3xyp10bjds35ghdkfu4d
111964
111963
2026-09-16T00:13:07Z
DaSupremo
9
Improve article
111964
wikitext
text/x-wiki
{{Databox}}
'''''Astroneer''''', dem officially stylize insyd all caps,<ref>{{Cite web |title=ASTRONEER on Steam |url=https://store.steampowered.com/app/361420/ASTRONEER/ |url-status=live |archive-url=https://web.archive.org/web/20230724162747/https://store.steampowered.com/app/361420/ASTRONEER/ |archive-date=July 24, 2023 |access-date=2023-07-24 |website=store.steampowered.com |language=en}}</ref><ref>{{Cite web |title=Buy ASTRONEER {{!}} Xbox |url=https://www.xbox.com/en-us/games/store/ASTRONEER/9NBLGGH43KZB |url-status=live |archive-url=https://web.archive.org/web/20230724162747/https://www.xbox.com/en-us/games/store/ASTRONEER/9NBLGGH43KZB |archive-date=July 24, 2023 |access-date=2023-07-24 |website=www.xbox.com}}</ref><ref>{{Cite web |title=ASTRONEER |url=https://store.playstation.com/en-us/product/UP2467-CUSA16473_00-ASTRONEER0000000 |url-status=live |archive-url=https://web.archive.org/web/20230724162748/https://store.playstation.com/en-us/product/UP2467-CUSA16473_00-ASTRONEER0000000 |archive-date=July 24, 2023 |access-date=2023-07-24 |website=store.playstation.com}}</ref><ref>{{Cite web |title=ASTRONEER for Nintendo Switch - Nintendo Official Site |url=https://www.nintendo.com/store/products/astroneer-switch/ |url-status=live |archive-url=https://web.archive.org/web/20230724162748/https://www.nintendo.com/store/products/astroneer-switch/ |archive-date=July 24, 2023 |access-date=2023-07-24 |website=www.nintendo.com |language=en-us}}</ref> be 2019 sandbox adventure game wey dem develop den publish by American studio System Era Softworks. Dem release de game thru early access insyd December 2016 before a full release on February 6, 2019. De player be tasked plus colonizing planets, creating structures, den collecting resources. Dem dey call de character an Astroneer wey de player fit travel to planets to activate cores den plete de game. Dem dey reward players upon completion of core activation, most notably a suit den/anaa visor.
== Awards ==
{| class="wikitable sortable"
|-
! Year !! Award !! Category !! Result !! Ref
|-
| rowspan="6" style="text-align:center;" |2019
| [[SXSW Gaming Awards]]
| Gamer's Voice: Video Game
| {{won}}
| style="text-align:center;" | <ref name="Trent-20192">{{cite web |last=Trent |first=Logan |date=March 17, 2019 |title=2019 SXSW Gaming Awards Winners Announced |url=https://gaming.sxsw.com/news/2019/2019-sxsw-gaming-awards-winners-announced/ |url-status=dead |archive-url=https://web.archive.org/web/20190321065552/https://gaming.sxsw.com/news/2019/2019-sxsw-gaming-awards-winners-announced/ |archive-date=March 21, 2019 |website=[[South by Southwest]]}}</ref>
|-
| rowspan="5" |[[2019 Webby Awards]]
| Adventure Game
| {{won}}
| rowspan="5" style="text-align:center;" |<ref name="Liao-2019">{{cite web |last=Liao |first=Shannon |date=April 23, 2019 |title=Here are all the winners of the 2019 Webby Awards |url=https://www.theverge.com/2019/4/23/18511329/2019-webby-awards-all-the-winners |url-status=live |archive-url=https://web.archive.org/web/20190423233428/https://www.theverge.com/2019/4/23/18511329/2019-webby-awards-all-the-winners/ |archive-date=April 23, 2019 |access-date=April 24, 2019 |website=[[The Verge]]}}</ref>
|-
| Best Art Direction (People's Voice)
| {{won}}
|-
| Best Game Design (People's Voice)
| {{won}}
|-
| Best User Experience
| {{won}}
|-
| Best Visual Design (People's Voice)
| {{won}}
|-
|2020
| [[2020 Webby Awards]]
| Independent Creator
| {{won}}
| style="text-align:center;" |<ref name="Webby-2020">{{cite web |date=May 19, 2020 |title=Webby Awards: Games |url=https://winners.webbyawards.com/#/winners/games |access-date=May 20, 2020 |website=[[Webby Award|The Webby Awards]]}}</ref>
|}
== References ==
<references />
==External links==
* {{Official website|https://astroneer.space/}}
[[Category:2019 video games]]
[[Category:Adventure games set insyd outer space]]
[[Category:Adventure games]]
[[Category:Devolver Digital games]]
[[Category:Early access video games]]
[[Category:Indie games]]
[[Category:Multiplayer den single-player video games]]
[[Category:Nintendo Switch games]]
[[Category:Open-world video games]]
[[Category:PlayStation 4 games]]
[[Category:PlayStation 5 games]]
[[Category:Science fiction video games]]
[[Category:Simulation video games]]
[[Category:Space flight simulator games]]
[[Category:Unreal Engine 4 games]]
[[Category:Video games dem develop insyd de United States]]
[[Category:Video games set insyd de 25th century]]
[[Category:Video games set on fictional planets]]
[[Category:Video games wey dey use procedural generation]]
[[Category:Video games plus cel-shaded animation]]
[[Category:Video games plus voxel graphics]]
[[Category:Windows games]]
[[Category:Xbox Cloud Gaming games]]
[[Category:Xbox One games]]
[[Category:Xbox One X enhanced games]]
[[Category:Xbox Play Anywhere games]]
4xgkolqyiysdcukwj7l91d8xkct85xb
Elena Rybakina
0
30262
111933
111905
2026-09-15T16:54:15Z
DaSupremo
9
Created by translating the section "Professional" from the page "[[:en:Special:Redirect/revision/1374811848|Elena Rybakina]]"
111933
wikitext
text/x-wiki
'''Elena Andreyevna Rybakina''' (born 17 June 1999) be a Russian-born Kazakhstani professional tennis player. She currently be ranked world No. 1 insyd singles by de Women's Tennis Association (WTA). Rybakina win 14 WTA Tour-level singles titles, wey dey include three major titles den de 2025 WTA Finals. She be de first Kazakhstani player to win a major, den to be ranked world No. 1 den insyd de world's top 10.
A former junior world No. 3, Rybakina start ein career competing give Russia before switching federations to Kazakhstan insyd 2018. She break thru insyd 2020 wen she play insyd five tour finals, de most of any player dat year. Rybakina win ein first major title at de 2022 Wimbledon Championships, before reaching de 2023 Australian Open final. At de end of 2025, she win de WTA Finals, wey Australian Open follow den US Open titles insyd 2026, wich se am cam be de world No. 1 player for de first time insyd ein career.
Rybakina be noted for ein excellent serve den ability to generate high-powered groundstrokes, den dey play primarily from de baseline. She be known for ein calm demeanour on court, wey she often be referred to plus de nickname "Ice Queen".<ref>{{Cite web |date=2025-12-31 |title=Rybakina: 'Entendo por que me chamam de Rainha de Gelo' |url=https://www.tenisnews.com.br/rybakina-entendo-por-que-me-chamam-de-rainha-de-gelo/ |access-date=2026-04-11 |language=pt-BR}}</ref>
== Early life den background ==
Na dem born Elena Rybakina on 17 June 1999 insyd Moscow to Andrey Rybakin den Ekaterina. Ein poppie originally be from Almaty insyd Kazakhstan wey he work as a producer give de television channel NTV Plus.<ref name="Father Kazakhstan">{{cite web |date=10 July 2022 |title=Победа Рыбакиной – победа Казахстана. Кто такие натурализованные спортсмены |url=https://informburo.kz/stati/pobeda-rybakinoi-pobeda-kazaxstana-kto-takie-naturalizovannye-sportsmeny |website=informburo.kz |language=Russian}}</ref> She start dey play sports give ein older sisto, Anna, from a very young age, originally focusing on gymnastics den ice skating.<ref name="get-to-know">{{cite web |last1=Nguyen |first1=Courtney |date=22 January 2020 |title=Getting to Know: Elena Rybakina's rocket rise |url=https://www.wtatennis.com/news/1584000/getting-to-know-elena-rybakina-s-rocket-rise |url-status=dead |archive-url=https://web.archive.org/web/20200222173244/https://www.wtatennis.com/news/1584000/getting-to-know-elena-rybakina-s-rocket-rise |archive-date=22 February 2020 |access-date=26 September 2020 |website=WTA Tennis}}</ref><ref>{{cite web |date=14 February 2020 |title=Elena Rybakina: I felt confident after winning the first set |url=http://lt.formulatx.com/en/blog/2020/02/14/elena-rybakina-uverennost-poyavilas-s-vyigryshem-pervogo-seta/ |url-status=dead |archive-url=https://web.archive.org/web/20220625040000/https://lt.formulatx.com/en/blog/2020/02/14/elena-rybakina-uverennost-poyavilas-s-vyigryshem-pervogo-seta/ |archive-date=25 June 2022 |access-date=27 September 2020 |website=Formula TX St. Petersburg Ladies' Trophy}}</ref> Upon dem tell am say na she be too tall to become a professional insyd either of those sports, na ein poppie suggest she switch to tennis instead secof ein interest insyd de sport.<ref>{{Cite web |last=Rabiner |first=Igor |date=18 August 2022 |title="Just six months ago, Lena wanted to quit tennis." An interview with the father of Wimbledon champion Elena Rybakina. |url=https://www.sport-express.ru/tennis/wta/reviews/tennis-andrey-rybakin-otec-chempionki-uimbldona-eleny-rybakinoy-o-vystuplenii-za-kazahstan-i-rossii-kontrakte-ftr-i-ssha-1962750/ |access-date=2 January 2026 |website=Sport Express Russia}}</ref> Rybakina begin dey play tennis at de age of six.<ref name="get-to-know" />
Rybakina move from de Dynamo Sports Club to de Spartak Tennis Club, wer na she get several accomplished coaches. She train plus former top-10 player [[Andrey Chesnokov]] den former top-100 player [[Evgenia Kulikovskaya]]. Na one of ei fitness coaches be [[Irina Kiseleva]], a World Championship gold medallist insyd de modern pentathlon.<ref name="ubi">{{cite web |date=11 March 2020 |title=Elena Rybakina Is Really Special |url=https://www.ubitennis.net/2020/03/elena-rybakina-really-special/ |access-date=27 September 2020 |website=Ubi Tennis}}</ref><ref>{{cite web |date=19 October 2017 |title=Поколение Next. Елена Рыбакина |trans-title=Next Generation: Elena Rybakina |url=http://tennis-stars.ru/worldnews/pokolenie-next-elena-rybakina/ |url-status=dead |archive-url=https://web.archive.org/web/20220712172830/http://tennis-stars.ru/worldnews/pokolenie-next-elena-rybakina/ |archive-date=12 July 2022 |access-date=27 September 2020 |website=Tennis Stars |language=ru}}</ref><ref name="spartak">{{cite web |last1=Fagan |first1=Kate |date=9 January 2013 |title=From Russia, With Topspin |url=https://www.espn.com/espnw/news-commentary/story/_/id/8827683/espnw-russia-topspin |access-date=27 September 2020 |website=ESPN}}</ref>
Na Rybakina no get individual training as a junior, instead practicing insyd a group of about eight players up til age 15 den a group of four players thru age 18. She sanso only play tennis about two hours per day wey she train insyd fitness for three hours a day. N ein time give tennis be limited in part secof she attend a regular high school wey no specialized for athletes wey she need to balance tennis plus schoolwork.<ref name="school">{{cite web |last1=Cox |first1=David |date=22 January 2020 |title=Elena Rybakina: Getting to know the 'anonymous' yet in-form No.29 seed |url=https://ausopen.com/articles/features/elena-rybakina-getting-know-anonymous-yet-form-no29-seed |access-date=27 September 2020 |website=Australian Open}}</ref>
== Juniors ==
[[File:Osuigwe_and_Rybakina_shake_hands.png|left|thumb|Rybakina (right) den [[Whitney Osuigwe]] at de 2017 ITF Junior Masters]]
Rybakina be a former world No. 3 junior.<ref name="itf-juniors">{{cite web |title=Elena Rybakina Junior Singles Overview |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/jt/s/overview/ |access-date=26 September 2020 |website=ITF Tennis}}</ref> She begin dey play on de ITF Junior Circuit insyd November 2013 at de age of 14. De following March, she win ein first title at ein second career event, de Grade-3 Almetievsk Cup. She play ein first Grade-2 event insyd June at de Ozerov Cup insyd Moscow, finishing runner-up to compatriot [[Anna Blinkova]]. She begin dey play Grade-1 events from de start of 2015, buh na she no get any success til she reach de final at de Belgian International Junior Championships insyd May, losing to [[Katharina Hobgarski]].
Rybakina make ein junior-major debut later insyd de year at de [[2015 US Open (tennis)|US Open]], wer she reach de third round. Following an opening-round loss at de 2016 Australian Open, she win back-to-back Grade-1 titles. She continue to struggle at de junior Grand Slam den oda Grade-A events insyd singles for de rest of de year.<ref name="itf-junior-singles">{{cite web |title=Elena Rybakina Junior Singles Activity |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/jt/s/activity/ |access-date=26 September 2020 |website=ITF Tennis}}</ref> Ein best result of 2016 at de Grade A-events cam insyd doubles wen she fini runner-up to [[Olesya Pervushina]] den [[Anastasia Potapova]] at de Trofeo Bonfiglio, alongside [[Amina Anshba]] insyd an all-Russian final.<ref name="itf-junior-doubles">{{cite web |title=Elena Rybakina Junior Doubles Activity |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/jt/d/activity/ |access-date=26 September 2020 |website=ITF Tennis}}</ref>
Na de 2017 season be Rybakina ein last year on de junior tour. Insyd de middle of de season, she win ein first den only Grade-A title at de Trofeo Bonfiglio, defeating [[Iga Świątek]] insyd de final.<ref name=":0">{{cite web |date=28 May 2017 |title=Popyrin e Rybakina vincono il Trofeo Bonfiglio 2017 |trans-title=Popyrin and Rybakina win the Bonfiglio Trophy 2017 |url=https://www.spaziotennis.com/jnr/popyrin-e-rybakina-vincono-il-trofeo-bonfiglio-2017/49314 |access-date=26 September 2020 |website=Spazio Tennis |language=it}}</ref> She sanso fare better at de Grand Slam events compared to previous years, losing insyd de semifinals of de Australian Open den de French Open to eventual champions [[Marta Kostyuk]] den [[Whitney Osuigwe]], respectively. She fini ein junior career at de first round-robin edition of de ITF Junior Masters, de junior counterpart to de WTA Finals. She win one match insyd ein round-robin group wey she fini insyd seventh place.<ref name="itf-junior-singles">{{cite web |title=Elena Rybakina Junior Singles Activity |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/jt/s/activity/ |access-date=26 September 2020 |website=ITF Tennis}}</ref>
== Professional ==
=== 2014–18: First ITF titles, federation change ===
Rybakina begin dey play on de ITF Women's Circuit insyd December 2014, at de age of fifteen. While na she still dey play on de junior circuit, she reach three ITF finals insyd singles den two insyd doubles, winning both of de doubles finals only insyd 2017.<ref name="itf-singles">{{cite web |title=Elena Rybakina Women's Singles Activity |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/wt/s/activity/ |access-date=26 September 2020 |website=ITF Tennis}}</ref><ref name="itf-doubles">{{cite web |title=Elena Rybakina Women's Doubles Activity |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/wt/d/activity/ |access-date=26 September 2020 |website=ITF Tennis}}</ref> She sanso make ein WTA Tour debut insyd October 2017 at de Kremlin Cup, wer she reach de main draw thru qualifying buh she loose insyd de opening round to [[Irina-Camelia Begu]].<ref>{{Cite web |date=17 October 2017 |title=Rybakina Falls Over 3-set Match |url=https://kremlincup.ru/en/news/205/ |access-date=13 April 2018 |website=Kremlin Cup}}</ref>
At ein next WTA tournament insyd February 2018, Rybakina win ein first WTA Tour match at de St. Petersburg Trophy against [[Timea Bacsinszky]]. She then upset world No. 7 [[Caroline Garcia]] insyd three sets, after saving a match point insyd de second set.<ref>{{cite web |date=31 January 2018 |title=Teen Rybakina stuns Garcia for spot in St. Petersburg QF |url=http://www.wtatennis.com/news/teen-rybakina-stuns-garcia-spot-st-petersburg-qf |access-date=13 April 2018 |website=WTA Tennis}}</ref> Losing insyd de next round,<ref>{{cite web |date=2 February 2018 |title=Goerges rolls past Rybakina to reach St. Petersburg semifinals |url=http://www.wtatennis.com/news/goerges-rolls-past-rybakina-reach-st-petersburg-semifinals |access-date=13 April 2018 |website=WTA Tennis}}</ref> dis quarterfinal appearance help am rise from No. 450 to No. 268 insyd de world.<ref name="wta-rankings">{{cite web |title=Elena Rybakina Rankings History |url=https://www.wtatennis.com/players/324166/elena-rybakina/rankings-history |access-date=26 September 2020 |website=WTA Tennis}}</ref> Insyd March, Rybakina win ein first ITF singles title at a $15k event insyd Kazan,<ref name="itf-singles">{{cite web |title=Elena Rybakina Women's Singles Activity |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/wt/s/activity/ |access-date=26 September 2020 |website=ITF Tennis}}</ref> wer she sanso win de doubles title.<ref name="itf-doubles">{{cite web |title=Elena Rybakina Women's Doubles Activity |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/wt/d/activity/ |access-date=26 September 2020 |website=ITF Tennis}}</ref> Ein next significant rankings jump cam insyd April wen she fini runner-up to [[Sabina Sharipova]] at de $60k Lale Cup insyd Istanbul, bringing am to No. 215. She break into de top 200 for de first time insyd late May.<ref name="wta-rankings" />
De Rybakin family begin to grow frustrated plus de Russian Tennis Federation over a perceived lack of financial support for Rybakina ein career den various incidents wey dey involve de federation.<ref name="2016 US Open">{{cite web |last=Rabiner |first=Igor |date=18 August 2022 |title=«Всего полгода назад Лена хотела бросить теннис». Интервью отца чемпионки Уимблдона Елены Рыбакиной |url=https://www.sport-express.net/tennis/wta/reviews/tennis-andrey-rybakin-otec-chempionki-uimbldona-eleny-rybakinoy-o-vystuplenii-za-kazahstan-i-rossii-kontrakte-ftr-i-ssha-1962750/ |website=sport-express.net |language=Russian}}</ref> At de girls' juniors tournament of de 2016 US Open, Rybakina faint secof low hemoglobin levels wey na she be forced to retire from ein first round match.<ref name="2016 US Open" /> De RTF reportedly provide no assistance to Rybakina despite she be present at de event, leading Rybakina ein family to decide say she no longer go travel for tournaments widout having a parent present.<ref name="2016 US Open" /> As de family no fi afford to travel plus am full-time, dem instead decide to focus on playing college tennis insyd de United States anaa Canada.<ref name="2016 US Open" /> Insyd May 2018, she just turn 19 years old, Rybakina acquire Kazakhstani citizenship wey she switch federations from Russia to Kazakhstan. Na de Kazakhstan Tennis Federation offer am financial support to change ein nationality, wich she choose over various options to play college tennis den pause ein professional career.<ref name="get-to-know">{{cite web |last1=Nguyen |first1=Courtney |date=22 January 2020 |title=Getting to Know: Elena Rybakina's rocket rise |url=https://www.wtatennis.com/news/1584000/getting-to-know-elena-rybakina-s-rocket-rise |url-status=dead |archive-url=https://web.archive.org/web/20200222173244/https://www.wtatennis.com/news/1584000/getting-to-know-elena-rybakina-s-rocket-rise |archive-date=22 February 2020 |access-date=26 September 2020 |website=WTA Tennis}}</ref><ref name="switch">{{cite web |last1=Ilic |first1=Jovica |date=21 June 2018 |title=Former Russian junior No. 3 changes her nationality to represent Kazakhstan |url=https://www.tennisworldusa.org/tennis/news/WTA_Tennis/56657/former-russian-junior-no-3-changes-her-nationality-to-represent-kazakhstan/ |access-date=26 September 2020 |website=Tennis World USA}}</ref> Na Rybakina ein poppie contact Kazakhstan Tennis Federation about a nationality switch give Rybakina, as na he originally be from Kazakhstan.<ref name="Father Kazakhstan">{{cite web |date=10 July 2022 |title=Победа Рыбакиной – победа Казахстана. Кто такие натурализованные спортсмены |url=https://informburo.kz/stati/pobeda-rybakinoi-pobeda-kazaxstana-kto-takie-naturalizovannye-sportsmeny |website=informburo.kz |language=Russian}}</ref>
Playing give Kazakhstan, Rybakina enter ein first Grand Slam qualifying draw at de 2018 US Open, buh na she no reach de main draw.<ref name="itf-singles">{{cite web |title=Elena Rybakina Women's Singles Activity |url=https://www.itftennis.com/en/players/elena-rybakina/800365863/kaz/wt/s/activity/ |access-date=26 September 2020 |website=ITF Tennis}}</ref><ref>{{cite web |last1=Nitkin |first1=Pavel |date=7 June 2021 |title=Елена Рыбакина вынесла Серену на РГ. Она родилась в Москве, но играет за Казахстан – это путь многих талантов, потому что в России нет денег |trans-title=Elena Rybakina rendered Serena at RG. She was born in Moscow but plays for Kazakhstan, this is a path of many talents because there is no money in Russia |url=https://www.sports.ru/tribuna/blogs/nitkina/2929665.html |access-date=21 June 2021 |website=sports.ru |language=ru}}</ref>
=== 2019: WTA 250 title, top 50 ===
[[File:Rybakina_RG19_(4)_(48199109407).jpg|left|thumb|Rybakina at de 2019 French Open]]
After playing mostly ITF events insyd de first half of 2019, Rybakina begin dey play primarily on de WTA Tour insyd de second half of de season. During de first few months of de year, she win three ITF titles, wey dey include de $60k Launceston International. She make ein Grand Slam debut at de French Open as a qualifier, losing to [[Kateřina Siniaková]]. Insyd ein first WTA event on grass, Rybakina make ein first tour semifinal at de Rosmalen Grass Court Championships. Despite dis success, she loose insyd qualifying at Wimbledon.<ref name="wta-matches">{{cite web |title=Elena Rybakina Matches |url=https://www.wtatennis.com/players/324166/elena-rybakina/matches |access-date=26 September 2020 |website=WTA Tennis}}</ref> Rybakina ein breakthru cam insyd July wen she win ein maiden WTA Tour title at de Bucharest Open, a month after turning 20 years old. During de event, she upset second seed [[Viktória Kužmová]] before defeating [[Patricia Maria Țig]] insyd de final.<ref name="wta-matches" /><ref name="first-title">{{cite web |last1=Macpherson |first1=Alex |date=21 July 2019 |title=Rybakina rides to maiden title in Bucharest with Tig victory |url=https://www.wtatennis.com/news/1446676/rybakina-rides-to-maiden-title-in-bucharest-with-tig-victory |access-date=26 September 2020 |website=WTA Tennis}}</ref> Plus dis title, she make ein top 100 debut insyd de WTA rankings at No. 65.<ref name="wta-rankings">{{cite web |title=Elena Rybakina Rankings History |url=https://www.wtatennis.com/players/324166/elena-rybakina/rankings-history |access-date=26 September 2020 |website=WTA Tennis}}</ref>
Rybakina qualify for ein second main-draw Grand Slam match of de year at de US Open, buh she san loose insyd de first round.<ref name="wta-matches">{{cite web |title=Elena Rybakina Matches |url=https://www.wtatennis.com/players/324166/elena-rybakina/matches |access-date=26 September 2020 |website=WTA Tennis}}</ref> At ein next tournament, she make ein second WTA Tour tournament final of de year at de Jiangxi International Open, finishing runner-up to [[Rebecca Peterson]].<ref>{{cite web |last1=Macpherson |first1=Alex |date=15 September 2019 |title=Peterson rolls past Rybakina to maiden title in Nanchang |url=https://www.wtatennis.com/news/1445306/peterson-rolls-past-rybakina-to-maiden-title-in-nanchang |access-date=26 September 2020 |website=WTA Tennis}}</ref> Dis result bring am into de top 50 for de first time.<ref name="wta-rankings">{{cite web |title=Elena Rybakina Rankings History |url=https://www.wtatennis.com/players/324166/elena-rybakina/rankings-history |access-date=26 September 2020 |website=WTA Tennis}}</ref> Rybakina close out de year strong, reaching at least de quarterfinals at ein last three events of de season. In particular, she reach de quarterfinals at de Wuhan Open, ein first career Premier-5 event. Insyd de tournament, she defeat world No. 6, [[Simona Halep]], wey retire late insyd de first set plus a lower back injury. She loose insyd de next round to eventual champion den world No. 14, [[Aryna Sabalenka]].<ref>{{Cite web |date=25 September 2019 |title='I didn't want to win the match like this' – Rybakina advances to Wuhan quarterfinals after Halep retires |url=https://www.wtatennis.com/news/1485875/i-didnt-want-to-win-the-match-like-this-rybakina-advances-to-wuhan-quarterfinals-after-halep-retires |access-date=25 September 2002 |website=WTA Tennis}}</ref><ref>{{Cite web |date=26 September 2019 |title=Sabalenka returns to Wuhan SF: 'My game is getting better and better with every day' |url=https://www.wtatennis.com/news/1485849/sabalenka-returns-to-wuhan-sf-my-game-is-getting-better-and-better-with-every-day- |access-date=25 September 2020 |website=WTA Tennis}}</ref> Rybakina fini de season at No. 37 insyd de world.<ref name="wta-rankings" />
=== 2020: WTA 250 title, top 20 ===
Rybakina lead de WTA Tour insyd finals during de 2020 season, wey she fini tied for second insyd match wins.<ref name="2020-stats">{{cite web |date=26 September 2020 |title=WTA Match Stats 2020 |url=http://wtafiles.wtatennis.com/pdf/rankings/WTAMatchStats.pdf |access-date=26 September 2020 |website=WTA Tennis}}</ref><ref name="2020-summary">{{cite web |last1=Berkok |first1=John |date=5 December 2020 |title=Who were the Top 5 match win leaders on the ATP and WTA in 2020? |url=https://www.tennis.com/pro-game/2020/12/top-5-match-win-leaders-atp-wta-tours-2020-djokovic-rublev-mertens-sabalenka-rybakina/92031/ |access-date=30 December 2020 |website=Tennis.com}}</ref> She reach de finals at four of ein first five events. Before de [[COVID-19]] pandemic lead to de shutdown of de WTA Tour for more than five months, na she reach de final of every tournament except for de Australian Open den de Qatar Ladies Open, losing to world No. 1, [[Ashleigh Barty]], insyd both instances, de latter insyd a walkover secof an abductor strain insyd ein leg.<ref name="barty-loss-1" /><ref>{{Cite web |last=Kane |first=David |date=25 February 2020 |title=Rybakina, Bencic secure titanic Doha victories |url=https://www.wtatennis.com/news/1624877/rybakina-bencic-secure-titanic-doha-victories |access-date=26 September 2020 |website=WTA Tennis}}</ref> Prior to de Australian Open, ein two finals cam at International events. After losing ein first final of de year to [[Ekaterina Alexandrova]] at de Shenzhen Open,<ref name=":2">{{Cite web |last=Bairner |first=Robin |date=11 January 2020 |title=Alexandrova downs Rybakina in Shenzhen for maiden title: The first one is always special |url=https://www.wtatennis.com/news/1566002/alexandrova-downs-rybakina-in-shenzhen-for-maiden-title-the-first-one-is-always-special |access-date=26 September 2020 |website=WTA Tennis}}</ref> she defeat [[Zhang Shuai]] to win ein second WTA title at de Hobart International.<ref name=":3">{{Cite web |date=18 January 2020 |title=Rybakina romps to second career title in Hobart |url=https://www.wtatennis.com/news/1574513/rybakina-romps-to-second-career-title-in-hobart |access-date=26 September 2020 |website=WTA Tennis}}</ref> At Melbourne, she record ein first two Grand Slam main-draw match wins against [[Bernarda Pera]] den [[Greet Minnen]].<ref name="barty-loss-1">{{Cite web |last=Livaudais |first=Stephanie |date=24 January 2020 |title=Barty races past Rybakina to reach fourth round in Melbourne |url=https://www.wtatennis.com/news/1587424/barty-races-past-rybakina-to-reach-fourth-round-in-melbourne |access-date=26 September 2020 |website=WTA Tennis}}</ref> Following de tournament, she reach two Premier finals at de St. Petersburg Trophy dem de Dubai Championships, finishing runner-up to No. 8 [[Kiki Bertens]] den No. 2 Simona Halep, respectively.<ref name=":5">{{Cite web |date=22 February 2020 |title=Halep fights past Rybakina in Dubai for 20th career title |url=https://www.wtatennis.com/news/1618866/halep-fights-past-rybakina-in-dubai-for-20th-career-title |access-date=26 September 2020 |website=WTA Tennis}}</ref> At Dubai in particular, Rybakina defeat two top-ten players insyd No. 7 [[Sofia Kenin]] den No. 3 [[Karolína Plíšková]], de latter of whom na be de highest ranked player she defeat so far.<ref name="kenin">{{cite web |date=18 February 2020 |title=Rybakina rallies past Kenin in Dubai debut |url=https://www.wtatennis.com/news/1614666/rybakina-rallies-past-kenin-in-dubai-debut |access-date=26 September 2020 |website=WTA Tennis}}</ref><ref name=":4">{{Cite web |last=Macpherson |first=Alex |date=20 February 2020 |title=Rybakina rockets to career-best win over Pliskova in Dubai quarters |url=https://www.wtatennis.com/news/1616194/rybakina-rockets-to-career-best-win-over-pliskova-in-dubai-quarters |access-date=26 September 2020 |website=WTA Tennis}}</ref> Dese four finals help am climb to No. 17 insyd de world at de time of de tour shutdown.<ref name="wta-rankings">{{cite web |title=Elena Rybakina Rankings History |url=https://www.wtatennis.com/players/324166/elena-rybakina/rankings-history |access-date=26 September 2020 |website=WTA Tennis}}</ref> She sanso cam be de first Kazakhstani player insyd de top 20 insyd history.<ref>{{cite web |date=30 March 2020 |title=20-летняя казахстанка вошла в топ-10 восходящих звезд мирового тенниса |trans-title=20-year-old Kazakhstani entered the top 10 rising stars of world tennis |url=https://vesti.kz/wta/280597/ |access-date=27 September 2020 |website=Vesti |language=ru}}</ref>
During de bulk of de shutdown, Rybakina stay insyd Moscow wey na she no get de opportunity to practice for two den a half months. She eventually resume training insyd Bratislava, Slovakia for five weeks.<ref name="pandemic-interview">{{cite web |last1=Baudu |first1=Jérémy |date=31 August 2020 |title=Exclusive interview with Elena Rybakina: The main goal is to be No 1 |url=https://www.tennismajors.com/our-features/interviews-our-features/tennis-majors-exclusive-interview-with-elena-rybakina-282953.html |access-date=26 September 2020 |website=Tennis Majors}}</ref> Wen de tour resume insyd New York insyd August, she loose ein return match to Alexandrova wey she only record one match win at de US Open.<ref>{{Cite web |last=Macpherson |first=Alex |date=22 August 2020 |title=Alexandrova outserves Rybakina in Cincinnati opener |url=https://www.wtatennis.com/news/1762782/alexandrova-outserves-rybakina-in-cincinnati-opener |access-date=25 September 2020 |website=WTA Tennis}}</ref><ref>{{Cite web |last=di Costanzo |first=Diane |date=2 September 2020 |title=Shelby Rogers upsets Elena Rybakina at the 2020 US Open |url=https://www.usopen.org/en_US/news/articles/2020-09-02/shelby_rogers_upsets_elena_rybakina_at_the_2020_us_open.html |access-date=25 September 2020 |website=US Open}}</ref> Back insyd Europe, she finally defeat Alexandrova at de Italian Open insyd ein third opportunity of de year before squandering a chance to serve out de match insyd a third-round loss to compatriot [[Yulia Putintseva]].<ref>{{Cite web |last=Macpherson |first=Alex |date=18 September 2020 |title=Putintseva pulls off remarkable Rybakina escape in Rome |url=https://www.wtatennis.com/news/1834128/putintseva-pulls-off-remarkable-rybakina-escape-in-rome |access-date=25 September 2020 |website=WTA Tennis}}</ref> At de Internationaux de Strasbourg, Rybakina reach ein fifth final of de year den first since de resumption of de tour, losing to No. 5, [[Elina Svitolina]].<ref>{{Cite web |last=Bairner |first=Robin |date=26 September 2020 |title=Svitolina seals Strasbourg title after Rybakina victory |url=https://www.wtatennis.com/news/1842090/svitolina-seals-strasbourg-title-after-rybakina-victory |access-date=26 September 2020 |website=WTA Tennis}}</ref> However, she then loose to [[Fiona Ferro]] insyd de second round at de French Open.<ref>{{Cite web |last=Livaudais |first=Stephanie |date=1 October 2020 |title=France's Ferro upsets Rybakina at Roland Garros |url=https://www.wtatennis.com/news/1850001/france-s-ferro-upsets-rybakina-at-roland-garros |access-date=4 October 2020 |website=WTA Tennis}}</ref>
=== 2021: French Open quarterfinal, Olympics fourth place ===
[[File:Rybakina_RG21_(50)_(51375295797).jpg|thumb|Rybakina at de 2021 French Open]]
Rybakina start ein season at Abu Dhabi losing to eventual champion [[Aryna Sabalenka]] insyd de quarterfinals.<ref>{{Cite web |last=VAVEL.com |date=2022-06-08 |title=WTA Abu Dhabi: Aryna Sabalenka fights past Elena Rybakina to reach semifinals |url=https://www.vavel.com/en-us/tennis-usa/2021/01/11/1054782-wta-abu-dhabi-aryna-sabalenka-fights-past-elena-rybakina-to-reach-semifinals.html |access-date=2026-08-29 |website=VAVEL |language=en-us}}</ref>She then loose to [[Fiona Ferro]] insyd de second round of Australian Open. After an uneventful stretch of de year wer she fall out of top 20, she win two consecutive matches for de first time since Abu Dhabi to reach de third round of French Open. She then defeat [[Elena Vesnina]] den [[Serena Williams]] to reach ein first major quarterfinal.<ref>{{Citeweb|url=https://www.rolandgarros.com/en-us/article/rybakina-relishes-prospect-of-facing-williams-rg2021-r4|title=Rybakina relishes prospect of facing Serena|publisher=Roland Garros|accessdate=29 August 2026}}</ref><ref>{{cite web |date=6 June 2021 |title=French Open 2021: Serena Williams upset in the fourth round by 21-year-old Elena Rybakina |url=https://www.cbssports.com/tennis/news/french-open-2021-serena-williams-upset-in-the-fourth-round-by-21-year-old-elena-rybakina/}}</ref> At de same tournament, she sanso reach de quarterfinals insyd doubles, partnering [[Anastasia Pavlyuchenkova]]; incidentally, na Pavlyuchenkova be de opponent who defeat am insyd de quarterfinals of de singles portion of de 2021 French Open.<ref>{{cite news|title=Pavlyuchenkova overcomes Rybakina for first Grand Slam semifinal at French Open|url=https://www.wtatennis.com/news/2168076/pavlyuchenkova-overcomes-rybakina-for-first-grand-slam-semifinal-at-french-open|publisher=WTA Tennis|access-date=29 August 2026|date=8 June 2021}}</ref>
Rybakina record ein first top-10 win on grass at de Eastbourne International defeating second seed [[Elina Svitolina]] insyd straight sets.<ref>{{Citeweb|url=https://www.wtatennis.com/news/2177537/rybakina-stuns-svitolina-in-eastbourne-ostapenko-sevastova-move-on|title=Rybakina stuns Svitolina in Eastbourne; Ostapenko, Sevastova score comeback wins|publisher=WTA|access-date=29 August 2026}}</ref>She reach ein first semifinal of de year defeating lucky loser [[Anastasija Sevastova]] before falling to eventual champion [[Jelena Ostapenko]].<ref>{{Citeweb|url=https://www.bbc.com/sport/tennis/57616738|title=Eastbourne International: Jelena Ostapenko beats Elena Rybakina to reach final|publisher=BBC|accessdate=29 August 2026}}</ref>Making ein first appearance at de tournament, Rybakina storm into de fourth round of Wimbledon widout dropping a set. Der she loose to world No. 2 [[Aryna Sabalenka]] insyd a tough three-set battle.<ref>{{Cite web |title=Sabalenka into first Grand Slam quarterfinal |url=https://www.wimbledon.com/en_GB/news/articles/2021-07-05/sabalenka_into_first_grand_slam_quarterfinal.html |access-date=2026-08-29 |website=www.wimbledon.com}}</ref>She make ein comeback insyd top 20 on de back of strong grass season.
Na Rybakina be de 15th seed of de Olympic Games tennis tournament, winning ein first three matches widout losing a set before a semifinals defeat to Belinda Bencic.<ref>[https://www.nbcolympics.com/videos/bencic-battles-back-defeat-rybakina-semis Bencic battles back to defeat Rybakina in semis]</ref> Insyd de bronze medal match, na Rybakina be defeated insyd a comeback by Elina Svitolina.<ref>[https://www.wtatennis.com/news/2202795/tokyo-2020-svitolina-seals-bronze-medal-with-gritty-comeback-over-rybakina Tokyo 2020: Svitolina seals bronze medal with gritty comeback over Rybakina ]</ref> She loose insyd de third round of US Open to 12th seed [[Simona Halep]].
On 1 November 2021, she make ein debut insyd de top 15, at world No. 14, becoming de highest ranked Kazakhstani player insyd history.<ref>{{Citeweb|url=https://qazinform.com/news/kazakhstani-top-seed-rybakina-in-top-15-as-wta-releases-2021-year-end-rankings_a3878512|title=Kazakhstani top seed Rybakina in top-15 as WTA releases 2021 year-end rankings|publisher=QAZINFORM|accessdate=29 August 2026}}</ref>
=== 2022: Wimbledon champion ===
Rybakina start ein 2022 season at de Adelaide International 1, wey dey make am to de final wer na she be defeated by world No. 1, Ash Barty.<ref>{{cite web |title=Barty rolls past Rybakina to second Adelaide title; sweeps doubles with Sanders |url=https://www.wtatennis.com/news/2443080/barty-rolls-past-rybakina-to-second-adelaide-title-sweeps-doubles-with-sanders}}</ref> Ein success continue at de Sydney Tennis Classic plus a lopsided first-round defeat of reigning US Open champion [[Emma Raducanu]], before she subsequently withdraw from de tournament citing a thigh injury.<ref>{{cite web |title=Kontaveit, Krejcikova, Badosa win in Sydney; injured Rybakina withdraws |url=https://www.wtatennis.com/news/2445155/kontaveit-krejcikova-badosa-win-in-sydney-injured-rybakina-withdraws |work=Women's Tennis Association}}</ref> She reach a career-high ranking of No. 12 on 17 January 2022.
Ein remaining early hardcourt season see little progress plus a second-round retirement at de Australian Open, a walkover at de St. Petersburg Ladies' Trophy, den a first-round loss at de Qatar Ladies Open.<ref>{{Cite web |last=Tansey |first=Joe |title=Australian Open 2022 Results: Thursday Singles Bracket Winners, Scores, Stats |url=https://bleacherreport.com/articles/2952621-australian-open-2022-results-thursday-singles-bracket-winners-scores-stats |access-date=2026-01-03 |website=bleacherreport.com |language=en}}</ref><ref>{{Cite web |date=2022-02-10 |title=Ostapenko blazes into St. Petersburg quarters; Begu upsets Kvitova |url=https://www.wtatennis.com/news/2478837/begu-defeats-kvitova-in-st-petersburg-for-first-time-in-six-meetings-rybakina-withdraws |access-date=2026-01-03 |website=Women's Tennis Association |language=en}}</ref><ref>{{Cite web |title=Rybakina vs. Cristian {{!}} Round of 64 Qatar TotalEnergies Open 2022 {{!}} WTA Official |url=https://www.wtatennis.com/tournaments/1003/doha/2022/scores/LS036 |access-date=2026-01-03 |website=Women's Tennis Association |language=en}}</ref> Ein "Sunshine Double" (Miami den Indian Wells) see improvement plus a quarterfinal appearance at de Indian Wells Open against [[Maria Sakkari]] den a third-round appearance to [[Jessica Pegula]] at de Miami Open.<ref>{{Cite news|title=Sakkari and Badosa set up semi-final clash at Indian Wells|url=https://www.reuters.com/lifestyle/sports/sakkari-powers-past-rybakina-into-indian-wells-semis-2022-03-17/|archive-url=https://web.archive.org/web/20220321173229/https://www.reuters.com/lifestyle/sports/sakkari-powers-past-rybakina-into-indian-wells-semis-2022-03-17/|archive-date=2022-03-21|access-date=2026-01-03|work=Reuters|language=en-US}}</ref><ref>{{Cite AV media |url=https://www.youtube.com/watch?v=xIJyNIfjd1E |title=Jessica Pegula vs. Elena Rybakina Preview {{!}} Tennis Channel Live |date=2023-03-29 |last=Tennis Channel |access-date=2026-01-03 |via=YouTube}}</ref>
Ein clay-court season begin plus a second-round loss to [[Anhelina Kalinina]] after a first-round bye at Charleston. Following dis, she represent Kazakhstan as de team's top seed wey she win both of ein singles matches insyd a tie against Germany securing a berth insyd de finals later insyd de year. De remainder of ein clay-court season see little achievement as she fail to advance into de quarterfinals at de Stuttgart Open, Madrid Open, Italian Open, den French Open.
[[File:Elena_Rybakina_&_Venus_Rosewater_Dish_2022.jpg|left|thumb|Rybakina plus de Venus Rosewater Dish at de 2022 Wimbledon Championships]]
Rybakina ein grass-court season insyd de lead up to Wimbledon see a second-round loss to [[Shelby Rogers]] at de Rosmalen Open followed by a first-round bye den a second-round loss to [[Lesia Tsurenko]] at de Eastbourne International. At de Wimbledon Championships, she reach ein second Grand Slam quarterfinal, defeating [[CoCo Vandeweghe]],<ref>{{cite web |title=Kazakhstan's Elena Rybakina wins in Wimbledon first round |url=https://el.kz/en/kazakhstan-s_elena_rybakina_wins_in_wimbledon_first_round_43215/ |accessdate=29 August 2026 |publisher=EL KZ}}</ref> [[Bianca Andreescu]]<ref>{{Cite web |date=2022-06-30 |title=Andreescu ousted in Wimbledon second round |url=https://www.tenniscanada.com/news/andreescu-ousted-in-wimbledon-second-round/ |url-status=live |archive-url=https://web.archive.org/web/20220630162108/https://www.tenniscanada.com/news/andreescu-ousted-in-wimbledon-second-round/ |archive-date=June 30, 2022 |access-date=2026-08-29 |website=Tennis Canada}}</ref>, [[Zheng Qinwen]]<ref>{{cite web |date=9 November 2022 |title=Qinwen Zheng vs Elena Rybakina |url=https://www.tennismajors.com/matches/wta/wimbledon/qinwen-zheng-vs-elena-rybakina |url-status=live |archive-url=https://web.archive.org/web/20241110035800/https://www.tennismajors.com/matches/wta/wimbledon/qinwen-zheng-vs-elena-rybakina |archive-date=10 November 2024 |accessdate=29 August 2026 |publisher=Tennis Majors}}</ref> den [[Petra Martić]].<ref>{{Cite web |date=4 July 2022 |title=Rybakina powers past Martic into first Wimbledon quarterfinal |url=https://www.wtatennis.com/news/2667150/rybakina-powers-past-martic-into-first-wimbledon-quarterfinal |access-date=2022-07-06 |publisher=Women's Tennis Association}}</ref> She then defeat [[Ajla Tomljanović]] insyd ein quarterfinal match to reach ein first major semifinal, becoming de first Kazakhstani singles player (male anaa female) to reach de semifinal of a Grand Slam.<ref>{{Cite web |date=2022-07-06 |title=Russia-born Rybakina steps up title charge into Wimbledon last four |url=https://www.theguardian.com/sport/2022/jul/06/elena-rybakina-battles-past-tomljanovic-to-reach-first-grand-slam-semi-wimbledon |access-date=2022-07-08 |website=[[The Guardian]]}}</ref><ref>{{Cite web |last=Tennis.com |title=Elena Rybakina credits Kazakh Federation for helping her near Wimbledon pinnacle |url=https://www.tennis.com/baseline/articles/elena-rybakina-credits-kazakh-federation-for-helping-her-near-wimbledon-pinnacle |access-date=2022-07-08 |website=Tennis.com}}</ref> She then defeat Simona Halep insyd straight sets, to reach ein first major final, becoming de youngest Wimbledon finalist since [[Garbiñe Muguruza]] insyd 2015.<ref>{{Cite web |date=7 July 2022 |title=Rybakina tops Halep at Wimbledon, makes first Grand Slam final |url=https://www.wtatennis.com/news/2670694/rybakina-topples-halep-at-wimbledon-makes-first-grand-slam-final |access-date=2022-07-08 |publisher=Women's Tennis Association}}</ref> After dropping de first set, she defeat No. 3 seeded [[Ons Jabeur]] insyd three sets to secure ein first major title.<ref name="espnrybakinachampion">{{cite web |last1=Maine |first1=D'Arcy |date=9 July 2022 |title=Wimbledon 2022: In a tournament of the unexpected, Elena Rybakina is a champion |url=https://www.espn.com/tennis/story/_/id/34216615/wimbledon-2022-tournament-unexpected-elena-rybakina-champion |access-date=9 July 2022 |website=ESPN}}</ref> She cam be de youngest women's champion since 21-year-old [[Petra Kvitová]] insyd 2011. She sanso be de fourth-youngest active Grand Slam champion, older only dan [[Iga Świątek]], Bianca Andreescu den Emma Raducanu.<ref>{{cite web |date=9 July 2022 |title=Rybakina claims historic Wimbledon title with comeback win over Jabeur |url=https://www.wtatennis.com/news/2672634/rybakina-claims-historic-wimbledon-title-with-comeback-win-over-jabeur}}</ref> Rybakina ein Russian nationality den previous international representation of Russia cam be a matter of public discourse insyd de aftermath of ein success at Wimbledon 2022, wer na Wimbledon ban athletes wey dey represent Russia den Belarus secof Russia's invasion of Ukraine.<ref>{{cite news|url=https://www.nytimes.com/2022/07/08/sports/tennis/rybakina-russia-wimbledon.html|title=Despite a Wimbledon ban on Russian players, a Russian woman might win|work=[[The New York Times]]|date=8 July 2022|access-date=6 January 2023|last=Futterman|first=Matthew}}</ref><ref>{{cite web |date=9 July 2022 |title=Elena Rybakina becomes one of Wimbledon's biggest surprise women's champions |url=https://olympics.nbcsports.com/2022/07/09/elena-rybakina-wimbledon-ons-jabeur-russia-kazakhstan/ |access-date=6 January 2023 |publisher=NBC Sports}}</ref> Russian state media celebrate Rybakina ein win as a national victory despite ein longstanding decision not to represent de country of ein birth.<ref>{{cite news|url=https://apnews.com/article/wimbledon-russia-ukraine-sports-ons-jabeur-04414908cb14b982e127651bbf9e0505|title=Russia claims credit for Elena Rybakina's Wimbledon title|date=10 July 2022|work=[[Associated Press]]|access-date=25 March 2023}}</ref><ref>{{cite news|url=https://www.nytimes.com/2022/07/09/sports/tennis/wimbledon-elena-rybakina-russia.html|title=With a Wimbledon Title, Elena Rybakina Finally Cracks a Smile|last=Clarey|first=Christopher|author-link=Christopher Clarey|date=9 July 2022|work=[[The New York Times]]|access-date=25 March 2023}}</ref>
De North American hard court season begin plus early losses at de Silicon Valley Classic (first round) den Canadian Open (second). Ein US Open preparations continue at de Cincinnati Open wer she advance to de quarterfinals wey na she be defeated by [[Madison Keys]]. Ein season continue next plus an entry to de US Open as de 25th seed; however, she loose insyd de first round to qualifier [[Clara Burel]].<ref>{{Cite web |last=Koiki |first=Adesina O. |date=30 August 2022 |title=Clara Burel upsets Wimbledon champ Elena Rybakina at 2022 US Open |url=https://www.usopen.org/en_US/news/articles/2022-08-30/clara_burel_upsets_wimbledon_champ_elena_rybakina_at_2022_us_open.html |access-date=4 October 2023 |website=[[US Open (tennis)|US Open]]}}</ref>She bounce back reaching de finals of Portorož Open insyd Slovenia, wer she loose to [[Kateřina Siniaková]] insyd three sets.<ref>{{cite web |date=29 August 2026 |title=Siniakova outlasts Rybakina in Portoroz for third career singles title |url=https://www.wtatennis.com/news/2796881/siniakova-outlasts-rybakina-in-portoroz-for-third-career-singles-title |website=wtatennis.com}}</ref> Since ein Wimbledon win no reward any points, Rybakina fail to qualify for WTA Finals wey she fini de year ranked 22.<ref>{{Citeweb|url=https://boardroom.tv/end-of-year-rankings-earnings-womens-tennis-players-2022/|title=End-of-Year Rankings & 2022 Earnings for Top Women’s Tennis Players|publisher=boardroom|accessdate=29 August 2026}}</ref>
=== 2023: Australian Open final, two WTA 1000 titles, No. 3 ===
[[File:Elena_Rybakina_(2023_US_Open)_15_(cropped)_2.jpg|thumb|Rybakina at de 2023 US Open]]
Rybakina start de season at de Adelaide International 1, defeating [[Danielle Collins]] insyd three sets<ref>{{cite web |title=Rybakina wins Adelaide opener; Samsonova to face Sabalenka |url=https://www.wtatennis.com/news/3004553/rybakina-wins-adelaide-opener-samsonova-to-face-sabalenka |work=Women's Tennis Association}}</ref> before losing to [[Marta Kostyuk]] insyd de second round.<ref>{{Cite web |title=Kostyuk stuns Rybakina to make Adelaide 1 quarterfinals |url=https://www.wtatennis.com/news/3008370/kostyuk-stuns-rybakina-to-make-adelaide-1-quarterfinals |work=Women's Tennis Association}}</ref> She follow am plus anoda loss insyd Adelaide International 2 to Petra Kvitová insyd straight sets. However, she reach de doubles final plus partner [[Anastasia Pavlyuchenkova]]. At de Australian Open, Rybakina san defeat 2022 finalist Danielle Collins insyd de third round,<ref>{{Cite web |title=Swiatek rolls, Rybakina bests Collins in Australian Open third round |url=https://www.wtatennis.com/news/3029207/swiatek-rolls-rybakina-bests-collins-in-australian-open-third-round |work=Women's Tennis Association}}</ref> den world No. 1 Iga Świątek insyd de fourth round<ref>{{Cite web |title=Takeaways: Rybakina knocks out world No. 1 Swiatek in Melbourne |url=https://www.wtatennis.com/news/3032901/takeaways-rybakina-knocks-out-world-no-1-swiatek-in-melbourne |work=Women's Tennis Association}}</ref> becoming de first Kazakhstani woman to reach an Australian Open quarterfinal.<ref>{{cite web |title=Aussie Open Day 7 by the numbers: Azarenka's experience, Ostapenko's milestone |url=https://www.wtatennis.com/news/3033592/aussie-open-day-7-by-the-numbers-azarenka-s-experience-ostapenko-s-milestone |work=Women's Tennis Association}}</ref> Next, she defeat former French Open champion [[Jeļena Ostapenko]] to reach ein first Australian Open semifinal.<ref>{{Cite web |date=24 January 2023 |title=Rybakina eases past Ostapenko into Australian Open semifinals |url=https://www.wtatennis.com/news/3036162/rybakina-eases-past-ostapenko-into-australian-open-semifinals}}</ref> Insyd de semifinals, she defeat former world No. 1 den two-time Australian Open champion, [[Victoria Azarenka]], insyd straight sets, reaching de second Grand Slam final of ein career.<ref>{{Cite web |title=Wimbledon champion Rybakina advances to Australian Open final |url=https://www.wtatennis.com/news/3038320/wimbledon-champion-rybakina-advances-to-australian-open-final |work=Women's Tennis Association}}</ref> However, despite winning de first set, Rybakina ultimately loose de championship match to Aryna Sabalenka insyd a high quality encounter.<ref>{{Cite web |title=Sabalenka holds off Rybakina to win Australian Open, first Slam title |url=https://www.wtatennis.com/news/3040010/sabalenka-holds-off-rybakina-to-win-australian-open-first-slam-title |work=Women's Tennis Association}}</ref> She reach de top 10 on 30 January 2023 wey dey make am de first player representing Kazakhstan, male anaa female, ever to reach de top 10 on either de ATP anaa WTA rankings.<ref>{{Cite web |date=28 January 2023 |title=Set for a Top 10 debut, Rybakina confident the best is to come |url=https://www.wtatennis.com/news/3040359/set-for-a-top-10-debut-rybakina-confident-the-best-is-to-come}}</ref><ref>{{cite web |title=Ranking Reaction: Novak Djokovic returns to No. 1 after winning 10th Australian Open title |url=https://www.tennis.com/news/articles/ranking-reaction-novak-djokovic-returns-to-no-1-rybakina-linette-shelton}}</ref>
Insyd Abu Dhabi, defeating Karolina Plíšková,<ref>{{cite web |title=Kasatkina, Rybakina book Abu Dhabi quarterfinal spots |url=https://www.wtatennis.com/news/3055834/kasatkina-rybakina-book-abu-dhabi-quarterfinal-spots |work=Women's Tennis Association}}</ref> she make de quarterfinals wer she loose to [[Beatriz Haddad Maia]].<ref>{{Cite web |title=Haddad Maia, Samsonova seal last two Abu Dhabi semifinal berths |url=https://www.wtatennis.com/news/3057006/haddad-maia-samsonova-seal-last-two-abu-dhabi-semifinal-berths |work=Women's Tennis Association}}</ref>
Insyd Dubai, she reach de third round by beating [[Bianca Andreescu]]<ref>{{Cite web |title=Takeaways: Rybakina fends off Andreescu in Dubai |url=https://www.wtatennis.com/news/3076529/takeaways-rybakina-fends-off-andreescu-in-dubai |work=Women's Tennis Association}}</ref> den [[Marie Bouzková]]<ref>{{Cite web |last=Ong |first=Erwin |date=2023-02-21 |title=Iga Swiatek and Aryna Sabalenka breeze into third round of 2023 Dubai Duty Free Tennis Championships |url=https://dubaidutyfreetennischampionships.com/iga-swiatek-and-aryna-sabalenka-breeze-into-third-round-of-2023-dubai-duty-free-tennis-championships/ |access-date=2025-03-23 |website=Dubai Duty Free Tennis Championships |language=en-US}}</ref> insyd straight sets. She withdraw from ein third round match against fifth seed [[Coco Gauff]] secof a lower-back injury.<ref>{{Cite news|title=WTA roundup: Walkover sends Iga Swiatek into Dubai semis|url=https://www.reuters.com/lifestyle/sports/wta-roundup-walkover-sends-iga-swiatek-into-dubai-semis-2023-02-23/|archive-url=https://web.archive.org/web/20231022080901/https://www.reuters.com/lifestyle/sports/wta-roundup-walkover-sends-iga-swiatek-into-dubai-semis-2023-02-23/|archive-date=22 October 2023|access-date=2025-03-23|work=Reuters|language=en-US|url-status=live}}</ref> At Indian Wells, as de tenth seed, she make ein second consecutive Indian Wells quarterfinal defeating [[Sofia Kenin]],<ref>{{Cite web |date=12 March 2023 |title=Wimbledon champion Rybakina holds off Kenin to advance at Indian Wells |url=https://www.wtatennis.com/news/3106366/wimbledon-champion-rybakina-holds-off-kenin-to-advance-at-indian-wells |access-date=2023-03-18 |publisher=Women's Tennis Association}}</ref> 21st seed Paula Badosa<ref>{{Cite web |date=13 March 2023 |title=Rybakina ousts former champion Badosa in Indian Wells |url=https://www.wtatennis.com/news/3109574/rybakina-ousts-former-champion-badosa-in-indian-wells |access-date=2023-03-18 |publisher=Women's Tennis Association}}</ref> den [[Varvara Gracheva]]. Then, she defeat [[Karolína Muchová]] to reach ein first WTA 1000 semifinal.<ref>{{Cite web |title=Rybakina into Indian Wells semis; defeats Muchova in three sets |url=https://www.wtatennis.com/news/3112590/rybakina-into-indian-wells-semis-defeats-muchova-in-three-sets |access-date=2023-03-18 |work=Women's Tennis Association}}</ref> Insyd de semifinals, she move past de defending champion Świątek, insyd straight sets, for de second time insyd 2023 to reach ein first WTA 1000 final.<ref>{{Cite web |title=Rybakina dominates No.1 Swiatek to make Indian Wells final |url=https://www.wtatennis.com/news/3113842/rybakina-dominates-no-1-swiatek-to-make-indian-wells-final |access-date=2023-03-18 |work=Women's Tennis Association}}</ref> Insyd de final, she edge second seed Aryna Sabalenka insyd straight sets, reversing de result of dema matchup insyd de Australian Open final for ein first WTA 1000 title.<ref>{{Cite web |date=19 March 2023 |title=Rybakina tops Sabalenka to win Indian Wells title |url=https://www.wtatennis.com/news/3116978/rybakina-tops-sabalenka-to-win-indian-wells-title}}</ref><ref>{{Cite web |title=Champions Corner: Sibling support, better organization key for Rybakina |url=https://www.wtatennis.com/news/3117080/champions-corner-sibling-support-better-organization-key-for-rybakina}}</ref> Dis result push ein singles ranking to a new career-high of world No. 7.<ref>{{Cite web |date=20 March 2023 |title=Rankings Watch: Muchova continues resurgence, Rybakina hits career-high |url=https://www.wtatennis.com/news/3117580/rankings-watch-muchova-continues-resurgence-rybakina-hits-career-high}}</ref>
Rybakina save match point to defeat [[Paula Badosa]] insyd de third round of Miami Open.<ref>{{cite web |date=25 March 2023 |title=Miami: Rybakina saves match point to beat Badosa in third round |url=https://www.wtatennis.com/videos/3121674/miami-rybakina-saves-match-point-to-beat-badosa-in-third-round |url-status=live |archive-url=https://web.archive.org/web/20230408205751/https://www.wtatennis.com/videos/3121674/miami-rybakina-saves-match-point-to-beat-badosa-in-third-round |archive-date=8 April 2023 |access-date=29 August 2026 |website=wtatennis.com}}</ref>She then defeat [[Elise Mertens]],<ref>{{cite web |title=Rybakina beats Mertens in Miami for 11th straight win |url=https://www.wtatennis.com/news/3122912/trevisan-through-to-first-wta-1000-quarterfinal-in-miami}}</ref> [[Martina Trevisan]], den [[Jessica Pegula]]<ref>{{Citeweb|url=https://www.wtatennis.com/news/3125406/rybakina-bests-pegula-to-win-13th-consecutive-match-advances-to-miami-final|title=Rybakina bests Pegula to win 13th consecutive match, advances to Miami final|publisher=WTA|accessdate=29 August 2026}}</ref> to reach de final. Insyde final, she loose to 15th seed Petra Kvitová, preventing am from completing de Sunshine Double wey dey end ein career-best 13 match winning streak.<ref>{{citation |title=Kvitova snaps Rybakina's streak to win Miami; 30th career title |date=1 April 2023 |work=WTA Tennis |url=https://www.wtatennis.com/news/3132386/kvitova-snaps-rybakina-s-streak-to-win-30th-career-title-in-miami |access-date=1 April 2023}}</ref> She then record early second round exits at de Stuttgart Open den de Madrid Open to [[Beatriz Haddad Maia]] den [[Anna Kalinskaya]], respectively, wey she reach a new career-high of world No. 6 on 8 May 2023. She then reach de quarterfinals at de Italian Open wey she move to a new career high ranking of world No. 5 plus a win over [[Jasmine Paolini]], Anna Kalinskaya by retirement den [[Markéta Vondroušová]]. Next she defeat world No. 1, Iga Świątek (who retire during de deciding set secof injury) for de third time to reach ein first Rome semifinal.<ref>{{cite web |title=Rybakina advances to Rome semifinals after Swiatek retires with injury |url=https://www.wtatennis.com/news/3418462/rybakina-advances-to-rome-semifinals-after-swiatek-retires-due-to-injury}}</ref> Rybakina reach ein third WTA 1000 final of de season defeating Jeļena Ostapenko, becoming de third player insyd de Open Era to reach de final insyd de same season at de Australian Open, Indian Wells den Miami Open plus Rome, after [[Monica Seles]] insyd 1991 den [[Maria Sharapova]] insyd 2012.<ref>{{cite web |title=Rybakina defeats Ostapenko to advance to Rome final |url=https://www.wtatennis.com/news/3445019/rybakina-defeats-ostapenko-to-advance-to-rome-final}}</ref> She win ein first WTA 1000 clay title, after Anhelina Kalinina retire insyd de second set, wey she move to a career-high ranking of world No. 4, on 22 May 2023.<ref>{{cite web |title=Rybakina takes Rome title over injured Kalinina |url=https://www.wtatennis.com/news/3447362/rybakina-takes-rome-title-over-injured-kalinina}}</ref><ref>{{cite web |title=Rankings Watch: Rybakina hits Top 5 for first time; Zheng makes Top 20 debut |url=https://www.wtatennis.com/news/3465469/rankings-watch-rybakina-hits-top-5-for-first-time-zheng-makes-top-20-debut}}</ref> At de 2023 French Open, despite ein walkover secof respiratory illness insyd de third round,<ref>{{cite web |date=3 June 2023 |title=Rybakina pulls out of French Open due to illness |url=https://www.espn.com/tennis/story/_/id/37786034/elena-rybakina-pulls-french-open-due-illness}}</ref> she reach No. 3 insyd de world rankings on 12 June 2023.<ref>{{cite web |date=8 June 2023 |title=Elena Rybakina to enter top-3 for first time in career after French Open 2023 |url=https://www.sportskeeda.com/tennis/news-elena-rybakina-enter-top-3-first-time-career-french-open-2023}}</ref> Rybakina then play insyd de WTA 500-level Berlin Open on grass, losing to [[Donna Vekić]] insyd de second round.<ref>{{Cite web |date=2023-06-21 |title=Vekic ousts Rybakina in Berlin to reach quarterfinals |url=https://www.wtatennis.com/news/3547647/vekic-ousts-rybakina-in-berlin-to-reach-quarterfinals |access-date=2026-08-27 |website=Women's Tennis Association |language=en}}</ref> On 26 June 2023, Rybakina announce ein withdrawal from de Eastbourne International tournament plus a viral illness.<ref>{{Cite web |title=Rybakina withdraws from Eastbourne with viral illness |url=https://www.wtatennis.com/news/3553687/rybakina-withdraws-from-eastbourne-with-viral-illness |access-date=2023-06-26 |publisher=Women's Tennis Association}}</ref>
Returning to Wimbledon as defending champion, Rybakina defeat [[Shelby Rogers]],<ref>{{Citeweb|title=Wimbledon 2023 results: Elena Rybakina avoids upset against Shelby Rogers|url=https://www.bbc.com/sport/tennis/66098410|publisher=bbc|accessdate=1 September 2026}}</ref>[[Alize Cornet]],<ref>{{Citeweb|title=Wimbledon 2023 results: Elena Rybakina beats injured Alize Cornet; Svitolina and Andreeva also win|url=https://www.bbc.com/sport/tennis/66123645|publisher=bbc|accessdate=1 September 2026}}</ref> home-favourite [[Katie Boulter]],<ref>{{Citeweb|title=Wimbledon 2023 results: Katie Boulter loses to Elena Rybakina|url=https://www.bbc.com/sport/tennis/66143134|publisher=bbc|accessdate=1 September 2026}}</ref> den [[Beatriz Haddad Maia]]<ref>{{Citeweb|title=Wimbledon 2023: Elena Rybakina and Ons Jabeur through to quarter-finals|url=https://www.bbc.com/sport/tennis/66156311|publisher=bbc|accessdate=1 September 2026}}</ref> to reach de quarterfinals wer she loose to Ons Jabeur insyd three sets insyd de rematch of last year's final.<ref>{{Cite news|last=Parkinson|first=Hannah Jane|date=2023-07-12|title=Ons Jabeur knocks out Elena Rybakina to avenge 2022 final defeat|language=en-GB|work=[[The Guardian]]|url=https://www.theguardian.com/sport/2023/jul/12/ons-jabeur-knocks-out-champion-elena-rybakina-revenge-2022-final-defeat-tennis-wimbledon|access-date=2023-08-14}}</ref>
Following ein quarterfinal loss at Wimbledon, she reach de semifinals at de Canadian Open for de first time insyd ein career. She overcam [[Jennifer Brady]] den [[Sloane Stephens]] before defeating [[Daria Kasatkina]] insyd a match wey last 3 hours den 27 minutes, de longest match of Rybakina ein career.<ref>{{Cite web |date=12 August 2023 |title=Rybakina outlasts Kasatkina in Montreal late-night marathon |url=https://www.wtatennis.com/news/3628896/rybakina-outlasts-kasatkina-in-montreal-late-night-marathon |access-date=2023-08-14 |website=Women's Tennis Association |language=en}}</ref> De match fini at 2:55am local time. Insyd de semifinals Rybakina loose to [[Liudmila Samsonova]] insyd three sets reporting wey she feel 'destroyed' physically insyd de post-match press conference secof de scheduling issues she face during de tournament.<ref>{{Cite news|title=Rybakina 'destroyed' by Canadian Open scheduling|language=en-GB|work=BBC Sport|url=https://www.bbc.com/sport/tennis/66496443|access-date=2023-08-14}}</ref>
Rybakina reach de third round of de Cincinnati Open before retiring insyd de second set against [[Jasmine Paolini]].<ref>{{Cite web |date=2023-08-17 |title=Gauff cruises in Cincinnati; Paolini advances past injured Rybakina |url=https://www.wtatennis.com/news/3638030/paolini-advances-past-rybakina-via-retirement-in-cincinnati |access-date=2026-08-27 |website=Women's Tennis Association |language=en}}</ref> She then reach de third round of de US Open as de fourth seed, losing to [[Sorana Cîrstea]] insyd three sets.<ref>{{Cite web |last=Braden |first=Jonathon |date=2 September 2023 |title=Cirstea stuns former Wimbledon champion Rybakina at 2023 US Open |url=https://www.usopen.org/en_US/news/articles/2023-09-02/cirstea_stuns_former_wimbledon_champion_rybakina_at_2023_us_open.html |access-date=4 October 2023 |website=[[US Open (tennis)|US Open]]}}</ref>
At de [[2023 China Open – Women's singles|Beijing Open]], Rybakina record a straight-sets win over world No. 1 [[Aryna Sabalenka]] insyd de quarterfinals, before losing to [[Liudmila Samsonova]] insyd de semifinals.<ref>{{Cite web |date=2023-10-06 |title=Rybakina topples Sabalenka to round out Beijing semifinals |url=https://www.wtatennis.com/news/3724547/rybakina-topples-sabalenka-to-round-out-beijing-semifinals |access-date=2026-08-27 |website=Women's Tennis Association |language=en}}</ref><ref>{{Cite AV media |url=https://www.youtube.com/watch?v=B8xarGgnTS8 |title=Elena Rybakina vs. Liudmila Samsonova {{!}} 2023 Beijing Semifinal {{!}} WTA Match Highlights |date=2023-10-07 |last=WTA |access-date=2026-08-27 |via=YouTube}}</ref>
Insyd November, Rybakina play insyd ein first WTA Finals, wer na she be eliminated insyd de group stage.<ref>{{Cite web |last= |date=2023-11-03 |title=Top seed Sabalenka knocks Rybakina out of WTA Finals |url=https://www.reuters.com/sports/tennis/top-seed-sabalenka-knocks-rybakina-out-wta-finals-2023-11-03/ |website=Reuters}}</ref>
Rybakina start ein 2024 season at de Brisbane International wer she defeat [[Olivia Gadecki]], [[Elise Mertens]], [[Anastasia Potapova]],<ref>{{Citeweb|url=https://www.abc.net.au/news/2024-01-05/you-ruin-my-matches-ostapenko-to-umpire-loss-azarenka-brisbane/103288468|title=Victoria Azarenka into Brisbane International singles semifinals with dramatic three-set win over Jelena Ostapenko|publisher=abc.net|accessdate=1 September 2026}}</ref> den [[Linda Noskova]]<ref>{{Citeweb|title=2024 Brisbane International: Elena Rybakina Shines Bright: Overpowers Linda Noskova to Secure First Final of the Season|url=https://tennisuptodate.com/wta/match-report-2024-brisbane-international-elena-rybakina-shines-bright-overpowers-linda-noskova-to-secure-first-final-of-the-season|publisher=TennisUpToDate|accessdate=1 September 2026}}</ref> to set up rematch of last year ein Australian Open final against [[Aryna Sabalenka]], wich she loose.She avenge ein loss defeating Sabalenka insyd straight sets to win de title,<ref>{{cite web |title=Elena Rybakina defeats Sabalenka in Brisbane to become first WTA title winner of the year |url=https://www.tennis.com/news/articles/elena-rybakina-defeats-sabalenka-in-brisbane-to-become-first-wta-title-winner-of-the-year |accessdate=8 July 2024 |publisher=Tennis.com}}</ref> before going out insyd de second round at de [[2024 Australian Open|Australian Open]] to [[Anna Blinkova]] insyd a match wey feature de longest tie-break insyd Grand Slam history.<ref>{{cite news|url=https://www.bbc.co.uk/sport/tennis/68019520|title=Australian Open 2024 results: Elena Rybakina beaten by Anna Blinkova in longest tie-break in Grand Slam history|date=18 January 2024|publisher=BBC Sport|accessdate=8 July 2024}}</ref><ref>{{cite web |author-last1=Crooks |author-first1=Eleanor |date=18 January 2024 |title=Elena Rybakina loses longest-ever grand slam tiebreak in defeat to Anna Blinkova |url=https://www.independent.co.uk/sport/tennis/rybakina-blinkova-tiebreak-australian-open-record-b2480901.html |accessdate=8 July 2024 |work=The Independent}}</ref>
Rybakina win ein second title at de Abu Dhabi Open insyd February, beating [[Danielle Collins]]<ref>{{Citeweb|url=https://www.thenationalnews.com/sport/tennis/2024/02/08/rybakina-comes-through-tough-collins-clash-to-reach-mubadala-abu-dhabi-open-quarter-finals/|title=Rybakina comes through tough Collins clash to reach Mubadala Abu Dhabi Open quarter-finals|publisher=thenationalnews|accessdate=1 September 2026}}</ref>, [[Cristina Bucsa]], [[Ludmilla Samsonova]],<ref>{{Citeweb|url=https://www.tennis.com/news/articles/elena-rybakina-snaps-liudmila-samsonova-streak-surges-into-abu-dhabi-final|title=Elena Rybakina snaps Liudmila Samsonova streak, surges into Abu Dhabi final|publisher=tennis.com|accessdate=1 September 2026}}</ref> den [[Daria Kasatkina]].<ref>{{cite web |title=Mubadala Abu Dhabi Open: Elena Rybakina wins title with comfortable win against Daria Kasatkina |url=https://www.skysports.com/tennis/news/12110/13069162/mubadala-abu-dhabi-open-elena-rybakina-wins-title-with-comfortable-win-against-daria-kasatkina |accessdate=8 July 2024 |work=Sky Sports}}</ref> She then reach de final of de WTA 1000 Qatar Open, losing to [[Iga Świątek]], wey she reach de quarterfinals of de Dubai Open before withdrawing secof illness.<ref>{{Cite web |date=2024-02-22 |title=Rybakina withdraws from Dubai; Paolini to face Cirstea in semifinals |url=https://www.wtatennis.com/news/3906424/rybakina-withdraws-from-dubai-paolini-advances-to-semis |access-date=2026-08-27 |website=Women's Tennis Association |language=en}}</ref>
As defending champion of de Indian Wells Open, Rybakina be forced to withdraw from de tournament shortly before ein first match secof illness. She then play insyd de Miami Open, wer she reach de finals for de second consecutive year before losing to [[Danielle Collins]].
Insyd April, Rybakina secure ein third title of de season at de Porsche Tennis Grand Prix insyd Stuttgart, beating two-time defending champion Iga Świątek insyd de semifinals,<ref>{{cite news|url=https://www.bbc.co.uk/sport/tennis/68865376|title=Stuttgart Open: Elena Rybakina beats Iga Swiatek to reach final|date=20 April 2024|publisher=BBC Sport|accessdate=8 July 2024}}</ref> den then Marta Kostyuk insyd straight sets insyd de final.<ref>{{cite web |date=22 April 2024 |title=Elena Rybakina targets grand slam success after winning in Stuttgart |url=https://www.independent.co.uk/sport/tennis/elena-rybakina-stuttgart-french-open-b2532487.html |accessdate=8 July 2024 |work=The Independent}}</ref> She make am thru to de quarterfinals at de French Open, before losing to eventual runner-up [[Jasmine Paolini]].<ref>{{cite web |date=5 June 2024 |title=Paolini stuns Rybakina to reach French Open semis |url=https://www.bbc.co.uk/sport/tennis/articles/c0dd4xk3rpyo |accessdate=8 July 2024 |publisher=BBC Sport}}</ref>
During de grass-court swing of de year, Rybakina retire due to illness during ein quarterfinal match against Victoria Azarenka at de Berlin Ladies Open<ref>{{cite web |date=21 June 2024 |title=Unwell Rybakina retires in Berlin, rain delays matches |url=https://www.reuters.com/sports/tennis/unwell-rybakina-retires-berlin-rain-delays-matches-2024-06-21/ |accessdate=8 July 2024 |work=Reuters}}</ref> den then she withdraw from de following week's Eastbourne International.<ref>{{cite web |date=24 June 2024 |title=Ostapenko, Dart prevail in Eastbourne; Rybakina withdraws |url=https://www.wtatennis.com/news/4044356/ostapenko-dart-prevail-in-eastbourne-rybakina-withdraws |accessdate=8 July 2024 |publisher=WTA}}</ref> At Wimbledon, she steamroller former world No. 1 [[Caroline Wozniacki]], insyd just 57 minutes den for de loss of only one game insyd de third round,<ref>{{cite web |title=Inside Rybakina's 57-minute masterclass vs. Wozniacki at Wimbledon |url=https://www.wtatennis.com/news/4052852/inside-rybakina-s-57-minute-masterclass-vs-wozniacki-at-wimbledon |accessdate=8 July 2024 |work=Women's Tennis Association |publisher=WTA}}</ref> before winning ein next match wen opponent [[Anna Kalinskaya]] retire injured insyd de second set.<ref>{{cite web |date=8 July 2024 |title=Elena Rybakina back in Wimbledon quarter-finals after Anna Kalinskaya withdraws |url=https://www.independent.co.uk/sport/tennis/elena-rybakina-wimbledon-elina-svitolina-centre-court-ons-jabeur-b2576031.html |accessdate=8 July 2024 |work=The Independent}}</ref> Rybakina then beat Elina Svitolina insyd de quarterfinals<ref>{{cite web |title=Rybakina cruises past Svitolina into Wimbledon semifinals |url=https://www.wtatennis.com/news/4055340/rybakina-cruises-past-svitolina-into-wimbledon-semifinals |accessdate=10 July 2024 |work=Women's Tennis Association |publisher=WTA}}</ref><ref>{{cite web |date=10 July 2024 |title=Clinical Rybakina into Wimbledon semi-finals |url=https://www.bbc.co.uk/sport/tennis/articles/ck5g4g156g5o |accessdate=10 July 2024 |publisher=BBC Sport}}</ref> before losing to [[Barbora Krejčíková]] insyd de semifinals insyd a three-set match.<ref>{{Cite web |title=Barbara Krejcikova stuns former champion Elena Rybakina to reach first Wimbledon final |url=https://www.gbnews.com/sport/tennis/barbara-krejcikova-elena-rybakina-wimbledon-final |website=www.gbnews.com}}</ref><ref>{{cite web |date=11 July 2024 |title=Krejcikova topples Rybakina to reach Wimbledon final |url=https://www.wtatennis.com/news/4056426/krejcikova-topples-rybakina-to-reach-wimbledon-final |accessdate=11 July 2024 |publisher=WTA}}</ref>
Rybakina withdraw from de [[2024 Summer Olympics|Paris Olympics]] two days before e get underway secof acute bronchitis.<ref>{{cite web |title=Olympic draw: Kerber faces Osaka in first round; Rybakina withdraws |url=https://www.wtatennis.com/news/4067105/olympic-draw-kerber-faces-osaka-in-first-round-rybakina-withdraws |accessdate=26 July 2024 |work=Women's Tennis Association}}</ref> She defeat qualifier [[Destanee Aiava]] insyd de first round at de US Open<ref>{{cite web |date=27 August 2024 |title=US Open: Rybakina sees off spirited effort by qualifier Aiava |url=https://www.tennismajors.com/us-open-news/us-open-rybakina-through-to-second-round-781818.html |accessdate=29 August 2024 |publisher=Tennis Majors}}</ref> buh then she withdraw from de tournament secof unspecified injuries.<ref>{{cite web |title=Rybakina's withdrawal from US Open sends Ponchet into third round |url=https://www.wtatennis.com/news/4099969/rybakina-s-withdrawal-from-us-open-sends-ponchet-into-third-round |accessdate=29 August 2024 |work=Women's Tennis Association |publisher=WTA}}</ref> On 23 September, Rybakina announce she go miss de entire Asian part of de season secof a back injury.<ref>{{cite web |title=Rybakina hopes to be ready for WTA Finals after withdrawing from Asian swing |url=https://www.wtatennis.com/news/4128052/rybakina-hopes-to-be-ready-for-wta-finals-after-withdrawing-from-asian-swing |accessdate=25 September 2024 |work=Women's Tennis Association}}</ref>
Rybakina play ein first match since August at de WTA Finals insyd November, losing ein opening group contest to Jasmine Paolini insyd straight sets.<ref>{{cite web |date=2 November 2024 |title=Takeaways: Paolini beats Rybakina to win WTA Finals debut |url=https://www.wtatennis.com/news/4161931/takeaways-paolini-beats-rybakina-to-win-wta-finals-debut |accessdate=2 November 2024 |publisher=Women's Tennis Association}}</ref> She loose ein second group match insyd three sets to [[Zheng Qinwen]].<ref>{{Cite news|date=November 5, 2024|title=China's Zheng Qinwen beats Elena Rybakina at WTA Finals|url=https://www.straitstimes.com/sport/tennis/chinas-zheng-qinwen-beats-elena-rybakina-at-wta-finals|work=[[The Straits Times]]}}</ref><ref>{{cite web |title=Zheng strikes back: Levels her record at WTA Finals with win over Rybakina |url=https://www.wtatennis.com/news/4162890/zheng-strikes-back-levels-her-record-at-wta-finals-with-win-over-rybakina |accessdate=4 November 2024 |work=Women's Tennis Association}}</ref> Despite defeating world No.1, Aryna Sabalenka, insyd ein final group match, Rybakina fail to reach de semifinals.<ref>{{cite web |title=Rybakina hands No.1 Sabalenka first loss at WTA Finals Riyadh |url=https://www.wtatennis.com/news/4164035/rybakina-hands-no-1-sabalenka-first-loss-at-wta-finals-riyadh |accessdate=6 November 2024 |work=Women's Tennis Association}}</ref>
=== 2025: WTA Finals champion ===
Rybakina begin ein season at de 2025 United Cup, reaching de semi-finals plus team Kazakhstan. She then play insyd de Australian Open, wer she defeat wildcards [[Emerson Jones]] <ref>{{cite web |title=Rybakina races through opening test against Jones |url=https://ausopen.com/articles/news/rybakina-races-through-opening-test-against-jones |accessdate=7 September 2026 |work=Australian Open}}</ref> den [[Iva Jovic]],<ref>{{cite web |title=Rybakina knocks out American teen Jovic to head into Australian Open third round |url=https://www.reuters.com/sports/tennis/rybakina-knocks-out-american-teen-jovic-march-into-australian-open-third-round-2025-01-16/ |accessdate=7 September 2026 |work=Reuters}}</ref> den [[Dayana Yastremska]],<ref>{{cite web |title=Rybakina casting runner-up heartbreak aside at AO 2025 |url=https://ausopen.com/articles/news/rybakina-casting-runner-heartbreak-aside-ao-2025 |accessdate=7 September 2026 |work=Australian Open}}</ref> all insyd straight sets, before losing to eventual champion [[Madison Keys]] insyd de fourth round.<ref>{{cite web |date=20 January 2025 |title=Madison Keys dispatches Rybakina in rollercoaster Australian Open match |url=https://www.theguardian.com/sport/2025/jan/20/madison-keys-dispatches-elena-rybakina-iga-swiatek-australian-open-tennis |accessdate=3 August 2025 |work=The Guardian}}</ref> As defending champion, Rybakina defeat qualifier [[Katie Volynets]] den [[Ons Jabeur]]<ref>{{Citeweb|url=https://www.tennis.com/news/articles/elena-rybakina-defeats-ons-jabeur-dramatic-abu-dhabi|title=Elena Rybakina defeats Ons Jabeur in dramatic Abu Dhabi clash|publisher=tennis.com|accessdate=7 September 2026}}</ref> at de Abu Dhabi Open, before na she be defeated insyd de semifinals by eventual champion [[Belinda Bencic]].<ref>{{Citeweb|url=https://www.bbc.com/sport/tennis/articles/cdjdp4dx11zo|title=Bencic reaches first Tour final since maternity leave|publisher=BBC|accessdate=7 September 2026}}</ref>She defeat [[Rebecca Šramková]]<ref>{{Citeweb|url=https://www.tennismajors.com/wta-tour-news/qatar-open-rybakina-reaches-last-eight-808341.html|title=Qatar Open: Rybakina reaches last eight|publisher=Tennismajors|accessdate=7 September 2026}}</ref> to reach de quarterfinals of Qatar Open to set up a rematch of de previous years ein championship match plus [[Iga Świątek]], wey she be defeated insyd straight sets.<ref>{{Citeweb|url=https://www.tennismajors.com/wta-tour-news/doha-qatar-total-open-wta-500-wta-tour-news/imperious-swiatek-surges-past-rybakina-to-reach-qatar-open-semi-finals-808542.html|title=Imperious Swiatek surges past Rybakina to reach Qatar Open semi-finals|publisher=Tennismajors|accessdate=7 September 2026}}</ref>At de 2025 Dubai Tennis Championships, Rybakina save 6 match points en route to defeating world No. 10, [[Paula Badosa]].<ref>{{cite web |date=19 February 2025 |title=Rybakina saves six match points to beat Badosa |url=https://www.bbc.com/sport/tennis/articles/c3w16y08xlpo |website=[[BBC Sport]]}}</ref><ref>{{cite web |date=19 February 2025 |title=2025 DUBAI; Six match points saved! Watch each one as Rybakina edges Badosa in Dubai |url=https://www.wtatennis.com/videos/4218524/six-match-points-saved-watch-each-one-as-rybakina-edges-badosa-in-dubai}}</ref> Next, she defeat [[Sofia Kenin]] to reach ein second semifinal insyd de Middle East swing den ninth overall at de WTA 1000-level wer she loose insyd three sets to 12th seed den eventual champion [[Mirra Andreeva]].<ref>{{cite web |date=20 February 2025 |title=By the numbers: Rybakina ousts Kenin to return to Dubai semifinals |url=https://www.wtatennis.com/news/4219836/by-the-numbers-rybakina-ousts-kenin-to-return-to-dubai-semifinals |website=WTATennis}}</ref><ref>{{cite web |date=21 February 2025 |title=Andreeva upsets Rybakina in Dubai to become youngest-ever WTA 1000 finalist |url=https://www.wtatennis.com/news/4220732/andreeva-upsets-rybakina-in-dubai-to-become-youngest-ever-wta-1000-finalist |website=WTATennis}}</ref>
At Indian Wells, she defeat [[Suzan Lamens]] insyd de second round den [[Katie Boulter]] insyd de third round before losing again to Andreeva insyd de fourth round, dis time insyd straight sets.<ref>{{Cite web |title=Former champion Rybakina defeats Lamens to open Indian Wells campaign |url=https://www.wtatennis.com/videos/4229513/former-champion-rybakina-defeats-lamens-to-open-indian-wells-campaign |access-date=2025-11-09 |website=Women's Tennis Association |language=en}}</ref><ref>{{Cite web |date=2025-03-09 |title=Indian Wells: Katie Boulter falls short against Elena Rybakina in third round |url=https://www.espn.com/tennis/story/_/id/44182609/indian-wells-katie-boulter-falls-short-elena-rybakina-third-round |access-date=2025-11-09 |website=ESPN.com |language=en}}</ref><ref>{{Cite web |last=Tennis.com |title=Mirra Andreeva scores Elena Rybakina win in rainy Indian Wells |url=https://www.tennis.com/news/articles/mirra-andreeva-scores-elena-rybakina-win-rainy-indian-wells |access-date=2025-11-09 |website=Tennis.com |language=en}}</ref> Having reached de finals de year prior, Rybakina enter de 2025 Miami Open seeded seventh, wey she loose to [[Ashlyn Krueger]] insyd three sets insyd de second round.<ref>{{Cite web |date=20 March 2025 |title=Krueger upsets Rybakina in Miami for first Top 10 win |url=https://www.wtatennis.com/news/4236310/krueger-upsets-rybakina-in-miami-for-first-top-10-win |access-date=2025-03-23 |website=Women's Tennis Association |language=en}}</ref> Defending 500 points from ein win insyd Stuttgart de previous year, she instead opt to play insyd de qualifiers for de 2025 Billie Jean King Cup. As a result, she drop to No. 11 insyd de rankings on 21 April 2025, leaving de top 10 for de first time since January 2023<ref>{{Cite web |last=Mesic |first=Dzevad |date=2025-04-14 |title=Elena Rybakina set to exit top-10 after being put in uncomfortable spot |url=https://www.tennisworldusa.org/tennis/news/WTA_Tennis/154675/elena-rybakina-set-to-exit-top10-after-being-put-in-uncomfortable-spot-/ |website=Tennis World USA |language=en}}</ref><ref>{{Cite web |title=Rybakina Rankings History {{!}} WTA Official |url=https://www.wtatennis.com/players/324166/-/stats/ |access-date=2025-06-01 |website=Women's Tennis Association}}</ref>
Insyd April, at de Madrid Open, Rybakina defeat [[Bianca Andreescu]] insyd de second round before losing to No. 17 seed [[Elina Svitolina]] insyd de third round.<ref>{{Cite web |title=Rybakina maintains undefeated record vs. Andreescu with Madrid win |url=https://www.wtatennis.com/videos/4254288/rybakina-maintains-undefeated-record-vs-andreescu-with-madrid-win |access-date=2025-11-09 |website=Women's Tennis Association |language=en}}</ref> However, at de 2025 Italian Open, she defeat [[Eva Lys]] insyd de second round before losing to Andreescu insyd de third round.<ref>{{Cite web |title=Former champion Rybakina holds off Lys to reach Rome third round |url=https://www.wtatennis.com/videos/4262284/former-champion-rybakina-holds-off-lys-to-reach-rome-third-round |access-date=2025-11-09 |website=Women's Tennis Association |language=en}}</ref><ref>{{Cite web |title=Andreescu Gets Revenge on Rybakina in Rome; Fernandez Out |url=https://www.tenniscanada.com/news/pro-tennis/2025/andreescu-gets-revenge-on-rybakina-in-rome-fernandez-out |access-date=2025-11-09 |website=Tennis Canada |language=en}}</ref> As a last minute entry into de Internationaux de Strasbourg, Rybakina defeat [[Wang Xinyu]],<ref>{{Cite web |title=Rybakina wins in Strasbourg; returning Badosa moves past injured Bouzkova |url=https://www.wtatennis.com/news/4270015/rybakina-wins-in-strasbourg-returning-badosa-moves-past-injured-bouzkova |access-date=2026-09-04 |website=Women's Tennis Association |language=en}}</ref> [[Magda Linette]],<ref>{{Cite web |title=Rybakina storms into Strasbourg semis; Haddad Maia tops Navarroa |url=https://www.wtatennis.com/news/4270015/rybakina-wins-in-strasbourg-returning-badosa-moves-past-injured-bouzkova |access-date=2026-09-04 |website=Women's Tennis Association |language=en}}</ref> den No. 9 seed [[Beatriz Haddad Maia]]<ref>{{Cite web |title=Rybakina into first final of 2025, will face Samsonova for title |url=https://www.wtatennis.com/news/4272428/rybakina-to-face-samsonova-in-first-final-of-2025g |access-date=2026-09-04 |website=Women's Tennis Association |language=en}}</ref> to reach ein first final since April 2024.<ref>{{Cite web |date=May 2025 |title=Two-time champion Svitolina among Strasbourg main-draw entries |url=https://www.wtatennis.com/news/4257261/two-time-champion-svitolina-among-strasbourg-main-draw-entries |access-date=2025-06-01 |website=Women's Tennis Association}}</ref><ref name="wta-matches">{{cite web |title=Elena Rybakina Matches |url=https://www.wtatennis.com/players/324166/elena-rybakina/matches |access-date=26 September 2020 |website=WTA Tennis}}</ref> Insyd de final, she defeat eighth seed [[Liudmila Samsonova]] insyd three sets to capture ein first title insyd over a year.<ref>{{Cite web |title=Back on top: Rybakina ends yearlong title drought in Strasbourg |url=https://www.wtatennis.com/news/4272951/back-on-top-rybakina-ends-yearlong-title-drought-in-strasbourg |access-date=2025-06-01 |website=Women's Tennis Association |language=en}}</ref> Seeded 12th, Rybakina then reach de fourth round of de 2025 French Open, before losing to [[Iga Świątek]] insyd three sets.<ref>{{cite web |date=June 2025 |title=French Open 2025: Iga Swiatek beats Elena Rybakina in thriller as Aryna Sabalenka eases into quarter-finals |url=https://www.standard.co.uk/sport/tennis/french-open-2025-swiatek-rybakina-sabalenka-results-b1230704.html |accessdate=3 August 2025 |publisher=London Evening Standard}}</ref>
Rybakina begin ein grass season at de WTA 500-level Queen's Club Championships, wer she loose insyd de quarterfinals to de eventual champion, [[Tatjana Maria]].<ref>{{Cite web |date=15 June 2025 |title='My whole family won this trophy': Maria completes title run at Queen's |url=https://www.wtatennis.com/news/4287092/qualifier-maria-completes-dream-run-at-queens-wins-fourth-career-title |access-date=2025-11-09 |website=Women's Tennis Association |language=en}}</ref> She then reach de quarterfinals of de 2025 Berlin Open, wer she loose to [[Aryna Sabalenka]] insyd three sets, despite having four match points.<ref>{{Cite web |date=2025-06-20 |title=Sabalenka saves 4 match points, ousts Rybakina |url=https://www.espn.com/tennis/story/_/id/45552297/sabalenka-saves-4-match-points-outlast-rybakina-berlin |access-date=2025-08-05 |website=ESPN.com |language=en}}</ref> Having reached de semifinals insyd 2024, Rybakina loose to [[Clara Tauson]] insyd de third round of de 2025 Wimbledon Championships, wey she subsequently drop to No 13 insyd de rankings.<ref>{{Cite web |title=Dominant Rybakina into semis |url=https://www.wimbledon.com/en_GB/news/articles/2024-07-10/dominant_rybakina_into_semis.html |access-date=2025-11-09 |website=www.wimbledon.com}}</ref><ref>{{Cite news|last1=Hansen|first1=James|last2=Eccleshare|first2=Charlie|date=2025-07-13|title=Former Wimbledon champion Elena Rybakina beaten by Clara Tauson|url=https://www.nytimes.com/athletic/6474798/2025/07/05/tennis-wimbledon-rybakina-tauson-result-analysis/|access-date=2025-11-09|work=The New York Times|language=en-US|issn=0362-4331}}</ref>
[[File:Elena_Rybakina_(2025_DC_Open)_09.jpg|left|thumb| Rybakina at de 2025 DC Open]]
Insyd July, Rybakina play insyd de WTA 500-level 2025 DC Open, reaching de semifinals before losing to eventual champion [[Leylah Fernandez]] insyd a grueling match wey last over three hours wey e feature three tiebreaks.<ref>{{Cite web |last=Tennis.com |title=Leylah Fernandez shows fighting spirit to win DC Open tiebreak duel with Elena Rybakina |url=https://www.tennis.com/news/articles/leylah-fernandez-shows-fighting-spirit-win-dc-open-tiebreak-duel-elena-rybakina |access-date=2025-11-09 |website=Tennis.com |language=en}}</ref> She then play insyd de 2025 National Bank Open insyd Montreal, Canada, wer she san reach de semifinals before losing to wildcard den eventual champion, [[Victoria Mboko]].<ref>{{Cite news|last=Hansen|first=James|date=2025-08-07|title=Victoria Mboko surges into Canadian Open final with comeback win over Elena Rybakina|url=https://www.nytimes.com/athletic/6539353/2025/08/06/tennis-victoria-mboko-canadian-open-elena-rybakina-result-analysis/|access-date=2025-11-09|work=The New York Times|language=en-US|issn=0362-4331}}</ref><ref>{{Cite web |date=8 August 2025 |title=Mboko completes dream week with win over Osaka in Montreal |url=https://www.wtatennis.com/news/4336282/mboko-completes-dream-week-with-win-over-osaka-in-montreal |access-date=2025-11-09 |website=Women's Tennis Association |language=en}}</ref> At de 2025 Cincinnati Open, she defeat world No. 6 [[Madison Keys]] insyd de fourth round, recording ein first win against a top-10 player since February.<ref>{{Cite web |title=Rybakina captures statement Top 10 victory in Cincinnati against Keys |url=https://www.wtatennis.com/videos/4340601/rybakina-captures-statement-top-10-victory-in-cincinnati-against-keys |access-date=2025-08-20 |website=Women's Tennis Association |language=en}}</ref> She then defeat world No. 1 [[Aryna Sabalenka]] insyd de quarterfinals, marking ein 7th win over a world No. 1 player, before she san loose insyd de semifinals to No. 2 seed den eventual champion, [[Iga Świątek]].<ref>{{Cite web |date=2025-08-16 |title=Sabalenka stunned by Rybakina in Cincy quarters |url=https://www.espn.com/tennis/story/_/id/45990400/elena-rybakina-upsets-aryna-sabalenka-reaches-cincinnati-semis |access-date=2025-08-20 |website=ESPN.com |language=en}}</ref><ref>{{Cite web |date=15 August 2025 |title=Rybakina or Swiatek? One will leave Cincinnati with a statement win |url=https://www.wtatennis.com/news/4341790/swiatek-books-cincinnati-semifinal-with-sabalenka-or-rybakina-up-next |access-date=2025-08-20 |website=Women's Tennis Association |language=en}}</ref><ref>{{Cite web |date=2025-08-19 |title=Swiatek wins her 1st Cincinnati Open for 24th title |url=https://www.espn.com/tennis/story/_/id/46011503/iga-swiatek-defeats-jasmine-paolini-cincinnati-open-final |access-date=2025-11-09 |website=ESPN.com |language=en}}</ref> Seeded 9th at de 2025 US Open, Rybakina defeat sixteen-year-old wildcard [[Julieta Pareja]], qualifier [[Tereza Valentová]], den doubles partner den former champion [[Emma Raducanu]] to reach de fourth round for de first time insyd ein career, wer she loose to 2023 Wimbledon Champion [[Markéta Vondroušová]] insyd three sets.<ref>{{Cite web |last=Clair |first=Maciel |date=2025-08-25 |title=Rybakina advances to R2 over American teen Pareja at 2025 US Ope |url=https://www.usopen.org/en_US/news/articles/2025-08-25/rybakina_advances_to_r2_over_american_teen_pareja_at_2025_us_open.html |website=US Open}}</ref><ref>{{Cite web |last=Koiki |first=Adesina O. |date=2025-08-27 |title=Rybakina wins tight two-setter to advance to Round 3 of 2025 US Open |url=https://www.usopen.org/en_US/news/articles/2025-08-27/rybakina_wins_tight_twosetter_to_advance_to_round_3_of_2025_us_open.html |website=US Open}}</ref><ref>{{Cite web |date=2025-08-29 |title=Emma Raducanu's best US Open since her 2021 title ends with lopsided loss to Elena Rybakina |url=https://apnews.com/article/emma-raducanu-elena-rybakina-us-open-2025-8537083c468344b1ca7204ee5915733a |access-date=2025-11-09 |website=AP News |language=en}}</ref><ref>{{Cite web |last=Paris |first=Jay |date=2025-08-31 |title=Resurgent Marketa Vondrousova ousts Elena Rybakina to reach 2025 US Open QFs |url=https://www.usopen.org/en_US/news/articles/2025-08-31/resurgent_marketa_vondrousova_ousts_elena_rybakina_to_reach_2025_us_open_qfs.html |website=US Open}}</ref>
At de WTA 1000-level China Open insyd September, Rybakina get a first round bye, she then defeat [[Caty McNally]] insyd de second round before losing to German player [[Eva Lys]] insyd round three.<ref>{{Cite web |title=Women's Tennis Association – Official Website |url=https://www.wtatennis.com/tournaments/china-open/draws |archive-url=https://web.archive.org/web/20250924085147/https://www.wtatennis.com/tournaments/china-open/draws |archive-date=2025-09-24 |access-date=2025-11-09 |website=Women's Tennis Association |language=en}}</ref><ref>{{Cite web |title=Instagram |url=https://www.instagram.com/p/DPDxLbcj_db/ |access-date=2025-11-09 |website=www.instagram.com}}</ref><ref>{{Cite web |title=Lys upsets Rybakina in Beijing third round for first career Top 10 win |url=https://www.wtatennis.com/videos/4370894/lys-upsets-rybakina-in-beijing-third-round-for-first-career-top-10-win |access-date=2025-11-09 |website=Women's Tennis Association |language=en}}</ref> A few weeks later, at de 1000-level [[2025 Wuhan Open – Singles|Wuhan Open]], Rybakina san get a first round bye, wey she defeat [[Jaqueline Cristian]] den [[Linda Nosková]], before losing insyd straight sets to [[Aryna Sabalenka]] insyd de quarterfinals.<ref>{{Cite web |title=Dongfeng Voyah Wuhan Open 2025 – Singles Main Draw |url=https://wtafiles.wtatennis.com/pdf/draws/2025/1075/MDS.pdf |website=WTA}}</ref>
Aiming to qualify for ein third straight, WTA finals, Rybakina defeat [[Dayana Yastremska]],<ref>{{cite news|title=Rybakina defeats Alexandrova, finishes with perfect mark in WTA Finals group playOpen|url=https://www.wtatennis.com/news/4383567/rybakina-reaches-ningbo-quarterfinals-for-first-time-keeps-wta-finals-hopes-alive|access-date=4 September 2026|work=ESPN}}</ref> qualifier [[Ajla Tomljanović]], No. 2 seed [[Jasmine Paolini]],<ref>{{Cite web |date=2025-10-18 |title=Rybakina stops Paolini in Ningbo to keep WTA Finals hopes alive |url=https://www.wtatennis.com/news/4384591/rybakina-defeats-paolini-to-reach-ningbo-final-last-two-wta-finals-spots-remain-open |access-date=2025-11-14 |website=Women's Tennis Association |language=en}}</ref> den No. 4 seed [[Ekaterina Alexandrova]] at de 500-level Ningbo Open to earn ein second title of de year den tenth overall.<ref>{{Cite web |date=2025-10-19 |title=Perfect 10: Rybakina defeats Alexandrova to capture Ningbo title |url=https://www.wtatennis.com/news/4385270/perfect-10-rybakina-defeats-alexandrova-to-claim-milestone-ningbo-title |access-date=2025-11-14 |website=Women's Tennis Association |language=en}}</ref><ref>{{Cite web |last=WTA |title=2025 AUX NINGBO OPEN – Singles Main Draw |url=https://wtafiles.wtatennis.com/pdf/draws/2025/2092/MDS.pdf}}</ref> She then enter de 500-level Pan Pacific Open, defeating [[Leylah Fernandez]] den [[Victoria Mboko]] to secure de last remaining spot at de 2025 WTA Finals, before withdrawing from de Tokyo tournament.<ref>{{Cite AV media |url=https://www.youtube.com/watch?v=-_mlODyOqPg |title=Leylah Fernandez vs. Elena Rybakina {{!}} 2025 Tokyo Round of 16 {{!}} WTA Match Highlights |date=2025-10-22 |last=WTA |access-date=2025-11-14 |via=YouTube}}</ref><ref>{{Cite web |date=2025-10-23 |title=Rybakina secures qualification for WTA Finals to set star-studded singles field |url=https://www.wtatennis.com/news/4388394/rybakina-secures-qualification-for-wta-finals-to-set-star-studded-singles-field |access-date=2025-11-14 |website=Women's Tennis Association |language=en}}</ref><ref>{{Cite web |date=2025-10-25 |title=Rybakina (back) pulls out of Pan Pacific Open |url=https://www.espn.com/tennis/story/_/id/46718129/elena-rybakina-pulls-pan-pacific-open-citing-back-pain |access-date=2025-11-14 |website=ESPN.com |language=en}}</ref>
Insyd November, at de WTA Finals insyd Riyadh, despite she be de last player to qualify, Rybakina top 4th-seeded [[Amanda Anisimova]], <ref>{{cite news|title=Experience prevails in Rybakina's win over Anisimova to begin her WTA Finals|url=https://www.wtatennis.com/news/4394650/rybakinas-experience-on-display-in-dominant-win-over-anisimova-to-begin-her-wta-finals|work=ESPN|access-date=4 September 2026}}</ref> No. 2 [[Iga Świątek]],<ref>{{cite news|title=Rybakina ends losing streak to Swiatek, advances to first WTA Finals semifinal Open|url=https://www.wtatennis.com/news/4395634/rybakina-snaps-skid-against-swiatek-as-she-nears-semifinal-berth-in-riyadh|work=WTA Tennis|access-date=4 September 2026}}</ref> den second alternate [[Ekaterina Alexandrova]]<ref>{{cite news|title=Rybakina defeats Alexandrova, finishes with perfect mark in WTA Finals group play|url=https://www.wtatennis.com/news/4396708/rybakina-defeats-alternate-alexandrova-finishes-with-perfect-mark-in-group-play|work=ESPN|access-date=4 September 2026}}</ref> to reach de semi-finals, going on to defeat 5th seed [[Jessica Pegula]].<ref>{{Cite AV media |url=https://www.youtube.com/watch?v=UQdy578_iYI |title=Elena Rybakina vs. Ekaterina Alexandrova {{!}} 2025 WTA Finals Riyadh {{!}} WTA Match Highlights |date=2025-11-05 |last=WTA |access-date=2025-11-14 |via=YouTube}}</ref><ref>{{cite news|title=Sabalenka, Rybakina to square off in WTA Finals title match Open|url=https://www.espn.com/tennis/story/_/id/46647023/elena-rybakina-beats-ekaterina-alexandrova-win-ningbo-open|access-date=20 August 2026|work=ESPN|date=7 November 2025}}</ref> Insyd de final, she upset world No. 1 [[Aryna Sabalenka]] to capture de WTA Finals crown, den extend ein 11-match win streak. As a result of ein undefeated victory, Rybakina earn a record-breaking $5.235 million in prize money, wey she fini de season as de world No. 5.<ref>{{Cite web |last=Tennis.com |title=Elena Rybakina finishes 2025 resurgence by beating world No. 1 Aryna Sabalenka to win WTA Finals |url=https://www.tennis.com/news/articles/elena-rybakina-finishes-2025-resurgence-by-beating-world-no-1-aryna-sabalenka-to-win-wta-finals |access-date=2025-11-14 |website=Tennis.com |language=en}}</ref><ref>{{Cite web |last=Tennis.com |title=How Elena Rybakina rose to a "challenging" 2025 with WTA Finals victory |url=https://www.tennis.com/news/articles/how-elena-rybakina-rose-to-a-challenging-2025-with-wta-finals-victory |access-date=2025-11-14 |website=Tennis.com |language=en}}</ref>
=== 2026: Australian Open den US Open champion, No. 1 ===
Rybakina begin ein season at de Brisbane International, wer she loose insyd de quarterfinals to [[Karolína Muchová]], ending ein 13-match winning streak.<ref>{{Cite web |date=2026-01-09 |title=Muchova halts Rybakina's win streak; to face Sabalenka in Brisbane semis |url=https://www.wtatennis.com/news/4431345/muchova-extinguishes-rybakinas-win-streak-to-do-battle-with-sabalenka-in-brisbane-semis |access-date=2026-01-29 |website=Women's Tennis Association |language=en}}</ref> She then play insyd de 2026 Australian Open, defeating [[Kaja Juvan]],<ref>{{Citeweb|url=https://ausopen.com/articles/news/dominant-rybakina-serves-ticket-ao-second-round|title=Dominant Rybakina serves up ticket to AO second round|date=20 January 2026|accessdate=14 September 2026|publisher=Australian Open}}</ref> [[Varvara Gracheva]],<ref>{{Citeweb|url=https://www.tennisworldusa.org/tennis/news/On_the_WTA_results_with/163387/australian-open-elena-rybakina-overcomes-early-struggles-to-register-twoset-2r-win/|title=Australian Open: Elena Rybakina overcomes early struggles to register two-set 2R win|publisher=TennisWorldUSA|accessdate=14 September 2026}}</ref> den [[Tereza Valentová]], to reach de fourth round. There, she defeat 21st seeded [[Elise Mertens]] to reach ein first major quarterfinal since Wimbledon insyd 2024.<ref>{{Cite web |title=Rybakina secures spot in the quarterfinals in Australia with aces |url=https://www.puntodebreak.com/en/2026/01/26/rybakina-secures-spot-in-the-quarterfinals-in-australia-with-aces |access-date=2026-01-29 |website=Puntodebreak.com |language=en}}</ref> She then defeat world No. 2 [[Iga Świątek]] insyd de quarterfinals den [[Jessica Pegula]] insyd de semifinals, na she no drop a set. Na de final be a rematch of de 2023 Australian Open final den 2025 WTA Finals final against world No. 1 [[Aryna Sabalenka]].<ref>{{Cite web |last=Services |first=ESPN News |date=2026-01-28 |title=Elena Rybakina tops Iga Swiatek to reach Australian Open semis |url=https://www.espn.com/tennis/story/_/id/47749376/elena-rybakina-defeats-iga-swiatek-straight-sets-reach-2026-australian-open-semifinals |access-date=2026-01-29 |website=ESPN.com |language=en}}</ref><ref>{{Cite news|last=Eccleshare|first=Charlie|date=2026-01-29|title=Elena Rybakina fends off Jessica Pegula comeback for Australian Open final with Aryna Sabalenka|url=https://www.nytimes.com/athletic/7006303/2026/01/29/australian-open-semifinals-pegula-rybakina-result-analysis/|access-date=2026-01-29|work=The New York Times|language=en-US|issn=0362-4331}}</ref> Der, she defeat Sabalenka insyd three sets, securing ein second major title. Unlike ein first major win insyd 2022, Rybakina receive 2,000 points as a result of ein championship victory, den thus she return to de world No. 3 position for de first time since January 2024.<ref>{{Cite web |date=2026-01-31 |title=Rybakina outlasts Sabalenka in three sets to capture first Australian Open title |url=https://www.wtatennis.com/news/4442160/rybakina-earns-place-among-games-elites-with-first-australian-open-second-major-title |access-date=2026-01-31 |website=Women's Tennis Association |language=en}}</ref><ref>{{cite web |last1= |first1= |date=January 31, 2026 |title=Rybakina's calm celebration after Australian Open triumph shocks fans |url=https://www.khelwire.com/articles/rybakinas-calm-celebration-after-australian-open-triumph-shocks-fans |access-date=January 31, 2026 |website=Khelwire}}</ref>
During de Middle East Swing, she loose to [[Victoria Mboko]] insyd de quarterfinals of de Qatar Open wey she retire from ein third round match against [[Antonia Ružić]] at de Dubai Open secof illness.<ref>{{Cite web |date=2026-02-12 |title=Mboko ends Rybakina's winning streak in three-set thriller; into Doha semis |url=https://www.wtatennis.com/videos/4449526/mboko-ends-rybakinas-winning-streak-in-three-set-thriller-into-doha-semis |access-date=2026-02-13 |website=Women's Tennis Association |language=en}}</ref><ref>{{cite web |date=18 February 2026 |title=GI Illness forces Elena Rybakina to retire in Dubai, as lucky loser Antonia Ruzic advances |url=https://www.tennis.com/news/articles/gi-illness-elena-rybakina-retire-dubai-lucky-loser-ruzic-anisimova-andreeva-pegula |website=tennis.com}}</ref>
At de Indian Wells Open, she defeat fifth seed [[Jessica Pegula]] to reach de semifinals. Following ein victory insyd de quarterfinals, she cam be World No. [[WTA rankings|2]] for de first time insyd ein career.<ref>{{cite web |title=Rybakina set to rise to No. 2 in WTA rankings, overtaking Swiatek |url=https://www.wtatennis.com/news/4468426/rybakina-will-jump-to-no-2-in-wta-rankings-overtaking-swiatek |accessdate=14 March 2026 |website=WTA}}</ref> She defeat [[Elina Svitolina]] insyd de semifinals to set up a rematch of de 2023 Indian Wells Open final den 2026 Australian Open final with [[Aryna Sabalenka]].<ref>{{cite web |title=Rybakina hits 12 straight Top 10 wins, earns Indian Wells final rematch with Sabalenka |url=https://www.wtatennis.com/news/4468706/rybakina-pushes-past-svitolina-to-set-up-sabalenka-showdown-in-indian-wells-final |accessdate=18 March 2026 |website=WTA}}</ref><ref>{{cite web |title=Advantage Sabalenka or Rybakina? Making the case for the Indian Wells finalists |url=https://www.wtatennis.com/news/4468887/advantage-sabalenka-or-rybakina-making-the-case-for-the-indian-wells-finalists |accessdate=18 March 2026 |website=WTA}}</ref> Rybakina loose de final insyd three close sets despite having a championship point insyd de third set tiebreak.<ref>{{cite web |title=Sabalenka saves championship point to win Indian Wells thriller over Rybakina |url=https://www.wtatennis.com/news/4469923/aryna-sabalenka-solves-elena-rybakina-to-win-first-indian-wells-23rd-wta-title |accessdate=18 March 2026 |website=WTA}}</ref>
Insyd de Miami Open, she defeat qualifier [[Talia Gibson]] to reach de quarterfinals, setting up rematch of Indian Wells Open quarterfinal plus [[Jessica Pegula]].<ref>{{cite web |title=Rybakina cruises, Pegula dominant to set up Miami showdown |url=https://www.wtatennis.com/news/4475320/rybakina-cruises-pegula-dominant-to-set-up-miami-showdown |accessdate=18 March 2026 |website=WTA}}</ref> She defeat Pegula insyd a comeback three set win to set up a rematch against [[Aryna Sabalenka]] insyd de semifinals, wer ein run end after a straight sets loss.<ref>{{cite web |title=Five in a row! Rybakina beats Pegula again to make Miami semis |url=https://www.wtatennis.com/news/4476383/five-in-a-row-rybakina-beats-pegula-again-to-make-miami-semis |accessdate=26 March 2026 |website=WTA}}</ref>
Rybakina begin ein clay season at de Stuttgart Open as de top seed, receiving a bye insyd de first round. She then defeat [[Diana Shnaider]]<ref>{{Cite web |title=Top-seeded Rybakina handles Shnaider to book Stuttgart quarters spot |url=https://www.wtatennis.com/news/4488911/top-seeded-elena-rybakina-handles-diana-shnaider-to-book-stuttgart-quarters-spot |accessdate=17 April 2026 |website=WTA}}</ref> insyd de second round, she save two match points insyd de quarterfinals insyd a 3-hour battle against [[Leylah Fernandez]], wey she defeat [[Mirra Andreeva]] insyd de semi-finals to reach ein third final of de year.<ref>{{cite web |title=Rybakina surges past Andreeva to reach third final of 2026 in Stuttgart |url=https://www.wtatennis.com/news/4489817/rybakina-surges-past-andreeva-to-reach-third-final-of-2026-in-stuttgart |accessdate=18 April 2026 |website=WTA}}</ref> Insyd de final, she defeat 7th seed [[Karolína Muchová]] insyd straight sets to capture de Stuttgart Open title for de second time insyd ein career.<ref>{{Cite web |title=Rybakina returns to winner's circle in Stuttgart with straight-sets win over Muchova |url=https://www.wtatennis.com/news/4490060/rybakina-outshines-muchova-in-stuttgart-for-first-repeat-title-13th-overall |accessdate=19 April 2026 |website=WTA}}</ref>
Insyd Madrid, she defeat [[Elena-Gabriela Ruse]],<ref>{{Cite web |title=Rybakina, Zheng pull off comebacks in Madrid to set third-round meeting |url=https://www.wtatennis.com/news/4492818/rybakina-zheng-pull-off-comebacks-in-madrid-to-set-third-round-meeting |accessdate=29 April 2026 |publisher=WTA}}</ref> den [[Zheng Qinwen]]<ref>{{Cite web |title=Rybakina prevails in tight three-setter against Zheng in Madrid |url=https://www.wtatennis.com/news/4494146/rybakina-prevails-in-tight-three-setter-against-zheng-in-madrid |accessdate=29 April 2026 |publisher=WTA}}</ref> before she be stunned insyd fourth round by lucky loser [[Anastasia Potapova]].<ref>{{Cite web |title=Potapova stuns Rybakina in midnight upset to reach Madrid quarterfinals |url=https://www.wtatennis.com/news/4494794/potapova-stuns-rybakina-in-midnight-upset-to-reach-madrid-quarterfinals |accessdate=29 April 2026 |publisher=WTA}}</ref>
She receive a bye insyd de first round of Rome as de second seed. She then defeat [[Maria Sakkari]],<ref>{{Cite web |title=Eala reaches new clay milestone in Rome; to face Rybakina in third round |url=https://www.wtatennis.com/news/4500567/takeaways-eala-downs-wang-for-milestone-rome-victory |accessdate=9 May 2026 |publisher=WTA}}</ref> [[Alexandra Eala]],<ref>{{Cite web |title=Rybakina secures tour-leading 29th victory with win over Eala in Rome |url=https://www.wtatennis.com/news/4501540/elena-rybakina-returns-to-rome-final-16-defeats-alexandra-eala-in-29th-win-of-season |accessdate=12 May 2026 |publisher=WTA}}</ref> den [[Karolína Plíšková]]<ref>{{Cite web |title=Svitolina, Rybakina dominate as quarterfinal clash of past Rome champions awaits |url=https://www.wtatennis.com/news/4502303/elina-svitolina-elena-rybakina-dominate-to-set-rome-quarterfinal-clash-past-champions-pliskova-bartunkova |accessdate=12 May 2026 |publisher=WTA}}</ref> all insyd straight sets to reach quarterfinals wer she loose to [[Elina Svitolina]] wer she manage to convert only 4 of 20 break points.<ref>{{cite web |title=Svitolina saves 16 break points, stuns Rybakina to reach first Rome semifinal since 2018 |url=https://www.wtatennis.com/news/4503296/svitolina-saves-16-break-points-stuns-rybakina-to-reach-first-rome-semifinal-since-2018 |access-date=May 17, 2026 |website=Women's Tennis Association}}</ref> At de French Open na she be stunned by [[Yulia Starodubtseva]] insyd de second round, marking insyd ein earliest loss at de tournament since 2020 den at a major since 2024 Australian Open.<ref>{{Cite web |title=Starodubtseva delivers latest upset, edges Rybakina at Roland Garros |url=https://www.wtatennis.com/news/4510325/starodubtseva-stuns-no-2-seed-rybakina-in-dramatic-roland-garros-upset |access-date=29 June 2026 |publisher=WTA}}</ref>
Rybakina get an unsuccessful run insyd grass season losing insyd de quarterfinal of Queen's Club to home favourite [[Katie Boulter]]<ref>{{Cite web |title=Boulter upsets top seed Rybakina, Vekic wins doubleheader at Queen's |url=https://www.wtatennis.com/news/4518528/katie-boulter-upsets-top-seed-elena-rybakina-donna-vekic-wins-czech-doubleheader |accessdate=29 June 2026 |publisher=WTA}}</ref> den insyd de second round of de Berlin Open to [[Alexandra Eala]]; na dis be de first time since March 2025 wey Rybakina loose two consecutive matches.<ref>{{Cite web |title='I'm still shaking': Eala delivers Berlin shocker, ousts World No. 2 Rybakina in straight sets |url=https://www.wtatennis.com/news/4521872/im-still-shaking-eala-delivers-berlin-shocker-ousts-world-no-2-rybakina-in-straight-sets |accessdate=29 June 2026 |publisher=WTA}}</ref>At Wimbledon, she defeat [[Loïs Boisson]],<ref>{{Cite web |title=Rybakina survives Boisson scare to advance at Wimbledon, notch 300th WTA Tour win |url=https://www.wtatennis.com/news/4528838/rybakina-survives-boisson-scare-to-advance-at-wimbledon |access-date=12 August 2026 |publisher=WTA}}</ref> den [[Caty McNally]]<ref>{{Cite web |title=Rybakina continues Wimbledon winning record |url=https://www.wimbledon.com/en_GB/news/wimbledon_2026_2R_mcnally_rybakina |access-date=12 August 2026 |publisher=Wimbledon}}</ref> before losing to [[Elise Mertens]] for a second consecutive third round exit insyd de tournament.<ref>{{Cite web |title=Mertens stuns 2022 champion Rybakina |url=https://www.wimbledon.com/en_GB/news/wimbledon_2026_mertens_rybakina_r3 |access-date=12 August 2026 |publisher=Wimbledon}}</ref>Na Rybakina sanso be in contention for World No. 1 at de beginning of de tournament.<ref>{{Cite web |title=How Rybakina can take the No. 1 ranking from Sabalenka at Wimbledon |url=https://www.wtatennis.com/news/4526248/how-elena-rybakina-can-take-world-no-1-from-aryna-sabalenka-at-wimbledon |access-date=12 August 2026 |publisher=WTA}}</ref>
[[File:Elena_Rybakina_at_the_2026_Wimbledon_Championships_(1)_(cropped).jpg|right|thumb|Rybakina at de 2026 Wimbledon Championships]]
As de second seed, Rybakina receive a bye into de second round of de 2026 Canadian Open. She then defeat [[Daria Kasatkina]] insyd three sets,<ref>{{Citeweb|url=https://www.wtatennis.com/news/4554728/58-winners-58-errors-rybakina-delivers-mixed-bag-to-beat-kasatkina-in-toronto|title=58 winners, 58 errors: Rybakina delivers mixed bag to beat Kasatkina in Toronto|publisher=WTA|accessdate=13 August 2026}}</ref>[[Ann Li (tennis)| Ann Li]] insyd straight sets,<ref>{{Citeweb|url=https://nationalbankopen.com/news/read/2026/toronto-daily-recap-served-up-sobeys-day-7-august-7-eala-fernandez-rybakina-jovic|title=Toronto Day 7 Recap Served Up by Sobeys: Fernandez Shocks Andreeva, Eala Fights On|publisher=National Bank Open|accessdate=13 August 2026}}</ref> wey she make a comeback victory insyd a thriller against [[Ludmilla Samsonova]] to reach de quarterfinal.<ref>{{Citeweb|url=https://nationalbankopen.com/news/read/2026/nbo-toronto-results-day-9-rybakina-gauff-fernandez-eala|title=Rybakina Survives Scare to Reach Quarter-Finals; Eala, Fernandez Eliminated|publisher=National Bank Open|accessdate=13 August 2026}}</ref> Der, she cam back from a set den a break down against defeating former World No. 1 [[Naomi Osaka]] insyd a tough three setter to reach ein third consecutive semifinal at de tournament.<ref>{{Citeweb|url=https://www.wtatennis.com/news/4557966/rybakina-shows-champions-grit-in-comeback-win-over-osaka-to-reach-toronto-semis|title=Rybakina shows champion's grit in comeback win over Osaka; reaches Toronto semis|publisher=WTA|accessdate=13 August 2026}}</ref><ref>{{Citeweb|url=https://nationalbankopen.com/news/read/2026/toronto-daily-recap-served-up-sobeys-day-11-august-11-rybakina-osaka-gauff-kawhi-leonard|title=Toronto Day 11 Recap Served Up by Sobeys: Gauff, Rybakina Complete Semifinal Bracket|publisher=National Bank Open|accessdate=13 August 2026}}</ref> She make anoda comeback insyd de semifinal against [[Coco Gauff]] from a set down, winning 13 consecutive points insyd de second set en route to a three set victory insyd a match wey end at nearly 1:00 AM local time.<ref>{{Cite web |title=Gauff drops 3-setter to Rybakina in National Bank Open semifinals |url=https://www.espn.com/tennis/story/_/id/49596853/gauff-drops-3-setter-rybakina-national-bank-open-semifinals |access-date=2026-08-23 |website=www.espn.com}}</ref> Contesting ein seventh WTA 1000-level final, she loose to [[Iga Świątek]].<ref>{{Citeweb|url=https://www.wtatennis.com/news/4559201/swiatek-ends-yearlong-title-drought-in-toronto-after-sweeping-past-rybakina-in-straight-sets|title=Swiatek wins first title of 2026 after sweeping past Rybakina in Toronto|publisher=WTA|accessdate=17 August 2026}}</ref><ref>{{Citeweb|url=https://www.wtatennis.com/news/4558792/by-the-numbers-rybakina-claims-tour-leading-26th-hardcourt-win-to-reach-final|title=By the Numbers: Rybakina claims tour-leading 26th hardcourt win to reach final|publisher=WTA|accessdate=13 August 2026}}</ref> Na Rybakina be in contention to become World No.1 at de beginning of de tournament, however [[Aryna Sabalenka]] retain de ranking by reaching de fourth round.<ref>{{Citeweb|url=https://www.wtatennis.com/news/4559575/rankings-watch-swiatek-returns-to-top-5-rybakina-narrows-gap-to-no-1|title=Rankings Watch: Swiatek returns to Top 5, Rybakina narrows gap to No. 1|publisher=WTA|accessdate=17 August 2026}}</ref>
At de Cincinnati Open, Rybakina san receive a bye as de second seed, wey she defeat [[Taylor Townsend]],<ref>{{Cite web |title=Rybakina stops Townsend in two sets in return to Cincinnati |url=https://www.wtatennis.com/videos/4560630/rybakina-stops-townsend-in-return-to-cincinnati |access-date=2026-08-23 |website=Women's Tennis Association |language=en}}</ref> [[Magdalena Fręch]],<ref>{{Cite web |date=2026-08-17 |title=Cincinnati Open 2026 — Rybakina Overcomes Rain to Beat Frech; Swiatek Completes Turnaround Against Sakkari |url=https://ground.news/article/live-updates-elena-rybakina-dispatches-frech-in-the-3rd-round-at-the-cincinnati-open-cincinnati-results |access-date=2026-08-23 |website=Ground News |language=en}}</ref> den 14th seeded [[Diana Shnaider]],<ref>{{Cite AV media |url=https://www.youtube.com/watch?v=unHVYg1mznA |title=Diana Shnaider vs. Elena Rybakina {{!}} 2026 Cincinnati Round of 16 {{!}} WTA Match Highlights |date=2026-08-19 |last=WTA |access-date=2026-08-23 |via=YouTube}}</ref> all insyd straight sets, to reach de quarterfinals, setting up a re-match of de previous week's final insyd Toronto against [[Iga Świątek]]. After [[Aryna Sabalenka]] ein fourth-round loss at de tournament, Rybakina need to reach de final in order to obtain de World No. 1 ranking. However, she retire insyd de first set against Świątek after sustaining an injury to ein left foot.<ref>{{Cite web |date=2026-08-20 |title=Swiatek reaches Cincinnati semifinals as Rybakina succumbs to left ankle injury |url=https://www.wtatennis.com/news/4563969/swiatek-reaches-cincinnati-semifinals-as-rybakina-succumbs-to-left-ankle-injury |access-date=2026-08-23 |website=Women's Tennis Association |language=en}}</ref>
Rybakina enter de US Open having spent a full week off court secof de injury she sustain insyd Cincinnati.<ref>{{Cite web |last=Sode |first=Scott |date=September 7, 2026 |title=From injury scare to world No. 1? Rybakina's 'amazing progress' at US Open |url=https://www.usopen.org/en_US/news/articles/2026-09-07/from_injury_scare_to_world_no_1_rybakinas_amazing_progress_at_us_open.html |website=US Open}}</ref> She defeat wildcard [[Thea Frodin]]<ref>{{Citeweb|url=https://www.usopen.org/en_US/news/articles/2026-09-01/elena_rybakina_ousts_serenas_body_double_thea_frodin_at_2026_us_open.html|title=Elena Rybakina ousts Serena’s body double Thea Frodin at 2026 US Open|publisher=US Open|accessdate=1 September 2026}}</ref> den [[Jéssica Bouzas Maneiro|Jessica Bouzas Maniero]]<ref>{{Citeweb|title=Rybakina advances to US Open third round, closing in on No. 1 ranking|url=https://www.wtatennis.com/news/4571925/rybakina-moves-closer-to-no-1-ranking-with-straight-sets-win-at-us-open|publisher=WTA|access-date=4 September 2026}}</ref> to reach de third round, wer she defeat [[Yulia Starodubtseva]],<ref>{{Citeweb|url=https://www.usopen.org/en_US/news/articles/2026-09-05/no_2_seed_rybakina_fends_off_starodubtseva_to_reach_2026_us_open_fourth_round.html|title=No. 2 seed Rybakina fends off Starodubtseva to reach 2026 US Open fourth round|publisher=US Open|access-date=8 September 2026}}</ref> to whom na she had loose at de French Open earlier insyd de year. She then reach ein first US Open career quarterfinal after a dominant win over former champion [[Naomi Osaka]].<ref>{{Cite web |last=Sode |first=Scott |date=September 7, 2026 |title=Ruthless Elena Rybakina powers past Osaka to reach 2026 US Open QFs |url=https://www.usopen.org/en_US/news/articles/2026-09-07/ruthless_elena_rybakina_powers_past_osaka_to_reach_2026_us_open_qfs.html |website=US Open}}</ref> After dropping de first set insyd de quarterfinals to [[Zheng Qinwen]], she produce a comeback win to reach de semis den thereby she secure de No. 1 spot insyd de WTA rankings.<ref>{{Citeweb|url=https://www.usopen.org/en_US/news/articles/2026-09-09/elena_rybakina_defeats_zheng_in_2026_us_open_quarterfinals_to_clinch_no_1_ranking.html|title=Elena Rybakina defeats Zheng in 2026 US Open quarterfinals to clinch No. 1 ranking|publisher=US Open|accessdate=10 September 2026}}</ref><ref>{{cite news|url=https://www.wtatennis.com/news/4574290/history-maker-elena-rybakina-captures-pif-wta-world-no1-singles-ranking|title=History-maker Elena Rybakina captures PIF WTA World No.1 singles ranking|publisher=[[Women's Tennis Association]]|date=9 September 2026|access-date=9 September 2026|language=en}}</ref> She cam be de 30th player to reach no.1, de first wey dey represent Kazakhstan den de second-oldest first-time no.1 insyd WTA history, younger dan only [[Angelique Kerber]].<ref>{{Citeweb|url=https://www.wtatennis.com/news/4574266/the-long-methodical-road-that-carried-elena-rybakina-to-no-1|title=The long, methodical road that carried Elena Rybakina to No. 1|publisher=WTA|accessdate=10 September 2026}}</ref> She produce anoda comeback win against [[Coco Gauff]] insyd de semifinal to reach ein first US Open final, a rematch against [[Aryna Sabalenka]].<ref>{{Cite news|last=Wallace|first=Ava|date=2026-09-11|title=Elena Rybakina stops Coco Gauff’s U.S. Open surge to face Aryna Sabalenka in the final|url=https://www.nytimes.com/athletic/7582161/2026/09/10/us-open-coco-gauff-elena-rybakina-semifinal-result-analysis/|access-date=2026-09-11|work=The New York Times|language=en-US|issn=0362-4331}}</ref> Insyd de final, she end de 19-match US Open winning streak of two-time defending champion Sabalenka to win de third major title of ein career den ein first US Open title.<ref>{{Citeweb|url=https://www.usopen.org/en_US/news/articles/2026-09-12/rybakina_defeats_two-time_defending_champion_sabalenka_to_win_2026_us_open.html|title=Rybakina defeats two-time defending champion Sabalenka to win 2026 US Open|publisher=US Open|date=13 September 2026|access-date=13 September 2026}}</ref> She cam be de third player insyd 21st century after [[Angelique Kerber]] den Sabalenka to win both Australian Open den US Open insyd de same year.<ref name="#USO26Final">{{Citeweb|url=https://www.wtatennis.com/news/4575707/rybakina-halts-sabalenkas-three-peat-bid-to-capture-first-us-open-title|title=The new No. 1 has a new US Open trophy: Rybakina ends Sabalenka's reign|publisher=WTA|accessdate=12 September 2026}}</ref>
lprhxsas02hljv9jm1zni94xb5xlrom
Category:George Mason Patriots women's soccer players
14
30272
111950
2026-09-15T23:14:43Z
DaSupremo
9
Fresh category
111950
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:University of Central Florida alumni
14
30273
111954
2026-09-15T23:48:31Z
DaSupremo
9
Fresh category
111954
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:Washington Huskies women's soccer coaches
14
30274
111955
2026-09-15T23:48:46Z
DaSupremo
9
Fresh category
111955
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:Sportspeople wey komot Federal Way, Washington
14
30275
111956
2026-09-15T23:48:58Z
DaSupremo
9
Fresh category
111956
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:New Mexico Lobos women's soccer coaches
14
30276
111957
2026-09-15T23:50:03Z
DaSupremo
9
Fresh category
111957
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:Soccer players wey komot King County, Washington
14
30277
111958
2026-09-15T23:50:15Z
DaSupremo
9
Fresh category
111958
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:American female sports coaches
14
30278
111959
2026-09-15T23:50:27Z
DaSupremo
9
Fresh category
111959
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1