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&nbsp;<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 &#x2013; 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/&#126;2026-74643-7|&#126;2026-74643-7]] ([[User talk:&#126;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/&#126;2026-74643-7|&#126;2026-74643-7]] ([[User talk:&#126;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/&#126;2026-39972-87|&#126;2026-39972-87]] ([[User talk:&#126;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/&#126;2026-39763-56|&#126;2026-39763-56]] ([[User talk:&#126;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/&#126;2026-39870-28|&#126;2026-39870-28]] ([[User talk:&#126;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/&#126;2026-39923-93|&#126;2026-39923-93]] ([[User talk:&#126;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/&#126;2026-74643-7|&#126;2026-74643-7]] ([[User talk:&#126;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/&#126;2026-74643-7|&#126;2026-74643-7]] ([[User talk:&#126;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/&#126;2026-39972-87|&#126;2026-39972-87]] ([[User talk:&#126;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/&#126;2026-39763-56|&#126;2026-39763-56]] ([[User talk:&#126;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/&#126;2026-39870-28|&#126;2026-39870-28]] ([[User talk:&#126;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/&#126;2026-39923-93|&#126;2026-39923-93]] ([[User talk:&#126;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&nbsp;[[issn:0961-0006|0961-0006]]. S2CID&nbsp;[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]', { ['['] = '&#91;', [']'] = '&#93;', ['\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 .. '&nbsp;', '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("&mdash;", 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 ('&nbsp;',''); -- count nbsps -- There is exactly 1 semicolon per &nbsp; 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&#035') or url:match ('%.pdf&#035'); 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 .. '&nbsp;', '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 .. '&nbsp;', '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 .. '&nbsp;', '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 .. '&nbsp;', '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 .. '&nbsp;', '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.&nbsp;273. ISBN&nbsp;<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.&nbsp;283. ISBN&nbsp;<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=&quot;&quot;" |— |- |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&nbsp;kg. Girard then enter de [[2008 Summer Olympics]], she improve upon dis by she fini fourth, plus total of 228&nbsp;kg den 3&nbsp;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&nbsp;kg, insyd de clean den jerk she add additional 130&nbsp;kg for total of 235&nbsp;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&nbsp;kg. Ein total of 236&nbsp;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..'&nbsp;<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, '&nbsp;*&nbsp;', 'border=darkgray'}} ..'&nbsp;'.. 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, '&nbsp;*&nbsp;', 'border=darkgray'}} ..'&nbsp;'.. 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