Wikipedia
tetwiki
https://tet.wikipedia.org/wiki/P%C3%A1jina_Mahuluk
MediaWiki 1.47.0-wmf.10
first-letter
Media
Espesiál
Diskusaun
Uza-na'in
Diskusaun Uza-na'in
Wikipedia
Diskusaun Wikipedia
Imajen
Diskusaun Imajen
MediaWiki
Diskusaun MediaWiki
Template
Diskusaun Template
Ajuda
Diskusaun Ajuda
Kategoria
Diskusaun Kategoria
TimedText
TimedText talk
Módulo
Módulo Discussão
Evento
Evento Discussão
Oeleu
0
5009
74030
66621
2026-07-12T10:30:26Z
J. Patrick Fischer
73
74030
wikitext
text/x-wiki
{| class="wikitable float-right" align="right" width="300"
| border="1" colspan="2" align=center style="background:#000000; color:white" |'''Oeleu'''
|-
| colspan="2" bgcolor="#000000"|[[Imajen:Foho Oeleo.jpg|300px]]
|-
| colspan="2"|[[Imajen:Oeleo suco.png|300px]]
|-
| '''Área'''
| align="center" |16,11 km²<ref name=Census2010-2>[http://dne.mof.gov.tl/published/2010%20and%202011%20Publications/Pub%202%20English%20web/Publication%202%20FINAL%20%20English%20Fina_Website.pdf Direcção Nacional de Estatística: Population Distribution by Administrative Areas Volume 2 English] {{Webarchive|url=https://web.archive.org/web/20170105061852/http://dne.mof.gov.tl/published/2010%20and%202011%20Publications/Pub%202%20English%20web/Publication%202%20FINAL%20%20English%20Fina_Website.pdf |date=2017-01-05 }} (Census 2010; PDF; 22,6 MB)</ref>
|-
| '''Populasaun'''
| align="center" |1192 <small>(tinan 2015)</small><ref name="SR2015">{{webarchive |url=https://web.archive.org/web/20161231161557/http://www.statistics.gov.tl/wp-content/uploads/2016/11/1_2015-V4-Households-Population-by-5-year-age-group.xls |date=2016-12-31 | title=Timor-Leste Population And Housing Census 2015}}</ref>
|-
| '''Xefe Suku'''
| align="center" |Manuel Soares<br/><small>(Eleisaun 2009)</small><ref>[http://www.stae.tl/elections/2009/community/results/ Secretariado Técnico de Administração Eleitoral STAE: Eleições para Liderança Comunitária 2009 – Resultados]</ref>
|}
'''Oeleu''' (iha [[lia-portugés]]: ''Oeleo'') suku ida iha [[Timór Lorosa'e]]. Suku ne'e iha postu administrativu [[Bobonaru (postu administrativu)|Bobonaru]] (munisípiu [[Bobonaru (munisípiu)|Bobonaru]]). Iha tinan 2015 total populasaun hamutuk 1192.<ref name="SR2015" /> Área 16,11 km².<ref name=Census2010-2 />
Suku Oeleu iha aldeia rua mak hanesan: Mologuen, Oeleo Taz.<ref name=JdR>[http://www.jornal.gov.tl/public/docs/2009/serie_1/serie1_no33.pdf Jornal da Républica mit dem Diploma Ministerial n.° 199/09] {{Webarchive|url=https://web.archive.org/web/20100203110707/http://www.jornal.gov.tl/public/docs/2009/serie_1/serie1_no33.pdf |date=2010-02-03 }} {{Webarchive|url=https://web.archive.org/web/20100203110707/http://www.jornal.gov.tl/public/docs/2009/serie_1/serie1_no33.pdf |date=2010-02-03 }} (Portugiesisch; PDF; 323 kB)</ref>
== Ligasaun ba li'ur ==
* [http://www.mof.gov.tl/wp-content/uploads/2011/10/bobonaro-oeleo-fo-fila-fali-Tetun-FINAL.pdf Sensus Fo Fila Fali 2010] ([[Tetun]]; PDF; 8,6 MB)
* Seeds of Life: [https://drive.google.com/folderview?id=0B13RUdSV85KfSFYtZHBtVXBQWFk&usp=sharing&tid=0B13RUdSV85KfU0tDQ2ctV09Eb1U Suco information sheets Bobonaro] (Tetun)
== Referensia ==
<references />
{{Suku Bobonaru postu administrativu}}
[[Kategoria:Bobonaru (munisípiu)]]
[[Kategoria:Suku Timor-Leste nian]]
ibi4pqnygucje4nn73oq3ua6spq3u2m
Android (Sistema Operasaun)
0
5745
74028
73827
2026-07-12T00:03:37Z
InternetArchiveBot
8082
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
74028
wikitext
text/x-wiki
Android mak móvel operasaun sistema ida ne ' ebé dezenvolve hosi Google, bazeia ba Linux kernel no dezeña prinsipalmente ba touchscreen devices móvel hanesan smartphones no galaxy. Eletrónikus uzuáriu android nian prinsipalmente bazeia ba manipulasaun direta, ne ' ebé uza mss fuan sira-ne ' ebé vagamente koresponde ba bein-mundu asaun, hanesan swiping, tapping no pinching, ba buat ruma atu kontrola on-screen objetu, hamutuk ho keyboard virtual ida ba testu input. Aleinde touchscreen devices, Google tan dezenvolve tiha ona Android TV ba televizaun ne'e, Auto Android ba karreta no Android ida Taka ba wrist watches, ida-idak ho eletrónikus uzuáriu espesializada ida. Variants Android uza mós kona-ba notebooks, game consoles, cctv dijitál maior parte, no seluk eletrónika.
Android iha baze instalasaun boot liu hotu-hotu operasaun sistema (OS) kualkér. Android sai di'ak liu ne ' ebé fa'an OS kona-ba galaxy, hahú husi tinan 2013, no kona-ba smartphones mak domina husi kualkér metric.<ref name="manjoomurky"><cite class="citation news">Manjoo, Farhad (May 27, 2015). </cite></ref><ref name="dominating">{{Cite web|url=http://gs.statcounter.com/#mobile_os-ww-monthly-201601-201601-map|title=Top Mobile Operating Systems Per Country, Jan 2016|work=statcounter.com}}</ref>
-Ne ' ebé Android, Inc., ne ' ebé Google sosa iha tinan 2005, hahú dezenvolve Android mak unveiled iha tinan 2007, hamutuk ho hahú Loke Handset Aliansa nian – konsórsiu hardware, software, no oras empreza determina atu avansa ba oin padraun sira ne ' ebé nakloke ba devices móvel. Iha fulan-Jullu tinan 2013, loja Google sira Halo ona tokon ida Android kandidatura ("apps") publika – inklui barak "negósiu terseira klase apps" ne ' ebé rival plataforma móvel kompetisaun entre – no liu billaun 50 kandidatura relatoriu. Ida fulan Abril – Maiu 2013 levantamentu kona-ba aplikasaun móvel developers hetan 71% developers ne ' ebé kria ona rekerimentu ba Android, no levantamentu tinan 2015 nian ida ne ' ebé hetan katak 40% hosi totál developers profisionál haree Android hanesan sira-nia prioridade alvu plataforma, ne ' ebé mak bele halo komparasaun ba iOS Apple nian kona-ba 37% ho plataforma rua ne'e aas liu dook ema seluk. Iha fulan Setembru tinan 2015, Android iha billaun 1.4 devices ativu fulan-fulan.
<ref><cite class="citation news">Callaham, John (September 29, 2015). </cite></ref>
[[Category:Articles containing potentially dated statements from July 2013|Category:Articles containing potentially dated statements from July 2013]]
[[Category:All articles containing potentially dated statements|Category:All articles containing potentially dated statements]]
Kódigu fonte android nian ne'e lansa husi Google tuir fonte nakloke lisensa, maske maioria devices Android ikus mai ró-ahi ho teatru ida kona-ba fonte sira ne ' ebé nakloke no software compete, ne ' ebé inklui software compete ne ' ebé presiza atu hetan asesu ba servisu Google. Android mak populár ho empreza teknolojia ne ' ebé ezije ready-made, kustu ki'ik no customizable operasaun sistema ida ba devices tech aas. Ninia natureza ne ' ebé loke ona enkoraja komunidade ida ne ' ebé boot developers no enthusiasts atu uza kódigu fonte-nakloke hanesan hun ba mai husi komunidade tanba projetu sira, ne ' ebé halo aktualizasaun ba devices boot, aumenta karakterístika foun ba uzuáriu sira ne ' ebé avansadu ka halo Android devices ne ' ebé orijinalmente shipped ho sistema operasaun sira seluk. Susesu Android halo ida-neʼe ida alvu ba litigasaun patent (no direitu autór) hanesan parte husi, neʼebé ema bolu nuʼudar "smartphone funu" entre empreza teknolojia .<ref name="cnet2011">{{Cite web|last=Reardon|first=Marguerite|url=http://news.cnet.com/8301-30686_3-20092399-266/google-just-bought-itself-patent-protection/|title=Google just bought itself patent protection|publisher=News.cnet.com|date=August 15, 2011|accessdate=May 1, 2013|access-date=May 1, 2013}}</ref><ref name="tomsguide">{{Cite web|author=Douglas Perry|url=http://www.tomsguide.com/us/google-android-installations-app-downloads,news-11861.html|title=Google Android Now on 135 Million Devices|publisher=Tomsguide.com|date=July 16, 2011|accessdate=May 1, 2013|access-date=May 1, 2013}}</ref>
== History ==
[[Imajen:Android_logo_(2007-2014).svg|thumb|250x250px|Former Android logo wordmark (2007-2014)]]
Android, Inc. ne'e harii iha Palo Alto, California iha fulan-Outubru tinan 2003 husi Andy Rubin (fundadór kooperasaun kona-ba Perigu), Rich Miner (fundadór ko-Wildfire Komunikasaun, Inc.), Nick Sears (dala ida VP iha T-Móvel), no Chris White (xefia konsepsaun no eletrónikus dezenvolvimentu iha WebTV) atu dezenvolve, iha Rubin sira-nia liafuan, "smarter móvel devices ne ' ebé mak hatene liu kona-ba ninia proprietáriu nian fatin no preferénsia". Intensaun sedu ba empreza sira atu dezenvolve sistema operasaun avansada ida ba cctv dijitál maior parte. Maibé, kuandu hatene katak merkadu devices ne ' ebé mak la sufisiente, empreza diverted esforsu kona-ba realizasaun smartphone operasaun sistema ida ne ' ebé sei rival Symbian no Microsoft Kona Móvel. Maski accomplishments kotuk fundadór no funsionáriu sira ne ' ebé sedu, Android Inc. hala'o subasubar deʼit, fó sai de'it ne ' ebé nia servisu kona-ba instalasaun sira ba uzu ba telefoni. Tinan ne ' ebé hanesan, Rubin halai sai husi osan. Steve Perlman, belun besik ho Rubin, lori ba nia $10,000 iha osan iha pakote ida, no lakohi ai-riin
Hotu ne ' ebé klaru iha empreza.<ref name="StevePerlman">{{Cite web|url=http://www.businessweek.com/magazine/the-edison-of-silicon-valley-07272011.html|title=Steve Perlman's Wireless Fix|last=Vance|first=Ashlee|date=July 27, 2011|work=Bloomberg Businessweek|publisher=Bloomberg|accessdate=November 3, 2012|access-date=November 3, 2012}}</ref>
Iha fulan-Jullu tinan 2005, Google hetan Android Inc. ba 50 tokon $, funsionáriu xave ninian, ne ' ebé inklui Rubin, Miner no Mutin, hela iha kompañia depois sosa. Barak la hatene neʼe kona-ba Android Inc. iha tempu, maibé barak asume katak Google halo planu atu tama iha merkadu telemóvel, ho movimentu ida ne'e. Iha Google, ekipa ne ' ebé lidera husi Rubin dezenvolve pesoal móvel plataforma powered husi Linux kernel. Google marketed plataforma handset na'in no karreira kona-ba promesa fó sistema ida ne ' ebé fleksivel, upgradeable. Google ona bá oin-oin kona-ba parseiru komponente no software hardware no signaled ba karreira ne'e nakloke ba oin-oin-oin kooperasaun kona-ba sira-nia parte.
<ref name="EngadgetMobileOS">{{Cite web|url=http://www.engadget.com/2007/08/28/google-is-working-on-a-mobile-os-and-its-due-out-shortly|title=Google is working on a mobile OS, and it's due out shortly|last=Block|first=Ryan|work=[[Engadget]]|date=August 28, 2007|accessdate=February 17, 2012|access-date=February 17, 2012}}</ref><ref name="WSJ"><cite class="citation news">Sharma, Amol; Delaney, Kevin J. (August 2, 2007). </cite></ref><ref name="DT">{{Cite web|archiveurl=https://web.archive.org/web/20070703031543/http://www.directtraffic.org/OnlineNews/Google_admits_to_mobile_phone_plan_18094880.html|archivedate=July 3, 2007|url=http://www.directtraffic.org/OnlineNews/Google_admits_to_mobile_phone_plan_18094880.html|title=Google admits to mobile phone plan|work=directtraffic.org|publisher=Google News|date=March 20, 2007|accessdate=February 17, 2012|access-date=February 17, 2012}}</ref>
Espekulasaun kona-ba intensaun Google nian ne ' ebé atu tama iha merkadu komunikasaun móvel sira kontinua halo liu hosi fulan-Dezembru tinan-2006. Codenamed prototype uluk "Tama" iha resemblance ida ne ' ebé besik liu ba telefone BlackBerry ida, ho la touchscreen, no ida keyboard fíziku, QWERTY, maibé ne'e depois fila fali engineered atu apoia touchscreen ida, atu bele kompete ho devices announced seluk hanesan 2006 LG Prada no 2007 Apple iPhone. Iha fulan Setembru tinan 2007, InformationWeek kobre ida Evalueserve estudu relatoriu Google ona aprezenta kandidatura patent oin-oin iha área telephony móvel
Clear All .<ref name="IWpatents"><cite class="citation news">Claburn, Thomas (September 19, 2007). </cite></ref><ref name="MNpatents">{{Cite web|url=http://www.moconews.net/entry/419-googles-strong-mobile-related-patent-portfolio|title=Google's Strong Mobile-Related Patent Portfolio|last=Pearce|first=James Quintana|work=mocoNews.net|date=September 20, 2007|accessdate=February 17, 2012|access-date=February 17, 2012}} {{Webarchive|url=https://web.archive.org/web/20081216114815/http://www.moconews.net/entry/419-googles-strong-mobile-related-patent-portfolio/ |date=December 16, 2008 }}</ref>
[[Imajen:A_Press_Conference_for_the_Launch_of_Nexus_7_on_September_27,_2012_in_Seoul_from_acrofan_3.JPG|thumb|Eric Schmidt, Andy Rubin no Barra Hugo ne ' ebé iha tinan 2012 konferénsia imprensa ida hodi fó sai Google nian Nexus 7 ai-kabelak <br>
]]
Iha loron 5, fulan Novembru tinan 2007, mak Loke Handset Aliansa, konsórsiu empreza teknolojia ne ' ebé inklui Google, pesoal manufacturers hanesan HTC, Sony no Tablet, karreira wireless hanesan Sprint Nextel no T-Móvel, no na'in chipset hanesan Qualcomm no Texas Instrumentu, unveiled rasik, ho objetivu ida atu dezenvolve padraun sira ne ' ebé nakloke ba devices móvel. Loron neʼe, Android mak unveiled hanesan ninia dahuluk, plataforma pesoal móvel ida ne ' ebé harii iha Linux kernel. Smartphone komersialmente dahuluk ne ' ebé suli Android ne'e Mehi HTC, fó sai iha loron 22 fulan-Outubru tinan 2008
<ref name="gizmodo-g1">{{Cite web|url=http://gizmodo.com/5053264/t+mobile-g1-full-details-of-the-htc-dream-android-phone|title=T-Mobile G1: Full Details of the HTC Dream Android Phone|author=Mark Wilson|publisher=gizmodo.com|date=September 23, 2008|accessdate=December 27, 2013|access-date=December 27, 2013}} {{Webarchive|url=https://web.archive.org/web/20140209042117/http://gizmodo.com/5053264/t+mobile-g1-full-details-of-the-htc-dream-android-phone |date=February 9, 2014 }}</ref>
Dezde 2008, Android haree ona aktualizasaun lubuk ida ne ' ebé iha incrementally diak liu tan sistema operasaun, aumenta karakterístika foun no estaka rasik bugs iha imprensa ne ' ebé uluk. Imprensa ida-idak ne ' ebé boot ida naran tuir orden alfabétika ida dessert ka trata sugary; porezemplu, versaun 1.5 "Cupcake" tuir kedas ho 1.6 "Donut". Iha tinan 2010, Google lansa tiha ona ninia Nexus oin-oin devices – liña smartphones no galaxy ne ' ebé suli ba sistema operasaun Android, no harii hosi parseiru manufatura. HTC servisu hamutuk ho Google atu husik livre ba dahuluk Nexus smartphone, Nexus Ida. Google ona tanba informa ba oin-oin ho devices foun sira, hanesan telefone Nexus 5 ne ' ebé (halo husi LG) no ba Nexus 7 ai-kabelak (halo husi Asus). Google releases selular Nexus no galaxy atu atua hanesan sira liuhusi emblema: Android devices, hodi hatudu Android nia ikus software no hardware karakterístika. Husi tinan 2013 to'o tinan 2015, Google oferese devices Edisaun Halimar Google oin-oin kona-ba Google sira Halo. Maske la lori Google Nexus ne ' ebé branding, sira-neʼe mak selular Android Google-liu, no mós katak, galaxy halai versaun ikus ba Android, livre husi retifika manufacturer ka karreira.
Tinan 2010 to'o tinan 2013, Hugo Barra serbí nu'udar porta produtu, reprezenta Android iha konferénsia imprensa no Google I/O, Google nian foka developer konferénsia anuál. Barra nian produtu envolvimentu inklui ekosistema Android tomak kona-ba instalasaun no hardware, ne ' ebé inklui Honeycomb, Sandwich Ice Cream, Jelly Bean KitKat lansa sistema operasaun, smartphones Nexus 4 no Nexus 5, galaxy Nexus 7 no Nexus 10 no produtu seluk ne ' ebé relasiona ho hanesan Agora Google no Google Lian Peskiza, Google nia diskursu rekoñesimentu produtu ne ' ebé natoon atu Siri Apple nian. Iha tinan 2013, Barra husik hela ekipa Android ba smartphone [[Xina]] kria Xiaomi. Tinan ida ne'e, Larry Page fó sai iha postu blog katak Andy Rubin nia muda husi divizaun Android ba foti kona-ba projetu sira ne ' ebé foun iha Google. Nia mak troka husi Sundar Pichai ne ' ebé sai xefe Android no Chrome OS foun, no, liu tiha, Hiroshi Lockheimer kuandu Pichai CEO Google .<ref>{{Cite web|url=http://www.androidcentral.com/sundar-pichai-promotes-hiroshi-lockheimer-oversee-android-chrome-os-and-chromecast|title=Sundar Pichai promotes Hiroshi Lockheimer to oversee Android, Chrome OS and Chromecast|work=Android Central}}</ref>
Iha tinan 2014, Google lansa Android Ida, liña smartphones ne ' ebé prinsipalmente tarjetu ba kliente sira iha mundu hela dezenvolvimentu nia laran. Iha fulan-Maiu tinan 2015, Google anunsia Brillo Projetu ne ' ebé hanesan versaun Android ne ' ebé uza ninia nivel ki'ik (exklui eletrónikus uzuáriu), tesi tun ida destina ba "Internet kona-ba buat Neʼebé" (IoT) sistema ligasaun metin.
Universidade Cambridge peskiza iha tinan 2015, ne ' ebé konklui katak kuaze 90% hosi Android laiha telefone tiha ona iha uzu hatene ona maibé seguransa unpatched vulnerabilidade tanba la aktualizasaun sira no apoiu. Iha tinan ida, (meadus-tinan 2015) ne ' ebé mak hato'o, diʼak liu billaun ida ne ' ebé Android smartphones faʼan tiha ona (barak liu duké durante deʼit billion faʼan iha tinan-2014); no 5.0 Android (ho seguransa di'ak) no tuirmai, fila husi merkadu 5.4% fahe ba over ne ' ebé dadaun ne'e metade, ne'ebe liu ona signifika katak númeru 90% tenke tebes; agora provavelmente selular sira reprezenta menus hosi metade hosi selular Android hotu-hotu. Devices ne ' ebé foin halo aktualizasaun sira seguransa nian; Android 5.0 introdusaun sistema atualizasaun sentralizadu ne ' ebé di'ak liu ida
<ref>{{Cite web|url=https://source.android.com/devices/tech/ota/|title=OTA Updates|quote=Android devices in the field can receive and install over-the-air (OTA) updates to the system and application software. [..] This section describes the OTA system as of the Android 5.x release}}</ref><ref>{{Cite web|url=https://source.android.com/devices/tech/ota/block.html|title=Block-Based OTAs|quote=Android 5.0 and later versions use block OTA updates to ensure that each device uses the exact same partition. [..] Android 4.4 and earlier versions used file OTA updates}}</ref>
== Karakterístika ==
=== Interface ===
Android nia onorárius uzuáriu eletrónikus prinsipalmente bazeia ba manipulasaun direta, ne ' ebé uza input fuan sira-ne ' ebé vagamente koresponde ba bein-mundu asaun, hanesan swiping, tapping, pinching no pinching aleinde ba buat ruma atu kontrola on-screen objetu, hamutuk ho keyboard virtual ida. Controllers mós no keyboards fíziku full-size hetan suporta liuhusi Bluetooth ka USB. Responde ba uzuáriu sujestaun dezeina hodi sai imediatu no fornese eletrónikus instável fuan ida, no dala barak uza kapabilidade vibration kona-ba pesoal atu fornese komentáriu haptic ba uzuáriu. Hardware interna, hanesan accelerometers, gyroscopes no sensors besik sira uza husi aplikasaun balun hodi responde ba asaun uzuáriu adisionál sira, porezemplu ajusta tais husi portrait ba regular ne ' ebé depende ba oinsá ba pesoal mak orientada ne, ka permiti uzuáriu ba steer hanesan veíkulu iha mós racing ida husi rotativa pesoal, ne ' ebé simulating kontrolu nian ida naran ezekusaun wheel.<ref>{{Cite web|url=http://phandroid.com/2011/12/22/real-racing-2-speeds-into-the-android-market-leaves-part-1-in-the-dust/|title=Real Racing 2 Speeds Into The Android Market – Leaves Part 1 In The Dust|publisher=Phandroid.com|date=September 22, 2011|accessdate=September 15, 2012|access-date=September 15, 2012}}</ref>
Android devices boot ba homescreen, navegasaun primáriu no informasaun "sentru" kona-ba Android devices ne ' ebé ho desktop ne ' ebé hetan iha komputadór pesoal. (Android mós halai ba regulár pesoal komputadór, hanesan deskrebe iha kraik). Android homescreens ne'e normalmente kompostu hosi app icons no widgets; app icons lansamentu app asosiadu, konsidera katak widgets hatudu konteúdu moris, auto-hato'o, hanesan previzaun tempu, uzuáriu ninian email inbox ka ticker notísia ida diretamente kona-ba homescreen. Homescreen ida bele kompostu husi pájina oin-oin, ne ' ebé entre ne uzuáriu bele swipe fali no hakerek, maske Android nia homescreen eletrónikus customisable maka'as, permite uzuáriu atu ajusta haree no sente kona-ba devices ba tastes sira. Apps terseiru ne ' ebé disponivel iha Google Halimar no loja app seluk bele makaas tebes re-tema homescreen, no mós mimic haree kona-ba operasaun sistema sira seluk, hanesan Telefone Kona. Manufacturers barak, no karreira wireless balun, customise haree no sente kona-ba sira-nia devices Android ba diferensa sira-nia an hosi nia kompetitór sira. Kandidatura sira ne ' ebé atende interaksaun ho homescreen ne ' ebé iha naran "launchers" tanba sira, entre seluk tan, lansamentu ba kandidatura sira ne ' ebé ona kona-ba pesoal ida.
Tuir kedan ekran mak estatutu ida ordem dos, hatudu katak informasaun kona-ba pesoal, no nia ligasaun. Advogadu estatutu ida-ne'e bele hetan "dada-" atu hateten sai ekran notifikasaun ida ne'ebe apps hatudu informasaun sira ne ' ebé importante ka aktualizasaun sira, hanesan email hetan ne ' ebé foun ka SMS testu, iha maneira ida-ne ' ebé la imediatamente hapara ka inconvenience uzuáriu. Notifikasaun ne'e persistente to'o lee hosi tapping, ne ' ebé loke app relevante, ka demisaun husi sliding pontu ekran. Hahú iha Android 4.1, "habelar notifikasaun" bele hatudu detalle sira ne ' ebé aumenta ka functionality adisionál; porezemplu, player múzika ida bele hatudu playback kontrole, no ida notifikasaun "maka bolu" fornese buttons bolu fali, ka haruka mensajen SMS ida ba ema sira-ne'e.
<ref name="notifications">{{Cite web|url=http://developer.android.com/design/patterns/notifications.html|title=Notifications | Android Developers|publisher=Developer.android.com|date=|accessdate=September 15, 2012|access-date=September 15, 2012}}</ref>
Android fornese kapasidade atu kandidatura sira ne ' ebé muda launcher onorárius, no tan neʼe nabilan no hahalok ne ' ebé visivel externally Android nian. Mudansa buat hirak-ne'e inklui ida pájina multi ne'e atraka ka la ne'e atraka, no barak liu tan mudansa ba karakterístika fundamentál sira kona-ba uzuáriu interfase.<ref>{{Cite web|url=https://play.google.com/store/search?q=launcher&c=apps|title=Launchers|publisher=google.com|date=|accessdate=February 3, 2014|access-date=February 3, 2014}}</ref>
=== Kandidatura ===
Applications ("apps"), which extend the functionality of devices, are written using the Android software development kit (SDK) and, often, the Java programming language that has complete access to the Android APIs. Java may be combined with C/C++, together with a hili naun-onorárius runtimes ne ' ebé fó apoiu C++ di'ak liu; lian programming Bá mós hetan apoiu husi ninia versaun 1.4, ne ' ebé bele mós uza eskluzivamente ho lubuk ida ne ' ebé limitada husi Android APIs. SDK, inklui lubuk ida ne ' ebé komprensivu kona-ba dezenvolvimentu instrumentu, ne ' ebé inklui debugger ida, instalasaun biblioteka, emulator handset bazeia ba QEMU, dokumentasaun, kódigu amostra no tutorials. Uluk, ambiente dezenvolvimentu integradu apoia Google nian (IDE) mak Eclipse ne ' ebé uza ba plugin Instrumentu Dezenvolvimentu Android (ADT); iha fulan-Dezembru tinan 2014, Google fó Studio Android, ne ' ebé bazeia ba IntelliJ IDEA, hanesan ninia IDE prinsipál ba dezenvolvimentu Android sira-nia aplikasaun. Instrumentu dezenvolvimentu seluk mak disponivel, ne ' ebé inklui ida dezenvolvimentu direitus kit (NDK) ba kandidatura ka inefetivu iha C ka C++, Google App Inventor, ambiente ida ne ' ebé visual ba novice programmers no oin-oin plataforma hakat web móvel kandidatura enkuadramentu. Iha fulan-Janeiru tinan 2014, Google unveiled kuadru ida ne ' ebé bazeia ba Apache Cordova ba porting Chrome HTML 5 web kandidatura ba Android, ne ' ebé falun ida shel direitus sira-nia aplikasaunl.<ref>{{Cite web|last=Savov|first=Vlad|url=http://www.theverge.com/2014/1/28/5355064/chrome-apps-are-coming-to-ios-and-android|title=Chrome Apps are coming to iOS and Android|work=The Verge|date=January 28, 2014|accessdate=February 2, 2014|access-date=February 2, 2014}}</ref>
Android iha selesaun ida ne ' ebé sa'e ba kandidatura terseiru nian, ne ' ebé bele sosa ho uzuáriu downloading no instaladóra ba aplikasaun APK (aplikasaun Android pakote) arkivu, ka hosi downloading sira uza sira-nia aplikasaun ida haloot programa sira-ne ' ebé utilizadór sira atu instala, atualiza no hasai tiha kandidatura hosi devices sira. Google Halimar Loja ne‟e loja prinsipál sira-nia aplikasaun ne ' ebé ona kona-ba devices Android ne ' ebé halo tuir rekerimentus kompatibilidade Google nian no fó lisensa ba projetu instalasaun Servisu Móvel Google. Google Halimar Loja ba utilizadór browse, download no atualiza kandidatura sira ne ' ebé publika hosi Google no terseiru developers; iha fulan-Jullu tinan 2013, iha viable kandidatura liu millaun ida ba Android iha Loja sira Halo. Iha fulan-Jullu tinan 2013, kandidatura biliaun 50 iha ona tiha ona. Karreira balun ne ' ebé oferese karreira direta faturamentu ba Google sira Halo aplikasaun kompras, iha kustu ba aplikasaun dehan tan ba uzuáriu ninian mensál projeitu lei ne'e.<ref>{{Cite web|url=http://android-developers.blogspot.com/2011/04/new-carrier-billing-options-on-android.html|title=Android Developers Blog: New Carrier Billing Options on Android Market|last=Chu|first=Eric|publisher=android-developers.blogspot.com|date=April 13, 2011|accessdate=May 15, 2011|access-date=May 15, 2011}}</ref>
[[Category:Articles containing potentially dated statements from July 2013|Category:Articles containing potentially dated statements from July 2013]]
[[Category:All articles containing potentially dated statements|Category:All articles containing potentially dated statements]]
[[Category:Articles containing potentially dated statements from July 2013|Category:Articles containing potentially dated statements from July 2013]]
[[Category:All articles containing potentially dated statements|Category:All articles containing potentially dated statements]]
Tanba natureza nakloke Android nian, aplikasaun terseiru merkadu lubuk ida mós eziste Android, laʼós atu fornese substitutu ba devices ne ' ebé mak labele ró-ahi ho Loja Halimar Google, fornese kandidatura sira ne ' ebé la bele oferese ba Loja Halimar Google tanba violasaun polítika, ka tanba razaun sira seluk. Ezemplu kona-ba loja parte datoluk sira-ne'e inklui ona Amazon Appstore, GetJar no SlideMe. F-Droid, merkadu alternativa seluk, ne ' ebé buka atu fó de'it kandidatura sira ne ' ebé mak fahe ho livre no lokesource licenses.<ref name="ars-irongrip"/><ref name="wired_alt_app_stores"><cite class="citation news">Ganapati, Priya (June 11, 2010). </cite></ref><ref name="ars-fossexperiment">{{Cite web|title=The great Ars experiment—free and open source software on a smartphone?!|url=http://arstechnica.com/gadgets/2014/07/exploring-the-world-of-foss-android-can-a-smartphone-be-open-source/|accessdate=October 6, 2014|access-date=October 6, 2014}}</ref><ref name="ars-adblockingevicted">{{Cite web|title=Google evicts ad-blocking software from Google Play store|url=http://arstechnica.com/gadgets/2013/03/google-evicts-ad-blocking-software-from-google-play-store/|accessdate=October 6, 2014|access-date=October 6, 2014}}</ref>
=== Jestaun memória ===
Tanba Android devices normalmente battery-powered, Android mak dezeña hodi jere prosesu atu mantein poder konsumu minimu. Kuandu ida ne'e la uza iha sistema suspends nia funsionamentu tan katak, enkuantu disponivel ba uza imediata duké sei taka tiha, nia la uza battery podér no rekursu CPU
Clear All.<ref name="phonedogtask">{{Cite web|url=http://www.phonedog.com/2011/06/26/the-truth-about-android-task-killers-and-why-you-don-t-need-them/|title=The truth about Android task killers and why you don't need them|publisher=PhoneDog|date=June 26, 2011|accessdate=October 30, 2012|access-date=October 30, 2012}}</ref><ref>{{Cite web|url=http://grail.cba.csuohio.edu/~matos/notes/cis-493/lecture-notes/Android-Chapter03-Life-Cycle.pdf|archiveurl=https://web.archive.org/web/20140222153131/http://grail.cba.csuohio.edu/~matos/notes/cis-493/lecture-notes/Android-Chapter03-Life-Cycle.pdf|title=Lesson 3: Android Application's Life Cycle|date=September 9, 2013|accessdate=April 15, 2014|access-date=April 15, 2014|archivedate=February 22, 2014|author=Victor Matos|publisher=Cleveland State University|work=grail.cba.csuohio.edu|format=PDF}} {{Webarchive|url=https://web.archive.org/web/20140222153131/http://grail.cba.csuohio.edu/~matos/notes/cis-493/lecture-notes/Android-Chapter03-Life-Cycle.pdf |date=February 22, 2014 }}</ref>
Android maneja kandidatura sira rai hela iha memória automatikamente: bainhira memória ki'ik, sistema ne'e sei hahú invisibly no automatikamente taka prosesu la ativu, ne ' ebé hahú ho sira-ne ' ebé mak la ativu ba parseria kontínuu. Lifehacker relata iha tinan 2011 no killers konjunta parte datoluk sira halo estragu barak liu duké di'ak.
=== Realidade virtual ===
Iha Google I/O iha fulan-Maiu tinan 2016, Google anunsia Daydream, realidade virtual plataforma ida-ne ' ebé depende ba smartphone ida no fornese VR kapabilidade liu husi realidade virtual headset no controller ne ' ebé dezeña husi Google rasik ida. Plataforma ne'e harii iha Android hahú ho Android Nougat, no nia susár distinge husi standalone apoiu ba kapabilidade VR. Instalasaun ne ' ebé mak disponivel ba developers, no fó sai iha tinan 2016.
== <span id="HWREQ"></span>Hardware ==
[[Imajen:HTC_Android_T-Mobile_G1.jpg|thumb|250x250px|HTC Mehi ou T-Móvel G1, pesoal fo-sai komersialmente dahuluk ne ' ebé suli Android (2008).<br>
]]
Plataforma hardware prinsipál ba Android mak LIMAN (ARMv7 no architectures ARMv8-A), ho x86 no architectures MIPS mós ofisialmente fó apoiu iha versaun ikus anteriór nian Android. Dezde 5.0 Android "Lollipop", 64-bit variants kona-ba plataforma sira ne ' ebé hotu-hotu hetan suporta aleinde variants 32 bit. Projetu Android-x86 unofficial ne ' ebé fó apoiu ba x86 architectures futuru ba ofisiál apoiu. Arkitetura MIPS mós hetan apoiu antes Google ne ' ebé halo. Iha tinan 2012, devices Android ho Intel processors hahú mosu, inklui uzu ba telefoni no galaxy. Kuandu nia hetan apoiu ba plataforma sira 64-bit, Android uluk halo halai kona-ba x86 64 bit no depois neʼe kona-ba ARM64.
Rekizitu ba montante RAM mínimu ba devices ne ' ebé halai Android 5.1 nivel husi MB 512 nian RAM ba normál refleta screens, atu besik GB 1.8 ba high-density screens. Rekomendasaun ba Android 4.4 ne ' ebé mak atu hetan pelumenus MB 512 RAM nian, enkuantu devices "RAM ki'ik" 340 MB mak montante mínimu presiza katak la inklui memória ne ' ebé dedika ba komponente hardware oin-oin hanesan baseband processor. Android 4.4 ezije ARMv7 32-bit ida, MIPS ka x86 arkitetura processor (rua ikus liu husi portu unofficial), hamutuk ho OpenGL ES 2.0 prosesamentu graphics kompatível unidade ida (GPU). Android apoia OpenGL ES 1.1, 2.0, 3.0, 3.1 no to'o iha ikus boot versaun, 3.2 no Vulkan. Aplikasaun balun bele esplisitamente ezije balu versaun ida OpenGL ES, no hardware GPU adekuadu sei presiza atu halai hirak ne'e nia aplikasaun s.<ref name="android-opengl-2.0">{{Cite web|url=http://source.android.com/devices/graphics.html|title=Android Developers: Graphics|accessdate=November 15, 2013|access-date=November 15, 2013}}</ref>
Android devices enkuadra barak hardware opsionál komponente, ne ' ebé inklui nafatin ka cctv maior parte vídeo, GPS, orientasaun sensors, kontrole gaming ne, accelerometers, gyroscopes, barometers, magnetometers, proximidade sensors, presaun sensors, thermometers, no touchscreens. Komponente hardware balu mak la presiza, maibé sira sai padraun iha devices, hanesan smartphones, sira-nia kategoria balu no rekizitu sira ne ' ebé adisionál aplika se ema ida-ne'e. Hardware seluk balun hetan ona, maibé rekizitu sira iha ona kriteria ka eliminasaun hamutuk. Porezemplu, hanesan Android mak dezenvolve ona hanesan telefone OS, hardware hanesan microphones mak presiza, no ba tempu funsaun telefone sai opsionál. Android ne ' ebé uza hodi ezije camera autofocus ida, ne ' ebé mak kriteria ba camera data-foku ida se ida-ne'e, dezde camera ne ' ebé mak tun no rekizitu hotu bainhira Android hahú uza iha kaixa nian lubuk-leten.
Aleinde halai ba smartphones no galaxy, fornesedores sira ne ' ebé oin-oin la'o Android natively hardware PC regulár ho keyboard no mouse. Hatutan tan ba sira nia disponibilidade ba hardware komersialmente, hanesan PC belun hardware versaun anteriór sira Android mak disponivel livre hosi projetu Android-x86, inklui 4.4 Android liu. Uza emulator Android ne ' ebé mak parte Android SDK, ka tanba sira uza BlueStacks ka Andy, Android bele mós la'o naun-natively x86. Empreza xina Nian sira harii PC no sistema operasaun móvel, Android, bazeia ba "kompete diretamente ho Windows Microsoft no Google Android". Akademia Xinés Enjeñaria nian ne ' ebé nota katak "liu ida dozen" empreza sira customising Android ne ' ebé tuir bandu xina Nian ida kona-ba uza 8 Kona ba governu PCs.<ref>{{Cite web|url=http://www.bbc.com/news/technology-28928369|title=BBC News – China plans new PC operating system in October|work=BBC News|accessdate=November 1, 2014|access-date=November 1, 2014}}</ref><ref>{{Cite web|url=http://online.wsj.com/news/articles/SB10001424127887324539404578342132324098420?mg=reno64-wsj|title=China Criticizes Android's Dominance|author=Paul Mozur|date=March 5, 2013|work=WSJ|accessdate=November 1, 2014|access-date=November 1, 2014}}</ref><ref>{{Cite web|url=http://www.reuters.com/article/2014/08/24/us-china-technology-idUSKBN0GO08H20140824|title=China targets own operating system to take on likes of Microsoft, Google|work=Reuters|accessdate=November 1, 2014|access-date=November 1, 2014}}</ref>
== Dezenvolvimentu ==
[[Imajen:Android_green_figure,_next_to_its_original_packaging.jpg|right|thumb|Android green figure, next to its original packaging]]
Android dezenvolve iha privadu husi Google to'o ikus mudansa no aktualizasaun sira besik ona atu sai livre ona, iha espesialidade kódigu fonte mak disponível iha ema hotu nia oin. Kódigu fonte ida ne'e sei deit ne'ebe la muda iha devices selesionadu, normalmente Nexus devices oin-oin. Kódigu fonte ne'e, hodi adapta husi manufacturers ekipamentu original (OEMs) atu partisipa iha sira-nia hardware. Kódigu fonte android nian la inklui iha kondutór pesoal compete dala barak ne ' ebé presiza ba komponente hardware balu.<ref name="android1">{{Cite web|title=Building for devices|work=Android Open Source Project|accessdate=December 20, 2012|access-date=December 20, 2012|url=http://source.android.com/source/building-devices.html}} {{Webarchive|url=https://web.archive.org/web/20120107123505/http://source.android.com/source/building-devices.html |date=January 7, 2012 }}</ref>
Idistrito tinan 2007, ministériu Android matak mak dezeña ba Google husi graphic designer Irina Blok. Ekipa dezeñu ne'e diretamente ho projetu ida atu kria prestíjiu ida-ne ' ebé obriga identifiable ho inkluzaun espesífiku robot ida iha dezeñu finál. Hafoin lubuk ida dezeñu evolusaun bazeia ba siénsia-ficção no fatin filme, ekipa ikusmai buka inspirasaun husi símbolu umanu iha odamatan restroom no hatudu iha figura ba investimentu robot ida. Hanesan Android loke-mai, nia mak konkorda katak ministériu tenke nune‟e mós, no hahú kedas ninia lansamentu iha variasaun rihun ba rihun iha dezeñu orijinál reinterpreted ona ministériu matak<ref name="androidlogo4"><cite class="citation news">Kennedy, Pagan (October 11, 2013). </cite></ref>
=== Tabela atualizasaun ===
Google fornese atualiza adisional ne ' ebé boot ba Android kada fulan neen ba sia, ho naran confectionery-pontu, ne 'ebé devices ne' ebé barac barak liu mak bele simu kona-ba anin. Imprensa liu husi barak liu mak Android 7.0 "Nougat".
Kompara ho ninia prinsipál rivaál móvel operasaun sistema, iOS, aktualizasaun Android normalmente to'o devices oin-oin ho atrazu sira ne ' ebé signifikativu. Exetu se devices ho preokupasaun Google Nexus hirak, aktualizasaun sira dala barak to'o fulan nia laran hafoin imprensa versaun foun, ka la iha ema hotu-hotu. Ida ne'e parsialmente tanba iha estensivu variedade konsideradu iha hardware nian devices Android, ne ' ebé-ne ' ebé realiza ida-idak tenke espesifikamente adaptadu, hanesan kódigu fonte Google ofisiál de'it halai kona-ba sira-nia devices Nexus. Porting Android ba hardware espesífiku, hanesan prosesu tempu - no rekursu-konsumu ba pesoal manufacturers, ne ' ebé fó prioridade ba sira-nia devices karakterístiku no dala barak sai ema sira ne ' ebé boot husi. Tan neʼe, smartphones boot beibeik la halo nafatin atualizasaun ba se manufacturer nian hola desizaun ida ne'e la folin-boot ba investimentu iha rekursu, maske pesoal ne ' ebé mak kompatível. Problema ida ne'e, tendensia bainhira manufacturers customize Android ho sira-nia eletrónikus no apps, ne ' ebé tenke reapplied komunikadu ida-idak ne ' ebé foun. Atrazu sira adisionál bele introduz husi karreira wireless ne ' ebé, hafoin simu aktualizasaun manufacturers, tan customize no preokupasaun hirak Android ba sira-nia nesesidade no halo teste estensivu kona-ba sira-nia rede molok haruka realiza ba utilizadores internet
<ref name="alliance">{{Cite web|last=Cunningham|first=Andrew|url=http://arstechnica.com/gadgets/2012/06/what-happened-to-the-android-update-alliance/|title=What happened to the Android Update Alliance?|publisher=Ars Technica|date=June 27, 2012|accessdate=September 15, 2012|access-date=September 15, 2012}}</ref>
Falta apoiu fa'an impaktu husi manufacturers no karreira iha ona halekar criticized husi grupu konsumidór no teknolojia komunikasaun sosiál. Komentadór balun nota katak indústria, iha insentivu finanseiru ida atu atualiza devices sira, hanesan falta aktualizasaun ba devices eziste halo sosa foun sira, hanoin deskreve hanesan "hasaʼe". Ema kesar katak metodu distribuisaun ba aktualizasaun mak komplikadu tanba de'it manufacturers no karreira iha dezeñu neʼe dalan. Iha tinan 2011, Google halo parseria ho lubuk ida kona-ba indústria jogadór anunsia proposta "Android Atualizasaun Aliansa ida", ne ' ebé pledging atu salva aktualizasaun tempu oportunu ba pesoal hotu-hotu ba fulan 18 tiha husi kadeia ninian; maibé, iha tiha kona-ba aliansa neʼe hahú fó sai ninia liafuan ofisiál seluk.<ref name="alliance"/><ref>{{Cite web|url=http://blogs.computerworld.com/android/23528/android-upgrade-standard|title=It's time to rethink the Android upgrade standard|author=JR Raphael|publisher=Computerworld Inc.|date=February 13, 2014|accessdate=March 6, 2014|access-date=March 6, 2014}} {{Webarchive|url=https://web.archive.org/web/20140306084114/http://blogs.computerworld.com/android/23528/android-upgrade-standard |date=March 6, 2014 }}</ref>
Iha tinan 2012, Google hahú decoupling aspetu balu kona-ba sistema operasaun (liu-liu prinsipál kandidatura) tan neʼe, sira bele informa liuhosi Google Halimar loja Ne‟e la haree ba sistema operasaun. Komponente hirak ne'e, Google Halimar Servisu, ida ne'e hanesan nivel sistema taka-fonte prosesu, fornese APIs Google servisu, ne ' ebé ona automatikamente kona-ba devices kuaze hotu-hotu ne ' ebé suli versaun Android 2.2 no aas liu. Ho mudansa hirak-ne'e, Google bele aumenta functionality operasaun sistema foun liu husi Servisu ne ' ebé Halimar no aktualizasaun sira-nia aplikasaun la fahe realiza ida ba sistema operasaun ne'e rasik. Hanesan rezultadu, Android 4.2 no 4.3 tama relativamente menus hasoru uzuáriu mudansa, foka liu ba mudansa menor no plataforma progresu.<ref name="ars-irongrip"/><ref name="ars-googleplayservices">{{Cite web|title=Balky carriers and slow OEMs step aside: Google is defragging Android|url=http://arstechnica.com/gadgets/2013/09/balky-carriers-and-slow-oems-step-aside-google-is-defragging-android/|work=Ars Technica|accessdate=September 3, 2013|access-date=September 3, 2013}}</ref>
Iha fulan-Maiu tinan 2016, anunsia katak Google hanoin "shaming" smartphone na'in ne ' ebé falla atu husik livre atualizadu versaun anteriór sira Android ba devices sira.<ref>{{Cite web|url=https://www.yahoo.com/tech/google-plans-shame-smartphone-makers-083035486.html|title=Google to shame smartphone makers to fix one of the problems with Android|last=|first=|date=May 26, 2016|accessdate=May 26, 2016|access-date=May 26, 2016}}</ref>
=== Linux kernel ===
Kernel android nian bazeia ba ramu apoiu (LTS) longu prazu Linux kernel ida. Desde fulan Abril tinan 2014, Android devices prinsipalmente uza versaun anteriór 3.4, 3.10 ka 3.18 Linux kernel. Versaun kernel espesífiku ne ' ebé depende ba pesoal Android atuál no ninia plataforma hardware; Android uza oin-oin kernel versaun anteriór hahú kedas iha versaun 2.6.25 ne ' ebé uza iha Android 1.0.
<ref name="kernels">{{Cite web|url=http://elinux.org/Android_Kernel_Versions|title=Android Kernel Versions|date=July 7, 2011|accessdate=November 3, 2013|access-date=November 3, 2013}}</ref>
Variant android nian kona-ba Linux kernel iha tan arkitetónika ho mudansa ne ' ebé implementa hosi Google liʼur ne'e típiku Linux kernel dezenvolvimentu siklu, hanesan komponente hanesan Binder, ashmem, pmem, logger, wakelocks no tratamentu oin-oin trigu-nian-memória (OOM) nian. Karakterístika balun ne ' ebé Google kontribui atu fila fali ba kernel Linux, liu-liu podér jestaun ne'ebe hanaran "wakelocks", sira la simu developers mainline kernel parsialmente tanba sira sente katak Google mak la hatudu kualkér intensaun atu mantein kódigu rasik. Google fó sai iha Abril 2010 katak sira sei selu funsionáriu rua atu servisu ho komunidade kernel Linux, maibé Greg Kroah-Hartman, ba atuál Linux kernel maintainer ba ramu estavel, hatete iha Dezembru 2010 katak nia mak preokupasaun katak Google mak la koko atu halo mudansa kódigu sira ne ' ebé inklui iha mainstream Linux. Balun developers Google Android hinted katak "ekipa Android mak atu fó-han ho prosesu ne'e," tanba sira ekipa ki'ik oan ida, no iha servisu ne ' ebé urjente liu atu halo kona-ba Android.
<ref>{{Cite web|url=http://blogs.computerworld.com/16900/android_linux_kernel_fight_continues|title=Android/Linux kernel fight continues|publisher=[[Computerworld]]|author=Steven J. Vaughan-Nichols|date=September 7, 2010|accessdate=February 20, 2012|access-date=February 20, 2012}}</ref>
Iha fulan Agostu 2011, Torvalds, lino, hatete katak "ikusmai Android no Linux fila fali ba kernel ida-ne ' ebé komún, maibé karik la duni ba tinan haat lima nia laran". Iha fulan-Dezembru tinan 2011, Greg Kroah-Hartman anunsia patches hahú Android Mainlining Projetu nian, ne ' ebé iha objetivu atu tau kondutór Android balun, no karakterístika fila ba Linux kernel, hahú iha Linux 3.3. Linux inklui kapabilidade autosleep no wakelocks iha 3.5 kernel, hafoin hala'o tiha tentativa uluk nian ne ' ebé barak iha merger. Interfaces nian maka hanesan maibé implementasaun Linux explorasaun permite ba rua ne ' ebé diferente suspende modu: memória (tradisionál ba suspende katak Android uza), no disk (hibernate, mós hatene kona-ba desktop). Google mantein repository kódigu públiku ne ' ebé sira fó sira-nia servisu esperimentál hodi halo hikas fali Android pontu ba ikus estavel Linux versaun anteriór.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=MTMxMzc|title=Google Working On Android Based On Linux 3.8|date=February 28, 2013|accessdate=February 28, 2013|access-date=February 28, 2013}}</ref><ref>{{Cite web|url=http://www.pocketdroid.net/google-working-on-experimental-linux-kernel-3-10-for-android/|title=Google working on experimental Linux Kernel 3.10 for Android|publisher=Pocketdroid.net|date=|accessdate=September 3, 2013|access-date=September 3, 2013}}</ref>
Armazenamentu ne ' ebé akontese iha Android devices mak mosu ba partitions oin-oin, hanesan /system ba sistema operasaun ne'e rasik, no /data ba uzuáriu instalasaun dadus no sira-nia aplikasaun. Kontrariu ho distribuisaun Linux desktop pesoal Android nain sira la abut ne ' ebé fó asesu ba sistema operasaun no partitions sensitivu hanesan /system sira lee deit. Maibé, asesu abut bele halo servisu aproveita buat neʼebé seguransa defeitu iha Android, ne ' ebé mak uza beibeik husi komunidade fonte-nakloke atu hametin kapabilidade sira devices, maibé mós hosi parte basá instala virus no malwarel.<ref>{{Cite web|author=Jools Whitehorn |url=http://www.techradar.com/news/phone-and-communications/mobile-phones/android-malware-gives-itself-root-access-1062294|title=Android malware gives itself root access | News|publisher=TechRadar|date=|accessdate=September 15, 2012|access-date=September 15, 2012}}</ref>
Android mak distribuisaun Linux ida tuir Fundasaun Linux, Google nia fonte-nakloke xefe Chris DiBona no jornalista sira ne ' ebé oin-oin. Ema seluk, hanesan Google engineer Patrick Brady, hatete katak Android mak la Linux iha sentidu distribuisaun Linux Unix-hanesan tradisionál nian; Android la inklui GNU C Biblioteka (ne'e uza Bionic nu'udar ida biblioteka alternativa C) no balu kona-ba komponente seluk ne ' ebé hetan normalmente iha distribuisaun Linux.<ref name="APIs">{{Cite web|last=Paul|first=Ryan|url=http://arstechnica.com/gadgets/2009/02/an-introduction-to-google-android-for-developers/|title=Dream(sheep++): A developer’s introduction to Google Android|work=[[Ars Technica]]|date=February 24, 2009|accessdate=April 3, 2013|access-date=April 3, 2013}}</ref>
=== Software stack ===
[[Imajen:Android-System-Architecture.svg|right|thumb|350x350px|Android's architecture diagram]]
Husi parte Linux kernel, iha neʼebá mak middleware, biblioteka no APIs ne ' ebé hakerek iha C, no instalasaun sira-nia aplikasaun ne ' ebé suli kona-ba kuadru sira-nia aplikasaun ida ne ' ebé inklui biblioteka Java-kompatível. Dezenvolvimentu Linux kernel kontinua to'o Android seluk fonte kódigu baze
To'o versaun 5.0, Android uza Dalvik nu'udar makina virtual prosesu ida ho baze iha sira-neʼe hetan-iha-tempu (JIT) kontein halai Dalvik "dex-kódigu" (Dalvik Executable), ne ' ebé mak normalmente katak: husi Java bytecode. Tuir liña-baze JIT prinsípiu sira, aleinde bainhira interpreta artigu sira kódigu sira-nia aplikasaun, maioria Dalvik ezekuta ne'e kontein no ezekusaun direitus kona-ba kódigu selesionadu ne ' ebé hala'o beibeik populasaun ("ain-fatin") tempu ida-idak ne ' ebé aplikasaun ida ne'e lansa tiha ona. Android 4.4 aprezentadu Runtime Android (ARTE) hanesan foun runtime ambiente ida, ne ' ebé uza ahead kona-ba-dala (AOT) kontein totalmente compile bytecode aplikasaun ba makina kódigu ba instalasaun ida nia aplikasaun. Iha Android 4.4, ARTE akontese esperimentál ida no la bele hala'o husi onorárius; ida-neʼe nia oan mak opsaun runtime ne ' ebé de'it, iha versaun boot tuirmai 5.0 Android.
<ref>{{Cite web|url=http://www.androidpolice.com/2013/11/06/meet-art-part-1-the-new-super-fast-android-runtime-google-has-been-working-on-in-secret-for-over-2-years-debuts-in-kitkat/|title=Meet ART, Part 1: The New Super-Fast Android Runtime Google Has Been Working On In Secret For Over 2 Years Debuts In KitKat|first=Cody|last=Toombs|work=Android Police|date=November 6, 2013|accessdate=April 27, 2014|access-date=April 27, 2014}}</ref>
Ba ninia biblioteka Java, plataforma Android uza subkonjuntu husi projetu Armonia Apache discontinued agora. Iha fulan-Dezembru tinan 2015, Google anunsia katak versaun ne ' ebé tuirmai nian Android sei muda implementasaun Java bazeia ba OpenJDK .<ref name="vb-openjdk">{{Cite web|title=Google confirms next Android version won’t implement Oracle’s proprietary Java APIs|url=http://venturebeat.com/2015/12/29/google-confirms-next-android-version-wont-use-oracles-proprietary-java-apis/|accessdate=December 30, 2015|access-date=December 30, 2015}}</ref>
Android nian padraun C biblioteka, Bionic, tiha ona husi Google espesifikamente ba Android, hanesan derivation ida kona-ba BSD nian padraun C biblioteka kódigu. Ne'e sei Bionic rasik ho oin-oin boot karakterístika espesífika ba Linux kernel. Rezultadu prinsipál uza Bionic duké GNU C Biblioteka (glibc) ka uClibc sira ninia pegada runtime ki'ik, no buka ba CPUs frekuénsia ki'ik. Iha tempu hanesan, Bionic mak lisensa tuir BSD lisensa, ne ' ebé Google hetan adekuadu liu ba jeral modelu lisensiamentu Android nian.
<ref name="brady_dissects_android">{{Cite web|url=http://www.zdnet.com/blog/burnette/patrick-brady-dissects-android/584|title=Patrick Brady dissects Android|first=Ed|last=Burnette|work=[[ZDNet]]|date=June 4, 2008|accessdate=April 27, 2014|access-date=April 27, 2014}}</ref>
Ho objetivu ba modelu lisensiamentu oin-oin ida, ba tinan 2012, nia rohan Google switched Bluetooth stack iha Android husi BlueZ GPL lisensa ba BlueDroid lisensa Apache.
<ref>{{Cite web|url=https://lwn.net/Articles/597293/|title=Returning BlueZ to Android|date=May 6, 2014|publisher=[[LWN.net]]}}</ref>
Android la iha Sistema Janela X direitus husi onorárius, la halo ida-neʼe apoia konjuntu ne ' ebé kompletu kona-ba padraun GNU biblioteka. Ida-neʼe halo ida-neʼe susar ba portu eziste biblioteka atu Android, ka aplikasaun Linux to'o versaun r5 Kit Android Dezenvolvimentu Direitus nian fó apoiu ba kandidatura sira ne ' ebé hakerek ona kompletamente iha C ka C++. Biblioteka sira ne ' ebé hakerek iha C bele mós uza iha aplikasaun tama shim ida-ne ' ebé ki'ik no uzu ba JNI.
<ref name="sdlandroid">{{Cite web|url=http://www.libsdl.org/tmp/SDL/README.android|title=Simple DirectMedia Layer for Android|work=[[Simple DirectMedia Layer|SDL]]|date=August 12, 2012|archiveurl=https://web.archive.org/web/20120604080429/http://www.libsdl.org/tmp/SDL/README.android|archivedate=June 4, 2012}} {{Webarchive|url=https://web.archive.org/web/20120604080429/http://www.libsdl.org/tmp/SDL/README.android |date=June 4, 2012 }}</ref>
Since Marshmallow, "Toybox", a collection of command line utilities (mostly for use by apps, as Android doesn't provide a command line interface by default), replaced similar "Toolbox" collection.<ref name="toyboxmarsmallow">[https://lwn.net/Articles/629362/ Android gets a toybox] on lwn.net by Jake Edge (January 14, 2015)</ref>
Android iha operasaun sistema sira seluk, Trusty OS, iha ne'e, hanesan parte ida kona-ba "Trusty" "software komponente apoiu Trusted Ezekusaun Ambiente ida (TEE) kona-ba devices móvel." "Trusty no Trusty API sai objetu ba mudansa. [..] Kandidatura ba Trusty OS bele hakerek iha C/C++ (C++ apoiu ne'e limitadu), no sira hetan asesu ba biblioteka C ki'ik ida. [..] Kandidatura Trusty hotu-hotu ne ' ebé mak ida-threaded; multithreading iha Trusty userspace daudaun ne'e mak unsupported. [..] Parte datoluk sira-nia aplikasaun dezenvolvimentu la hetan apoiu ba"versaun ne ' ebé oras ne'e, no instalasaun sira ne ' ebé suli kona-ba OS no processor tanba ida-neʼe, sira halai ba"DRM enkuadramentu ba konteúdu protesaun. [..] Sira seluk uza barak ba TEE ida hanesan pagamentu móvel, bankária ne ' ebé seguru, encryption disk tomak, fatór sira ne ' ebé multi authentication, pesoal reset protesaun, protesaun replay persistente armazenamentu, wireless hatudu ("dada") konteúdu protesaun, PIN ne ' ebé seguru no fingerprint prosesamentu, no mós identifika malware."<ref>{{Cite web|url=https://source.android.com/security/trusty/index.html|title=Trusty TEE}}</ref>
=== <span id="AOSP"></span>Open-source community ===
Android iha komunidade ida ne ' ebé ativu developers no enthusiasts ne ' ebé uza kódigu fonte Android Nakloke Fonte Projetu (AOSP) atu dezenvolve no fahe sira nia versaun anteriór ho sistema operasaun. Imprensa dezenvolve komunidade hirak ne'e dala barak lori karakterístika foun no aktualizasaun ba devices lalais liu fali liu hosi kanál ofisiál manufacturer/karreira, ho nível ida ne ' ebé bele halo komparasaun kona-ba kualidade; fó apoiu nafatin ba devices boot ne ' ebé la simu aktualizasaun ofisiál sira; ka halo Android devices ne ' ebé mak ofisialmente lansa halai operasaun sistema sira seluk, hanesan HP TouchPad. Dala barak, komunidade imprensa mai rooted pré no inklui retifika ne ' ebé fornese hosi vendor orijinál, hanesan kapasidade atu overclock ka durante / undervolt processor pesoal nian. CyanogenMod hanesan firmware komunidade sira ne ' ebé uza barak liu, ho fundasaun ida hanesan ba ema seluk lubuk ida. Android-x86 mak versaun Android ba compatibles PC BALUN. Iha mós ona tentativa ho degrau oi-oin kona-ba susesu ba portu Android ba iPhones, liu-liu ba iDroid Projetu.
<ref>{{Cite web|url=http://idroidproject.org/|title=Main Page|work=idroidproject.org|accessdate=August 1, 2015|access-date=August 1, 2015}}</ref>
Istorikamente, manufacturers pesoal no karreira móvel normalmente ona unsupportive firmware terseiru dezenvolvimentu nian. Manufacturers hato'o preokupasaun kona-ba funsionamentu ne‟ebé devices ne ' ebé suli unofficial software no kustu apoiu ne ' ebé rezulta husi ida-neʼe. Aleinde ne'e, atu modifika firmwares hanesan CyanogenMod dala ruma fó karakterístika, hanesan tethering, ba karreira sei la husik siciedade. Hanesan rezultadu, obstákulu téknika sira ne ' ebé inklui bootloaders xave metin hela no asesu ne ' ebé limitada ba permissions abut sira komún iha devices barak. Maibé, hanesan instalasaun ne ' ebé komunidade dezenvolve tiha ona populár, no tuir mai ne'e deklarasaun ida husi Librarian Kongresu Estadus Unidus ne ' ebé husik halo ba "jailbreaking" devices móvel, manufacturers no karreira iha softened sira-nia pozisaun kona-ba dezenvolvimentu terseiru, ho balun, inklui HTC, Motorola, Tablet no Sony, fó apoiu no fó aten-brani dezenvolvimentu. Nu'udar rezultadu hosi ida-neʼe, tempu ba tempu nesesidade hodi kontorna hardware restrisaun ba instala unofficial firmware ona lessened hanesan devices lubuk ida mak shipped ho unlocked ka unlockable bootloaders, hanesan ho Nexus oin-oin kona-ba uzu ba telefoni, maske normalmente presiza katak uzuáriu renunsia devices sira garante atu halo ida-neʼe. Maibé, maske manufacturer aseitasaun, karreira balun iha [[Estadu Naklibur Sira Amérika Nian|estadus unidus]] AMÉRIKA-sei ezije katak uzu ba telefoni xave, frustrating developers no kliente.<ref name="verge-c">{{Cite web|last=Kopstein|first=Joshua|url=http://www.theverge.com/2012/11/20/3666668/access-denied-android-unlocked-bootloaders|title=Access Denied: why Android's broken promise of unlocked bootloaders needs to be fixed|publisher=The Verge|date=November 20, 2012|accessdate=November 24, 2012|access-date=November 24, 2012}}</ref>
== <span id="APP-OPS"></span>Seguransa no privasidade ==
=== Ámbitu fiskalizasaun ho instituisaun públika sira ===
Hanesan parte husi disclosures fiskalizasaun masa 2013 luan liu ida-neʼe mak hatudu iha fulan Setembru tinan 2013 katak ajénsia intelijénsia Amerikanu no Britániku, Ajénsia Seguransa Nasionál (NSA) no Governu Komunikasaun kuartél Jerál (GCHQ), respetivamente, iha asesu ba dadus uzuáriu kona-ba iPhone, BlackBerry no Android devices. Sira ne'ebe bele lee iha informasaun smartphone kuaze hotu-hotu, inklui SMS, fatin, emails no haree. Iha fulan-Janeiru tinan 2014, liután relatóriu sira hatudu ajénsia intelijénsia kapabilidade ba tendensia informasaun pesoál ne ' ebé fó ukun-fuan iha Internet rede-servisu sosiál no aplikasaun populár seluk hanesan Manu hirus Tebes, ne ' ebé halibur informasaun pesoál sira-nia uzuáriu tanba razaun komersiál advertising no seluk. GCHQ ona, tuir Ema Nian, matadalan wiki-estilu apps oin-oin no rede publisidade no oin-oin dadus ne ' ebé bele siphoned husi ida-idak. Katak semana, developer Manu Hirus Finlándia Rovio anunsia katak ida-neʼe mak reconsidering ninia relasaun ho ninia plataforma publisidade tuir revelations hirak ne'e, no bolu indústria ne ' ebé luan liu atu halo hanesan.<ref>{{Cite web|url=http://www.theguardian.com/world/2014/jan/28/angry-birds-rovio-respond-nsa-spying-revelations|title=Angry Birds firm calls for industry to respond to NSA spying revelations | World news|date=January 28, 2014|publisher=theguardian.com|author=James Ball|accessdate=February 2, 2014|access-date=February 2, 2014}}</ref>
Dokumentu hirak ne'e hatudu esforsu ida-ne ' ebé tan intelijénsia ajénsia sira ba tendensia buskas Mapa Google no queries ne ' ebé aprezenta husi smartphones Android no seluk atu halibur informasaun fatin iha maior parte. NSA no GCHQ insiste sira-nia atividade ne ' ebé mak hodi kumpre lei hotu-hotu relevante internasionál no doméstika, maski Ema ida ne ' ebé hateten "disclosures ikus bele mos aumenta aumenta preokupasaun públiku kona-ba oinsá setór teknolojia halibur no uza informasaun, liu-liu ba sira neʼebé iha liʼur estadus UNIDUS, ne ' ebé bele goza protesaun privasidade uitoan de'it kompara ho Americans.""<ref name="angrybirdsatgchq">{{Cite web|url=http://www.theguardian.com/world/2014/jan/27/nsa-gchq-smartphone-app-angry-birds-personal-data|title=Angry Birds and 'leaky' phone apps targeted by NSA and GCHQ for user data | World news|date=|publisher=theguardian.com|author=James Ball|accessdate=February 2, 2014|access-date=February 2, 2014}}</ref>
=== Ameasa seguransa komun ===
Peskiza husi seguransa empreza Mikro Tendénsia lista siciedade abuzu funsaun nu'udar tipu komún hosi malware Android, ne ' ebé iha mensajen testu sira haruka hosi uzu ba telefoni tanba númeru telefone siciedade taxa ne ' ebé laiha konsentimentu ka koñesimentu ne ' ebé mós kona-ba uzuáriu. Malware seluk hatudu iklan unwanted no intrusive kona-ba pesoal, ka haruka informasaun pesoál ba unauthorised terseira parte sira. Ameasa seguransa ne ' ebé iha Android tuir relatoriu aumenta terrenu indústrial; maski nune'e, enjeñeiru Google iha argumentu katak ameasa malware no apela ba Android mak sai tendénsia hosi empreza seguransa ba razaun sira ne ' ebé komersiál, no akuza indústria seguransa husi kantadór tauk atu fa'an sasan iha instalasaun protesaun virus utilizadores internet. Google mantein katak malware perigozu tebes duni asinatura, no levantamentu ida ne ' ebé hala'o husi F-Asegura ne ' ebé hatudu katak 0.5% de'it hosi malware Android ne ' ebé relata mai husi loja Halimar Google.<ref>{{Cite web|url=http://www.phonearena.com/news/Android-malware-perspective-only-0.5-comes-from-the-Play-Store_id36696|title=Android malware perspective: only 0.5% comes from the Play Store|date=|publisher=Phonearena.com|accessdate=March 14, 2013|access-date=March 14, 2013}}</ref>
Hotu android nian mak hanesan problema ida ba seguransa, tanba patches ba bugs ne ' ebé hetan iha sistema operasaun prinsipál dala barak la hetan uzuáriu devices boot no ki'ik-folin. Lubuk ida kona-ba peskizadór hatete katak fallansu fornesedores sira hodi apoia devices boot ho patches no aktualizasaun husik devices ativu liu 87% vulneravel. Maski nune'e, natureza fonte-nakloke Android permite seguransa kontraente sira atu foti devices ne ' ebé eziste no adapta ba uza ho seguru. Porezemplu, Tablet serbisu tiha ona ho Dynamics Jerál liu husi sira-nia sosa Labs Kernel Nakloke atu harii Jelly Bean husi parte sira-nia microvisor martelu ba projetu "Knox".<ref>{{Cite web|url=http://www.theregister.co.uk/2013/02/28/general_dynamics/|title=Air-to-ground rocket men flog top-secret mobe-crypto to Brad in accounts|date=February 28, 2013|publisher=The Register|accessdate=August 8, 2013|access-date=August 8, 2013}}</ref><ref>{{Cite web|url=http://www.nytimes.com/2013/02/28/technology/samsung-armors-android-to-take-on-blackberry.html|title=Samsung Armors Android to Take On BlackBerry|date=February 28, 2013|work=The New York Times}}</ref>
Android smartphones iha kapasidade atu fó fatin ba rede Wi-Fi asesu pontu, ne ' hanesan uzuáriu telefone la'o hamutuk, atu harii baze dadus ezisti hatama fatin fíziku ba rihun ba pontu asesu ne'e. Hirak ne'e baze dadus benefisiariu transferensia forma mapa eletróniku atu nafatin smartphones, ne ' ebé permiti sira atu halai apps hanesan Foursquare, Holanda Google, Facebook Fatin, no atu salva ads ne ' ebé bazeia ba fatin. Terseiru monitorizasaun software ne ' ebé hanesan TaintDroid ida akadémiku peskiza finansia projetu, bele, iha kazu balun, identifika bainhira mak atu haruka ba informasaun pesoál nian husi aplikasaun ba servidór remota.
<ref><cite class="citation news">Ganapati, Priya (September 30, 2010). </cite></ref>
=== Seguransa téknika karakterístika ===
Kandidatura android halai sandbox ida, área izoladu ida kona-ba sistema ne ' ebé la iha asesu ba sira seluk kona-ba rekursu sira ba sistema ida ne'e, exetu se permissions asesu ne'e esplisitamente fó husi uzuáriu bainhira sira-nia aplikasaun, harii ona. Molok instaladora ida nia aplikasaun, Halimar Loja hatudu permissions obrigasaun hotu-hotu: ida mós bele presiza atu permite vibration ka salva dadus ba kartaun SD ida, porezemplu, maibé la presiza atu lee mensajen SMS ka hetan asesu ba phonebook. Depois de halo revizaun permissions hirak ne'e, uzuáriu sira bele hili atu aprova ka rejeita sira, instaladóra aplikasaun se sira simu. Sistema sandboxing no permissions lessens impaktu vulnerabilidade no bugs iha kandidatura, maibé developer konfuzaun no dokumentasaun ne ' ebé limitadu rezulta iha aplikasaun ne ' ebé husu routinely permissions la nesesariu, ne ' ebé hamenus nia efikásia. Google ona no dudu pontu situasaun ba Android Apps Verifika diak, ne ' ebé sei hala'o agora iha antesedénsia atu identifika prosesu basá no crack sira.
<ref>{{Cite web|author=Ojas Kulkarni|url=http://www.gadgetcluster.com/2014/04/google-goes-hard-on-malware-for-android-platform/|title=Google goes hard on Malware for Android platform|publisher=Gadgetcluster.com|date=April 10, 2014|accessdate=April 15, 2014|access-date=April 15, 2014}}</ref>
Iha Android 6.0 Marshmallow, sistema permissions muda atu permite uzuáriu atu kontrola permissions aplikasaun ida ida-idak, ba bloku kandidatura se kaan hosi asesu ba pesoal sira-nia kontaktu, kalendáriu, telefone, sensors, SMS, fatin, microphone no camera. Kontrolu lisensa tomak ne'e hala'o ho abut asesu ba pesoal.
<ref>{{Cite web|url=http://www.androidpolice.com/2013/06/23/xprivacy-gives-you-massive-control-over-what-your-installed-apps-are-allowed-to-do/|title=<nowiki>[New App</nowiki>] XPrivacy Gives You Massive Control Over What Your Installed Apps Are Allowed To Do|publisher=Androidpolice.com|date=June 23, 2013|accessdate=February 19, 2014|access-date=February 19, 2014}}</ref>
Google uza Google Bouncer malware scanner atu tau matan ba no scan kandidatura ne ' ebé iha Loja Halimar Google. Hakarak atu harii apps bandeira no la uzuáriu sira kona-ba kualkér ameasa potensiál ho aplikasaun ida molok sira download ida-neʼe. Versaun android 4.2 Jelly Bean fó sai iha tinan 2012, ho karakterístika seguransa ne ' ebé maka'as liu, inklui scanner malware ida ne ' ebé harii iha sistema ne'e, ne ' ebé serbisu ho Ativu Google teatru maibé bele scan apps ona husi fonte terseiru nune'e, no sistema alerta ida ne ' ebé lai uzuáriu bainhira app ida ne ' ebé koko atu haruka mensajen testu siciedade taxa, blocking mensajen se uzuáriu esplisitamente authorises ida-neʼe. Oin-oin seguransa kompañia, hanesan Seguransa Móvel Lookout, AVG Teknolojia no McAfee, mak livre software antivirus ba Android devices. Instalasaun ida ne'e la efetivu hanesan sandboxing mós aplika ba kandidatura hirak ne'e, limita sira-nia abilidade atu scan sistema ne ' ebé kle'an liu ba ameasa.
<ref name="extremetech">{{Cite web|url=http://www.extremetech.com/computing/104827-android-antivirus-apps-are-useless-heres-what-to-do-instead/2|title=Android antivirus apps are useless, here's what to do instead|accessdate=April 10, 2012|access-date=April 10, 2012}}</ref><ref>{{Cite web|url=http://www.androidauthority.com/state-antivirus-android-523684/|title=The State of Antivirus for Android|date=September 14, 2014|accessdate=November 18, 2014|access-date=November 18, 2014|author=Jason Nova}} {{Webarchive|url=https://web.archive.org/web/20170621003547/http://www.androidauthority.com/state-antivirus-android-523684/ |date=June 21, 2017 }}</ref>
Iha fulan Agostu tinan 2013, Google fó Android Pesoal Jestor (ADM), komponente ida ne ' ebé utilizadór sira atu lakohi akompaña, nafatin, no nuʼudar sasin ba sira-nia pesoal Android liuhosi eletrónikus web ida. Iha fulan-Dezembru tinan 2013, Google fó ADM hanesan aplikasaun Android ida kona-ba loja Halimar Google, ne ' ebé disponivel ba devices ne ' ebé suli Android versaun 2.2 no aas liu.
<ref>{{Cite web|url=http://www.andromint.com/download-apk-android-device-manager-available-play-store/|title=Android Device Manager Now Available in Play Store|date=December 12, 2013|publisher=andromint.com|accessdate=December 16, 2013|access-date=December 16, 2013}} {{Webarchive|url=https://web.archive.org/web/20131216054949/http://www.andromint.com/download-apk-android-device-manager-available-play-store/ |date=December 16, 2013 }}</ref><ref>{{Cite web|url=http://www.engadget.com/2013/12/11/android-device-manager/|title=Android Device Manager now available for downloading on Google Play|date=December 11, 2013|publisher=engadget.com|accessdate=December 16, 2013|access-date=December 16, 2013}}</ref>
== Lisensiamentu ==
Kódigu fonte ba Android mak fonte-nakloke: ida mak dezenvolve ona iha privadu husi Google, ho fonte kódigu husik livre ema hotu nia oin kuandu versaun foun ida kona-ba Android publika. Google publika kódigu (inklui stacks rede no telephony) tuir versaun naun-copyleft Lisensa Apache 2.0 barak liu. ne'ebe permite levantamentu no hikas distribuisaun. Lisensa la fó direitu atu iha "Android" trademark, manufacturers pesoal tan neʼe, no karreira wireless ona atu fó lisensa ba projetu ida-neʼe husi Google kontratu sira ne ' ebé individuál. Mudansa kernel Linux asosiadu livre ona tuir copyleft Lisensa Públiku Jerál GNU versaun 2, ne ' ebé dezenvolve ona husi Aliansa Handset Nakloke, ho fonte kódigu disponibiliza hotu dala ida. Normalmente, Google kolabora ho manufacturer hardware ida atu prodús pesoal liuhusi emblema: (parte oin-oin Nexus) ho versaun foun ba Android, depois halo kódigu fonte disponivel depois pesoal katak iha livre ona. Honeycomb livre ba imprensa Android de'it sira-ne ' ebé mak la kedas sai disponivel hanesan fonte kódigu 3.0 ai-kabelak deit. Razaun ne'e, tuir Andy Rubin iha postu blog Android ofisiál ida, ne'e tanba Honeycomb nia halai tama ba produsaun Motorola Xoom, no sira lakohi parte datoluk sira hodi kria ida "esperiénsia uzuáriu sira ne ' ebé aat ne ' ebé loos" hodi buka atu tau ba smartphones versaun Android ne ' ebé destina ba galaxy ida.<ref>{{Cite web|author=Jerry Hildenbrand|url=http://www.androidcentral.com/google-not-open-sourcing-honeycomb-says-bloomberg|title=Honeycomb won't be open-sourced? Say it ain't so!|publisher=Androidcentral.com|date=March 24, 2011|accessdate=February 16, 2012|access-date=February 16, 2012}}</ref>
De'it baze Android operasaun sistema nian (inklui kandidatura balun) mak fonte-nakloke software, konsidera katak devices Android barak mak ró-ahi ho montante ida ne ' ebé substantivu kona-ba instalasaun compete, hanesan Servisu Móvel Google, ne ' ebé inklui mós aplikasaun hanesan Loja Halimar Google, Buka Google, no Google Halimar Servisu – ozonu software ida ne ' ebé prevee APIs integrasaun ho servisu Google-fornese, entre sira seluk. Kandidatura hirak ne'e tenke hetan lisensa husi Google husi na'in pesoal, no bele de'it sai shipped kona-ba devices ne ' ebé hasoru ninia kompatibilidade orientasaun no rekizitu sira seluk. Distribuisaun kostume, auténtika husi Android ne ' ebé prodús hosi manufacturers (hanesan TouchWiz no Sentidu HTC) bele mós troka apps Android balun ne ' ebé stock ho sira-nia variants compete no aumenta software adisionál sira ne ' ebé la inklui iha sistema stock operasaun Android. Bele mós iha kondutór "binary blob" ne ' ebé presiza ba komponente hardware balun iha ba pesoal.
<ref name="ars-irongrip"><cite class="citation web">[https://arstechnica.com/gadgets/2013/10/googles-iron-grip-on-android-controlling-open-source-by-any-means-necessary "Google's iron grip on Android: Controlling open source by any means necessary"]. </cite></ref><ref name="android1"/>
Balun kandidatura stock iha kódigu AOSP ne ' ebé uluk uza husi versaun anteriór sira Android, hanesan Peskiza, Múzika no Kalendáriu, iha ne'e, husik hela husi Google afavór naun-livre raparásaun fahe liuhosi Loja Ativu (Buka Google, Múzika Halimar Google no Google Kalendáriu) ne ' ebé mak la fonte-nakloke. Aleinde ne'e, variants fonte-nakloke ba kandidatura balun iha mós esklui funsaun sira ne ' ebé mak marka prezensa iha sira-nia naun-livre versaun anteriór, hanesan Photosphere panoramas Camera, no pájina Agora Google ida ba onorárius uma ekran (esklusivu ba versaun compete "Google Agora Launcher", kódigu sé-nia mak hakerek iha laran ba aplikasaun Google prinsipál).<ref name="ars-irongrip"/><ref>{{Cite web|last=Amadeo|first=Ron|title="Google Now Launcher" hits Play Store, brings Google homescreen to GPE & Nexus devices|url=http://arstechnica.com/gadgets/2014/02/google-now-launcher-hits-play-store-brings-google-homescreen-to-gpe-nexus-devices/|date=February 26, 2014|accessdate=February 27, 2014|access-date=February 27, 2014|work=Ars Technica}}</ref><ref>{{Cite web|url=http://www.anandtech.com/show/7516/android-44-factory-images-now-available-for-nexus-4-7-2012-and-2013-and-10|title=Android 4.4 Factory Images Now Available for Nexus 4, 7 (2012 and 2013), and 10|date=November 14, 2013|accessdate=November 19, 2013|access-date=November 19, 2013|author=Brian Klug|publisher=[[AnandTech]]}} {{Webarchive|url=https://web.archive.org/web/20131119003547/http://www.anandtech.com/show/7516/android-44-factory-images-now-available-for-nexus-4-7-2012-and-2013-and-10 |date=November 19, 2013 }}</ref><ref name="ars-n5launcher">{{Cite web|title=The Nexus 5’s "exclusive" launcher suspiciously receives support for other devices|url=http://arstechnica.com/gadgets/2013/11/the-nexus-5s-exclusive-launcher-suspiciously-receives-support-for-other-devices/|work=Ars Technica|accessdate=November 19, 2013|access-date=November 19, 2013}}</ref>
Richard Stallman no Fundasaun Software Livre ona husi Android no rekomenda uzu alternativa hirak hanesan Replicant, tanba kondutór no firmware ne ' ebé importante tebes ba funsionamentu própriu Android devices compete normalmente, no tanba ne'e nia aplikasaun Google Halimar loja Ne‟e bele halakon forsadamente instala ka deinstall kandidatura no, hanesan rezultadu, konvida software naun-livre.
<ref name="stallman2011"><cite class="citation news">Stallman, Richard (September 19, 2011). </cite></ref><ref>{{Cite web|url=https://www.gnu.org/philosophy/android-and-users-freedom.html|title=Android and Users' Freedom – Support the Free Your Android campaign|first=Richard|last=Stallman|publisher=[[Free Software Foundation]]|work=GNU.org|date=August 5, 2012|accessdate=September 9, 2012|access-date=September 9, 2012}}</ref>
=== Influensa ba manufacturasaun ===
Google licenses software Google Móvel Servisu sira, hamutuk ho trademarks Android de'it ba hardware manufacturers ba devices ne ' ebé tuir padraun kompatibilidade Google nian saida mak espesifika ona iha dokumentu Android Kompatibilidade Programa ne'e. Nune'e, forks Android ne ' ebé halo mudansa ba sistema operasaun ne'e rasik la inklui komponente naun-livre Google nian ida, hela inkompativel ho aplikasaun ne ' ebé presiza ba sira, no tenke ró-ahi ho merkadu software alternativu ida suspensa Google Halimar Loja. Ezemplu kona-ba forks Android hirak ne'e mak Amazon nian Ahi OS (ne ' ebé uza iha liña Ahi Kindle galaxy, no ne ' ebé orienta ba servisu Amazon), Nokia X Software Plataforma (fork ida ne ' ebé uza hosi família Nokia X, orienta liuliu ba Nokia no Microsoft servisu), no forks seluk ne ' ebé esklui Google apps tanba unavailability en-jerál servisu Google iha rejiaun balun (hanesan Xina). Iha tinan 2014, Google mós komesa atu ezije katak devices Android hotu-hotu ne ' ebé fó lisensa ba projetu instalasaun Servisu Móvel Google hatudu ministériu ida-ne ' ebé importante tebetebes "Powered husi Android" kona-ba sira-nia screens liu husi
Clear All.<ref name="geek-poweredby">{{Cite web|title=Google mandates ‘Powered by Android’ branding on new devices|url=http://www.geek.com/android/google-mandates-powered-by-android-branding-on-new-devices-1589253/|work=Geek.com|accessdate=March 28, 2014|access-date=March 28, 2014}} {{Webarchive|url=https://web.archive.org/web/20140328203431/http://www.geek.com/android/google-mandates-powered-by-android-branding-on-new-devices-1589253/ |date=March 28, 2014 }}</ref>
Membru Aliansa Handset Nakloke, ne ' ebé inklui maioria Android OEMs, sira mós sai proibidu husi produs devices Android ne ' ebé bazeia ba forks OS nian; iha tinan 2012, Acer Inc. mak obriga husi Google atu hapara produsaun pesoal ida ne ' ebé powered husi Grupu Alibaba Aliyun OS ho ameasa hasai tiha husi OHA, hanesan Google konsidera plataforma sai versaun ida ne ' ebé inkompativel Android nian. Grupu Alibaba defende alegasaun hirak ne'e, haksesuk-malu katak OS ne'e mak plataforma ida ne ' ebé diferente husi Android (ema HTML5 apps uza prinsipalmente), maibé portions inkorpora kona-ba plataforma Android nian atu permite backwards kompatibilidade ho terseiru software Android. Tuir loloos, devices ne ' ebé mak ró-ahi ho aplikasaun loja ida-ne ' ebé oferese Android apps; maibé, sira barak mak pirated.<ref name="cnet-alibabawrong">{{Cite web|title=Alibaba: Google just plan wrong about our OS|url=http://www.cnet.com/news/alibaba-google-just-plain-wrong-about-our-os/|work=CNET|accessdate=March 28, 2014|access-date=March 28, 2014}}</ref><ref>{{Cite web|last=Brodkin|first=Jon|url=http://arstechnica.com/gadgets/2012/09/google-blocked-acers-rival-phone-to-prevent-android-fragmentation/|title=Google blocked Acer’s rival phone to prevent Android "fragmentation"|work=Ars Technica|date=|accessdate=March 28, 2014|access-date=March 28, 2014}}</ref><ref name="arstechnica-2012-09-17">{{Cite web|url=http://arstechnica.com/gadgets/2012/09/pirated-android-apps-featured-prominently-on-aliyun-app-store/|title=Pirated Android apps featured prominently on Aliyun app store|date=September 17, 2012|accessdate=March 28, 2014|access-date=March 28, 2014|author=Jon Brodkin|work=Ars Technica}}</ref>
== Recepsaun ==
[[Imajen:Android_x86_on_EeePC_701_4G.jpg|right|thumb|Android-x86 running on an ASUS EeePC netbook; Android has been unofficially ported to traditional PCs for use as a desktop operating system.]]
Android simu reasaun lukewarm kuandu unveiled iha tinan 2007. Maski analista sira sai hakfodak ho kompañia teknolojia ne ' ebé respeita sira ne ' ebé nia halo parseria ho Google hodi forma Aliansa Handset Nakloke, neʼe la klaru se manufacturers telemóvel sei prontu atu troka sira-nia sistema operasaun eziste ho Android. Ideia kona-ba plataforma fonte-nakloke, bazeia ba Linux dezenvolvimentu ida ne ' ebé dada interese, maibé, iha preokupasaun adisionál boot kona-ba Android ne ' ebé hasoru kompetisaun maka'as husi ajente ne ' ebé estabelese iha merkadu smartphone, hanesan Nokia no Microsoft no rivaál Linux móvel operasaun sistema ne ' ebé sira iha dezenvolvimentu. Ida ne'e estabelese partisipantis sira skeptical: Nokia mak temi hanesan dehan "ita la haree ida-ne'e hanesan ameasa ida", no membru ekipa Móvel Kona Microsoft nian ne ' ebé hateten "Haʼu la komprende impaktu ne ' ebé mak sira sei iha."
<ref name="lol">{{Cite web|url=http://www.engadget.com/2007/11/05/symbian-nokia-microsoft-and-apple-downplay-android-relevance/|title=Symbian, Nokia, Microsoft and Apple downplay Android relevance|publisher=Engadget|date=|accessdate=November 9, 2012|access-date=November 9, 2012}}</ref>
Desde tempu Android tiha ona atu sai sistema operasaun smartphone uza barak liu no "ida ne'e fastest móvel esperiénsia disponivel." Reviewers subliña tiha ona ba natureza fonte-nakloke sistema operasaun nu'udar ninia kbiit ne ' ebé defining, permite empreza hanesan Nokia (Nokia X família), Amazon (Kindle Ahi), Barnes & Salaun (Nook), Ouya, Baidu no ema seluk atu fork hardware software no imprensa halai sira-nia versaun customised Android nian. Hanesan rezultadu, ida-neʼe iha ona deskreve hosi teknolojia portál Ars Technica "pratikamente onorárius operasaun sistema ba realizasaun hardware foun" ba kompañia sira ne ' ebé la iha sira nia plataforma móvel. Ne'e abertura no fleksibilidade mós sai ida-ne'e iha nivel uzuáriu rohan: Android permite customisation estensivu husi devices hosi nain ba armas no apps disponivel livre hosi naun-Google app loja no terseiru sitiu internet. Ida ne'e iha ona hateten entre vantajen prinsipál ba Android uzu ba telefoni kona-ba ema seluk.<ref name="ars5th">{{Cite web|last=Brodkin|first=Jon|url=http://arstechnica.com/gadgets/2012/11/on-androids-5th-birthday-5-things-we-love-about-android/|title=On its 5th birthday, 5 things we love about Android|work=[[Ars Technica]]|date=November 5, 2012}}</ref><ref>{{Cite web|url=http://www.androidauthority.com/best-apps-customizing-personalizing-android-phones-100685/|title=Best Android apps for personalizing and customizing your phone|publisher=Androidauthority.com|date=July 13, 2012|accessdate=November 9, 2012|access-date=November 9, 2012}}</ref>
Maske popularidade Android nian, inklui ativasaun ida evaluasaun dala tolu katak iOS, iha ona relatóriu ne ' ebé Google seidauk bele fó influensa ba sira seluk produtu no servisu web ho susesu hodi transforma Android kria osan ne ' ebé analista sira neʼebé hein. Konferénsia ne'e sujere katak Google mak lakon kontrola Android tanba customization estensiva no konsistentamentu apps naun-Google no servisu – Ahi Kindle Amazon nian liña uza Ahi OS, fork ida ne ' ebé ho maka'as hosi Android ne ' ebé la inklui ka fó apoiu ba komponente compete Google nian, no ezije katak uzuáriu hetan software husi Appstore Amazon kompetisaun ninia duké Halimar Loja. Iha tinan 2014, iha esforsu ida atu hadi'a sira-nia naran ba preokupasaun hirak Android, Google hahú atu ezije katak devices ne ' ebé ho ninia komponente compete hatudu ministériu ida-ne ' ebé Android kona-ba tais liu husi.
<ref name="geek-poweredby"/>
Android ona sofre "hotu", situasaun ida ne ' ebé iha oin-oin devices Android, kona-ba variasaun hardware no diferensa sira iha instalasaun ne ' ebé suli kona-ba sira, halo knaar dezenvolve kandidatura sira ne ' ebé servisu beibeik iha ekosistema nian liu plataforma rivaál sira hanesan iOS bainhira hardware no software diferensa menus. Pur ezemplu, tuir dadus hosi OpenSignal iha fulan-Jullu tinan 2013, iha sira-modelu 11,868 pesoal Android, medida lubuk ida ba tais diferente no versaun Android OS ualu anteriór simultaneamente iha uzu, enkuantu maioria boot iOS uzuáriu iha upgraded ba iteration ikus nian ne'e OS. Critics hanesan Apple Insider asserted katak hotu liuhusi hardware no software dudu kresimentu Android nian ne ' ebé maka boot ki'ik nia rohan, liuhosi priced orsamentu devices halai versaun boot anteriór nian Android. Sira mantein ne'e forsa developers Android atu hakerek ba iha "lowest komun denominator" atu to'o ba uzuáriu barak liu, ne ' ebé hetan insentivu ne ' ebé uitoan liu atu uza ba ikus hardware no software karakterístika de'it disponivel kona-ba persentajen ki'ik husi devices. Maski nune'e, OpenSignal, ne ' ebé dezenvolve apps Android no iOS, konklui katak maske hotu bele halo dezenvolvimentu trickier, Android nia paizes globál bele mos aumenta kolen potensiál.
<ref name="guardianfrag">{{Cite web|last=Arthur|first=Charles|title=Android fragmentation 'worse than ever' – but OpenSignal says that's good|url=http://www.theguardian.com/technology/2013/jul/30/android-fragmentation-visualised-opensignal|publisher=The Guardian|accessdate=August 1, 2013|access-date=August 1, 2013|date=July 30, 2013}}</ref>
=== Proporsaun merkadu ===
Peskiza empreza Canalys kalkula iha trimestre daruak tinan 2009, no katak Android iha proporsaun 2.8% hosi shipments smartphone mundu tomak. To'o trimestre dahaat nian iha tinan 2010, ne'e sa'e ona ba merkadu ne ' ebé sai fa'an leten smartphone plataforma, ultrapasa Symbian 33%. Husi terseiru trimestre tinan 2011, Gartner kalkula katak liu metade (52.5%) hosi smartphone ne ' ebé fa'an labele Android. Husi tolu ba kuartu 2012 Android iha proporsaun 75% ba merkadu smartphone globál, tuir peskiza empreza IDC
<ref name="idcQ3">{{Cite web|url=http://www.idc.com/getdoc.jsp?containerId=prUS23771812|title=Android Marks Fourth Anniversary Since Launch with 75.0% Market Share in Third Quarter, According to IDC – prUS23771812|publisher=Idc.com|date=|accessdate=November 3, 2012|access-date=November 3, 2012}} {{Webarchive|url=https://web.archive.org/web/20121103041944/http://www.idc.com/getdoc.jsp?containerId=prUS23771812 |date=November 3, 2012 }}</ref>
iha Jullu 2011, Google dehan katak 550,000 Android devices sira hetan bainhira sai loron-loron, no husi 400,000 kada loron iha Maiu, no liu tokon 100 devices tiha ona bele ho kresimentu 4.4% kada semana. Iha fulan Setembru tinan 2012, devices tokon 500 tiha ona bele ho activations 1.3 millaun kada loron. Iha fulan Maiu 2013, iha Google I/O, Sundar Pichai anunsia katak tokon 900 devices Android tiha ona bele.<ref name="900 million">{{Cite web|title=Google: 900 million Android activations to date, 48 billion app installs|publisher=[[The Verge]]|date=May 15, 2013|url=http://www.theverge.com/2013/5/15/4333584/total-android-activations-900-million}}</ref>
Merkadu android diferente husi fatin. Iha fulan-Jullu 2012, "subscribers móvel tinan 13 +" iha Estadus Unidus uza Android sira to'o 52%, ba sa'e ba 90% iha Xina. Durante terseiru trimestre tinan 2012, Android nia smartphone mundiál karegamentu merkadu fahe ona 75%, ho tokon 750 devices ativu iha totál. Iha fulan Abril tinan 2013 Android iha millaun 1,5 activations kada loron. No Maiu 2013, 48 billaun kandidatura ("apps") hetan tiha ninia husi loja Halimar Google, no fulan Setembru tinan 2013, dólar amerikanu millaun ida rihun devices Android tiha ona bele.<ref name="1bn">{{Cite web|url=http://plus.google.com/+VicGundotra/posts/8CVJ79nPQwN|first=Vic|last=Gundotra <!--work=? Google+ -->|title=Just back from a whirlwind trip to Asia visiting our…|publisher=Plus.google.com|date=|accessdate=September 3, 2013|access-date=September 3, 2013}}</ref>
[[Category:Articles containing potentially dated statements from May 2013|Category:Articles containing potentially dated statements from May 2013]]
[[Category:All articles containing potentially dated statements|Category:All articles containing potentially dated statements]]
Iha fulan-Jullu tinan 2013, loja Google sira Halo ona tokon ida Android kandidatura publika tiha ona, no liu billaun 50 kandidatura relatoriu. Levantamentu developer ida ne ' ebé hala'o iha fulan Abril – Maiu 2013 hetan katak Android uza 71% hosi developers móvel. Susesu sistema operasaun halo ida-neʼe ida alvu ba litigasaun patent hanesan parte husi, neʼebé ema bolu nuʼudar "smartphone funu" entre empreza teknolojia.<ref name="cnet2011"/><ref name="tomsguide"/>
[[Category:Articles containing potentially dated statements from July 2013|Category:Articles containing potentially dated statements from July 2013]]
[[Category:All articles containing potentially dated statements|Category:All articles containing potentially dated statements]]
Android devices konsiderasaun ba smartphone fa'an iha merkadu barak, inklui mós estadus UNIDUS, enkuantu "[[Japaun]] iha de'it mak Apple kona-ba leten" liu metade (númeru Setembru – Novembru 2013). Iha tinan 2013 nia rohan, liu billaun 1.5 smartphones Android faʼan iha tinan haat dezde 2010, halo Android barak ne ' ebé fa'an telefone no ai-kabelak OS. Smartphones Android billaun tolu iha estimativa katak atu fa'an to'o tinan 2014 (inklui tinan liubá). Tuir Gartner peskiza empreza, devices ne ' ebé bazeia ba Android outsold contenders hotu-hotu, tinan-tinan dezde tinan 2012. Iha tinan 2013, ida-neʼe outsold 2.8:1 Kona ka 573 millaun. Iha tinan 2015, Android iha baze boot instalasaun sistema operasaun hotu-hotu; Hahú tinan 2013, devices ne ' ebé suli mós fa'an liu duké Kona, iOS no devices Mac OS X kombina.
<ref name="best_selling"><cite class="citation news">Yarow, Jay (March 28, 2014). </cite></ref>
[[Category:Articles containing potentially dated statements from 2015|Category:Articles containing potentially dated statements from 2015]]
[[Category:All articles containing potentially dated statements|Category:All articles containing potentially dated statements]]
Tuir StatCounter, ne ' ebé rekolha de'it uza ba browsing web nian, Android mak sistema operasaun móvel populár liu dezde fulan-Agostu tinan 2013. Android ne ' ebé mak sistema operasaun populár liu ba web browsing iha India no nasaun oin-oin sira seluk (ezemplu pratikamente hotu ne ' ebé Ázia, ho exesaun Japaun no Korea Norte nian). Tuir StatCounter, Android liu uza ba móvel iha país Afrikanu sira ne ' ebé hotu-hotu, no hateten katak, "uzu móvel iha ona solusaun desktop iha país oin-oin ne ' ebé inklui India, Áfrika Súl no Arábia arábia Saudita", ho país sira ne ' ebé pratikamente hotu-hotu iha Áfrika no halo tuir ona (exetu se nasaun hitu, inklui Ejitu), hanesan Etiópia no Kenya ne ' ebé iha ne'ebe uzu móvel (inklui galaxy) mak 90.46% (Android de'it , konta 75.81% kona-ba ema hotu-hotu uza iha<ref>http://gs.statcounter.com/#all-os-KE-monthly-201401-201608</ref>).<ref>{{Cite web|url=http://gs.statcounter.com/#all-comparison-KE-monthly-201401-201608|publisher=StatCounter|title=Global Stats – Browser, OS, Search Engine including Mobile Usage Share|accessdate=September 23, 2016|access-date=September 23, 2016}}</ref>
Enkuantu Android laiha telefone tiha ona iha rai riku barak inklui add-ons compete Google nian (hanesan Google Halimar) ba sistema operasaun kontráriu fonte-nakloke, ida-ne'e la aumenta kazu iha merkadu tabik; "Peskiza ABI reklama katak devices 65 milhoens shipped globalmente ho fonte-nakloke Android iha trimester daruak [2014], aumentu husi millaun 54 iha trimestre uluk"; depende ba nasaun, porsentu kona-ba uzu ba telefoni atu bazeia de'it ba kódigu fonte Android nian (AOSP), iha estimativa forgoing Android trademark: Tailándia (44%), Filipina (38%), Indonézia (31%), India (21%), Malázia (24%), Méxiku (18%), Brazil(9%).<ref>{{Cite web|url=http://www.androidauthority.com/google-certification-over-aosp-541700|title=Google hoping to lure smaller manufacturers to Google’s Android, over AOSP|first=Andrew|last=Grush|date=October 21, 2014|work=Android Authority|accessdate=October 22, 2014|access-date=October 22, 2014}} {{Webarchive|url=https://web.archive.org/web/20141022015948/http://www.androidauthority.com/google-certification-over-aosp-541700/ |date=October 22, 2014 }}</ref>
Tuir ida Janeiru 2015 Gartner relatóriu, "Android ultrapasa shipments billaun ida kona-ba devices iha tinan 2014, no sei kontinua ho ritmu ida-ne ' ebé díjitu-oan iha tinan 2015, ho aumentu porsentu 26 tinan ida ba tinan." Ida-neʼe halo nia dahuluk ne ' ebé uzuáriu ikus liu billaun ida iha tinan ida nia laran, kualkér sistema operasaun general-purpose atinji ona: husi to'o besik billaun 1.16 uzuáriu nia rohan iha tinan 2014, Android shipped ba dala haat liu fali iOS no OS X hamutuk, no ba dala tolu liu fali Windows Microsoft. Gartner hein merkadu telemóvel tomak atu "to'o unidade rua billaun iha tinan 2016", inklui Android.
<ref>{{Cite web|url=http://www.gartner.com/newsroom/id/2954317|publisher=Gartner|title=Tablet Sales Continue to Be Slow in 2015: Tablet Sales to Reach 8 Percent Growth in 2015 While PC Market to Grow 1 Percent|date=January 5, 2015|accessdate=January 23, 2015|access-date=January 23, 2015}}</ref>
Tuir estimativa Statistica ida, Android smartphones iha baze ida ne ' ebé instalasaun nian hanesan biliaun 1.8 unidade iha tinan 2015, ne ' ebé mak 76% hosi númeru totál estimadu smartphones ne ' ebé mundu tomak. Android iha boot instalasaun baze kona-ba kualkér operasaun sistema móvel no, hahú husi tinan 2013, liu-fa'an operasaun sistema en-jerál ho fa'an iha tinan 2012, tinan 2013 no 2014 besik baze instalasaun PCs hotu-hotu. Iha trimestre tolu iha tinan 2015, iha merkadu globál smartphone karegamentu Android nia proporsaun mak 84.7%, aas liu nia. Iha loron 28, fulan Setembru tinan 2016, ho proporsaun merkadu 52.5%, Tablet nafatin OEM rezulta ba hola Android ne ' ebé suli smartphoens no galaxy, tuir fali mak tuir fali LG, Huawei, Motorola, Lenovo, Sony, HTC, Asus, Alcatel no Xiaomi.
Husi fulan Agostu tinan 2016, kontinente boot rua tiha ona móvel-maioria, tesi-lia tuir uza web ("desktop" iha 46.92% – 55.16% uza mundiál, depende ba loron-semana, ne ' ebé halo semana balu desktop-ki'ik; fulan tomak ne ' ebé ki'ik liu ne ' ebé mak iha 50.05%); tanba Android (haree uzu fahe sistema operasaun), ne ' ebé iha maioria ne ' ebé uza iha smartphones iha nasaun hotu-hotu pratikamente (kontinente hotu-hotu tiha ona Android-maioria nian, ne ' ebé inklui Amérika Norte, exetu se Oceania tanba Austrália), ho esesaun uitoan (ne'e hotu ona iOS-maioria); iha estadus UNIDUS, Android besik iOS, hodi troka pozisaun maioria dala balun, Kanada no tuir mai ne‟e mós esesaun: Japaun, Filipina, Austrália no exesaun ne ' ebé de'it iha Europa mak reinu Unidu, Béljika nasaun Nordic Dinamarca, Nian, Sweden no Noruega no Suésia.
<ref>http://gs.statcounter.com/#mobile+tablet-os-eu-monthly-201608-201608-map</ref>
Iha tinan 2016, Android neʼe kona-ba maioria smartphones iha nasaun sira ne ' ebé pratikamente hotu-hotu iha mundu, exklui Estadus Unidus no Kanada (bainhira inklui Amérika-Norte kontinente hotu), Austrália no Japaun. Nasaun balu, hanesan reinu Unidu, lakon Android-maioria se galaxy sira.
=== Adosaun ba galaxy ===
[[Imajen:Front_view_of_Nexus_7_(cropped).png|thumb|Ba first-generation Nexus 7 ai-kabelak, halai Android 4.1 Jelly Bean<br>
]]
Maski nia susesu kona-ba smartphones, adosaun ba ai-kabelak Android uluk mak neineik. Kauza prinsipál ida mak, chicken ka situasaun egg ne ' ebé iha konsumidór sira tenta atu sosa ai-kabelak ida Android tanba falta kualidade aas kona-ba ai-kabelak kandidatura, maibé developers sira tenta atu gasta tempu no rekursu ne ' ebé dezenvolve hela kandidatura ai-kabelak toʼo iha merkadu ida ne ' ebé signifikante ba sira. Ba konteúdu no app "ekosistema" hatudu katak importante liu fali hardware specs pontu selling ba galaxy. Tanba laiha ai-kabelak espesífiku Android kandidatura iha tinan 2011, galaxy Android sedu iha atu halo ho eziste smartphone kandidatura ne ' ebé mak konitua-suited ba medida tais boot, konsidera katak dominasaun iPad Apple nian ne'e reforsa liu-hosi barak kona-ba ai-kabelak espesífiku iOS kandidatura.
<ref name="tabs">{{Cite web|url=http://www.zdnet.com/blog/mobile-news/why-there-arent-more-android-tablet-apps-by-the-numbers/7218|title=Why there aren't more Android tablet apps, by the numbers|publisher=ZDNet|date=March 21, 2012|accessdate=November 9, 2012|access-date=November 9, 2012}}</ref><ref><cite class="citation news">Poeter, Damon (December 7, 2012). </cite></ref>
Maski app apoiu iha ninia infancy, ida ne ' ebé barak iha Android galaxy (hamutuk ho sira neʼebé uza sistema operasaun seluk, hanesan HP TouchPad no BlackBerry PlayBook) sira halai ba merkadu iha tentativa atu foti vantajen hosi susesu iPad nian. InfoWorld sujere katak manufacturers Android balu hahú trata galaxy sira-ne ' ebé uluk hanesan "Frankenphone negósiu ida", oportunidade ki'ik-investimentu kurtu-prazu ne ' ebé tau ida optimál smartphone Android OS (antes Honeycomb 3.0 Android ba galaxy mak disponivel) kona-ba pesoal ida bainhira fó eletrónikus uzuáriu. Ida-neʼe hakbesik, hanesan ho Dell Streak, la bele hetan merkadu trasaun ho konsumidór sira nomós estragus reputasaun galaxy Android sedu. Hatutan tan ne'e, Android oin-oin tablets ne'e hanesan Motorola Xoom sira priced hanesan ka boot liu fali iPad, neʼebé halo aat ba fa'an. Exesaun ida mak Amazon Kindle Ahi, ne ' ebé depende ba presu ki'ik liu no mós asesu ba ekosistema Amazon nia kandidatura no content.applications.
<ref name="tabs"/><ref>{{Cite web|last=Hiner|first=Jason|url=http://www.techrepublic.com/blog/hiner/why-android-tablets-failed-a-postmortem/10011|title=Why Android tablets failed: A postmortem|publisher=TechRepublic|date=January 5, 2012|accessdate=November 9, 2012|access-date=November 9, 2012}}</ref>
Ida-neʼe hahú atu muda iha tinan 2012, ho lansamentu 7 Nexus kustu ladún karu no motiva husi Google ba developers hakerek di'ak liu kona-ba ai-kabelak kandidatura. Tuir Dadus Korporasaun Internasionál, shipments galaxy Android powered numeru kotajen iPads iha Q3 tinan 2012.<ref>{{Cite web|last=Kovach|first=Steve|title=Android Now Ahead Of Apple's iOS In Tablet Market Share|url=http://www.businessinsider.com/android-ahead-of-ios-tablet-market-share-2013-5|publisher=Business Insider}}</ref>
Iha tinan 2013 nia rohan, galaxy Android liu millaun 191.6 faʼan tiha iha tinan tolu hosi tinan 2011. Ida-neʼe halo galaxy Android tipu faʼan barak kona-ba ai-kabelak iha 2013, komitmentu iPads iha trimestre daruak tinan 2013.
<ref>{{Cite web|url=https://www.abiresearch.com/press/android-ecosystem-takes-the-baton-from-apple-ipad-|title=Android Ecosystem Takes the Baton from Apple iPad in the Tablet Race|publisher=ABIresearch|date=September 27, 2013|accessdate=September 10, 2014|access-date=September 10, 2014}}</ref>
According to the StatCounter's June 2015 web use statistics, Android tablets represent the majority of tablet devices used on the South American<ref>{{Cite web|url=http://gs.statcounter.com/#tablet-os-sa-monthly-201504-201507|title=StatCounter Global Stats – Browser, OS, Search Engine including Mobile Usage Share|work=statcounter.com|accessdate=August 1, 2015|access-date=August 1, 2015}}</ref> (then lost majority) and [[Áfrika|African]] continents (60.23%),<ref>{{Cite web|url=http://gs.statcounter.com/#tablet-os-af-monthly-201403-201506|title=Top 7 Tablet OSs in Africa from Mar 2014 to Jun 2015|accessdate=March 19, 2015|access-date=March 19, 2015}}</ref> while they have equaled with the iPad's market share in major nasaun sira ne ' ebé iha kontinente hotu-hotu (ho Amérika Norte hanesan exesaun ida, maibé iha Android El Salvador iha maioria), no besik reprezenta maioria iha kontinente Aziátiku tomak no halo tiha ona tan neʼe, iha India (65.9%), Indonézia (62.22%), no nasaun Médiu-Orientál barak. Iha kuaze metade hosi país Europeu, galaxy Android iha proporsaun merkadu maioria. Xina mak exesaun ida ba iha boot nasaun iha Android ne phablets (klasifika hanesan smartphones no hanesan iha dimensaun galaxy) mak populár liu galaxy Android ka iPads.
Husi fulan-Marsu tinan 2016, Infoworld hateten galaxy Android smartphones bele sai nudar "loloos ó-nia negósiu [.] ema la iha razaun ida atu kontinua Android iha durasaun liman nian. Ida agora ne'e hanesan integrál ba ita-nia portofoliu móvel hanesan devices iOS Apple nian"no sira iha"negósiu terseira klase apps", la ' ós de'it"OK ba email". Iha tinan 2015, sira hateten katak "Microsoft nia Eskritóriu UI mak di'ak liu kona-ba iOS no Android" duké iha Microsoft nian nain móvel app Kona ba.
=== Platform usage ===
Dezenna iha seksaun ida ne'e fornese breakdowns versaun anteriór Android, bazeia ba devices ne ' ebé hetan ásesu ba Loja Halimar Google iha períodu loron hitu ida ne ' ebé remata iha loron 7, fulan Novembru tinan 2016. Tanba ne'e, dadus hirak ne'e esklui devices ne ' ebé suli forks Android oin-oin ne ' ebé la hetan asesu ba Loja Halimar Google, hanesan tablets.id Ahi Amazon nian"duké iha Microsoft nian nain móvel app Kona ba.ore, these statistics exclude devices running various Android forks that do not access the Google Play Store, such as Amazon's Fire tablets.
{| class="wikitable sortable" style="margin-bottom: 10px;"
! Version
! Code name
! Release date
! API level
! DVM/ART
! Distribution
! First devices to run version
|-
| style="text-align:center;" | '''7.1'''
| Nougat
| 000000002016-10-04-0000October 4, 2016
| 25
| ART
| less than 0.1%
|-
| style="text-align:center;" | '''7.0'''
| Nougat
| 000000002016-08-22-0000August 22, 2016
| 24
| ART
| 0.3%
| Nexus 5X, Nexus 6P
|-
| style="text-align:center;" | '''6.0'''
| Marshmallow
| 000000002015-10-05-0000October 5, 2015
| 23
| ART
| 24.0%
| Nexus 5X, Nexus 6P
|-
| style="text-align:center;" | '''5.1'''
| rowspan="2" | Lollipop
| 000000002015-03-09-0000March 9, 2015
| 22
| ART
| 22.8%
| Android One
|-
| style="text-align:center;" | '''5.0'''
| 000000002014-11-03-0000November 3, 2014
| 21
| ART 2.1.0
| 11.3%
| Nexus 6
|-
| style="text-align:center;" | '''4.4'''
| KitKat
| 000000002013-10-31-0000October 31, 2013
| 19
| DVM <small>(and ART 1.6.0)</small>
| 25.2%
| Nexus 5
|-
| style="text-align:center;" | '''4.3'''
| rowspan="3" | Jelly Bean
| 000000002013-07-24-0000July 24, 2013
| 18
| DVM
| 2.0%
| Nexus 7 2013
|-
| style="text-align:center;" | '''4.2'''
| 000000002012-11-13-0000November 13, 2012
| 17
| DVM
| 6.8%
| Nexus 4, Nexus 10
|-
| style="text-align:center;" | '''4.1'''
| 000000002012-07-09-0000July 9, 2012
| 16
| DVM
| 4.9%
| Nexus 7
|-
| style="text-align:center;" | '''4.0'''
| Ice Cream Sandwich
| 000000002011-12-16-0000December 16, 2011
| 15
| DVM
| 1.3%
| Galaxy Nexus
|-
| style="text-align:center;" | '''2.3.3+'''
| Gingerbread
| 000000002011-02-09-0000February 9, 2011
| 10
| DVM 1.4.0
| 1.3%
| Nexus S
|-
| style="text-align:center;" | '''2.2'''
| Froyo
| 000000002010-05-20-0000May 20, 2010
| 8
| DVM
| 0.1%
| Droid 2
|}
Dezde fulan-Maiu tinan 2016, metade hosi devices iha ES OpenGL 3.0 ka aas liu.
=== Aplikasaun pirataria ===
Iha jerál, kandidatura Android vensimentu bele fasil atu hetan pirated. Iha entrevista Maiu 2012 ida ho Eurogamer, developers nian Futubol Jerente haktuir katak, proporsaun hosi ajente pirated vs lejítimu jogadór 9:1 ba Handheld Jerente Futubol game. Maski nune'e, developer hotu la konkorda ona katak numeru pirataria mak hanesan problema ida; pur ezemplu, iha fulan-Jullu 2012 developers kona-ba game Wind-up Knight hateten katak nivel pirataria sira mós iha deit 12% no pirataria ne'e barak liu ne ' ebé mai hosi Xina, ne ' ebé iha fatin neʼebé ema la bele sosa apps husi Google sira Halo.
Iha tinan 2010, Google fó sai iha instrumentu ida hodi halo validasaun ba kompras autorizasaun ba uza iha laran apps, maibé developers kesar katak ida-neʼe la sufisiente no neʼebé kiʼik crack. Google responde katak ferramenta, liu-liu ninia inisiál imprensa, ne'e destina nu'udar kuadru amostra ba developers modifika no harii ba depende ba sira-nia nesesidade, la hanesan solusaun pirataria hotu ona. Android "Jelly Bean" introdús kapasidade ba kandidatura sira ne ' ebé pagamentu ba encrypted, nuneʼe sira bele servisu de'it kona-ba pesoal sira ne ' ebé ne sira mak sosa ona.
<ref name="ars-appencrypt">{{Cite web|title=Update: Google posts DRM workaround for paid Android Wear apps|url=http://arstechnica.com/gadgets/2014/07/google-drm-bug-blocks-paid-android-wear-apps/|accessdate=September 7, 2015|access-date=September 7, 2015}}</ref><ref>{{Cite web|last=McAllister|first=Neil|url=http://www.theregister.co.uk/2012/08/08/android_drm_disabled/|title=Android app DRM quietly disabled due to bug|publisher=The Register|date=August 8, 2012|accessdate=June 10, 2012|access-date=June 10, 2012}}</ref>
== Asuntu sira ne ' ebé legál ==
Android no Android telefone manufacturers envolve tiha ona iha proseu legal patent lubuk ida. Iha loron 12 fulan Agostu tinan 2010, Oracle de'it Google kona-ba violasaun reklama copyrights no patente ne ' ebé mak iha relasaun ho Java ba programa sira-nia lian. Orijinalmente oracle buka estragus to'o biliaun $6.1, maibé avaliasaun ida ne'e hetan rejeisaun Estadus Unidus federál, juís ne ' ebé husu Oracle atu apresia ba estimativa. Iha resposta, Google aprezenta liña oin-oin kona-ba defeza, ne ' ebé counterclaiming Android la infringe kona-ba Oracle nian prezidente ka direitu autór, prezidente Oracle neʼe mak folin-laek, no seluk defenses oin-oin. Sira dehan katak Android nia Java runtime ambiente ne'e, bazeia ba Apache Armonia, implementasaun sala clean biblioteka klase Java, no makina virtual dezenvolvidu independente ida naran Dalvik. Iha fulan-Maiu tinan 2012, juri iha kazu ida ne'e hetan katak Google la infringe kona-ba prezidente Oracle nian, no tesi-lia naʼin julgamentu ne ' ebé ukun katak estrutura APIs Java ne ' ebé uza hosi Google ne'e la copyrightable. Parte sira konkorda atu zero dolar iha estragus estatutária ba montante ida ne ' ebé ki'ik ba kódigu copied. Iha loron 9 fulan-Maiu tinan 2014, Knua Federál parsialmente bá tribunál distritál ukun, ukun favor Oracle nian kona-ba asuntu copyrightability no remanding kestaun kona-ba utilizasaun ne ' ebé justu ba tribunál distritál.
<ref name="cnet appeals"><cite class="citation news">Rosenblatt, Seth (May 9, 2014). </cite></ref><ref name="cafc 13-1021">{{Cite web|url=http://www.cafc.uscourts.gov/images/stories/opinions-orders/13-1021.Opinion.5-7-2014.1.PDF|title=ORACLE AMERICA, INC. , Plaintiff – Appellant, v. GOOGLE INC., Defendant – Cross – Appellant.|publisher=Court of Appeals for the Federal Circuit|date=May 9, 2014|accessdate=May 10, 2014|access-date=May 10, 2014}} {{Webarchive|url=https://web.archive.org/web/20140601064614/http://www.cafc.uscourts.gov/images/stories/opinions-orders/13-1021.Opinion.5-7-2014.1.PDF |date=June 1, 2014 }}</ref>
Iha fulan-Dezembru tinan 2015, Google anunsia katak imprensa boot tuirmai Android (Android Nougat) sei muda OpenJDK, ne ' ebé mak ofisiál fonte-nakloke implementasaun kona-ba plataforma Java, duké uza projetu Armonia Apache discontinued agora hanesan ninia runtime. Kódigu ne'ebe refleta mudansa ida ne'e hetan mós kolokasaun ba repository fonte AOSP. Iha ninia anúnsiu, Google reklama ida-ne'e mak halo parte iha esforsu ida atu kria ida "komún kódigu baze" entre Java kona-ba plataforma Android no seluk. Google admitidu tiha iha ida tribunál liu katak ida-neʼe halo parte iha esforsu ida atu rezolve disputa ho Oracle, hanesan uza ba kódigu OpenJDK mak regula tuir ba GNU Jerál Públiku Lisensa (GPL) ho esesaun ida-ne ' ebé linking, no katak "kualkér estragus reklamasaun ne ' ebé relasiona ho iha versaun anteriór foun, ne ' ebé klaru lisensa husi Oracle tuir OpenJDK sei presiza análize ida ne ' ebé separadu kona-ba estragus husi imprensa ne ' ebé uluk". Iha fulan-Juñu tinan 2016, tribunál federál Estadus Unidus ukun na'in Google, ne ' ebé hateten katak nia uza APIs ba neʼe, uza ne ' ebé justu.
<ref name="ars-googlebeatsoracle">{{Cite web|title=Google beats Oracle—Android makes "fair use" of Java APIs|url=http://arstechnica.com/tech-policy/2016/05/google-wins-trial-against-oracle-as-jury-finds-android-is-fair-use/|accessdate=June 30, 2016|access-date=June 30, 2016}}</ref>
Idistrito hatutan tan ba kazu kontra Google diretamente, prokurasaun oin-oin ne ' ebé funu iha ona median hasoru Android integra ho tarjetu ba manufacturers Android devices, ho efeitu manufacturers discouraging husi adosaun plataforma hodi aumenta kustu lori pesoal Android ida ba merkadu. Apple no Microsoft iha de'it manufacturers oin-oin ba violasaun patent, ho Apple nian asaun jurídika kontinua hasoru Tablet ne ' ebé hetan kazu liu-liu aas-perfíl ida. Iha fulan Outubru 2011, Microsoft dehan sira iha asina akordu lisensa patent ho Android sanulu pesoal manufacturers, sé-nia konsiderasaun ba produtu sira kona-ba "70% iha estadus unidus". no reseita mundiál ba Android devices 55%. Ne'e inklui Tablet no HTC. Akordu patent Tablet nian ho Microsoft inklui akordu ida hodi aloka rekursu barak hodi dezenvolve no komersializasaun laiha telefone tiha Telefone Kona halai Microsoft nia sistema operasaun. Microsoft ona mós kesi nia rasik software Android ba lisensa patent, presiza bundling kandidatura Microsoft Eskritóriu Móvel no Skype Android devices kona-ba fó subsídiu ba onoráriu lisensiamentu, enkuantu iha ajuda tempu hanesan atu promove ninia liña software.<ref name="supersite-androidpatents">{{Cite web|last1=Trent|first1=Rod|title=Microsoft Inside: 20 New Android Device Manufacturers Sign-on to Pre-Install Office and Skype|url=http://winsupersite.com/mobile/microsoft-inside-20-new-android-device-manufacturers-sign-pre-install-office-and-skype|publisher=Penton|accessdate=August 23, 2016|access-date=August 23, 2016}}</ref><ref name="verge-xiaomims">{{Cite web|title=Xiaomi will bundle Microsoft’s Office and Skype apps on its Android devices|url=http://www.theverge.com/2016/6/1/11827268/microsoft-xiaomi-skype-office-android-apps-patent-deal|accessdate=August 23, 2016|access-date=August 23, 2016}}</ref>
Google públiku hatudu ona ninia frustrasaun ba regular patent atuál iha Estadus Unidus, duun Apple, Oracle no Microsoft koko atu lori tun Android liuhosi litigasaun patent, duké innovating no kompetisaun ho produtu no servisu di'ak liu. Iha fulan Setembru tinan 2011, Google sosa Mobilidade Motorola ba US$ 12.5 billaun, ne ' ebé mak haree iha parte hanesan medida ida-ne ' ebé defensive atu proteje Android, tanba Mobilidade Motorola hala'o prezidente 17,000 liu. Iha fulan-Dezembru tinan 2011, Google sosa kona-ba prezidente rihun ida husi IBM.<ref name="arsibm">{{Cite web|url=http://arstechnica.com/gadgets/news/2012/01/google-buys-another-round-of-ibm-patents-as-oracle-trial-nears.ars|title=Google buys another round of IBM patents as its Oracle trial nears|publisher=[[Ars Technica]]|last=Paul|first=Ryan|date=January 4, 2012|accessdate=February 16, 2012|access-date=February 16, 2012}}</ref>
Iha tinan 2013, FairSearch, organizasaun lobbying ne ' ebé hetan apoiu husi Microsoft, Oracle no ema seluk, sira aprezenta kesar kona-ba Android ho Komisaun Europeia nian, ne ' ebé grupu katak ninia modelu distribuisaun livre-nian-gratuitu proessu anti-kompetitivu predatory presu sira. Ne'e Livre Software Fundasaun Europa, doadór sira-nia inklui Google, disputa alegasoens Fairsearch. Iha loron 20, fulan Abril tinan 2016, UE aprezenta formál antitrust keixa ida kontra Google ne ' ebé bazeia ba alegasoens FairSearch, haksesuk-malu katak ninia vantajen ba fornesedores Android, ne ' ebé inklui obrigatóriu bundling nian suite tomak kona-ba instalasaun Google compete, hindering kapasidade ba fornesedór buka malu atu bele integra Android, no enkuantu limiti fornesedores sira husi realizasaun devices ne ' ebé suli forks Android, proessu prátika anti-kompetitivu.
<ref name="bbc-euandroidantitrust">{{Cite web|title=Google faces EU charge over Android 'abuse of dominance'|url=http://www.bbc.com/news/technology-36092441|accessdate=April 20, 2016|access-date=April 20, 2016}}</ref>
== Uza seluk ==
[[Imajen:OUYA-Console-set-h.png|right|thumb| Ouya console mós vídeo ida ne ' ebé halai Android<br>
]]
Natureza nakloke no customizable Android permite atu uza ba eletrónika seluk mos smartphones no galaxy, ne ' ebé inklui laptops no netbooks, smartbooks, nomós TVs (Android TV, Google TV) no cctv maior parte (N.e. Galaxy Camera). Aleinde ne'e, sistema operasaun Android haree ona kandidatura kona-ba nomós glasses (Google fó Kopu), smartwatches, headphones, ajente CD no DVD kareta, mirrors, ajente doasaun komunikasaun sosiál, fiksu no Lian kona-ba uzu ba telefoni IP. Ouya console mós vídeo ida halai Android, sai ba ema ida kona-ba kampaña Kickstarter susesu liu, crowdfunding US$ 8. 5m ba ninia dezenvolvimentu, no depois tuir kedas ho seluk bazeia ba Android consoles, hanesan Nvidia nia Shield Doasaun – pesoal ida ne ' ebé Android iha mós vídeo controller forma fatór.<ref><cite class="citation news">[http://www.engadget.com/2013/07/21/nvidia-shield-ships-july-31st/ "NVIDIA Shield ships July 31st, barely meets delayed launch window"]. </cite></ref>
Iha tinan 2011, Google hatudu "Android@Home", teknolojia automation uma ida ne ' ebé uza Android atu kontrola devices uma-kain sira ne ' ebé inklui switches naroman, poder sockets no thermostats lubuk ida. Prototype naroman bulbs sira fó sai katak bele kontrola husi ida telefone Android ka ai-kabelak, maibé xefe Android Andy Rubin nia an atu nota katak "hasees-an lightbulb ida kona-ba no pontu buat ida ne ' ebé foun", la hatudu ba lubuk ida servisu automation uma. Google, nia dehan, nia hanoin liu ambitiously no intensaun mak atu uza sira-nia pozisaun hanesan kalohan servisu nian ba fornesedór sira atu hatama produtu Google ba kliente sira-nia uma.<ref>{{Cite web|author=Nilay Patel|url=http://www.theverge.com/2012/2/27/2827615/android-home-automation-cloud-services-andy-rubin|title=Home in the clouds: Google's home automation platform to have major services integration|publisher=The Verge|date=February 27, 2012|accessdate=November 2, 2012|access-date=November 2, 2012}}</ref><ref>{{Cite web|url=http://gigaom.com/2013/05/07/why-the-time-has-come-for-android-home-to-finally-make-a-splash/|title=Why the time has come for Android @Home to finally make a splash by Janko Roettgers|publisher=}} {{Webarchive|url=https://web.archive.org/web/20130907222859/http://gigaom.com/2013/05/07/why-the-time-has-come-for-android-home-to-finally-make-a-splash/ |date=2013-09-07 }}</ref>
Parrot unveiled kareta ne ' ebé bazeia ba Android stereo sistema ida koñesidu hanesan Asteroid iha tinan 2011, tuir fali susesór ida, ne'e bazeia ba touchscreen Asteroid Nomós, iha tinan 2012. Iha tinan 2013, Clarion fó rasik kareta ne ' ebé bazeia ba Android stereo, AX1 nian. Iha fulan-Janeiru tinan 2014, iha ba Konsumidór Eletrónika Hatudu (CES), Google anunsia formasaun Nakloke Automotive Aliansa nian, grupu ida, inklui na'in automobile boot (Audi, Truk en-Jerál, Hyundai no Honda) no Nvidia, ne ' ebé hakarak atu prodús Android bazeia ba iha sistema halimar kareta la'o ba oin-oin, "[lori] di'ak Android ba automobile ne'e ho maneira ida ne ' ebé seguru no seamless."<ref name="verge-autoalliance">{{Cite web|title=Google launches the Android-based Open Automotive Alliance with Audi, Honda, GM, and more|url=http://www.theverge.com/2014/1/6/5279116/google-open-automotive-alliance-android-car-announcement|work=[[The Verge]]|first1=Aaron|last1=Souppouris|date=January 6, 2014|accessdate=January 24, 2014|access-date=January 24, 2014}}</ref>
Iha loron 18 fulan-Marsu tinan 2014, Google anunsia Android Uza, hanesan bazeia ba Android plataforma espesifikamente iha intensaun smartwatches no devices wearable seluk; de'it ida developer preview halo disponibiliza. Ida-ne'e tuir kedas ho unveiling rua Android Taka-bazeia ba devices, LG G Hadeer no Moto 360.<ref>{{Cite web|last=Palladino|first=Valentina|url=http://www.theverge.com/2014/3/18/5522226/google-reveals-android-wear-an-operating-system-designed-for|title=Google reveals Android Wear, an operating system for smartwatches|publisher=The Verge|date=September 30, 2013|accessdate=March 20, 2014|access-date=March 20, 2014}}</ref>
Iha loron 25, fulan-Juñu tinan 2014, iha Google I/O, anunsia katak TV Android, plataforma TV Nomós ida, ne'e muda TV Google fo-sai tiha ona. Google mós anunsia Android Auto ba uza iha karreta.
<ref><cite class="citation news">[http://www.cbsnews.com/news/google-io-android-tv-smart-homes-wearables-and-more/ "Google I/O: Android TV, Smart Cars, Wearables, and More"]. </cite></ref>
<span id="DESKTOP"></span>Android mai preinstalled kona-ba laptops balun (functionality ida ne ' ebé hanesan kona-bá kandidatura Android ne'e mós iha OS Chrome Google nian), no bele sai tiha ona mós kona-ba komputadór pesoal husi uzuáriu nia rohan. Kona-ba plataforma sira Android fornese functionality adisionál keyboards fíziku no mice, hamutuk ho teatru xave "Alt-Tab" ba switching kandidatura lalais ho keyboard ida. Iha fulan-Dezembru tinan 2014, reviewer ida komenta "katak sistema notifikasaun Android nian vastly liu kompletu no forte liu iha liu", no katak Android "absolutamente uza" hanesan ema ida mak operasaun sistema desktop prinsipál.<ref><cite class="citation news">Lunduke, Bryan (December 1, 2014). </cite></ref>
Iha fulan-Outubru tinan 2015, The Journal Estrada Didin relata katak Android sei serve hanesan Google nia futuru laptop prinsipál operasaun sistema, ho planu atu fold Chrome OS ba ida-neʼe husi tinan 2017. Sundar Pichai Google nian, ne ' ebé lori ba dezenvolvimentu Android, esplika katak "móvel hanesan paradigma computing ida mak ikusmai sei blend ho saida mak ita hanoin hanesan desktop ohin." no iha tinan 2009, Google ko fundadór Brin Sergey rasik hatete katak Chrome OS no Android sei "karik converge tempu ba tempu." Lockheimer, ne ' ebé substitui Pichai nu'udar xefe Android no Chrome OS, responde ba reklamasaun ne'e hanesan ofisiál Google blog post hateten katak "Bainhira ita atividade servisu kona-ba dalan atu lori hamutuk di'ak liu kona-ba sistema operasaun rua ne'e, katak laiha planu atu retira Chrome OS [ne'ebe iha] garante auto-aktualizasaun ba tinan lima nia laran". Ida ne'e mak la hanesan ho fatin Android apoiu ne'e badak ho "data EOL [sai …] pelumenus tinan 3 [ba futuru] ba galaxy Android ba edukasaun".l..<ref>{{Cite web|title=Android End of Life policy - Chrome for Work and Education Help|url=https://support.google.com/chrome/a/answer/6220366?hl=en}}</ref>
== See also ==
== Notes ==
<div class="reflist columns references-column-width" style="-moz-column-width: 40em; -webkit-column-width: 40em; column-width: 40em; list-style-type: lower-alpha;">
<references group="lower-alpha" /></div>
== References ==
{{Reflist|30em}}
edqdnj2t4g4u50tehciwlx5uiutnile
Módulo:Webarchive
828
5895
74044
60212
2026-02-23T22:19:36Z
en>Chaotic Enby
0
+megalodon.jp
74044
Scribunto
text/plain
--[[ ----------------------------------
Lua module implementing the {{webarchive}} template.
A merger of the functionality of three templates: {{wayback}}, {{webcite}} and {{cite archives}}
]]
--[[--------------------------< D E P E N D E N C I E S >------------------------------------------------------
]]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local categories = {}; -- category names
local config = {}; -- global configuration settings
local digits = {}; -- for i18n; table that translates local-wiki digits to western digits
local err_warn_msgs = {}; -- error and warning messages
local excepted_pages = {};
local month_num = {}; -- for i18n; table that translates local-wiki month names to western digits
local prefixes = {}; -- service provider tail string prefixes
local services = {}; -- archive service provider data from
local s_text = {}; -- table of static text strings used to build final rendering
local uncategorized_namespaces = {}; -- list of namespaces that we should not categorize
local uncategorized_subpages = {}; -- list of subpages that should not be categorized
--[[--------------------------< P A G E S C O P E I D E N T I F I E R S >----------------------------------
]]
local non_western_digits; -- boolean flag set true when data.digits.enable is true
local this_page = mw.title.getCurrentTitle();
local track = {}; -- Associative array to hold tracking categories
local ulx = {}; -- Associative array to hold template data
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Populates numbered arguments in a message string using an argument table.
]]
local function substitute (msg, args)
return args and mw.message.newRawMessage (msg, args):plain() or msg;
end
--[[--------------------------< tableLength >-----------------------
Given a 1-D table, return number of elements
]]
local function tableLength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display, no_link)
if nil == no_link then
if link and ('' ~= link) then
if display and ('' ~= display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
end
return display or ''; -- link not set so return the display text
else -- no_link
if display and ('' ~= display) then -- if there is display text
return display; -- return that
else
return link or ''; -- return the target article name or empty string
end
end
end
--[[--------------------------< createTracking >-----------------------
Return data in track[] ie. tracking categories
]]
local function createTracking()
if not excepted_pages[this_page.fullText] then -- namespace:title/fragment is allowed to be categorized (typically this module's / template's testcases page(s))
if uncategorized_namespaces[this_page.nsText] then
return ''; -- this page not to be categorized so return empty string
end
for _,v in ipairs (uncategorized_subpages) do -- cycle through page name patterns
if this_page.text:match (v) then -- test page name against each pattern
return ''; -- this subpage type not to be categorized so return empty string
end
end
end
local out = {};
if tableLength(track) > 0 then
for key, _ in pairs(track) do -- loop through table
table.insert (out, make_wikilink (key)); -- and convert category names to links
end
end
return table.concat (out); -- concat into one big string; empty string if table is empty
end
--[[--------------------------< inlineError >-----------------------
Critical error. Render output completely in red. Add to tracking category.
This function called as the last thing before abandoning this module
]]
local function inlineError (msg, args)
track[categories.error] = 1
return table.concat ({
'<span style="font-size:100%" class="error citation-comment">Error in ', -- open the error message span
config.tname, -- insert the local language template name
' template: ',
substitute (msg, args), -- insert the formatted error message
'.</span>', -- close the span
createTracking() -- add the category
})
end
--[[--------------------------< inlineRed >-----------------------
Render a text fragment in red, such as a warning as part of the final output.
Add tracking category.
]]
local function inlineRed(msg, trackmsg)
if trackmsg == "warning" then
track[categories.warning] = 1;
elseif trackmsg == "error" then
track[categories.error] = 1;
end
return '<span style="font-size:100%" class="error citation-comment">' .. msg .. '</span>'
end
--[[--------------------------< base62 >-----------------------
Convert base-62 to base-10
Credit: https://de.wikipedia.org/wiki/Modul:Expr
]]
local function base62( value )
local r = 1 -- default return value is input value is malformed
if value:match ('%W') then -- value must only be in the set [0-9a-zA-Z]
return; -- nil return when value contains extraneous characters
end
local n = #value -- number of characters in value
local k = 1
local c
r = 0
for i = n, 1, -1 do -- loop through all characters in value from ls digit to ms digit
c = value:byte( i, i )
if c >= 48 and c <= 57 then -- character is digit 0-9
c = c - 48
elseif c >= 65 and c <= 90 then -- character is ascii a-z
c = c - 55
else -- must be ascii A-Z
c = c - 61
end
r = r + c * k -- accumulate this base62 character's value
k = k * 62 -- bump for next
end -- for i
return r
end
--[[--------------------------< D E C O D E _ D A T E >--------------------------------------------------------
Given a date string, return it in iso format along with an indicator of the date's format. Except that month names
must be recognizable as legitimate month names with proper capitalization, and that the date string must match one
of the recognized date formats, no error checking is done here; return nil else
]]
local function decode_date (date_str)
local patterns = {
['dmy'] = {'^(%d%d?) +([^%s%d]+) +(%d%d%d%d)$', 'd', 'm', 'y'}, -- %a does not recognize unicode combining characters used by some languages
['mdy'] = {'^([^%s%d]+) (%d%d?), +(%d%d%d%d)$', 'm', 'd', 'y'},
['ymd'] = {'^(%d%d%d%d) +([^%s%d]+) (%d%d?)$', 'y', 'm', 'd'}, -- not mos compliant at en.wiki but may be acceptible at other wikis
};
local t = {};
if non_western_digits then -- this wiki uses non-western digits?
date_str = mw.ustring.gsub (date_str, '%d', digits); -- convert this wiki's non-western digits to western digits
end
if date_str:match ('^%d%d%d%d%-%d%d%-%d%d$') then -- already an iso format date, return western digits form
return date_str, 'iso';
end
for k, v in pairs (patterns) do
local c1, c2, c3 = mw.ustring.match (date_str, patterns[k][1]); -- c1 .. c3 are captured but we don't know what they hold
if c1 then -- set on match
t = { -- translate unspecified captures to y, m, and d
[patterns[k][2]] = c1, -- fill the table of captures with the captures
[patterns[k][3]] = c2, -- take index names from src_pattern table and assign sequential captures
[patterns[k][4]] = c3,
};
if month_num[t.m] then -- when month not already a number
t.m = month_num[t.m]; -- replace valid month name with a number
else
return nil, 'iso'; -- not a valid date form because month not valid
end
return mw.ustring.format ('%.4d-%.2d-%.2d', t.y, t.m, t.d), k; -- return date in iso format
end
end
return nil, 'iso'; -- date could not be decoded; return nil and default iso date
end
--[[--------------------------< makeDate >-----------------------
Given year, month, day numbers, (zero-padded or not) return a full date in df format
where df may be one of:
mdy, dmy, iso, ymd
on entry, year, month, day are presumed to be correct for the date that they represent; all are required
in this module, makeDate() is sometimes given an iso-format date in year:
makeDate (2018-09-20, nil, nil, df)
this works because table.concat() sees only one table member
]]
local function makeDate (year, month, day, df)
local format = {
['dmy'] = 'j F Y',
['mdy'] = 'F j, Y',
['ymd'] = 'Y F j',
['iso'] = 'Y-m-d',
};
local date = table.concat ({year, month, day}, '-'); -- assemble year-initial numeric-format date (zero padding not required here)
if non_western_digits then -- this wiki uses non-western digits?
date = mw.ustring.gsub (date, '%d', digits); -- convert this wiki's non-western digits to western digits
end
return mw.getContentLanguage():formatDate (format[df], date);
end
--[[--------------------------< I S _ V A L I D _ D A T E >----------------------------------------------------
Returns true if date is after 31 December 1899 (why is 1900 the min year? shouldn't the internet's date-of-birth
be min year?), not after today's date, and represents a valid date (29 February 2017 is not a valid date). Applies
Gregorian leapyear rules.
all arguments are required
]]
local function is_valid_date (year, month, day)
local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
local month_length;
local y, m, d;
if not year or '' == year or not month or '' == month or not day or '' == day then
return false; -- something missing
end
y = tonumber (year);
m = tonumber (month);
d = tonumber (day);
-- year and month are within bounds TODO: 1900?
if y < 1900 or m < 1 or m > 12 then
return false;
end
if (m==2) then -- if February
month_length = 28; -- then 28 days unless
if (0==(y%4) and (0~=(y%100) or 0==(y%400))) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
else
month_length=days_in_month[m];
end
if 1 > d or month_length < d then -- day is within bounds
return false;
end
-- date parts represent a valid date
-- confirm that it is less than or equal to today
--
-- Optimization: Avoid using os.time(), which changes every second.
-- Optimization: Avoid checking today.day, which changes every day, unless needed (same year/month).
-- https://phabricator.wikimedia.org/T416616
local today = os.date ('*t');
if ((y > today.year) or (y == today.year and m > today.month) or (y == today.year and m == today.month and d > today.day)) then
return false;
end
return true;
end
--[[--------------------------< decodeWebciteDate >-----------------------
Given a URI-path to Webcite (eg. /67xHmVFWP) return the encoded date in df format
returns date string in df format - webcite date is a unix timestamp encoded as bae62
or the string 'query'
]]
local function decodeWebciteDate(path, df)
local dt = {};
local decode;
dt = mw.text.split(path, "/")
-- valid URL formats that are not base62
-- http://www.webcitation.org/query?id=1138911916587475
-- http://www.webcitation.org/query?url=http..&date=2012-06-01+21:40:03
-- http://www.webcitation.org/1138911916587475
-- http://www.webcitation.org/cache/73e53dd1f16cf8c5da298418d2a6e452870cf50e
-- http://www.webcitation.org/getfile.php?fileid=1c46e791d68e89e12d0c2532cc3cf629b8bc8c8e
if dt[2]:find ('query', 1, true) or
dt[2]:find ('cache', 1, true) or
dt[2]:find ('getfile', 1, true) or
tonumber(dt[2]) then
return 'query';
end
decode = base62(dt[2]); -- base62 string -> exponential number
if not decode then
return nil; -- nil return when dt[2] contains characters not in %w
end
dt = os.date('*t', string.format("%d", decode):sub(1,10)) -- exponential number -> text -> first 10 characters (a unix timestamp) -> a table of date parts
decode = makeDate (dt.year, dt.month, dt.day, 'iso'); -- date comparisons are all done in iso format with western digits
if non_western_digits then -- this wiki uses non-western digits?
decode = mw.ustring.gsub (decode, '%d', digits); -- convert this wiki's non-western digits to western digits
end
return decode;
end
--[[--------------------------< decodeWaybackDate >-----------------------
Given a URI-path to Wayback (eg. /web/20160901010101/http://example.com )
or Library of Congress Web Archives (eg. /all/20160901010101/http://example.com)
or UK Government Web Archive (eg. /ukgwa/20160901010101/http://example.com or /tna/20160901010101/http://example.com)
return the formatted date eg. "September 1, 2016" in df format
Handle non-digits in snapshot ID such as "re_" and "-" and "*"
returns two values:
first value is one of these:
valid date string in df format - wayback date is valid (including the text string 'index' when date is '/*/')
empty string - wayback date is malformed (less than 8 digits, not a valid date)
nil - wayback date is '/save/' or otherwise not a number
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeWaybackDate(path, df)
local msg, snapdate;
snapdate = path:gsub ('^/web/', ''):gsub ('^/all/', ''):gsub ('^/ukgwa/', ''):gsub ('^/tna/', ''):gsub ('^/', ''); -- remove leading /web/, /all/, /ukgwa/, /tna/, or /
snapdate = snapdate:match ('^[^/]+'); -- get timestamp
if snapdate == "*" then -- eg. /web/*/http.., etc.
return 'index'; -- return indicator that this url has an index date
end
snapdate = snapdate:gsub ('%a%a_%d?$', ''):gsub ('%-', ''); -- from date, remove any trailing "re_", dashes
msg = '';
if snapdate:match ('%*$') then -- a trailing '*' causes calendar display at archive .org
snapdate = snapdate:gsub ('%*$', ''); -- remove so not part of length calc later
msg = inlineRed (err_warn_msgs.ts_cal, 'warning'); -- make a message
end
if not tonumber(snapdate) then
return nil, 'ts_nan'; -- return nil (fatal error flag) and message selector
end
local dlen = snapdate:len();
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate, msg; -- return date with message if any
else
return snapdate, msg .. inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message(s)
end
end
--[[--------------------------< decodeArchiveisDate >-----------------------
Given an Archive.is "long link" URI-path (e.g. /2016.08.28-144552/http://example.com)
return the date in df format (e.g. if df = dmy, return 28 August 2016)
Handles "." and "-" in snapshot date, so 2016.08.28-144552 is same as 20160828144552
returns two values:
first value is one of these:
valid date string in df format - archive.is date is valid (including the text string 'short link' when url is the short form)
empty string - wayback date is malformed (not a number, less than 8 digits, not a valid date)
nil - wayback date is '/save/'
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeArchiveisDate(path, df)
local snapdate
if path:match ('^/%w+$') then -- short form url path is '/' followed by some number of base 62 digits and nothing else
return "short link" -- e.g. http://archive.is/hD1qz
end
snapdate = mw.text.split (path, '/')[2]:gsub('[%.%-]', ''); -- get snapshot date, e.g. 2016.08.28-144552; remove periods and hyphens
local dlen = string.len(snapdate)
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate; -- return date
else
return snapdate, inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message
end
end
--[[--------------------------< decodeMegalodonDate >-----------------------
Given a Megalodon.jp URI-path (e.g. /2016-0828-1445-52/http://example.com)
return the date in df format (e.g. if df = dmy, return 28 August 2016)
Handles "-" in snapshot date, so 2016-0828-1445-52 is same as 20160828144552
returns two values:
first value is one of these:
valid date string in df format - megalodon.jp date is valid (including the text string 'index' when the url path is /?url=)
empty string - megalodon.jp date is malformed (not a number, less than 8 digits, not a valid date)
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeMegalodonDate(path, df)
local snapdate
if path:match ('^/%?url=') then -- short form url path is '/' followed by some number of base 62 digits and nothing else
return 'index' -- e.g. http://archive.is/hD1qz
end
snapdate = mw.text.split (path, '/')[2]:gsub('[%-]', ''); -- get snapshot date, e.g. 2016-0828-1445-52; remove hyphens
local dlen = string.len(snapdate)
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate; -- return date
else
return snapdate, inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message
end
end
--[[--------------------------< serviceName >-----------------------
Given a domain extracted by mw.uri.new() (eg. web.archive.org) set tail string and service ID
]]
local function serviceName(host, no_link)
local tracking;
local index;
host = host:lower():gsub ('^web%.(.+)', '%1'):gsub ('^www%.(.+)', '%1'); -- lowercase, remove web. and www. subdomains
if services[host] then
index = host;
else
for k, _ in pairs (services) do
if host:find ('%f[%a]'..k:gsub ('([%.%-])', '%%%1')) then
index = k;
break;
end
end
end
if index then
local out = {''}; -- empty string in [1] so that concatenated result has leading single space
ulx.url1.service = services[index][4] or 'other';
tracking = services[index][5] or categories.other;
-- build tail string
if false == services[index][1] then -- select prefix
table.insert (out, prefixes.at);
elseif true == services[index][1] then
table.insert (out, prefixes.atthe);
else
table.insert (out, services[index][1]);
end
table.insert (out, make_wikilink (services[index][2], services[index][3], no_link)); -- add article wikilink
if services[index][6] then -- add tail postfix if it exists
table.insert (out, services[index][6]);
end
ulx.url1.tail = table.concat (out, ' '); -- put it all together; result has leading space character
else -- here when unknown archive
ulx.url1.service = 'other';
tracking = categories.unknown;
ulx.url1.tail = table.concat ({'', prefixes.at, host, inlineRed (err_warn_msgs.unknown_url, error)}, ' ');
end
track[tracking] = 1
end
--[[--------------------------< parseExtraArgs >-----------------------
Parse numbered arguments starting at 2, such as url2..url10, date2..date10, title2..title10
For example: {{webarchive |url=.. |url4=.. |url7=..}}
Three url arguments not in numeric sequence (1..4..7).
Function only processes arguments numbered 2 or greater (in this case 4 and 7)
It creates numeric sequenced table entries like:
urlx.url2.url = <argument value for url4>
urlx.url3.url = <argument value for url7>
Returns the number of URL arguments found numbered 2 or greater (in this case returns "2")
]]
local function parseExtraArgs(args)
local i, j, argurl, argurl2, argdate, argtitle
j = 2
for i = 2, config.maxurls do
argurl = "url" .. i
if args[argurl] then
argurl2 = "url" .. j
ulx[argurl2] = {}
ulx[argurl2]["url"] = args[argurl]
argdate = "date" .. i
if args[argdate] then
ulx[argurl2]["date"] = args[argdate]
else
ulx[argurl2]["date"] = inlineRed (err_warn_msgs.date_miss, 'warning');
end
argtitle = "title" .. i
if args[argtitle] then
ulx[argurl2]["title"] = args[argtitle]
else
ulx[argurl2]["title"] = nil
end
j = j + 1
end
end
if j == 2 then
return 0
else
return j - 2
end
end
--[[--------------------------< comma >-----------------------
Given a date string, return "," if it's MDY
]]
local function comma(date)
return (date and date:match ('%a+ +%d%d?(,) +%d%d%d%d')) or '';
end
--[[--------------------------< createRendering >-----------------------
Return a rendering of the data in ulx[][]
]]
local function createRendering()
local displayfield
local out = {};
local index_date, msg = ulx.url1.date:match ('(index)(.*)'); -- when ulx.url1.date extract 'index' text and message text (if there is a message)
ulx.url1.date = ulx.url1.date:gsub ('index.*', 'index'); -- remove message
if 'none' == ulx.url1.format then -- For {{wayback}}, {{webcite}}
if 'archiveis' == ulx.url1.service then -- block archive.is links
table.insert (out, s_text.deprecated); -- no url for you
else
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx.url1.url); -- add url
end
if ulx.url1.title then
if not ('archiveis' == ulx.url1.service) then -- no need for anything more if we're dealing with archive.is
table.insert (out, ' ') -- the required space
table.insert (out, ulx.url1.title) -- the title
table.insert (out, ']'); -- close extlink markup
end
table.insert (out, ulx.url1.tail); -- tail text
if ulx.url1.date then
table.insert (out, ' ('); -- open date text; TODO: why the html entity? replace with regular space?
table.insert (out, 'index' == ulx.url1.date and s_text.archive or s_text.archived); -- add text
table.insert (out, ' '); -- insert a space
table.insert (out, ulx.url1.date); -- add date
table.insert (out, ')'); -- close date text
end
else -- no title
if 'archiveis' == ulx.url1.service then -- archive.is index pages already aren't parsed
table.insert (out, table.concat ({' ', s_text.archived, ' '})); -- add timestamp date (will include mismatch message if there is one)
else
if index_date then -- when url date is 'index'
table.insert (out, table.concat ({' ', s_text.Archive_index, ']'})); -- add the index link label
table.insert (out, msg or ''); -- add date mismatch message when url date is /*/ and |date= has valid date
else
table.insert (out, table.concat ({' ', s_text.Archived, '] '})); -- add link label for url has timestamp date (will include mismatch message if there is one)
end
end
if ulx.url1.date then
if 'index' ~= ulx.url1.date then
table.insert (out, ulx.url1.date); -- add date when data is not 'index'
end
table.insert (out, comma(ulx.url1.date)); -- add ',' if date format is mdy
table.insert (out, ulx.url1.tail); -- add tail text
else -- no date
table.insert (out, ulx.url1.tail); -- add tail text
end
end
if 0 < ulx.url1.extraurls then -- For multiple archive URLs
local tot = ulx.url1.extraurls + 1
table.insert (out, '.') -- terminate first url
table.insert (out, table.concat ({' ', s_text.addlarchives, ': '})); -- add header text
for i=2, tot do -- loop through the additionals
local index = table.concat ({'url', i}); -- make an index
displayfield = ulx[index]['title'] and 'title' or 'date'; -- choose display text
serviceName(ulx[index]['url']);
if 'archiveis' == ulx.url1.service then
table.insert (out, s_text.deprecated);
else
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx[index]['url']); -- add the url
table.insert (out, ' '); -- the required space
table.insert (out, ulx[index][displayfield]); -- add the label
table.insert (out, ']'); -- close extlink markup
end
table.insert (out, i==tot and '.' or ', '); -- add terminator
end
end
return table.concat (out); -- make a big string and done
else -- For {{cite archives}}
if 'addlarchives' == ulx.url1.format then -- Multiple archive services
table.insert (out, table.concat ({s_text.addlarchives, ': '})); -- add header text
else -- Multiple pages from the same archive
table.insert (out, table.concat ({s_text.addlpages, ' '})); -- add header text
table.insert (out, ulx.url1.date); -- add date to header text
table.insert (out, ': '); -- close header text
end
local tot = ulx.url1.extraurls + 1;
for i=1, tot do -- loop through the additionals
local index = table.concat ({'url', i}); -- make an index
serviceName(ulx[index]['url']); -- compute the service name in a very scuffed way
if 'archiveis' == ulx.url1.service then
table.insert (out, s_text.deprecated);
else
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx[index]['url']); -- add url
table.insert (out, ' '); -- add required space
displayfield = ulx[index]['title'];
if 'addlarchives' == ulx.url1.format then
if not displayfield then
displayfield = ulx[index]['date']
end
else -- must be addlpages
if not displayfield then
displayfield = table.concat ({s_text.Page, ' ', i});
end
end
table.insert (out, displayfield); -- add title, date, page label text
table.insert (out, ']'); -- close extlink markup
end
table.insert (out, (i==tot and '.' or ', ')); -- add terminator
end
return table.concat (out); -- make a big string and done
end
end
--[[--------------------------< P A R A M E T E R _ N A M E _ X L A T E >--------------------------------------
for internaltionalization, translate local-language parameter names to their English equivalents
TODO: return error message if multiple aliases of the same canonical parameter name are found?
returns two tables:
new_args - holds canonical form parameters and their values either from translation or because the parameter was already in canonical form
origin - maps canonical-form parameter names to their untranslated (local language) form for error messaging in the local language
unrecognized parameters are ignored
]]
local function parameter_name_xlate (args, params, enum_params)
local name; -- holds modifiable name of the parameter name during evaluation
local enum; -- for enumerated parameters, holds the enumerator during evaluation
local found = false; -- flag used to break out of nested for loops
local new_args = {}; -- a table that holds canonical and translated parameter k/v pairs
local origin = {}; -- a table that maps original (local language) parameter names to their canonical name for local language error messaging
local unnamed_params; -- set true when unsupported positional parameters are detected
for k, v in pairs (args) do -- loop through all of the arguments in the args table
name = k; -- copy of original parameter name
if 'string' == type (k) then
if non_western_digits then -- true when non-western digits supported at this wiki
name = mw.ustring.gsub (name, '%d', digits); -- convert this wiki's non-western digits to western digits
end
enum = name:match ('%d+$'); -- get parameter enumerator if it exists; nil else
if not enum then -- no enumerator so looking for non-enumnerated parameters
-- TODO: insert shortcut here? if params[name] then name holds the canonical parameter name; no need to search further
for pname, aliases in pairs (params) do -- loop through each parameter the params table
for _, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
if name == alias then
new_args[pname] = v; -- create a new entry in the new_args table
origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
found = true; -- flag so that we can break out of these nested for loops
break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
end
end
if found then -- true when we found an alias that matched name
found = false; -- reset the flag
break; -- go do next args k/v pair
end
end
else -- enumerated parameters
name = name:gsub ('%d$', '#'); -- replace enumeration digits with place holder for table search
-- TODO: insert shortcut here? if num_params[name] then name holds the canonical parameter name; no need to search further
for pname, aliases in pairs (enum_params) do -- loop through each parameter the num_params table
for _, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
if name == alias then
pname = pname:gsub ('#$', enum); -- replace the '#' place holder with the actual enumerator
new_args[pname] = v; -- create a new entry in the new_args table
origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
found = true; -- flag so that we can break out of these nested for loops
break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
end
end
if found then -- true when we found an alias that matched name
found = false; -- reset the flag
break; -- go do next args k/v pair
end
end
end
else
unnamed_params = true; -- flag for unsupported positional parameters
end
end -- for k, v
return new_args, origin, unnamed_params;
end
--[[--------------------------< W E B A R C H I V E >----------------------------------------------------------
template entry point
]]
local function webarchive(frame)
local args = getArgs (frame);
local data = mw.loadData (table.concat ({ -- make a data module name; sandbox or live
'Module:Webarchive/data',
frame:getTitle():find('sandbox', 1, true) and '/sandbox' or '' -- this instance is ./sandbox then append /sandbox
}));
categories = data.categories; -- fill in the forward declarations
config = data.config;
if data.digits.enable then
digits = data.digits; -- for i18n; table of digits in the local wiki's language
non_western_digits = true; -- use_non_western_digits
end
err_warn_msgs = data.err_warn_msgs;
excepted_pages = data.excepted_pages;
month_num = data.month_num; -- for i18n; table of month names in the local wiki's language
prefixes = data.prefixes;
services = data.services;
s_text = data.s_text;
uncategorized_namespaces = data.uncategorized_namespaces;
uncategorized_subpages = data.uncategorized_subpages;
local origin = {}; -- holds a map of English to local language parameter names used in the current template; not currently used
local unnamed_params; -- boolean set to true when template call has unnamed parameters
args, origin, unnamed_params = parameter_name_xlate (args, data.params, data.enum_params); -- translate parameter names in args to English
local date, format, msg, udate, uri, url;
local ldf = 'iso'; -- when there is no |date= parameter, render url dates in iso format
if args.url and args.url1 then -- URL argument (first)
return inlineError (data.crit_err_msgs.conflicting, {origin.url, origin.url1});
end
url = args.url or args.url1;
if not url then
return inlineError (data.crit_err_msgs.empty);
end
-- these iabot bugs perportedly fixed; removing these causes lua script error
--[[ -- at Template:Webarchive/testcases/Production; resolve that before deleting these tests
if mw.ustring.find( url, "https://web.http", 1, true ) then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
track[categories.error] = 1;
return inlineError (data.crit_err_msgs.iabot1);
end
if url == "https://web.archive.org/http:/" then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
track[categories.error] = 1;
return inlineError (data.crit_err_msgs.iabot2);
end
]]
if not (url:lower():find ('^http') or url:find ('^//')) then
return inlineError (data.crit_err_msgs.invalid_url );
end
ulx.url1 = {}
ulx.url1.url = url
ulx.url1.extraurls = parseExtraArgs(args)
local good = false;
good, uri = pcall (mw.uri.new, ulx.url1.url); -- get a table of uri parts from this url; protected mode to prevent lua error when ulx.url1.url is malformed
if not good or nil == uri.host then -- abandon when ulx.url1.url is malformed
return inlineError (data.crit_err_msgs.invalid_url);
end
serviceName(uri.host, args.nolink)
if args.date and args.date1 then -- Date argument
return inlineError (data.crit_err_msgs.conflicting, {origin.date, origin.date1});
end
date = args.date or args.date1;
date = date and date:gsub (' +', ' '); -- replace multiple spaces with a single space
if date and config.verifydates then
if '*' == date then
date = 'index';
ldf = 'iso'; -- set to default format
elseif 'mdy' == date then
date = nil; -- if date extracted from URL,
ldf = 'mdy'; -- then |date=mdy overrides iso
elseif 'dmy' == date then
date = nil; -- if date extracted from URL,
ldf = 'dmy'; -- then |date=dmy overrides iso
elseif 'ymd' == date then
date = nil; -- if date extracted from URL,
ldf = 'ymd'; -- then |date=ymd overrides iso
else
date, ldf = decode_date (date); -- get an iso format date from date and get date's original format
end
end
if 'wayback' == ulx.url1.service or 'locwebarchives' == ulx.url1.service or 'ukgwa' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeWaybackDate (uri.path); -- get the url date in iso format and format of date in |date=; 'index' when wayback url date is *
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
else -- no |date=
udate, msg = decodeWaybackDate (uri.path);
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if '' == udate then
date = nil; -- unset
else
date = udate;
end
end
elseif 'webcite' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate = decodeWebciteDate (uri.path); -- get the url date in iso format
if 'query' ~= udate then -- skip if query
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'),
});
end
end
end
end
else
date = decodeWebciteDate( uri.path, "iso" )
if date == "query" then
date = nil; -- unset
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
elseif not date then -- invalid base62 string
date = inlineRed (err_warn_msgs.date1, 'error');
end
end
elseif 'archiveis' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeArchiveisDate (uri.path) -- get the url date in iso format
if 'short link' ~= udate then -- skip if short link
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
end
else -- no |date=
udate, msg = decodeArchiveisDate( uri.path, "iso" )
if udate == "short link" then
date = nil; -- unset
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
elseif '' == udate then
date = nil; -- unset
else
date = udate;
end
end
elseif 'megalodon' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeMegalodonDate (uri.path) -- get the url date in iso format
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
else -- no |date=
udate, msg = decodeArchiveisDate( uri.path, "iso" )
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if '' == udate then
date = nil; -- unset
else
date = udate;
end
end
else -- some other service
if not date then
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
end
end
if 'index' == date then
ulx.url1.date = date .. (msg or ''); -- create index + message (if there is one)
elseif date then
ulx.url1.date = makeDate (date, nil, nil, ldf) .. (msg or ''); -- create a date in the wiki's local language + message (if there is one)
else
ulx.url1.date = msg;
end
format = args.format; -- Format argument
if not format then
format = "none"
else
for k, v in pairs (data.format_vals) do -- |format= accepts two specific values loop through a table of those values
local found; -- declare a nil flag
for _, p in ipairs (v) do -- loop through local language variants
if format == p then -- when |format= value matches
format = k; -- use name from table key
found = true; -- declare found so that we can break out of outer for loop
break; -- break out of inner for loop
end
end
if found then
break;
end
end
if format == "addlpages" then
if not ulx.url1.date then
format = "none"
end
elseif format == "addlarchives" then
format = "addlarchives"
else
format = "none"
end
end
ulx.url1.format = format
if args.title and args.title1 then -- Title argument
return inlineError (data.crit_err_msgs.conflicting, {origin.title, origin.title1});
end
ulx.url1.title = args.title or args.title1;
local rend = createRendering()
if not rend then
return inlineError (data.crit_err_msgs.unknown);
end
return rend .. ((unnamed_params and inlineRed (err_warn_msgs.unnamed_params, 'warning')) or '') .. createTracking();
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {webarchive = webarchive};
65n1m5hr2hdspk5vcr6ped9grfdod4g
74045
74044
2026-07-12T11:06:54Z
Robertsky
10424
1 versaun husi [[:en:Module:Webarchive]]
74044
Scribunto
text/plain
--[[ ----------------------------------
Lua module implementing the {{webarchive}} template.
A merger of the functionality of three templates: {{wayback}}, {{webcite}} and {{cite archives}}
]]
--[[--------------------------< D E P E N D E N C I E S >------------------------------------------------------
]]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local categories = {}; -- category names
local config = {}; -- global configuration settings
local digits = {}; -- for i18n; table that translates local-wiki digits to western digits
local err_warn_msgs = {}; -- error and warning messages
local excepted_pages = {};
local month_num = {}; -- for i18n; table that translates local-wiki month names to western digits
local prefixes = {}; -- service provider tail string prefixes
local services = {}; -- archive service provider data from
local s_text = {}; -- table of static text strings used to build final rendering
local uncategorized_namespaces = {}; -- list of namespaces that we should not categorize
local uncategorized_subpages = {}; -- list of subpages that should not be categorized
--[[--------------------------< P A G E S C O P E I D E N T I F I E R S >----------------------------------
]]
local non_western_digits; -- boolean flag set true when data.digits.enable is true
local this_page = mw.title.getCurrentTitle();
local track = {}; -- Associative array to hold tracking categories
local ulx = {}; -- Associative array to hold template data
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Populates numbered arguments in a message string using an argument table.
]]
local function substitute (msg, args)
return args and mw.message.newRawMessage (msg, args):plain() or msg;
end
--[[--------------------------< tableLength >-----------------------
Given a 1-D table, return number of elements
]]
local function tableLength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display, no_link)
if nil == no_link then
if link and ('' ~= link) then
if display and ('' ~= display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
end
return display or ''; -- link not set so return the display text
else -- no_link
if display and ('' ~= display) then -- if there is display text
return display; -- return that
else
return link or ''; -- return the target article name or empty string
end
end
end
--[[--------------------------< createTracking >-----------------------
Return data in track[] ie. tracking categories
]]
local function createTracking()
if not excepted_pages[this_page.fullText] then -- namespace:title/fragment is allowed to be categorized (typically this module's / template's testcases page(s))
if uncategorized_namespaces[this_page.nsText] then
return ''; -- this page not to be categorized so return empty string
end
for _,v in ipairs (uncategorized_subpages) do -- cycle through page name patterns
if this_page.text:match (v) then -- test page name against each pattern
return ''; -- this subpage type not to be categorized so return empty string
end
end
end
local out = {};
if tableLength(track) > 0 then
for key, _ in pairs(track) do -- loop through table
table.insert (out, make_wikilink (key)); -- and convert category names to links
end
end
return table.concat (out); -- concat into one big string; empty string if table is empty
end
--[[--------------------------< inlineError >-----------------------
Critical error. Render output completely in red. Add to tracking category.
This function called as the last thing before abandoning this module
]]
local function inlineError (msg, args)
track[categories.error] = 1
return table.concat ({
'<span style="font-size:100%" class="error citation-comment">Error in ', -- open the error message span
config.tname, -- insert the local language template name
' template: ',
substitute (msg, args), -- insert the formatted error message
'.</span>', -- close the span
createTracking() -- add the category
})
end
--[[--------------------------< inlineRed >-----------------------
Render a text fragment in red, such as a warning as part of the final output.
Add tracking category.
]]
local function inlineRed(msg, trackmsg)
if trackmsg == "warning" then
track[categories.warning] = 1;
elseif trackmsg == "error" then
track[categories.error] = 1;
end
return '<span style="font-size:100%" class="error citation-comment">' .. msg .. '</span>'
end
--[[--------------------------< base62 >-----------------------
Convert base-62 to base-10
Credit: https://de.wikipedia.org/wiki/Modul:Expr
]]
local function base62( value )
local r = 1 -- default return value is input value is malformed
if value:match ('%W') then -- value must only be in the set [0-9a-zA-Z]
return; -- nil return when value contains extraneous characters
end
local n = #value -- number of characters in value
local k = 1
local c
r = 0
for i = n, 1, -1 do -- loop through all characters in value from ls digit to ms digit
c = value:byte( i, i )
if c >= 48 and c <= 57 then -- character is digit 0-9
c = c - 48
elseif c >= 65 and c <= 90 then -- character is ascii a-z
c = c - 55
else -- must be ascii A-Z
c = c - 61
end
r = r + c * k -- accumulate this base62 character's value
k = k * 62 -- bump for next
end -- for i
return r
end
--[[--------------------------< D E C O D E _ D A T E >--------------------------------------------------------
Given a date string, return it in iso format along with an indicator of the date's format. Except that month names
must be recognizable as legitimate month names with proper capitalization, and that the date string must match one
of the recognized date formats, no error checking is done here; return nil else
]]
local function decode_date (date_str)
local patterns = {
['dmy'] = {'^(%d%d?) +([^%s%d]+) +(%d%d%d%d)$', 'd', 'm', 'y'}, -- %a does not recognize unicode combining characters used by some languages
['mdy'] = {'^([^%s%d]+) (%d%d?), +(%d%d%d%d)$', 'm', 'd', 'y'},
['ymd'] = {'^(%d%d%d%d) +([^%s%d]+) (%d%d?)$', 'y', 'm', 'd'}, -- not mos compliant at en.wiki but may be acceptible at other wikis
};
local t = {};
if non_western_digits then -- this wiki uses non-western digits?
date_str = mw.ustring.gsub (date_str, '%d', digits); -- convert this wiki's non-western digits to western digits
end
if date_str:match ('^%d%d%d%d%-%d%d%-%d%d$') then -- already an iso format date, return western digits form
return date_str, 'iso';
end
for k, v in pairs (patterns) do
local c1, c2, c3 = mw.ustring.match (date_str, patterns[k][1]); -- c1 .. c3 are captured but we don't know what they hold
if c1 then -- set on match
t = { -- translate unspecified captures to y, m, and d
[patterns[k][2]] = c1, -- fill the table of captures with the captures
[patterns[k][3]] = c2, -- take index names from src_pattern table and assign sequential captures
[patterns[k][4]] = c3,
};
if month_num[t.m] then -- when month not already a number
t.m = month_num[t.m]; -- replace valid month name with a number
else
return nil, 'iso'; -- not a valid date form because month not valid
end
return mw.ustring.format ('%.4d-%.2d-%.2d', t.y, t.m, t.d), k; -- return date in iso format
end
end
return nil, 'iso'; -- date could not be decoded; return nil and default iso date
end
--[[--------------------------< makeDate >-----------------------
Given year, month, day numbers, (zero-padded or not) return a full date in df format
where df may be one of:
mdy, dmy, iso, ymd
on entry, year, month, day are presumed to be correct for the date that they represent; all are required
in this module, makeDate() is sometimes given an iso-format date in year:
makeDate (2018-09-20, nil, nil, df)
this works because table.concat() sees only one table member
]]
local function makeDate (year, month, day, df)
local format = {
['dmy'] = 'j F Y',
['mdy'] = 'F j, Y',
['ymd'] = 'Y F j',
['iso'] = 'Y-m-d',
};
local date = table.concat ({year, month, day}, '-'); -- assemble year-initial numeric-format date (zero padding not required here)
if non_western_digits then -- this wiki uses non-western digits?
date = mw.ustring.gsub (date, '%d', digits); -- convert this wiki's non-western digits to western digits
end
return mw.getContentLanguage():formatDate (format[df], date);
end
--[[--------------------------< I S _ V A L I D _ D A T E >----------------------------------------------------
Returns true if date is after 31 December 1899 (why is 1900 the min year? shouldn't the internet's date-of-birth
be min year?), not after today's date, and represents a valid date (29 February 2017 is not a valid date). Applies
Gregorian leapyear rules.
all arguments are required
]]
local function is_valid_date (year, month, day)
local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
local month_length;
local y, m, d;
if not year or '' == year or not month or '' == month or not day or '' == day then
return false; -- something missing
end
y = tonumber (year);
m = tonumber (month);
d = tonumber (day);
-- year and month are within bounds TODO: 1900?
if y < 1900 or m < 1 or m > 12 then
return false;
end
if (m==2) then -- if February
month_length = 28; -- then 28 days unless
if (0==(y%4) and (0~=(y%100) or 0==(y%400))) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
else
month_length=days_in_month[m];
end
if 1 > d or month_length < d then -- day is within bounds
return false;
end
-- date parts represent a valid date
-- confirm that it is less than or equal to today
--
-- Optimization: Avoid using os.time(), which changes every second.
-- Optimization: Avoid checking today.day, which changes every day, unless needed (same year/month).
-- https://phabricator.wikimedia.org/T416616
local today = os.date ('*t');
if ((y > today.year) or (y == today.year and m > today.month) or (y == today.year and m == today.month and d > today.day)) then
return false;
end
return true;
end
--[[--------------------------< decodeWebciteDate >-----------------------
Given a URI-path to Webcite (eg. /67xHmVFWP) return the encoded date in df format
returns date string in df format - webcite date is a unix timestamp encoded as bae62
or the string 'query'
]]
local function decodeWebciteDate(path, df)
local dt = {};
local decode;
dt = mw.text.split(path, "/")
-- valid URL formats that are not base62
-- http://www.webcitation.org/query?id=1138911916587475
-- http://www.webcitation.org/query?url=http..&date=2012-06-01+21:40:03
-- http://www.webcitation.org/1138911916587475
-- http://www.webcitation.org/cache/73e53dd1f16cf8c5da298418d2a6e452870cf50e
-- http://www.webcitation.org/getfile.php?fileid=1c46e791d68e89e12d0c2532cc3cf629b8bc8c8e
if dt[2]:find ('query', 1, true) or
dt[2]:find ('cache', 1, true) or
dt[2]:find ('getfile', 1, true) or
tonumber(dt[2]) then
return 'query';
end
decode = base62(dt[2]); -- base62 string -> exponential number
if not decode then
return nil; -- nil return when dt[2] contains characters not in %w
end
dt = os.date('*t', string.format("%d", decode):sub(1,10)) -- exponential number -> text -> first 10 characters (a unix timestamp) -> a table of date parts
decode = makeDate (dt.year, dt.month, dt.day, 'iso'); -- date comparisons are all done in iso format with western digits
if non_western_digits then -- this wiki uses non-western digits?
decode = mw.ustring.gsub (decode, '%d', digits); -- convert this wiki's non-western digits to western digits
end
return decode;
end
--[[--------------------------< decodeWaybackDate >-----------------------
Given a URI-path to Wayback (eg. /web/20160901010101/http://example.com )
or Library of Congress Web Archives (eg. /all/20160901010101/http://example.com)
or UK Government Web Archive (eg. /ukgwa/20160901010101/http://example.com or /tna/20160901010101/http://example.com)
return the formatted date eg. "September 1, 2016" in df format
Handle non-digits in snapshot ID such as "re_" and "-" and "*"
returns two values:
first value is one of these:
valid date string in df format - wayback date is valid (including the text string 'index' when date is '/*/')
empty string - wayback date is malformed (less than 8 digits, not a valid date)
nil - wayback date is '/save/' or otherwise not a number
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeWaybackDate(path, df)
local msg, snapdate;
snapdate = path:gsub ('^/web/', ''):gsub ('^/all/', ''):gsub ('^/ukgwa/', ''):gsub ('^/tna/', ''):gsub ('^/', ''); -- remove leading /web/, /all/, /ukgwa/, /tna/, or /
snapdate = snapdate:match ('^[^/]+'); -- get timestamp
if snapdate == "*" then -- eg. /web/*/http.., etc.
return 'index'; -- return indicator that this url has an index date
end
snapdate = snapdate:gsub ('%a%a_%d?$', ''):gsub ('%-', ''); -- from date, remove any trailing "re_", dashes
msg = '';
if snapdate:match ('%*$') then -- a trailing '*' causes calendar display at archive .org
snapdate = snapdate:gsub ('%*$', ''); -- remove so not part of length calc later
msg = inlineRed (err_warn_msgs.ts_cal, 'warning'); -- make a message
end
if not tonumber(snapdate) then
return nil, 'ts_nan'; -- return nil (fatal error flag) and message selector
end
local dlen = snapdate:len();
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate, msg; -- return date with message if any
else
return snapdate, msg .. inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message(s)
end
end
--[[--------------------------< decodeArchiveisDate >-----------------------
Given an Archive.is "long link" URI-path (e.g. /2016.08.28-144552/http://example.com)
return the date in df format (e.g. if df = dmy, return 28 August 2016)
Handles "." and "-" in snapshot date, so 2016.08.28-144552 is same as 20160828144552
returns two values:
first value is one of these:
valid date string in df format - archive.is date is valid (including the text string 'short link' when url is the short form)
empty string - wayback date is malformed (not a number, less than 8 digits, not a valid date)
nil - wayback date is '/save/'
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeArchiveisDate(path, df)
local snapdate
if path:match ('^/%w+$') then -- short form url path is '/' followed by some number of base 62 digits and nothing else
return "short link" -- e.g. http://archive.is/hD1qz
end
snapdate = mw.text.split (path, '/')[2]:gsub('[%.%-]', ''); -- get snapshot date, e.g. 2016.08.28-144552; remove periods and hyphens
local dlen = string.len(snapdate)
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate; -- return date
else
return snapdate, inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message
end
end
--[[--------------------------< decodeMegalodonDate >-----------------------
Given a Megalodon.jp URI-path (e.g. /2016-0828-1445-52/http://example.com)
return the date in df format (e.g. if df = dmy, return 28 August 2016)
Handles "-" in snapshot date, so 2016-0828-1445-52 is same as 20160828144552
returns two values:
first value is one of these:
valid date string in df format - megalodon.jp date is valid (including the text string 'index' when the url path is /?url=)
empty string - megalodon.jp date is malformed (not a number, less than 8 digits, not a valid date)
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeMegalodonDate(path, df)
local snapdate
if path:match ('^/%?url=') then -- short form url path is '/' followed by some number of base 62 digits and nothing else
return 'index' -- e.g. http://archive.is/hD1qz
end
snapdate = mw.text.split (path, '/')[2]:gsub('[%-]', ''); -- get snapshot date, e.g. 2016-0828-1445-52; remove hyphens
local dlen = string.len(snapdate)
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate; -- return date
else
return snapdate, inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message
end
end
--[[--------------------------< serviceName >-----------------------
Given a domain extracted by mw.uri.new() (eg. web.archive.org) set tail string and service ID
]]
local function serviceName(host, no_link)
local tracking;
local index;
host = host:lower():gsub ('^web%.(.+)', '%1'):gsub ('^www%.(.+)', '%1'); -- lowercase, remove web. and www. subdomains
if services[host] then
index = host;
else
for k, _ in pairs (services) do
if host:find ('%f[%a]'..k:gsub ('([%.%-])', '%%%1')) then
index = k;
break;
end
end
end
if index then
local out = {''}; -- empty string in [1] so that concatenated result has leading single space
ulx.url1.service = services[index][4] or 'other';
tracking = services[index][5] or categories.other;
-- build tail string
if false == services[index][1] then -- select prefix
table.insert (out, prefixes.at);
elseif true == services[index][1] then
table.insert (out, prefixes.atthe);
else
table.insert (out, services[index][1]);
end
table.insert (out, make_wikilink (services[index][2], services[index][3], no_link)); -- add article wikilink
if services[index][6] then -- add tail postfix if it exists
table.insert (out, services[index][6]);
end
ulx.url1.tail = table.concat (out, ' '); -- put it all together; result has leading space character
else -- here when unknown archive
ulx.url1.service = 'other';
tracking = categories.unknown;
ulx.url1.tail = table.concat ({'', prefixes.at, host, inlineRed (err_warn_msgs.unknown_url, error)}, ' ');
end
track[tracking] = 1
end
--[[--------------------------< parseExtraArgs >-----------------------
Parse numbered arguments starting at 2, such as url2..url10, date2..date10, title2..title10
For example: {{webarchive |url=.. |url4=.. |url7=..}}
Three url arguments not in numeric sequence (1..4..7).
Function only processes arguments numbered 2 or greater (in this case 4 and 7)
It creates numeric sequenced table entries like:
urlx.url2.url = <argument value for url4>
urlx.url3.url = <argument value for url7>
Returns the number of URL arguments found numbered 2 or greater (in this case returns "2")
]]
local function parseExtraArgs(args)
local i, j, argurl, argurl2, argdate, argtitle
j = 2
for i = 2, config.maxurls do
argurl = "url" .. i
if args[argurl] then
argurl2 = "url" .. j
ulx[argurl2] = {}
ulx[argurl2]["url"] = args[argurl]
argdate = "date" .. i
if args[argdate] then
ulx[argurl2]["date"] = args[argdate]
else
ulx[argurl2]["date"] = inlineRed (err_warn_msgs.date_miss, 'warning');
end
argtitle = "title" .. i
if args[argtitle] then
ulx[argurl2]["title"] = args[argtitle]
else
ulx[argurl2]["title"] = nil
end
j = j + 1
end
end
if j == 2 then
return 0
else
return j - 2
end
end
--[[--------------------------< comma >-----------------------
Given a date string, return "," if it's MDY
]]
local function comma(date)
return (date and date:match ('%a+ +%d%d?(,) +%d%d%d%d')) or '';
end
--[[--------------------------< createRendering >-----------------------
Return a rendering of the data in ulx[][]
]]
local function createRendering()
local displayfield
local out = {};
local index_date, msg = ulx.url1.date:match ('(index)(.*)'); -- when ulx.url1.date extract 'index' text and message text (if there is a message)
ulx.url1.date = ulx.url1.date:gsub ('index.*', 'index'); -- remove message
if 'none' == ulx.url1.format then -- For {{wayback}}, {{webcite}}
if 'archiveis' == ulx.url1.service then -- block archive.is links
table.insert (out, s_text.deprecated); -- no url for you
else
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx.url1.url); -- add url
end
if ulx.url1.title then
if not ('archiveis' == ulx.url1.service) then -- no need for anything more if we're dealing with archive.is
table.insert (out, ' ') -- the required space
table.insert (out, ulx.url1.title) -- the title
table.insert (out, ']'); -- close extlink markup
end
table.insert (out, ulx.url1.tail); -- tail text
if ulx.url1.date then
table.insert (out, ' ('); -- open date text; TODO: why the html entity? replace with regular space?
table.insert (out, 'index' == ulx.url1.date and s_text.archive or s_text.archived); -- add text
table.insert (out, ' '); -- insert a space
table.insert (out, ulx.url1.date); -- add date
table.insert (out, ')'); -- close date text
end
else -- no title
if 'archiveis' == ulx.url1.service then -- archive.is index pages already aren't parsed
table.insert (out, table.concat ({' ', s_text.archived, ' '})); -- add timestamp date (will include mismatch message if there is one)
else
if index_date then -- when url date is 'index'
table.insert (out, table.concat ({' ', s_text.Archive_index, ']'})); -- add the index link label
table.insert (out, msg or ''); -- add date mismatch message when url date is /*/ and |date= has valid date
else
table.insert (out, table.concat ({' ', s_text.Archived, '] '})); -- add link label for url has timestamp date (will include mismatch message if there is one)
end
end
if ulx.url1.date then
if 'index' ~= ulx.url1.date then
table.insert (out, ulx.url1.date); -- add date when data is not 'index'
end
table.insert (out, comma(ulx.url1.date)); -- add ',' if date format is mdy
table.insert (out, ulx.url1.tail); -- add tail text
else -- no date
table.insert (out, ulx.url1.tail); -- add tail text
end
end
if 0 < ulx.url1.extraurls then -- For multiple archive URLs
local tot = ulx.url1.extraurls + 1
table.insert (out, '.') -- terminate first url
table.insert (out, table.concat ({' ', s_text.addlarchives, ': '})); -- add header text
for i=2, tot do -- loop through the additionals
local index = table.concat ({'url', i}); -- make an index
displayfield = ulx[index]['title'] and 'title' or 'date'; -- choose display text
serviceName(ulx[index]['url']);
if 'archiveis' == ulx.url1.service then
table.insert (out, s_text.deprecated);
else
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx[index]['url']); -- add the url
table.insert (out, ' '); -- the required space
table.insert (out, ulx[index][displayfield]); -- add the label
table.insert (out, ']'); -- close extlink markup
end
table.insert (out, i==tot and '.' or ', '); -- add terminator
end
end
return table.concat (out); -- make a big string and done
else -- For {{cite archives}}
if 'addlarchives' == ulx.url1.format then -- Multiple archive services
table.insert (out, table.concat ({s_text.addlarchives, ': '})); -- add header text
else -- Multiple pages from the same archive
table.insert (out, table.concat ({s_text.addlpages, ' '})); -- add header text
table.insert (out, ulx.url1.date); -- add date to header text
table.insert (out, ': '); -- close header text
end
local tot = ulx.url1.extraurls + 1;
for i=1, tot do -- loop through the additionals
local index = table.concat ({'url', i}); -- make an index
serviceName(ulx[index]['url']); -- compute the service name in a very scuffed way
if 'archiveis' == ulx.url1.service then
table.insert (out, s_text.deprecated);
else
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx[index]['url']); -- add url
table.insert (out, ' '); -- add required space
displayfield = ulx[index]['title'];
if 'addlarchives' == ulx.url1.format then
if not displayfield then
displayfield = ulx[index]['date']
end
else -- must be addlpages
if not displayfield then
displayfield = table.concat ({s_text.Page, ' ', i});
end
end
table.insert (out, displayfield); -- add title, date, page label text
table.insert (out, ']'); -- close extlink markup
end
table.insert (out, (i==tot and '.' or ', ')); -- add terminator
end
return table.concat (out); -- make a big string and done
end
end
--[[--------------------------< P A R A M E T E R _ N A M E _ X L A T E >--------------------------------------
for internaltionalization, translate local-language parameter names to their English equivalents
TODO: return error message if multiple aliases of the same canonical parameter name are found?
returns two tables:
new_args - holds canonical form parameters and their values either from translation or because the parameter was already in canonical form
origin - maps canonical-form parameter names to their untranslated (local language) form for error messaging in the local language
unrecognized parameters are ignored
]]
local function parameter_name_xlate (args, params, enum_params)
local name; -- holds modifiable name of the parameter name during evaluation
local enum; -- for enumerated parameters, holds the enumerator during evaluation
local found = false; -- flag used to break out of nested for loops
local new_args = {}; -- a table that holds canonical and translated parameter k/v pairs
local origin = {}; -- a table that maps original (local language) parameter names to their canonical name for local language error messaging
local unnamed_params; -- set true when unsupported positional parameters are detected
for k, v in pairs (args) do -- loop through all of the arguments in the args table
name = k; -- copy of original parameter name
if 'string' == type (k) then
if non_western_digits then -- true when non-western digits supported at this wiki
name = mw.ustring.gsub (name, '%d', digits); -- convert this wiki's non-western digits to western digits
end
enum = name:match ('%d+$'); -- get parameter enumerator if it exists; nil else
if not enum then -- no enumerator so looking for non-enumnerated parameters
-- TODO: insert shortcut here? if params[name] then name holds the canonical parameter name; no need to search further
for pname, aliases in pairs (params) do -- loop through each parameter the params table
for _, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
if name == alias then
new_args[pname] = v; -- create a new entry in the new_args table
origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
found = true; -- flag so that we can break out of these nested for loops
break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
end
end
if found then -- true when we found an alias that matched name
found = false; -- reset the flag
break; -- go do next args k/v pair
end
end
else -- enumerated parameters
name = name:gsub ('%d$', '#'); -- replace enumeration digits with place holder for table search
-- TODO: insert shortcut here? if num_params[name] then name holds the canonical parameter name; no need to search further
for pname, aliases in pairs (enum_params) do -- loop through each parameter the num_params table
for _, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
if name == alias then
pname = pname:gsub ('#$', enum); -- replace the '#' place holder with the actual enumerator
new_args[pname] = v; -- create a new entry in the new_args table
origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
found = true; -- flag so that we can break out of these nested for loops
break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
end
end
if found then -- true when we found an alias that matched name
found = false; -- reset the flag
break; -- go do next args k/v pair
end
end
end
else
unnamed_params = true; -- flag for unsupported positional parameters
end
end -- for k, v
return new_args, origin, unnamed_params;
end
--[[--------------------------< W E B A R C H I V E >----------------------------------------------------------
template entry point
]]
local function webarchive(frame)
local args = getArgs (frame);
local data = mw.loadData (table.concat ({ -- make a data module name; sandbox or live
'Module:Webarchive/data',
frame:getTitle():find('sandbox', 1, true) and '/sandbox' or '' -- this instance is ./sandbox then append /sandbox
}));
categories = data.categories; -- fill in the forward declarations
config = data.config;
if data.digits.enable then
digits = data.digits; -- for i18n; table of digits in the local wiki's language
non_western_digits = true; -- use_non_western_digits
end
err_warn_msgs = data.err_warn_msgs;
excepted_pages = data.excepted_pages;
month_num = data.month_num; -- for i18n; table of month names in the local wiki's language
prefixes = data.prefixes;
services = data.services;
s_text = data.s_text;
uncategorized_namespaces = data.uncategorized_namespaces;
uncategorized_subpages = data.uncategorized_subpages;
local origin = {}; -- holds a map of English to local language parameter names used in the current template; not currently used
local unnamed_params; -- boolean set to true when template call has unnamed parameters
args, origin, unnamed_params = parameter_name_xlate (args, data.params, data.enum_params); -- translate parameter names in args to English
local date, format, msg, udate, uri, url;
local ldf = 'iso'; -- when there is no |date= parameter, render url dates in iso format
if args.url and args.url1 then -- URL argument (first)
return inlineError (data.crit_err_msgs.conflicting, {origin.url, origin.url1});
end
url = args.url or args.url1;
if not url then
return inlineError (data.crit_err_msgs.empty);
end
-- these iabot bugs perportedly fixed; removing these causes lua script error
--[[ -- at Template:Webarchive/testcases/Production; resolve that before deleting these tests
if mw.ustring.find( url, "https://web.http", 1, true ) then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
track[categories.error] = 1;
return inlineError (data.crit_err_msgs.iabot1);
end
if url == "https://web.archive.org/http:/" then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
track[categories.error] = 1;
return inlineError (data.crit_err_msgs.iabot2);
end
]]
if not (url:lower():find ('^http') or url:find ('^//')) then
return inlineError (data.crit_err_msgs.invalid_url );
end
ulx.url1 = {}
ulx.url1.url = url
ulx.url1.extraurls = parseExtraArgs(args)
local good = false;
good, uri = pcall (mw.uri.new, ulx.url1.url); -- get a table of uri parts from this url; protected mode to prevent lua error when ulx.url1.url is malformed
if not good or nil == uri.host then -- abandon when ulx.url1.url is malformed
return inlineError (data.crit_err_msgs.invalid_url);
end
serviceName(uri.host, args.nolink)
if args.date and args.date1 then -- Date argument
return inlineError (data.crit_err_msgs.conflicting, {origin.date, origin.date1});
end
date = args.date or args.date1;
date = date and date:gsub (' +', ' '); -- replace multiple spaces with a single space
if date and config.verifydates then
if '*' == date then
date = 'index';
ldf = 'iso'; -- set to default format
elseif 'mdy' == date then
date = nil; -- if date extracted from URL,
ldf = 'mdy'; -- then |date=mdy overrides iso
elseif 'dmy' == date then
date = nil; -- if date extracted from URL,
ldf = 'dmy'; -- then |date=dmy overrides iso
elseif 'ymd' == date then
date = nil; -- if date extracted from URL,
ldf = 'ymd'; -- then |date=ymd overrides iso
else
date, ldf = decode_date (date); -- get an iso format date from date and get date's original format
end
end
if 'wayback' == ulx.url1.service or 'locwebarchives' == ulx.url1.service or 'ukgwa' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeWaybackDate (uri.path); -- get the url date in iso format and format of date in |date=; 'index' when wayback url date is *
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
else -- no |date=
udate, msg = decodeWaybackDate (uri.path);
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if '' == udate then
date = nil; -- unset
else
date = udate;
end
end
elseif 'webcite' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate = decodeWebciteDate (uri.path); -- get the url date in iso format
if 'query' ~= udate then -- skip if query
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'),
});
end
end
end
end
else
date = decodeWebciteDate( uri.path, "iso" )
if date == "query" then
date = nil; -- unset
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
elseif not date then -- invalid base62 string
date = inlineRed (err_warn_msgs.date1, 'error');
end
end
elseif 'archiveis' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeArchiveisDate (uri.path) -- get the url date in iso format
if 'short link' ~= udate then -- skip if short link
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
end
else -- no |date=
udate, msg = decodeArchiveisDate( uri.path, "iso" )
if udate == "short link" then
date = nil; -- unset
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
elseif '' == udate then
date = nil; -- unset
else
date = udate;
end
end
elseif 'megalodon' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeMegalodonDate (uri.path) -- get the url date in iso format
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
else -- no |date=
udate, msg = decodeArchiveisDate( uri.path, "iso" )
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if '' == udate then
date = nil; -- unset
else
date = udate;
end
end
else -- some other service
if not date then
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
end
end
if 'index' == date then
ulx.url1.date = date .. (msg or ''); -- create index + message (if there is one)
elseif date then
ulx.url1.date = makeDate (date, nil, nil, ldf) .. (msg or ''); -- create a date in the wiki's local language + message (if there is one)
else
ulx.url1.date = msg;
end
format = args.format; -- Format argument
if not format then
format = "none"
else
for k, v in pairs (data.format_vals) do -- |format= accepts two specific values loop through a table of those values
local found; -- declare a nil flag
for _, p in ipairs (v) do -- loop through local language variants
if format == p then -- when |format= value matches
format = k; -- use name from table key
found = true; -- declare found so that we can break out of outer for loop
break; -- break out of inner for loop
end
end
if found then
break;
end
end
if format == "addlpages" then
if not ulx.url1.date then
format = "none"
end
elseif format == "addlarchives" then
format = "addlarchives"
else
format = "none"
end
end
ulx.url1.format = format
if args.title and args.title1 then -- Title argument
return inlineError (data.crit_err_msgs.conflicting, {origin.title, origin.title1});
end
ulx.url1.title = args.title or args.title1;
local rend = createRendering()
if not rend then
return inlineError (data.crit_err_msgs.unknown);
end
return rend .. ((unnamed_params and inlineRed (err_warn_msgs.unnamed_params, 'warning')) or '') .. createTracking();
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {webarchive = webarchive};
65n1m5hr2hdspk5vcr6ped9grfdod4g
Módulo:Webarchive/doc
828
5896
74052
60208
2026-02-22T20:17:43Z
en>HouseBlaster
0
/* Tracking categories */ add
74052
wikitext
text/x-wiki
{{Module rating|protected}}
{{High-use}}
{{Lua|Module:Webarchive/data|Module:Arguments}}
This module implements {{ti|webarchive}}.
This module uses [[Module:Webarchive/data{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}}]] to support configuration control and internationalization.
== Tracking categories ==
===Tracking archive sites===
* {{clc|Webarchive template wayback links}} – links to Wayback Machine
* {{clc|Webarchive template webcite links}} – links to WebCite
* {{clc|Webarchive template other archives}} – all the other archive sites that don't have their own tracking category
* {{clc|Webarchive template unknown archives}} – the template doesn't recognize the archive URL; this may indicate an error in the data; or the template itself needs updating to reflect a new archive site
===Tracking warnings and errors ===
* {{clc|Webarchive template warnings}} – soft errors that don't prevent the template from working but leave a red message
* {{clc|Webarchive template errors}} – errors typically requiring human intervention
* {{clc|Webarchive template archiveis links}} – links to Archive.Today, which is [[WP:ATODAY|deprecated]] as an archive. Uses should be migrated to another archive.
<includeonly>{{sandbox other||
[[Category:Modules that add a tracking category]]
}}</includeonly>
7fmkqk54uho1qxailq1p2pn5njzjhbv
74053
74052
2026-07-12T11:09:54Z
Robertsky
10424
1 versaun husi [[:en:Module:Webarchive/doc]]
74052
wikitext
text/x-wiki
{{Module rating|protected}}
{{High-use}}
{{Lua|Module:Webarchive/data|Module:Arguments}}
This module implements {{ti|webarchive}}.
This module uses [[Module:Webarchive/data{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}}]] to support configuration control and internationalization.
== Tracking categories ==
===Tracking archive sites===
* {{clc|Webarchive template wayback links}} – links to Wayback Machine
* {{clc|Webarchive template webcite links}} – links to WebCite
* {{clc|Webarchive template other archives}} – all the other archive sites that don't have their own tracking category
* {{clc|Webarchive template unknown archives}} – the template doesn't recognize the archive URL; this may indicate an error in the data; or the template itself needs updating to reflect a new archive site
===Tracking warnings and errors ===
* {{clc|Webarchive template warnings}} – soft errors that don't prevent the template from working but leave a red message
* {{clc|Webarchive template errors}} – errors typically requiring human intervention
* {{clc|Webarchive template archiveis links}} – links to Archive.Today, which is [[WP:ATODAY|deprecated]] as an archive. Uses should be migrated to another archive.
<includeonly>{{sandbox other||
[[Category:Modules that add a tracking category]]
}}</includeonly>
7fmkqk54uho1qxailq1p2pn5njzjhbv
Template:Webarchive
10
5897
74042
2017-03-10T21:29:55Z
en>Rich Farmbrough
0
74042
wikitext
text/x-wiki
<includeonly>{{#invoke:webarchive|webarchive}}</includeonly><noinclude>
{{documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
af0jh9wqwfjf3uyx3ywwvb039disnpm
74043
60209
2026-07-12T11:06:53Z
Robertsky
10424
1 versaun husi [[:en:Template:Webarchive]]
60209
wikitext
text/x-wiki
<includeonly>{{#invoke:webarchive|webarchive}}</includeonly><noinclude>
{{documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
af0jh9wqwfjf3uyx3ywwvb039disnpm
Template:Birth date and age
10
7086
73892
2025-03-19T15:27:02Z
Bearcat
11762
73892
wikitext
text/x-wiki
<includeonly>{{{{{♥|safesubst:}}}#invoke:age|birth_date_and_age}}<!-- Tracking categories
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using birth date and age with unknown parameters|_VALUE_]]}}|preview=Page using [[Template:Birth date and age]] with unknown parameter "_VALUE_"|showblankpositional=1| 1 | 2 | 3 | day | month | year | df | mf }}<!--
-->{{#ifeq: {{NAMESPACENUMBER}} | 0
| {{#if: {{#invoke:wd|label|raw}}
| {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}}
| {{#if: {{#invoke:wd|properties|raw|P569}}
|
| [[Category:Date of birth not in Wikidata]]
}}
}}
| [[Category:Articles without Wikidata item]]
}}
}}</includeonly><noinclude>{{documentation}}</noinclude>
63aqc12xtws4j2e9ii2pd1n6qpg9tr7
73893
69856
2026-07-11T18:59:03Z
Robertsky
10424
1 versaun husi [[:en:Template:Birth_date_and_age]]
69856
wikitext
text/x-wiki
<includeonly>{{{{{♥|safesubst:}}}#invoke:age|birth_date_and_age}}<!-- Tracking categories
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using birth date and age with unknown parameters|_VALUE_]]}}|preview=Page using [[Template:Birth date and age]] with unknown parameter "_VALUE_"|showblankpositional=1| 1 | 2 | 3 | day | month | year | df | mf }}<!--
-->{{#ifeq: {{NAMESPACENUMBER}} | 0
| {{#if: {{#invoke:wd|label|raw}}
| {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}}
| {{#if: {{#invoke:wd|properties|raw|P569}}
|
| [[Category:Date of birth not in Wikidata]]
}}
}}
| [[Category:Articles without Wikidata item]]
}}
}}</includeonly><noinclude>{{documentation}}</noinclude>
63aqc12xtws4j2e9ii2pd1n6qpg9tr7
Módulo:Age
828
7089
73874
2025-12-10T08:08:14Z
Johnuniq
11653
update from [[Module:Age/sandbox]]: bda, dda format output date to match the input if no df/mf parameter per [[User:Zackmann08]]'s suggestion at [[Module talk:Age#Updating df/mf syntax]]
73874
Scribunto
text/plain
-- Implement various "age of" and other date-related templates.
local mtext = {
-- Message and other text that should be localized.
-- Also need to localize text in table names in function dateDifference.
['mt-bad-param2'] = 'Parameter $1=$2 is invalid',
['mt-bad-show'] = 'Parameter show=$1 is not supported here',
['mt-cannot-add'] = 'Cannot add "$1"',
['mt-conflicting-show'] = 'Parameter show=$1 conflicts with round=$2',
['mt-date-wrong-order'] = 'The second date must be later in time than the first date',
['mt-dd-future'] = 'Death date (first date) must not be in the future',
['mt-dd-wrong-order'] = 'Death date (first date) must be later in time than the birth date (second date)',
['mt-invalid-bd-age'] = 'Invalid birth date for calculating age',
['mt-invalid-dates-age'] = 'Invalid dates for calculating age',
['mt-invalid-end'] = 'Invalid end date in second parameter',
['mt-invalid-start'] = 'Invalid start date in first parameter',
['mt-need-jdn'] = 'Need valid Julian date number',
['mt-need-valid-bd'] = 'Need valid birth date: year, month, day',
['mt-need-valid-bd2'] = 'Need valid birth date (second date): year, month, day',
['mt-need-valid-date'] = 'Need valid date',
['mt-need-valid-dd'] = 'Need valid death date (first date): year, month, day',
['mt-need-valid-ymd'] = 'Need valid year, month, day',
['mt-need-valid-ymd-current'] = 'Need valid year|month|day or "currentdate"',
['mt-need-valid-ymd2'] = 'Second date should be year, month, day',
['mt-template-bad-name'] = 'The specified template name is not valid',
['mt-template-x'] = 'The template invoking this must have "|template=x" where x is the wanted operation',
['mt-warn-param1'] = 'Invalid parameter $1',
['mt-warn-param2'] = 'Parameter $1=$2 is invalid',
['txt-affirmative'] = { y = true, yes = true, Y = true, Yes = true, YES = true }, -- valid values for df + mf parameters
['txt-yes'] = { y = true, yes = true, on = true }, -- valid values for parameters introduced with this module
['txt-and'] = ' and ',
['txt-or'] = ' or ',
['txt-category'] = 'Category:Pages using age template with invalid date',
['txt-comma-and'] = ', and ',
['txt-error'] = 'Error: ',
['txt-format-default'] = 'mf', -- 'df' (day first = dmy) or 'mf' (month first = mdy)
['txt-module-convertnumeric'] = 'Module:ConvertNumeric',
['txt-module-date'] = 'Module:Date',
['txt-sandbox'] = 'sandbox',
['txt-bda'] = '<span style="display:none"> (<span class="bday">$1</span>) </span>$2<span class="noprint ForceAgeToShow"> (age $3)</span>',
['txt-dda'] = '$2<span style="display:none">($1)</span> (aged $3)',
['txt-bda-disp'] = 'disp_raw', -- disp_raw → age is a number only; disp_age → age is a number and unit (normally years but months or days if very young)
['txt-dda-disp'] = 'disp_raw',
['txt-dmy'] = '%-d %B %-Y',
['txt-mdy'] = '%B %-d, %-Y',
}
local isWarning = {
['mt-warn-param1'] = true,
['mt-warn-param2'] = true,
}
-- yes[parameter] is true if parameter should be interpreted as "yes".
-- Do not want to accept mixed upper/lowercase unless done by previously used templates.
-- Need to accept "on" because "round=on" is wanted.
local yes = mtext['txt-yes']
-- Max valid age.
local MAX_AGE = 130
local translate, from_en, to_en, isZero
if translate then
-- Functions to translate from en to local language and reverse go here.
-- See example at [[:bn:Module:বয়স]].
else
from_en = function (text)
return text
end
isZero = function (text)
return tonumber(text) == 0
end
end
local _Date, _currentDate
local function getExports(frame)
-- Return objects exported from the date module or its sandbox.
if not _Date then
local sandbox = frame:getTitle():find(mtext['txt-sandbox'], 1, true) and ('/' .. mtext['txt-sandbox']) or ''
local datemod = require(mtext['txt-module-date'] .. sandbox)
local realDate = datemod._Date
_currentDate = datemod._current
if to_en then
_Date = function (...)
local args = {}
for i, v in ipairs({...}) do
args[i] = to_en(v)
end
return realDate(unpack(args))
end
else
_Date = realDate
end
end
return _Date, _currentDate
end
local Collection -- a table to hold items
Collection = {
add = function (self, item)
if item ~= nil then
self.n = self.n + 1
self[self.n] = item
end
end,
join = function (self, sep)
return table.concat(self, sep)
end,
remove = function (self, pos)
if self.n > 0 and (pos == nil or (0 < pos and pos <= self.n)) then
self.n = self.n - 1
return table.remove(self, pos)
end
end,
sort = function (self, comp)
table.sort(self, comp)
end,
new = function ()
return setmetatable({n = 0}, Collection)
end
}
Collection.__index = Collection
local function stripToNil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (which may, for example, be nil).
if type(text) == 'string' then
text = text:match('(%S.-)%s*$')
end
return text
end
local function substituteParameters(text, ...)
-- Return text after substituting any given parameters for $1, $2, etc.
return mw.message.newRawMessage(text, ...):plain()
end
local function message(msg, ...)
-- Return formatted message text for an error or warning.
local function getText(msg)
return mtext[msg] or error('Bug: message "' .. tostring(msg) .. '" not defined')
end
local categories = {
error = mtext['txt-category'],
warning = mtext['txt-category'],
}
local a, b, k, category
local text = substituteParameters(getText(msg), ...)
if isWarning[msg] then
a = '<sup>[<i>'
b = '</i>]</sup>'
k = 'warning'
else
a = '<strong class="error">' .. getText('txt-error')
b = '</strong>'
k = 'error'
end
if mw.title.getCurrentTitle():inNamespaces(0) then
-- Category only in namespaces: 0=article.
category = '[[' .. categories[k] .. ']]'
end
return
a ..
mw.text.nowiki(text) ..
b ..
(category or '')
end
local function dateFormat(args, options)
-- Return
-- nil, f if parameter is valid
-- m, f otherwise
-- where
-- m = string for warning message with category
-- f = string for wanted date format
local wanted
if options.suppliedformat == 'dmy' then
wanted = 'df'
elseif options.suppliedformat == 'mdy' then
wanted = 'mf'
else
wanted = mtext['txt-format-default']
end
local problem
local other = wanted == 'df' and 'mf' or 'df'
local parm = args[other] or ''
if mtext['txt-affirmative'][parm] then
wanted = other
elseif parm ~= '' then
problem = message('mt-warn-param2', other, parm)
end
return problem, wanted == 'df' and mtext['txt-dmy'] or mtext['txt-mdy']
end
local function formatNumber(number)
-- Return the given number formatted with commas as group separators,
-- given that the number is an integer.
local numstr = tostring(number)
local length = #numstr
local places = Collection.new()
local pos = 0
repeat
places:add(pos)
pos = pos + 3
until pos >= length
places:add(length)
local groups = Collection.new()
for i = places.n, 2, -1 do
local p1 = length - places[i] + 1
local p2 = length - places[i - 1]
groups:add(numstr:sub(p1, p2))
end
return groups:join(',')
end
local function spellNumber(number, options, i)
-- Return result of spelling number, or
-- return number (as a string) if cannot spell it.
-- i == 1 for the first number which can optionally start with an uppercase letter.
number = tostring(number)
return require(mtext['txt-module-convertnumeric']).spell_number(
number,
nil, -- fraction numerator
nil, -- fraction denominator
i == 1 and options.upper, -- true: 'One' instead of 'one'
not options.us, -- true: use 'and' between tens/ones etc
options.adj, -- true: hyphenated
options.ordinal -- true: 'first' instead of 'one'
) or number
end
local function makeExtra(args, flagCurrent)
-- Return extra text that will be inserted before the visible result
-- but after any sort key.
local extra = args.prefix or ''
if mw.ustring.len(extra) > 1 then
-- Parameter "~" gives "~3" whereas "over" gives "over 3".
if extra:sub(-6, -1) ~= ' ' then
extra = extra .. ' '
end
end
if flagCurrent then
extra = '<span class="currentage"></span>' .. extra
end
return extra
end
local function makeSort(value, sortable)
-- Return a sort key if requested.
-- Assume value is a valid number which has not overflowed.
if sortable == 'sortable_table' or sortable == 'sortable_on' or sortable == 'sortable_debug' then
local sortKey
if value == 0 then
sortKey = '5000000000000000000'
else
local mag = math.floor(math.log10(math.abs(value)) + 1e-14)
if value > 0 then
sortKey = 7000 + mag
else
sortKey = 2999 - mag
value = value + 10^(mag+1)
end
sortKey = string.format('%d', sortKey) .. string.format('%015.0f', math.floor(value * 10^(14-mag)))
end
local result
if sortable == 'sortable_table' then
result = 'data-sort-value="_SORTKEY_"|'
elseif sortable == 'sortable_debug' then
result = '<span data-sort-value="_SORTKEY_♠"><span style="border:1px solid">_SORTKEY_♠</span></span>'
else
result = '<span data-sort-value="_SORTKEY_♠"></span>'
end
return (result:gsub('_SORTKEY_', sortKey))
end
end
local translateParameters = {
abbr = {
off = 'abbr_off',
on = 'abbr_on',
},
disp = {
age = 'disp_age',
raw = 'disp_raw',
},
format = {
raw = 'format_raw',
commas = 'format_commas',
},
round = {
on = 'on',
yes = 'on',
months = 'ym',
weeks = 'ymw',
days = 'ymd',
hours = 'ymdh',
},
sep = {
comma = 'sep_comma',
[','] = 'sep_comma',
serialcomma = 'sep_serialcomma',
space = 'sep_space',
},
show = {
hide = { id = 'hide' },
y = { 'y', id = 'y' },
ym = { 'y', 'm', id = 'ym' },
ymd = { 'y', 'm', 'd', id = 'ymd' },
ymw = { 'y', 'm', 'w', id = 'ymw' },
ymwd = { 'y', 'm', 'w', 'd', id = 'ymwd' },
yd = { 'y', 'd', id = 'yd', keepZero = true },
m = { 'm', id = 'm' },
md = { 'm', 'd', id = 'md' },
w = { 'w', id = 'w' },
wd = { 'w', 'd', id = 'wd' },
h = { 'H', id = 'h' },
hm = { 'H', 'M', id = 'hm' },
hms = { 'H', 'M', 'S', id = 'hms' },
M = { 'M', id = 'M' },
s = { 'S', id = 's' },
d = { 'd', id = 'd' },
dh = { 'd', 'H', id = 'dh' },
dhm = { 'd', 'H', 'M', id = 'dhm' },
dhms = { 'd', 'H', 'M', 'S', id = 'dhms' },
ymdh = { 'y', 'm', 'd', 'H', id = 'ymdh' },
ymdhm = { 'y', 'm', 'd', 'H', 'M', id = 'ymdhm' },
ymwdh = { 'y', 'm', 'w', 'd', 'H', id = 'ymwdh' },
ymwdhm = { 'y', 'm', 'w', 'd', 'H', 'M', id = 'ymwdhm' },
},
sortable = {
off = false,
on = 'sortable_on',
table = 'sortable_table',
debug = 'sortable_debug',
},
}
local spellOptions = {
cardinal = {},
Cardinal = { upper = true },
cardinal_us = { us = true },
Cardinal_us = { us = true, upper = true },
ordinal = { ordinal = true },
Ordinal = { ordinal = true, upper = true },
ordinal_us = { ordinal = true, us = true },
Ordinal_us = { ordinal = true, us = true, upper = true },
}
local function dateExtract(frame)
-- Return part of a date after performing an optional operation.
local Date = getExports(frame)
local args = frame:getParent().args
local parms = {}
for i, v in ipairs(args) do
parms[i] = v
end
if yes[args.fix] then
table.insert(parms, 'fix')
end
if yes[args.partial] then
table.insert(parms, 'partial')
end
local show = stripToNil(args.show) or 'dmy'
local date = Date(unpack(parms))
if not date then
if show == 'format' then
return 'error'
end
return message('mt-need-valid-date')
end
local add = stripToNil(args.add)
if add then
for item in add:gmatch('%S+') do
date = date + item
if not date then
return message('mt-cannot-add', item)
end
end
end
local sortKey, result
local sortable = translateParameters.sortable[args.sortable]
if sortable then
local value = (date.partial and date.partial.first or date).jdz
sortKey = makeSort(value, sortable)
end
if show ~= 'hide' then
result = date[show]
if result == nil then
result = from_en(date:text(show))
elseif type(result) == 'boolean' then
result = result and '1' or '0'
else
result = from_en(tostring(result))
end
end
return (sortKey or '') .. makeExtra(args) .. (result or '')
end
local function rangeJoin(range)
-- Return text to be used between a range of ages.
return range == 'dash' and '–' or mtext['txt-or']
end
local function makeText(values, components, names, options, noUpper)
-- Return wikitext representing an age or duration.
local text = Collection.new()
local count = #values
local sep = names.sep or ''
for i, v in ipairs(values) do
-- v is a number (say 4 for 4 years), or a table ({4,5} for 4 or 5 years).
local islist = type(v) == 'table'
if (islist or v > 0) or (text.n == 0 and i == count) or (text.n > 0 and components.keepZero) then
local fmt, vstr
if options.spell then
fmt = function(number)
return spellNumber(number, options.spell, noUpper or i)
end
elseif i == 1 and options.format == 'format_commas' then
-- Numbers after the first should be small and not need formatting.
fmt = formatNumber
else
fmt = tostring
end
if islist then
vstr = fmt(v[1]) .. rangeJoin(options.range)
noUpper = true
vstr = vstr .. fmt(v[2])
else
vstr = fmt(v)
end
local name = names[components[i]]
if name then
if type(name) == 'table' then
name = mw.getContentLanguage():plural(islist and v[2] or v, name)
end
text:add(vstr .. sep .. name)
else
text:add(vstr)
end
end
end
local first, last
if options.join == 'sep_space' then
first = ' '
last = ' '
elseif options.join == 'sep_comma' then
first = ', '
last = ', '
elseif options.join == 'sep_serialcomma' and text.n > 2 then
first = ', '
last = mtext['txt-comma-and']
else
first = ', '
last = mtext['txt-and']
end
for i, v in ipairs(text) do
if i < text.n then
text[i] = v .. (i + 1 < text.n and first or last)
end
end
local sign = ''
if options.isnegative then
-- Do not display negative zero.
if text.n > 1 or (text.n == 1 and text[1]:sub(1, 1) ~= '0' ) then
if options.format == 'format_raw' then
sign = '-' -- plain hyphen so result can be used in a calculation
else
sign = '−' -- Unicode U+2212 MINUS SIGN
end
end
end
return
(options.sortKey or '') ..
(options.extra or '') ..
sign ..
text:join() ..
(options.suffix or '')
end
local function dateDifference(parms)
-- Return a formatted date difference using the given parameters
-- which have been validated.
local names = {
-- Each name is:
-- * a string if no plural form of the name is used; or
-- * a table of strings, one of which is selected using the rules at
-- https://translatewiki.net/wiki/Plural/Mediawiki_plural_rules
abbr_off = {
sep = ' ',
y = {'year', 'years'},
m = {'month', 'months'},
w = {'week', 'weeks'},
d = {'day', 'days'},
H = {'hour', 'hours'},
M = {'minute', 'minutes'},
S = {'second', 'seconds'},
},
abbr_on = {
y = 'y',
m = 'm',
w = 'w',
d = 'd',
H = 'h',
M = 'm',
S = 's',
},
abbr_infant = { -- for {{age for infant}}
sep = ' ',
y = {'yr', 'yrs'},
m = {'mo', 'mos'},
w = {'wk', 'wks'},
d = {'day', 'days'},
H = {'hr', 'hrs'},
M = {'min', 'mins'},
S = {'sec', 'secs'},
},
abbr_raw = {},
}
local diff = parms.diff -- must be a valid date difference
local show = parms.show -- may be nil; default is set below
local abbr = parms.abbr or 'abbr_off'
local defaultJoin
if abbr ~= 'abbr_off' then
defaultJoin = 'sep_space'
end
if not show then
show = 'ymd'
if parms.disp == 'disp_age' then
if diff.years < 3 then
defaultJoin = 'sep_space'
if diff.years >= 1 then
show = 'ym'
else
show = 'md'
end
else
show = 'y'
end
end
end
if type(show) ~= 'table' then
show = translateParameters.show[show]
end
if parms.disp == 'disp_raw' then
defaultJoin = 'sep_space'
abbr = 'abbr_raw'
elseif parms.wantSc then
defaultJoin = 'sep_serialcomma'
end
local diffOptions = {
round = parms.round,
duration = parms.wantDuration,
range = parms.range and true or nil,
}
local sortKey
if parms.sortable then
local value = diff.age_days + (parms.wantDuration and 1 or 0) -- days and fraction of a day
if diff.isnegative then
value = -value
end
sortKey = makeSort(value, parms.sortable)
end
local textOptions = {
extra = parms.extra,
format = parms.format,
join = parms.sep or defaultJoin,
isnegative = diff.isnegative,
range = parms.range,
sortKey = sortKey,
spell = parms.spell,
suffix = parms.suffix, -- not currently used
}
if show.id == 'hide' then
return sortKey or ''
end
local values = { diff:age(show.id, diffOptions) }
if values[1] then
return makeText(values, show, names[abbr], textOptions)
end
if diff.partial then
-- Handle a more complex range such as
-- {{age_yd|20 Dec 2001|2003|range=yes}} → 1 year, 12 days or 2 years, 11 days
local opt = {
format = textOptions.format,
join = textOptions.join,
isnegative = textOptions.isnegative,
spell = textOptions.spell,
}
return
(textOptions.sortKey or '') ..
makeText({ diff.partial.mindiff:age(show.id, diffOptions) }, show, names[abbr], opt) ..
rangeJoin(textOptions.range) ..
makeText({ diff.partial.maxdiff:age(show.id, diffOptions) }, show, names[abbr], opt, true) ..
(textOptions.suffix or '')
end
return message('mt-bad-show', show.id)
end
local function getDates(frame, getopt)
-- Parse template parameters and return one of:
-- * date (a date table, if single)
-- * date1, date2 (two date tables, if not single)
-- * text (a string error message)
-- A missing date is optionally replaced with the current date.
-- If wantMixture is true, a missing date component is replaced
-- from the current date, so can get a bizarre mixture of
-- specified/current y/m/d as has been done by some "age" templates.
-- Some results may be placed in table getopt.
local Date, currentDate = getExports(frame)
getopt = getopt or {}
local function flagCurrent(text)
-- This allows the calling template to detect if the current date has been used,
-- that is, whether both dates have been entered in a template expecting two.
-- For example, an infobox may want the age when an event occurred, not the current age.
-- Don't bother detecting if wantMixture is used because not needed and it is a poor option.
if not text then
if getopt.noMissing then
return nil -- this gives a nil date which gives an error
end
text = 'currentdate'
if getopt.flag == 'usesCurrent' then
getopt.usesCurrent = true
end
end
return text
end
local args = frame:getParent().args
local fields = {}
local isNamed = args.year or args.year1 or args.year2 or
args.month or args.month1 or args.month2 or
args.day or args.day1 or args.day2
if isNamed then
fields[1] = args.year1 or args.year
fields[2] = args.month1 or args.month
fields[3] = args.day1 or args.day
fields[4] = args.year2
fields[5] = args.month2
fields[6] = args.day2
else
for i = 1, 6 do
fields[i] = args[i]
end
end
local imax = 0
for i = 1, 6 do
fields[i] = stripToNil(fields[i])
if fields[i] then
imax = i
end
if getopt.omitZero and i % 3 ~= 1 then -- omit zero months and days as unknown values but keep year 0 which is 1 BCE
if isZero(fields[i]) then
fields[i] = nil
getopt.partial = true
end
end
end
local fix = getopt.fix and 'fix' or ''
local partialText = getopt.partial and 'partial' or ''
local dates = {}
if isNamed or imax >= 3 then
local nrDates = getopt.single and 1 or 2
if getopt.wantMixture then
-- Cannot be partial since empty fields are set from current.
local components = { 'year', 'month', 'day' }
for i = 1, nrDates * 3 do
fields[i] = fields[i] or currentDate[components[i > 3 and i - 3 or i]]
end
for i = 1, nrDates do
local index = i == 1 and 1 or 4
local y, m, d = fields[index], fields[index+1], fields[index+2]
if (m == 2 or m == '2') and (d == 29 or d == '29') then
-- Workaround error with following which attempt to use invalid date 2001-02-29.
-- {{age_ymwd|year1=2001|year2=2004|month2=2|day2=29}}
-- {{age_ymwd|year1=2001|month1=2|year2=2004|month2=1|day2=29}}
-- TODO Get rid of wantMixture because even this ugly code does not handle
-- 'Feb' or 'February' or 'feb' or 'february'.
if not ((y % 4 == 0 and y % 100 ~= 0) or y % 400 == 0) then
d = 28
end
end
dates[i] = Date(y, m, d)
end
else
-- If partial dates are allowed, accept
-- year only, or
-- year and month only
-- Do not accept year and day without a month because that makes no sense
-- (and because, for example, Date('partial', 2001, nil, 12) sets day = nil, not 12).
for i = 1, nrDates do
local index = i == 1 and 1 or 4
local y, m, d = fields[index], fields[index+1], fields[index+2]
if (getopt.partial and y and (m or not d)) or (y and m and d) then
dates[i] = Date(fix, partialText, y, m, d)
elseif not y and not m and not d then
dates[i] = Date(flagCurrent())
end
end
end
else
getopt.textdates = true -- have parsed each date from a single text field
dates[1] = Date(fix, partialText, flagCurrent(fields[1]))
if not getopt.single then
dates[2] = Date(fix, partialText, flagCurrent(fields[2]))
end
end
if not dates[1] then
return message(getopt.missing1 or 'mt-need-valid-ymd')
end
if getopt.textdates then
getopt.suppliedformat = dates[1].format
end
if getopt.single then
return dates[1]
end
if not dates[2] then
return message(getopt.missing2 or 'mt-need-valid-ymd2')
end
return dates[1], dates[2]
end
local function ageGeneric(frame)
-- Return the result required by the specified template.
-- Can use sortable=x where x = on/table/off/debug in any supported template.
-- Some templates default to sortable=on but can be overridden.
local name = frame.args.template
if not name then
return message('mt-template-x')
end
local args = frame:getParent().args
local specs = {
age_days = { -- {{age in days}}
show = 'd',
disp = 'disp_raw',
},
age_days_nts = { -- {{age in days nts}}
show = 'd',
disp = 'disp_raw',
format = 'format_commas',
sortable = 'on',
},
duration_days = { -- {{duration in days}}
show = 'd',
disp = 'disp_raw',
duration = true,
},
duration_days_nts = { -- {{duration in days nts}}
show = 'd',
disp = 'disp_raw',
format = 'format_commas',
sortable = 'on',
duration = true,
},
age_full_years = { -- {{age}}
show = 'y',
abbr = 'abbr_raw',
flag = 'usesCurrent',
omitZero = true,
range = 'dash',
},
age_full_years_nts = { -- {{age nts}}
show = 'y',
abbr = 'abbr_raw',
format = 'format_commas',
sortable = 'on',
},
age_in_years = { -- {{age in years}}
show = 'y',
abbr = 'abbr_raw',
negative = 'error',
range = 'dash',
},
age_in_years_nts = { -- {{age in years nts}}
show = 'y',
abbr = 'abbr_raw',
negative = 'error',
range = 'dash',
format = 'format_commas',
sortable = 'on',
},
age_infant = { -- {{age for infant}}
-- Do not set show because special processing is done later.
abbr = yes[args.abbr] and 'abbr_infant' or 'abbr_off',
disp = 'disp_age',
sep = 'sep_space',
sortable = 'on',
},
age_m = { -- {{age in months}}
show = 'm',
disp = 'disp_raw',
},
age_w = { -- {{age in weeks}}
show = 'w',
disp = 'disp_raw',
},
age_wd = { -- {{age in weeks and days}}
show = 'wd',
},
age_yd = { -- {{age in years and days}}
show = 'yd',
format = 'format_commas',
sep = args.sep ~= 'and' and 'sep_comma' or nil,
},
age_yd_nts = { -- {{age in years and days nts}}
show = 'yd',
format = 'format_commas',
sep = args.sep ~= 'and' and 'sep_comma' or nil,
sortable = 'on',
},
age_ym = { -- {{age in years and months}}
show = 'ym',
sep = 'sep_comma',
},
age_ymd = { -- {{age in years, months and days}}
show = 'ymd',
range = true,
},
age_ymwd = { -- {{age in years, months, weeks and days}}
show = 'ymwd',
wantMixture = true,
},
}
local spec = specs[name]
if not spec then
return message('mt-template-bad-name')
end
if name == 'age_days' then
local su = stripToNil(args['show unit'])
if su then
if su == 'abbr' or su == 'full' then
spec.disp = nil
spec.abbr = su == 'abbr' and 'abbr_on' or nil
end
end
end
local partial, autofill
local range = stripToNil(args.range) or spec.range
if range then
-- Suppose partial dates are used and age could be 11 or 12 years.
-- "|range=" (empty value) has no effect (spec is used).
-- "|range=yes" or spec.range == true sets range = true (gives "11 or 12")
-- "|range=dash" or spec.range == 'dash' sets range = 'dash' (gives "11–12").
-- "|range=no" or spec.range == 'no' sets range = nil and fills each date in the diff (gives "12").
-- ("on" is equivalent to "yes", and "off" is equivalent to "no").
-- "|range=OTHER" sets range = nil and rejects partial dates.
range = ({ dash = 'dash', off = 'no', no = 'no', [true] = true })[range] or yes[range]
if range then
partial = true -- accept partial dates with a possible age range for the result
if range == 'no' then
autofill = true -- missing month/day in first or second date are filled from other date or 1
range = nil
end
end
end
local getopt = {
fix = yes[args.fix],
flag = stripToNil(args.flag) or spec.flag,
omitZero = spec.omitZero,
partial = partial,
wantMixture = spec.wantMixture,
}
local date1, date2 = getDates(frame, getopt)
if type(date1) == 'string' then
return date1
end
local format = stripToNil(args.format)
local spell = spellOptions[format]
if format then
format = 'format_' .. format
elseif name == 'age_days' and getopt.textdates then
format = 'format_commas'
end
local parms = {
diff = date2:subtract(date1, { fill = autofill }),
wantDuration = spec.duration or yes[args.duration],
range = range,
wantSc = yes[args.sc],
show = args.show == 'hide' and 'hide' or spec.show,
abbr = spec.abbr,
disp = spec.disp,
extra = makeExtra(args, getopt.usesCurrent and format ~= 'format_raw'),
format = format or spec.format,
round = yes[args.round],
sep = spec.sep,
sortable = translateParameters.sortable[args.sortable or spec.sortable],
spell = spell,
}
if (spec.negative or frame.args.negative) == 'error' and parms.diff.isnegative then
return message('mt-date-wrong-order')
end
return from_en(dateDifference(parms))
end
local function isFake(args)
-- Some templates have TemplateData with an auto value like "{{Birth date and age|YYYY|MM|DD}}".
-- Return true if that appears to be the case so the caller can output nothing rather than an error.
return args[1] == 'YYYY'
end
local function bda(frame)
-- Implement [[Template:Birth date and age]].
local args = frame:getParent().args
if isFake(args) then
return ''
end
local options = {
missing1 = 'mt-need-valid-bd',
noMissing = true,
single = true,
}
local date = getDates(frame, options)
if type(date) == 'string' then
return date -- error text
end
local Date = getExports(frame)
local diff = Date('currentdate') - date
if diff.isnegative or diff.years > MAX_AGE then
return message('mt-invalid-bd-age')
end
local disp = mtext['txt-bda-disp']
local show = 'y'
if diff.years < 2 then
disp = 'disp_age'
if diff.years == 0 and diff.months == 0 then
show = 'd'
else
show = 'm'
end
end
local problem, format = dateFormat(args, options)
local result = substituteParameters(
mtext['txt-bda'],
date:text('%-Y-%m-%d'),
from_en(date:text(format)),
from_en(dateDifference({
diff = diff,
show = show,
abbr = 'abbr_off',
disp = disp,
sep = 'sep_space',
}))
) .. (problem or '')
local warnings = tonumber(frame.args.warnings)
if warnings and warnings > 0 then
local good = {
df = true,
mf = true,
day = true,
day1 = true,
month = true,
month1 = true,
year = true,
year1 = true,
}
local invalid
local imax = options.textdates and 1 or 3
for k, _ in pairs(args) do
if type(k) == 'number' then
if k > imax then
invalid = tostring(k)
break
end
else
if not good[k] then
invalid = k
break
end
end
end
if invalid then
result = result .. message('mt-warn-param1', invalid)
end
end
return result
end
local function dda(frame)
-- Implement [[Template:Death date and age]].
local args = frame:getParent().args
if isFake(args) then
return ''
end
local options = {
missing1 = 'mt-need-valid-dd',
missing2 = 'mt-need-valid-bd2',
noMissing = true,
partial = true,
}
local date1, date2 = getDates(frame, options)
if type(date1) == 'string' then
return date1
end
local diff = date1 - date2
if diff.isnegative then
return message('mt-dd-wrong-order')
end
local Date = getExports(frame)
local today = Date('currentdate') + 1 -- one day in future allows for timezones
if date1 > today then
return message('mt-dd-future')
end
local years
if diff.partial then
years = diff.partial.years
years = type(years) == 'table' and years[2] or years
else
years = diff.years
end
if years > MAX_AGE then
return message('mt-invalid-dates-age')
end
local fmt_date, fmt_ymd, problem
if date1.day then -- y, m, d known
problem, fmt_date = dateFormat(args, options)
fmt_ymd = '%-Y-%m-%d'
elseif date1.month then -- y, m known; d unknown
fmt_date = '%B %-Y'
fmt_ymd = '%-Y-%m-00'
else -- y known; m, d unknown
fmt_date = '%-Y'
fmt_ymd = '%-Y-00-00'
end
local sortKey
local sortable = translateParameters.sortable[args.sortable]
if sortable then
local value = (date1.partial and date1.partial.first or date1).jdz
sortKey = makeSort(value, sortable)
end
local result = (sortKey or '') .. substituteParameters(
mtext['txt-dda'],
date1:text(fmt_ymd),
from_en(date1:text(fmt_date)),
from_en(dateDifference({
diff = diff,
show = 'y',
abbr = 'abbr_off',
disp = mtext['txt-dda-disp'],
range = 'dash',
sep = 'sep_space',
}))
) .. (problem or '')
local warnings = tonumber(frame.args.warnings)
if warnings and warnings > 0 then
local good = {
df = true,
mf = true,
}
local invalid
local imax = options.textdates and 2 or 6
for k, _ in pairs(args) do
if type(k) == 'number' then
if k > imax then
invalid = tostring(k)
break
end
else
if not good[k] then
invalid = k
break
end
end
end
if invalid then
result = result .. message('mt-warn-param1', invalid)
end
end
return result
end
local function dateToGsd(frame)
-- Implement [[Template:Gregorian serial date]].
-- Return Gregorian serial date of the given date, or the current date.
-- The returned value is negative for dates before 1 January 1 AD
-- despite the fact that GSD is not defined for such dates.
local date = getDates(frame, { wantMixture=true, single=true })
if type(date) == 'string' then
return date
end
return tostring(date.gsd)
end
local function jdToDate(frame)
-- Return formatted date from a Julian date.
-- The result includes a time if the input includes a fraction.
-- The word 'Julian' is accepted for the Julian calendar.
local Date = getExports(frame)
local args = frame:getParent().args
local date = Date('juliandate', args[1], args[2])
if date then
return from_en(date:text())
end
return message('mt-need-jdn')
end
local function dateToJd(frame)
-- Return Julian date (a number) from a date which may include a time,
-- or the current date ('currentdate') or current date and time ('currentdatetime').
-- The word 'Julian' is accepted for the Julian calendar.
local Date = getExports(frame)
local args = frame:getParent().args
local date = Date(args[1], args[2], args[3], args[4], args[5], args[6], args[7])
if date then
return tostring(date.jd)
end
return message('mt-need-valid-ymd-current')
end
local function timeInterval(frame)
-- Implement [[Template:Time interval]].
-- There are two positional arguments: date1, date2.
-- The default for each is the current date and time.
-- Result is date2 - date1 formatted.
local Date = getExports(frame)
local args = frame:getParent().args
local parms = {
extra = makeExtra(args),
wantDuration = yes[args.duration],
range = yes[args.range] or (args.range == 'dash' and 'dash' or nil),
wantSc = yes[args.sc],
}
local fix = yes[args.fix] and 'fix' or ''
local date1 = Date(fix, 'partial', stripToNil(args[1]) or 'currentdatetime')
if not date1 then
return message('mt-invalid-start')
end
local date2 = Date(fix, 'partial', stripToNil(args[2]) or 'currentdatetime')
if not date2 then
return message('mt-invalid-end')
end
parms.diff = date2 - date1
for argname, translate in pairs(translateParameters) do
local parm = stripToNil(args[argname])
if parm then
parm = translate[parm]
if parm == nil then -- test for nil because false is a valid setting
return message('mt-bad-param2', argname, args[argname])
end
parms[argname] = parm
end
end
if parms.round then
local round = parms.round
local show = parms.show
if round ~= 'on' then
if show then
if show.id ~= round then
return message('mt-conflicting-show', args.show, args.round)
end
else
parms.show = translateParameters.show[round]
end
end
parms.round = true
end
return from_en(dateDifference(parms))
end
local function templateGeneric(frame)
-- Example: {{#invoke:age||template=age_days|1 Apr 1980|1 Apr 2080|format=raw}} → 36525
local name = frame.args.template
if not name then
return message('mt-template-x')
end
return ageGeneric(frame:newChild({title = mw.title.new(name, 10), args = frame.args}))
end
return {
age_generic = ageGeneric, -- can emulate several age templates
birth_date_and_age = bda, -- Template:Birth_date_and_age
death_date_and_age = dda, -- Template:Death_date_and_age
gsd = dateToGsd, -- Template:Gregorian_serial_date
extract = dateExtract, -- Template:Extract
jd_to_date = jdToDate, -- Template:?
JULIANDAY = dateToJd, -- Template:JULIANDAY
time_interval = timeInterval, -- Template:Time_interval
[''] = templateGeneric, -- same as age_generic, but can be invoked directly
}
5jfartpt852zyo065229cuu9b3q1sqo
73875
69866
2026-07-11T18:58:59Z
Robertsky
10424
1 versaun husi [[:en:Module:Age]]
69866
Scribunto
text/plain
-- Implement various "age of" and other date-related templates.
local mtext = {
-- Message and other text that should be localized.
-- Also need to localize text in table names in function dateDifference.
['mt-bad-param2'] = 'Parameter $1=$2 is invalid',
['mt-bad-show'] = 'Parameter show=$1 is not supported here',
['mt-cannot-add'] = 'Cannot add "$1"',
['mt-conflicting-show'] = 'Parameter show=$1 conflicts with round=$2',
['mt-date-wrong-order'] = 'The second date must be later in time than the first date',
['mt-dd-future'] = 'Death date (first date) must not be in the future',
['mt-dd-wrong-order'] = 'Death date (first date) must be later in time than the birth date (second date)',
['mt-invalid-bd-age'] = 'Invalid birth date for calculating age',
['mt-invalid-dates-age'] = 'Invalid dates for calculating age',
['mt-invalid-end'] = 'Invalid end date in second parameter',
['mt-invalid-start'] = 'Invalid start date in first parameter',
['mt-need-jdn'] = 'Need valid Julian date number',
['mt-need-valid-bd'] = 'Need valid birth date: year, month, day',
['mt-need-valid-bd2'] = 'Need valid birth date (second date): year, month, day',
['mt-need-valid-date'] = 'Need valid date',
['mt-need-valid-dd'] = 'Need valid death date (first date): year, month, day',
['mt-need-valid-ymd'] = 'Need valid year, month, day',
['mt-need-valid-ymd-current'] = 'Need valid year|month|day or "currentdate"',
['mt-need-valid-ymd2'] = 'Second date should be year, month, day',
['mt-template-bad-name'] = 'The specified template name is not valid',
['mt-template-x'] = 'The template invoking this must have "|template=x" where x is the wanted operation',
['mt-warn-param1'] = 'Invalid parameter $1',
['mt-warn-param2'] = 'Parameter $1=$2 is invalid',
['txt-affirmative'] = { y = true, yes = true, Y = true, Yes = true, YES = true }, -- valid values for df + mf parameters
['txt-yes'] = { y = true, yes = true, on = true }, -- valid values for parameters introduced with this module
['txt-and'] = ' and ',
['txt-or'] = ' or ',
['txt-category'] = 'Category:Pages using age template with invalid date',
['txt-comma-and'] = ', and ',
['txt-error'] = 'Error: ',
['txt-format-default'] = 'mf', -- 'df' (day first = dmy) or 'mf' (month first = mdy)
['txt-module-convertnumeric'] = 'Module:ConvertNumeric',
['txt-module-date'] = 'Module:Date',
['txt-sandbox'] = 'sandbox',
['txt-bda'] = '<span style="display:none"> (<span class="bday">$1</span>) </span>$2<span class="noprint ForceAgeToShow"> (dalas $3)</span>',
['txt-dda'] = '$2<span style="display:none">($1)</span> (aged $3)',
['txt-bda-disp'] = 'disp_raw', -- disp_raw → age is a number only; disp_age → age is a number and unit (normally years but months or days if very young)
['txt-dda-disp'] = 'disp_raw',
['txt-dmy'] = '%-d %B %-Y',
['txt-mdy'] = '%B %-d, %-Y',
}
local isWarning = {
['mt-warn-param1'] = true,
['mt-warn-param2'] = true,
}
-- yes[parameter] is true if parameter should be interpreted as "yes".
-- Do not want to accept mixed upper/lowercase unless done by previously used templates.
-- Need to accept "on" because "round=on" is wanted.
local yes = mtext['txt-yes']
-- Max valid age.
local MAX_AGE = 130
local translate, from_en, to_en, isZero
if translate then
-- Functions to translate from en to local language and reverse go here.
-- See example at [[:bn:Module:বয়স]].
else
from_en = function (text)
return text
end
isZero = function (text)
return tonumber(text) == 0
end
end
local _Date, _currentDate
local function getExports(frame)
-- Return objects exported from the date module or its sandbox.
if not _Date then
local sandbox = frame:getTitle():find(mtext['txt-sandbox'], 1, true) and ('/' .. mtext['txt-sandbox']) or ''
local datemod = require(mtext['txt-module-date'] .. sandbox)
local realDate = datemod._Date
_currentDate = datemod._current
if to_en then
_Date = function (...)
local args = {}
for i, v in ipairs({...}) do
args[i] = to_en(v)
end
return realDate(unpack(args))
end
else
_Date = realDate
end
end
return _Date, _currentDate
end
local Collection -- a table to hold items
Collection = {
add = function (self, item)
if item ~= nil then
self.n = self.n + 1
self[self.n] = item
end
end,
join = function (self, sep)
return table.concat(self, sep)
end,
remove = function (self, pos)
if self.n > 0 and (pos == nil or (0 < pos and pos <= self.n)) then
self.n = self.n - 1
return table.remove(self, pos)
end
end,
sort = function (self, comp)
table.sort(self, comp)
end,
new = function ()
return setmetatable({n = 0}, Collection)
end
}
Collection.__index = Collection
local function stripToNil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (which may, for example, be nil).
if type(text) == 'string' then
text = text:match('(%S.-)%s*$')
end
return text
end
local function substituteParameters(text, ...)
-- Return text after substituting any given parameters for $1, $2, etc.
return mw.message.newRawMessage(text, ...):plain()
end
local function message(msg, ...)
-- Return formatted message text for an error or warning.
local function getText(msg)
return mtext[msg] or error('Bug: message "' .. tostring(msg) .. '" not defined')
end
local categories = {
error = mtext['txt-category'],
warning = mtext['txt-category'],
}
local a, b, k, category
local text = substituteParameters(getText(msg), ...)
if isWarning[msg] then
a = '<sup>[<i>'
b = '</i>]</sup>'
k = 'warning'
else
a = '<strong class="error">' .. getText('txt-error')
b = '</strong>'
k = 'error'
end
if mw.title.getCurrentTitle():inNamespaces(0) then
-- Category only in namespaces: 0=article.
category = '[[' .. categories[k] .. ']]'
end
return
a ..
mw.text.nowiki(text) ..
b ..
(category or '')
end
local function dateFormat(args, options)
-- Return
-- nil, f if parameter is valid
-- m, f otherwise
-- where
-- m = string for warning message with category
-- f = string for wanted date format
local wanted
if options.suppliedformat == 'dmy' then
wanted = 'df'
elseif options.suppliedformat == 'mdy' then
wanted = 'mf'
else
wanted = mtext['txt-format-default']
end
local problem
local other = wanted == 'df' and 'mf' or 'df'
local parm = args[other] or ''
if mtext['txt-affirmative'][parm] then
wanted = other
elseif parm ~= '' then
problem = message('mt-warn-param2', other, parm)
end
return problem, wanted == 'df' and mtext['txt-dmy'] or mtext['txt-mdy']
end
local function formatNumber(number)
-- Return the given number formatted with commas as group separators,
-- given that the number is an integer.
local numstr = tostring(number)
local length = #numstr
local places = Collection.new()
local pos = 0
repeat
places:add(pos)
pos = pos + 3
until pos >= length
places:add(length)
local groups = Collection.new()
for i = places.n, 2, -1 do
local p1 = length - places[i] + 1
local p2 = length - places[i - 1]
groups:add(numstr:sub(p1, p2))
end
return groups:join(',')
end
local function spellNumber(number, options, i)
-- Return result of spelling number, or
-- return number (as a string) if cannot spell it.
-- i == 1 for the first number which can optionally start with an uppercase letter.
number = tostring(number)
return require(mtext['txt-module-convertnumeric']).spell_number(
number,
nil, -- fraction numerator
nil, -- fraction denominator
i == 1 and options.upper, -- true: 'One' instead of 'one'
not options.us, -- true: use 'and' between tens/ones etc
options.adj, -- true: hyphenated
options.ordinal -- true: 'first' instead of 'one'
) or number
end
local function makeExtra(args, flagCurrent)
-- Return extra text that will be inserted before the visible result
-- but after any sort key.
local extra = args.prefix or ''
if mw.ustring.len(extra) > 1 then
-- Parameter "~" gives "~3" whereas "over" gives "over 3".
if extra:sub(-6, -1) ~= ' ' then
extra = extra .. ' '
end
end
if flagCurrent then
extra = '<span class="currentage"></span>' .. extra
end
return extra
end
local function makeSort(value, sortable)
-- Return a sort key if requested.
-- Assume value is a valid number which has not overflowed.
if sortable == 'sortable_table' or sortable == 'sortable_on' or sortable == 'sortable_debug' then
local sortKey
if value == 0 then
sortKey = '5000000000000000000'
else
local mag = math.floor(math.log10(math.abs(value)) + 1e-14)
if value > 0 then
sortKey = 7000 + mag
else
sortKey = 2999 - mag
value = value + 10^(mag+1)
end
sortKey = string.format('%d', sortKey) .. string.format('%015.0f', math.floor(value * 10^(14-mag)))
end
local result
if sortable == 'sortable_table' then
result = 'data-sort-value="_SORTKEY_"|'
elseif sortable == 'sortable_debug' then
result = '<span data-sort-value="_SORTKEY_♠"><span style="border:1px solid">_SORTKEY_♠</span></span>'
else
result = '<span data-sort-value="_SORTKEY_♠"></span>'
end
return (result:gsub('_SORTKEY_', sortKey))
end
end
local translateParameters = {
abbr = {
off = 'abbr_off',
on = 'abbr_on',
},
disp = {
age = 'disp_age',
raw = 'disp_raw',
},
format = {
raw = 'format_raw',
commas = 'format_commas',
},
round = {
on = 'on',
yes = 'on',
months = 'ym',
weeks = 'ymw',
days = 'ymd',
hours = 'ymdh',
},
sep = {
comma = 'sep_comma',
[','] = 'sep_comma',
serialcomma = 'sep_serialcomma',
space = 'sep_space',
},
show = {
hide = { id = 'hide' },
y = { 'y', id = 'y' },
ym = { 'y', 'm', id = 'ym' },
ymd = { 'y', 'm', 'd', id = 'ymd' },
ymw = { 'y', 'm', 'w', id = 'ymw' },
ymwd = { 'y', 'm', 'w', 'd', id = 'ymwd' },
yd = { 'y', 'd', id = 'yd', keepZero = true },
m = { 'm', id = 'm' },
md = { 'm', 'd', id = 'md' },
w = { 'w', id = 'w' },
wd = { 'w', 'd', id = 'wd' },
h = { 'H', id = 'h' },
hm = { 'H', 'M', id = 'hm' },
hms = { 'H', 'M', 'S', id = 'hms' },
M = { 'M', id = 'M' },
s = { 'S', id = 's' },
d = { 'd', id = 'd' },
dh = { 'd', 'H', id = 'dh' },
dhm = { 'd', 'H', 'M', id = 'dhm' },
dhms = { 'd', 'H', 'M', 'S', id = 'dhms' },
ymdh = { 'y', 'm', 'd', 'H', id = 'ymdh' },
ymdhm = { 'y', 'm', 'd', 'H', 'M', id = 'ymdhm' },
ymwdh = { 'y', 'm', 'w', 'd', 'H', id = 'ymwdh' },
ymwdhm = { 'y', 'm', 'w', 'd', 'H', 'M', id = 'ymwdhm' },
},
sortable = {
off = false,
on = 'sortable_on',
table = 'sortable_table',
debug = 'sortable_debug',
},
}
local spellOptions = {
cardinal = {},
Cardinal = { upper = true },
cardinal_us = { us = true },
Cardinal_us = { us = true, upper = true },
ordinal = { ordinal = true },
Ordinal = { ordinal = true, upper = true },
ordinal_us = { ordinal = true, us = true },
Ordinal_us = { ordinal = true, us = true, upper = true },
}
local function dateExtract(frame)
-- Return part of a date after performing an optional operation.
local Date = getExports(frame)
local args = frame:getParent().args
local parms = {}
for i, v in ipairs(args) do
parms[i] = v
end
if yes[args.fix] then
table.insert(parms, 'fix')
end
if yes[args.partial] then
table.insert(parms, 'partial')
end
local show = stripToNil(args.show) or 'dmy'
local date = Date(unpack(parms))
if not date then
if show == 'format' then
return 'error'
end
return message('mt-need-valid-date')
end
local add = stripToNil(args.add)
if add then
for item in add:gmatch('%S+') do
date = date + item
if not date then
return message('mt-cannot-add', item)
end
end
end
local sortKey, result
local sortable = translateParameters.sortable[args.sortable]
if sortable then
local value = (date.partial and date.partial.first or date).jdz
sortKey = makeSort(value, sortable)
end
if show ~= 'hide' then
result = date[show]
if result == nil then
result = from_en(date:text(show))
elseif type(result) == 'boolean' then
result = result and '1' or '0'
else
result = from_en(tostring(result))
end
end
return (sortKey or '') .. makeExtra(args) .. (result or '')
end
local function rangeJoin(range)
-- Return text to be used between a range of ages.
return range == 'dash' and '–' or mtext['txt-or']
end
local function makeText(values, components, names, options, noUpper)
-- Return wikitext representing an age or duration.
local text = Collection.new()
local count = #values
local sep = names.sep or ''
for i, v in ipairs(values) do
-- v is a number (say 4 for 4 years), or a table ({4,5} for 4 or 5 years).
local islist = type(v) == 'table'
if (islist or v > 0) or (text.n == 0 and i == count) or (text.n > 0 and components.keepZero) then
local fmt, vstr
if options.spell then
fmt = function(number)
return spellNumber(number, options.spell, noUpper or i)
end
elseif i == 1 and options.format == 'format_commas' then
-- Numbers after the first should be small and not need formatting.
fmt = formatNumber
else
fmt = tostring
end
if islist then
vstr = fmt(v[1]) .. rangeJoin(options.range)
noUpper = true
vstr = vstr .. fmt(v[2])
else
vstr = fmt(v)
end
local name = names[components[i]]
if name then
if type(name) == 'table' then
name = mw.getContentLanguage():plural(islist and v[2] or v, name)
end
text:add(vstr .. sep .. name)
else
text:add(vstr)
end
end
end
local first, last
if options.join == 'sep_space' then
first = ' '
last = ' '
elseif options.join == 'sep_comma' then
first = ', '
last = ', '
elseif options.join == 'sep_serialcomma' and text.n > 2 then
first = ', '
last = mtext['txt-comma-and']
else
first = ', '
last = mtext['txt-and']
end
for i, v in ipairs(text) do
if i < text.n then
text[i] = v .. (i + 1 < text.n and first or last)
end
end
local sign = ''
if options.isnegative then
-- Do not display negative zero.
if text.n > 1 or (text.n == 1 and text[1]:sub(1, 1) ~= '0' ) then
if options.format == 'format_raw' then
sign = '-' -- plain hyphen so result can be used in a calculation
else
sign = '−' -- Unicode U+2212 MINUS SIGN
end
end
end
return
(options.sortKey or '') ..
(options.extra or '') ..
sign ..
text:join() ..
(options.suffix or '')
end
local function dateDifference(parms)
-- Return a formatted date difference using the given parameters
-- which have been validated.
local names = {
-- Each name is:
-- * a string if no plural form of the name is used; or
-- * a table of strings, one of which is selected using the rules at
-- https://translatewiki.net/wiki/Plural/Mediawiki_plural_rules
abbr_off = {
sep = ' ',
y = {'year', 'years'},
m = {'month', 'months'},
w = {'week', 'weeks'},
d = {'day', 'days'},
H = {'hour', 'hours'},
M = {'minute', 'minutes'},
S = {'second', 'seconds'},
},
abbr_on = {
y = 'y',
m = 'm',
w = 'w',
d = 'd',
H = 'h',
M = 'm',
S = 's',
},
abbr_infant = { -- for {{age for infant}}
sep = ' ',
y = {'yr', 'yrs'},
m = {'mo', 'mos'},
w = {'wk', 'wks'},
d = {'day', 'days'},
H = {'hr', 'hrs'},
M = {'min', 'mins'},
S = {'sec', 'secs'},
},
abbr_raw = {},
}
local diff = parms.diff -- must be a valid date difference
local show = parms.show -- may be nil; default is set below
local abbr = parms.abbr or 'abbr_off'
local defaultJoin
if abbr ~= 'abbr_off' then
defaultJoin = 'sep_space'
end
if not show then
show = 'ymd'
if parms.disp == 'disp_age' then
if diff.years < 3 then
defaultJoin = 'sep_space'
if diff.years >= 1 then
show = 'ym'
else
show = 'md'
end
else
show = 'y'
end
end
end
if type(show) ~= 'table' then
show = translateParameters.show[show]
end
if parms.disp == 'disp_raw' then
defaultJoin = 'sep_space'
abbr = 'abbr_raw'
elseif parms.wantSc then
defaultJoin = 'sep_serialcomma'
end
local diffOptions = {
round = parms.round,
duration = parms.wantDuration,
range = parms.range and true or nil,
}
local sortKey
if parms.sortable then
local value = diff.age_days + (parms.wantDuration and 1 or 0) -- days and fraction of a day
if diff.isnegative then
value = -value
end
sortKey = makeSort(value, parms.sortable)
end
local textOptions = {
extra = parms.extra,
format = parms.format,
join = parms.sep or defaultJoin,
isnegative = diff.isnegative,
range = parms.range,
sortKey = sortKey,
spell = parms.spell,
suffix = parms.suffix, -- not currently used
}
if show.id == 'hide' then
return sortKey or ''
end
local values = { diff:age(show.id, diffOptions) }
if values[1] then
return makeText(values, show, names[abbr], textOptions)
end
if diff.partial then
-- Handle a more complex range such as
-- {{age_yd|20 Dec 2001|2003|range=yes}} → 1 year, 12 days or 2 years, 11 days
local opt = {
format = textOptions.format,
join = textOptions.join,
isnegative = textOptions.isnegative,
spell = textOptions.spell,
}
return
(textOptions.sortKey or '') ..
makeText({ diff.partial.mindiff:age(show.id, diffOptions) }, show, names[abbr], opt) ..
rangeJoin(textOptions.range) ..
makeText({ diff.partial.maxdiff:age(show.id, diffOptions) }, show, names[abbr], opt, true) ..
(textOptions.suffix or '')
end
return message('mt-bad-show', show.id)
end
local function getDates(frame, getopt)
-- Parse template parameters and return one of:
-- * date (a date table, if single)
-- * date1, date2 (two date tables, if not single)
-- * text (a string error message)
-- A missing date is optionally replaced with the current date.
-- If wantMixture is true, a missing date component is replaced
-- from the current date, so can get a bizarre mixture of
-- specified/current y/m/d as has been done by some "age" templates.
-- Some results may be placed in table getopt.
local Date, currentDate = getExports(frame)
getopt = getopt or {}
local function flagCurrent(text)
-- This allows the calling template to detect if the current date has been used,
-- that is, whether both dates have been entered in a template expecting two.
-- For example, an infobox may want the age when an event occurred, not the current age.
-- Don't bother detecting if wantMixture is used because not needed and it is a poor option.
if not text then
if getopt.noMissing then
return nil -- this gives a nil date which gives an error
end
text = 'currentdate'
if getopt.flag == 'usesCurrent' then
getopt.usesCurrent = true
end
end
return text
end
local args = frame:getParent().args
local fields = {}
local isNamed = args.year or args.year1 or args.year2 or
args.month or args.month1 or args.month2 or
args.day or args.day1 or args.day2
if isNamed then
fields[1] = args.year1 or args.year
fields[2] = args.month1 or args.month
fields[3] = args.day1 or args.day
fields[4] = args.year2
fields[5] = args.month2
fields[6] = args.day2
else
for i = 1, 6 do
fields[i] = args[i]
end
end
local imax = 0
for i = 1, 6 do
fields[i] = stripToNil(fields[i])
if fields[i] then
imax = i
end
if getopt.omitZero and i % 3 ~= 1 then -- omit zero months and days as unknown values but keep year 0 which is 1 BCE
if isZero(fields[i]) then
fields[i] = nil
getopt.partial = true
end
end
end
local fix = getopt.fix and 'fix' or ''
local partialText = getopt.partial and 'partial' or ''
local dates = {}
if isNamed or imax >= 3 then
local nrDates = getopt.single and 1 or 2
if getopt.wantMixture then
-- Cannot be partial since empty fields are set from current.
local components = { 'year', 'month', 'day' }
for i = 1, nrDates * 3 do
fields[i] = fields[i] or currentDate[components[i > 3 and i - 3 or i]]
end
for i = 1, nrDates do
local index = i == 1 and 1 or 4
local y, m, d = fields[index], fields[index+1], fields[index+2]
if (m == 2 or m == '2') and (d == 29 or d == '29') then
-- Workaround error with following which attempt to use invalid date 2001-02-29.
-- {{age_ymwd|year1=2001|year2=2004|month2=2|day2=29}}
-- {{age_ymwd|year1=2001|month1=2|year2=2004|month2=1|day2=29}}
-- TODO Get rid of wantMixture because even this ugly code does not handle
-- 'Feb' or 'February' or 'feb' or 'february'.
if not ((y % 4 == 0 and y % 100 ~= 0) or y % 400 == 0) then
d = 28
end
end
dates[i] = Date(y, m, d)
end
else
-- If partial dates are allowed, accept
-- year only, or
-- year and month only
-- Do not accept year and day without a month because that makes no sense
-- (and because, for example, Date('partial', 2001, nil, 12) sets day = nil, not 12).
for i = 1, nrDates do
local index = i == 1 and 1 or 4
local y, m, d = fields[index], fields[index+1], fields[index+2]
if (getopt.partial and y and (m or not d)) or (y and m and d) then
dates[i] = Date(fix, partialText, y, m, d)
elseif not y and not m and not d then
dates[i] = Date(flagCurrent())
end
end
end
else
getopt.textdates = true -- have parsed each date from a single text field
dates[1] = Date(fix, partialText, flagCurrent(fields[1]))
if not getopt.single then
dates[2] = Date(fix, partialText, flagCurrent(fields[2]))
end
end
if not dates[1] then
return message(getopt.missing1 or 'mt-need-valid-ymd')
end
if getopt.textdates then
getopt.suppliedformat = dates[1].format
end
if getopt.single then
return dates[1]
end
if not dates[2] then
return message(getopt.missing2 or 'mt-need-valid-ymd2')
end
return dates[1], dates[2]
end
local function ageGeneric(frame)
-- Return the result required by the specified template.
-- Can use sortable=x where x = on/table/off/debug in any supported template.
-- Some templates default to sortable=on but can be overridden.
local name = frame.args.template
if not name then
return message('mt-template-x')
end
local args = frame:getParent().args
local specs = {
age_days = { -- {{age in days}}
show = 'd',
disp = 'disp_raw',
},
age_days_nts = { -- {{age in days nts}}
show = 'd',
disp = 'disp_raw',
format = 'format_commas',
sortable = 'on',
},
duration_days = { -- {{duration in days}}
show = 'd',
disp = 'disp_raw',
duration = true,
},
duration_days_nts = { -- {{duration in days nts}}
show = 'd',
disp = 'disp_raw',
format = 'format_commas',
sortable = 'on',
duration = true,
},
age_full_years = { -- {{age}}
show = 'y',
abbr = 'abbr_raw',
flag = 'usesCurrent',
omitZero = true,
range = 'dash',
},
age_full_years_nts = { -- {{age nts}}
show = 'y',
abbr = 'abbr_raw',
format = 'format_commas',
sortable = 'on',
},
age_in_years = { -- {{age in years}}
show = 'y',
abbr = 'abbr_raw',
negative = 'error',
range = 'dash',
},
age_in_years_nts = { -- {{age in years nts}}
show = 'y',
abbr = 'abbr_raw',
negative = 'error',
range = 'dash',
format = 'format_commas',
sortable = 'on',
},
age_infant = { -- {{age for infant}}
-- Do not set show because special processing is done later.
abbr = yes[args.abbr] and 'abbr_infant' or 'abbr_off',
disp = 'disp_age',
sep = 'sep_space',
sortable = 'on',
},
age_m = { -- {{age in months}}
show = 'm',
disp = 'disp_raw',
},
age_w = { -- {{age in weeks}}
show = 'w',
disp = 'disp_raw',
},
age_wd = { -- {{age in weeks and days}}
show = 'wd',
},
age_yd = { -- {{age in years and days}}
show = 'yd',
format = 'format_commas',
sep = args.sep ~= 'and' and 'sep_comma' or nil,
},
age_yd_nts = { -- {{age in years and days nts}}
show = 'yd',
format = 'format_commas',
sep = args.sep ~= 'and' and 'sep_comma' or nil,
sortable = 'on',
},
age_ym = { -- {{age in years and months}}
show = 'ym',
sep = 'sep_comma',
},
age_ymd = { -- {{age in years, months and days}}
show = 'ymd',
range = true,
},
age_ymwd = { -- {{age in years, months, weeks and days}}
show = 'ymwd',
wantMixture = true,
},
}
local spec = specs[name]
if not spec then
return message('mt-template-bad-name')
end
if name == 'age_days' then
local su = stripToNil(args['show unit'])
if su then
if su == 'abbr' or su == 'full' then
spec.disp = nil
spec.abbr = su == 'abbr' and 'abbr_on' or nil
end
end
end
local partial, autofill
local range = stripToNil(args.range) or spec.range
if range then
-- Suppose partial dates are used and age could be 11 or 12 years.
-- "|range=" (empty value) has no effect (spec is used).
-- "|range=yes" or spec.range == true sets range = true (gives "11 or 12")
-- "|range=dash" or spec.range == 'dash' sets range = 'dash' (gives "11–12").
-- "|range=no" or spec.range == 'no' sets range = nil and fills each date in the diff (gives "12").
-- ("on" is equivalent to "yes", and "off" is equivalent to "no").
-- "|range=OTHER" sets range = nil and rejects partial dates.
range = ({ dash = 'dash', off = 'no', no = 'no', [true] = true })[range] or yes[range]
if range then
partial = true -- accept partial dates with a possible age range for the result
if range == 'no' then
autofill = true -- missing month/day in first or second date are filled from other date or 1
range = nil
end
end
end
local getopt = {
fix = yes[args.fix],
flag = stripToNil(args.flag) or spec.flag,
omitZero = spec.omitZero,
partial = partial,
wantMixture = spec.wantMixture,
}
local date1, date2 = getDates(frame, getopt)
if type(date1) == 'string' then
return date1
end
local format = stripToNil(args.format)
local spell = spellOptions[format]
if format then
format = 'format_' .. format
elseif name == 'age_days' and getopt.textdates then
format = 'format_commas'
end
local parms = {
diff = date2:subtract(date1, { fill = autofill }),
wantDuration = spec.duration or yes[args.duration],
range = range,
wantSc = yes[args.sc],
show = args.show == 'hide' and 'hide' or spec.show,
abbr = spec.abbr,
disp = spec.disp,
extra = makeExtra(args, getopt.usesCurrent and format ~= 'format_raw'),
format = format or spec.format,
round = yes[args.round],
sep = spec.sep,
sortable = translateParameters.sortable[args.sortable or spec.sortable],
spell = spell,
}
if (spec.negative or frame.args.negative) == 'error' and parms.diff.isnegative then
return message('mt-date-wrong-order')
end
return from_en(dateDifference(parms))
end
local function isFake(args)
-- Some templates have TemplateData with an auto value like "{{Birth date and age|YYYY|MM|DD}}".
-- Return true if that appears to be the case so the caller can output nothing rather than an error.
return args[1] == 'YYYY'
end
local function bda(frame)
-- Implement [[Template:Birth date and age]].
local args = frame:getParent().args
if isFake(args) then
return ''
end
local options = {
missing1 = 'mt-need-valid-bd',
noMissing = true,
single = true,
}
local date = getDates(frame, options)
if type(date) == 'string' then
return date -- error text
end
local Date = getExports(frame)
local diff = Date('currentdate') - date
if diff.isnegative or diff.years > MAX_AGE then
return message('mt-invalid-bd-age')
end
local disp = mtext['txt-bda-disp']
local show = 'y'
if diff.years < 2 then
disp = 'disp_age'
if diff.years == 0 and diff.months == 0 then
show = 'd'
else
show = 'm'
end
end
local problem, format = dateFormat(args, options)
local result = substituteParameters(
mtext['txt-bda'],
date:text('%-Y-%m-%d'),
from_en(date:text(format)),
from_en(dateDifference({
diff = diff,
show = show,
abbr = 'abbr_off',
disp = disp,
sep = 'sep_space',
}))
) .. (problem or '')
local warnings = tonumber(frame.args.warnings)
if warnings and warnings > 0 then
local good = {
df = true,
mf = true,
day = true,
day1 = true,
month = true,
month1 = true,
year = true,
year1 = true,
}
local invalid
local imax = options.textdates and 1 or 3
for k, _ in pairs(args) do
if type(k) == 'number' then
if k > imax then
invalid = tostring(k)
break
end
else
if not good[k] then
invalid = k
break
end
end
end
if invalid then
result = result .. message('mt-warn-param1', invalid)
end
end
return result
end
local function dda(frame)
-- Implement [[Template:Death date and age]].
local args = frame:getParent().args
if isFake(args) then
return ''
end
local options = {
missing1 = 'mt-need-valid-dd',
missing2 = 'mt-need-valid-bd2',
noMissing = true,
partial = true,
}
local date1, date2 = getDates(frame, options)
if type(date1) == 'string' then
return date1
end
local diff = date1 - date2
if diff.isnegative then
return message('mt-dd-wrong-order')
end
local Date = getExports(frame)
local today = Date('currentdate') + 1 -- one day in future allows for timezones
if date1 > today then
return message('mt-dd-future')
end
local years
if diff.partial then
years = diff.partial.years
years = type(years) == 'table' and years[2] or years
else
years = diff.years
end
if years > MAX_AGE then
return message('mt-invalid-dates-age')
end
local fmt_date, fmt_ymd, problem
if date1.day then -- y, m, d known
problem, fmt_date = dateFormat(args, options)
fmt_ymd = '%-Y-%m-%d'
elseif date1.month then -- y, m known; d unknown
fmt_date = '%B %-Y'
fmt_ymd = '%-Y-%m-00'
else -- y known; m, d unknown
fmt_date = '%-Y'
fmt_ymd = '%-Y-00-00'
end
local sortKey
local sortable = translateParameters.sortable[args.sortable]
if sortable then
local value = (date1.partial and date1.partial.first or date1).jdz
sortKey = makeSort(value, sortable)
end
local result = (sortKey or '') .. substituteParameters(
mtext['txt-dda'],
date1:text(fmt_ymd),
from_en(date1:text(fmt_date)),
from_en(dateDifference({
diff = diff,
show = 'y',
abbr = 'abbr_off',
disp = mtext['txt-dda-disp'],
range = 'dash',
sep = 'sep_space',
}))
) .. (problem or '')
local warnings = tonumber(frame.args.warnings)
if warnings and warnings > 0 then
local good = {
df = true,
mf = true,
}
local invalid
local imax = options.textdates and 2 or 6
for k, _ in pairs(args) do
if type(k) == 'number' then
if k > imax then
invalid = tostring(k)
break
end
else
if not good[k] then
invalid = k
break
end
end
end
if invalid then
result = result .. message('mt-warn-param1', invalid)
end
end
return result
end
local function dateToGsd(frame)
-- Implement [[Template:Gregorian serial date]].
-- Return Gregorian serial date of the given date, or the current date.
-- The returned value is negative for dates before 1 January 1 AD
-- despite the fact that GSD is not defined for such dates.
local date = getDates(frame, { wantMixture=true, single=true })
if type(date) == 'string' then
return date
end
return tostring(date.gsd)
end
local function jdToDate(frame)
-- Return formatted date from a Julian date.
-- The result includes a time if the input includes a fraction.
-- The word 'Julian' is accepted for the Julian calendar.
local Date = getExports(frame)
local args = frame:getParent().args
local date = Date('juliandate', args[1], args[2])
if date then
return from_en(date:text())
end
return message('mt-need-jdn')
end
local function dateToJd(frame)
-- Return Julian date (a number) from a date which may include a time,
-- or the current date ('currentdate') or current date and time ('currentdatetime').
-- The word 'Julian' is accepted for the Julian calendar.
local Date = getExports(frame)
local args = frame:getParent().args
local date = Date(args[1], args[2], args[3], args[4], args[5], args[6], args[7])
if date then
return tostring(date.jd)
end
return message('mt-need-valid-ymd-current')
end
local function timeInterval(frame)
-- Implement [[Template:Time interval]].
-- There are two positional arguments: date1, date2.
-- The default for each is the current date and time.
-- Result is date2 - date1 formatted.
local Date = getExports(frame)
local args = frame:getParent().args
local parms = {
extra = makeExtra(args),
wantDuration = yes[args.duration],
range = yes[args.range] or (args.range == 'dash' and 'dash' or nil),
wantSc = yes[args.sc],
}
local fix = yes[args.fix] and 'fix' or ''
local date1 = Date(fix, 'partial', stripToNil(args[1]) or 'currentdatetime')
if not date1 then
return message('mt-invalid-start')
end
local date2 = Date(fix, 'partial', stripToNil(args[2]) or 'currentdatetime')
if not date2 then
return message('mt-invalid-end')
end
parms.diff = date2 - date1
for argname, translate in pairs(translateParameters) do
local parm = stripToNil(args[argname])
if parm then
parm = translate[parm]
if parm == nil then -- test for nil because false is a valid setting
return message('mt-bad-param2', argname, args[argname])
end
parms[argname] = parm
end
end
if parms.round then
local round = parms.round
local show = parms.show
if round ~= 'on' then
if show then
if show.id ~= round then
return message('mt-conflicting-show', args.show, args.round)
end
else
parms.show = translateParameters.show[round]
end
end
parms.round = true
end
return from_en(dateDifference(parms))
end
local function templateGeneric(frame)
-- Example: {{#invoke:age||template=age_days|1 Apr 1980|1 Apr 2080|format=raw}} → 36525
local name = frame.args.template
if not name then
return message('mt-template-x')
end
return ageGeneric(frame:newChild({title = mw.title.new(name, 10), args = frame.args}))
end
return {
age_generic = ageGeneric, -- can emulate several age templates
birth_date_and_age = bda, -- Template:Birth_date_and_age
death_date_and_age = dda, -- Template:Death_date_and_age
gsd = dateToGsd, -- Template:Gregorian_serial_date
extract = dateExtract, -- Template:Extract
jd_to_date = jdToDate, -- Template:?
JULIANDAY = dateToJd, -- Template:JULIANDAY
time_interval = timeInterval, -- Template:Time_interval
[''] = templateGeneric, -- same as age_generic, but can be invoked directly
}
md3ir4q3pqhdpjh17axofetw5ylhtz8
Módulo:Date
828
7090
73876
69858
2026-02-18T03:21:21Z
Krinkle
1369
Fix nil minute/minute. While not covered by [[Module:Date/testcases]], I probably caused a bug, as observed when running `=require('Module:Date')._Date('currentdatetime')` which works fine against sandbox and previous revisions.
73876
Scribunto
text/plain
-- Date functions for use by other modules.
-- I18N and time zones are not supported.
local MINUS = '−' -- Unicode U+2212 MINUS SIGN
local floor = math.floor
local Date, DateDiff, diffmt -- forward declarations
local uniq = { 'unique identifier' }
local function is_date(t)
-- The system used to make a date read-only means there is no unique
-- metatable that is conveniently accessible to check.
return type(t) == 'table' and t._id == uniq
end
local function is_diff(t)
return type(t) == 'table' and getmetatable(t) == diffmt
end
local function _list_join(list, sep)
return table.concat(list, sep)
end
local function collection()
-- Return a table to hold items.
return {
n = 0,
add = function (self, item)
self.n = self.n + 1
self[self.n] = item
end,
join = _list_join,
}
end
local function strip_to_nil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (convenient when Date fields are provided from
-- another module which may pass a string, a number, or another type).
if type(text) == 'string' then
text = text:match('(%S.-)%s*$')
end
return text
end
local function is_leap_year(year, calname)
-- Return true if year is a leap year.
if calname == 'Julian' then
return year % 4 == 0
end
return (year % 4 == 0 and year % 100 ~= 0) or year % 400 == 0
end
local function days_in_month(year, month, calname)
-- Return number of days (1..31) in given month (1..12).
if month == 2 and is_leap_year(year, calname) then
return 29
end
return ({ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 })[month]
end
local function h_m_s(time)
-- Return hour, minute, second extracted from fraction of a day.
time = floor(time * 24 * 3600 + 0.5) -- number of seconds
local second = time % 60
time = floor(time / 60)
return floor(time / 60), time % 60, second
end
local function hms(date)
-- Return fraction of a day from date's time, where (0 <= fraction < 1)
-- if the values are valid, but could be anything if outside range.
return (date.hour + (date.minute + date.second / 60) / 60) / 24
end
local function julian_date(date)
-- Return jd, jdz from a Julian or Gregorian calendar date where
-- jd = Julian date and its fractional part is zero at noon
-- jdz = same, but assume time is 00:00:00 if no time given
-- http://www.tondering.dk/claus/cal/julperiod.php#formula
-- Testing shows this works for all dates from year -9999 to 9999!
-- JDN 0 is the 24-hour period starting at noon UTC on Monday
-- 1 January 4713 BC = (-4712, 1, 1) Julian calendar
-- 24 November 4714 BC = (-4713, 11, 24) Gregorian calendar
local offset
local a = floor((14 - date.month)/12)
local y = date.year + 4800 - a
if date.calendar == 'Julian' then
offset = floor(y/4) - 32083
else
offset = floor(y/4) - floor(y/100) + floor(y/400) - 32045
end
local m = date.month + 12*a - 3
local jd = date.day + floor((153*m + 2)/5) + 365*y + offset
if date.hastime then
jd = jd + hms(date) - 0.5
return jd, jd
end
return jd, jd - 0.5
end
local function set_date_from_jd(date)
-- Set the fields of table date from its Julian date field.
-- Return true if date is valid.
-- http://www.tondering.dk/claus/cal/julperiod.php#formula
-- This handles the proleptic Julian and Gregorian calendars.
-- Negative Julian dates are not defined but they work.
local calname = date.calendar
local low, high -- min/max limits for date ranges −9999-01-01 to 9999-12-31
if calname == 'Gregorian' then
low, high = -1930999.5, 5373484.49999
elseif calname == 'Julian' then
low, high = -1931076.5, 5373557.49999
else
return
end
local jd = date.jd
if not (type(jd) == 'number' and low <= jd and jd <= high) then
return
end
local jdn = floor(jd)
if date.hastime then
local time = jd - jdn -- 0 <= time < 1
if time >= 0.5 then -- if at or after midnight of next day
jdn = jdn + 1
time = time - 0.5
else
time = time + 0.5
end
date.hour, date.minute, date.second = h_m_s(time)
else
date.second = 0
date.minute = 0
date.hour = 0
end
local b, c
if calname == 'Julian' then
b = 0
c = jdn + 32082
else -- Gregorian
local a = jdn + 32044
b = floor((4*a + 3)/146097)
c = a - floor(146097*b/4)
end
local d = floor((4*c + 3)/1461)
local e = c - floor(1461*d/4)
local m = floor((5*e + 2)/153)
date.day = e - floor((153*m + 2)/5) + 1
date.month = m + 3 - 12*floor(m/10)
date.year = 100*b + d - 4800 + floor(m/10)
return true
end
local function fix_numbers(numbers, y, m, d, H, M, S, partial, hastime, calendar)
-- Put the result of normalizing the given values in table numbers.
-- The result will have valid m, d values if y is valid; caller checks y.
-- The logic of PHP mktime is followed where m or d can be zero to mean
-- the previous unit, and -1 is the one before that, etc.
-- Positive values carry forward.
local date
if not (1 <= m and m <= 12) then
date = Date(y, 1, 1)
if not date then return end
date = date + ((m - 1) .. 'm')
y, m = date.year, date.month
end
local days_hms
if not partial then
if hastime and H and M and S then
if not (0 <= H and H <= 23 and
0 <= M and M <= 59 and
0 <= S and S <= 59) then
days_hms = hms({ hour = H, minute = M, second = S })
end
end
if days_hms or not (1 <= d and d <= days_in_month(y, m, calendar)) then
date = date or Date(y, m, 1)
if not date then return end
date = date + (d - 1 + (days_hms or 0))
y, m, d = date.year, date.month, date.day
if days_hms then
H, M, S = date.hour, date.minute, date.second
end
end
end
numbers.year = y
numbers.month = m
numbers.day = d
if days_hms then
-- Don't set H unless it was valid because a valid H will set hastime.
numbers.hour = H
numbers.minute = M
numbers.second = S
end
end
local function set_date_from_numbers(date, numbers, options)
-- Set the fields of table date from numeric values.
-- Return true if date is valid.
if type(numbers) ~= 'table' then
return
end
local y = numbers.year or date.year
local m = numbers.month or date.month
local d = numbers.day or date.day
local H = numbers.hour
local M = numbers.minute or date.minute or 0
local S = numbers.second or date.second or 0
local need_fix
if y and m and d then
date.partial = nil
if not (-9999 <= y and y <= 9999 and
1 <= m and m <= 12 and
1 <= d and d <= days_in_month(y, m, date.calendar)) then
if not date.want_fix then
return
end
need_fix = true
end
elseif y and date.partial then
if d or not (-9999 <= y and y <= 9999) then
return
end
if m and not (1 <= m and m <= 12) then
if not date.want_fix then
return
end
need_fix = true
end
else
return
end
if date.partial then
H = nil -- ignore any time
M = nil
S = nil
else
if H then
-- It is not possible to set M or S without also setting H.
date.hastime = true
else
H = 0
end
if not (0 <= H and H <= 23 and
0 <= M and M <= 59 and
0 <= S and S <= 59) then
if date.want_fix then
need_fix = true
else
return
end
end
end
date.want_fix = nil
if need_fix then
fix_numbers(numbers, y, m, d, H, M, S, date.partial, date.hastime, date.calendar)
return set_date_from_numbers(date, numbers, options)
end
date.year = y -- -9999 to 9999 ('n BC' → year = 1 - n)
date.month = m -- 1 to 12 (may be nil if partial)
date.day = d -- 1 to 31 (* = nil if partial)
date.hour = H -- 0 to 59 (*)
date.minute = M -- 0 to 59 (*)
date.second = S -- 0 to 59 (*)
if type(options) == 'table' then
for _, k in ipairs({ 'am', 'era', 'format' }) do
if options[k] then
date.options[k] = options[k]
end
end
end
return true
end
local function make_option_table(options1, options2)
-- If options1 is a string, return a table with its settings, or
-- if it is a table, use its settings.
-- Missing options are set from table options2 or defaults.
-- If a default is used, a flag is set so caller knows the value was not intentionally set.
-- Valid option settings are:
-- am: 'am', 'a.m.', 'AM', 'A.M.'
-- 'pm', 'p.m.', 'PM', 'P.M.' (each has same meaning as corresponding item above)
-- era: 'BCMINUS', 'BCNEGATIVE', 'BC', 'B.C.', 'BCE', 'B.C.E.', 'AD', 'A.D.', 'CE', 'C.E.'
-- Option am = 'am' does not mean the hour is AM; it means 'am' or 'pm' is used, depending on the hour,
-- and am = 'pm' has the same meaning.
-- Similarly, era = 'BC' means 'BC' is used if year <= 0.
-- BCMINUS displays a MINUS if year < 0 and the display format does not include %{era}.
-- BCNEGATIVE is similar but displays a hyphen.
local result = { bydefault = {} }
if type(options1) == 'table' then
result.am = options1.am
result.era = options1.era
elseif type(options1) == 'string' then
-- Example: 'am:AM era:BC' or 'am=AM era=BC'.
for item in options1:gmatch('%S+') do
local lhs, rhs = item:match('^(%w+)[:=](.+)$')
if lhs then
result[lhs] = rhs
end
end
end
options2 = type(options2) == 'table' and options2 or {}
local defaults = { am = 'am', era = 'BC' }
for k, v in pairs(defaults) do
if not result[k] then
if options2[k] then
result[k] = options2[k]
else
result[k] = v
result.bydefault[k] = true
end
end
end
return result
end
local ampm_options = {
-- lhs = input text accepted as an am/pm option
-- rhs = code used internally
['am'] = 'am',
['AM'] = 'AM',
['a.m.'] = 'a.m.',
['A.M.'] = 'A.M.',
['pm'] = 'am', -- same as am
['PM'] = 'AM',
['p.m.'] = 'a.m.',
['P.M.'] = 'A.M.',
}
local era_text = {
-- Text for displaying an era with a positive year (after adjusting
-- by replacing year with 1 - year if date.year <= 0).
-- options.era = { year<=0 , year>0 }
['BCMINUS'] = { 'BC' , '' , isbc = true, sign = MINUS },
['BCNEGATIVE'] = { 'BC' , '' , isbc = true, sign = '-' },
['BC'] = { 'BC' , '' , isbc = true },
['B.C.'] = { 'B.C.' , '' , isbc = true },
['BCE'] = { 'BCE' , '' , isbc = true },
['B.C.E.'] = { 'B.C.E.', '' , isbc = true },
['AD'] = { 'BC' , 'AD' },
['A.D.'] = { 'B.C.' , 'A.D.' },
['CE'] = { 'BCE' , 'CE' },
['C.E.'] = { 'B.C.E.', 'C.E.' },
}
local function get_era_for_year(era, year)
return (era_text[era] or era_text['BC'])[year > 0 and 2 or 1] or ''
end
local function strftime(date, format, options)
-- Return date formatted as a string using codes similar to those
-- in the C strftime library function.
local sformat = string.format
local shortcuts = {
['%c'] = '%-I:%M %p %-d %B %-Y %{era}', -- date and time: 2:30 pm 1 April 2016
['%x'] = '%-d %B %-Y %{era}', -- date: 1 April 2016
['%X'] = '%-I:%M %p', -- time: 2:30 pm
}
if shortcuts[format] then
format = shortcuts[format]
end
local codes = {
a = { field = 'dayabbr' },
A = { field = 'dayname' },
b = { field = 'monthabbr' },
B = { field = 'monthname' },
u = { fmt = '%d' , field = 'dowiso' },
w = { fmt = '%d' , field = 'dow' },
d = { fmt = '%02d', fmt2 = '%d', field = 'day' },
m = { fmt = '%02d', fmt2 = '%d', field = 'month' },
Y = { fmt = '%04d', fmt2 = '%d', field = 'year' },
H = { fmt = '%02d', fmt2 = '%d', field = 'hour' },
M = { fmt = '%02d', fmt2 = '%d', field = 'minute' },
S = { fmt = '%02d', fmt2 = '%d', field = 'second' },
j = { fmt = '%03d', fmt2 = '%d', field = 'dayofyear' },
I = { fmt = '%02d', fmt2 = '%d', field = 'hour', special = 'hour12' },
p = { field = 'hour', special = 'am' },
}
options = make_option_table(options, date.options)
local amopt = options.am
local eraopt = options.era
local function replace_code(spaces, modifier, id)
local code = codes[id]
if code then
local fmt = code.fmt
if modifier == '-' and code.fmt2 then
fmt = code.fmt2
end
local value = date[code.field]
if not value then
return nil -- an undefined field in a partial date
end
local special = code.special
if special then
if special == 'hour12' then
value = value % 12
value = value == 0 and 12 or value
elseif special == 'am' then
local ap = ({
['a.m.'] = { 'a.m.', 'p.m.' },
['AM'] = { 'AM', 'PM' },
['A.M.'] = { 'A.M.', 'P.M.' },
})[ampm_options[amopt]] or { 'am', 'pm' }
return (spaces == '' and '' or ' ') .. (value < 12 and ap[1] or ap[2])
end
end
if code.field == 'year' then
local sign = (era_text[eraopt] or {}).sign
if not sign or format:find('%{era}', 1, true) then
sign = ''
if value <= 0 then
value = 1 - value
end
else
if value >= 0 then
sign = ''
else
value = -value
end
end
return spaces .. sign .. sformat(fmt, value)
end
return spaces .. (fmt and sformat(fmt, value) or value)
end
end
local function replace_property(spaces, id)
if id == 'era' then
-- Special case so can use local era option.
local result = get_era_for_year(eraopt, date.year)
if result == '' then
return ''
end
return (spaces == '' and '' or ' ') .. result
end
local result = date[id]
if type(result) == 'string' then
return spaces .. result
end
if type(result) == 'number' then
return spaces .. tostring(result)
end
if type(result) == 'boolean' then
return spaces .. (result and '1' or '0')
end
-- This occurs if id is an undefined field in a partial date, or is the name of a function.
return nil
end
local PERCENT = '\127PERCENT\127'
return (format
:gsub('%%%%', PERCENT)
:gsub('(%s*)%%{(%w+)}', replace_property)
:gsub('(%s*)%%(%-?)(%a)', replace_code)
:gsub(PERCENT, '%%')
)
end
local function _date_text(date, fmt, options)
-- Return a formatted string representing the given date.
if not is_date(date) then
error('date:text: need a date (use "date:text()" with a colon)', 2)
end
if type(fmt) == 'string' and fmt:match('%S') then
if fmt:find('%', 1, true) then
return strftime(date, fmt, options)
end
elseif date.partial then
fmt = date.month and 'my' or 'y'
else
fmt = 'dmy'
if date.hastime then
fmt = (date.second > 0 and 'hms ' or 'hm ') .. fmt
end
end
local function bad_format()
-- For consistency with other format processing, return given format
-- (or cleaned format if original was not a string) if invalid.
return mw.text.nowiki(fmt)
end
if date.partial then
-- Ignore days in standard formats like 'ymd'.
if fmt == 'ym' or fmt == 'ymd' then
fmt = date.month and '%Y-%m %{era}' or '%Y %{era}'
elseif fmt == 'my' or fmt == 'dmy' or fmt == 'mdy' then
fmt = date.month and '%B %-Y %{era}' or '%-Y %{era}'
elseif fmt == 'y' then
fmt = date.month and '%-Y %{era}' or '%-Y %{era}'
else
return bad_format()
end
return strftime(date, fmt, options)
end
local function hm_fmt()
local plain = make_option_table(options, date.options).bydefault.am
return plain and '%H:%M' or '%-I:%M %p'
end
local need_time = date.hastime
local t = collection()
for item in fmt:gmatch('%S+') do
local f
if item == 'hm' then
f = hm_fmt()
need_time = false
elseif item == 'hms' then
f = '%H:%M:%S'
need_time = false
elseif item == 'ymd' then
f = '%Y-%m-%d %{era}'
elseif item == 'mdy' then
f = '%B %-d, %-Y %{era}'
elseif item == 'dmy' then
f = '%-d %B %-Y %{era}'
else
return bad_format()
end
t:add(f)
end
fmt = t:join(' ')
if need_time then
fmt = hm_fmt() .. ' ' .. fmt
end
return strftime(date, fmt, options)
end
local day_info = {
-- 0=Sun to 6=Sat
[0] = { 'Sun', 'Sunday' },
{ 'Mon', 'Monday' },
{ 'Tue', 'Tuesday' },
{ 'Wed', 'Wednesday' },
{ 'Thu', 'Thursday' },
{ 'Fri', 'Friday' },
{ 'Sat', 'Saturday' },
}
local month_info = {
-- 1=Jan to 12=Dec
{ 'Jan', 'January' },
{ 'Feb', 'February' },
{ 'Mar', 'March' },
{ 'Apr', 'April' },
{ 'May', 'May' },
{ 'Jun', 'June' },
{ 'Jul', 'July' },
{ 'Aug', 'August' },
{ 'Sep', 'September' },
{ 'Oct', 'October' },
{ 'Nov', 'November' },
{ 'Dec', 'December' },
}
local function name_to_number(text, translate)
if type(text) == 'string' then
return translate[text:lower()]
end
end
local function day_number(text)
return name_to_number(text, {
sun = 0, sunday = 0,
mon = 1, monday = 1,
tue = 2, tuesday = 2,
wed = 3, wednesday = 3,
thu = 4, thursday = 4,
fri = 5, friday = 5,
sat = 6, saturday = 6,
})
end
local function month_number(text)
return name_to_number(text:gsub('%.', ''), {
jan = 1, january = 1,
feb = 2, february = 2,
mar = 3, march = 3,
apr = 4, april = 4,
may = 5,
jun = 6, june = 6,
jul = 7, july = 7,
aug = 8, august = 8,
sep = 9, september = 9, sept = 9,
oct = 10, october = 10,
nov = 11, november = 11,
dec = 12, december = 12,
})
end
local function _list_text(list, fmt)
-- Return a list of formatted strings from a list of dates.
if not type(list) == 'table' then
error('date:list:text: need "list:text()" with a colon', 2)
end
local result = { join = _list_join }
for i, date in ipairs(list) do
result[i] = date:text(fmt)
end
return result
end
local function _date_list(date, spec)
-- Return a possibly empty numbered table of dates meeting the specification.
-- Dates in the list are in ascending order (oldest date first).
-- The spec should be a string of form "<count> <day> <op>"
-- where each item is optional and
-- count = number of items wanted in list
-- day = abbreviation or name such as Mon or Monday
-- op = >, >=, <, <= (default is > meaning after date)
-- If no count is given, the list is for the specified days in date's month.
-- The default day is date's day.
-- The spec can also be a positive or negative number:
-- -5 is equivalent to '5 <'
-- 5 is equivalent to '5' which is '5 >'
if not is_date(date) then
error('date:list: need a date (use "date:list()" with a colon)', 2)
end
local list = { text = _list_text }
if date.partial then
return list
end
local count, offset, operation
local ops = {
['>='] = { before = false, include = true },
['>'] = { before = false, include = false },
['<='] = { before = true , include = true },
['<'] = { before = true , include = false },
}
if spec then
if type(spec) == 'number' then
count = floor(spec + 0.5)
if count < 0 then
count = -count
operation = ops['<']
end
elseif type(spec) == 'string' then
local num, day, op = spec:match('^%s*(%d*)%s*(%a*)%s*([<>=]*)%s*$')
if not num then
return list
end
if num ~= '' then
count = tonumber(num)
end
if day ~= '' then
local dow = day_number(day:gsub('[sS]$', '')) -- accept plural days
if not dow then
return list
end
offset = dow - date.dow
end
operation = ops[op]
else
return list
end
end
offset = offset or 0
operation = operation or ops['>']
local datefrom, dayfirst, daylast
if operation.before then
if offset > 0 or (offset == 0 and not operation.include) then
offset = offset - 7
end
if count then
if count > 1 then
offset = offset - 7*(count - 1)
end
datefrom = date + offset
else
daylast = date.day + offset
dayfirst = daylast % 7
if dayfirst == 0 then
dayfirst = 7
end
end
else
if offset < 0 or (offset == 0 and not operation.include) then
offset = offset + 7
end
if count then
datefrom = date + offset
else
dayfirst = date.day + offset
daylast = date.monthdays
end
end
if not count then
if daylast < dayfirst then
return list
end
count = floor((daylast - dayfirst)/7) + 1
datefrom = Date(date, {day = dayfirst})
end
for i = 1, count do
if not datefrom then break end -- exceeds date limits
list[i] = datefrom
datefrom = datefrom + 7
end
return list
end
-- Cache the current date/time (UTC).
--
-- Note that os.date() returns an empty object with optimized lazy getters for each field.
-- Avoid current.min or current.sec in articles! https://phabricator.wikimedia.org/T416616
--
-- Beware that while os.date() uses 'min' and 'sec', our Date() uses 'minute' and 'second'.
local current = os.date('!*t')
local function extract_date(newdate, text)
-- Parse the date/time in text and return n, o where
-- n = table of numbers with date/time fields
-- o = table of options for AM/PM or AD/BC or format, if any
-- or return nothing if date is known to be invalid.
-- Caller determines if the values in n are valid.
-- A year must be positive ('1' to '9999'); use 'BC' for BC.
-- In a y-m-d string, the year must be four digits to avoid ambiguity
-- ('0001' to '9999'). The only way to enter year <= 0 is by specifying
-- the date as three numeric parameters like ymd Date(-1, 1, 1).
-- Dates of form d/m/y, m/d/y, y/m/d are rejected as potentially ambiguous.
local date, options = {}, {}
if text:sub(-1) == 'Z' then
-- Extract date/time from a Wikidata timestamp.
-- The year can be 1 to 16 digits but this module handles 1 to 4 digits only.
-- Examples: '+2016-06-21T14:30:00Z', '-0000000180-00-00T00:00:00Z'.
local sign, y, m, d, H, M, S = text:match('^([+%-])(%d+)%-(%d%d)%-(%d%d)T(%d%d):(%d%d):(%d%d)Z$')
if sign then
y = tonumber(y)
if sign == '-' and y > 0 then
y = -y
end
if y <= 0 then
options.era = 'BCE'
end
date.year = y
m = tonumber(m)
d = tonumber(d)
H = tonumber(H)
M = tonumber(M)
S = tonumber(S)
if m == 0 then
newdate.partial = true
return date, options
end
date.month = m
if d == 0 then
newdate.partial = true
return date, options
end
date.day = d
if H > 0 or M > 0 or S > 0 then
date.hour = H
date.minute = M
date.second = S
end
return date, options
end
return
end
local function extract_ymd(item)
-- Called when no day or month has been set.
local y, m, d = item:match('^(%d%d%d%d)%-(%w+)%-(%d%d?)$')
if y then
if date.year then
return
end
if m:match('^%d%d?$') then
m = tonumber(m)
else
m = month_number(m)
end
if m then
date.year = tonumber(y)
date.month = m
date.day = tonumber(d)
return true
end
end
end
local function extract_day_or_year(item)
-- Called when a day would be valid, or
-- when a year would be valid if no year has been set and partial is set.
local number, suffix = item:match('^(%d%d?%d?%d?)(.*)$')
if number then
local n = tonumber(number)
if #number <= 2 and n <= 31 then
suffix = suffix:lower()
if suffix == '' or suffix == 'st' or suffix == 'nd' or suffix == 'rd' or suffix == 'th' then
date.day = n
return true
end
elseif suffix == '' and newdate.partial and not date.year then
date.year = n
return true
end
end
end
local function extract_month(item)
-- A month must be given as a name or abbreviation; a number could be ambiguous.
local m = month_number(item)
if m then
date.month = m
return true
end
end
local function extract_time(item)
local h, m, s = item:match('^(%d%d?):(%d%d)(:?%d*)$')
if date.hour or not h then
return
end
if s ~= '' then
s = s:match('^:(%d%d)$')
if not s then
return
end
end
date.hour = tonumber(h)
date.minute = tonumber(m)
date.second = tonumber(s) -- nil if empty string
return true
end
local item_count = 0
local index_time
local function set_ampm(item)
local H = date.hour
if H and not options.am and index_time + 1 == item_count then
options.am = ampm_options[item] -- caller checked this is not nil
if item:match('^[Aa]') then
if not (1 <= H and H <= 12) then
return
end
if H == 12 then
date.hour = 0
end
else
if not (1 <= H and H <= 23) then
return
end
if H <= 11 then
date.hour = H + 12
end
end
return true
end
end
for item in text:gsub(',', ' '):gsub(' ', ' '):gmatch('%S+') do
item_count = item_count + 1
if era_text[item] then
-- Era is accepted in peculiar places.
if options.era then
return
end
options.era = item
elseif ampm_options[item] then
if not set_ampm(item) then
return
end
elseif item:find(':', 1, true) then
if not extract_time(item) then
return
end
index_time = item_count
elseif date.day and date.month then
if date.year then
return -- should be nothing more so item is invalid
end
if not item:match('^(%d%d?%d?%d?)$') then
return
end
date.year = tonumber(item)
elseif date.day then
if not extract_month(item) then
return
end
elseif date.month then
if not extract_day_or_year(item) then
return
end
elseif extract_month(item) then
options.format = 'mdy'
elseif extract_ymd(item) then
options.format = 'ymd'
elseif extract_day_or_year(item) then
if date.day then
options.format = 'dmy'
end
else
return
end
end
if not date.year or date.year == 0 then
return
end
local era = era_text[options.era]
if era and era.isbc then
date.year = 1 - date.year
end
return date, options
end
local function autofill(date1, date2)
-- Fill any missing month or day in each date using the
-- corresponding component from the other date, if present,
-- or with 1 if both dates are missing the month or day.
-- This gives a good result for calculating the difference
-- between two partial dates when no range is wanted.
-- Return filled date1, date2 (two full dates).
local function filled(a, b)
-- Return date a filled, if necessary, with month and/or day from date b.
-- The filled day is truncated to fit the number of days in the month.
local fillmonth, fillday
if not a.month then
fillmonth = b.month or 1
end
if not a.day then
fillday = b.day or 1
end
if fillmonth or fillday then -- need to create a new date
a = Date(a, {
month = fillmonth,
day = math.min(fillday or a.day, days_in_month(a.year, fillmonth or a.month, a.calendar))
})
end
return a
end
return filled(date1, date2), filled(date2, date1)
end
local function date_add_sub(lhs, rhs, is_sub)
-- Return a new date from calculating (lhs + rhs) or (lhs - rhs),
-- or return nothing if invalid.
-- The result is nil if the calculated date exceeds allowable limits.
-- Caller ensures that lhs is a date; its properties are copied for the new date.
if lhs.partial then
-- Adding to a partial is not supported.
-- Can subtract a date or partial from a partial, but this is not called for that.
return
end
local function is_prefix(text, word, minlen)
local n = #text
return (minlen or 1) <= n and n <= #word and text == word:sub(1, n)
end
local function do_days(n)
local forcetime, jd
if floor(n) == n then
jd = lhs.jd
else
forcetime = not lhs.hastime
jd = lhs.jdz
end
jd = jd + (is_sub and -n or n)
if forcetime then
jd = tostring(jd)
if not jd:find('.', 1, true) then
jd = jd .. '.0'
end
end
return Date(lhs, 'juliandate', jd)
end
if type(rhs) == 'number' then
-- Add/subtract days, including fractional days.
return do_days(rhs)
end
if type(rhs) == 'string' then
-- rhs is a single component like '26m' or '26 months' (with optional sign).
-- Fractions like '3.25d' are accepted for the units which are handled as days.
local sign, numstr, id = rhs:match('^%s*([+-]?)([%d%.]+)%s*(%a+)$')
if sign then
if sign == '-' then
is_sub = not (is_sub and true or false)
end
local y, m, days
local num = tonumber(numstr)
if not num then
return
end
id = id:lower()
if is_prefix(id, 'years') then
y = num
m = 0
elseif is_prefix(id, 'months') then
y = floor(num / 12)
m = num % 12
elseif is_prefix(id, 'weeks') then
days = num * 7
elseif is_prefix(id, 'days') then
days = num
elseif is_prefix(id, 'hours') then
days = num / 24
elseif is_prefix(id, 'minutes', 3) then
days = num / (24 * 60)
elseif is_prefix(id, 'seconds') then
days = num / (24 * 3600)
else
return
end
if days then
return do_days(days)
end
if numstr:find('.', 1, true) then
return
end
if is_sub then
y = -y
m = -m
end
assert(-11 <= m and m <= 11)
y = lhs.year + y
m = lhs.month + m
if m > 12 then
y = y + 1
m = m - 12
elseif m < 1 then
y = y - 1
m = m + 12
end
local d = math.min(lhs.day, days_in_month(y, m, lhs.calendar))
return Date(lhs, y, m, d)
end
end
if is_diff(rhs) then
local days = rhs.age_days
if (is_sub or false) ~= (rhs.isnegative or false) then
days = -days
end
return lhs + days
end
end
local full_date_only = {
dayabbr = true,
dayname = true,
dow = true,
dayofweek = true,
dowiso = true,
dayofweekiso = true,
dayofyear = true,
gsd = true,
juliandate = true,
jd = true,
jdz = true,
jdnoon = true,
}
-- Metatable for a date's calculated fields.
local datemt = {
__index = function (self, key)
if rawget(self, 'partial') then
if full_date_only[key] then return end
if key == 'monthabbr' or key == 'monthdays' or key == 'monthname' then
if not self.month then return end
end
end
local value
if key == 'dayabbr' then
value = day_info[self.dow][1]
elseif key == 'dayname' then
value = day_info[self.dow][2]
elseif key == 'dow' then
value = (self.jdnoon + 1) % 7 -- day-of-week 0=Sun to 6=Sat
elseif key == 'dayofweek' then
value = self.dow
elseif key == 'dowiso' then
value = (self.jdnoon % 7) + 1 -- ISO day-of-week 1=Mon to 7=Sun
elseif key == 'dayofweekiso' then
value = self.dowiso
elseif key == 'dayofyear' then
local first = Date(self.year, 1, 1, self.calendar).jdnoon
value = self.jdnoon - first + 1 -- day-of-year 1 to 366
elseif key == 'era' then
-- Era text (never a negative sign) from year and options.
value = get_era_for_year(self.options.era, self.year)
elseif key == 'format' then
value = self.options.format or 'dmy'
elseif key == 'gsd' then
-- GSD = 1 from 00:00:00 to 23:59:59 on 1 January 1 AD Gregorian calendar,
-- which is from jd 1721425.5 to 1721426.49999.
value = floor(self.jd - 1721424.5)
elseif key == 'juliandate' or key == 'jd' or key == 'jdz' then
local jd, jdz = julian_date(self)
rawset(self, 'juliandate', jd)
rawset(self, 'jd', jd)
rawset(self, 'jdz', jdz)
return key == 'jdz' and jdz or jd
elseif key == 'jdnoon' then
-- Julian date at noon (an integer) on the calendar day when jd occurs.
value = floor(self.jd + 0.5)
elseif key == 'isleapyear' then
value = is_leap_year(self.year, self.calendar)
elseif key == 'monthabbr' then
value = month_info[self.month][1]
elseif key == 'monthdays' then
value = days_in_month(self.year, self.month, self.calendar)
elseif key == 'monthname' then
value = month_info[self.month][2]
end
if value ~= nil then
rawset(self, key, value)
return value
end
end,
}
-- Date operators.
local function mt_date_add(lhs, rhs)
if not is_date(lhs) then
lhs, rhs = rhs, lhs -- put date on left (it must be a date for this to have been called)
end
return date_add_sub(lhs, rhs)
end
local function mt_date_sub(lhs, rhs)
if is_date(lhs) then
if is_date(rhs) then
return DateDiff(lhs, rhs)
end
return date_add_sub(lhs, rhs, true)
end
end
local function mt_date_concat(lhs, rhs)
return tostring(lhs) .. tostring(rhs)
end
local function mt_date_tostring(self)
return self:text()
end
local function mt_date_eq(lhs, rhs)
-- Return true if dates identify same date/time where, for example,
-- Date(-4712, 1, 1, 'Julian') == Date(-4713, 11, 24, 'Gregorian') is true.
-- This is called only if lhs and rhs have the same type and the same metamethod.
if lhs.partial or rhs.partial then
-- One date is partial; the other is a partial or a full date.
-- The months may both be nil, but must be the same.
return lhs.year == rhs.year and lhs.month == rhs.month and lhs.calendar == rhs.calendar
end
return lhs.jdz == rhs.jdz
end
local function mt_date_lt(lhs, rhs)
-- Return true if lhs < rhs, for example,
-- Date('1 Jan 2016') < Date('06:00 1 Jan 2016') is true.
-- This is called only if lhs and rhs have the same type and the same metamethod.
if lhs.partial or rhs.partial then
-- One date is partial; the other is a partial or a full date.
if lhs.calendar ~= rhs.calendar then
return lhs.calendar == 'Julian'
end
if lhs.partial then
lhs = lhs.partial.first
end
if rhs.partial then
rhs = rhs.partial.first
end
end
return lhs.jdz < rhs.jdz
end
--[[ Examples of syntax to construct a date:
Date(y, m, d, 'julian') default calendar is 'gregorian'
Date(y, m, d, H, M, S, 'julian')
Date('juliandate', jd, 'julian') if jd contains "." text output includes H:M:S
Date('currentdate')
Date('currentdatetime')
Date('1 April 1995', 'julian') parse date from text
Date('1 April 1995 AD', 'julian') using an era sets a flag to do the same for output
Date('04:30:59 1 April 1995', 'julian')
Date(date) copy of an existing date
Date(date, t) same, updated with y,m,d,H,M,S fields from table t
Date(t) date with y,m,d,H,M,S fields from table t
]]
function Date(...) -- for forward declaration above
-- Return a table holding a date assuming a uniform calendar always applies
-- (proleptic Gregorian calendar or proleptic Julian calendar), or
-- return nothing if date is invalid.
-- A partial date has a valid year, however its month may be nil, and
-- its day and time fields are nil.
-- Field partial is set to false (if a full date) or a table (if a partial date).
local calendars = { julian = 'Julian', gregorian = 'Gregorian' }
local newdate = {
_id = uniq,
calendar = 'Gregorian', -- default is Gregorian calendar
hastime = false, -- true if input sets a time
hour = 0, -- always set hour/minute/second so don't have to handle nil
minute = 0,
second = 0,
options = {},
list = _date_list,
subtract = function (self, rhs, options)
return DateDiff(self, rhs, options)
end,
text = _date_text,
}
local argtype, datetext, is_copy, jd_number, tnums
local numindex = 0
local numfields = { 'year', 'month', 'day', 'hour', 'minute', 'second' }
local numbers = {}
for _, v in ipairs({...}) do
v = strip_to_nil(v)
local vlower = type(v) == 'string' and v:lower() or nil
if v == nil then
-- Ignore empty arguments after stripping so modules can directly pass template parameters.
elseif calendars[vlower] then
newdate.calendar = calendars[vlower]
elseif vlower == 'partial' then
newdate.partial = true
elseif vlower == 'fix' then
newdate.want_fix = true
elseif is_date(v) then
-- Copy existing date (items can be overridden by other arguments).
if is_copy or tnums then
return
end
is_copy = true
newdate.calendar = v.calendar
newdate.partial = v.partial
newdate.hastime = v.hastime
newdate.options = v.options
newdate.year = v.year
newdate.month = v.month
newdate.day = v.day
newdate.hour = v.hour
newdate.minute = v.minute
newdate.second = v.second
elseif type(v) == 'table' then
if tnums then
return
end
tnums = {}
local tfields = { year=1, month=1, day=1, hour=2, minute=2, second=2 }
for tk, tv in pairs(v) do
if tfields[tk] then
tnums[tk] = tonumber(tv)
end
if tfields[tk] == 2 then
newdate.hastime = true
end
end
else
local num = tonumber(v)
if not num and argtype == 'setdate' and numindex == 1 then
num = month_number(v)
end
if num then
if not argtype then
argtype = 'setdate'
end
if argtype == 'setdate' and numindex < 6 then
numindex = numindex + 1
numbers[numfields[numindex]] = num
elseif argtype == 'juliandate' and not jd_number then
jd_number = num
if type(v) == 'string' then
if v:find('.', 1, true) then
newdate.hastime = true
end
elseif num ~= floor(num) then
-- The given value was a number. The time will be used
-- if the fractional part is nonzero.
newdate.hastime = true
end
else
return
end
elseif argtype then
return
elseif type(v) == 'string' then
if v == 'currentdate' or v == 'currentdatetime' or v == 'juliandate' then
argtype = v
else
argtype = 'datetext'
datetext = v
end
else
return
end
end
end
if argtype == 'datetext' then
if tnums or not set_date_from_numbers(newdate, extract_date(newdate, datetext)) then
return
end
elseif argtype == 'juliandate' then
newdate.partial = nil
newdate.jd = jd_number
if not set_date_from_jd(newdate) then
return
end
elseif argtype == 'currentdate' or argtype == 'currentdatetime' then
newdate.partial = nil
newdate.year = current.year
newdate.month = current.month
newdate.day = current.day
if argtype == 'currentdatetime' then
newdate.hour = current.hour
newdate.minute = current.min
newdate.second = current.sec
newdate.hastime = true
end
newdate.calendar = 'Gregorian' -- ignore any given calendar name
elseif argtype == 'setdate' then
if tnums or not set_date_from_numbers(newdate, numbers) then
return
end
elseif not (is_copy or tnums) then
return
end
if tnums then
newdate.jd = nil -- force recalculation in case jd was set before changes from tnums
if not set_date_from_numbers(newdate, tnums) then
return
end
end
if newdate.partial then
local year = newdate.year
local month = newdate.month
local first = Date(year, month or 1, 1, newdate.calendar)
month = month or 12
local last = Date(year, month, days_in_month(year, month), newdate.calendar)
newdate.partial = { first = first, last = last }
else
newdate.partial = false -- avoid index lookup
end
setmetatable(newdate, datemt)
local readonly = {}
local mt = {
__index = newdate,
__newindex = function(t, k, v) error('date.' .. tostring(k) .. ' is read-only', 2) end,
__add = mt_date_add,
__sub = mt_date_sub,
__concat = mt_date_concat,
__tostring = mt_date_tostring,
__eq = mt_date_eq,
__lt = mt_date_lt,
}
return setmetatable(readonly, mt)
end
local function _diff_age(diff, code, options)
-- Return a tuple of integer values from diff as specified by code, except that
-- each integer may be a list of two integers for a diff with a partial date, or
-- return nil if the code is not supported.
-- If want round, the least significant unit is rounded to nearest whole unit.
-- For a duration, an extra day is added.
local wantround, wantduration, wantrange
if type(options) == 'table' then
wantround = options.round
wantduration = options.duration
wantrange = options.range
else
wantround = options
end
if not is_diff(diff) then
local f = wantduration and 'duration' or 'age'
error(f .. ': need a date difference (use "diff:' .. f .. '()" with a colon)', 2)
end
if diff.partial then
-- Ignore wantround, wantduration.
local function choose(v)
if type(v) == 'table' then
if not wantrange or v[1] == v[2] then
-- Example: Date('partial', 2005) - Date('partial', 2001) gives
-- diff.years = { 3, 4 } to show the range of possible results.
-- If do not want a range, choose the second value as more expected.
return v[2]
end
end
return v
end
if code == 'ym' or code == 'ymd' then
if not wantrange and diff.iszero then
-- This avoids an unexpected result such as
-- Date('partial', 2001) - Date('partial', 2001)
-- giving diff = { years = 0, months = { 0, 11 } }
-- which would be reported as 0 years and 11 months.
return 0, 0
end
return choose(diff.partial.years), choose(diff.partial.months)
end
if code == 'y' then
return choose(diff.partial.years)
end
if code == 'm' or code == 'w' or code == 'd' then
return choose({ diff.partial.mindiff:age(code), diff.partial.maxdiff:age(code) })
end
return nil
end
local extra_days = wantduration and 1 or 0
if code == 'wd' or code == 'w' or code == 'd' then
local offset = wantround and 0.5 or 0
local days = diff.age_days + extra_days
if code == 'wd' or code == 'd' then
days = floor(days + offset)
if code == 'd' then
return days
end
return floor(days/7), days % 7
end
return floor(days/7 + offset)
end
local H, M, S = diff.hours, diff.minutes, diff.seconds
if code == 'dh' or code == 'dhm' or code == 'dhms' or code == 'h' or code == 'hm' or code == 'hms' or code == 'M' or code == 's' then
local days = floor(diff.age_days + extra_days)
local inc_hour
if wantround then
if code == 'dh' or code == 'h' then
if M >= 30 then
inc_hour = true
end
elseif code == 'dhm' or code == 'hm' then
if S >= 30 then
M = M + 1
if M >= 60 then
M = 0
inc_hour = true
end
end
elseif code == 'M' then
if S >= 30 then
M = M + 1
end
else
-- Nothing needed because S is an integer.
end
if inc_hour then
H = H + 1
if H >= 24 then
H = 0
days = days + 1
end
end
end
if code == 'dh' or code == 'dhm' or code == 'dhms' then
if code == 'dh' then
return days, H
elseif code == 'dhm' then
return days, H, M
else
return days, H, M, S
end
end
local hours = days * 24 + H
if code == 'h' then
return hours
elseif code == 'hm' then
return hours, M
elseif code == 'M' or code == 's' then
M = hours * 60 + M
if code == 'M' then
return M
end
return M * 60 + S
end
return hours, M, S
end
if wantround then
local inc_hour
if code == 'ymdh' or code == 'ymwdh' then
if M >= 30 then
inc_hour = true
end
elseif code == 'ymdhm' or code == 'ymwdhm' then
if S >= 30 then
M = M + 1
if M >= 60 then
M = 0
inc_hour = true
end
end
elseif code == 'ymd' or code == 'ymwd' or code == 'yd' or code == 'md' then
if H >= 12 then
extra_days = extra_days + 1
end
end
if inc_hour then
H = H + 1
if H >= 24 then
H = 0
extra_days = extra_days + 1
end
end
end
local y, m, d = diff.years, diff.months, diff.days
if extra_days > 0 then
d = d + extra_days
if d > 28 or code == 'yd' then
-- Recalculate in case have passed a month.
diff = diff.date1 + extra_days - diff.date2
y, m, d = diff.years, diff.months, diff.days
end
end
if code == 'ymd' then
return y, m, d
elseif code == 'yd' then
if y > 0 then
-- It is known that diff.date1 > diff.date2.
diff = diff.date1 - (diff.date2 + (y .. 'y'))
end
return y, floor(diff.age_days)
elseif code == 'md' then
return y * 12 + m, d
elseif code == 'ym' or code == 'm' then
if wantround then
if d >= 16 then
m = m + 1
if m >= 12 then
m = 0
y = y + 1
end
end
end
if code == 'ym' then
return y, m
end
return y * 12 + m
elseif code == 'ymw' then
local weeks = floor(d/7)
if wantround then
local days = d % 7
if days > 3 or (days == 3 and H >= 12) then
weeks = weeks + 1
end
end
return y, m, weeks
elseif code == 'ymwd' then
return y, m, floor(d/7), d % 7
elseif code == 'ymdh' then
return y, m, d, H
elseif code == 'ymwdh' then
return y, m, floor(d/7), d % 7, H
elseif code == 'ymdhm' then
return y, m, d, H, M
elseif code == 'ymwdhm' then
return y, m, floor(d/7), d % 7, H, M
end
if code == 'y' then
if wantround and m >= 6 then
y = y + 1
end
return y
end
return nil
end
local function _diff_duration(diff, code, options)
if type(options) ~= 'table' then
options = { round = options }
end
options.duration = true
return _diff_age(diff, code, options)
end
-- Metatable for some operations on date differences.
diffmt = { -- for forward declaration above
__concat = function (lhs, rhs)
return tostring(lhs) .. tostring(rhs)
end,
__tostring = function (self)
return tostring(self.age_days)
end,
__index = function (self, key)
local value
if key == 'age_days' then
if rawget(self, 'partial') then
local function jdz(date)
return (date.partial and date.partial.first or date).jdz
end
value = jdz(self.date1) - jdz(self.date2)
else
value = self.date1.jdz - self.date2.jdz
end
end
if value ~= nil then
rawset(self, key, value)
return value
end
end,
}
function DateDiff(date1, date2, options) -- for forward declaration above
-- Return a table with the difference between two dates (date1 - date2).
-- The difference is negative if date1 is older than date2.
-- Return nothing if invalid.
-- If d = date1 - date2 then
-- date1 = date2 + d
-- If date1 >= date2 and the dates have no H:M:S time specified then
-- date1 = date2 + (d.years..'y') + (d.months..'m') + d.days
-- where the larger time units are added first.
-- The result of Date(2015,1,x) + '1m' is Date(2015,2,28) for
-- x = 28, 29, 30, 31. That means, for example,
-- d = Date(2015,3,3) - Date(2015,1,31)
-- gives d.years, d.months, d.days = 0, 1, 3 (excluding date1).
if not (is_date(date1) and is_date(date2) and date1.calendar == date2.calendar) then
return
end
local wantfill
if type(options) == 'table' then
wantfill = options.fill
end
local isnegative = false
local iszero = false
if date1 < date2 then
isnegative = true
date1, date2 = date2, date1
elseif date1 == date2 then
iszero = true
end
-- It is known that date1 >= date2 (period is from date2 to date1).
if date1.partial or date2.partial then
-- Two partial dates might have timelines:
---------------------A=================B--- date1 is from A to B inclusive
--------C=======D-------------------------- date2 is from C to D inclusive
-- date1 > date2 iff A > C (date1.partial.first > date2.partial.first)
-- The periods can overlap ('April 2001' - '2001'):
-------------A===B------------------------- A=2001-04-01 B=2001-04-30
--------C=====================D------------ C=2001-01-01 D=2001-12-31
if wantfill then
date1, date2 = autofill(date1, date2)
else
local function zdiff(date1, date2)
local diff = date1 - date2
if diff.isnegative then
return date1 - date1 -- a valid diff in case we call its methods
end
return diff
end
local function getdate(date, which)
return date.partial and date.partial[which] or date
end
local maxdiff = zdiff(getdate(date1, 'last'), getdate(date2, 'first'))
local mindiff = zdiff(getdate(date1, 'first'), getdate(date2, 'last'))
local years, months
if maxdiff.years == mindiff.years then
years = maxdiff.years
if maxdiff.months == mindiff.months then
months = maxdiff.months
else
months = { mindiff.months, maxdiff.months }
end
else
years = { mindiff.years, maxdiff.years }
end
return setmetatable({
date1 = date1,
date2 = date2,
partial = {
years = years,
months = months,
maxdiff = maxdiff,
mindiff = mindiff,
},
isnegative = isnegative,
iszero = iszero,
age = _diff_age,
duration = _diff_duration,
}, diffmt)
end
end
local y1, m1 = date1.year, date1.month
local y2, m2 = date2.year, date2.month
local years = y1 - y2
local months = m1 - m2
local d1 = date1.day + hms(date1)
local d2 = date2.day + hms(date2)
local days, time
if d1 >= d2 then
days = d1 - d2
else
months = months - 1
-- Get days in previous month (before the "to" date) given December has 31 days.
local dpm = m1 > 1 and days_in_month(y1, m1 - 1, date1.calendar) or 31
if d2 >= dpm then
days = d1 - hms(date2)
else
days = dpm - d2 + d1
end
end
if months < 0 then
years = years - 1
months = months + 12
end
days, time = math.modf(days)
local H, M, S = h_m_s(time)
return setmetatable({
date1 = date1,
date2 = date2,
partial = false, -- avoid index lookup
years = years,
months = months,
days = days,
hours = H,
minutes = M,
seconds = S,
isnegative = isnegative,
iszero = iszero,
age = _diff_age,
duration = _diff_duration,
}, diffmt)
end
return {
_current = current,
_Date = Date,
_days_in_month = days_in_month,
}
p4lffcwq8w4s1hro04tf52ddm3itw32
73877
70220
2026-07-11T18:58:59Z
Robertsky
10424
1 versaun husi [[:en:Module:Date]]
70220
Scribunto
text/plain
-- Date functions for use by other modules.
-- I18N and time zones are not supported.
local MINUS = '−' -- Unicode U+2212 MINUS SIGN
local floor = math.floor
local Date, DateDiff, diffmt -- forward declarations
local uniq = { 'unique identifier' }
local function is_date(t)
-- The system used to make a date read-only means there is no unique
-- metatable that is conveniently accessible to check.
return type(t) == 'table' and t._id == uniq
end
local function is_diff(t)
return type(t) == 'table' and getmetatable(t) == diffmt
end
local function _list_join(list, sep)
return table.concat(list, sep)
end
local function collection()
-- Return a table to hold items.
return {
n = 0,
add = function (self, item)
self.n = self.n + 1
self[self.n] = item
end,
join = _list_join,
}
end
local function strip_to_nil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (convenient when Date fields are provided from
-- another module which may pass a string, a number, or another type).
if type(text) == 'string' then
text = text:match('(%S.-)%s*$')
end
return text
end
local function is_leap_year(year, calname)
-- Return true if year is a leap year.
if calname == 'Julian' then
return year % 4 == 0
end
return (year % 4 == 0 and year % 100 ~= 0) or year % 400 == 0
end
local function days_in_month(year, month, calname)
-- Return number of days (1..31) in given month (1..12).
if month == 2 and is_leap_year(year, calname) then
return 29
end
return ({ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 })[month]
end
local function h_m_s(time)
-- Return hour, minute, second extracted from fraction of a day.
time = floor(time * 24 * 3600 + 0.5) -- number of seconds
local second = time % 60
time = floor(time / 60)
return floor(time / 60), time % 60, second
end
local function hms(date)
-- Return fraction of a day from date's time, where (0 <= fraction < 1)
-- if the values are valid, but could be anything if outside range.
return (date.hour + (date.minute + date.second / 60) / 60) / 24
end
local function julian_date(date)
-- Return jd, jdz from a Julian or Gregorian calendar date where
-- jd = Julian date and its fractional part is zero at noon
-- jdz = same, but assume time is 00:00:00 if no time given
-- http://www.tondering.dk/claus/cal/julperiod.php#formula
-- Testing shows this works for all dates from year -9999 to 9999!
-- JDN 0 is the 24-hour period starting at noon UTC on Monday
-- 1 January 4713 BC = (-4712, 1, 1) Julian calendar
-- 24 November 4714 BC = (-4713, 11, 24) Gregorian calendar
local offset
local a = floor((14 - date.month)/12)
local y = date.year + 4800 - a
if date.calendar == 'Julian' then
offset = floor(y/4) - 32083
else
offset = floor(y/4) - floor(y/100) + floor(y/400) - 32045
end
local m = date.month + 12*a - 3
local jd = date.day + floor((153*m + 2)/5) + 365*y + offset
if date.hastime then
jd = jd + hms(date) - 0.5
return jd, jd
end
return jd, jd - 0.5
end
local function set_date_from_jd(date)
-- Set the fields of table date from its Julian date field.
-- Return true if date is valid.
-- http://www.tondering.dk/claus/cal/julperiod.php#formula
-- This handles the proleptic Julian and Gregorian calendars.
-- Negative Julian dates are not defined but they work.
local calname = date.calendar
local low, high -- min/max limits for date ranges −9999-01-01 to 9999-12-31
if calname == 'Gregorian' then
low, high = -1930999.5, 5373484.49999
elseif calname == 'Julian' then
low, high = -1931076.5, 5373557.49999
else
return
end
local jd = date.jd
if not (type(jd) == 'number' and low <= jd and jd <= high) then
return
end
local jdn = floor(jd)
if date.hastime then
local time = jd - jdn -- 0 <= time < 1
if time >= 0.5 then -- if at or after midnight of next day
jdn = jdn + 1
time = time - 0.5
else
time = time + 0.5
end
date.hour, date.minute, date.second = h_m_s(time)
else
date.second = 0
date.minute = 0
date.hour = 0
end
local b, c
if calname == 'Julian' then
b = 0
c = jdn + 32082
else -- Gregorian
local a = jdn + 32044
b = floor((4*a + 3)/146097)
c = a - floor(146097*b/4)
end
local d = floor((4*c + 3)/1461)
local e = c - floor(1461*d/4)
local m = floor((5*e + 2)/153)
date.day = e - floor((153*m + 2)/5) + 1
date.month = m + 3 - 12*floor(m/10)
date.year = 100*b + d - 4800 + floor(m/10)
return true
end
local function fix_numbers(numbers, y, m, d, H, M, S, partial, hastime, calendar)
-- Put the result of normalizing the given values in table numbers.
-- The result will have valid m, d values if y is valid; caller checks y.
-- The logic of PHP mktime is followed where m or d can be zero to mean
-- the previous unit, and -1 is the one before that, etc.
-- Positive values carry forward.
local date
if not (1 <= m and m <= 12) then
date = Date(y, 1, 1)
if not date then return end
date = date + ((m - 1) .. 'm')
y, m = date.year, date.month
end
local days_hms
if not partial then
if hastime and H and M and S then
if not (0 <= H and H <= 23 and
0 <= M and M <= 59 and
0 <= S and S <= 59) then
days_hms = hms({ hour = H, minute = M, second = S })
end
end
if days_hms or not (1 <= d and d <= days_in_month(y, m, calendar)) then
date = date or Date(y, m, 1)
if not date then return end
date = date + (d - 1 + (days_hms or 0))
y, m, d = date.year, date.month, date.day
if days_hms then
H, M, S = date.hour, date.minute, date.second
end
end
end
numbers.year = y
numbers.month = m
numbers.day = d
if days_hms then
-- Don't set H unless it was valid because a valid H will set hastime.
numbers.hour = H
numbers.minute = M
numbers.second = S
end
end
local function set_date_from_numbers(date, numbers, options)
-- Set the fields of table date from numeric values.
-- Return true if date is valid.
if type(numbers) ~= 'table' then
return
end
local y = numbers.year or date.year
local m = numbers.month or date.month
local d = numbers.day or date.day
local H = numbers.hour
local M = numbers.minute or date.minute or 0
local S = numbers.second or date.second or 0
local need_fix
if y and m and d then
date.partial = nil
if not (-9999 <= y and y <= 9999 and
1 <= m and m <= 12 and
1 <= d and d <= days_in_month(y, m, date.calendar)) then
if not date.want_fix then
return
end
need_fix = true
end
elseif y and date.partial then
if d or not (-9999 <= y and y <= 9999) then
return
end
if m and not (1 <= m and m <= 12) then
if not date.want_fix then
return
end
need_fix = true
end
else
return
end
if date.partial then
H = nil -- ignore any time
M = nil
S = nil
else
if H then
-- It is not possible to set M or S without also setting H.
date.hastime = true
else
H = 0
end
if not (0 <= H and H <= 23 and
0 <= M and M <= 59 and
0 <= S and S <= 59) then
if date.want_fix then
need_fix = true
else
return
end
end
end
date.want_fix = nil
if need_fix then
fix_numbers(numbers, y, m, d, H, M, S, date.partial, date.hastime, date.calendar)
return set_date_from_numbers(date, numbers, options)
end
date.year = y -- -9999 to 9999 ('n BC' → year = 1 - n)
date.month = m -- 1 to 12 (may be nil if partial)
date.day = d -- 1 to 31 (* = nil if partial)
date.hour = H -- 0 to 59 (*)
date.minute = M -- 0 to 59 (*)
date.second = S -- 0 to 59 (*)
if type(options) == 'table' then
for _, k in ipairs({ 'am', 'era', 'format' }) do
if options[k] then
date.options[k] = options[k]
end
end
end
return true
end
local function make_option_table(options1, options2)
-- If options1 is a string, return a table with its settings, or
-- if it is a table, use its settings.
-- Missing options are set from table options2 or defaults.
-- If a default is used, a flag is set so caller knows the value was not intentionally set.
-- Valid option settings are:
-- am: 'am', 'a.m.', 'AM', 'A.M.'
-- 'pm', 'p.m.', 'PM', 'P.M.' (each has same meaning as corresponding item above)
-- era: 'BCMINUS', 'BCNEGATIVE', 'BC', 'B.C.', 'BCE', 'B.C.E.', 'AD', 'A.D.', 'CE', 'C.E.'
-- Option am = 'am' does not mean the hour is AM; it means 'am' or 'pm' is used, depending on the hour,
-- and am = 'pm' has the same meaning.
-- Similarly, era = 'BC' means 'BC' is used if year <= 0.
-- BCMINUS displays a MINUS if year < 0 and the display format does not include %{era}.
-- BCNEGATIVE is similar but displays a hyphen.
local result = { bydefault = {} }
if type(options1) == 'table' then
result.am = options1.am
result.era = options1.era
elseif type(options1) == 'string' then
-- Example: 'am:AM era:BC' or 'am=AM era=BC'.
for item in options1:gmatch('%S+') do
local lhs, rhs = item:match('^(%w+)[:=](.+)$')
if lhs then
result[lhs] = rhs
end
end
end
options2 = type(options2) == 'table' and options2 or {}
local defaults = { am = 'am', era = 'BC' }
for k, v in pairs(defaults) do
if not result[k] then
if options2[k] then
result[k] = options2[k]
else
result[k] = v
result.bydefault[k] = true
end
end
end
return result
end
local ampm_options = {
-- lhs = input text accepted as an am/pm option
-- rhs = code used internally
['am'] = 'am',
['AM'] = 'AM',
['a.m.'] = 'a.m.',
['A.M.'] = 'A.M.',
['pm'] = 'am', -- same as am
['PM'] = 'AM',
['p.m.'] = 'a.m.',
['P.M.'] = 'A.M.',
}
local era_text = {
-- Text for displaying an era with a positive year (after adjusting
-- by replacing year with 1 - year if date.year <= 0).
-- options.era = { year<=0 , year>0 }
['BCMINUS'] = { 'BC' , '' , isbc = true, sign = MINUS },
['BCNEGATIVE'] = { 'BC' , '' , isbc = true, sign = '-' },
['BC'] = { 'BC' , '' , isbc = true },
['B.C.'] = { 'B.C.' , '' , isbc = true },
['BCE'] = { 'BCE' , '' , isbc = true },
['B.C.E.'] = { 'B.C.E.', '' , isbc = true },
['AD'] = { 'BC' , 'AD' },
['A.D.'] = { 'B.C.' , 'A.D.' },
['CE'] = { 'BCE' , 'CE' },
['C.E.'] = { 'B.C.E.', 'C.E.' },
}
local function get_era_for_year(era, year)
return (era_text[era] or era_text['BC'])[year > 0 and 2 or 1] or ''
end
local function strftime(date, format, options)
-- Return date formatted as a string using codes similar to those
-- in the C strftime library function.
local sformat = string.format
local shortcuts = {
['%c'] = '%-I:%M %p %-d %B %-Y %{era}', -- date and time: 2:30 pm 1 April 2016
['%x'] = '%-d %B %-Y %{era}', -- date: 1 April 2016
['%X'] = '%-I:%M %p', -- time: 2:30 pm
}
if shortcuts[format] then
format = shortcuts[format]
end
local codes = {
a = { field = 'dayabbr' },
A = { field = 'dayname' },
b = { field = 'monthabbr' },
B = { field = 'monthname' },
u = { fmt = '%d' , field = 'dowiso' },
w = { fmt = '%d' , field = 'dow' },
d = { fmt = '%02d', fmt2 = '%d', field = 'day' },
m = { fmt = '%02d', fmt2 = '%d', field = 'month' },
Y = { fmt = '%04d', fmt2 = '%d', field = 'year' },
H = { fmt = '%02d', fmt2 = '%d', field = 'hour' },
M = { fmt = '%02d', fmt2 = '%d', field = 'minute' },
S = { fmt = '%02d', fmt2 = '%d', field = 'second' },
j = { fmt = '%03d', fmt2 = '%d', field = 'dayofyear' },
I = { fmt = '%02d', fmt2 = '%d', field = 'hour', special = 'hour12' },
p = { field = 'hour', special = 'am' },
}
options = make_option_table(options, date.options)
local amopt = options.am
local eraopt = options.era
local function replace_code(spaces, modifier, id)
local code = codes[id]
if code then
local fmt = code.fmt
if modifier == '-' and code.fmt2 then
fmt = code.fmt2
end
local value = date[code.field]
if not value then
return nil -- an undefined field in a partial date
end
local special = code.special
if special then
if special == 'hour12' then
value = value % 12
value = value == 0 and 12 or value
elseif special == 'am' then
local ap = ({
['a.m.'] = { 'a.m.', 'p.m.' },
['AM'] = { 'AM', 'PM' },
['A.M.'] = { 'A.M.', 'P.M.' },
})[ampm_options[amopt]] or { 'am', 'pm' }
return (spaces == '' and '' or ' ') .. (value < 12 and ap[1] or ap[2])
end
end
if code.field == 'year' then
local sign = (era_text[eraopt] or {}).sign
if not sign or format:find('%{era}', 1, true) then
sign = ''
if value <= 0 then
value = 1 - value
end
else
if value >= 0 then
sign = ''
else
value = -value
end
end
return spaces .. sign .. sformat(fmt, value)
end
return spaces .. (fmt and sformat(fmt, value) or value)
end
end
local function replace_property(spaces, id)
if id == 'era' then
-- Special case so can use local era option.
local result = get_era_for_year(eraopt, date.year)
if result == '' then
return ''
end
return (spaces == '' and '' or ' ') .. result
end
local result = date[id]
if type(result) == 'string' then
return spaces .. result
end
if type(result) == 'number' then
return spaces .. tostring(result)
end
if type(result) == 'boolean' then
return spaces .. (result and '1' or '0')
end
-- This occurs if id is an undefined field in a partial date, or is the name of a function.
return nil
end
local PERCENT = '\127PERCENT\127'
return (format
:gsub('%%%%', PERCENT)
:gsub('(%s*)%%{(%w+)}', replace_property)
:gsub('(%s*)%%(%-?)(%a)', replace_code)
:gsub(PERCENT, '%%')
)
end
local function _date_text(date, fmt, options)
-- Return a formatted string representing the given date.
if not is_date(date) then
error('date:text: need a date (use "date:text()" with a colon)', 2)
end
if type(fmt) == 'string' and fmt:match('%S') then
if fmt:find('%', 1, true) then
return strftime(date, fmt, options)
end
elseif date.partial then
fmt = date.month and 'my' or 'y'
else
fmt = 'dmy'
if date.hastime then
fmt = (date.second > 0 and 'hms ' or 'hm ') .. fmt
end
end
local function bad_format()
-- For consistency with other format processing, return given format
-- (or cleaned format if original was not a string) if invalid.
return mw.text.nowiki(fmt)
end
if date.partial then
-- Ignore days in standard formats like 'ymd'.
if fmt == 'ym' or fmt == 'ymd' then
fmt = date.month and '%Y-%m %{era}' or '%Y %{era}'
elseif fmt == 'my' or fmt == 'dmy' or fmt == 'mdy' then
fmt = date.month and '%B %-Y %{era}' or '%-Y %{era}'
elseif fmt == 'y' then
fmt = date.month and '%-Y %{era}' or '%-Y %{era}'
else
return bad_format()
end
return strftime(date, fmt, options)
end
local function hm_fmt()
local plain = make_option_table(options, date.options).bydefault.am
return plain and '%H:%M' or '%-I:%M %p'
end
local need_time = date.hastime
local t = collection()
for item in fmt:gmatch('%S+') do
local f
if item == 'hm' then
f = hm_fmt()
need_time = false
elseif item == 'hms' then
f = '%H:%M:%S'
need_time = false
elseif item == 'ymd' then
f = '%Y-%m-%d %{era}'
elseif item == 'mdy' then
f = '%B %-d, %-Y %{era}'
elseif item == 'dmy' then
f = '%-d %B %-Y %{era}'
else
return bad_format()
end
t:add(f)
end
fmt = t:join(' ')
if need_time then
fmt = hm_fmt() .. ' ' .. fmt
end
return strftime(date, fmt, options)
end
local day_info = {
-- 0=Sun to 6=Sat
[0] = { 'Dom', 'Loron-domingu' },
{ 'Seg', 'Loron-segunda' },
{ 'Ter', 'Loron-tersa' },
{ 'Kua', 'Loron-kuarta' },
{ 'Kin', 'Loron-kinta' },
{ 'Ses', 'Loron-sesta' },
{ 'Sáb', 'Loron-sábadu' },
}
local month_info = {
-- 1=Jan to 12=Dec
{ 'Jan', 'Janeiru' },
{ 'Fev', 'Fevereiru' },
{ 'Mar', 'Marsu' },
{ 'Abr', 'Abríl' },
{ 'Mai', 'Maiu' },
{ 'Juñ', 'Juñu' },
{ 'Jul', 'Jullu' },
{ 'Ago', 'Agostu' },
{ 'Set', 'Setembru' },
{ 'Out', 'Outubru' },
{ 'Nov', 'Novembru' },
{ 'Dez', 'Dezembru' },
}
local function name_to_number(text, translate)
if type(text) == 'string' then
return translate[text:lower()]
end
end
local function day_number(text)
return name_to_number(text, {
dom = 0, ['loron-domingu'] = 0,
seg = 1, ['loron-segunda'] = 1,
ter = 2, ['loron-tersa'] = 2,
kua = 3, ['loron-kuarta'] = 3,
kin = 4, ['loron-kinta'] = 4,
ses = 5, ['loron-sesta'] = 5,
['sáb'] = 6, ['loron-sábadu'] = 6,
['sab'] = 6, -- fallback kalau input tanpa aksen
})
end
local function month_number(text)
return name_to_number(text:gsub('%.', ''), {
jan = 1, janeiru = 1,
fev = 2, fevereiru = 2,
mar = 3, marsu = 3,
abr = 4, abril = 4,
mai = 5, maiu = 5,
['jun'] = 6, junu = 6,
jul = 7, jullu = 7,
ago = 8, agostu = 8,
set = 9, setembru = 9,
out = 10, outubru = 10,
nov = 11, novembru = 11,
dez = 12, dezembru = 12,
})
end
local function _list_text(list, fmt)
-- Return a list of formatted strings from a list of dates.
if not type(list) == 'table' then
error('date:list:text: need "list:text()" with a colon', 2)
end
local result = { join = _list_join }
for i, date in ipairs(list) do
result[i] = date:text(fmt)
end
return result
end
local function _date_list(date, spec)
-- Return a possibly empty numbered table of dates meeting the specification.
-- Dates in the list are in ascending order (oldest date first).
-- The spec should be a string of form "<count> <day> <op>"
-- where each item is optional and
-- count = number of items wanted in list
-- day = abbreviation or name such as Mon or Monday
-- op = >, >=, <, <= (default is > meaning after date)
-- If no count is given, the list is for the specified days in date's month.
-- The default day is date's day.
-- The spec can also be a positive or negative number:
-- -5 is equivalent to '5 <'
-- 5 is equivalent to '5' which is '5 >'
if not is_date(date) then
error('date:list: need a date (use "date:list()" with a colon)', 2)
end
local list = { text = _list_text }
if date.partial then
return list
end
local count, offset, operation
local ops = {
['>='] = { before = false, include = true },
['>'] = { before = false, include = false },
['<='] = { before = true , include = true },
['<'] = { before = true , include = false },
}
if spec then
if type(spec) == 'number' then
count = floor(spec + 0.5)
if count < 0 then
count = -count
operation = ops['<']
end
elseif type(spec) == 'string' then
local num, day, op = spec:match('^%s*(%d*)%s*(%a*)%s*([<>=]*)%s*$')
if not num then
return list
end
if num ~= '' then
count = tonumber(num)
end
if day ~= '' then
local dow = day_number(day:gsub('[sS]$', '')) -- accept plural days
if not dow then
return list
end
offset = dow - date.dow
end
operation = ops[op]
else
return list
end
end
offset = offset or 0
operation = operation or ops['>']
local datefrom, dayfirst, daylast
if operation.before then
if offset > 0 or (offset == 0 and not operation.include) then
offset = offset - 7
end
if count then
if count > 1 then
offset = offset - 7*(count - 1)
end
datefrom = date + offset
else
daylast = date.day + offset
dayfirst = daylast % 7
if dayfirst == 0 then
dayfirst = 7
end
end
else
if offset < 0 or (offset == 0 and not operation.include) then
offset = offset + 7
end
if count then
datefrom = date + offset
else
dayfirst = date.day + offset
daylast = date.monthdays
end
end
if not count then
if daylast < dayfirst then
return list
end
count = floor((daylast - dayfirst)/7) + 1
datefrom = Date(date, {day = dayfirst})
end
for i = 1, count do
if not datefrom then break end -- exceeds date limits
list[i] = datefrom
datefrom = datefrom + 7
end
return list
end
-- Cache the current date/time (UTC).
--
-- Note that os.date() returns an empty object with optimized lazy getters for each field.
-- Avoid current.min or current.sec in articles! https://phabricator.wikimedia.org/T416616
--
-- Beware that while os.date() uses 'min' and 'sec', our Date() uses 'minute' and 'second'.
local current = os.date('!*t')
local function extract_date(newdate, text)
-- Parse the date/time in text and return n, o where
-- n = table of numbers with date/time fields
-- o = table of options for AM/PM or AD/BC or format, if any
-- or return nothing if date is known to be invalid.
-- Caller determines if the values in n are valid.
-- A year must be positive ('1' to '9999'); use 'BC' for BC.
-- In a y-m-d string, the year must be four digits to avoid ambiguity
-- ('0001' to '9999'). The only way to enter year <= 0 is by specifying
-- the date as three numeric parameters like ymd Date(-1, 1, 1).
-- Dates of form d/m/y, m/d/y, y/m/d are rejected as potentially ambiguous.
local date, options = {}, {}
if text:sub(-1) == 'Z' then
-- Extract date/time from a Wikidata timestamp.
-- The year can be 1 to 16 digits but this module handles 1 to 4 digits only.
-- Examples: '+2016-06-21T14:30:00Z', '-0000000180-00-00T00:00:00Z'.
local sign, y, m, d, H, M, S = text:match('^([+%-])(%d+)%-(%d%d)%-(%d%d)T(%d%d):(%d%d):(%d%d)Z$')
if sign then
y = tonumber(y)
if sign == '-' and y > 0 then
y = -y
end
if y <= 0 then
options.era = 'BCE'
end
date.year = y
m = tonumber(m)
d = tonumber(d)
H = tonumber(H)
M = tonumber(M)
S = tonumber(S)
if m == 0 then
newdate.partial = true
return date, options
end
date.month = m
if d == 0 then
newdate.partial = true
return date, options
end
date.day = d
if H > 0 or M > 0 or S > 0 then
date.hour = H
date.minute = M
date.second = S
end
return date, options
end
return
end
local function extract_ymd(item)
-- Called when no day or month has been set.
local y, m, d = item:match('^(%d%d%d%d)%-(%w+)%-(%d%d?)$')
if y then
if date.year then
return
end
if m:match('^%d%d?$') then
m = tonumber(m)
else
m = month_number(m)
end
if m then
date.year = tonumber(y)
date.month = m
date.day = tonumber(d)
return true
end
end
end
local function extract_day_or_year(item)
-- Called when a day would be valid, or
-- when a year would be valid if no year has been set and partial is set.
local number, suffix = item:match('^(%d%d?%d?%d?)(.*)$')
if number then
local n = tonumber(number)
if #number <= 2 and n <= 31 then
suffix = suffix:lower()
if suffix == '' or suffix == 'st' or suffix == 'nd' or suffix == 'rd' or suffix == 'th' then
date.day = n
return true
end
elseif suffix == '' and newdate.partial and not date.year then
date.year = n
return true
end
end
end
local function extract_month(item)
-- A month must be given as a name or abbreviation; a number could be ambiguous.
local m = month_number(item)
if m then
date.month = m
return true
end
end
local function extract_time(item)
local h, m, s = item:match('^(%d%d?):(%d%d)(:?%d*)$')
if date.hour or not h then
return
end
if s ~= '' then
s = s:match('^:(%d%d)$')
if not s then
return
end
end
date.hour = tonumber(h)
date.minute = tonumber(m)
date.second = tonumber(s) -- nil if empty string
return true
end
local item_count = 0
local index_time
local function set_ampm(item)
local H = date.hour
if H and not options.am and index_time + 1 == item_count then
options.am = ampm_options[item] -- caller checked this is not nil
if item:match('^[Aa]') then
if not (1 <= H and H <= 12) then
return
end
if H == 12 then
date.hour = 0
end
else
if not (1 <= H and H <= 23) then
return
end
if H <= 11 then
date.hour = H + 12
end
end
return true
end
end
for item in text:gsub(',', ' '):gsub(' ', ' '):gmatch('%S+') do
item_count = item_count + 1
if era_text[item] then
-- Era is accepted in peculiar places.
if options.era then
return
end
options.era = item
elseif ampm_options[item] then
if not set_ampm(item) then
return
end
elseif item:find(':', 1, true) then
if not extract_time(item) then
return
end
index_time = item_count
elseif date.day and date.month then
if date.year then
return -- should be nothing more so item is invalid
end
if not item:match('^(%d%d?%d?%d?)$') then
return
end
date.year = tonumber(item)
elseif date.day then
if not extract_month(item) then
return
end
elseif date.month then
if not extract_day_or_year(item) then
return
end
elseif extract_month(item) then
options.format = 'mdy'
elseif extract_ymd(item) then
options.format = 'ymd'
elseif extract_day_or_year(item) then
if date.day then
options.format = 'dmy'
end
else
return
end
end
if not date.year or date.year == 0 then
return
end
local era = era_text[options.era]
if era and era.isbc then
date.year = 1 - date.year
end
return date, options
end
local function autofill(date1, date2)
-- Fill any missing month or day in each date using the
-- corresponding component from the other date, if present,
-- or with 1 if both dates are missing the month or day.
-- This gives a good result for calculating the difference
-- between two partial dates when no range is wanted.
-- Return filled date1, date2 (two full dates).
local function filled(a, b)
-- Return date a filled, if necessary, with month and/or day from date b.
-- The filled day is truncated to fit the number of days in the month.
local fillmonth, fillday
if not a.month then
fillmonth = b.month or 1
end
if not a.day then
fillday = b.day or 1
end
if fillmonth or fillday then -- need to create a new date
a = Date(a, {
month = fillmonth,
day = math.min(fillday or a.day, days_in_month(a.year, fillmonth or a.month, a.calendar))
})
end
return a
end
return filled(date1, date2), filled(date2, date1)
end
local function date_add_sub(lhs, rhs, is_sub)
-- Return a new date from calculating (lhs + rhs) or (lhs - rhs),
-- or return nothing if invalid.
-- The result is nil if the calculated date exceeds allowable limits.
-- Caller ensures that lhs is a date; its properties are copied for the new date.
if lhs.partial then
-- Adding to a partial is not supported.
-- Can subtract a date or partial from a partial, but this is not called for that.
return
end
local function is_prefix(text, word, minlen)
local n = #text
return (minlen or 1) <= n and n <= #word and text == word:sub(1, n)
end
local function do_days(n)
local forcetime, jd
if floor(n) == n then
jd = lhs.jd
else
forcetime = not lhs.hastime
jd = lhs.jdz
end
jd = jd + (is_sub and -n or n)
if forcetime then
jd = tostring(jd)
if not jd:find('.', 1, true) then
jd = jd .. '.0'
end
end
return Date(lhs, 'juliandate', jd)
end
if type(rhs) == 'number' then
-- Add/subtract days, including fractional days.
return do_days(rhs)
end
if type(rhs) == 'string' then
-- rhs is a single component like '26m' or '26 months' (with optional sign).
-- Fractions like '3.25d' are accepted for the units which are handled as days.
local sign, numstr, id = rhs:match('^%s*([+-]?)([%d%.]+)%s*(%a+)$')
if sign then
if sign == '-' then
is_sub = not (is_sub and true or false)
end
local y, m, days
local num = tonumber(numstr)
if not num then
return
end
id = id:lower()
if is_prefix(id, 'years') then
y = num
m = 0
elseif is_prefix(id, 'months') then
y = floor(num / 12)
m = num % 12
elseif is_prefix(id, 'weeks') then
days = num * 7
elseif is_prefix(id, 'days') then
days = num
elseif is_prefix(id, 'hours') then
days = num / 24
elseif is_prefix(id, 'minutes', 3) then
days = num / (24 * 60)
elseif is_prefix(id, 'seconds') then
days = num / (24 * 3600)
else
return
end
if days then
return do_days(days)
end
if numstr:find('.', 1, true) then
return
end
if is_sub then
y = -y
m = -m
end
assert(-11 <= m and m <= 11)
y = lhs.year + y
m = lhs.month + m
if m > 12 then
y = y + 1
m = m - 12
elseif m < 1 then
y = y - 1
m = m + 12
end
local d = math.min(lhs.day, days_in_month(y, m, lhs.calendar))
return Date(lhs, y, m, d)
end
end
if is_diff(rhs) then
local days = rhs.age_days
if (is_sub or false) ~= (rhs.isnegative or false) then
days = -days
end
return lhs + days
end
end
local full_date_only = {
dayabbr = true,
dayname = true,
dow = true,
dayofweek = true,
dowiso = true,
dayofweekiso = true,
dayofyear = true,
gsd = true,
juliandate = true,
jd = true,
jdz = true,
jdnoon = true,
}
-- Metatable for a date's calculated fields.
local datemt = {
__index = function (self, key)
if rawget(self, 'partial') then
if full_date_only[key] then return end
if key == 'monthabbr' or key == 'monthdays' or key == 'monthname' then
if not self.month then return end
end
end
local value
if key == 'dayabbr' then
value = day_info[self.dow][1]
elseif key == 'dayname' then
value = day_info[self.dow][2]
elseif key == 'dow' then
value = (self.jdnoon + 1) % 7 -- day-of-week 0=Sun to 6=Sat
elseif key == 'dayofweek' then
value = self.dow
elseif key == 'dowiso' then
value = (self.jdnoon % 7) + 1 -- ISO day-of-week 1=Mon to 7=Sun
elseif key == 'dayofweekiso' then
value = self.dowiso
elseif key == 'dayofyear' then
local first = Date(self.year, 1, 1, self.calendar).jdnoon
value = self.jdnoon - first + 1 -- day-of-year 1 to 366
elseif key == 'era' then
-- Era text (never a negative sign) from year and options.
value = get_era_for_year(self.options.era, self.year)
elseif key == 'format' then
value = self.options.format or 'dmy'
elseif key == 'gsd' then
-- GSD = 1 from 00:00:00 to 23:59:59 on 1 January 1 AD Gregorian calendar,
-- which is from jd 1721425.5 to 1721426.49999.
value = floor(self.jd - 1721424.5)
elseif key == 'juliandate' or key == 'jd' or key == 'jdz' then
local jd, jdz = julian_date(self)
rawset(self, 'juliandate', jd)
rawset(self, 'jd', jd)
rawset(self, 'jdz', jdz)
return key == 'jdz' and jdz or jd
elseif key == 'jdnoon' then
-- Julian date at noon (an integer) on the calendar day when jd occurs.
value = floor(self.jd + 0.5)
elseif key == 'isleapyear' then
value = is_leap_year(self.year, self.calendar)
elseif key == 'monthabbr' then
value = month_info[self.month][1]
elseif key == 'monthdays' then
value = days_in_month(self.year, self.month, self.calendar)
elseif key == 'monthname' then
value = month_info[self.month][2]
end
if value ~= nil then
rawset(self, key, value)
return value
end
end,
}
-- Date operators.
local function mt_date_add(lhs, rhs)
if not is_date(lhs) then
lhs, rhs = rhs, lhs -- put date on left (it must be a date for this to have been called)
end
return date_add_sub(lhs, rhs)
end
local function mt_date_sub(lhs, rhs)
if is_date(lhs) then
if is_date(rhs) then
return DateDiff(lhs, rhs)
end
return date_add_sub(lhs, rhs, true)
end
end
local function mt_date_concat(lhs, rhs)
return tostring(lhs) .. tostring(rhs)
end
local function mt_date_tostring(self)
return self:text()
end
local function mt_date_eq(lhs, rhs)
-- Return true if dates identify same date/time where, for example,
-- Date(-4712, 1, 1, 'Julian') == Date(-4713, 11, 24, 'Gregorian') is true.
-- This is called only if lhs and rhs have the same type and the same metamethod.
if lhs.partial or rhs.partial then
-- One date is partial; the other is a partial or a full date.
-- The months may both be nil, but must be the same.
return lhs.year == rhs.year and lhs.month == rhs.month and lhs.calendar == rhs.calendar
end
return lhs.jdz == rhs.jdz
end
local function mt_date_lt(lhs, rhs)
-- Return true if lhs < rhs, for example,
-- Date('1 Jan 2016') < Date('06:00 1 Jan 2016') is true.
-- This is called only if lhs and rhs have the same type and the same metamethod.
if lhs.partial or rhs.partial then
-- One date is partial; the other is a partial or a full date.
if lhs.calendar ~= rhs.calendar then
return lhs.calendar == 'Julian'
end
if lhs.partial then
lhs = lhs.partial.first
end
if rhs.partial then
rhs = rhs.partial.first
end
end
return lhs.jdz < rhs.jdz
end
--[[ Examples of syntax to construct a date:
Date(y, m, d, 'julian') default calendar is 'gregorian'
Date(y, m, d, H, M, S, 'julian')
Date('juliandate', jd, 'julian') if jd contains "." text output includes H:M:S
Date('currentdate')
Date('currentdatetime')
Date('1 April 1995', 'julian') parse date from text
Date('1 April 1995 AD', 'julian') using an era sets a flag to do the same for output
Date('04:30:59 1 April 1995', 'julian')
Date(date) copy of an existing date
Date(date, t) same, updated with y,m,d,H,M,S fields from table t
Date(t) date with y,m,d,H,M,S fields from table t
]]
function Date(...) -- for forward declaration above
-- Return a table holding a date assuming a uniform calendar always applies
-- (proleptic Gregorian calendar or proleptic Julian calendar), or
-- return nothing if date is invalid.
-- A partial date has a valid year, however its month may be nil, and
-- its day and time fields are nil.
-- Field partial is set to false (if a full date) or a table (if a partial date).
local calendars = { julian = 'Julian', gregorian = 'Gregorian' }
local newdate = {
_id = uniq,
calendar = 'Gregorian', -- default is Gregorian calendar
hastime = false, -- true if input sets a time
hour = 0, -- always set hour/minute/second so don't have to handle nil
minute = 0,
second = 0,
options = {},
list = _date_list,
subtract = function (self, rhs, options)
return DateDiff(self, rhs, options)
end,
text = _date_text,
}
local argtype, datetext, is_copy, jd_number, tnums
local numindex = 0
local numfields = { 'year', 'month', 'day', 'hour', 'minute', 'second' }
local numbers = {}
for _, v in ipairs({...}) do
v = strip_to_nil(v)
local vlower = type(v) == 'string' and v:lower() or nil
if v == nil then
-- Ignore empty arguments after stripping so modules can directly pass template parameters.
elseif calendars[vlower] then
newdate.calendar = calendars[vlower]
elseif vlower == 'partial' then
newdate.partial = true
elseif vlower == 'fix' then
newdate.want_fix = true
elseif is_date(v) then
-- Copy existing date (items can be overridden by other arguments).
if is_copy or tnums then
return
end
is_copy = true
newdate.calendar = v.calendar
newdate.partial = v.partial
newdate.hastime = v.hastime
newdate.options = v.options
newdate.year = v.year
newdate.month = v.month
newdate.day = v.day
newdate.hour = v.hour
newdate.minute = v.minute
newdate.second = v.second
elseif type(v) == 'table' then
if tnums then
return
end
tnums = {}
local tfields = { year=1, month=1, day=1, hour=2, minute=2, second=2 }
for tk, tv in pairs(v) do
if tfields[tk] then
tnums[tk] = tonumber(tv)
end
if tfields[tk] == 2 then
newdate.hastime = true
end
end
else
local num = tonumber(v)
if not num and argtype == 'setdate' and numindex == 1 then
num = month_number(v)
end
if num then
if not argtype then
argtype = 'setdate'
end
if argtype == 'setdate' and numindex < 6 then
numindex = numindex + 1
numbers[numfields[numindex]] = num
elseif argtype == 'juliandate' and not jd_number then
jd_number = num
if type(v) == 'string' then
if v:find('.', 1, true) then
newdate.hastime = true
end
elseif num ~= floor(num) then
-- The given value was a number. The time will be used
-- if the fractional part is nonzero.
newdate.hastime = true
end
else
return
end
elseif argtype then
return
elseif type(v) == 'string' then
if v == 'currentdate' or v == 'currentdatetime' or v == 'juliandate' then
argtype = v
else
argtype = 'datetext'
datetext = v
end
else
return
end
end
end
if argtype == 'datetext' then
if tnums or not set_date_from_numbers(newdate, extract_date(newdate, datetext)) then
return
end
elseif argtype == 'juliandate' then
newdate.partial = nil
newdate.jd = jd_number
if not set_date_from_jd(newdate) then
return
end
elseif argtype == 'currentdate' or argtype == 'currentdatetime' then
newdate.partial = nil
newdate.year = current.year
newdate.month = current.month
newdate.day = current.day
if argtype == 'currentdatetime' then
newdate.hour = current.hour
newdate.minute = current.min
newdate.second = current.sec
newdate.hastime = true
end
newdate.calendar = 'Gregorian' -- ignore any given calendar name
elseif argtype == 'setdate' then
if tnums or not set_date_from_numbers(newdate, numbers) then
return
end
elseif not (is_copy or tnums) then
return
end
if tnums then
newdate.jd = nil -- force recalculation in case jd was set before changes from tnums
if not set_date_from_numbers(newdate, tnums) then
return
end
end
if newdate.partial then
local year = newdate.year
local month = newdate.month
local first = Date(year, month or 1, 1, newdate.calendar)
month = month or 12
local last = Date(year, month, days_in_month(year, month), newdate.calendar)
newdate.partial = { first = first, last = last }
else
newdate.partial = false -- avoid index lookup
end
setmetatable(newdate, datemt)
local readonly = {}
local mt = {
__index = newdate,
__newindex = function(t, k, v) error('date.' .. tostring(k) .. ' is read-only', 2) end,
__add = mt_date_add,
__sub = mt_date_sub,
__concat = mt_date_concat,
__tostring = mt_date_tostring,
__eq = mt_date_eq,
__lt = mt_date_lt,
}
return setmetatable(readonly, mt)
end
local function _diff_age(diff, code, options)
-- Return a tuple of integer values from diff as specified by code, except that
-- each integer may be a list of two integers for a diff with a partial date, or
-- return nil if the code is not supported.
-- If want round, the least significant unit is rounded to nearest whole unit.
-- For a duration, an extra day is added.
local wantround, wantduration, wantrange
if type(options) == 'table' then
wantround = options.round
wantduration = options.duration
wantrange = options.range
else
wantround = options
end
if not is_diff(diff) then
local f = wantduration and 'duration' or 'age'
error(f .. ': need a date difference (use "diff:' .. f .. '()" with a colon)', 2)
end
if diff.partial then
-- Ignore wantround, wantduration.
local function choose(v)
if type(v) == 'table' then
if not wantrange or v[1] == v[2] then
-- Example: Date('partial', 2005) - Date('partial', 2001) gives
-- diff.years = { 3, 4 } to show the range of possible results.
-- If do not want a range, choose the second value as more expected.
return v[2]
end
end
return v
end
if code == 'ym' or code == 'ymd' then
if not wantrange and diff.iszero then
-- This avoids an unexpected result such as
-- Date('partial', 2001) - Date('partial', 2001)
-- giving diff = { years = 0, months = { 0, 11 } }
-- which would be reported as 0 years and 11 months.
return 0, 0
end
return choose(diff.partial.years), choose(diff.partial.months)
end
if code == 'y' then
return choose(diff.partial.years)
end
if code == 'm' or code == 'w' or code == 'd' then
return choose({ diff.partial.mindiff:age(code), diff.partial.maxdiff:age(code) })
end
return nil
end
local extra_days = wantduration and 1 or 0
if code == 'wd' or code == 'w' or code == 'd' then
local offset = wantround and 0.5 or 0
local days = diff.age_days + extra_days
if code == 'wd' or code == 'd' then
days = floor(days + offset)
if code == 'd' then
return days
end
return floor(days/7), days % 7
end
return floor(days/7 + offset)
end
local H, M, S = diff.hours, diff.minutes, diff.seconds
if code == 'dh' or code == 'dhm' or code == 'dhms' or code == 'h' or code == 'hm' or code == 'hms' or code == 'M' or code == 's' then
local days = floor(diff.age_days + extra_days)
local inc_hour
if wantround then
if code == 'dh' or code == 'h' then
if M >= 30 then
inc_hour = true
end
elseif code == 'dhm' or code == 'hm' then
if S >= 30 then
M = M + 1
if M >= 60 then
M = 0
inc_hour = true
end
end
elseif code == 'M' then
if S >= 30 then
M = M + 1
end
else
-- Nothing needed because S is an integer.
end
if inc_hour then
H = H + 1
if H >= 24 then
H = 0
days = days + 1
end
end
end
if code == 'dh' or code == 'dhm' or code == 'dhms' then
if code == 'dh' then
return days, H
elseif code == 'dhm' then
return days, H, M
else
return days, H, M, S
end
end
local hours = days * 24 + H
if code == 'h' then
return hours
elseif code == 'hm' then
return hours, M
elseif code == 'M' or code == 's' then
M = hours * 60 + M
if code == 'M' then
return M
end
return M * 60 + S
end
return hours, M, S
end
if wantround then
local inc_hour
if code == 'ymdh' or code == 'ymwdh' then
if M >= 30 then
inc_hour = true
end
elseif code == 'ymdhm' or code == 'ymwdhm' then
if S >= 30 then
M = M + 1
if M >= 60 then
M = 0
inc_hour = true
end
end
elseif code == 'ymd' or code == 'ymwd' or code == 'yd' or code == 'md' then
if H >= 12 then
extra_days = extra_days + 1
end
end
if inc_hour then
H = H + 1
if H >= 24 then
H = 0
extra_days = extra_days + 1
end
end
end
local y, m, d = diff.years, diff.months, diff.days
if extra_days > 0 then
d = d + extra_days
if d > 28 or code == 'yd' then
-- Recalculate in case have passed a month.
diff = diff.date1 + extra_days - diff.date2
y, m, d = diff.years, diff.months, diff.days
end
end
if code == 'ymd' then
return y, m, d
elseif code == 'yd' then
if y > 0 then
-- It is known that diff.date1 > diff.date2.
diff = diff.date1 - (diff.date2 + (y .. 'y'))
end
return y, floor(diff.age_days)
elseif code == 'md' then
return y * 12 + m, d
elseif code == 'ym' or code == 'm' then
if wantround then
if d >= 16 then
m = m + 1
if m >= 12 then
m = 0
y = y + 1
end
end
end
if code == 'ym' then
return y, m
end
return y * 12 + m
elseif code == 'ymw' then
local weeks = floor(d/7)
if wantround then
local days = d % 7
if days > 3 or (days == 3 and H >= 12) then
weeks = weeks + 1
end
end
return y, m, weeks
elseif code == 'ymwd' then
return y, m, floor(d/7), d % 7
elseif code == 'ymdh' then
return y, m, d, H
elseif code == 'ymwdh' then
return y, m, floor(d/7), d % 7, H
elseif code == 'ymdhm' then
return y, m, d, H, M
elseif code == 'ymwdhm' then
return y, m, floor(d/7), d % 7, H, M
end
if code == 'y' then
if wantround and m >= 6 then
y = y + 1
end
return y
end
return nil
end
local function _diff_duration(diff, code, options)
if type(options) ~= 'table' then
options = { round = options }
end
options.duration = true
return _diff_age(diff, code, options)
end
-- Metatable for some operations on date differences.
diffmt = { -- for forward declaration above
__concat = function (lhs, rhs)
return tostring(lhs) .. tostring(rhs)
end,
__tostring = function (self)
return tostring(self.age_days)
end,
__index = function (self, key)
local value
if key == 'age_days' then
if rawget(self, 'partial') then
local function jdz(date)
return (date.partial and date.partial.first or date).jdz
end
value = jdz(self.date1) - jdz(self.date2)
else
value = self.date1.jdz - self.date2.jdz
end
end
if value ~= nil then
rawset(self, key, value)
return value
end
end,
}
function DateDiff(date1, date2, options) -- for forward declaration above
-- Return a table with the difference between two dates (date1 - date2).
-- The difference is negative if date1 is older than date2.
-- Return nothing if invalid.
-- If d = date1 - date2 then
-- date1 = date2 + d
-- If date1 >= date2 and the dates have no H:M:S time specified then
-- date1 = date2 + (d.years..'y') + (d.months..'m') + d.days
-- where the larger time units are added first.
-- The result of Date(2015,1,x) + '1m' is Date(2015,2,28) for
-- x = 28, 29, 30, 31. That means, for example,
-- d = Date(2015,3,3) - Date(2015,1,31)
-- gives d.years, d.months, d.days = 0, 1, 3 (excluding date1).
if not (is_date(date1) and is_date(date2) and date1.calendar == date2.calendar) then
return
end
local wantfill
if type(options) == 'table' then
wantfill = options.fill
end
local isnegative = false
local iszero = false
if date1 < date2 then
isnegative = true
date1, date2 = date2, date1
elseif date1 == date2 then
iszero = true
end
-- It is known that date1 >= date2 (period is from date2 to date1).
if date1.partial or date2.partial then
-- Two partial dates might have timelines:
---------------------A=================B--- date1 is from A to B inclusive
--------C=======D-------------------------- date2 is from C to D inclusive
-- date1 > date2 iff A > C (date1.partial.first > date2.partial.first)
-- The periods can overlap ('April 2001' - '2001'):
-------------A===B------------------------- A=2001-04-01 B=2001-04-30
--------C=====================D------------ C=2001-01-01 D=2001-12-31
if wantfill then
date1, date2 = autofill(date1, date2)
else
local function zdiff(date1, date2)
local diff = date1 - date2
if diff.isnegative then
return date1 - date1 -- a valid diff in case we call its methods
end
return diff
end
local function getdate(date, which)
return date.partial and date.partial[which] or date
end
local maxdiff = zdiff(getdate(date1, 'last'), getdate(date2, 'first'))
local mindiff = zdiff(getdate(date1, 'first'), getdate(date2, 'last'))
local years, months
if maxdiff.years == mindiff.years then
years = maxdiff.years
if maxdiff.months == mindiff.months then
months = maxdiff.months
else
months = { mindiff.months, maxdiff.months }
end
else
years = { mindiff.years, maxdiff.years }
end
return setmetatable({
date1 = date1,
date2 = date2,
partial = {
years = years,
months = months,
maxdiff = maxdiff,
mindiff = mindiff,
},
isnegative = isnegative,
iszero = iszero,
age = _diff_age,
duration = _diff_duration,
}, diffmt)
end
end
local y1, m1 = date1.year, date1.month
local y2, m2 = date2.year, date2.month
local years = y1 - y2
local months = m1 - m2
local d1 = date1.day + hms(date1)
local d2 = date2.day + hms(date2)
local days, time
if d1 >= d2 then
days = d1 - d2
else
months = months - 1
-- Get days in previous month (before the "to" date) given December has 31 days.
local dpm = m1 > 1 and days_in_month(y1, m1 - 1, date1.calendar) or 31
if d2 >= dpm then
days = d1 - hms(date2)
else
days = dpm - d2 + d1
end
end
if months < 0 then
years = years - 1
months = months + 12
end
days, time = math.modf(days)
local H, M, S = h_m_s(time)
return setmetatable({
date1 = date1,
date2 = date2,
partial = false, -- avoid index lookup
years = years,
months = months,
days = days,
hours = H,
minutes = M,
seconds = S,
isnegative = isnegative,
iszero = iszero,
age = _diff_age,
duration = _diff_duration,
}, diffmt)
end
return {
_current = current,
_Date = Date,
_days_in_month = days_in_month,
}
s56w9hkxdfmzmht7w1dl2xtl2jr67lh
Wikipedia:Kafé/Kaixa-Mensajen Globál
4
7117
74027
70889
2026-07-11T22:35:10Z
MediaWiki message delivery
3558
/* This Month in GLAM: June 2026 */ nova secção
74027
wikitext
text/x-wiki
__NEWSECTIONLINK__<templatestyles src="Template:Kafé/Kaixa-Mensajen Globál/style.css" />
<div class="warta-main">
<span style="font-size:450%;"><center>𝕶𝖆𝖓𝖙𝖚 𝕹𝖔𝖙𝖎𝖘𝖎𝖆</center></span>
<div class="warta-body">
<div class="warta-body-align to-left">'''<span style="white-space: nowrap;">Edisaun</span> [[Wikipédia:Angkringan Warta/Arsip {{#time:Y}}|<span class="warta-link">'{{#time:y}}</span>]]'''</div>
<div class="warta-body-align to-right">'''<span style="white-space: nowrap;">Dalan:</span> [[WP:KMG|<span class="warta-link"><span style="white-space: nowrap;">WP:</span><span style="white-space: nowrap;">KMG</span></span>]]'''</div>
<span class="warta-tagline">''Notísia Projetu Wikimédia''</span>
</div>
</div>
{{clear}}
== ''This Month in GLAM'': December 2025 ==
{| style="width:100%;"
| valign="top" align="center" style="border:1px gray solid; padding:1em;" |
{| align="center"
|-
| style="text-align: center;" | [[File:This Month in GLAM logo 2018.png|350px|center|link=outreach:GLAM/Newsletter]]<br />
<hr />
<div style="font-size:12pt; font-family:Times New Roman; text-align:center;">[[outreach:GLAM/Newsletter/December 2025|<span style="color:darkslategray;">This Month in GLAM – Volume XV, Issue XII, December 2025</span>]]</div>
<hr /><br />
|- style="text-align: center;"
| <span style="font-size:12pt; font-family:Times New Roman;"> '''<u>Headlines</u>'''</span>
|- style="font-size:10pt; font-family:Times New Roman; text-align:center;"
| <div style="text-align:left; column-count:2; column-width:28em; vertical-align:top;">
* [[outreach:GLAM/Newsletter/December 2025/Contents/From the team|From the team]]: Global GLAM Calls Continue in 2026
* [[outreach:GLAM/Newsletter/December 2025/Contents/Albania report|Albania report]]: Wikimedian in Residence, 2025, in Elbasan Albania
* [[outreach:GLAM/Newsletter/December 2025/Contents/Argentina report|Argentina report]]: Resume of the year
* [[outreach:GLAM/Newsletter/December 2025/Contents/Australia report|Australia report]]: AMaGA partnership, signing the Open Heritage Statement and South Australian Museum Partner Project
* [[outreach:GLAM/Newsletter/December 2025/Contents/Belgium report|Belgium report]]: Public Domain Day 2026, Circus Heritage and Fosdem
* [[outreach:GLAM/Newsletter/December 2025/Contents/Colombia report|Colombia report]]: Preparándonos para celebrar el día del dominio público - Getting ready for the Public Domain Day celebration
* [[outreach:GLAM/Newsletter/December 2025/Contents/Italy report|Italy report]]: Exploring Italy and Unlocking Its Heritage: Touring Club Italiano and GLAM Call 2026–2028
* [[outreach:GLAM/Newsletter/December 2025/Contents/New Zealand report|New Zealand report]]: ASBS 2025 Conference follow-up Wiki webinar & Auckland Museum student update
* [[outreach:GLAM/Newsletter/December 2025/Contents/Poland report|Poland report]]: Public Domain, Conferences, and Conversations on Open Culture
* [[outreach:GLAM/Newsletter/December 2025/Contents/Switzerland report|Switzerland report]]: GLAM on Tour Bellinzona, Xmas Event, GLAM Wiki Group
* [[outreach:GLAM/Newsletter/December 2025/Contents/UK report|UK report]]: 2025 in review
* [[outreach:GLAM/Newsletter/December 2025/Contents/USA report|USA report]]: December meetings
* [[outreach:GLAM/Newsletter/December 2025/Contents/Public Domain Day report|Public Domain Day report]]: Public Domain Day 2026
* [[outreach:GLAM/Newsletter/December 2025/Contents/Biodiversity Heritage Library report|Biodiversity Heritage Library report]]: Updates on work by BHLWiki Working Group members
* [[outreach:GLAM/Newsletter/December 2025/Contents/Memory of the World report|Memory of the World report]]: 2025 in review
* [[outreach:GLAM/Newsletter/December 2025/Contents/Events|Calendar]]: January's GLAM events
</div>
|-
| style="font-family:Times New Roman; text-align:center; font-size:85%;" | [[outreach:GLAM/Newsletter|Read this edition in full]] • [[outreach:GLAM/Newsletter/December 2025/Single|Single-page]]
|-
| valign="top" colspan="2" style="padding:0.5em; font-family:Times New Roman;text-align:center; font-size:85%;" |
To assist with preparing the newsletter, please visit the [[outreach:GLAM/Newsletter/Newsroom|newsroom]]. Past editions may be viewed [[outreach:GLAM/Newsletter/Archives|here]].
|-
|}
|}
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[m:GLAM/Newsletter/About|About ''This Month in GLAM'']] · [[m:Global message delivery/Targets/GLAM|Subscribe/Unsubscribe]] · [[m:MassMessage|Global message delivery]] · [[:m:User:Romaine|Romaine]] 12h58min de 12 de Janeiru de 2026 (UTC)</div>
<!-- Mensagem enviada por User:Romaine@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/GLAM&oldid=29895284 -->
== ''The Signpost'': 15 January 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr" style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[File:WikipediaSignpostIcon.svg|40px|right]] ''News, reports and features from the English Wikipedia's newspaper''</div>
<div style="column-count:2;">
* News and notes: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/News and notes|Wikipedia's 25th anniversary is here!]]
* Special report: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/Special report|Wikipedia at 25: A Wake-Up Call]]
* Serendipity: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/Serendipity|The WMF wants to buy you books!]]
* WikiProject report: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/WikiProject report|Time for a health check: the Vital Signs 2026 campaign]]
* In the media: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/In the media|Fake Acting President Trump and a Wikipedia infobox]]
* Community view: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/Community view|The inbox behind Wikipedia]]
* Recent research: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/Recent research|Art museums on Wikidata; comparing three comparisons of Grokipedia and Wikipedia]]
* Traffic report: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/Traffic report|Tonight I'm gonna rock you]]
* Comix: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-15/Comix|Oh come on man.]]
</div>
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">'''[[w:en:Wikipedia:Wikipedia Signpost|Read this Signpost in full]]''' · [[w:en:Wikipedia:Signpost/Single|Single-page]] · [[m:Global message delivery/Targets/Signpost|Unsubscribe]] · [[m:Global message delivery|Global message delivery]] 15h19min de 15 de Janeiru de 2026 (UTC)
<!-- Sent via script ([[w:en:User:JPxG/SPS]]) --></div>
<!-- Mensagem enviada por User:JPxG@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Signpost&oldid=29899914 -->
== Thank You for Last Year – Join Wiki Loves Ramadan 2026 ==
Dear Wikimedia communities,
We hope you are doing well, and we wish you a happy New Year.
''Last year, we captured light. This year, we’ll capture legacy.''
In 2025, communities around the world shared the glow of Ramadan nights and the warmth of collective iftars. In 2026, ''Wiki Loves Ramadan'' is expanding, bringing more stories, more cultures, and deeper global connections across Wikimedia projects.
We invite you to explore the ''Wiki Loves Ramadan 2026'' [[m:Special:MyLanguage/Wiki Loves Ramadan 2026|Meta page]] to learn how you can participate and [[m:Special:MyLanguage/Wiki Loves Ramadan 2026/Participating communities|sign up]] your community.
📷 ''Photo campaign on '' [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan 2026|Wikimedia Commons]]
If you have questions about the project, please refer to the FAQs:
* [[m:Special:MyLanguage/Wiki Loves Ramadan/FAQ/|Meta-Wiki]]
* [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan/FAQ|Wikimedia Commons]]
''Early registration for updates is now open via the '''[[m:Special:RegisterForEvent/2710|Event page]]'''''
''Stay connected and receive updates:''
* [https://t.me/WikiLovesRamadan Telegram channel]
* [https://lists.wikimedia.org/postorius/lists/wikilovesramadan.lists.wikimedia.org/ Mailing list]
We look forward to collaborating with you and your community.
'''The Wiki Loves Ramadan 2026 Organizing Team''' 19h45min de 16 de Janeiru de 2026 (UTC)
<!-- Mensagem enviada por User:ZI Jony@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29879549 -->
== <span lang="pt" dir="ltr">Revisão anual do Código de Conduta Universal e das Diretrizes de Aplicação</span> ==
<div lang="pt" dir="ltr">
<section begin="announcement-content" />
Esta mensagem é para lhe informar que o período de revisão anual do Código de Conduta Universal (UCoC) e das Diretrizes de Aplicação acabou de abrir. Será possível fazer suas sugestões sobre o que deve mudar até 9 de fevereiro de 2026. Esta é a primeira de várias etapas que comporão a revisão anual. [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2026|Saiba mais e junte-se à conversa na página do UCoC no Meta]].
O [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Comitê de Coordenação do Código de Conduta Universal]] (U4C) é um grupo global dedicado a entregar uma implementação equitativa e consistente do UCoC. Essa revisão anual foi planejada e implementada pelo U4C. Para mais informações sobre as responsabilidades do U4C, [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|confira a Carta do U4C]].
Por favor, ajude-nos compartilhando essas informações com outros membros da sua comunidade nos lugares apropriados.
-- Em cooperação com o U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|discussão]])<section end="announcement-content" />
</div>
21h02min de 19 de Janeiru de 2026 (UTC)
<!-- Mensagem enviada por User:Keegan (WMF)@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29905753 -->
== ''The Signpost'': 29 January 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr" style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[File:WikipediaSignpostIcon.svg|40px|right]] ''News, reports and features from the English Wikipedia's newspaper''</div>
<div style="column-count:2;">
* Traffic report: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-29/Traffic report|The most viewed articles of 2025]]
* News and notes: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-29/News and notes|Good news... but also bad news for the Public Domain]]
* News from Diff: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-29/News from Diff|Solving puzzles together]]
* In the media: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-29/In the media|Every view on the 25th anniversary of everything]]
* Comix: [[w:en:Wikipedia:Wikipedia Signpost/2026-01-29/Comix|Perspectives]]
</div>
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">'''[[w:en:Wikipedia:Wikipedia Signpost|Read this Signpost in full]]''' · [[w:en:Wikipedia:Signpost/Single|Single-page]] · [[m:Global message delivery/Targets/Signpost|Unsubscribe]] · [[m:Global message delivery|Global message delivery]] 06h31min de 29 de Janeiru de 2026 (UTC)
<!-- Sent via script ([[w:en:User:JPxG/SPS]]) --></div>
<!-- Mensagem enviada por User:JPxG@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Signpost&oldid=29988053 -->
== ''This Month in GLAM'': January 2026 ==
{| style="width:100%;"
| valign="top" align="center" style="border:1px gray solid; padding:1em;" |
{| align="center"
|-
| style="text-align: center;" | [[File:This Month in GLAM logo 2018.png|350px|center|link=outreach:GLAM/Newsletter]]<br />
<hr />
<div style="font-size:12pt; font-family:Times New Roman; text-align:center;">[[outreach:GLAM/Newsletter/January 2026|<span style="color:darkslategray;">This Month in GLAM – Volume XVI, Issue I, January 2026</span>]]</div>
<hr /><br />
|- style="text-align: center;"
| <span style="font-size:12pt; font-family:Times New Roman;"> '''<u>Headlines</u>'''</span>
|- style="font-size:10pt; font-family:Times New Roman; text-align:center;"
| <div style="text-align:left; column-count:2; column-width:28em; vertical-align:top;">
* [[outreach:GLAM/Newsletter/January 2026/Contents/From the team|From the team]]: Wikipedia at 25
* [[outreach:GLAM/Newsletter/January 2026/Contents/Aruba report|Aruba report]]: Pap-Wikipedia Turns 20: A Milestone for Papiamento/u Knowledge
* [[outreach:GLAM/Newsletter/January 2026/Contents/Colombia report|Colombia report]]: Celebrando el día del dominio público 2026/Celebrating the public domain day 2026
* [[outreach:GLAM/Newsletter/January 2026/Contents/France report|France report]]: Wikipedia's Birthday in France
* [[outreach:GLAM/Newsletter/January 2026/Contents/Germany report|Germany report]]: Gifted by our friends: Loads of presents for Wikipedia25 by German and Austrian GLAMs
* [[outreach:GLAM/Newsletter/January 2026/Contents/Indonesia report|Indonesia report]]: Activities in December-January
* [[outreach:GLAM/Newsletter/January 2026/Contents/Italy report|Italy report]]: Knowledge in action: Barindelli collection and Wikipedia 25
* [[outreach:GLAM/Newsletter/January 2026/Contents/Netherlands report|Netherlands report]]: Image donation Dutch Book History
* [[outreach:GLAM/Newsletter/January 2026/Contents/New Zealand report|New Zealand report]]: Auckland Museum Student Edit-a-thon, the NZBSI Wikimedian in Residence project, and other residencies
* [[outreach:GLAM/Newsletter/January 2026/Contents/Macedonia report|North Macedonia report]]: GLAM Program of Wikimedia MKD – 2026 Overview
* [[outreach:GLAM/Newsletter/January 2026/Contents/Poland report|Poland report]]: Explore Historic Portraits from the Museum of Photography in Kraków
* [[outreach:GLAM/Newsletter/January 2026/Contents/Serbia report|Serbia report]]: January in Wikimedia Serbia
* [[outreach:GLAM/Newsletter/January 2026/Contents/Switzerland report|Switzerland report]]: Museum in Chiasso, Alpine Museum, Women Monuments
* [[outreach:GLAM/Newsletter/January 2026/Contents/UK report|UK report]]: Sharing more of the Enamels of the World
* [[outreach:GLAM/Newsletter/January 2026/Contents/Biodiversity Heritage Library report|Biodiversity Heritage Library report]]: Updates on work by BHLWiki Working Group members
* [[outreach:GLAM/Newsletter/January 2026/Contents/Map the GLAM report|Map the GLAM report]]: Wiki and GLAM: Harnessing Knowledge to Foster Gender Equality
* [[outreach:GLAM/Newsletter/January 2026/Contents/Memory of the World report|Memory of the World report]]: Manuscripts on Arabic Wikipedia
* [[outreach:GLAM/Newsletter/January 2026/Contents/Wikidata report|Wikidata report]]: Two key Wikidata Requests for Comments, relevant for future GLAM-Wiki work
* [[outreach:GLAM/Newsletter/January 2026/Contents/Events|Calendar]]: February's GLAM events
</div>
|-
| style="font-family:Times New Roman; text-align:center; font-size:85%;" | [[outreach:GLAM/Newsletter|Read this edition in full]] • [[outreach:GLAM/Newsletter/January 2026/Single|Single-page]]
|-
| valign="top" colspan="2" style="padding:0.5em; font-family:Times New Roman;text-align:center; font-size:85%;" |
To assist with preparing the newsletter, please visit the [[outreach:GLAM/Newsletter/Newsroom|newsroom]]. Past editions may be viewed [[outreach:GLAM/Newsletter/Archives|here]].
|-
|}
|}
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[m:GLAM/Newsletter/About|About ''This Month in GLAM'']] · [[m:Global message delivery/Targets/GLAM|Subscribe/Unsubscribe]] · [[m:MassMessage|Global message delivery]] · [[:m:User:Romaine|Romaine]] 08h34min de 11 de Fevereiru de 2026 (UTC)</div>
<!-- Mensagem enviada por User:Romaine@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/GLAM&oldid=30055818 -->
== ''The Signpost'': 17 February 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr" style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[File:WikipediaSignpostIcon.svg|40px|right]] ''News, reports and features from the English Wikipedia's newspaper''</div>
<div style="column-count:2;">
* In the media: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/In the media|Global powers see Wikipedia as fundamental target for manipulation]]
* News and notes: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/News and notes|Discussions open for the next WMF Annual Plan]]
* Serendipity: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/Serendipity|Maintenance crews continue to slog through Wikipedia's oldest Featured Articles]]
* Disinformation report: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/Disinformation report|Epstein's obsessions]]
* Technology report: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/Technology report|Wikidata Graph Split and how we address major challenges]]
* Traffic report: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/Traffic report|Deaths, killings, films, and the Olympics]]
* Opinion: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/Opinion|Incoming Incurables]]
* Crossword: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/Crossword|Pop quiz]]
* Comix: [[w:en:Wikipedia:Wikipedia Signpost/2026-02-17/Comix|herculean]]
</div>
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">'''[[w:en:Wikipedia:Wikipedia Signpost|Read this Signpost in full]]''' · [[w:en:Wikipedia:Signpost/Single|Single-page]] · [[m:Global message delivery/Targets/Signpost|Unsubscribe]] · [[m:Global message delivery|Global message delivery]] 08h03min de 17 de Fevereiru de 2026 (UTC)
<!-- Sent via script ([[w:en:User:JPxG/SPS]]) --></div>
<!-- Mensagem enviada por User:JPxG@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Signpost&oldid=30039447 -->
== ''The Signpost'': 10 March 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr" style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[File:WikipediaSignpostIcon.svg|40px|right]] ''News, reports and features from the English Wikipedia's newspaper''</div>
<div style="column-count:2;">
* Interview: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Interview|Bernadette Meehan, new Wikimedia Foundation CEO]]
* News and notes: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/News and notes|Security testing unleashes computer worm on Meta-wiki]]
* Special report: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Special report|What actually happened during the Wikimedia security incident?]]
* In the media: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/In the media|Indonesian government blocks Wikimedia logins; archive site scoured from Wikipedia after owner runs malware]]
* Recent research: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Recent research|To wiki, perchance to groki]]
* Obituary: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Obituary|Madhav Gadgil, Fredrick Brennan, Mark Miller, Chip Berlet]]
* Opinion: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Opinion|Interface administrators and trusting trust]]
* Technology report: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Technology report|English Wikipedia deprecates archive.today after DDoS against blog, altered content]]
* Op-ed: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Op-ed|Why is "Trypsin-sensitive photosynthetic activities in chloroplast membranes" cited in "List of tallest buildings in Chicago"?]]
* Essay: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Essay|The pursuit of a button click]]
* In focus: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/In focus|Short descriptions: One year later]]
* WikiProject report: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/WikiProject report|Unreferenced articles backlog drive]]
* Community view: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Community view|Speaking of planning ...]]
* Traffic report: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Traffic report|Over the mountain, kissing silver inlaid clouds]]
* Crossword: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Crossword|"It will never happen"]]
* Comix: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-10/Comix|BRIEn't]]
</div>
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">'''[[w:en:Wikipedia:Wikipedia Signpost|Read this Signpost in full]]''' · [[w:en:Wikipedia:Signpost/Single|Single-page]] · [[m:Global message delivery/Targets/Signpost|Unsubscribe]] · [[m:Global message delivery|Global message delivery]] 04h15min de 10 de Marsu de 2026 (UTC)
<!-- Sent via script ([[w:en:User:JPxG/SPS]]) --></div>
<!-- Mensagem enviada por User:JPxG@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Signpost&oldid=30121359 -->
== ''This Month in GLAM'': February 2026 ==
{| style="width:100%;"
| valign="top" align="center" style="border:1px gray solid; padding:1em;" |
{| align="center"
|-
| style="text-align: center;" | [[File:This Month in GLAM logo 2018.png|350px|center|link=outreach:GLAM/Newsletter]]<br />
<hr />
<div style="font-size:12pt; font-family:Times New Roman; text-align:center;">[[outreach:GLAM/Newsletter/February 2026|<span style="color:darkslategray;">This Month in GLAM – Volume XVI, Issue II, February 2026</span>]]</div>
<hr /><br />
|- style="text-align: center;"
| <span style="font-size:12pt; font-family:Times New Roman;"> '''<u>Headlines</u>'''</span>
|- style="font-size:10pt; font-family:Times New Roman; text-align:center;"
| <div style="text-align:left; column-count:2; column-width:28em; vertical-align:top;">
* [[outreach:GLAM/Newsletter/February 2026/Contents/From the team|From the team]]: GLAM in 2026 is calling to action!
* [[outreach:GLAM/Newsletter/February 2026/Contents/Belgium report|Belgium report]]: A photo safari through Wiki Loves Fashion & a rescue mission with Mission Gourmande!
* [[outreach:GLAM/Newsletter/February 2026/Contents/Czech Republic report|Czech Republic report]]: National Library overview of 2025
* [[outreach:GLAM/Newsletter/February 2026/Contents/Italy report|Italy report]]: Cultural Heritage and Memory: 2026 GLAM Call and Executed Renaissance Edit-a-thon
* [[outreach:GLAM/Newsletter/February 2026/Contents/New Zealand report|New Zealand report]]: Farewelling the Auckland Museum Summer Students and an update on the NZBSI WiR
* [[outreach:GLAM/Newsletter/February 2026/Contents/Poland report|Poland report]]: Wikipedia in Cultural Marketing at Crash Mondays Warsaw
* [[outreach:GLAM/Newsletter/February 2026/Contents/Serbia report|Serbia report]]: February in Wikimedia Serbia
* [[outreach:GLAM/Newsletter/February 2026/Contents/Spain report|Spain report]]: Wikidata in the GLAM context II
* [[outreach:GLAM/Newsletter/February 2026/Contents/Switzerland report|Switzerland report]]: Neocomensia, SAPA, Atelier Winterthur, GLAM-on-Tour Disentis
* [[outreach:GLAM/Newsletter/February 2026/Contents/UK report|UK report]]: New content in African and Asian languages
* [[outreach:GLAM/Newsletter/February 2026/Contents/Biodiversity Heritage Library report|Biodiversity Heritage Library report]]: Updates on work by BHLWiki Working Group members
* [[outreach:GLAM/Newsletter/February 2026/Contents/Memory of the World report|Memory of the World report]]: Focus on Indigenous issues
* [[outreach:GLAM/Newsletter/February 2026/Contents/Events|Calendar]]: March's GLAM events
</div>
|-
| style="font-family:Times New Roman; text-align:center; font-size:85%;" | [[outreach:GLAM/Newsletter|Read this edition in full]] • [[outreach:GLAM/Newsletter/February 2026/Single|Single-page]]
|-
| valign="top" colspan="2" style="padding:0.5em; font-family:Times New Roman;text-align:center; font-size:85%;" |
To assist with preparing the newsletter, please visit the [[outreach:GLAM/Newsletter/Newsroom|newsroom]]. Past editions may be viewed [[outreach:GLAM/Newsletter/Archives|here]].
|-
|}
|}
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[m:GLAM/Newsletter/About|About ''This Month in GLAM'']] · [[m:Global message delivery/Targets/GLAM|Subscribe/Unsubscribe]] · [[m:MassMessage|Global message delivery]] · [[:m:User:Romaine|Romaine]] 00h52min de 12 de Marsu de 2026 (UTC)</div>
<!-- Mensagem enviada por User:Romaine@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/GLAM&oldid=30232291 -->
== Request for Comment: VisualEditor automatic reference names ==
<div lang="en" dir="ltr">
Hi, I’m Johannes from [[:m:Wikimedia Deutschland|Wikimedia Deutschland]]’s [[:m:WMDE Technical Wishes|Technical Wishes team]]. Apologies for writing in English. {{Int:Please-translate}}! We are considering to work on [[:m:Community Wishlist/W17|Community Wishlist/W17: Improve VE references' automatic names and reuse]]. This has been a long-term issue for wikitext editors (see e.g. [[:en:WP:VisualEditor/Named references]]) which has been among the top-voted wishes in several [[:m:Community Wishlist Survey|Community Wishlist Surveys]], e.g. [[:m:Community Wishlist Survey 2017/Editing/VisualEditor: Allow editing of auto-generated references before adding them|2017]], [[:m:Community Wishlist Survey 2019/Citations/VisualEditor: Allow references to be named|2019]], [[:m:Community Wishlist Survey 2022/Editing/VisualEditor should use human-like names for references|2022]] or [[:m:Community Wishlist Survey 2023/Editing/VisualEditor should use proper names for references|2023]].
We would like your input on the [[:m:WMDE Technical Wishes/References/VisualEditor automatic reference names#Proposed solutions|solutions]] proposed on our project page: '''[[:m:WMDE Technical Wishes/References/VisualEditor automatic reference names]]'''. We are considering several options, which can be combined if desired by the community.
* Changing the default pattern for automatically generated reference names (currently <code>":n"</code>, e.g. <code>":0"</code>, <code>":1"</code>...) to use the [[:mw:Help:Reference Previews#Exposed reference types|reference type]] instead (e.g. <code>"book_reference-1"</code>).
* Providing a simple mechanism for communities to configure a different default name.
* Generating automatic reference names based on the [[:en:domain name|domain name]] (if it’s a web citation).
* Generating automatic reference names based on template parameters (e.g. "title" or "last"+"first") – defined by the community.
=== Feedback ===
[[:m:WMDE Technical Wishes/References/VisualEditor automatic reference names|Visit our project page]] to read about our proposal in detail and share your thoughts [[:m:Talk:WMDE Technical Wishes/References/VisualEditor automatic reference names#Request for comment|on metawiki]].
'''Please note''': We will only implement a solution if there’s clear consensus among the global community. Our intention is not to build the perfect solution, but to find a simple and lean one that alleviates the pain caused by auto generated names. We are aware that some experienced VisualEditor users might prefer an option to manually change reference names in VisualEditor, but such a UX intervention is difficult to achieve across reference types and thus out of scope for our team, we can only improve the auto-naming mechanism.
We are happy about suggestions for improving certain details of the proposed solutions. Any other feedback and alternative proposals are also welcome – even though it’s out of scope for us, it might still be relevant for future work on this topic.
Please support us interpreting consensus by clearly indicating your opinion (e.g. by using support/neutral/oppose templates). We are aware of [[:en:WP:NOTVOTE]], but given that we are facilitating this discussion with users from different wikis, potentially commenting in their native language, clearly indicating your position helps us avoid misunderstandings.
Thank you for participating!</div> <bdi lang="en" dir="ltr">[[User:Johannes Richter (WMDE)|Johannes Richter (WMDE)]] ([[User talk:Johannes Richter (WMDE)|diskusaun]])</bdi> 11h15min de 19 de Marsu de 2026 (UTC)
<!-- Mensagem enviada por User:Johannes Richter (WMDE)@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=User:Johannes_Richter_(WMDE)/MassMessageRecipients&oldid=30281362 -->
== ''The Signpost'': 31 March 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr" style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[File:WikipediaSignpostIcon.svg|40px|right]] ''News, reports and features from the English Wikipedia's newspaper''</div>
<div style="column-count:2;">
* News and notes: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/News and notes|Entirety of Wikinews to be shut down]]
* In the media: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/In the media|AI ban, newspapers disrupt archiving; and antisemitism complaints]]
* Community view: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/Community view|Videos from WikiConference North America 2025 in NYC]]
* Disinformation report: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/Disinformation report|Cleaning up after Jeffrey Epstein, Peter Nygard, and Mohamed Al-Fayed]]
* WikiConference report: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/WikiConference report|WikiConference North America 2025 in NYC review]]
* Obituary: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/Obituary|Dr. Subas Chandra Rout]]
* Traffic report: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/Traffic report|Call in the dogs of war, soldier of fortune]]
* Gallery: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/Gallery|Canadian Rangers participate in Operation ''Enduring Encyclopedia'']]
* Comix: [[w:en:Wikipedia:Wikipedia Signpost/2026-03-31/Comix|n00bsitting]]
</div>
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">'''[[w:en:Wikipedia:Wikipedia Signpost|Read this Signpost in full]]''' · [[w:en:Wikipedia:Signpost/Single|Single-page]] · [[m:Global message delivery/Targets/Signpost|Unsubscribe]] · [[m:Global message delivery|Global message delivery]] 10h08min de 31 de Marsu de 2026 (UTC)
<!-- Sent via script ([[w:en:User:JPxG/SPS]]) --></div>
<!-- Mensagem enviada por User:JPxG@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Signpost&oldid=30329870 -->
== Action Required: Update templates/modules for electoral maps (Migrating from P1846 to P14226) ==
Hello everyone,
This is a notice regarding an ongoing data migration on Wikidata that may affect your election-related templates and Lua modules (such as <code>Module:Itemgroup/list</code>).
'''The Change:'''<br />
Currently, many templates pull electoral maps from Wikidata using the property [[:d:Property:P1846|P1846]], combined with the qualifier [[:d:Property:P180|P180]]: [[:d:Q19571328|Q19571328]].
We are migrating this data (across roughly 4,000 items) to a newly created, dedicated property: '''[[:d:Property:P14226|P14226]]'''.
'''What You Need To Do:'''<br />
To ensure your templates and infoboxes do not break or lose their maps, please update your local code to fetch data from [[:d:Property:P14226|P14226]] instead of the old [[:d:Property:P1846|P1846]] + [[:d:Property:P180|P180]] structure. A [[m:Wikidata/Property Migration: P1846 to P14226/List|list of pages]] was generated using Wikimedia Global Search.
'''Deadline:'''<br />
We are temporarily retaining the old data on [[:d:Property:P1846|P1846]] to allow for a smooth transition. However, to complete the data cleanup on Wikidata, the old [[:d:Property:P1846|P1846]] statements will be removed after '''May 1, 2026'''. Please update your modules and templates before this date to prevent any disruption to your wiki's election articles.
Let us know if you have any questions or need assistance with the query logic. Thank you for your help! [[User:ZI Jony|ZI Jony]] using [[Uza-na'in:MediaWiki message delivery|MediaWiki message delivery]] ([[Diskusaun Uza-na'in:MediaWiki message delivery|discussão]]) 17h09min de 3 de Abríl de 2026 (UTC)
<!-- Mensagem enviada por User:ZI Jony@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Distribution_list/Technical_Village_Pumps_distribution_list&oldid=29905755 -->
== ''This Month in GLAM'': March 2026 ==
{| style="width:100%;"
| valign="top" align="center" style="border:1px gray solid; padding:1em;" |
{| align="center"
|-
| style="text-align: center;" | [[File:This Month in GLAM logo 2018.png|350px|center|link=outreach:GLAM/Newsletter]]<br />
<hr />
<div style="font-size:12pt; font-family:Times New Roman; text-align:center;">[[outreach:GLAM/Newsletter/March 2026|<span style="color:darkslategray;">This Month in GLAM – Volume XVI, Issue III, March 2026</span>]]</div>
<hr /><br />
|- style="text-align: center;"
| <span style="font-size:12pt; font-family:Times New Roman;"> '''<u>Headlines</u>'''</span>
|- style="font-size:10pt; font-family:Times New Roman; text-align:center;"
| <div style="text-align:left; column-count:2; column-width:28em; vertical-align:top;">
* [[outreach:GLAM/Newsletter/March 2026/Contents/From the team|From the team]]: GLAM in Equinox
* [[outreach:GLAM/Newsletter/March 2026/Contents/Albania report|Albania report]]: Wikigap 2026 in Tirana, Albania
* [[outreach:GLAM/Newsletter/March 2026/Contents/Aruba report|Aruba report]]: Celebrating 20 Years of Papiamentu/o Wikipedia
* [[outreach:GLAM/Newsletter/March 2026/Contents/Bolivia report|Bolivia report]]: The Family Treasures Project Returns, with New GLAM Partners
* [[outreach:GLAM/Newsletter/March 2026/Contents/Brazil report|Brazil report]]: Wiki Loves Folklore Brazil defines six categories to represent Brazilian culture on Commons
* [[outreach:GLAM/Newsletter/March 2026/Contents/Colombia report|Colombia report]]: Architecture in the public domain in libraries in Nariño/Arquitectura en dominio público en bibliotecas nariñenses
* [[outreach:GLAM/Newsletter/March 2026/Contents/Czech Republic report|Czech Republic report]]: Main Wikimedian in Residence report for 2025 is here
* [[outreach:GLAM/Newsletter/March 2026/Contents/Germany report|Germany report]]: Art History Loves Wiki 2026 – digital/local. collection loves wiki
* [[outreach:GLAM/Newsletter/March 2026/Contents/India report|India report]]: Collaboration resumes with the British Library for Bangla Wikisource
* [[outreach:GLAM/Newsletter/March 2026/Contents/Italy report|Italy report]]: 2026 winners projects
* [[outreach:GLAM/Newsletter/March 2026/Contents/New Zealand report|New Zealand report]]: New Zealand Bioeconomy Science Institute Wikimedian in Residence update, a letter published in Nature & Architecture + Women NZ
* [[outreach:GLAM/Newsletter/March 2026/Contents/Macedonia report|North Macedonia report]]: Wikimedia MKD's GLAM Highlights: Botany and Beyond
* [[outreach:GLAM/Newsletter/March 2026/Contents/Portugal report|Portugal report]]: March in Portugal
* [[outreach:GLAM/Newsletter/March 2026/Contents/Serbia report|Serbia report]]: March in Wikimedia Serbia
* [[outreach:GLAM/Newsletter/March 2026/Contents/Sweden report|Sweden report]]: Looking for similar images
* [[outreach:GLAM/Newsletter/March 2026/Contents/Switzerland report|Switzerland report]]: GLAM Wiki Group, Donna, CoCreation PTT-Archive
* [[outreach:GLAM/Newsletter/March 2026/Contents/UK report|UK report]]: CILIP MDG 2026 Conference, Library meetups and the World's Enamels
* [[outreach:GLAM/Newsletter/March 2026/Contents/Ukraine report|Ukraine report]]: Spring 2026 news from Ukraine – Wiki Loves Folklore & more #1Lib1Ref
* [[outreach:GLAM/Newsletter/March 2026/Contents/USA report|USA report]]: MoMA's International Traveling Exhibitions and Wikidata on the LD4 Arts Affinity Group April Community Call
* [[outreach:GLAM/Newsletter/March 2026/Contents/Biodiversity Heritage Library report|Biodiversity Heritage Library report]]: Updates on work by BHL-Wiki Working Group members
* [[outreach:GLAM/Newsletter/March 2026/Contents/AvoinGLAM report|AvoinGLAM report]]: Oulu Löyly
* [[outreach:GLAM/Newsletter/March 2026/Contents/Memory of the World report|Memory of the World report]]: Indigenous languages on the Main Page
* [[outreach:GLAM/Newsletter/March 2026/Contents/Events|Calendar]]: April's GLAM events
</div>
|-
| style="font-family:Times New Roman; text-align:center; font-size:85%;" | [[outreach:GLAM/Newsletter|Read this edition in full]] • [[outreach:GLAM/Newsletter/March 2026/Single|Single-page]]
|-
| valign="top" colspan="2" style="padding:0.5em; font-family:Times New Roman;text-align:center; font-size:85%;" |
To assist with preparing the newsletter, please visit the [[outreach:GLAM/Newsletter/Newsroom|newsroom]]. Past editions may be viewed [[outreach:GLAM/Newsletter/Archives|here]].
|-
|}
|}
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[m:GLAM/Newsletter/About|About ''This Month in GLAM'']] · [[m:Global message delivery/Targets/GLAM|Subscribe/Unsubscribe]] · [[m:MassMessage|Global message delivery]] · [[:m:User:Romaine|Romaine]] 18h19min de 9 de Abríl de 2026 (UTC)</div>
<!-- Mensagem enviada por User:Romaine@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/GLAM&oldid=30344683 -->
== ''The Signpost'': 21 April 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr" style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[File:WikipediaSignpostIcon.svg|40px|right]] ''News, reports and features from the English Wikipedia's newspaper''</div>
<div style="column-count:2;">
* News and notes: [[w:en:Wikipedia:Wikipedia Signpost/2026-04-21/News and notes|Six Serbian Wikipedia editors banned following controversy about political bias]]
* In the media: [[w:en:Wikipedia:Wikipedia Signpost/2026-04-21/In the media|Could Wikipedia be involved in Massachusetts' proposed social media ban for minors?]]
* Gallery: [[w:en:Wikipedia:Wikipedia Signpost/2026-04-21/Gallery|March equinox]]
* Traffic report: [[w:en:Wikipedia:Wikipedia Signpost/2026-04-21/Traffic report|Time to change my galaxy in case, we outta space!]]
* Comix: [[w:en:Wikipedia:Wikipedia Signpost/2026-04-21/Comix|Of skirts and articles]]
</div>
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">'''[[w:en:Wikipedia:Wikipedia Signpost|Read this Signpost in full]]''' · [[w:en:Wikipedia:Signpost/Single|Single-page]] · [[m:Global message delivery/Targets/Signpost|Unsubscribe]] · [[m:Global message delivery|Global message delivery]] 06h50min de 21 de Abríl de 2026 (UTC)
<!-- Sent via script ([[w:en:User:JPxG/SPS]]) --></div>
<!-- Mensagem enviada por User:JPxG@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Signpost&oldid=30434643 -->
== Request for comment (global AI policy) ==
<bdi lang="en" dir="ltr" class="mw-content-ltr">
Apologies for writing in English. {{int:Please-translate}}
A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}}
[[Uza-na'in:MediaWiki message delivery|MediaWiki message delivery]] ([[Diskusaun Uza-na'in:MediaWiki message delivery|discussão]]) 00h58min de 26 de Abríl de 2026 (UTC)
</bdi>
<!-- Mensagem enviada por User:Codename Noreste@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 -->
== ''This Month in GLAM'': April 2026 ==
{| style="width:100%;"
| valign="top" align="center" style="border:1px gray solid; padding:1em;" |
{| align="center"
|-
| style="text-align: center;" | [[File:This Month in GLAM logo 2018.png|350px|center|link=outreach:GLAM/Newsletter]]<br />
<hr />
<div style="font-size:12pt; font-family:Times New Roman; text-align:center;">[[outreach:GLAM/Newsletter/April 2026|<span style="color:darkslategray;">This Month in GLAM – Volume XVI, Issue IV, April 2026</span>]]</div>
<hr /><br />
|- style="text-align: center;"
| <span style="font-size:12pt; font-family:Times New Roman;"> '''<u>Headlines</u>'''</span>
|- style="font-size:10pt; font-family:Times New Roman; text-align:center;"
| <div style="text-align:left; column-count:2; column-width:28em; vertical-align:top;">
* [[outreach:GLAM/Newsletter/April 2026/Contents/From the team|From the team]]: How the GLAM Community Can Shine in the 2026–27 Annual Plan
* [[outreach:GLAM/Newsletter/April 2026/Contents/Albania report|Albania report]]: International Roma Day 2026 in Tirana, Albania
* [[outreach:GLAM/Newsletter/April 2026/Contents/Argentina report|Argentina report]]: WikiConf Argentina and GLAM projects
* [[outreach:GLAM/Newsletter/April 2026/Contents/Asia report|Asia report]]: Documenting and citing oral knowledge in audio and video
* [[outreach:GLAM/Newsletter/April 2026/Contents/Australia report|Australia report]]: WikiCon Australia, ICIP, Orphan works and Trans-Tasman partnerships
* [[outreach:GLAM/Newsletter/April 2026/Contents/Brazil report|Brazil report]]: Wikimedia Brasil publishes book on the power and challenges of free knowledge
* [[outreach:GLAM/Newsletter/April 2026/Contents/Colombia report|Colombia report]]: We celebrate Public Domain Day with an expert panel / Celebramos el día del dominio público con un Panel de expertas
* [[outreach:GLAM/Newsletter/April 2026/Contents/Italy report|Italy report]]: Ongoing and New GLAM-Wiki Projects
* [[outreach:GLAM/Newsletter/April 2026/Contents/New Zealand report|New Zealand report]]: Women in Wartime event at Auckland Museum & an update for WiR NZBSI
* [[outreach:GLAM/Newsletter/April 2026/Contents/Nigeria report|Nigeria report]]: Wikimedia Commons Upload Campaign
* [[outreach:GLAM/Newsletter/April 2026/Contents/Macedonia report|North Macedonia report]]: Wikimedia MKD in Action: Digitization, Wikisource and Educational Workshops
* [[outreach:GLAM/Newsletter/April 2026/Contents/Poland report|Poland report]]: GLAM-Wiki Developments: Residencies, Partnerships and Audiovisual Heritage
* [[outreach:GLAM/Newsletter/April 2026/Contents/Serbia report|Serbia report]]: April in Wikimedia Serbia
* [[outreach:GLAM/Newsletter/April 2026/Contents/Switzerland report|Switzerland report]]: Le Donne di Villa Massimo
* [[outreach:GLAM/Newsletter/April 2026/Contents/UK report|UK report]]: A tenth-century Quran and Islamic Art in Urdu
* [[outreach:GLAM/Newsletter/April 2026/Contents/USA report|USA report]]: Wiki MIT launches and US meetups
* [[outreach:GLAM/Newsletter/April 2026/Contents/Biodiversity Heritage Library report|Biodiversity Heritage Library report]]: Update on the BHL Annual Meeting 27 April - 1 May & BHL Day
* [[outreach:GLAM/Newsletter/April 2026/Contents/Memory of the World report|Memory of the World report]]: Eight new articles on MoW inscriptions
* [[outreach:GLAM/Newsletter/April 2026/Contents/Events|Calendar]]: May's GLAM events
</div>
|-
| style="font-family:Times New Roman; text-align:center; font-size:85%;" | [[outreach:GLAM/Newsletter|Read this edition in full]] • [[outreach:GLAM/Newsletter/April 2026/Single|Single-page]]
|-
| valign="top" colspan="2" style="padding:0.5em; font-family:Times New Roman;text-align:center; font-size:85%;" |
To assist with preparing the newsletter, please visit the [[outreach:GLAM/Newsletter/Newsroom|newsroom]]. Past editions may be viewed [[outreach:GLAM/Newsletter/Archives|here]].
|-
|}
|}
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[m:GLAM/Newsletter/About|About ''This Month in GLAM'']] · [[m:Global message delivery/Targets/GLAM|Subscribe/Unsubscribe]] · [[m:MassMessage|Global message delivery]] · [[:m:User:Romaine|Romaine]] 13h50min de 11 de Maiu de 2026 (UTC)</div>
<!-- Mensagem enviada por User:Romaine@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/GLAM&oldid=30513880 -->
== ''The Signpost'': 22 May 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr" style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[File:WikipediaSignpostIcon.svg|40px|right]] ''News, reports and features from the English Wikipedia's newspaper''</div>
<div style="column-count:2;">
* News and notes: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/News and notes|Offline: Osama Khalid still in prison]]
* In the media: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/In the media|Indonesian editors, you shall return!]]
* Disinformation report: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Disinformation report|Who is a typical paid editor? Who are their typical clients?]]
* Recent research: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Recent research|WikiLambda the Ultimate]]
* Traffic report: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Traffic report|This is where I'll be, so heavenly, so come and dance with me Michael!]]
* Forum: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Forum|WikiAnnotate: help us build a dataset of article quality evaluations]]
* In focus: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/In focus|Demystifying the 2026-27 Annual Plan]]
* Opinion: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Opinion|Wikipedia isn't a battleground. So why does it feel like one?]]
* Serendipity: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Serendipity|Wikinews: Into the Wikiverse]]
* Special report: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Special report|Wikimedia Foundation closes Wikinews after 21 years]]
* Community view: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Community view|Wikipedia's traffic drop: more on languages and freshness]]
* Gallery: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Gallery|Earth Day and Mother's Day]]
* Comix: [[w:en:Wikipedia:Wikipedia Signpost/2026-05-22/Comix|Brother, can you spare a page?]]
</div>
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">'''[[w:en:Wikipedia:Wikipedia Signpost|Read this Signpost in full]]''' · [[w:en:Wikipedia:Signpost/Single|Single-page]] · [[m:Global message delivery/Targets/Signpost|Unsubscribe]] · [[m:Global message delivery|Global message delivery]] 05h19min de 22 de Maiu de 2026 (UTC)
<!-- Sent via script ([[w:en:User:JPxG/SPS]]) --></div>
<!-- Mensagem enviada por User:Bri@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Signpost&oldid=30513885 -->
== <span lang="en" dir="ltr">Vote now in the 2026 U4C election</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
Eligible voters are asked to participate in the 2026 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|2026 Election information page]]. The vote closes on 2 June 2026 at [https://zonestamp.toolforge.org/1780358400 00:00 UTC].
Please vote if your account is eligible. Results will be available by 14 June 2026. -- In cooperation with the U4C,<section end="announcement-content" />
</div>
[[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 17h15min de 27 de Maiu de 2026 (UTC)
<!-- Mensagem enviada por User:Keegan (WMF)@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
<bdi lang="en" dir="ltr" class="mw-content-ltr">
== Survey (proposed direction for Wishlist) ==
Apologies if this has not yet been translated into your wiki's language. {{int:Please-translate}}.
You are invited to voice your opinion on a new [[m:Talk:Community Wishlist#Proposed direction for Wishlist|community-proposed direction]] for the [[m:Community Wishlist|Community Wishlist]]. {{Int:Feedback-thanks-title}} [[Uza-na'in:MediaWiki message delivery|MediaWiki message delivery]] ([[Diskusaun Uza-na'in:MediaWiki message delivery|discussão]]) 03h07min de 29 de Maiu de 2026 (UTC)
</bdi>
<!-- Mensagem enviada por User:기나ㅏㄴ@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=User:%EA%B8%B0%EB%82%98%E3%85%8F%E3%84%B4/MassMessage&oldid=30604233 -->
== ''This Month in GLAM'': May 2026 ==
{| style="width:100%;"
| valign="top" align="center" style="border:1px gray solid; padding:1em;" |
{| align="center"
|-
| style="text-align: center;" | [[File:This Month in GLAM logo 2018.png|350px|center|link=outreach:GLAM/Newsletter]]<br />
<hr />
<div style="font-size:12pt; font-family:Times New Roman; text-align:center;">[[outreach:GLAM/Newsletter/May 2026|<span style="color:darkslategray;">This Month in GLAM – Volume XVI, Issue V, May 2026</span>]]</div>
<hr /><br />
|- style="text-align: center;"
| <span style="font-size:12pt; font-family:Times New Roman;"> '''<u>Headlines</u>'''</span>
|- style="font-size:10pt; font-family:Times New Roman; text-align:center;"
| <div style="text-align:left; column-count:2; column-width:28em; vertical-align:top;">
* [[outreach:GLAM/Newsletter/May 2026/Contents/From the team|From the team]]: May Global GLAM Call Recording and June Call Announcement
* [[outreach:GLAM/Newsletter/May 2026/Contents/Australia report|Australia report]]: Celebrating #1Lib1Ref Australasia
* [[outreach:GLAM/Newsletter/May 2026/Contents/Brazil report|Brazil report]]: GLAM Connection: Fashion, History, and Biodiversity in May
* [[outreach:GLAM/Newsletter/May 2026/Contents/France report|France report]]: New Wikimedian in Residence
* [[outreach:GLAM/Newsletter/May 2026/Contents/Italy report|Italy report]]: Connecting the Arctic and Sicily through Wikimedia Projects
* [[outreach:GLAM/Newsletter/May 2026/Contents/Mexico report|Mexico report]]: How the cultural, governmental, educational, and museum sectors contributed in unison to Wikimedia projects
* [[outreach:GLAM/Newsletter/May 2026/Contents/Netherlands report|Netherlands report]]: Setting up your own platform (part 1): from wish to the creation of a wiki
* [[outreach:GLAM/Newsletter/May 2026/Contents/New Zealand report|New Zealand report]]: ESEAP Conference 2026 and the NZBSI WiR update
* [[outreach:GLAM/Newsletter/May 2026/Contents/Macedonia report|North Macedonia report]]: Wikimedia MKD Shares GLAM Experience at International Conferences
* [[outreach:GLAM/Newsletter/May 2026/Contents/Poland report|Poland report]]: Partnerships, Participation, and Open Knowledge
* [[outreach:GLAM/Newsletter/May 2026/Contents/Serbia report|Serbia report]]: May in Wikimedia Serbia
* [[outreach:GLAM/Newsletter/May 2026/Contents/Spain report|Spain report]]: El Prado en femenino III
* [[outreach:GLAM/Newsletter/May 2026/Contents/Switzerland report|Switzerland report]]: Museum for Communication, Panel IMD, Wikipedia Day
* [[outreach:GLAM/Newsletter/May 2026/Contents/UK report|UK report]]: Early Qurans on the front page of Wikipedia
* [[outreach:GLAM/Newsletter/May 2026/Contents/Biodiversity Heritage Library report|Biodiversity Heritage Library report]]: Updates on work by BHLWiki Working Group members
* [[outreach:GLAM/Newsletter/May 2026/Contents/Special story|Special story]]: New tools for multilingual audio, video and metadata
* [[outreach:GLAM/Newsletter/May 2026/Contents/Memory of the World report|Memory of the World report]]: New articles in Urdu
* [[outreach:GLAM/Newsletter/May 2026/Contents/Events|Calendar]]: June's GLAM events
</div>
|-
| style="font-family:Times New Roman; text-align:center; font-size:85%;" | [[outreach:GLAM/Newsletter|Read this edition in full]] • [[outreach:GLAM/Newsletter/May 2026/Single|Single-page]]
|-
| valign="top" colspan="2" style="padding:0.5em; font-family:Times New Roman;text-align:center; font-size:85%;" |
To assist with preparing the newsletter, please visit the [[outreach:GLAM/Newsletter/Newsroom|newsroom]]. Past editions may be viewed [[outreach:GLAM/Newsletter/Archives|here]].
|-
|}
|}
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[m:GLAM/Newsletter/About|About ''This Month in GLAM'']] · [[m:Global message delivery/Targets/GLAM|Subscribe/Unsubscribe]] · [[m:MassMessage|Global message delivery]] · [[:m:User:Romaine|Romaine]] 21h21min de 12 de Juñu de 2026 (UTC)</div>
<!-- Mensagem enviada por User:Romaine@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/GLAM&oldid=30636889 -->
== ''The Signpost'': 21 June 2026 ==
<div lang="en" dir="ltr" class="mw-content-ltr" style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[File:WikipediaSignpostIcon.svg|40px|right]] ''News, reports and features from the English Wikipedia's newspaper''</div>
<div style="column-count:2;">
* From the editors: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/From the editors|Ways for beginners to support ''The Signpost'' community journalism]]
* News and notes: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/News and notes|Community Tech development team disbanded]]
* Disinformation report: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Disinformation report|PR for the people?]]
* Recent research: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Recent research|Proposed tagging system for AI involvement; successful and unsuccessful AI tools for contributors]]
* In the media: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/In the media|Who won a 14th century battle and who won the 2026 Iran war?]]
* Community view: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Community view|Putting the Wish into the Wishlist]]
* In focus: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/In focus|A global standard for Neutral Point of View]]
* On the bright side: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/On the bright side|Flowers, blue helmets, reefs, pride, and Juneteenth]]
* Op-ed: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Op-ed|Breathe, Don’t Panic, there is a different story about Wikimedia + AI futures]]
* Opinion: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Opinion|Wikimedia Foundation staff develop union and Wikimedia user community reacts]]
* Technology report: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Technology report|Community Tech team is disbanded, controversy erupts]]
* Traffic report: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Traffic report|'Cause this is thriller, thriller night]]
* WikiConference report: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/WikiConference report|Report of Volunteer Supporters Network Annual Meeting 2026]]
* Comix: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Comix|Take your turn]]
* Humour: [[w:en:Wikipedia:Wikipedia Signpost/2026-06-21/Humour|Group of banned T-shirt makers comes out of hiding to sell new Wikipedia-themed merchandise]]
</div>
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">'''[[w:en:Wikipedia:Wikipedia Signpost|Read this Signpost in full]]''' · [[w:en:Wikipedia:Signpost/Single|Single-page]] · [[m:Global message delivery/Targets/Signpost|Unsubscribe]] · [[m:Global message delivery|Global message delivery]] 03h21min de 21 de Juñu de 2026 (UTC)
<!-- Sent via script ([[w:en:User:JPxG/SPS]]) --></div>
<!-- Mensagem enviada por User:Bri@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Signpost&oldid=30604303 -->
== RFC about AI-generated content in Wikimedia Commons ==
<bdi lang="en" dir="ltr">Apologies for writing in English, please help translate this message to your language. You are invited to participate in a [[c:Commons:Requests for comment/Policy update for AI content|request for comment on Wikimedia Commons about a policy update for AI content]]. This may affect files that are uploaded to Wikimedia Commons for use on this project. Thank you. [[m:User:Codename Noreste|Codename Noreste]] ([[m:User talk:Codename Noreste|diskusaun]])</bdi> 17h11min de 23 de Juñu de 2026 (UTC)
<!-- Mensagem enviada por User:Codename Noreste@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== <span lang="pt" dir="ltr">Implementação do link para contactos jurídicos e de segurança no rodapé do seu Wiki</span> ==
<div lang="pt" dir="ltr">
<section begin="Message"/>
'''Contactos jurídicos e de segurança'''
Olá, comunidade. A Fundação Wikimedia disponibilizou uma [[wmf:Special:MyLanguage/Legal:Wikimedia Foundation Legal and Safety Contact Information|página única de contacto jurídico e de segurança]], que deve ser incluída no rodapé da vossa wiki, para garantir o acesso a informações jurídicas precisas. Trata-se de um requisito regulamentar. Já implementámos ligações para as wikis em inglês, alemão, italiano, espanhol e outras Wikipedias, e iremos implementá-las na vossa wiki em breve. [[m:Special:MyLanguage/Wikimedia_Foundation_Legal_and_Safety_Contacts_FAQ|Por favor, leiam mais na página do projeto]] e deixem os vossos comentários neste tópico ou na [[m:Special:MyLanguage/Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|página de discussão]].
<section end="Message"/>
</div>
-- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 13h30min de 25 de Juñu de 2026 (UTC)
<!-- Mensagem enviada por User:Sannita (WMF)@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=30731267 -->
== ''This Month in GLAM'': June 2026 ==
{| style="width:100%;"
| valign="top" align="center" style="border:1px gray solid; padding:1em;" |
{| align="center"
|-
| style="text-align: center;" | [[File:This Month in GLAM logo 2018.png|350px|center|link=outreach:GLAM/Newsletter]]<br />
<hr />
<div style="font-size:12pt; font-family:Times New Roman; text-align:center;">[[outreach:GLAM/Newsletter/June 2026|<span style="color:darkslategray;">This Month in GLAM – Volume XVI, Issue VI, June 2026</span>]]</div>
<hr /><br />
|- style="text-align: center;"
| <span style="font-size:12pt; font-family:Times New Roman;"> '''<u>Headlines</u>'''</span>
|- style="font-size:10pt; font-family:Times New Roman; text-align:center;"
| <div style="text-align:left; column-count:2; column-width:28em; vertical-align:top;">
* [[outreach:GLAM/Newsletter/June 2026/Contents/From the team|From the team]]: Tools, tech, and Wikimania
* [[outreach:GLAM/Newsletter/June 2026/Contents/Argentina report|Argentina report]]: New digitization partner
* [[outreach:GLAM/Newsletter/June 2026/Contents/Bangladesh report|Bangladesh report]]: International Museum Day Edit-a-thon and Workshop held in Dinajpur, Bangladesh
* [[outreach:GLAM/Newsletter/June 2026/Contents/Belgium report|Belgium report]]: Postal Mission on Wikimedia
* [[outreach:GLAM/Newsletter/June 2026/Contents/Brazil report|Brazil report]]: Empowering Institutions through Wikisource Education and GLAM Capacity Building
* [[outreach:GLAM/Newsletter/June 2026/Contents/Czech Republic report|Czech Republic report]]: Bridging the gap between labs and Wikipedia: continuing cooperation with FZU
* [[outreach:GLAM/Newsletter/June 2026/Contents/Egypt report|Egypt report]]: From Museum Celebrations to Archival Documentation
* [[outreach:GLAM/Newsletter/June 2026/Contents/Finland report|Finland report]]: Northern Wikimedist meetup in Oulu
* [[outreach:GLAM/Newsletter/June 2026/Contents/France report|France report]]: #1lib1ref Recap and International Archives Week
* [[outreach:GLAM/Newsletter/June 2026/Contents/Italy report|Italy report]]: Heritage and Community Action
* [[outreach:GLAM/Newsletter/June 2026/Contents/Mexico report|Mexico report]]: Open GLAM in Puebla
* [[outreach:GLAM/Newsletter/June 2026/Contents/Netherlands report|Netherlands report]]: Interview with Olaf Janssen, Wikimedia coordinator of the KB, National library of the Netherlands
* [[outreach:GLAM/Newsletter/June 2026/Contents/New Zealand report|New Zealand report]]: BAU at Auckland Museum, Otago Uni Library Life and the NZBSI WiR is complete
* [[outreach:GLAM/Newsletter/June 2026/Contents/Macedonia report|North Macedonia report]]: Collaboration with the Botanical garden at the Faculty of Natural Sciences and Mathematics in Skopje
* [[outreach:GLAM/Newsletter/June 2026/Contents/Poland report|Poland report]]: Poland Report: New Partnerships, Conferences, and Wikimedians in Residence
* [[outreach:GLAM/Newsletter/June 2026/Contents/Serbia report|Serbia report]]: Opening the Doors of Serbian Heritage: Wikimedia Serbia’s Recent GLAM and Wikidata Successes
* [[outreach:GLAM/Newsletter/June 2026/Contents/Spain report|Spain report]]: GLAM Labs Futures 2026
* [[outreach:GLAM/Newsletter/June 2026/Contents/Sweden report|Sweden report]]: Finnish-Swedish cooperation
* [[outreach:GLAM/Newsletter/June 2026/Contents/Switzerland report|Switzerland report]]: Exhibition, International Archives Week Panel
* [[outreach:GLAM/Newsletter/June 2026/Contents/UK report|UK report]]: Ninth Good Article from Khalili partnership
* [[outreach:GLAM/Newsletter/June 2026/Contents/USA report|USA report]]: Philadelphia WikiSalon
* [[outreach:GLAM/Newsletter/June 2026/Contents/Biodiversity Heritage Library report|Biodiversity Heritage Library report]]: Updates on work by BHLWiki Working Group members
* [[outreach:GLAM/Newsletter/June 2026/Contents/AvoinGLAM report|AvoinGLAM report]]: Is the sauna still hot?
* [[outreach:GLAM/Newsletter/June 2026/Contents/Memory of the World report|Memory of the World report]]: New articles
* [[outreach:GLAM/Newsletter/June 2026/Contents/Events|Calendar]]: July's GLAM events
</div>
|-
| style="font-family:Times New Roman; text-align:center; font-size:85%;" | [[outreach:GLAM/Newsletter|Read this edition in full]] • [[outreach:GLAM/Newsletter/June 2026/Single|Single-page]]
|-
| valign="top" colspan="2" style="padding:0.5em; font-family:Times New Roman;text-align:center; font-size:85%;" |
To assist with preparing the newsletter, please visit the [[outreach:GLAM/Newsletter/Newsroom|newsroom]]. Past editions may be viewed [[outreach:GLAM/Newsletter/Archives|here]].
|-
|}
|}
<div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[m:GLAM/Newsletter/About|About ''This Month in GLAM'']] · [[m:Global message delivery/Targets/GLAM|Subscribe/Unsubscribe]] · [[m:MassMessage|Global message delivery]] · [[:m:User:Romaine|Romaine]] 22h35min de 11 de Jullu de 2026 (UTC)</div>
<!-- Mensagem enviada por User:Romaine@metawiki utilizando a lista em https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/GLAM&oldid=30773577 -->
r4psjpipfcshn2axm4osp61sdkhi8oz
Template:Wikidata image
10
7160
73888
2026-02-21T03:07:49Z
Hike395
11700
simplify template, add qid and cat parameters
73888
wikitext
text/x-wiki
{{#if:{{#if:{{{qid|}}}||{{NAMESPACE}}}}{{{1|}}}{{{2|}}}||{{#if:{{#property:P18|from={{{qid|}}}}}|[[Category:{{if empty|{{{cat|}}}|No local image but image on Wikidata}}]]}}}}<noinclude>
{{doc}}
</noinclude>
j4r2yjlq7u6k84f6tg284tlgziaz4wx
73889
70343
2026-07-11T18:59:03Z
Robertsky
10424
1 versaun husi [[:en:Template:Wikidata_image]]
70343
wikitext
text/x-wiki
{{#if:{{NAMESPACE}}||
{{#if:{{{1|}}}
| {{#if:{{#property:P18}}
| {{#ifeq:{{filepath:{{{1|}}} }}|{{filepath:{{#property:P18}} }}
| [[Categoria:!Imagem local idêntica à do Wikidata]]
| [[Categoria:!Imagem local diferente da no Wikidata]]
}}
| {{#if:{{#property:P41}}{{#property:P94}}{{#property:P117}}{{#property:P154}}{{#property:P242}}
|
| [[Categoria:!Artigos com imagem local porém sem imagem no Wikidata]]
}}
}}
| {{#if:{{#property:P18}}
| {{#if:{{{2|}}}
|
| [[Categoria:!Artigos sem imagem porém com imagem no Wikidata {{#if: {{{sufixo_catimg1|}}} |({{{sufixo_catimg1|}}}) }}]]
}}
| [[Categoria:!Artigos sem imagem tanto localmente quanto no Wikidata]]
}}
}}
}}<noinclude>
{{documentação}}
[[Categoria:!Wikidata]]
</noinclude>
7z74cglawwd993ln6g5y9ddr0pt4sr6
Módulo:Transclusion count/data/C
828
7696
74036
73240
2026-07-12T05:09:42Z
en>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
74036
Scribunto
text/plain
return {
["C"] = 793000,
["C-Class"] = 17000,
["C-SPAN"] = 13000,
["C-cmn"] = 2800,
["C-pl"] = 51000,
["C."] = 351000,
["CAN"] = 20000,
["CANelec"] = 18000,
["CANelec/gain"] = 3400,
["CANelec/hold"] = 6600,
["CANelec/source"] = 11000,
["CANelec/top"] = 8600,
["CANelec/total"] = 9300,
["CAS"] = 3800,
["CAS_Registry_Number"] = 3800,
["CBB_Yearly_Record_End"] = 3500,
["CBB_Yearly_Record_Entry"] = 3600,
["CBB_Yearly_Record_Start"] = 3400,
["CBB_Yearly_Record_Subhead"] = 4200,
["CBB_Yearly_Record_Subtotal"] = 3300,
["CBB_roster/Footer"] = 10000,
["CBB_roster/Header"] = 10000,
["CBB_roster/Player"] = 10000,
["CBB_schedule_end"] = 13000,
["CBB_schedule_entry"] = 13000,
["CBB_schedule_start"] = 13000,
["CBB_standings_end"] = 19000,
["CBB_standings_entry"] = 19000,
["CBB_standings_start"] = 19000,
["CBB_yearly_record_end"] = 4700,
["CBB_yearly_record_end/legend"] = 4100,
["CBB_yearly_record_entry"] = 4600,
["CBB_yearly_record_start"] = 4500,
["CBB_yearly_record_subhead"] = 4300,
["CBB_yearly_record_subtotal"] = 4400,
["CBSB_Standings_End"] = 2700,
["CBSB_Standings_Entry"] = 2700,
["CBSB_Standings_Start"] = 2600,
["CBSB_link"] = 4100,
["CBSB_standings_end"] = 5500,
["CBSB_standings_entry"] = 5500,
["CBSB_standings_start"] = 5500,
["CC0"] = 3900,
["CC_BY-SA_2.5"] = 2100,
["CC_BY-SA_2.5,_2.0,_1.0"] = 2100,
["CC_BY-SA_3.0"] = 21000,
["CC_BY-SA_3.0_migrated"] = 19000,
["CC_BY-SA_4.0"] = 13000,
["CC_BY_2.5"] = 2600,
["CC_BY_3.0"] = 7000,
["CFB_Standings_End"] = 16000,
["CFB_Standings_Entry"] = 16000,
["CFB_Standings_Start"] = 16000,
["CFB_Yearly_Record_End"] = 7900,
["CFB_Yearly_Record_End/legend"] = 2900,
["CFB_Yearly_Record_Entry"] = 7900,
["CFB_Yearly_Record_Start"] = 7900,
["CFB_Yearly_Record_Subhead"] = 8000,
["CFB_Yearly_Record_Subtotal"] = 7800,
["CFB_schedule"] = 29000,
["CFB_schedule_entry"] = 22000,
["CFB_standings_end"] = 39000,
["CFB_standings_entry"] = 39000,
["CFB_standings_start"] = 39000,
["CFL_Year"] = 7200,
["CGF_year"] = 3600,
["CGNDB_URL"] = 5400,
["CHE"] = 11000,
["CHI"] = 3300,
["CHL"] = 4200,
["CHN"] = 15000,
["CN"] = 4000,
["CO2"] = 3500,
["COI"] = 14000,
["COIUL"] = 131000,
["COI_editnotice"] = 7800,
["COL"] = 5600,
["COLON"] = 14000,
["CRI"] = 2300,
["CRO"] = 6500,
["CS1_config"] = 15000,
["CSK"] = 2800,
["CSS_image_crop"] = 9200,
["CUB"] = 4200,
["CURRENTDATE"] = 3600,
["CURRENTMINUTE"] = 2500,
["CYP"] = 2200,
["CZE"] = 16000,
["Calendar"] = 2500,
["Calendar/styles.css"] = 2800,
["California/color"] = 12000,
["Call_sign_disambiguation"] = 3100,
["Campaignbox"] = 26000,
["CanProvName"] = 19000,
["CanadaByProvinceCatNav"] = 9500,
["CanadaProvinceThe"] = 4500,
["Canada_NTS_Map_Sheet"] = 2100,
["Canada_by_province_category_navigation"] = 9900,
["Canadian_English"] = 13000,
["Canadian_Parliament_links"] = 5100,
["Canadian_election_result"] = 18000,
["Canadian_election_result/gain"] = 3600,
["Canadian_election_result/hold"] = 6900,
["Canadian_election_result/source"] = 12000,
["Canadian_election_result/top"] = 18000,
["Canadian_election_result/total"] = 14000,
["Canadian_party_colour"] = 11000,
["Canadian_party_colour/colour"] = 23000,
["Canadian_party_colour/colour/default"] = 22000,
["Canadian_party_colour/name"] = 19000,
["Canadian_party_colour/name/default"] = 8200,
["Canadian_province_name"] = 19000,
["Canned_search"] = 8200,
["Cascite"] = 17000,
["Caselaw_source"] = 4800,
["Cassini-Ehess"] = 3100,
["Cast_listing"] = 29000,
["Castlist"] = 5200,
["Cat"] = 462000,
["CatAutoTOC"] = 374000,
["CatRel"] = 4100,
["CatTrack"] = 20000,
["Cat_class"] = 6500,
["Cat_main"] = 149000,
["Cat_more"] = 103000,
["Cat_more_if_exists"] = 29000,
["Cat_see_also"] = 3800,
["Catalog_lookup_link"] = 60000,
["Catalog_of_Fishes"] = 9600,
["Catalogue_of_Life"] = 23000,
["Category"] = 2400,
["Category-Class"] = 14000,
["Category-inline"] = 11000,
["Category_TOC"] = 81000,
["Category_TOC/tracking"] = 81000,
["Category_U.S._State_elections_by_year"] = 7500,
["Category_U.S._State_elections_by_year/core"] = 7500,
["Category_class"] = 25000,
["Category_described_in_year"] = 6400,
["Category_diffuse"] = 11000,
["Category_disambiguation"] = 2700,
["Category_explanation"] = 415000,
["Category_handler"] = 2710000,
["Category_if_exists"] = 84000,
["Category_ifexist"] = 4900,
["Category_importance"] = 8900,
["Category_link"] = 680000,
["Category_link/core"] = 680000,
["Category_link_if_exists"] = 79000,
["Category_link_with_count"] = 9200,
["Category_link_without_namespace"] = 794000,
["Category_links"] = 9900,
["Category_main_article"] = 220000,
["Category_more"] = 143000,
["Category_more_if_exists"] = 49000,
["Category_ordered_by_date"] = 13000,
["Category_other"] = 1100000,
["Category_pair"] = 2100,
["Category_redirect"] = 158000,
["Category_redirect/core"] = 158000,
["Category_see_also"] = 55000,
["Category_see_also/Category_pair_check"] = 55000,
["Category_see_also_if_exists"] = 94000,
["Category_see_also_if_exists_2"] = 101000,
["Category_series_navigation"] = 597000,
["Category_title"] = 2400,
["Catexp"] = 5900,
["CathEncy"] = 2300,
["Catholic"] = 3700,
["Catholic_Encyclopedia"] = 5100,
["Catmain"] = 29000,
["Catmore"] = 9800,
["Catseealso"] = 2300,
["Cbb_link"] = 10000,
["Cbignore"] = 131000,
["Cbsb_link"] = 2500,
["Cc-by-2.5"] = 2600,
["Cc-by-3.0"] = 7000,
["Cc-by-sa-2.5"] = 2100,
["Cc-by-sa-2.5,2.0,1.0"] = 2100,
["Cc-by-sa-3.0"] = 20000,
["Cc-by-sa-3.0-migrated"] = 19000,
["Cc-by-sa-4.0"] = 13000,
["Cc-zero"] = 3800,
["CensusAU"] = 9100,
["Census_2016_AUS"] = 5700,
["Census_2021_AUS"] = 6200,
["Cent"] = 6800,
["Center"] = 299000,
["Centralized_discussion"] = 7200,
["Centralized_discussion/core"] = 7200,
["Centralized_discussion/styles.css"] = 7200,
["Centre"] = 4100,
["Century"] = 16000,
["Century_name_from_decade"] = 2400,
["Century_name_from_decade_or_year"] = 127000,
["Century_name_from_title_decade"] = 7600,
["Century_name_from_title_year"] = 9200,
["Certification_Cite_Ref"] = 38000,
["Certification_Table_Bottom"] = 37000,
["Certification_Table_Entry"] = 38000,
["Certification_Table_Entry/Foot"] = 37000,
["Certification_Table_Entry/Foot/helper"] = 37000,
["Certification_Table_Entry/MexicanAward"] = 2300,
["Certification_Table_Entry/Region"] = 38000,
["Certification_Table_Entry/Sales"] = 37000,
["Certification_Table_Entry/Sales/AustrianPeriod"] = 2400,
["Certification_Table_Entry/Sales/BelgianPeriod"] = 2400,
["Certification_Table_Entry/Sales/DanishPeriod"] = 4300,
["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 4300,
["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 4300,
["Certification_Table_Entry/Sales/FrenchPeriod"] = 2200,
["Certification_Table_Entry/Sales/FrenchPeriodAlbum"] = 2000,
["Certification_Table_Entry/Sales/GermanPeriod"] = 4100,
["Certification_Table_Entry/Sales/ItalianHelper"] = 4400,
["Certification_Table_Entry/Sales/MexicanSales"] = 2200,
["Certification_Table_Entry/Sales/NewZealandPeriod"] = 7700,
["Certification_Table_Entry/Sales/SpanishSinglesPeriod"] = 2800,
["Certification_Table_Entry/Sales/SwedishPeriod"] = 2300,
["Certification_Table_Separator"] = 3200,
["Certification_Table_Top"] = 39000,
["Cfb_link"] = 26000,
["Cfd_all"] = 3800,
["Chart_bottom"] = 4400,
["Chart_top"] = 4400,
["Check_completeness_of_transclusions"] = 64000,
["Check_talk"] = 63000,
["Check_talk_wp"] = 1450000,
["Check_winner_by_scores"] = 16000,
["CheckedSockpuppet"] = 7200,
["Checked_sockpuppet"] = 18000,
["Checkedsockpuppet"] = 5300,
["Checkip"] = 12000,
["Checkuser"] = 89000,
["Checkuserblock-account"] = 43000,
["Chem"] = 6100,
["Chem/atom"] = 6000,
["Chem/link"] = 6100,
["Chem2"] = 11000,
["Chem_molar_mass"] = 22000,
["Chem_molar_mass/format"] = 22000,
["Chembox"] = 16000,
["Chembox/styles.css"] = 16000,
["Chembox_3DMet"] = 15000,
["Chembox_AllOtherNames"] = 14000,
["Chembox_AllOtherNames/format"] = 14000,
["Chembox_Appearance"] = 7200,
["Chembox_BoilingPt"] = 4200,
["Chembox_CASNo"] = 15000,
["Chembox_CASNo/format"] = 15000,
["Chembox_CalcTemperatures"] = 7500,
["Chembox_ChEBI"] = 15000,
["Chembox_ChEBI/format"] = 15000,
["Chembox_ChEMBL"] = 15000,
["Chembox_ChEMBL/format"] = 15000,
["Chembox_ChemSpiderID"] = 15000,
["Chembox_ChemSpiderID/format"] = 15000,
["Chembox_CompTox"] = 15000,
["Chembox_CompTox/format"] = 15000,
["Chembox_Datapage_check"] = 16000,
["Chembox_Density"] = 5600,
["Chembox_DrugBank"] = 15000,
["Chembox_DrugBank/format"] = 15000,
["Chembox_ECHA"] = 8200,
["Chembox_ECNumber"] = 15000,
["Chembox_ECNumber/format"] = 15000,
["Chembox_Elements"] = 15000,
["Chembox_Elements/molecular_formula"] = 21000,
["Chembox_FlashPt"] = 2100,
["Chembox_Footer"] = 15000,
["Chembox_Footer/tracking"] = 15000,
["Chembox_GHS_(set)"] = 4500,
["Chembox_Hazards"] = 13000,
["Chembox_IUPHAR_ligand"] = 15000,
["Chembox_IUPHAR_ligand/format"] = 15000,
["Chembox_Identifiers"] = 15000,
["Chembox_InChI"] = 15000,
["Chembox_InChI/format"] = 15000,
["Chembox_Indexlist"] = 15000,
["Chembox_Jmol"] = 15000,
["Chembox_Jmol/format"] = 15000,
["Chembox_KEGG"] = 15000,
["Chembox_KEGG/format"] = 15000,
["Chembox_MeltingPt"] = 6600,
["Chembox_OtherCpds"] = 2100,
["Chembox_Properties"] = 15000,
["Chembox_PubChem"] = 15000,
["Chembox_PubChem/format"] = 15000,
["Chembox_RTECS"] = 15000,
["Chembox_RTECS/format"] = 15000,
["Chembox_Related"] = 4200,
["Chembox_SMILES"] = 15000,
["Chembox_SMILES/format"] = 15000,
["Chembox_SolubilityInWater"] = 4500,
["Chembox_Structure"] = 2400,
["Chembox_UNII"] = 15000,
["Chembox_UNII/format"] = 15000,
["Chembox_headerbar"] = 16000,
["Chembox_image"] = 14000,
["Chembox_image_cell"] = 14000,
["Chembox_image_sbs"] = 14000,
["Chembox_parametercheck"] = 15000,
["Chembox_setDatarow"] = 5400,
["Chembox_setHeader"] = 5400,
["Chembox_templatePar/formatPreviewMessage"] = 16000,
["Chembox_verification"] = 6900,
["Chemspidercite"] = 11000,
["Chessgames_player"] = 3800,
["Chinese"] = 3600,
["Circa"] = 466000,
["Circular_reference"] = 3900,
["Citation"] = 410000,
["Citation/make_link"] = 7800,
["Citation/styles.css"] = 52000,
["Citation_needed"] = 634000,
["Citation_needed_span"] = 3600,
["Citation_style"] = 4500,
["Cite_AV_media"] = 79000,
["Cite_AV_media_notes"] = 34000,
["Cite_Appletons'"] = 2400,
["Cite_Australian_Dictionary_of_Biography"] = 4900,
["Cite_Box_Office_Mojo"] = 2500,
["Cite_Catholic_Encyclopedia"] = 8600,
["Cite_DCB"] = 3300,
["Cite_DGRBM"] = 2200,
["Cite_DNB"] = 20000,
["Cite_EB1911"] = 26000,
["Cite_FTP"] = 2500,
["Cite_GBIF"] = 4300,
["Cite_GNIS"] = 2400,
["Cite_Gaia_DR3"] = 3100,
["Cite_Google_Maps"] = 20000,
["Cite_Hansard"] = 2700,
["Cite_IUCN"] = 70000,
["Cite_Instagram"] = 7100,
["Cite_Jewish_Encyclopedia"] = 3200,
["Cite_LCDB"] = 2000,
["Cite_Metacritic"] = 2300,
["Cite_NIE"] = 3500,
["Cite_NSW_Parliament"] = 3300,
["Cite_NSW_SHR"] = 2700,
["Cite_NatureServe"] = 2800,
["Cite_ODNB"] = 22000,
["Cite_OED"] = 2500,
["Cite_POWO"] = 5900,
["Cite_Q"] = 17000,
["Cite_QHR"] = 3100,
["Cite_QPN"] = 4100,
["Cite_Rotten_Tomatoes"] = 2800,
["Cite_Rowlett"] = 2500,
["Cite_Russian_law"] = 7800,
["Cite_Ryan"] = 3300,
["Cite_Sports-Reference"] = 55000,
["Cite_USGov"] = 13000,
["Cite_WoRMS"] = 13000,
["Cite_act"] = 3900,
["Cite_arXiv"] = 6900,
["Cite_bcgnis"] = 3700,
["Cite_book"] = 1900000,
["Cite_certification"] = 43000,
["Cite_certification/Title"] = 39000,
["Cite_certification/URL"] = 43000,
["Cite_certification/archivedate"] = 7600,
["Cite_certification/archiveurl"] = 7600,
["Cite_cgndb"] = 5300,
["Cite_comic"] = 2100,
["Cite_conference"] = 22000,
["Cite_court"] = 6700,
["Cite_dictionary"] = 3500,
["Cite_document"] = 2000,
["Cite_encyclopedia"] = 242000,
["Cite_episode"] = 19000,
["Cite_gnis"] = 35000,
["Cite_instagram"] = 3000,
["Cite_interview"] = 11000,
["Cite_iucn"] = 69000,
["Cite_journal"] = 1170000,
["Cite_legislation_UK"] = 3500,
["Cite_magazine"] = 378000,
["Cite_map"] = 60000,
["Cite_news"] = 1910000,
["Cite_newspaper_The_Times"] = 7200,
["Cite_patent"] = 7200,
["Cite_patent/authors"] = 6000,
["Cite_patent/core"] = 7500,
["Cite_peakbagger"] = 5300,
["Cite_podcast"] = 6100,
["Cite_press_release"] = 85000,
["Cite_report"] = 74000,
["Cite_rowlett"] = 2500,
["Cite_ship_register"] = 2000,
["Cite_simbad"] = 5600,
["Cite_sports-reference"] = 59000,
["Cite_taxon"] = 5300,
["Cite_tech_report"] = 3000,
["Cite_thesis"] = 49000,
["Cite_tweet"] = 48000,
["Cite_video"] = 13000,
["Cite_video_game"] = 3400,
["Cite_web"] = 5390000,
["Cite_wikisource"] = 7000,
["Cite_wikisource/make_link"] = 65000,
["Citeweb"] = 3600,
["Civil_navigation"] = 2200,
["Cjersey"] = 3000,
["Cl"] = 215000,
["Clade"] = 10000,
["Clade/styles.css"] = 10000,
["Clarification_needed"] = 2500,
["Clarify"] = 45000,
["Class"] = 39000,
["Class/colour"] = 19000,
["Class/icon"] = 21000,
["Class_mask"] = 457000,
["Classicon"] = 5200,
["Clc"] = 7500,
["Cleanup"] = 8800,
["Cleanup_reorganize"] = 2300,
["Cleanup_rewrite"] = 6900,
["Clear"] = 3750000,
["Clear_left"] = 28000,
["Clear_right"] = 2800,
["Clerk_Request"] = 2500,
["Clerk_note"] = 11000,
["Clerknote"] = 8600,
["Clickable_button"] = 1880000,
["Clickable_button_2"] = 228000,
["Closed_access"] = 5500,
["Closed_peer_review_page"] = 3100,
["Closed_rfc_bottom"] = 2200,
["Closed_rfc_top"] = 2800,
["Clr"] = 3100,
["Club_players_category"] = 9400,
["Clubplayerscat"] = 9400,
["Cmbox"] = 530000,
["Cn"] = 113000,
["Cnote2"] = 2900,
["Cnote2_Begin"] = 2900,
["Cnote2_End"] = 2900,
["Coat_of_arms"] = 2500,
["Cob"] = 15000,
["Code"] = 83000,
["Cof_family"] = 4500,
["Cof_genus"] = 5200,
["Col-1-of-2"] = 2400,
["Col-2"] = 186000,
["Col-2-of-2"] = 2300,
["Col-3"] = 11000,
["Col-4"] = 3800,
["Col-begin"] = 231000,
["Col-begin/styles.css"] = 231000,
["Col-break"] = 229000,
["Col-end"] = 230000,
["Col-float"] = 4800,
["Col-float-break"] = 4700,
["Col-float-end"] = 4800,
["Col-float/styles.css"] = 4800,
["Col-start"] = 10000,
["Col_div"] = 2200,
["Colbegin"] = 24000,
["Colend"] = 27000,
["Collapse"] = 8800,
["Collapse_bottom"] = 56000,
["Collapse_top"] = 56000,
["Collapse_top/styles.css"] = 56000,
["Collapsebottom"] = 4000,
["Collapsed_infobox_section_begin"] = 4300,
["Collapsed_infobox_section_end"] = 4300,
["Collapsetop"] = 4100,
["Collapsible_list"] = 68000,
["Collapsible_option"] = 151000,
["Colledge:_Ships_RN"] = 3000,
["College"] = 12000,
["CollegePrimaryHeader"] = 8200,
["CollegePrimaryStyle"] = 111000,
["CollegeSecondaryStyle"] = 11000,
["College_Athlete_Recruit_End"] = 2800,
["College_Athlete_Recruit_Entry"] = 2900,
["College_Athlete_Recruit_Start"] = 2900,
["College_athlete_recruit_end"] = 4900,
["College_athlete_recruit_entry"] = 5100,
["College_athlete_recruit_start"] = 5100,
["College_color_list"] = 4400,
["College_sports_team_link"] = 31000,
["Colon"] = 20000,
["Color"] = 505000,
["Color/styles.css"] = 505000,
["Color_box"] = 86000,
["Colorbox"] = 2600,
["Colorbull"] = 4600,
["Colored_link"] = 102000,
["Coloredlink"] = 2800,
["Colors"] = 3600,
["Colour"] = 5500,
["Colour_box"] = 2500,
["Coloured_link"] = 12000,
["Column"] = 4300,
["Column/styles.css"] = 4300,
["Columns-end"] = 4000,
["Columns-list"] = 125000,
["Columns-start"] = 4000,
["Comic_Book_DB"] = 3500,
["Comicbookdb"] = 3400,
["Comics-replaceability"] = 2800,
["Comics_infobox_sec/formcat"] = 3400,
["Comics_infobox_sec/genre"] = 4200,
["Comics_infobox_sec/genrecat"] = 3800,
["Comics_infobox_sec/styles.css"] = 8100,
["Comma_separated_entries"] = 520000,
["Comment"] = 7500,
["Committed_identity"] = 3200,
["Committed_identity/styles.css"] = 3200,
["Commons"] = 73000,
["Commons-inline"] = 25000,
["Commons_cat"] = 45000,
["Commons_category"] = 903000,
["Commons_category-inline"] = 177000,
["Commons_category_inline"] = 5700,
["Commonscat"] = 60000,
["Commonscat-inline"] = 15000,
["Commonscat_inline"] = 2300,
["Commonscatinline"] = 7300,
["Compact_TOC"] = 7300,
["Compact_ToC"] = 3200,
["Compose_molecular_formula"] = 2300,
["Composition_bar"] = 13000,
["Confirmed"] = 20000,
["Confused"] = 3200,
["Confusing"] = 2400,
["CongBio"] = 9400,
["CongLinks"] = 4800,
["Connected_contributor"] = 21000,
["Connected_contributor_(paid)"] = 9800,
["Constellation_navbox"] = 9900,
["Container"] = 14000,
["Container_cat"] = 9100,
["Container_category"] = 85000,
["Containercat"] = 2800,
["Contains_special_characters"] = 5200,
["Contains_special_characters/core"] = 5200,
["Contains_special_characters/styles.css"] = 5200,
["Content_category"] = 7900,
["Contentious_topics/Additional_restrictions.json"] = 21000,
["Contentious_topics/Arab-Israeli_editnotice"] = 6800,
["Contentious_topics/Arab-Israeli_talk_notice"] = 6100,
["Contentious_topics/Category_database.json"] = 21000,
["Contentious_topics/Restrictions_definition.json"] = 21000,
["Contentious_topics/Standard_set.json"] = 21000,
["Contentious_topics/list"] = 29000,
["Contentious_topics/page_restriction_editnotice_base"] = 7300,
["Contentious_topics/page_restriction_talk_notice"] = 2600,
["Contentious_topics/talk_notice"] = 21000,
["Context"] = 2600,
["Continent2continental"] = 45000,
["Continent_adjective_to_noun"] = 10000,
["Continental2continent"] = 22000,
["Controversial"] = 3000,
["Convert"] = 1410000,
["Convert_abbreviated"] = 167000,
["Convinfobox"] = 301000,
["Coord"] = 1400000,
["Coord_missing"] = 70000,
["Coord_missing/CheckCat"] = 70000,
["Coords"] = 6700,
["Copied"] = 22000,
["Copy_edit"] = 2100,
["Copy_to_Wikimedia_Commons"] = 85000,
["Copy_to_Wikimedia_Commons_in"] = 4100,
["Copyvios"] = 5400,
["Cospar"] = 2800,
["Cot"] = 14000,
["Count"] = 973000,
["Country2continent"] = 89000,
["Country2continental"] = 31000,
["Country2nationality"] = 35000,
["CountryPrefixThe"] = 82000,
["Country_abbreviation"] = 94000,
["Country_alias"] = 17000,
["Country_at_games_navbox"] = 5800,
["Country_at_games_navbox/below"] = 5800,
["Country_data"] = 12000,
["Country_data_AFG"] = 2600,
["Country_data_ALB"] = 7200,
["Country_data_ALG"] = 11000,
["Country_data_AND"] = 3600,
["Country_data_ANG"] = 4400,
["Country_data_ARG"] = 53000,
["Country_data_ARM"] = 8300,
["Country_data_AUS"] = 88000,
["Country_data_AUT"] = 52000,
["Country_data_AZE"] = 11000,
["Country_data_Afghanistan"] = 22000,
["Country_data_Alabama"] = 2600,
["Country_data_Alaska"] = 2100,
["Country_data_Albania"] = 36000,
["Country_data_Alberta"] = 3100,
["Country_data_Algeria"] = 48000,
["Country_data_American_Samoa"] = 2900,
["Country_data_Andorra"] = 9200,
["Country_data_Angola"] = 21000,
["Country_data_Anguilla"] = 2400,
["Country_data_Antigua_and_Barbuda"] = 6400,
["Country_data_Apulia"] = 7900,
["Country_data_Argentina"] = 155000,
["Country_data_Arizona"] = 2500,
["Country_data_Arkansas"] = 2800,
["Country_data_Armenia"] = 48000,
["Country_data_Aruba"] = 4000,
["Country_data_Australia"] = 279000,
["Country_data_Austria"] = 149000,
["Country_data_Austria-Hungary"] = 2300,
["Country_data_Azerbaijan"] = 52000,
["Country_data_BAH"] = 4600,
["Country_data_BAN"] = 4400,
["Country_data_BAR"] = 2700,
["Country_data_BDI"] = 2000,
["Country_data_BEL"] = 60000,
["Country_data_BER"] = 2500,
["Country_data_BFA"] = 2000,
["Country_data_BHR"] = 5800,
["Country_data_BIH"] = 14000,
["Country_data_BLR"] = 26000,
["Country_data_BOL"] = 6600,
["Country_data_BOT"] = 3100,
["Country_data_BRA"] = 64000,
["Country_data_BUL"] = 31000,
["Country_data_Bahamas"] = 11000,
["Country_data_Bahrain"] = 22000,
["Country_data_Bangladesh"] = 35000,
["Country_data_Barbados"] = 8700,
["Country_data_Belarus"] = 92000,
["Country_data_Belgium"] = 161000,
["Country_data_Belize"] = 5100,
["Country_data_Benin"] = 8000,
["Country_data_Bermuda"] = 6400,
["Country_data_Bhutan"] = 4900,
["Country_data_Bolivia"] = 24000,
["Country_data_Bosnia_and_Herzegovina"] = 54000,
["Country_data_Botswana"] = 10000,
["Country_data_Brazil"] = 173000,
["Country_data_British_Columbia"] = 3400,
["Country_data_British_Empire"] = 2000,
["Country_data_British_Raj"] = 2500,
["Country_data_British_Virgin_Islands"] = 3300,
["Country_data_Brunei"] = 6900,
["Country_data_Bulgaria"] = 103000,
["Country_data_Burkina_Faso"] = 11000,
["Country_data_Burma"] = 2300,
["Country_data_Burundi"] = 6800,
["Country_data_CAM"] = 2500,
["Country_data_CAN"] = 68000,
["Country_data_CGO"] = 2500,
["Country_data_CHE"] = 5900,
["Country_data_CHI"] = 19000,
["Country_data_CHL"] = 2300,
["Country_data_CHN"] = 49000,
["Country_data_CIV"] = 8600,
["Country_data_CMR"] = 8800,
["Country_data_COD"] = 3500,
["Country_data_COL"] = 28000,
["Country_data_CPV"] = 2300,
["Country_data_CRC"] = 6900,
["Country_data_CRO"] = 37000,
["Country_data_CUB"] = 13000,
["Country_data_CYP"] = 10000,
["Country_data_CZE"] = 54000,
["Country_data_California"] = 6200,
["Country_data_Cambodia"] = 9900,
["Country_data_Cameroon"] = 32000,
["Country_data_Canada"] = 267000,
["Country_data_Cape_Verde"] = 7000,
["Country_data_Castile_and_León"] = 2000,
["Country_data_Catalonia"] = 3500,
["Country_data_Cayman_Islands"] = 4600,
["Country_data_Central_African_Republic"] = 5100,
["Country_data_Chad"] = 5400,
["Country_data_Chile"] = 92000,
["Country_data_China"] = 154000,
["Country_data_Chinese_Taipei"] = 39000,
["Country_data_Colombia"] = 97000,
["Country_data_Colorado"] = 5300,
["Country_data_Commonwealth_of_Independent_States"] = 2200,
["Country_data_Comoros"] = 4700,
["Country_data_Confederate_States_of_America"] = 3100,
["Country_data_Connecticut"] = 3400,
["Country_data_Cook_Islands"] = 3800,
["Country_data_Costa_Rica"] = 34000,
["Country_data_Croatia"] = 106000,
["Country_data_Cuba"] = 47000,
["Country_data_Curaçao"] = 4400,
["Country_data_Cyprus"] = 48000,
["Country_data_Czech_Republic"] = 156000,
["Country_data_Czechoslovakia"] = 35000,
["Country_data_DEN"] = 40000,
["Country_data_DEU"] = 10000,
["Country_data_DNK"] = 4400,
["Country_data_DOM"] = 8400,
["Country_data_DRC"] = 2000,
["Country_data_Delaware"] = 2700,
["Country_data_Democratic_Republic_of_the_Congo"] = 23000,
["Country_data_Denmark"] = 122000,
["Country_data_Djibouti"] = 4900,
["Country_data_Dominica"] = 4200,
["Country_data_Dominican_Republic"] = 35000,
["Country_data_ECU"] = 13000,
["Country_data_EGY"] = 16000,
["Country_data_ENG"] = 52000,
["Country_data_ESA"] = 2500,
["Country_data_ESP"] = 84000,
["Country_data_EST"] = 17000,
["Country_data_ETH"] = 4500,
["Country_data_EU"] = 2600,
["Country_data_East_Germany"] = 29000,
["Country_data_Ecuador"] = 50000,
["Country_data_Egypt"] = 67000,
["Country_data_El_Salvador"] = 23000,
["Country_data_Empire_of_Japan"] = 4400,
["Country_data_England"] = 166000,
["Country_data_Equatorial_Guinea"] = 5500,
["Country_data_Eritrea"] = 5500,
["Country_data_Estonia"] = 70000,
["Country_data_Eswatini"] = 5000,
["Country_data_Ethiopia"] = 22000,
["Country_data_Europe"] = 2800,
["Country_data_European_Union"] = 8100,
["Country_data_FIJ"] = 4500,
["Country_data_FIN"] = 40000,
["Country_data_FRA"] = 114000,
["Country_data_FRG"] = 18000,
["Country_data_FRO"] = 2200,
["Country_data_FR_Yugoslavia"] = 4400,
["Country_data_Faroe_Islands"] = 5700,
["Country_data_Federated_States_of_Micronesia"] = 2700,
["Country_data_Fiji"] = 22000,
["Country_data_Finland"] = 115000,
["Country_data_Florida"] = 5800,
["Country_data_France"] = 327000,
["Country_data_French_Polynesia"] = 3900,
["Country_data_GAB"] = 2500,
["Country_data_GAM"] = 2300,
["Country_data_GBR"] = 67000,
["Country_data_GDR"] = 11000,
["Country_data_GEO"] = 16000,
["Country_data_GER"] = 95000,
["Country_data_GHA"] = 10000,
["Country_data_GIB"] = 2100,
["Country_data_GRE"] = 29000,
["Country_data_GUA"] = 5300,
["Country_data_GUI"] = 3400,
["Country_data_GUY"] = 2500,
["Country_data_Gabon"] = 8100,
["Country_data_Gambia"] = 7600,
["Country_data_Georgia"] = 8600,
["Country_data_Georgia_(U.S._state)"] = 3200,
["Country_data_Georgia_(country)"] = 55000,
["Country_data_German_Empire"] = 5700,
["Country_data_Germany"] = 296000,
["Country_data_Ghana"] = 47000,
["Country_data_Gibraltar"] = 5100,
["Country_data_Great_Britain"] = 130000,
["Country_data_Greece"] = 107000,
["Country_data_Greenland"] = 2800,
["Country_data_Grenada"] = 5700,
["Country_data_Guadeloupe"] = 2800,
["Country_data_Guam"] = 4600,
["Country_data_Guatemala"] = 22000,
["Country_data_Guinea"] = 9300,
["Country_data_Guinea-Bissau"] = 5400,
["Country_data_Guyana"] = 7700,
["Country_data_HAI"] = 3300,
["Country_data_HKG"] = 15000,
["Country_data_HON"] = 4400,
["Country_data_HUN"] = 44000,
["Country_data_Haiti"] = 9700,
["Country_data_Hawaii"] = 2200,
["Country_data_Honduras"] = 22000,
["Country_data_Hong_Kong"] = 52000,
["Country_data_Hungary"] = 116000,
["Country_data_IDN"] = 5700,
["Country_data_INA"] = 12000,
["Country_data_IND"] = 34000,
["Country_data_IRE"] = 12000,
["Country_data_IRI"] = 6700,
["Country_data_IRL"] = 24000,
["Country_data_IRN"] = 7300,
["Country_data_IRQ"] = 4800,
["Country_data_ISL"] = 9200,
["Country_data_ISR"] = 23000,
["Country_data_ITA"] = 101000,
["Country_data_Iceland"] = 48000,
["Country_data_Idaho"] = 2200,
["Country_data_Illinois"] = 4500,
["Country_data_India"] = 264000,
["Country_data_Indiana"] = 3300,
["Country_data_Indonesia"] = 73000,
["Country_data_Iowa"] = 2400,
["Country_data_Iran"] = 165000,
["Country_data_Iraq"] = 23000,
["Country_data_Ireland"] = 68000,
["Country_data_Isle_of_Man"] = 2800,
["Country_data_Israel"] = 95000,
["Country_data_Italy"] = 292000,
["Country_data_Ivory_Coast"] = 34000,
["Country_data_JAM"] = 12000,
["Country_data_JAP"] = 2200,
["Country_data_JOR"] = 4800,
["Country_data_JP"] = 8600,
["Country_data_JPN"] = 68000,
["Country_data_Jamaica"] = 46000,
["Country_data_Japan"] = 269000,
["Country_data_Jersey"] = 2500,
["Country_data_Jordan"] = 22000,
["Country_data_KAZ"] = 24000,
["Country_data_KEN"] = 10000,
["Country_data_KGZ"] = 4500,
["Country_data_KOR"] = 35000,
["Country_data_KOS"] = 3100,
["Country_data_KSA"] = 7500,
["Country_data_KUW"] = 4600,
["Country_data_Kazakhstan"] = 70000,
["Country_data_Kentucky"] = 2000,
["Country_data_Kenya"] = 35000,
["Country_data_Kingdom_of_France"] = 2200,
["Country_data_Kingdom_of_Great_Britain"] = 4600,
["Country_data_Kingdom_of_Italy"] = 4800,
["Country_data_Kiribati"] = 2600,
["Country_data_Kosovo"] = 10000,
["Country_data_Kuwait"] = 21000,
["Country_data_Kyrgyzstan"] = 11000,
["Country_data_LAO"] = 2200,
["Country_data_LAT"] = 17000,
["Country_data_LBN"] = 2900,
["Country_data_LBR"] = 2000,
["Country_data_LIB"] = 2600,
["Country_data_LIE"] = 3800,
["Country_data_LIT"] = 3700,
["Country_data_LTU"] = 14000,
["Country_data_LUX"] = 12000,
["Country_data_LVA"] = 3000,
["Country_data_Laos"] = 8000,
["Country_data_Latvia"] = 56000,
["Country_data_Lebanon"] = 24000,
["Country_data_Lesotho"] = 5400,
["Country_data_Liberia"] = 7900,
["Country_data_Libya"] = 9100,
["Country_data_Liechtenstein"] = 8900,
["Country_data_Lithuania"] = 55000,
["Country_data_Louisiana"] = 2300,
["Country_data_Luxembourg"] = 50000,
["Country_data_MAC"] = 2900,
["Country_data_MAD"] = 2400,
["Country_data_MAR"] = 15000,
["Country_data_MAS"] = 13000,
["Country_data_MDA"] = 8800,
["Country_data_MEX"] = 35000,
["Country_data_MGL"] = 3500,
["Country_data_MKD"] = 8500,
["Country_data_MLI"] = 4600,
["Country_data_MLT"] = 6400,
["Country_data_MNE"] = 8600,
["Country_data_MON"] = 4700,
["Country_data_MOZ"] = 2600,
["Country_data_MRI"] = 2200,
["Country_data_MYA"] = 3400,
["Country_data_MYS"] = 4200,
["Country_data_Macau"] = 6800,
["Country_data_Macedonia"] = 4700,
["Country_data_Madagascar"] = 9600,
["Country_data_Malawi"] = 6100,
["Country_data_Malaysia"] = 73000,
["Country_data_Maldives"] = 6700,
["Country_data_Mali"] = 22000,
["Country_data_Malta"] = 33000,
["Country_data_Manitoba"] = 2800,
["Country_data_Marshall_Islands"] = 3400,
["Country_data_Martinique"] = 2900,
["Country_data_Maryland"] = 3300,
["Country_data_Massachusetts"] = 2600,
["Country_data_Mauritania"] = 6000,
["Country_data_Mauritius"] = 8400,
["Country_data_Mexico"] = 116000,
["Country_data_Michigan"] = 3800,
["Country_data_Minas_Gerais"] = 2100,
["Country_data_Minnesota"] = 3700,
["Country_data_Missouri"] = 2500,
["Country_data_Moldova"] = 35000,
["Country_data_Monaco"] = 12000,
["Country_data_Mongolia"] = 11000,
["Country_data_Montana"] = 2400,
["Country_data_Montenegro"] = 34000,
["Country_data_Montserrat"] = 2400,
["Country_data_Morocco"] = 52000,
["Country_data_Mozambique"] = 7900,
["Country_data_Myanmar"] = 24000,
["Country_data_NAM"] = 3900,
["Country_data_NED"] = 72000,
["Country_data_NEP"] = 3300,
["Country_data_NGA"] = 8600,
["Country_data_NGR"] = 9200,
["Country_data_NIR"] = 11000,
["Country_data_NLD"] = 7400,
["Country_data_NOR"] = 35000,
["Country_data_NZ"] = 3600,
["Country_data_NZL"] = 38000,
["Country_data_Namibia"] = 11000,
["Country_data_Nauru"] = 2500,
["Country_data_Nazi_Germany"] = 10000,
["Country_data_Nepal"] = 33000,
["Country_data_Netherlands"] = 266000,
["Country_data_Netherlands_Antilles"] = 2400,
["Country_data_Nevada"] = 2100,
["Country_data_New_Brunswick"] = 2600,
["Country_data_New_Caledonia"] = 3300,
["Country_data_New_Hampshire"] = 2000,
["Country_data_New_Jersey"] = 4200,
["Country_data_New_South_Wales"] = 6400,
["Country_data_New_York"] = 4300,
["Country_data_New_York_(state)"] = 6800,
["Country_data_New_Zealand"] = 121000,
["Country_data_Newfoundland_and_Labrador"] = 2700,
["Country_data_Nicaragua"] = 8900,
["Country_data_Niger"] = 6200,
["Country_data_Nigeria"] = 67000,
["Country_data_North_Carolina"] = 3500,
["Country_data_North_Korea"] = 23000,
["Country_data_North_Macedonia"] = 34000,
["Country_data_Northern_Ireland"] = 28000,
["Country_data_Northern_Mariana_Islands"] = 2800,
["Country_data_Norway"] = 119000,
["Country_data_Nova_Scotia"] = 2500,
["Country_data_OMA"] = 3200,
["Country_data_Ohio"] = 5800,
["Country_data_Oklahoma"] = 2500,
["Country_data_Oman"] = 10000,
["Country_data_Ontario"] = 3700,
["Country_data_Ottoman_Empire"] = 3200,
["Country_data_PAK"] = 9000,
["Country_data_PAN"] = 5900,
["Country_data_PAR"] = 11000,
["Country_data_PER"] = 14000,
["Country_data_PHI"] = 13000,
["Country_data_PLE"] = 2000,
["Country_data_PNG"] = 3200,
["Country_data_POL"] = 60000,
["Country_data_POR"] = 37000,
["Country_data_PRK"] = 5000,
["Country_data_PRT"] = 3600,
["Country_data_PUR"] = 8000,
["Country_data_Pakistan"] = 52000,
["Country_data_Palau"] = 2600,
["Country_data_Palestine"] = 7600,
["Country_data_Panama"] = 31000,
["Country_data_Papua_New_Guinea"] = 8400,
["Country_data_Paraguay"] = 46000,
["Country_data_Pennsylvania"] = 3600,
["Country_data_Peru"] = 66000,
["Country_data_Philippines"] = 70000,
["Country_data_Poland"] = 247000,
["Country_data_Portugal"] = 118000,
["Country_data_Prussia"] = 2800,
["Country_data_Puerto_Rico"] = 35000,
["Country_data_QAT"] = 9500,
["Country_data_Qatar"] = 33000,
["Country_data_Quebec"] = 4100,
["Country_data_Queensland"] = 2300,
["Country_data_ROM"] = 15000,
["Country_data_ROU"] = 31000,
["Country_data_RSA"] = 36000,
["Country_data_RUS"] = 68000,
["Country_data_RWA"] = 2400,
["Country_data_Republic_of_China"] = 4600,
["Country_data_Republic_of_Ireland"] = 56000,
["Country_data_Republic_of_the_Congo"] = 8200,
["Country_data_Romania"] = 116000,
["Country_data_Russia"] = 260000,
["Country_data_Russian_Empire"] = 5600,
["Country_data_Rwanda"] = 8400,
["Country_data_SAM"] = 3700,
["Country_data_SCG"] = 3000,
["Country_data_SCO"] = 29000,
["Country_data_SEN"] = 8500,
["Country_data_SER"] = 3700,
["Country_data_SGP"] = 4400,
["Country_data_SIN"] = 7400,
["Country_data_SLE"] = 2000,
["Country_data_SLO"] = 22000,
["Country_data_SLV"] = 3200,
["Country_data_SMR"] = 3600,
["Country_data_SPA"] = 5500,
["Country_data_SRB"] = 30000,
["Country_data_SRI"] = 5200,
["Country_data_SUI"] = 50000,
["Country_data_SUR"] = 2300,
["Country_data_SVK"] = 32000,
["Country_data_SVN"] = 7300,
["Country_data_SWE"] = 65000,
["Country_data_SWI"] = 5000,
["Country_data_SYR"] = 3900,
["Country_data_Saint_Kitts_and_Nevis"] = 4900,
["Country_data_Saint_Lucia"] = 5200,
["Country_data_Saint_Vincent_and_the_Grenadines"] = 5000,
["Country_data_Samoa"] = 8000,
["Country_data_San_Marino"] = 9600,
["Country_data_Saskatchewan"] = 3700,
["Country_data_Saudi_Arabia"] = 38000,
["Country_data_Scotland"] = 103000,
["Country_data_Senegal"] = 32000,
["Country_data_Serbia"] = 106000,
["Country_data_Serbia_and_Montenegro"] = 5400,
["Country_data_Seychelles"] = 5700,
["Country_data_Sierra_Leone"] = 7600,
["Country_data_Singapore"] = 51000,
["Country_data_Slovakia"] = 97000,
["Country_data_Slovenia"] = 93000,
["Country_data_Solomon_Islands"] = 4700,
["Country_data_Somalia"] = 6300,
["Country_data_South_Africa"] = 123000,
["Country_data_South_Australia"] = 2300,
["Country_data_South_Carolina"] = 3100,
["Country_data_South_Korea"] = 118000,
["Country_data_South_Sudan"] = 4800,
["Country_data_Soviet_Union"] = 78000,
["Country_data_Spain"] = 281000,
["Country_data_Sri_Lanka"] = 36000,
["Country_data_Sudan"] = 8600,
["Country_data_Suriname"] = 6700,
["Country_data_Sweden"] = 170000,
["Country_data_Switzerland"] = 154000,
["Country_data_Syria"] = 22000,
["Country_data_São_Tomé_and_Príncipe"] = 3300,
["Country_data_TAN"] = 3400,
["Country_data_TCH"] = 12000,
["Country_data_THA"] = 25000,
["Country_data_TJK"] = 2900,
["Country_data_TKM"] = 3100,
["Country_data_TOG"] = 2100,
["Country_data_TON"] = 2000,
["Country_data_TPE"] = 18000,
["Country_data_TRI"] = 5100,
["Country_data_TTO"] = 2100,
["Country_data_TUN"] = 12000,
["Country_data_TUR"] = 33000,
["Country_data_TWN"] = 2200,
["Country_data_Taiwan"] = 28000,
["Country_data_Tajikistan"] = 9700,
["Country_data_Tanzania"] = 23000,
["Country_data_Tennessee"] = 2200,
["Country_data_Texas"] = 5800,
["Country_data_Thailand"] = 98000,
["Country_data_Timor-Leste"] = 5000,
["Country_data_Togo"] = 7500,
["Country_data_Tonga"] = 6700,
["Country_data_Trinidad_and_Tobago"] = 24000,
["Country_data_Tunisia"] = 47000,
["Country_data_Turkey"] = 144000,
["Country_data_Turkmenistan"] = 8400,
["Country_data_Turks_and_Caicos_Islands"] = 2800,
["Country_data_Tuvalu"] = 2600,
["Country_data_U.S."] = 2000,
["Country_data_U.S._Virgin_Islands"] = 4900,
["Country_data_UAE"] = 11000,
["Country_data_UGA"] = 5200,
["Country_data_UK"] = 18000,
["Country_data_UKGBI"] = 3500,
["Country_data_UKR"] = 44000,
["Country_data_URS"] = 19000,
["Country_data_URU"] = 16000,
["Country_data_US"] = 5600,
["Country_data_USA"] = 150000,
["Country_data_USSR"] = 5300,
["Country_data_UZB"] = 13000,
["Country_data_Uganda"] = 23000,
["Country_data_Ukraine"] = 120000,
["Country_data_United_Arab_Emirates"] = 39000,
["Country_data_United_Kingdom"] = 163000,
["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4900,
["Country_data_United_Nations"] = 4400,
["Country_data_United_States"] = 440000,
["Country_data_United_States_of_America"] = 4500,
["Country_data_Uruguay"] = 53000,
["Country_data_Uzbekistan"] = 37000,
["Country_data_VEN"] = 18000,
["Country_data_VIE"] = 7300,
["Country_data_Vanuatu"] = 5000,
["Country_data_Vatican_City"] = 2900,
["Country_data_Venezuela"] = 67000,
["Country_data_Victoria"] = 2400,
["Country_data_Vietnam"] = 48000,
["Country_data_Virginia"] = 3100,
["Country_data_WAL"] = 19000,
["Country_data_Wales"] = 69000,
["Country_data_Washington"] = 2700,
["Country_data_Washington,_D.C."] = 2200,
["Country_data_Washington_(state)"] = 3400,
["Country_data_West_Germany"] = 54000,
["Country_data_West_Indies"] = 2800,
["Country_data_Wisconsin"] = 5600,
["Country_data_Wyoming"] = 2100,
["Country_data_YUG"] = 11000,
["Country_data_Yemen"] = 8000,
["Country_data_Yugoslavia"] = 34000,
["Country_data_ZAF"] = 5400,
["Country_data_ZAM"] = 3800,
["Country_data_ZIM"] = 9200,
["Country_data_Zambia"] = 11000,
["Country_data_Zimbabwe"] = 33000,
["Country_data_none"] = 2100,
["Country_flagbio"] = 39000,
["Country_in_the_Eurovision_Song_Contest"] = 2800,
["Country_name"] = 58000,
["Country_prefix_the"] = 176000,
["Country_showdata"] = 7000,
["Country_topics"] = 25000,
["County"] = 7000,
["County_(judet)_of_Romania"] = 3300,
["Course_assignment"] = 4200,
["Course_details"] = 8300,
["Course_instructor"] = 3100,
["Cquote"] = 37000,
["Cr"] = 5000,
["Cr-rt"] = 2400,
["Create_taxonomy/link"] = 150000,
["Creative_Commons_text_attribution_notice"] = 6300,
["Cref2"] = 2800,
["Cricinfo"] = 24000,
["Cricket_squad2_coach"] = 2300,
["Cricket_squad2_player"] = 3100,
["Cricketarchive"] = 3000,
["Croatian_Census_2021"] = 4200,
["Cross"] = 4000,
["Crossreference"] = 2800,
["Crossreference/styles.css"] = 2800,
["Cs1_config"] = 13000,
["Cslist"] = 3700,
["Cslist/styles.css"] = 3700,
["Csv"] = 75000,
["Currency"] = 5400,
["Current_events"] = 9400,
["Current_events/styles.css"] = 9400,
["Currentdate"] = 24000,
["Cvt"] = 167000,
["Cycling_Archives"] = 4300,
["Cycling_data_DAT"] = 2000,
["Cycling_data_LTD"] = 2400,
["Cycling_data_MOV_men"] = 2300,
["Cycling_data_SOQ"] = 2200,
["Cycling_data_TVL"] = 2400,
["Cycling_data_UEX"] = 2300,
["Cycling_team_link"] = 14000,
["Module:CFB_schedule"] = 29000,
["Module:CS1_identifiers"] = 506000,
["Module:CallAssert"] = 122000,
["Module:Canada_NTS"] = 2100,
["Module:Canada_NTS/data"] = 2100,
["Module:Canada_by_province_category_navigation"] = 9900,
["Module:Catalog_lookup_link"] = 61000,
["Module:Category_described_in_year"] = 6400,
["Module:Category_described_in_year/config"] = 6400,
["Module:Category_disambiguation"] = 2700,
["Module:Category_handler"] = 4970000,
["Module:Category_handler/blacklist"] = 4970000,
["Module:Category_handler/config"] = 4970000,
["Module:Category_handler/data"] = 4970000,
["Module:Category_handler/shared"] = 4970000,
["Module:Category_main_article"] = 220000,
["Module:Category_more_if_exists"] = 49000,
["Module:Category_pair"] = 7000,
["Module:Category_see_also"] = 55000,
["Module:Category_series_navigation"] = 597000,
["Module:Category_series_navigation/styles.css"] = 597000,
["Module:Celestial_object_quadrangle"] = 2100,
["Module:Chart"] = 2900,
["Module:Chart/Default_colors"] = 2900,
["Module:Check_DYK_hook"] = 126000,
["Module:Check_blp_parameter"] = 2900000,
["Module:Check_for_conflicting_parameters"] = 4750000,
["Module:Check_for_deprecated_parameters"] = 223000,
["Module:Check_for_unknown_parameters"] = 23300000,
["Module:Check_height"] = 152000,
["Module:Check_isxn"] = 16000,
["Module:Check_winner_by_scores"] = 16000,
["Module:Checkuser"] = 90000,
["Module:Chem2"] = 11000,
["Module:Chem2/styles.css"] = 11000,
["Module:Citation/CS1"] = 6510000,
["Module:Citation/CS1/COinS"] = 6510000,
["Module:Citation/CS1/Configuration"] = 6640000,
["Module:Citation/CS1/Date_validation"] = 6510000,
["Module:Citation/CS1/Identifiers"] = 6640000,
["Module:Citation/CS1/Suggestions"] = 26000,
["Module:Citation/CS1/Utilities"] = 6640000,
["Module:Citation/CS1/Whitelist"] = 6510000,
["Module:Citation/CS1/styles.css"] = 6640000,
["Module:Citation_mode"] = 49000,
["Module:Cite"] = 52000,
["Module:Cite/config"] = 69000,
["Module:Cite_IUCN"] = 70000,
["Module:Cite_Q"] = 17000,
["Module:Cite_Q/config"] = 17000,
["Module:Cite_taxon"] = 54000,
["Module:Cite_tweet"] = 48000,
["Module:Clade"] = 10000,
["Module:Class"] = 62000,
["Module:Class/definition.json"] = 62000,
["Module:Class/styles.css"] = 39000,
["Module:Class_mask"] = 457000,
["Module:Clickable_button"] = 1880000,
["Module:Collapsible_list"] = 70000,
["Module:College_color"] = 137000,
["Module:College_color/data"] = 137000,
["Module:Color_contrast"] = 570000,
["Module:Color_contrast/colors"] = 573000,
["Module:Commons_link"] = 306000,
["Module:Compact_list"] = 2000,
["Module:Complex_date"] = 47000,
["Module:Conservation_status"] = 88000,
["Module:Contentious_topics/talk_notice"] = 21000,
["Module:Convert"] = 1510000,
["Module:Convert/data"] = 1510000,
["Module:Convert/helper"] = 13000,
["Module:Convert/text"] = 1510000,
["Module:Convert/wikidata"] = 2700,
["Module:Convert/wikidata/data"] = 2700,
["Module:ConvertIB"] = 792000,
["Module:ConvertIB/data"] = 267000,
["Module:ConvertNumeric"] = 20000,
["Module:Convert_character_width"] = 2800,
["Module:Convert_character_width/data"] = 2800,
["Module:Coordinates"] = 1410000,
["Module:Coordinates/styles.css"] = 1410000,
["Module:Copied"] = 43000,
["Module:Country2nationality"] = 97000,
["Module:CountryAdjectiveDemonym"] = 116000,
["Module:CountryAdjectiveDemonym/Adjectives"] = 116000,
["Module:CountryAdjectiveDemonym/Demonyms"] = 116000,
["Module:CountryAdjectiveDemonym/The"] = 116000,
["Module:CountryData"] = 474000,
["Module:CountryData/cacheA"] = 172000,
["Module:CountryData/cacheB"] = 87000,
["Module:CountryData/cacheC"] = 62000,
["Module:CountryData/cacheD"] = 59000,
["Module:CountryData/cacheE"] = 40000,
["Module:CountryData/cacheF"] = 28000,
["Module:CountryData/cacheG"] = 29000,
["Module:CountryData/cacheH"] = 19000,
["Module:CountryData/cacheI"] = 18000,
["Module:CountryData/cacheJ"] = 11000,
["Module:CountryData/cacheK"] = 12000,
["Module:CountryData/summary"] = 474000,
["Module:Country_adjective"] = 4600,
["Module:Country_alias"] = 62000,
["Module:Country_alias/data"] = 62000,
["Module:Cslist"] = 3700,
["Module:Currency"] = 5400,
["Module:Currency/Presentation"] = 5400,
}
m84kut0b3jytay6px7p2c7bg16xng8s
74037
74036
2026-07-12T11:00:23Z
Robertsky
10424
1 versaun husi [[:en:Module:Transclusion_count/data/C]]
74036
Scribunto
text/plain
return {
["C"] = 793000,
["C-Class"] = 17000,
["C-SPAN"] = 13000,
["C-cmn"] = 2800,
["C-pl"] = 51000,
["C."] = 351000,
["CAN"] = 20000,
["CANelec"] = 18000,
["CANelec/gain"] = 3400,
["CANelec/hold"] = 6600,
["CANelec/source"] = 11000,
["CANelec/top"] = 8600,
["CANelec/total"] = 9300,
["CAS"] = 3800,
["CAS_Registry_Number"] = 3800,
["CBB_Yearly_Record_End"] = 3500,
["CBB_Yearly_Record_Entry"] = 3600,
["CBB_Yearly_Record_Start"] = 3400,
["CBB_Yearly_Record_Subhead"] = 4200,
["CBB_Yearly_Record_Subtotal"] = 3300,
["CBB_roster/Footer"] = 10000,
["CBB_roster/Header"] = 10000,
["CBB_roster/Player"] = 10000,
["CBB_schedule_end"] = 13000,
["CBB_schedule_entry"] = 13000,
["CBB_schedule_start"] = 13000,
["CBB_standings_end"] = 19000,
["CBB_standings_entry"] = 19000,
["CBB_standings_start"] = 19000,
["CBB_yearly_record_end"] = 4700,
["CBB_yearly_record_end/legend"] = 4100,
["CBB_yearly_record_entry"] = 4600,
["CBB_yearly_record_start"] = 4500,
["CBB_yearly_record_subhead"] = 4300,
["CBB_yearly_record_subtotal"] = 4400,
["CBSB_Standings_End"] = 2700,
["CBSB_Standings_Entry"] = 2700,
["CBSB_Standings_Start"] = 2600,
["CBSB_link"] = 4100,
["CBSB_standings_end"] = 5500,
["CBSB_standings_entry"] = 5500,
["CBSB_standings_start"] = 5500,
["CC0"] = 3900,
["CC_BY-SA_2.5"] = 2100,
["CC_BY-SA_2.5,_2.0,_1.0"] = 2100,
["CC_BY-SA_3.0"] = 21000,
["CC_BY-SA_3.0_migrated"] = 19000,
["CC_BY-SA_4.0"] = 13000,
["CC_BY_2.5"] = 2600,
["CC_BY_3.0"] = 7000,
["CFB_Standings_End"] = 16000,
["CFB_Standings_Entry"] = 16000,
["CFB_Standings_Start"] = 16000,
["CFB_Yearly_Record_End"] = 7900,
["CFB_Yearly_Record_End/legend"] = 2900,
["CFB_Yearly_Record_Entry"] = 7900,
["CFB_Yearly_Record_Start"] = 7900,
["CFB_Yearly_Record_Subhead"] = 8000,
["CFB_Yearly_Record_Subtotal"] = 7800,
["CFB_schedule"] = 29000,
["CFB_schedule_entry"] = 22000,
["CFB_standings_end"] = 39000,
["CFB_standings_entry"] = 39000,
["CFB_standings_start"] = 39000,
["CFL_Year"] = 7200,
["CGF_year"] = 3600,
["CGNDB_URL"] = 5400,
["CHE"] = 11000,
["CHI"] = 3300,
["CHL"] = 4200,
["CHN"] = 15000,
["CN"] = 4000,
["CO2"] = 3500,
["COI"] = 14000,
["COIUL"] = 131000,
["COI_editnotice"] = 7800,
["COL"] = 5600,
["COLON"] = 14000,
["CRI"] = 2300,
["CRO"] = 6500,
["CS1_config"] = 15000,
["CSK"] = 2800,
["CSS_image_crop"] = 9200,
["CUB"] = 4200,
["CURRENTDATE"] = 3600,
["CURRENTMINUTE"] = 2500,
["CYP"] = 2200,
["CZE"] = 16000,
["Calendar"] = 2500,
["Calendar/styles.css"] = 2800,
["California/color"] = 12000,
["Call_sign_disambiguation"] = 3100,
["Campaignbox"] = 26000,
["CanProvName"] = 19000,
["CanadaByProvinceCatNav"] = 9500,
["CanadaProvinceThe"] = 4500,
["Canada_NTS_Map_Sheet"] = 2100,
["Canada_by_province_category_navigation"] = 9900,
["Canadian_English"] = 13000,
["Canadian_Parliament_links"] = 5100,
["Canadian_election_result"] = 18000,
["Canadian_election_result/gain"] = 3600,
["Canadian_election_result/hold"] = 6900,
["Canadian_election_result/source"] = 12000,
["Canadian_election_result/top"] = 18000,
["Canadian_election_result/total"] = 14000,
["Canadian_party_colour"] = 11000,
["Canadian_party_colour/colour"] = 23000,
["Canadian_party_colour/colour/default"] = 22000,
["Canadian_party_colour/name"] = 19000,
["Canadian_party_colour/name/default"] = 8200,
["Canadian_province_name"] = 19000,
["Canned_search"] = 8200,
["Cascite"] = 17000,
["Caselaw_source"] = 4800,
["Cassini-Ehess"] = 3100,
["Cast_listing"] = 29000,
["Castlist"] = 5200,
["Cat"] = 462000,
["CatAutoTOC"] = 374000,
["CatRel"] = 4100,
["CatTrack"] = 20000,
["Cat_class"] = 6500,
["Cat_main"] = 149000,
["Cat_more"] = 103000,
["Cat_more_if_exists"] = 29000,
["Cat_see_also"] = 3800,
["Catalog_lookup_link"] = 60000,
["Catalog_of_Fishes"] = 9600,
["Catalogue_of_Life"] = 23000,
["Category"] = 2400,
["Category-Class"] = 14000,
["Category-inline"] = 11000,
["Category_TOC"] = 81000,
["Category_TOC/tracking"] = 81000,
["Category_U.S._State_elections_by_year"] = 7500,
["Category_U.S._State_elections_by_year/core"] = 7500,
["Category_class"] = 25000,
["Category_described_in_year"] = 6400,
["Category_diffuse"] = 11000,
["Category_disambiguation"] = 2700,
["Category_explanation"] = 415000,
["Category_handler"] = 2710000,
["Category_if_exists"] = 84000,
["Category_ifexist"] = 4900,
["Category_importance"] = 8900,
["Category_link"] = 680000,
["Category_link/core"] = 680000,
["Category_link_if_exists"] = 79000,
["Category_link_with_count"] = 9200,
["Category_link_without_namespace"] = 794000,
["Category_links"] = 9900,
["Category_main_article"] = 220000,
["Category_more"] = 143000,
["Category_more_if_exists"] = 49000,
["Category_ordered_by_date"] = 13000,
["Category_other"] = 1100000,
["Category_pair"] = 2100,
["Category_redirect"] = 158000,
["Category_redirect/core"] = 158000,
["Category_see_also"] = 55000,
["Category_see_also/Category_pair_check"] = 55000,
["Category_see_also_if_exists"] = 94000,
["Category_see_also_if_exists_2"] = 101000,
["Category_series_navigation"] = 597000,
["Category_title"] = 2400,
["Catexp"] = 5900,
["CathEncy"] = 2300,
["Catholic"] = 3700,
["Catholic_Encyclopedia"] = 5100,
["Catmain"] = 29000,
["Catmore"] = 9800,
["Catseealso"] = 2300,
["Cbb_link"] = 10000,
["Cbignore"] = 131000,
["Cbsb_link"] = 2500,
["Cc-by-2.5"] = 2600,
["Cc-by-3.0"] = 7000,
["Cc-by-sa-2.5"] = 2100,
["Cc-by-sa-2.5,2.0,1.0"] = 2100,
["Cc-by-sa-3.0"] = 20000,
["Cc-by-sa-3.0-migrated"] = 19000,
["Cc-by-sa-4.0"] = 13000,
["Cc-zero"] = 3800,
["CensusAU"] = 9100,
["Census_2016_AUS"] = 5700,
["Census_2021_AUS"] = 6200,
["Cent"] = 6800,
["Center"] = 299000,
["Centralized_discussion"] = 7200,
["Centralized_discussion/core"] = 7200,
["Centralized_discussion/styles.css"] = 7200,
["Centre"] = 4100,
["Century"] = 16000,
["Century_name_from_decade"] = 2400,
["Century_name_from_decade_or_year"] = 127000,
["Century_name_from_title_decade"] = 7600,
["Century_name_from_title_year"] = 9200,
["Certification_Cite_Ref"] = 38000,
["Certification_Table_Bottom"] = 37000,
["Certification_Table_Entry"] = 38000,
["Certification_Table_Entry/Foot"] = 37000,
["Certification_Table_Entry/Foot/helper"] = 37000,
["Certification_Table_Entry/MexicanAward"] = 2300,
["Certification_Table_Entry/Region"] = 38000,
["Certification_Table_Entry/Sales"] = 37000,
["Certification_Table_Entry/Sales/AustrianPeriod"] = 2400,
["Certification_Table_Entry/Sales/BelgianPeriod"] = 2400,
["Certification_Table_Entry/Sales/DanishPeriod"] = 4300,
["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 4300,
["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 4300,
["Certification_Table_Entry/Sales/FrenchPeriod"] = 2200,
["Certification_Table_Entry/Sales/FrenchPeriodAlbum"] = 2000,
["Certification_Table_Entry/Sales/GermanPeriod"] = 4100,
["Certification_Table_Entry/Sales/ItalianHelper"] = 4400,
["Certification_Table_Entry/Sales/MexicanSales"] = 2200,
["Certification_Table_Entry/Sales/NewZealandPeriod"] = 7700,
["Certification_Table_Entry/Sales/SpanishSinglesPeriod"] = 2800,
["Certification_Table_Entry/Sales/SwedishPeriod"] = 2300,
["Certification_Table_Separator"] = 3200,
["Certification_Table_Top"] = 39000,
["Cfb_link"] = 26000,
["Cfd_all"] = 3800,
["Chart_bottom"] = 4400,
["Chart_top"] = 4400,
["Check_completeness_of_transclusions"] = 64000,
["Check_talk"] = 63000,
["Check_talk_wp"] = 1450000,
["Check_winner_by_scores"] = 16000,
["CheckedSockpuppet"] = 7200,
["Checked_sockpuppet"] = 18000,
["Checkedsockpuppet"] = 5300,
["Checkip"] = 12000,
["Checkuser"] = 89000,
["Checkuserblock-account"] = 43000,
["Chem"] = 6100,
["Chem/atom"] = 6000,
["Chem/link"] = 6100,
["Chem2"] = 11000,
["Chem_molar_mass"] = 22000,
["Chem_molar_mass/format"] = 22000,
["Chembox"] = 16000,
["Chembox/styles.css"] = 16000,
["Chembox_3DMet"] = 15000,
["Chembox_AllOtherNames"] = 14000,
["Chembox_AllOtherNames/format"] = 14000,
["Chembox_Appearance"] = 7200,
["Chembox_BoilingPt"] = 4200,
["Chembox_CASNo"] = 15000,
["Chembox_CASNo/format"] = 15000,
["Chembox_CalcTemperatures"] = 7500,
["Chembox_ChEBI"] = 15000,
["Chembox_ChEBI/format"] = 15000,
["Chembox_ChEMBL"] = 15000,
["Chembox_ChEMBL/format"] = 15000,
["Chembox_ChemSpiderID"] = 15000,
["Chembox_ChemSpiderID/format"] = 15000,
["Chembox_CompTox"] = 15000,
["Chembox_CompTox/format"] = 15000,
["Chembox_Datapage_check"] = 16000,
["Chembox_Density"] = 5600,
["Chembox_DrugBank"] = 15000,
["Chembox_DrugBank/format"] = 15000,
["Chembox_ECHA"] = 8200,
["Chembox_ECNumber"] = 15000,
["Chembox_ECNumber/format"] = 15000,
["Chembox_Elements"] = 15000,
["Chembox_Elements/molecular_formula"] = 21000,
["Chembox_FlashPt"] = 2100,
["Chembox_Footer"] = 15000,
["Chembox_Footer/tracking"] = 15000,
["Chembox_GHS_(set)"] = 4500,
["Chembox_Hazards"] = 13000,
["Chembox_IUPHAR_ligand"] = 15000,
["Chembox_IUPHAR_ligand/format"] = 15000,
["Chembox_Identifiers"] = 15000,
["Chembox_InChI"] = 15000,
["Chembox_InChI/format"] = 15000,
["Chembox_Indexlist"] = 15000,
["Chembox_Jmol"] = 15000,
["Chembox_Jmol/format"] = 15000,
["Chembox_KEGG"] = 15000,
["Chembox_KEGG/format"] = 15000,
["Chembox_MeltingPt"] = 6600,
["Chembox_OtherCpds"] = 2100,
["Chembox_Properties"] = 15000,
["Chembox_PubChem"] = 15000,
["Chembox_PubChem/format"] = 15000,
["Chembox_RTECS"] = 15000,
["Chembox_RTECS/format"] = 15000,
["Chembox_Related"] = 4200,
["Chembox_SMILES"] = 15000,
["Chembox_SMILES/format"] = 15000,
["Chembox_SolubilityInWater"] = 4500,
["Chembox_Structure"] = 2400,
["Chembox_UNII"] = 15000,
["Chembox_UNII/format"] = 15000,
["Chembox_headerbar"] = 16000,
["Chembox_image"] = 14000,
["Chembox_image_cell"] = 14000,
["Chembox_image_sbs"] = 14000,
["Chembox_parametercheck"] = 15000,
["Chembox_setDatarow"] = 5400,
["Chembox_setHeader"] = 5400,
["Chembox_templatePar/formatPreviewMessage"] = 16000,
["Chembox_verification"] = 6900,
["Chemspidercite"] = 11000,
["Chessgames_player"] = 3800,
["Chinese"] = 3600,
["Circa"] = 466000,
["Circular_reference"] = 3900,
["Citation"] = 410000,
["Citation/make_link"] = 7800,
["Citation/styles.css"] = 52000,
["Citation_needed"] = 634000,
["Citation_needed_span"] = 3600,
["Citation_style"] = 4500,
["Cite_AV_media"] = 79000,
["Cite_AV_media_notes"] = 34000,
["Cite_Appletons'"] = 2400,
["Cite_Australian_Dictionary_of_Biography"] = 4900,
["Cite_Box_Office_Mojo"] = 2500,
["Cite_Catholic_Encyclopedia"] = 8600,
["Cite_DCB"] = 3300,
["Cite_DGRBM"] = 2200,
["Cite_DNB"] = 20000,
["Cite_EB1911"] = 26000,
["Cite_FTP"] = 2500,
["Cite_GBIF"] = 4300,
["Cite_GNIS"] = 2400,
["Cite_Gaia_DR3"] = 3100,
["Cite_Google_Maps"] = 20000,
["Cite_Hansard"] = 2700,
["Cite_IUCN"] = 70000,
["Cite_Instagram"] = 7100,
["Cite_Jewish_Encyclopedia"] = 3200,
["Cite_LCDB"] = 2000,
["Cite_Metacritic"] = 2300,
["Cite_NIE"] = 3500,
["Cite_NSW_Parliament"] = 3300,
["Cite_NSW_SHR"] = 2700,
["Cite_NatureServe"] = 2800,
["Cite_ODNB"] = 22000,
["Cite_OED"] = 2500,
["Cite_POWO"] = 5900,
["Cite_Q"] = 17000,
["Cite_QHR"] = 3100,
["Cite_QPN"] = 4100,
["Cite_Rotten_Tomatoes"] = 2800,
["Cite_Rowlett"] = 2500,
["Cite_Russian_law"] = 7800,
["Cite_Ryan"] = 3300,
["Cite_Sports-Reference"] = 55000,
["Cite_USGov"] = 13000,
["Cite_WoRMS"] = 13000,
["Cite_act"] = 3900,
["Cite_arXiv"] = 6900,
["Cite_bcgnis"] = 3700,
["Cite_book"] = 1900000,
["Cite_certification"] = 43000,
["Cite_certification/Title"] = 39000,
["Cite_certification/URL"] = 43000,
["Cite_certification/archivedate"] = 7600,
["Cite_certification/archiveurl"] = 7600,
["Cite_cgndb"] = 5300,
["Cite_comic"] = 2100,
["Cite_conference"] = 22000,
["Cite_court"] = 6700,
["Cite_dictionary"] = 3500,
["Cite_document"] = 2000,
["Cite_encyclopedia"] = 242000,
["Cite_episode"] = 19000,
["Cite_gnis"] = 35000,
["Cite_instagram"] = 3000,
["Cite_interview"] = 11000,
["Cite_iucn"] = 69000,
["Cite_journal"] = 1170000,
["Cite_legislation_UK"] = 3500,
["Cite_magazine"] = 378000,
["Cite_map"] = 60000,
["Cite_news"] = 1910000,
["Cite_newspaper_The_Times"] = 7200,
["Cite_patent"] = 7200,
["Cite_patent/authors"] = 6000,
["Cite_patent/core"] = 7500,
["Cite_peakbagger"] = 5300,
["Cite_podcast"] = 6100,
["Cite_press_release"] = 85000,
["Cite_report"] = 74000,
["Cite_rowlett"] = 2500,
["Cite_ship_register"] = 2000,
["Cite_simbad"] = 5600,
["Cite_sports-reference"] = 59000,
["Cite_taxon"] = 5300,
["Cite_tech_report"] = 3000,
["Cite_thesis"] = 49000,
["Cite_tweet"] = 48000,
["Cite_video"] = 13000,
["Cite_video_game"] = 3400,
["Cite_web"] = 5390000,
["Cite_wikisource"] = 7000,
["Cite_wikisource/make_link"] = 65000,
["Citeweb"] = 3600,
["Civil_navigation"] = 2200,
["Cjersey"] = 3000,
["Cl"] = 215000,
["Clade"] = 10000,
["Clade/styles.css"] = 10000,
["Clarification_needed"] = 2500,
["Clarify"] = 45000,
["Class"] = 39000,
["Class/colour"] = 19000,
["Class/icon"] = 21000,
["Class_mask"] = 457000,
["Classicon"] = 5200,
["Clc"] = 7500,
["Cleanup"] = 8800,
["Cleanup_reorganize"] = 2300,
["Cleanup_rewrite"] = 6900,
["Clear"] = 3750000,
["Clear_left"] = 28000,
["Clear_right"] = 2800,
["Clerk_Request"] = 2500,
["Clerk_note"] = 11000,
["Clerknote"] = 8600,
["Clickable_button"] = 1880000,
["Clickable_button_2"] = 228000,
["Closed_access"] = 5500,
["Closed_peer_review_page"] = 3100,
["Closed_rfc_bottom"] = 2200,
["Closed_rfc_top"] = 2800,
["Clr"] = 3100,
["Club_players_category"] = 9400,
["Clubplayerscat"] = 9400,
["Cmbox"] = 530000,
["Cn"] = 113000,
["Cnote2"] = 2900,
["Cnote2_Begin"] = 2900,
["Cnote2_End"] = 2900,
["Coat_of_arms"] = 2500,
["Cob"] = 15000,
["Code"] = 83000,
["Cof_family"] = 4500,
["Cof_genus"] = 5200,
["Col-1-of-2"] = 2400,
["Col-2"] = 186000,
["Col-2-of-2"] = 2300,
["Col-3"] = 11000,
["Col-4"] = 3800,
["Col-begin"] = 231000,
["Col-begin/styles.css"] = 231000,
["Col-break"] = 229000,
["Col-end"] = 230000,
["Col-float"] = 4800,
["Col-float-break"] = 4700,
["Col-float-end"] = 4800,
["Col-float/styles.css"] = 4800,
["Col-start"] = 10000,
["Col_div"] = 2200,
["Colbegin"] = 24000,
["Colend"] = 27000,
["Collapse"] = 8800,
["Collapse_bottom"] = 56000,
["Collapse_top"] = 56000,
["Collapse_top/styles.css"] = 56000,
["Collapsebottom"] = 4000,
["Collapsed_infobox_section_begin"] = 4300,
["Collapsed_infobox_section_end"] = 4300,
["Collapsetop"] = 4100,
["Collapsible_list"] = 68000,
["Collapsible_option"] = 151000,
["Colledge:_Ships_RN"] = 3000,
["College"] = 12000,
["CollegePrimaryHeader"] = 8200,
["CollegePrimaryStyle"] = 111000,
["CollegeSecondaryStyle"] = 11000,
["College_Athlete_Recruit_End"] = 2800,
["College_Athlete_Recruit_Entry"] = 2900,
["College_Athlete_Recruit_Start"] = 2900,
["College_athlete_recruit_end"] = 4900,
["College_athlete_recruit_entry"] = 5100,
["College_athlete_recruit_start"] = 5100,
["College_color_list"] = 4400,
["College_sports_team_link"] = 31000,
["Colon"] = 20000,
["Color"] = 505000,
["Color/styles.css"] = 505000,
["Color_box"] = 86000,
["Colorbox"] = 2600,
["Colorbull"] = 4600,
["Colored_link"] = 102000,
["Coloredlink"] = 2800,
["Colors"] = 3600,
["Colour"] = 5500,
["Colour_box"] = 2500,
["Coloured_link"] = 12000,
["Column"] = 4300,
["Column/styles.css"] = 4300,
["Columns-end"] = 4000,
["Columns-list"] = 125000,
["Columns-start"] = 4000,
["Comic_Book_DB"] = 3500,
["Comicbookdb"] = 3400,
["Comics-replaceability"] = 2800,
["Comics_infobox_sec/formcat"] = 3400,
["Comics_infobox_sec/genre"] = 4200,
["Comics_infobox_sec/genrecat"] = 3800,
["Comics_infobox_sec/styles.css"] = 8100,
["Comma_separated_entries"] = 520000,
["Comment"] = 7500,
["Committed_identity"] = 3200,
["Committed_identity/styles.css"] = 3200,
["Commons"] = 73000,
["Commons-inline"] = 25000,
["Commons_cat"] = 45000,
["Commons_category"] = 903000,
["Commons_category-inline"] = 177000,
["Commons_category_inline"] = 5700,
["Commonscat"] = 60000,
["Commonscat-inline"] = 15000,
["Commonscat_inline"] = 2300,
["Commonscatinline"] = 7300,
["Compact_TOC"] = 7300,
["Compact_ToC"] = 3200,
["Compose_molecular_formula"] = 2300,
["Composition_bar"] = 13000,
["Confirmed"] = 20000,
["Confused"] = 3200,
["Confusing"] = 2400,
["CongBio"] = 9400,
["CongLinks"] = 4800,
["Connected_contributor"] = 21000,
["Connected_contributor_(paid)"] = 9800,
["Constellation_navbox"] = 9900,
["Container"] = 14000,
["Container_cat"] = 9100,
["Container_category"] = 85000,
["Containercat"] = 2800,
["Contains_special_characters"] = 5200,
["Contains_special_characters/core"] = 5200,
["Contains_special_characters/styles.css"] = 5200,
["Content_category"] = 7900,
["Contentious_topics/Additional_restrictions.json"] = 21000,
["Contentious_topics/Arab-Israeli_editnotice"] = 6800,
["Contentious_topics/Arab-Israeli_talk_notice"] = 6100,
["Contentious_topics/Category_database.json"] = 21000,
["Contentious_topics/Restrictions_definition.json"] = 21000,
["Contentious_topics/Standard_set.json"] = 21000,
["Contentious_topics/list"] = 29000,
["Contentious_topics/page_restriction_editnotice_base"] = 7300,
["Contentious_topics/page_restriction_talk_notice"] = 2600,
["Contentious_topics/talk_notice"] = 21000,
["Context"] = 2600,
["Continent2continental"] = 45000,
["Continent_adjective_to_noun"] = 10000,
["Continental2continent"] = 22000,
["Controversial"] = 3000,
["Convert"] = 1410000,
["Convert_abbreviated"] = 167000,
["Convinfobox"] = 301000,
["Coord"] = 1400000,
["Coord_missing"] = 70000,
["Coord_missing/CheckCat"] = 70000,
["Coords"] = 6700,
["Copied"] = 22000,
["Copy_edit"] = 2100,
["Copy_to_Wikimedia_Commons"] = 85000,
["Copy_to_Wikimedia_Commons_in"] = 4100,
["Copyvios"] = 5400,
["Cospar"] = 2800,
["Cot"] = 14000,
["Count"] = 973000,
["Country2continent"] = 89000,
["Country2continental"] = 31000,
["Country2nationality"] = 35000,
["CountryPrefixThe"] = 82000,
["Country_abbreviation"] = 94000,
["Country_alias"] = 17000,
["Country_at_games_navbox"] = 5800,
["Country_at_games_navbox/below"] = 5800,
["Country_data"] = 12000,
["Country_data_AFG"] = 2600,
["Country_data_ALB"] = 7200,
["Country_data_ALG"] = 11000,
["Country_data_AND"] = 3600,
["Country_data_ANG"] = 4400,
["Country_data_ARG"] = 53000,
["Country_data_ARM"] = 8300,
["Country_data_AUS"] = 88000,
["Country_data_AUT"] = 52000,
["Country_data_AZE"] = 11000,
["Country_data_Afghanistan"] = 22000,
["Country_data_Alabama"] = 2600,
["Country_data_Alaska"] = 2100,
["Country_data_Albania"] = 36000,
["Country_data_Alberta"] = 3100,
["Country_data_Algeria"] = 48000,
["Country_data_American_Samoa"] = 2900,
["Country_data_Andorra"] = 9200,
["Country_data_Angola"] = 21000,
["Country_data_Anguilla"] = 2400,
["Country_data_Antigua_and_Barbuda"] = 6400,
["Country_data_Apulia"] = 7900,
["Country_data_Argentina"] = 155000,
["Country_data_Arizona"] = 2500,
["Country_data_Arkansas"] = 2800,
["Country_data_Armenia"] = 48000,
["Country_data_Aruba"] = 4000,
["Country_data_Australia"] = 279000,
["Country_data_Austria"] = 149000,
["Country_data_Austria-Hungary"] = 2300,
["Country_data_Azerbaijan"] = 52000,
["Country_data_BAH"] = 4600,
["Country_data_BAN"] = 4400,
["Country_data_BAR"] = 2700,
["Country_data_BDI"] = 2000,
["Country_data_BEL"] = 60000,
["Country_data_BER"] = 2500,
["Country_data_BFA"] = 2000,
["Country_data_BHR"] = 5800,
["Country_data_BIH"] = 14000,
["Country_data_BLR"] = 26000,
["Country_data_BOL"] = 6600,
["Country_data_BOT"] = 3100,
["Country_data_BRA"] = 64000,
["Country_data_BUL"] = 31000,
["Country_data_Bahamas"] = 11000,
["Country_data_Bahrain"] = 22000,
["Country_data_Bangladesh"] = 35000,
["Country_data_Barbados"] = 8700,
["Country_data_Belarus"] = 92000,
["Country_data_Belgium"] = 161000,
["Country_data_Belize"] = 5100,
["Country_data_Benin"] = 8000,
["Country_data_Bermuda"] = 6400,
["Country_data_Bhutan"] = 4900,
["Country_data_Bolivia"] = 24000,
["Country_data_Bosnia_and_Herzegovina"] = 54000,
["Country_data_Botswana"] = 10000,
["Country_data_Brazil"] = 173000,
["Country_data_British_Columbia"] = 3400,
["Country_data_British_Empire"] = 2000,
["Country_data_British_Raj"] = 2500,
["Country_data_British_Virgin_Islands"] = 3300,
["Country_data_Brunei"] = 6900,
["Country_data_Bulgaria"] = 103000,
["Country_data_Burkina_Faso"] = 11000,
["Country_data_Burma"] = 2300,
["Country_data_Burundi"] = 6800,
["Country_data_CAM"] = 2500,
["Country_data_CAN"] = 68000,
["Country_data_CGO"] = 2500,
["Country_data_CHE"] = 5900,
["Country_data_CHI"] = 19000,
["Country_data_CHL"] = 2300,
["Country_data_CHN"] = 49000,
["Country_data_CIV"] = 8600,
["Country_data_CMR"] = 8800,
["Country_data_COD"] = 3500,
["Country_data_COL"] = 28000,
["Country_data_CPV"] = 2300,
["Country_data_CRC"] = 6900,
["Country_data_CRO"] = 37000,
["Country_data_CUB"] = 13000,
["Country_data_CYP"] = 10000,
["Country_data_CZE"] = 54000,
["Country_data_California"] = 6200,
["Country_data_Cambodia"] = 9900,
["Country_data_Cameroon"] = 32000,
["Country_data_Canada"] = 267000,
["Country_data_Cape_Verde"] = 7000,
["Country_data_Castile_and_León"] = 2000,
["Country_data_Catalonia"] = 3500,
["Country_data_Cayman_Islands"] = 4600,
["Country_data_Central_African_Republic"] = 5100,
["Country_data_Chad"] = 5400,
["Country_data_Chile"] = 92000,
["Country_data_China"] = 154000,
["Country_data_Chinese_Taipei"] = 39000,
["Country_data_Colombia"] = 97000,
["Country_data_Colorado"] = 5300,
["Country_data_Commonwealth_of_Independent_States"] = 2200,
["Country_data_Comoros"] = 4700,
["Country_data_Confederate_States_of_America"] = 3100,
["Country_data_Connecticut"] = 3400,
["Country_data_Cook_Islands"] = 3800,
["Country_data_Costa_Rica"] = 34000,
["Country_data_Croatia"] = 106000,
["Country_data_Cuba"] = 47000,
["Country_data_Curaçao"] = 4400,
["Country_data_Cyprus"] = 48000,
["Country_data_Czech_Republic"] = 156000,
["Country_data_Czechoslovakia"] = 35000,
["Country_data_DEN"] = 40000,
["Country_data_DEU"] = 10000,
["Country_data_DNK"] = 4400,
["Country_data_DOM"] = 8400,
["Country_data_DRC"] = 2000,
["Country_data_Delaware"] = 2700,
["Country_data_Democratic_Republic_of_the_Congo"] = 23000,
["Country_data_Denmark"] = 122000,
["Country_data_Djibouti"] = 4900,
["Country_data_Dominica"] = 4200,
["Country_data_Dominican_Republic"] = 35000,
["Country_data_ECU"] = 13000,
["Country_data_EGY"] = 16000,
["Country_data_ENG"] = 52000,
["Country_data_ESA"] = 2500,
["Country_data_ESP"] = 84000,
["Country_data_EST"] = 17000,
["Country_data_ETH"] = 4500,
["Country_data_EU"] = 2600,
["Country_data_East_Germany"] = 29000,
["Country_data_Ecuador"] = 50000,
["Country_data_Egypt"] = 67000,
["Country_data_El_Salvador"] = 23000,
["Country_data_Empire_of_Japan"] = 4400,
["Country_data_England"] = 166000,
["Country_data_Equatorial_Guinea"] = 5500,
["Country_data_Eritrea"] = 5500,
["Country_data_Estonia"] = 70000,
["Country_data_Eswatini"] = 5000,
["Country_data_Ethiopia"] = 22000,
["Country_data_Europe"] = 2800,
["Country_data_European_Union"] = 8100,
["Country_data_FIJ"] = 4500,
["Country_data_FIN"] = 40000,
["Country_data_FRA"] = 114000,
["Country_data_FRG"] = 18000,
["Country_data_FRO"] = 2200,
["Country_data_FR_Yugoslavia"] = 4400,
["Country_data_Faroe_Islands"] = 5700,
["Country_data_Federated_States_of_Micronesia"] = 2700,
["Country_data_Fiji"] = 22000,
["Country_data_Finland"] = 115000,
["Country_data_Florida"] = 5800,
["Country_data_France"] = 327000,
["Country_data_French_Polynesia"] = 3900,
["Country_data_GAB"] = 2500,
["Country_data_GAM"] = 2300,
["Country_data_GBR"] = 67000,
["Country_data_GDR"] = 11000,
["Country_data_GEO"] = 16000,
["Country_data_GER"] = 95000,
["Country_data_GHA"] = 10000,
["Country_data_GIB"] = 2100,
["Country_data_GRE"] = 29000,
["Country_data_GUA"] = 5300,
["Country_data_GUI"] = 3400,
["Country_data_GUY"] = 2500,
["Country_data_Gabon"] = 8100,
["Country_data_Gambia"] = 7600,
["Country_data_Georgia"] = 8600,
["Country_data_Georgia_(U.S._state)"] = 3200,
["Country_data_Georgia_(country)"] = 55000,
["Country_data_German_Empire"] = 5700,
["Country_data_Germany"] = 296000,
["Country_data_Ghana"] = 47000,
["Country_data_Gibraltar"] = 5100,
["Country_data_Great_Britain"] = 130000,
["Country_data_Greece"] = 107000,
["Country_data_Greenland"] = 2800,
["Country_data_Grenada"] = 5700,
["Country_data_Guadeloupe"] = 2800,
["Country_data_Guam"] = 4600,
["Country_data_Guatemala"] = 22000,
["Country_data_Guinea"] = 9300,
["Country_data_Guinea-Bissau"] = 5400,
["Country_data_Guyana"] = 7700,
["Country_data_HAI"] = 3300,
["Country_data_HKG"] = 15000,
["Country_data_HON"] = 4400,
["Country_data_HUN"] = 44000,
["Country_data_Haiti"] = 9700,
["Country_data_Hawaii"] = 2200,
["Country_data_Honduras"] = 22000,
["Country_data_Hong_Kong"] = 52000,
["Country_data_Hungary"] = 116000,
["Country_data_IDN"] = 5700,
["Country_data_INA"] = 12000,
["Country_data_IND"] = 34000,
["Country_data_IRE"] = 12000,
["Country_data_IRI"] = 6700,
["Country_data_IRL"] = 24000,
["Country_data_IRN"] = 7300,
["Country_data_IRQ"] = 4800,
["Country_data_ISL"] = 9200,
["Country_data_ISR"] = 23000,
["Country_data_ITA"] = 101000,
["Country_data_Iceland"] = 48000,
["Country_data_Idaho"] = 2200,
["Country_data_Illinois"] = 4500,
["Country_data_India"] = 264000,
["Country_data_Indiana"] = 3300,
["Country_data_Indonesia"] = 73000,
["Country_data_Iowa"] = 2400,
["Country_data_Iran"] = 165000,
["Country_data_Iraq"] = 23000,
["Country_data_Ireland"] = 68000,
["Country_data_Isle_of_Man"] = 2800,
["Country_data_Israel"] = 95000,
["Country_data_Italy"] = 292000,
["Country_data_Ivory_Coast"] = 34000,
["Country_data_JAM"] = 12000,
["Country_data_JAP"] = 2200,
["Country_data_JOR"] = 4800,
["Country_data_JP"] = 8600,
["Country_data_JPN"] = 68000,
["Country_data_Jamaica"] = 46000,
["Country_data_Japan"] = 269000,
["Country_data_Jersey"] = 2500,
["Country_data_Jordan"] = 22000,
["Country_data_KAZ"] = 24000,
["Country_data_KEN"] = 10000,
["Country_data_KGZ"] = 4500,
["Country_data_KOR"] = 35000,
["Country_data_KOS"] = 3100,
["Country_data_KSA"] = 7500,
["Country_data_KUW"] = 4600,
["Country_data_Kazakhstan"] = 70000,
["Country_data_Kentucky"] = 2000,
["Country_data_Kenya"] = 35000,
["Country_data_Kingdom_of_France"] = 2200,
["Country_data_Kingdom_of_Great_Britain"] = 4600,
["Country_data_Kingdom_of_Italy"] = 4800,
["Country_data_Kiribati"] = 2600,
["Country_data_Kosovo"] = 10000,
["Country_data_Kuwait"] = 21000,
["Country_data_Kyrgyzstan"] = 11000,
["Country_data_LAO"] = 2200,
["Country_data_LAT"] = 17000,
["Country_data_LBN"] = 2900,
["Country_data_LBR"] = 2000,
["Country_data_LIB"] = 2600,
["Country_data_LIE"] = 3800,
["Country_data_LIT"] = 3700,
["Country_data_LTU"] = 14000,
["Country_data_LUX"] = 12000,
["Country_data_LVA"] = 3000,
["Country_data_Laos"] = 8000,
["Country_data_Latvia"] = 56000,
["Country_data_Lebanon"] = 24000,
["Country_data_Lesotho"] = 5400,
["Country_data_Liberia"] = 7900,
["Country_data_Libya"] = 9100,
["Country_data_Liechtenstein"] = 8900,
["Country_data_Lithuania"] = 55000,
["Country_data_Louisiana"] = 2300,
["Country_data_Luxembourg"] = 50000,
["Country_data_MAC"] = 2900,
["Country_data_MAD"] = 2400,
["Country_data_MAR"] = 15000,
["Country_data_MAS"] = 13000,
["Country_data_MDA"] = 8800,
["Country_data_MEX"] = 35000,
["Country_data_MGL"] = 3500,
["Country_data_MKD"] = 8500,
["Country_data_MLI"] = 4600,
["Country_data_MLT"] = 6400,
["Country_data_MNE"] = 8600,
["Country_data_MON"] = 4700,
["Country_data_MOZ"] = 2600,
["Country_data_MRI"] = 2200,
["Country_data_MYA"] = 3400,
["Country_data_MYS"] = 4200,
["Country_data_Macau"] = 6800,
["Country_data_Macedonia"] = 4700,
["Country_data_Madagascar"] = 9600,
["Country_data_Malawi"] = 6100,
["Country_data_Malaysia"] = 73000,
["Country_data_Maldives"] = 6700,
["Country_data_Mali"] = 22000,
["Country_data_Malta"] = 33000,
["Country_data_Manitoba"] = 2800,
["Country_data_Marshall_Islands"] = 3400,
["Country_data_Martinique"] = 2900,
["Country_data_Maryland"] = 3300,
["Country_data_Massachusetts"] = 2600,
["Country_data_Mauritania"] = 6000,
["Country_data_Mauritius"] = 8400,
["Country_data_Mexico"] = 116000,
["Country_data_Michigan"] = 3800,
["Country_data_Minas_Gerais"] = 2100,
["Country_data_Minnesota"] = 3700,
["Country_data_Missouri"] = 2500,
["Country_data_Moldova"] = 35000,
["Country_data_Monaco"] = 12000,
["Country_data_Mongolia"] = 11000,
["Country_data_Montana"] = 2400,
["Country_data_Montenegro"] = 34000,
["Country_data_Montserrat"] = 2400,
["Country_data_Morocco"] = 52000,
["Country_data_Mozambique"] = 7900,
["Country_data_Myanmar"] = 24000,
["Country_data_NAM"] = 3900,
["Country_data_NED"] = 72000,
["Country_data_NEP"] = 3300,
["Country_data_NGA"] = 8600,
["Country_data_NGR"] = 9200,
["Country_data_NIR"] = 11000,
["Country_data_NLD"] = 7400,
["Country_data_NOR"] = 35000,
["Country_data_NZ"] = 3600,
["Country_data_NZL"] = 38000,
["Country_data_Namibia"] = 11000,
["Country_data_Nauru"] = 2500,
["Country_data_Nazi_Germany"] = 10000,
["Country_data_Nepal"] = 33000,
["Country_data_Netherlands"] = 266000,
["Country_data_Netherlands_Antilles"] = 2400,
["Country_data_Nevada"] = 2100,
["Country_data_New_Brunswick"] = 2600,
["Country_data_New_Caledonia"] = 3300,
["Country_data_New_Hampshire"] = 2000,
["Country_data_New_Jersey"] = 4200,
["Country_data_New_South_Wales"] = 6400,
["Country_data_New_York"] = 4300,
["Country_data_New_York_(state)"] = 6800,
["Country_data_New_Zealand"] = 121000,
["Country_data_Newfoundland_and_Labrador"] = 2700,
["Country_data_Nicaragua"] = 8900,
["Country_data_Niger"] = 6200,
["Country_data_Nigeria"] = 67000,
["Country_data_North_Carolina"] = 3500,
["Country_data_North_Korea"] = 23000,
["Country_data_North_Macedonia"] = 34000,
["Country_data_Northern_Ireland"] = 28000,
["Country_data_Northern_Mariana_Islands"] = 2800,
["Country_data_Norway"] = 119000,
["Country_data_Nova_Scotia"] = 2500,
["Country_data_OMA"] = 3200,
["Country_data_Ohio"] = 5800,
["Country_data_Oklahoma"] = 2500,
["Country_data_Oman"] = 10000,
["Country_data_Ontario"] = 3700,
["Country_data_Ottoman_Empire"] = 3200,
["Country_data_PAK"] = 9000,
["Country_data_PAN"] = 5900,
["Country_data_PAR"] = 11000,
["Country_data_PER"] = 14000,
["Country_data_PHI"] = 13000,
["Country_data_PLE"] = 2000,
["Country_data_PNG"] = 3200,
["Country_data_POL"] = 60000,
["Country_data_POR"] = 37000,
["Country_data_PRK"] = 5000,
["Country_data_PRT"] = 3600,
["Country_data_PUR"] = 8000,
["Country_data_Pakistan"] = 52000,
["Country_data_Palau"] = 2600,
["Country_data_Palestine"] = 7600,
["Country_data_Panama"] = 31000,
["Country_data_Papua_New_Guinea"] = 8400,
["Country_data_Paraguay"] = 46000,
["Country_data_Pennsylvania"] = 3600,
["Country_data_Peru"] = 66000,
["Country_data_Philippines"] = 70000,
["Country_data_Poland"] = 247000,
["Country_data_Portugal"] = 118000,
["Country_data_Prussia"] = 2800,
["Country_data_Puerto_Rico"] = 35000,
["Country_data_QAT"] = 9500,
["Country_data_Qatar"] = 33000,
["Country_data_Quebec"] = 4100,
["Country_data_Queensland"] = 2300,
["Country_data_ROM"] = 15000,
["Country_data_ROU"] = 31000,
["Country_data_RSA"] = 36000,
["Country_data_RUS"] = 68000,
["Country_data_RWA"] = 2400,
["Country_data_Republic_of_China"] = 4600,
["Country_data_Republic_of_Ireland"] = 56000,
["Country_data_Republic_of_the_Congo"] = 8200,
["Country_data_Romania"] = 116000,
["Country_data_Russia"] = 260000,
["Country_data_Russian_Empire"] = 5600,
["Country_data_Rwanda"] = 8400,
["Country_data_SAM"] = 3700,
["Country_data_SCG"] = 3000,
["Country_data_SCO"] = 29000,
["Country_data_SEN"] = 8500,
["Country_data_SER"] = 3700,
["Country_data_SGP"] = 4400,
["Country_data_SIN"] = 7400,
["Country_data_SLE"] = 2000,
["Country_data_SLO"] = 22000,
["Country_data_SLV"] = 3200,
["Country_data_SMR"] = 3600,
["Country_data_SPA"] = 5500,
["Country_data_SRB"] = 30000,
["Country_data_SRI"] = 5200,
["Country_data_SUI"] = 50000,
["Country_data_SUR"] = 2300,
["Country_data_SVK"] = 32000,
["Country_data_SVN"] = 7300,
["Country_data_SWE"] = 65000,
["Country_data_SWI"] = 5000,
["Country_data_SYR"] = 3900,
["Country_data_Saint_Kitts_and_Nevis"] = 4900,
["Country_data_Saint_Lucia"] = 5200,
["Country_data_Saint_Vincent_and_the_Grenadines"] = 5000,
["Country_data_Samoa"] = 8000,
["Country_data_San_Marino"] = 9600,
["Country_data_Saskatchewan"] = 3700,
["Country_data_Saudi_Arabia"] = 38000,
["Country_data_Scotland"] = 103000,
["Country_data_Senegal"] = 32000,
["Country_data_Serbia"] = 106000,
["Country_data_Serbia_and_Montenegro"] = 5400,
["Country_data_Seychelles"] = 5700,
["Country_data_Sierra_Leone"] = 7600,
["Country_data_Singapore"] = 51000,
["Country_data_Slovakia"] = 97000,
["Country_data_Slovenia"] = 93000,
["Country_data_Solomon_Islands"] = 4700,
["Country_data_Somalia"] = 6300,
["Country_data_South_Africa"] = 123000,
["Country_data_South_Australia"] = 2300,
["Country_data_South_Carolina"] = 3100,
["Country_data_South_Korea"] = 118000,
["Country_data_South_Sudan"] = 4800,
["Country_data_Soviet_Union"] = 78000,
["Country_data_Spain"] = 281000,
["Country_data_Sri_Lanka"] = 36000,
["Country_data_Sudan"] = 8600,
["Country_data_Suriname"] = 6700,
["Country_data_Sweden"] = 170000,
["Country_data_Switzerland"] = 154000,
["Country_data_Syria"] = 22000,
["Country_data_São_Tomé_and_Príncipe"] = 3300,
["Country_data_TAN"] = 3400,
["Country_data_TCH"] = 12000,
["Country_data_THA"] = 25000,
["Country_data_TJK"] = 2900,
["Country_data_TKM"] = 3100,
["Country_data_TOG"] = 2100,
["Country_data_TON"] = 2000,
["Country_data_TPE"] = 18000,
["Country_data_TRI"] = 5100,
["Country_data_TTO"] = 2100,
["Country_data_TUN"] = 12000,
["Country_data_TUR"] = 33000,
["Country_data_TWN"] = 2200,
["Country_data_Taiwan"] = 28000,
["Country_data_Tajikistan"] = 9700,
["Country_data_Tanzania"] = 23000,
["Country_data_Tennessee"] = 2200,
["Country_data_Texas"] = 5800,
["Country_data_Thailand"] = 98000,
["Country_data_Timor-Leste"] = 5000,
["Country_data_Togo"] = 7500,
["Country_data_Tonga"] = 6700,
["Country_data_Trinidad_and_Tobago"] = 24000,
["Country_data_Tunisia"] = 47000,
["Country_data_Turkey"] = 144000,
["Country_data_Turkmenistan"] = 8400,
["Country_data_Turks_and_Caicos_Islands"] = 2800,
["Country_data_Tuvalu"] = 2600,
["Country_data_U.S."] = 2000,
["Country_data_U.S._Virgin_Islands"] = 4900,
["Country_data_UAE"] = 11000,
["Country_data_UGA"] = 5200,
["Country_data_UK"] = 18000,
["Country_data_UKGBI"] = 3500,
["Country_data_UKR"] = 44000,
["Country_data_URS"] = 19000,
["Country_data_URU"] = 16000,
["Country_data_US"] = 5600,
["Country_data_USA"] = 150000,
["Country_data_USSR"] = 5300,
["Country_data_UZB"] = 13000,
["Country_data_Uganda"] = 23000,
["Country_data_Ukraine"] = 120000,
["Country_data_United_Arab_Emirates"] = 39000,
["Country_data_United_Kingdom"] = 163000,
["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4900,
["Country_data_United_Nations"] = 4400,
["Country_data_United_States"] = 440000,
["Country_data_United_States_of_America"] = 4500,
["Country_data_Uruguay"] = 53000,
["Country_data_Uzbekistan"] = 37000,
["Country_data_VEN"] = 18000,
["Country_data_VIE"] = 7300,
["Country_data_Vanuatu"] = 5000,
["Country_data_Vatican_City"] = 2900,
["Country_data_Venezuela"] = 67000,
["Country_data_Victoria"] = 2400,
["Country_data_Vietnam"] = 48000,
["Country_data_Virginia"] = 3100,
["Country_data_WAL"] = 19000,
["Country_data_Wales"] = 69000,
["Country_data_Washington"] = 2700,
["Country_data_Washington,_D.C."] = 2200,
["Country_data_Washington_(state)"] = 3400,
["Country_data_West_Germany"] = 54000,
["Country_data_West_Indies"] = 2800,
["Country_data_Wisconsin"] = 5600,
["Country_data_Wyoming"] = 2100,
["Country_data_YUG"] = 11000,
["Country_data_Yemen"] = 8000,
["Country_data_Yugoslavia"] = 34000,
["Country_data_ZAF"] = 5400,
["Country_data_ZAM"] = 3800,
["Country_data_ZIM"] = 9200,
["Country_data_Zambia"] = 11000,
["Country_data_Zimbabwe"] = 33000,
["Country_data_none"] = 2100,
["Country_flagbio"] = 39000,
["Country_in_the_Eurovision_Song_Contest"] = 2800,
["Country_name"] = 58000,
["Country_prefix_the"] = 176000,
["Country_showdata"] = 7000,
["Country_topics"] = 25000,
["County"] = 7000,
["County_(judet)_of_Romania"] = 3300,
["Course_assignment"] = 4200,
["Course_details"] = 8300,
["Course_instructor"] = 3100,
["Cquote"] = 37000,
["Cr"] = 5000,
["Cr-rt"] = 2400,
["Create_taxonomy/link"] = 150000,
["Creative_Commons_text_attribution_notice"] = 6300,
["Cref2"] = 2800,
["Cricinfo"] = 24000,
["Cricket_squad2_coach"] = 2300,
["Cricket_squad2_player"] = 3100,
["Cricketarchive"] = 3000,
["Croatian_Census_2021"] = 4200,
["Cross"] = 4000,
["Crossreference"] = 2800,
["Crossreference/styles.css"] = 2800,
["Cs1_config"] = 13000,
["Cslist"] = 3700,
["Cslist/styles.css"] = 3700,
["Csv"] = 75000,
["Currency"] = 5400,
["Current_events"] = 9400,
["Current_events/styles.css"] = 9400,
["Currentdate"] = 24000,
["Cvt"] = 167000,
["Cycling_Archives"] = 4300,
["Cycling_data_DAT"] = 2000,
["Cycling_data_LTD"] = 2400,
["Cycling_data_MOV_men"] = 2300,
["Cycling_data_SOQ"] = 2200,
["Cycling_data_TVL"] = 2400,
["Cycling_data_UEX"] = 2300,
["Cycling_team_link"] = 14000,
["Module:CFB_schedule"] = 29000,
["Module:CS1_identifiers"] = 506000,
["Module:CallAssert"] = 122000,
["Module:Canada_NTS"] = 2100,
["Module:Canada_NTS/data"] = 2100,
["Module:Canada_by_province_category_navigation"] = 9900,
["Module:Catalog_lookup_link"] = 61000,
["Module:Category_described_in_year"] = 6400,
["Module:Category_described_in_year/config"] = 6400,
["Module:Category_disambiguation"] = 2700,
["Module:Category_handler"] = 4970000,
["Module:Category_handler/blacklist"] = 4970000,
["Module:Category_handler/config"] = 4970000,
["Module:Category_handler/data"] = 4970000,
["Module:Category_handler/shared"] = 4970000,
["Module:Category_main_article"] = 220000,
["Module:Category_more_if_exists"] = 49000,
["Module:Category_pair"] = 7000,
["Module:Category_see_also"] = 55000,
["Module:Category_series_navigation"] = 597000,
["Module:Category_series_navigation/styles.css"] = 597000,
["Module:Celestial_object_quadrangle"] = 2100,
["Module:Chart"] = 2900,
["Module:Chart/Default_colors"] = 2900,
["Module:Check_DYK_hook"] = 126000,
["Module:Check_blp_parameter"] = 2900000,
["Module:Check_for_conflicting_parameters"] = 4750000,
["Module:Check_for_deprecated_parameters"] = 223000,
["Module:Check_for_unknown_parameters"] = 23300000,
["Module:Check_height"] = 152000,
["Module:Check_isxn"] = 16000,
["Module:Check_winner_by_scores"] = 16000,
["Module:Checkuser"] = 90000,
["Module:Chem2"] = 11000,
["Module:Chem2/styles.css"] = 11000,
["Module:Citation/CS1"] = 6510000,
["Module:Citation/CS1/COinS"] = 6510000,
["Module:Citation/CS1/Configuration"] = 6640000,
["Module:Citation/CS1/Date_validation"] = 6510000,
["Module:Citation/CS1/Identifiers"] = 6640000,
["Module:Citation/CS1/Suggestions"] = 26000,
["Module:Citation/CS1/Utilities"] = 6640000,
["Module:Citation/CS1/Whitelist"] = 6510000,
["Module:Citation/CS1/styles.css"] = 6640000,
["Module:Citation_mode"] = 49000,
["Module:Cite"] = 52000,
["Module:Cite/config"] = 69000,
["Module:Cite_IUCN"] = 70000,
["Module:Cite_Q"] = 17000,
["Module:Cite_Q/config"] = 17000,
["Module:Cite_taxon"] = 54000,
["Module:Cite_tweet"] = 48000,
["Module:Clade"] = 10000,
["Module:Class"] = 62000,
["Module:Class/definition.json"] = 62000,
["Module:Class/styles.css"] = 39000,
["Module:Class_mask"] = 457000,
["Module:Clickable_button"] = 1880000,
["Module:Collapsible_list"] = 70000,
["Module:College_color"] = 137000,
["Module:College_color/data"] = 137000,
["Module:Color_contrast"] = 570000,
["Module:Color_contrast/colors"] = 573000,
["Module:Commons_link"] = 306000,
["Module:Compact_list"] = 2000,
["Module:Complex_date"] = 47000,
["Module:Conservation_status"] = 88000,
["Module:Contentious_topics/talk_notice"] = 21000,
["Module:Convert"] = 1510000,
["Module:Convert/data"] = 1510000,
["Module:Convert/helper"] = 13000,
["Module:Convert/text"] = 1510000,
["Module:Convert/wikidata"] = 2700,
["Module:Convert/wikidata/data"] = 2700,
["Module:ConvertIB"] = 792000,
["Module:ConvertIB/data"] = 267000,
["Module:ConvertNumeric"] = 20000,
["Module:Convert_character_width"] = 2800,
["Module:Convert_character_width/data"] = 2800,
["Module:Coordinates"] = 1410000,
["Module:Coordinates/styles.css"] = 1410000,
["Module:Copied"] = 43000,
["Module:Country2nationality"] = 97000,
["Module:CountryAdjectiveDemonym"] = 116000,
["Module:CountryAdjectiveDemonym/Adjectives"] = 116000,
["Module:CountryAdjectiveDemonym/Demonyms"] = 116000,
["Module:CountryAdjectiveDemonym/The"] = 116000,
["Module:CountryData"] = 474000,
["Module:CountryData/cacheA"] = 172000,
["Module:CountryData/cacheB"] = 87000,
["Module:CountryData/cacheC"] = 62000,
["Module:CountryData/cacheD"] = 59000,
["Module:CountryData/cacheE"] = 40000,
["Module:CountryData/cacheF"] = 28000,
["Module:CountryData/cacheG"] = 29000,
["Module:CountryData/cacheH"] = 19000,
["Module:CountryData/cacheI"] = 18000,
["Module:CountryData/cacheJ"] = 11000,
["Module:CountryData/cacheK"] = 12000,
["Module:CountryData/summary"] = 474000,
["Module:Country_adjective"] = 4600,
["Module:Country_alias"] = 62000,
["Module:Country_alias/data"] = 62000,
["Module:Cslist"] = 3700,
["Module:Currency"] = 5400,
["Module:Currency/Presentation"] = 5400,
}
m84kut0b3jytay6px7p2c7bg16xng8s
Template:Main
10
7753
73872
71886
2026-07-09T05:15:34Z
Steel1943
2662
Undid revision [[Special:Diff/1363280637|1363280637]] by [[Special:Contributions/Steel1943|Steel1943]] ([[User talk:Steel1943|talk]]) apparently should have tested it since it doesn't work
71885
wikitext
text/x-wiki
<includeonly>{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
hz9saa715ercns6m73a0a1ud2ptzt26
73873
73872
2026-07-11T18:58:59Z
Robertsky
10424
1 versaun husi [[:en:Template:Main]]
71885
wikitext
text/x-wiki
<includeonly>{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
hz9saa715ercns6m73a0a1ud2ptzt26
Módulo:Transclusion count/data/W
828
8060
74048
73818
2026-07-12T05:13:02Z
en>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
74048
Scribunto
text/plain
return {
["WAL"] = 2200,
["WDL"] = 8100,
["WDLtot"] = 6500,
["WIA"] = 2000,
["WP1"] = 5100,
["WPB"] = 2100,
["WPBS"] = 27000,
["WPB_Announcements"] = 20000,
["WPCC"] = 256000,
["WPEUR10k"] = 9500,
["WPEUR20k"] = 16000,
["WPLA10k"] = 3200,
["WPMILHIST"] = 2200,
["WPMILHIST_Infobox_style"] = 109000,
["WPOCEANIA10k"] = 3900,
["WPSS-cat"] = 22000,
["WPTC_track_map_key"] = 2200,
["WPUKIR10k"] = 11000,
["WPUKIR20k"] = 11000,
["WPUS"] = 3100,
["WPVG_announcements"] = 118000,
["WPVG_announcements/shell"] = 118000,
["WPVG_icon"] = 36000,
["WPVG_icon_direct"] = 157000,
["WPX_action_box"] = 2900,
["WPX_block"] = 2200,
["WPX_last_updated"] = 5100,
["WPX_list_end"] = 2200,
["WPX_list_start"] = 2200,
["WPX_subheader"] = 3000,
["WP_Architecture"] = 4300,
["WP_Athletics"] = 2400,
["WP_Crime"] = 2400,
["WP_Women"] = 2300,
["WP_Years"] = 5100,
["WP_banner_shell"] = 5500,
["WRMS_source"] = 2700,
["WRMS_species"] = 15000,
["WTA"] = 3900,
["Warning"] = 56000,
["Watch"] = 29000,
["Wb"] = 2100,
["Wbr"] = 2300,
["Wd"] = 2400,
["Wdib"] = 18000,
["Weather_box"] = 32000,
["Webarchive"] = 692000,
["Wednesday"] = 2800,
["Welcome_ISP"] = 4100,
["Welcome_graphical/links"] = 61000,
["Welcomeg/links"] = 61000,
["Western_name_order"] = 7600,
["What_links_here"] = 13000,
["When"] = 27000,
["Where"] = 2400,
["Which"] = 6600,
["Whisperback"] = 2700,
["White"] = 94000,
["Who"] = 11000,
["Who's_Who"] = 3700,
["Whois"] = 9500,
["Whyte"] = 2100,
["Whyte_suffix"] = 2100,
["Wide_image"] = 9600,
["WikiProjectBannerShell"] = 85000,
["WikiProjectCard"] = 3200,
["WikiProject_2010s"] = 3600,
["WikiProject_Academic_Journals"] = 36000,
["WikiProject_Afghanistan"] = 12000,
["WikiProject_Africa"] = 236000,
["WikiProject_African_diaspora"] = 26000,
["WikiProject_AfroCreatives"] = 9700,
["WikiProject_Agriculture"] = 14000,
["WikiProject_Alabama"] = 20000,
["WikiProject_Alaska"] = 12000,
["WikiProject_Albania"] = 17000,
["WikiProject_Albums"] = 406000,
["WikiProject_Algae"] = 5900,
["WikiProject_Algeria"] = 8600,
["WikiProject_Alternative_medicine"] = 2400,
["WikiProject_Alternative_music"] = 15000,
["WikiProject_Alternative_views"] = 2300,
["WikiProject_American_Open_Wheel_Racing"] = 4100,
["WikiProject_American_football"] = 12000,
["WikiProject_Amphibians_and_Reptiles"] = 36000,
["WikiProject_Amusement_Parks"] = 7300,
["WikiProject_Amusement_Parks/importance"] = 7300,
["WikiProject_Anarchism"] = 4000,
["WikiProject_Anarchism_cleanup_issue_count"] = 4000,
["WikiProject_Anatomy"] = 22000,
["WikiProject_Ancient_Egypt"] = 6000,
["WikiProject_Ancient_Near_East"] = 7500,
["WikiProject_Anglicanism"] = 13000,
["WikiProject_Anglo-Saxon_Kingdoms"] = 2300,
["WikiProject_Animal_rights"] = 2800,
["WikiProject_Animals"] = 35000,
["WikiProject_Animation"] = 41000,
["WikiProject_Animation/importance"] = 41000,
["WikiProject_Anime_and_manga"] = 44000,
["WikiProject_Antarctica"] = 18000,
["WikiProject_Anthropology"] = 12000,
["WikiProject_Anthroponymy"] = 144000,
["WikiProject_Antigua_and_Barbuda"] = 2800,
["WikiProject_Apple_Inc."] = 3400,
["WikiProject_Apps"] = 2400,
["WikiProject_Arab_world"] = 6800,
["WikiProject_Archaeology"] = 24000,
["WikiProject_Architecture"] = 177000,
["WikiProject_Arctic"] = 3200,
["WikiProject_Arena_Football_League"] = 2800,
["WikiProject_Argentina"] = 36000,
["WikiProject_Arizona"] = 6200,
["WikiProject_Armenia"] = 13000,
["WikiProject_Arthropods"] = 32000,
["WikiProject_Articles_for_creation"] = 232000,
["WikiProject_Arts"] = 12000,
["WikiProject_Asia"] = 34000,
["WikiProject_Asian_Month"] = 2700,
["WikiProject_Assyria"] = 5400,
["WikiProject_Astronomy"] = 94000,
["WikiProject_Astronomy/importance"] = 94000,
["WikiProject_Athletics"] = 89000,
["WikiProject_Auckland"] = 3200,
["WikiProject_Australia"] = 287000,
["WikiProject_Australia/ACR"] = 287000,
["WikiProject_Austria"] = 38000,
["WikiProject_Autism"] = 2400,
["WikiProject_Automobiles"] = 23000,
["WikiProject_Aviation"] = 84000,
["WikiProject_Awards"] = 45000,
["WikiProject_Azerbaijan"] = 17000,
["WikiProject_BBC"] = 9300,
["WikiProject_Badminton"] = 9200,
["WikiProject_Bahrain"] = 3600,
["WikiProject_Bangladesh"] = 32000,
["WikiProject_BannerShell"] = 3500,
["WikiProject_Banner_Shell"] = 8700,
["WikiProject_Baseball"] = 95000,
["WikiProject_Basketball"] = 72000,
["WikiProject_Basque"] = 3500,
["WikiProject_Bavaria"] = 7200,
["WikiProject_Beauty_Pageants"] = 9300,
["WikiProject_Beer"] = 4600,
["WikiProject_Beetles"] = 82000,
["WikiProject_Belarus"] = 12000,
["WikiProject_Belgium"] = 40000,
["WikiProject_Belize"] = 2700,
["WikiProject_Berkshire"] = 2300,
["WikiProject_Bhutan"] = 2800,
["WikiProject_Biathlon"] = 3100,
["WikiProject_Bible"] = 8500,
["WikiProject_Biography"] = 2900000,
["WikiProject_Biology"] = 10000,
["WikiProject_Birds"] = 33000,
["WikiProject_Bivalves"] = 3700,
["WikiProject_Board_and_table_games"] = 9700,
["WikiProject_Bolivia"] = 8300,
["WikiProject_Books"] = 85000,
["WikiProject_Bosnia_and_Herzegovina"] = 16000,
["WikiProject_Boxing"] = 20000,
["WikiProject_Brands"] = 24000,
["WikiProject_Brazil"] = 70000,
["WikiProject_Bridges_and_Tunnels"] = 14000,
["WikiProject_Bristol"] = 2600,
["WikiProject_British_Empire"] = 14000,
["WikiProject_British_Motorsport"] = 2400,
["WikiProject_British_Overseas_Territories"] = 22000,
["WikiProject_Buckinghamshire"] = 2300,
["WikiProject_Buddhism"] = 9500,
["WikiProject_Bulgaria"] = 24000,
["WikiProject_Buses"] = 7400,
["WikiProject_Business"] = 56000,
["WikiProject_COVID-19"] = 4500,
["WikiProject_California"] = 92000,
["WikiProject_Cambodia"] = 6000,
["WikiProject_Cambodia/to_do"] = 6000,
["WikiProject_Canada"] = 256000,
["WikiProject_Canada/TFtext"] = 256000,
["WikiProject_Canada_Roads"] = 2900,
["WikiProject_Canada_Roads/class"] = 2900,
["WikiProject_Canadian_football"] = 11000,
["WikiProject_Cannabis"] = 2600,
["WikiProject_Canoeing_and_Kayaking"] = 7700,
["WikiProject_Caribbean"] = 54000,
["WikiProject_Cartoon_Network"] = 2900,
["WikiProject_Catalan-speaking_countries"] = 4500,
["WikiProject_Catalonia"] = 3500,
["WikiProject_Categories"] = 6400,
["WikiProject_Catholicism"] = 66000,
["WikiProject_Caves"] = 2300,
["WikiProject_Celts"] = 2200,
["WikiProject_Cemeteries"] = 11000,
["WikiProject_Central_America"] = 9500,
["WikiProject_Central_Asia"] = 23000,
["WikiProject_Central_Asia/importance"] = 23000,
["WikiProject_Cephalopods"] = 5000,
["WikiProject_Chemicals"] = 30000,
["WikiProject_Chemistry"] = 18000,
["WikiProject_Cheshire"] = 4400,
["WikiProject_Chess"] = 9400,
["WikiProject_Chess/importance"] = 9400,
["WikiProject_Chicago"] = 42000,
["WikiProject_Children's_literature"] = 26000,
["WikiProject_Chile"] = 24000,
["WikiProject_China"] = 123000,
["WikiProject_Christian_music"] = 8000,
["WikiProject_Christianity"] = 94000,
["WikiProject_Cities"] = 502000,
["WikiProject_Civil_Rights_Movement"] = 2100,
["WikiProject_Civil_Rights_Movement/article_todolist"] = 2100,
["WikiProject_Civil_engineering"] = 22000,
["WikiProject_Classical_Greece_and_Rome"] = 32000,
["WikiProject_Classical_music"] = 35000,
["WikiProject_Cleveland"] = 3000,
["WikiProject_Climate_change"] = 4900,
["WikiProject_Climbing"] = 3000,
["WikiProject_Cold_War"] = 3400,
["WikiProject_College_Basketball"] = 36000,
["WikiProject_College_basketball"] = 63000,
["WikiProject_College_football"] = 166000,
["WikiProject_College_football/importance"] = 166000,
["WikiProject_Colombia"] = 20000,
["WikiProject_Comedy"] = 44000,
["WikiProject_Comics"] = 60000,
["WikiProject_Comics/importance"] = 60000,
["WikiProject_Companies"] = 120000,
["WikiProject_Composers"] = 20000,
["WikiProject_Computer_Security"] = 2500,
["WikiProject_Computer_science"] = 9100,
["WikiProject_Computer_security"] = 2900,
["WikiProject_Computing"] = 49000,
["WikiProject_Concerts"] = 8000,
["WikiProject_Connecticut"] = 18000,
["WikiProject_Conservatism"] = 11000,
["WikiProject_Cooperatives"] = 2400,
["WikiProject_Cornwall"] = 6300,
["WikiProject_Cornwall/guide"] = 6300,
["WikiProject_Correction_and_Detention_Facilities"] = 4900,
["WikiProject_Costa_Rica"] = 6700,
["WikiProject_Countries"] = 28000,
["WikiProject_Country_Music"] = 12000,
["WikiProject_Country_music"] = 16000,
["WikiProject_Cricket"] = 65000,
["WikiProject_Cricket/importance"] = 65000,
["WikiProject_Crime"] = 11000,
["WikiProject_Crime_and_Criminal_Biography"] = 76000,
["WikiProject_Croatia"] = 29000,
["WikiProject_Crusades"] = 3200,
["WikiProject_Cuba"] = 10000,
["WikiProject_Cue_sports"] = 2600,
["WikiProject_Culture"] = 14000,
["WikiProject_Curling"] = 7700,
["WikiProject_Current_events"] = 8400,
["WikiProject_Cycling"] = 44000,
["WikiProject_Cyprus"] = 7400,
["WikiProject_Czech_Republic"] = 38000,
["WikiProject_Dallas-Fort_Worth"] = 3300,
["WikiProject_Dams"] = 7300,
["WikiProject_Dance"] = 17000,
["WikiProject_Darts"] = 2200,
["WikiProject_Deaf"] = 2300,
["WikiProject_Death"] = 57000,
["WikiProject_Denmark"] = 43000,
["WikiProject_Derbyshire"] = 3600,
["WikiProject_Devon"] = 5700,
["WikiProject_Dinosaurs"] = 5900,
["WikiProject_Diptera"] = 23000,
["WikiProject_Disability"] = 28000,
["WikiProject_Disambiguation"] = 350000,
["WikiProject_Disaster_management"] = 27000,
["WikiProject_Discographies"] = 7700,
["WikiProject_Discrimination"] = 8300,
["WikiProject_Disney"] = 11000,
["WikiProject_Doctor_Who"] = 4300,
["WikiProject_Dogs"] = 4100,
["WikiProject_Dorset"] = 3100,
["WikiProject_Drag_Race"] = 2100,
["WikiProject_Dungeons_&_Dragons"] = 6600,
["WikiProject_Dungeons_&_Dragons/importance"] = 6600,
["WikiProject_Earthquakes"] = 3600,
["WikiProject_EastEnders"] = 2500,
["WikiProject_East_Anglia"] = 10000,
["WikiProject_East_Timor"] = 2100,
["WikiProject_Eastern_Orthodoxy"] = 3100,
["WikiProject_Ecology"] = 3900,
["WikiProject_Economics"] = 24000,
["WikiProject_Ecoregions"] = 2700,
["WikiProject_Ecuador"] = 11000,
["WikiProject_Edit_requests"] = 4200,
["WikiProject_Education"] = 41000,
["WikiProject_Egypt"] = 18000,
["WikiProject_El_Salvador"] = 4800,
["WikiProject_Elections_and_Referendums"] = 142000,
["WikiProject_Electrical_engineering"] = 4900,
["WikiProject_Electronic_music"] = 19000,
["WikiProject_Electronics"] = 6800,
["WikiProject_Elements"] = 10000,
["WikiProject_Energy"] = 28000,
["WikiProject_Engineering"] = 16000,
["WikiProject_England"] = 123000,
["WikiProject_English_Language"] = 3000,
["WikiProject_Environment"] = 22000,
["WikiProject_Equine"] = 8700,
["WikiProject_Espionage"] = 3200,
["WikiProject_Essays"] = 2600,
["WikiProject_Estonia"] = 24000,
["WikiProject_Ethiopia"] = 6900,
["WikiProject_Ethnic_groups"] = 14000,
["WikiProject_Ethnic_groups_tasks"] = 14000,
["WikiProject_Europe"] = 42000,
["WikiProject_European_Microstates"] = 14000,
["WikiProject_European_Union"] = 10000,
["WikiProject_European_history"] = 16000,
["WikiProject_Eurovision"] = 5200,
["WikiProject_Event_Venues"] = 14000,
["WikiProject_Explosives"] = 2200,
["WikiProject_Faroe_Islands"] = 2800,
["WikiProject_Fashion"] = 14000,
["WikiProject_Feminism"] = 11000,
["WikiProject_Fencing"] = 8400,
["WikiProject_Festivals"] = 11000,
["WikiProject_Fictional_characters"] = 95000,
["WikiProject_Fictional_characters/class"] = 95000,
["WikiProject_Figure_Skating"] = 8400,
["WikiProject_Fiji"] = 5800,
["WikiProject_Film"] = 430000,
["WikiProject_Finance_&_Investment"] = 25000,
["WikiProject_Finland"] = 40000,
["WikiProject_Firearms"] = 13000,
["WikiProject_Firefighting"] = 4200,
["WikiProject_Fisheries_and_Fishing"] = 3300,
["WikiProject_Fishes"] = 45000,
["WikiProject_Florida"] = 34000,
["WikiProject_Folklore"] = 3900,
["WikiProject_Food_and_drink"] = 69000,
["WikiProject_Football"] = 527000,
["WikiProject_Forestry"] = 3300,
["WikiProject_Former_countries"] = 38000,
["WikiProject_Formula_One"] = 8300,
["WikiProject_France"] = 204000,
["WikiProject_Fraternities_and_Sororities"] = 4300,
["WikiProject_Fungi"] = 33000,
["WikiProject_Futures_studies"] = 2100,
["WikiProject_Gaelic_games"] = 21000,
["WikiProject_Gambling"] = 5200,
["WikiProject_Gastropods"] = 49000,
["WikiProject_Gender_studies"] = 5600,
["WikiProject_Genealogy"] = 7500,
["WikiProject_Geography"] = 99000,
["WikiProject_Geology"] = 32000,
["WikiProject_Georgia_(U.S._state)"] = 27000,
["WikiProject_Georgia_(country)"] = 12000,
["WikiProject_Germany"] = 188000,
["WikiProject_Ghana"] = 9000,
["WikiProject_Ghost_towns"] = 2900,
["WikiProject_Gibraltar"] = 2600,
["WikiProject_Glaciers"] = 3900,
["WikiProject_Gloucestershire"] = 3200,
["WikiProject_Golf"] = 18000,
["WikiProject_Google"] = 2200,
["WikiProject_Greater_Manchester"] = 7600,
["WikiProject_Greece"] = 58000,
["WikiProject_Green_Bay_Packers"] = 3300,
["WikiProject_Greenland"] = 3200,
["WikiProject_Guatemala"] = 5400,
["WikiProject_Guild_of_Copy_Editors"] = 12000,
["WikiProject_Guitarists"] = 4400,
["WikiProject_Gymnastics"] = 13000,
["WikiProject_Haiti"] = 6000,
["WikiProject_Hampshire"] = 4600,
["WikiProject_Handball"] = 16000,
["WikiProject_Hawaii"] = 10000,
["WikiProject_Health_and_fitness"] = 7100,
["WikiProject_Heraldry"] = 3400,
["WikiProject_Heraldry_and_vexillology"] = 18000,
["WikiProject_Hertfordshire"] = 3600,
["WikiProject_Higher_education"] = 93000,
["WikiProject_Higher_education/config"] = 93000,
["WikiProject_Highways"] = 16000,
["WikiProject_Highways/class"] = 16000,
["WikiProject_Hinduism"] = 11000,
["WikiProject_Hip-hop"] = 31000,
["WikiProject_Hip_hop"] = 20000,
["WikiProject_Historic_sites"] = 30000,
["WikiProject_History"] = 78000,
["WikiProject_History_of_Science"] = 6100,
["WikiProject_Holidays"] = 5500,
["WikiProject_Home_Living"] = 3700,
["WikiProject_Honduras"] = 3900,
["WikiProject_Hong_Kong"] = 26000,
["WikiProject_Horror"] = 19000,
["WikiProject_Horse_racing"] = 16000,
["WikiProject_Horticulture_and_Gardening"] = 5000,
["WikiProject_Hospitals"] = 13000,
["WikiProject_Hotels"] = 6200,
["WikiProject_Houston"] = 4200,
["WikiProject_Human_rights"] = 18000,
["WikiProject_Hungary"] = 34000,
["WikiProject_Ice_Hockey"] = 67000,
["WikiProject_Iceland"] = 12000,
["WikiProject_Illinois"] = 43000,
["WikiProject_Indexes"] = 2400,
["WikiProject_India"] = 308000,
["WikiProject_Indigenous_peoples_of_North_America"] = 20000,
["WikiProject_Indigenous_peoples_of_the_Americas"] = 5600,
["WikiProject_Indonesia"] = 38000,
["WikiProject_Industrial"] = 4600,
["WikiProject_Industrial_design"] = 3800,
["WikiProject_Industrial_tasks"] = 4600,
["WikiProject_Insects"] = 126000,
["WikiProject_International_relations"] = 95000,
["WikiProject_Internet"] = 10000,
["WikiProject_Internet_culture"] = 9900,
["WikiProject_Intertranswiki/OKA"] = 5400,
["WikiProject_Iran"] = 96000,
["WikiProject_Iraq"] = 13000,
["WikiProject_Ireland"] = 106000,
["WikiProject_Islam"] = 25000,
["WikiProject_Islands"] = 17000,
["WikiProject_Isle_of_Man"] = 3100,
["WikiProject_Israel"] = 36000,
["WikiProject_Italy"] = 130000,
["WikiProject_Japan"] = 147000,
["WikiProject_Jazz"] = 46000,
["WikiProject_Jewish_Women"] = 3600,
["WikiProject_Jewish_culture"] = 2200,
["WikiProject_Jewish_history"] = 13000,
["WikiProject_Jordan"] = 5400,
["WikiProject_Journalism"] = 51000,
["WikiProject_Judaism"] = 26000,
["WikiProject_Kansas"] = 16000,
["WikiProject_Kent"] = 5400,
["WikiProject_Kingdom_of_Naples"] = 2400,
["WikiProject_Korea"] = 68000,
["WikiProject_Kosovo"] = 5800,
["WikiProject_Kurdistan"] = 6700,
["WikiProject_Kuwait"] = 2800,
["WikiProject_Kyrgyzstan"] = 3400,
["WikiProject_LGBTQ+_studies"] = 44000,
["WikiProject_LGBT_studies"] = 23000,
["WikiProject_Lacrosse"] = 3700,
["WikiProject_Lakes"] = 22000,
["WikiProject_Lancashire_and_Cumbria"] = 8900,
["WikiProject_Languages"] = 25000,
["WikiProject_Latin"] = 2100,
["WikiProject_Latin_America"] = 3100,
["WikiProject_Latin_music"] = 20000,
["WikiProject_Latino_and_Hispanic_heritage"] = 16000,
["WikiProject_Latter_Day_Saint_movement"] = 5300,
["WikiProject_Latvia"] = 14000,
["WikiProject_Law"] = 92000,
["WikiProject_Law_Enforcement"] = 17000,
["WikiProject_Leaders_by_year"] = 2600,
["WikiProject_Lebanon"] = 11000,
["WikiProject_Lepidoptera"] = 127000,
["WikiProject_Libraries"] = 13000,
["WikiProject_Library_of_Congress"] = 2300,
["WikiProject_Lighthouses"] = 4000,
["WikiProject_Lincolnshire"] = 5100,
["WikiProject_Linguistics"] = 17000,
["WikiProject_Lists"] = 221000,
["WikiProject_Lists/class"] = 221000,
["WikiProject_Literature"] = 42000,
["WikiProject_Lithuania"] = 18000,
["WikiProject_London"] = 40000,
["WikiProject_London_Transport"] = 3300,
["WikiProject_Lower_Saxony"] = 2100,
["WikiProject_Lutheranism"] = 4100,
["WikiProject_Luxembourg"] = 7200,
["WikiProject_Macau"] = 2400,
["WikiProject_Magazines"] = 23000,
["WikiProject_Maine"] = 12000,
["WikiProject_Malaysia"] = 31000,
["WikiProject_Maldives"] = 3900,
["WikiProject_Malta"] = 6400,
["WikiProject_Mammals"] = 21000,
["WikiProject_Maps"] = 11000,
["WikiProject_Marine_life"] = 17000,
["WikiProject_Marketing_&_Advertising"] = 6800,
["WikiProject_Martial_arts"] = 40000,
["WikiProject_Maryland"] = 21000,
["WikiProject_Mathematics"] = 33000,
["WikiProject_Media"] = 24000,
["WikiProject_Media_franchises"] = 3300,
["WikiProject_Medicine"] = 79000,
["WikiProject_Melanesia"] = 9500,
["WikiProject_Merseyside"] = 4400,
["WikiProject_Mesoamerica"] = 3100,
["WikiProject_Metal"] = 28000,
["WikiProject_Metalworking"] = 2700,
["WikiProject_Mexico"] = 60000,
["WikiProject_Miami"] = 2900,
["WikiProject_Michigan"] = 33000,
["WikiProject_Microbiology"] = 23000,
["WikiProject_Micronesia"] = 9100,
["WikiProject_Microsoft"] = 2900,
["WikiProject_Microsoft_Windows"] = 2500,
["WikiProject_Middle_Ages"] = 33000,
["WikiProject_Military_history"] = 345000,
["WikiProject_Military_history/Checklist_categories"] = 163000,
["WikiProject_Military_history/Class"] = 345000,
["WikiProject_Military_history/Special_project_categories"] = 345000,
["WikiProject_Military_history/Special_project_phase"] = 345000,
["WikiProject_Military_history/Task_force_categories"] = 373000,
["WikiProject_Military_history/YesNo"] = 278000,
["WikiProject_Military_history/class"] = 345000,
["WikiProject_Mills"] = 2800,
["WikiProject_Mining"] = 9100,
["WikiProject_Minnesota"] = 26000,
["WikiProject_Missouri"] = 27000,
["WikiProject_Mixed_martial_arts"] = 7300,
["WikiProject_Moldova"] = 7400,
["WikiProject_Molecular_Biology"] = 39000,
["WikiProject_Mongols"] = 6500,
["WikiProject_Montana"] = 10000,
["WikiProject_Montenegro"] = 7200,
["WikiProject_Morocco"] = 11000,
["WikiProject_Motorcycle_racing"] = 7300,
["WikiProject_Motorcycling"] = 8500,
["WikiProject_Motorsport"] = 29000,
["WikiProject_Mountains"] = 39000,
["WikiProject_Multi-sport_events"] = 49000,
["WikiProject_Museums"] = 34000,
["WikiProject_Music/Music_genres_task_force"] = 6100,
["WikiProject_Music_theory"] = 2300,
["WikiProject_Musical_Instruments"] = 5800,
["WikiProject_Musical_Theatre"] = 8200,
["WikiProject_Myanmar"] = 13000,
["WikiProject_Mythology"] = 14000,
["WikiProject_NASCAR"] = 9100,
["WikiProject_National_Basketball_Association"] = 17000,
["WikiProject_National_Football_League"] = 54000,
["WikiProject_National_Register_of_Historic_Places"] = 96000,
["WikiProject_National_Register_of_Historic_Places/importance"] = 96000,
["WikiProject_Nepal"] = 21000,
["WikiProject_Netball"] = 2100,
["WikiProject_Netherlands"] = 63000,
["WikiProject_Neuroscience"] = 5500,
["WikiProject_Nevada"] = 9500,
["WikiProject_New_Jersey"] = 28000,
["WikiProject_New_York_(state)"] = 54000,
["WikiProject_New_York_City"] = 36000,
["WikiProject_New_Zealand"] = 84000,
["WikiProject_Newspapers"] = 19000,
["WikiProject_Nicaragua"] = 3400,
["WikiProject_Nigeria"] = 25000,
["WikiProject_Normandy"] = 4700,
["WikiProject_Norse_history_and_culture"] = 3700,
["WikiProject_North_America"] = 15000,
["WikiProject_North_America/importance"] = 15000,
["WikiProject_North_East_England"] = 6600,
["WikiProject_North_Macedonia"] = 8200,
["WikiProject_Northern_Ireland"] = 23000,
["WikiProject_Norway"] = 64000,
["WikiProject_Nottinghamshire"] = 3000,
["WikiProject_Novels"] = 95000,
["WikiProject_Numismatics"] = 8200,
["WikiProject_Nursing"] = 2400,
["WikiProject_Occult"] = 2800,
["WikiProject_Occupational_Safety_and_Health"] = 3400,
["WikiProject_Occupations"] = 5800,
["WikiProject_Oceania"] = 10000,
["WikiProject_Oceans"] = 3300,
["WikiProject_Ohio"] = 9700,
["WikiProject_Oklahoma"] = 16000,
["WikiProject_Olympics"] = 211000,
["WikiProject_Oman"] = 2400,
["WikiProject_Opera"] = 18000,
["WikiProject_Orders,_decorations,_and_medals"] = 7800,
["WikiProject_Oregon"] = 28000,
["WikiProject_Oregon/errors"] = 28000,
["WikiProject_Oregon_collab"] = 28000,
["WikiProject_Organizations"] = 61000,
["WikiProject_Organized_Labour"] = 14000,
["WikiProject_Overseas_France"] = 6200,
["WikiProject_Pakistan"] = 47000,
["WikiProject_Palaeontology"] = 35000,
["WikiProject_Palestine"] = 15000,
["WikiProject_Panama"] = 4800,
["WikiProject_Papua_New_Guinea"] = 6000,
["WikiProject_Paraguay"] = 4600,
["WikiProject_Paranormal"] = 2900,
["WikiProject_Pennsylvania"] = 55000,
["WikiProject_Peru"] = 19000,
["WikiProject_Pharmacology"] = 19000,
["WikiProject_Philadelphia"] = 12000,
["WikiProject_Philately"] = 5200,
["WikiProject_Philippines"] = 6400,
["WikiProject_Philosophy"] = 24000,
["WikiProject_Photography"] = 17000,
["WikiProject_Physics"] = 30000,
["WikiProject_Physiology"] = 4200,
["WikiProject_Pittsburgh"] = 6400,
["WikiProject_Plants"] = 157000,
["WikiProject_Podcasting"] = 2800,
["WikiProject_Poetry"] = 27000,
["WikiProject_Pokémon"] = 4000,
["WikiProject_Pokémon/class"] = 4000,
["WikiProject_Poland"] = 118000,
["WikiProject_Politics"] = 284000,
["WikiProject_Politics_of_the_United_Kingdom"] = 55000,
["WikiProject_Polynesia"] = 16000,
["WikiProject_Pop_music"] = 37000,
["WikiProject_Popular_culture"] = 3900,
["WikiProject_Pornography"] = 5200,
["WikiProject_Portals"] = 2600,
["WikiProject_Portals/class"] = 2600,
["WikiProject_Portals/importance"] = 2600,
["WikiProject_Portals/importancescale"] = 2600,
["WikiProject_Portugal"] = 34000,
["WikiProject_Post-hardcore"] = 4400,
["WikiProject_Primates"] = 2800,
["WikiProject_Pritzker-GLAM"] = 3000,
["WikiProject_Professional_sound_production"] = 2600,
["WikiProject_Professional_wrestling"] = 19000,
["WikiProject_Progressive_Rock"] = 4200,
["WikiProject_Protected_areas"] = 30000,
["WikiProject_Protista"] = 5300,
["WikiProject_Psychoactive_and_Recreational_Drugs"] = 2500,
["WikiProject_Psychology"] = 21000,
["WikiProject_Puerto_Rico"] = 16000,
["WikiProject_Punk_music"] = 8600,
["WikiProject_Qatar"] = 4800,
["WikiProject_R&B_and_Soul_Music"] = 19000,
["WikiProject_Radio"] = 15000,
["WikiProject_Radio_Stations"] = 43000,
["WikiProject_Record_Charts"] = 5500,
["WikiProject_Record_Labels"] = 15000,
["WikiProject_Record_Production"] = 7500,
["WikiProject_Redirect"] = 6500,
["WikiProject_Redirect/class"] = 6500,
["WikiProject_Referees"] = 4500,
["WikiProject_Reggae"] = 3300,
["WikiProject_Regional_and_national_music"] = 10000,
["WikiProject_Religion"] = 36000,
["WikiProject_Religious_Buildings,_Architecture_and_Monasticism"] = 2000,
["WikiProject_Religious_texts"] = 2600,
["WikiProject_Retailing"] = 5900,
["WikiProject_Retailing/importance"] = 5900,
["WikiProject_Rivers"] = 60000,
["WikiProject_Robotics"] = 3500,
["WikiProject_Rock_music"] = 34000,
["WikiProject_Rocketry"] = 2600,
["WikiProject_Rocketry/importance"] = 2600,
["WikiProject_Rocks_and_minerals"] = 3200,
["WikiProject_Rodents"] = 5400,
["WikiProject_Role-playing_games"] = 7600,
["WikiProject_Romance"] = 3400,
["WikiProject_Romania"] = 45000,
["WikiProject_Rome"] = 4100,
["WikiProject_Roots_music"] = 5900,
["WikiProject_Rowing"] = 14000,
["WikiProject_Royalty_and_Nobility"] = 7000,
["WikiProject_Rugby_league"] = 21000,
["WikiProject_Rugby_union"] = 42000,
["WikiProject_Running"] = 27000,
["WikiProject_Russia"] = 134000,
["WikiProject_Sailing"] = 14000,
["WikiProject_Saints"] = 6400,
["WikiProject_San_Diego"] = 3600,
["WikiProject_Saudi_Arabia"] = 10000,
["WikiProject_Schools"] = 89000,
["WikiProject_Science"] = 20000,
["WikiProject_Science_Fiction"] = 20000,
["WikiProject_Science_fiction"] = 2400,
["WikiProject_Scotland"] = 62000,
["WikiProject_Scottish_Islands"] = 3300,
["WikiProject_Scouting"] = 7900,
["WikiProject_Screenwriters"] = 2700,
["WikiProject_Sculpture"] = 17000,
["WikiProject_Serbia"] = 30000,
["WikiProject_Sexology_and_sexuality"] = 10000,
["WikiProject_Shakespeare"] = 2200,
["WikiProject_Ships"] = 91000,
["WikiProject_Shipwrecks"] = 8200,
["WikiProject_Shopping_Centers"] = 5900,
["WikiProject_Sicily"] = 3900,
["WikiProject_Singapore"] = 16000,
["WikiProject_Skepticism"] = 6200,
["WikiProject_Skiing_and_Snowboarding"] = 22000,
["WikiProject_Skyscrapers"] = 6300,
["WikiProject_Slovakia"] = 19000,
["WikiProject_Slovenia"] = 22000,
["WikiProject_Snooker"] = 3300,
["WikiProject_Soap_Operas"] = 22000,
["WikiProject_Socialism"] = 26000,
["WikiProject_Sociology"] = 51000,
["WikiProject_Softball"] = 5600,
["WikiProject_Software"] = 16000,
["WikiProject_Somalia"] = 3200,
["WikiProject_Somerset"] = 4900,
["WikiProject_Song_Contests"] = 9200,
["WikiProject_Songs"] = 237000,
["WikiProject_South_Africa"] = 50000,
["WikiProject_South_America"] = 37000,
["WikiProject_South_Dakota"] = 9300,
["WikiProject_Southeast_Asia"] = 16000,
["WikiProject_Soviet_Union"] = 27000,
["WikiProject_Spaceflight"] = 14000,
["WikiProject_Spain"] = 97000,
["WikiProject_Speed_Skating"] = 6100,
["WikiProject_Spiders"] = 16000,
["WikiProject_Sports"] = 179000,
["WikiProject_Sports_Car_Racing"] = 5400,
["WikiProject_Squash"] = 2800,
["WikiProject_Sri_Lanka"] = 31000,
["WikiProject_St._Louis"] = 3300,
["WikiProject_Star_Trek"] = 4200,
["WikiProject_Star_Wars"] = 6100,
["WikiProject_Statistics"] = 7400,
["WikiProject_Stub_sorting"] = 67000,
["WikiProject_Stub_sorting_category"] = 22000,
["WikiProject_Stub_sorting_category/styles.css"] = 22000,
["WikiProject_Surrey"] = 2800,
["WikiProject_Sussex"] = 4500,
["WikiProject_Sweden"] = 74000,
["WikiProject_Swimming"] = 40000,
["WikiProject_Switzerland"] = 50000,
["WikiProject_Syria"] = 13000,
["WikiProject_Systems"] = 4900,
["WikiProject_Table_tennis"] = 4700,
["WikiProject_Taiwan"] = 22000,
["WikiProject_Tajikistan"] = 2600,
["WikiProject_Tambayan_Philippines"] = 59000,
["WikiProject_Taxation"] = 2300,
["WikiProject_Technology"] = 19000,
["WikiProject_Telecommunications"] = 11000,
["WikiProject_Television"] = 325000,
["WikiProject_Television/config"] = 325000,
["WikiProject_Templates"] = 33000,
["WikiProject_Tennessee"] = 21000,
["WikiProject_Tennis"] = 63000,
["WikiProject_Textile_Arts"] = 2800,
["WikiProject_Textile_arts"] = 3700,
["WikiProject_Thailand"] = 28000,
["WikiProject_The_Beatles"] = 5100,
["WikiProject_The_Simpsons"] = 2300,
["WikiProject_Theatre"] = 41000,
["WikiProject_Theology"] = 2500,
["WikiProject_Tibet"] = 4000,
["WikiProject_Time"] = 18000,
["WikiProject_Timor-Leste"] = 2200,
["WikiProject_Toys"] = 4000,
["WikiProject_Trade"] = 2900,
["WikiProject_Trains"] = 153000,
["WikiProject_Trains/portalbox"] = 153000,
["WikiProject_Translation_studies"] = 2600,
["WikiProject_Transport"] = 34000,
["WikiProject_Travel_and_Tourism"] = 16000,
["WikiProject_Tree_of_Life"] = 9100,
["WikiProject_Trinidad_and_Tobago"] = 5100,
["WikiProject_Tunisia"] = 5700,
["WikiProject_Turkey"] = 68000,
["WikiProject_Turkmenistan"] = 2300,
["WikiProject_Turtles"] = 3700,
["WikiProject_Typography"] = 2900,
["WikiProject_U.S._Congress"] = 25000,
["WikiProject_U.S._Roads"] = 34000,
["WikiProject_U.S._Roads/StateName"] = 33000,
["WikiProject_U.S._Roads/articletest"] = 34000,
["WikiProject_U.S._Roads/cats"] = 34000,
["WikiProject_U.S._Roads/cats/core"] = 34000,
["WikiProject_U.S._Roads/cats/istemplate"] = 34000,
["WikiProject_U.S._Roads/class"] = 34000,
["WikiProject_U.S._Roads/overcat"] = 33000,
["WikiProject_U.S._Supreme_Court_cases"] = 6300,
["WikiProject_UK_Parliament_constituencies"] = 2300,
["WikiProject_UK_geography"] = 38000,
["WikiProject_Ukraine"] = 44000,
["WikiProject_Ukraine/class"] = 44000,
["WikiProject_Underwater_diving"] = 3900,
["WikiProject_United_Arab_Emirates"] = 8300,
["WikiProject_United_Kingdom"] = 95000,
["WikiProject_United_States"] = 961000,
["WikiProject_United_States_History"] = 5300,
["WikiProject_United_States_Territories"] = 8200,
["WikiProject_United_States_courts_and_judges"] = 13000,
["WikiProject_University_of_California"] = 3400,
["WikiProject_University_of_Cambridge"] = 2800,
["WikiProject_University_of_Florida"] = 2100,
["WikiProject_University_of_Oxford"] = 12000,
["WikiProject_University_of_Pennsylvania"] = 3100,
["WikiProject_Unreferenced_articles"] = 3000,
["WikiProject_Urban_studies_and_planning"] = 6900,
["WikiProject_Uruguay"] = 12000,
["WikiProject_Userboxes"] = 64000,
["WikiProject_Veganism_and_Vegetarianism"] = 3400,
["WikiProject_Venezuela"] = 14000,
["WikiProject_Veterinary_medicine"] = 2400,
["WikiProject_Video_Games"] = 2000,
["WikiProject_Video_games"] = 117000,
["WikiProject_Video_games/class"] = 117000,
["WikiProject_Video_games/importance"] = 117000,
["WikiProject_Vietnam"] = 20000,
["WikiProject_Villages"] = 13000,
["WikiProject_Virginia"] = 32000,
["WikiProject_Viruses"] = 7300,
["WikiProject_Visual_arts"] = 111000,
["WikiProject_Volcanoes"] = 7100,
["WikiProject_Volleyball"] = 20000,
["WikiProject_Wales"] = 35000,
["WikiProject_Warwickshire"] = 2700,
["WikiProject_Water"] = 2600,
["WikiProject_Water_sports"] = 16000,
["WikiProject_Weather"] = 16000,
["WikiProject_Websites"] = 5800,
["WikiProject_West_Midlands"] = 4700,
["WikiProject_Western_Asia"] = 11000,
["WikiProject_Westerns"] = 9900,
["WikiProject_Wiki_Loves_Women"] = 2100,
["WikiProject_Wikipedia_essays"] = 2700,
["WikiProject_Wikipedia_essays/importance"] = 2700,
["WikiProject_Wiltshire"] = 2800,
["WikiProject_Wisconsin"] = 32000,
["WikiProject_Women"] = 186000,
["WikiProject_Women's_Health"] = 3700,
["WikiProject_Women's_History"] = 93000,
["WikiProject_Women's_sport"] = 208000,
["WikiProject_Women_artists"] = 24000,
["WikiProject_Women_in_Business"] = 9600,
["WikiProject_Women_in_Music"] = 79000,
["WikiProject_Women_in_Red"] = 65000,
["WikiProject_Women_in_Religion"] = 9200,
["WikiProject_Women_scientists"] = 28000,
["WikiProject_Women_writers"] = 84000,
["WikiProject_World_Heritage_Sites"] = 2800,
["WikiProject_World_Rally"] = 2300,
["WikiProject_Writing_systems"] = 4700,
["WikiProject_Years"] = 732000,
["WikiProject_Yemen"] = 6500,
["WikiProject_Yorkshire"] = 29000,
["WikiProject_YouTube"] = 3400,
["WikiProject_Yugoslavia"] = 7400,
["WikiProject_Zimbabwe"] = 6100,
["WikiProject_Zoo"] = 3100,
["WikiProject_banner"] = 6400,
["WikiProject_banner_shell"] = 11900000,
["WikiProject_cleanup_list"] = 80000,
["WikiProject_cleanup_listing"] = 9600,
["WikiProject_cleanup_listing/styles.css"] = 9600,
["WikiProject_description_page"] = 2900,
["WikiProject_status"] = 2700,
["WikiProjectbasename"] = 2600,
["Wiki_Loves_Pride_talk"] = 4300,
["Wikibooks"] = 2600,
["Wikibreak"] = 2600,
["Wikicite"] = 2300,
["Wikidata"] = 476000,
["WikidataCheck"] = 36000,
["Wikidata_check"] = 548000,
["Wikidata_entity_link"] = 64000,
["Wikidata_image"] = 1060000,
["Wikidata_list"] = 4300,
["Wikidata_list_end"] = 4200,
["Wikidata_location"] = 3400,
["Wikidata_property_link"] = 2600,
["Wikidata_sitelink"] = 95000,
["Wikinews"] = 3300,
["Wikipedia's_sister_projects/styles.css"] = 6800,
["Wikipedia:Version_1.0_article_stats"] = 5100,
["Wikipedia_Embassy_link"] = 4400,
["Wikipedia_ads"] = 3800,
["Wikipedia_category"] = 18000,
["Wikipedia_help_pages"] = 2200,
["Wikipedia_languages/styles.css"] = 4500,
["Wikipedia_logs"] = 9300,
["Wikipedia_other"] = 13000,
["Wikipedia_policies_and_guidelines"] = 3800,
["Wikiquote"] = 44000,
["Wikiquote-inline"] = 3000,
["Wikiquote_inline"] = 3300,
["Wikisource"] = 20000,
["Wikisource-inline"] = 6400,
["Wikisource/Author"] = 5700,
["Wikisource/inner_core"] = 20000,
["Wikisource/outer_core"] = 20000,
["Wikisource_inline"] = 6500,
["Wikispecies"] = 36000,
["Wikispecies-inline"] = 12000,
["Wikispecies_inline"] = 14000,
["Wikivoyage"] = 12000,
["Wikivoyage-inline"] = 2600,
["Wikivoyage_inline"] = 5800,
["Wikt"] = 11000,
["Wikt-lang"] = 4700,
["Wiktionary"] = 82000,
["Wiktionary-inline"] = 2600,
["Wiktionary_inline"] = 3400,
["Wiktionary_redirect"] = 2100,
["Wiktionary_redirect/styles.css"] = 2200,
["Win_draw_lose"] = 8100,
["Win_draw_lose_totals"] = 6500,
["Wink"] = 4500,
["Winners"] = 5300,
["Winning_percentage"] = 43000,
["Winpct"] = 8800,
["Women's_Tennis_Association_link"] = 3900,
["Won"] = 54000,
["Word_break"] = 2300,
["Workpage"] = 4700,
["Works_year_header"] = 4900,
["Works_year_header/helper"] = 4900,
["WorldFootball.net"] = 25000,
["World_Athletics"] = 14000,
["World_Rowing"] = 2700,
["World_Series_Year"] = 6800,
["World_Tennis_profile"] = 9300,
["World_topic"] = 2100,
["Worldfootball.net"] = 6200,
["Wrap"] = 59000,
["Wraplink"] = 3800,
["Writer_icon"] = 6300,
["Writer_icon2"] = 6300,
["WritingCredits"] = 4000,
["Wsy"] = 5900,
["Module:WDL"] = 15000,
["Module:WLink"] = 9200,
["Module:WPMILHIST_Infobox_style"] = 245000,
["Module:WPSHIPS_utilities"] = 103000,
["Module:WPSHIPS_utilities/data"] = 103000,
["Module:Wd"] = 1940000,
["Module:Wd/i18n"] = 1940000,
["Module:Weather_box"] = 32000,
["Module:Weather_box/colors"] = 32000,
["Module:Weather_box/row"] = 32000,
["Module:Webarchive"] = 692000,
["Module:Webarchive/data"] = 692000,
["Module:Wide_image"] = 11000,
["Module:Wide_image/styles.css"] = 11000,
["Module:WikiProject_banner"] = 12000000,
["Module:WikiProject_banner/auxiliary"] = 4770000,
["Module:WikiProject_banner/config"] = 12000000,
["Module:WikiProject_banner/styles.css"] = 11900000,
["Module:Wikidata"] = 212000,
["Module:WikidataCheck"] = 560000,
["Module:WikidataIB"] = 1820000,
["Module:WikidataIB/nolinks"] = 1820000,
["Module:WikidataIB/titleformats"] = 1820000,
["Module:WikidataIdentifiers"] = 2800,
["Module:Wikipedia_ads"] = 3800,
["Module:Wikipedia_ads/data"] = 4100,
["Module:Wikipedia_ads/list"] = 4100,
["Module:WikitextParser"] = 19000,
["Module:Wikitext_Parsing"] = 18900000,
["Module:Wikt-lang"] = 4700,
["Module:Wikt-lang/data"] = 4700,
["Module:Women_in_Red_event"] = 67000,
["Module:World_topic"] = 2100,
["Module:WritingCredits"] = 4000,
}
tfifa2s8nibrbdgfm1ion67c3msf83p
74049
74048
2026-07-12T11:06:54Z
Robertsky
10424
1 versaun husi [[:en:Module:Transclusion_count/data/W]]
74048
Scribunto
text/plain
return {
["WAL"] = 2200,
["WDL"] = 8100,
["WDLtot"] = 6500,
["WIA"] = 2000,
["WP1"] = 5100,
["WPB"] = 2100,
["WPBS"] = 27000,
["WPB_Announcements"] = 20000,
["WPCC"] = 256000,
["WPEUR10k"] = 9500,
["WPEUR20k"] = 16000,
["WPLA10k"] = 3200,
["WPMILHIST"] = 2200,
["WPMILHIST_Infobox_style"] = 109000,
["WPOCEANIA10k"] = 3900,
["WPSS-cat"] = 22000,
["WPTC_track_map_key"] = 2200,
["WPUKIR10k"] = 11000,
["WPUKIR20k"] = 11000,
["WPUS"] = 3100,
["WPVG_announcements"] = 118000,
["WPVG_announcements/shell"] = 118000,
["WPVG_icon"] = 36000,
["WPVG_icon_direct"] = 157000,
["WPX_action_box"] = 2900,
["WPX_block"] = 2200,
["WPX_last_updated"] = 5100,
["WPX_list_end"] = 2200,
["WPX_list_start"] = 2200,
["WPX_subheader"] = 3000,
["WP_Architecture"] = 4300,
["WP_Athletics"] = 2400,
["WP_Crime"] = 2400,
["WP_Women"] = 2300,
["WP_Years"] = 5100,
["WP_banner_shell"] = 5500,
["WRMS_source"] = 2700,
["WRMS_species"] = 15000,
["WTA"] = 3900,
["Warning"] = 56000,
["Watch"] = 29000,
["Wb"] = 2100,
["Wbr"] = 2300,
["Wd"] = 2400,
["Wdib"] = 18000,
["Weather_box"] = 32000,
["Webarchive"] = 692000,
["Wednesday"] = 2800,
["Welcome_ISP"] = 4100,
["Welcome_graphical/links"] = 61000,
["Welcomeg/links"] = 61000,
["Western_name_order"] = 7600,
["What_links_here"] = 13000,
["When"] = 27000,
["Where"] = 2400,
["Which"] = 6600,
["Whisperback"] = 2700,
["White"] = 94000,
["Who"] = 11000,
["Who's_Who"] = 3700,
["Whois"] = 9500,
["Whyte"] = 2100,
["Whyte_suffix"] = 2100,
["Wide_image"] = 9600,
["WikiProjectBannerShell"] = 85000,
["WikiProjectCard"] = 3200,
["WikiProject_2010s"] = 3600,
["WikiProject_Academic_Journals"] = 36000,
["WikiProject_Afghanistan"] = 12000,
["WikiProject_Africa"] = 236000,
["WikiProject_African_diaspora"] = 26000,
["WikiProject_AfroCreatives"] = 9700,
["WikiProject_Agriculture"] = 14000,
["WikiProject_Alabama"] = 20000,
["WikiProject_Alaska"] = 12000,
["WikiProject_Albania"] = 17000,
["WikiProject_Albums"] = 406000,
["WikiProject_Algae"] = 5900,
["WikiProject_Algeria"] = 8600,
["WikiProject_Alternative_medicine"] = 2400,
["WikiProject_Alternative_music"] = 15000,
["WikiProject_Alternative_views"] = 2300,
["WikiProject_American_Open_Wheel_Racing"] = 4100,
["WikiProject_American_football"] = 12000,
["WikiProject_Amphibians_and_Reptiles"] = 36000,
["WikiProject_Amusement_Parks"] = 7300,
["WikiProject_Amusement_Parks/importance"] = 7300,
["WikiProject_Anarchism"] = 4000,
["WikiProject_Anarchism_cleanup_issue_count"] = 4000,
["WikiProject_Anatomy"] = 22000,
["WikiProject_Ancient_Egypt"] = 6000,
["WikiProject_Ancient_Near_East"] = 7500,
["WikiProject_Anglicanism"] = 13000,
["WikiProject_Anglo-Saxon_Kingdoms"] = 2300,
["WikiProject_Animal_rights"] = 2800,
["WikiProject_Animals"] = 35000,
["WikiProject_Animation"] = 41000,
["WikiProject_Animation/importance"] = 41000,
["WikiProject_Anime_and_manga"] = 44000,
["WikiProject_Antarctica"] = 18000,
["WikiProject_Anthropology"] = 12000,
["WikiProject_Anthroponymy"] = 144000,
["WikiProject_Antigua_and_Barbuda"] = 2800,
["WikiProject_Apple_Inc."] = 3400,
["WikiProject_Apps"] = 2400,
["WikiProject_Arab_world"] = 6800,
["WikiProject_Archaeology"] = 24000,
["WikiProject_Architecture"] = 177000,
["WikiProject_Arctic"] = 3200,
["WikiProject_Arena_Football_League"] = 2800,
["WikiProject_Argentina"] = 36000,
["WikiProject_Arizona"] = 6200,
["WikiProject_Armenia"] = 13000,
["WikiProject_Arthropods"] = 32000,
["WikiProject_Articles_for_creation"] = 232000,
["WikiProject_Arts"] = 12000,
["WikiProject_Asia"] = 34000,
["WikiProject_Asian_Month"] = 2700,
["WikiProject_Assyria"] = 5400,
["WikiProject_Astronomy"] = 94000,
["WikiProject_Astronomy/importance"] = 94000,
["WikiProject_Athletics"] = 89000,
["WikiProject_Auckland"] = 3200,
["WikiProject_Australia"] = 287000,
["WikiProject_Australia/ACR"] = 287000,
["WikiProject_Austria"] = 38000,
["WikiProject_Autism"] = 2400,
["WikiProject_Automobiles"] = 23000,
["WikiProject_Aviation"] = 84000,
["WikiProject_Awards"] = 45000,
["WikiProject_Azerbaijan"] = 17000,
["WikiProject_BBC"] = 9300,
["WikiProject_Badminton"] = 9200,
["WikiProject_Bahrain"] = 3600,
["WikiProject_Bangladesh"] = 32000,
["WikiProject_BannerShell"] = 3500,
["WikiProject_Banner_Shell"] = 8700,
["WikiProject_Baseball"] = 95000,
["WikiProject_Basketball"] = 72000,
["WikiProject_Basque"] = 3500,
["WikiProject_Bavaria"] = 7200,
["WikiProject_Beauty_Pageants"] = 9300,
["WikiProject_Beer"] = 4600,
["WikiProject_Beetles"] = 82000,
["WikiProject_Belarus"] = 12000,
["WikiProject_Belgium"] = 40000,
["WikiProject_Belize"] = 2700,
["WikiProject_Berkshire"] = 2300,
["WikiProject_Bhutan"] = 2800,
["WikiProject_Biathlon"] = 3100,
["WikiProject_Bible"] = 8500,
["WikiProject_Biography"] = 2900000,
["WikiProject_Biology"] = 10000,
["WikiProject_Birds"] = 33000,
["WikiProject_Bivalves"] = 3700,
["WikiProject_Board_and_table_games"] = 9700,
["WikiProject_Bolivia"] = 8300,
["WikiProject_Books"] = 85000,
["WikiProject_Bosnia_and_Herzegovina"] = 16000,
["WikiProject_Boxing"] = 20000,
["WikiProject_Brands"] = 24000,
["WikiProject_Brazil"] = 70000,
["WikiProject_Bridges_and_Tunnels"] = 14000,
["WikiProject_Bristol"] = 2600,
["WikiProject_British_Empire"] = 14000,
["WikiProject_British_Motorsport"] = 2400,
["WikiProject_British_Overseas_Territories"] = 22000,
["WikiProject_Buckinghamshire"] = 2300,
["WikiProject_Buddhism"] = 9500,
["WikiProject_Bulgaria"] = 24000,
["WikiProject_Buses"] = 7400,
["WikiProject_Business"] = 56000,
["WikiProject_COVID-19"] = 4500,
["WikiProject_California"] = 92000,
["WikiProject_Cambodia"] = 6000,
["WikiProject_Cambodia/to_do"] = 6000,
["WikiProject_Canada"] = 256000,
["WikiProject_Canada/TFtext"] = 256000,
["WikiProject_Canada_Roads"] = 2900,
["WikiProject_Canada_Roads/class"] = 2900,
["WikiProject_Canadian_football"] = 11000,
["WikiProject_Cannabis"] = 2600,
["WikiProject_Canoeing_and_Kayaking"] = 7700,
["WikiProject_Caribbean"] = 54000,
["WikiProject_Cartoon_Network"] = 2900,
["WikiProject_Catalan-speaking_countries"] = 4500,
["WikiProject_Catalonia"] = 3500,
["WikiProject_Categories"] = 6400,
["WikiProject_Catholicism"] = 66000,
["WikiProject_Caves"] = 2300,
["WikiProject_Celts"] = 2200,
["WikiProject_Cemeteries"] = 11000,
["WikiProject_Central_America"] = 9500,
["WikiProject_Central_Asia"] = 23000,
["WikiProject_Central_Asia/importance"] = 23000,
["WikiProject_Cephalopods"] = 5000,
["WikiProject_Chemicals"] = 30000,
["WikiProject_Chemistry"] = 18000,
["WikiProject_Cheshire"] = 4400,
["WikiProject_Chess"] = 9400,
["WikiProject_Chess/importance"] = 9400,
["WikiProject_Chicago"] = 42000,
["WikiProject_Children's_literature"] = 26000,
["WikiProject_Chile"] = 24000,
["WikiProject_China"] = 123000,
["WikiProject_Christian_music"] = 8000,
["WikiProject_Christianity"] = 94000,
["WikiProject_Cities"] = 502000,
["WikiProject_Civil_Rights_Movement"] = 2100,
["WikiProject_Civil_Rights_Movement/article_todolist"] = 2100,
["WikiProject_Civil_engineering"] = 22000,
["WikiProject_Classical_Greece_and_Rome"] = 32000,
["WikiProject_Classical_music"] = 35000,
["WikiProject_Cleveland"] = 3000,
["WikiProject_Climate_change"] = 4900,
["WikiProject_Climbing"] = 3000,
["WikiProject_Cold_War"] = 3400,
["WikiProject_College_Basketball"] = 36000,
["WikiProject_College_basketball"] = 63000,
["WikiProject_College_football"] = 166000,
["WikiProject_College_football/importance"] = 166000,
["WikiProject_Colombia"] = 20000,
["WikiProject_Comedy"] = 44000,
["WikiProject_Comics"] = 60000,
["WikiProject_Comics/importance"] = 60000,
["WikiProject_Companies"] = 120000,
["WikiProject_Composers"] = 20000,
["WikiProject_Computer_Security"] = 2500,
["WikiProject_Computer_science"] = 9100,
["WikiProject_Computer_security"] = 2900,
["WikiProject_Computing"] = 49000,
["WikiProject_Concerts"] = 8000,
["WikiProject_Connecticut"] = 18000,
["WikiProject_Conservatism"] = 11000,
["WikiProject_Cooperatives"] = 2400,
["WikiProject_Cornwall"] = 6300,
["WikiProject_Cornwall/guide"] = 6300,
["WikiProject_Correction_and_Detention_Facilities"] = 4900,
["WikiProject_Costa_Rica"] = 6700,
["WikiProject_Countries"] = 28000,
["WikiProject_Country_Music"] = 12000,
["WikiProject_Country_music"] = 16000,
["WikiProject_Cricket"] = 65000,
["WikiProject_Cricket/importance"] = 65000,
["WikiProject_Crime"] = 11000,
["WikiProject_Crime_and_Criminal_Biography"] = 76000,
["WikiProject_Croatia"] = 29000,
["WikiProject_Crusades"] = 3200,
["WikiProject_Cuba"] = 10000,
["WikiProject_Cue_sports"] = 2600,
["WikiProject_Culture"] = 14000,
["WikiProject_Curling"] = 7700,
["WikiProject_Current_events"] = 8400,
["WikiProject_Cycling"] = 44000,
["WikiProject_Cyprus"] = 7400,
["WikiProject_Czech_Republic"] = 38000,
["WikiProject_Dallas-Fort_Worth"] = 3300,
["WikiProject_Dams"] = 7300,
["WikiProject_Dance"] = 17000,
["WikiProject_Darts"] = 2200,
["WikiProject_Deaf"] = 2300,
["WikiProject_Death"] = 57000,
["WikiProject_Denmark"] = 43000,
["WikiProject_Derbyshire"] = 3600,
["WikiProject_Devon"] = 5700,
["WikiProject_Dinosaurs"] = 5900,
["WikiProject_Diptera"] = 23000,
["WikiProject_Disability"] = 28000,
["WikiProject_Disambiguation"] = 350000,
["WikiProject_Disaster_management"] = 27000,
["WikiProject_Discographies"] = 7700,
["WikiProject_Discrimination"] = 8300,
["WikiProject_Disney"] = 11000,
["WikiProject_Doctor_Who"] = 4300,
["WikiProject_Dogs"] = 4100,
["WikiProject_Dorset"] = 3100,
["WikiProject_Drag_Race"] = 2100,
["WikiProject_Dungeons_&_Dragons"] = 6600,
["WikiProject_Dungeons_&_Dragons/importance"] = 6600,
["WikiProject_Earthquakes"] = 3600,
["WikiProject_EastEnders"] = 2500,
["WikiProject_East_Anglia"] = 10000,
["WikiProject_East_Timor"] = 2100,
["WikiProject_Eastern_Orthodoxy"] = 3100,
["WikiProject_Ecology"] = 3900,
["WikiProject_Economics"] = 24000,
["WikiProject_Ecoregions"] = 2700,
["WikiProject_Ecuador"] = 11000,
["WikiProject_Edit_requests"] = 4200,
["WikiProject_Education"] = 41000,
["WikiProject_Egypt"] = 18000,
["WikiProject_El_Salvador"] = 4800,
["WikiProject_Elections_and_Referendums"] = 142000,
["WikiProject_Electrical_engineering"] = 4900,
["WikiProject_Electronic_music"] = 19000,
["WikiProject_Electronics"] = 6800,
["WikiProject_Elements"] = 10000,
["WikiProject_Energy"] = 28000,
["WikiProject_Engineering"] = 16000,
["WikiProject_England"] = 123000,
["WikiProject_English_Language"] = 3000,
["WikiProject_Environment"] = 22000,
["WikiProject_Equine"] = 8700,
["WikiProject_Espionage"] = 3200,
["WikiProject_Essays"] = 2600,
["WikiProject_Estonia"] = 24000,
["WikiProject_Ethiopia"] = 6900,
["WikiProject_Ethnic_groups"] = 14000,
["WikiProject_Ethnic_groups_tasks"] = 14000,
["WikiProject_Europe"] = 42000,
["WikiProject_European_Microstates"] = 14000,
["WikiProject_European_Union"] = 10000,
["WikiProject_European_history"] = 16000,
["WikiProject_Eurovision"] = 5200,
["WikiProject_Event_Venues"] = 14000,
["WikiProject_Explosives"] = 2200,
["WikiProject_Faroe_Islands"] = 2800,
["WikiProject_Fashion"] = 14000,
["WikiProject_Feminism"] = 11000,
["WikiProject_Fencing"] = 8400,
["WikiProject_Festivals"] = 11000,
["WikiProject_Fictional_characters"] = 95000,
["WikiProject_Fictional_characters/class"] = 95000,
["WikiProject_Figure_Skating"] = 8400,
["WikiProject_Fiji"] = 5800,
["WikiProject_Film"] = 430000,
["WikiProject_Finance_&_Investment"] = 25000,
["WikiProject_Finland"] = 40000,
["WikiProject_Firearms"] = 13000,
["WikiProject_Firefighting"] = 4200,
["WikiProject_Fisheries_and_Fishing"] = 3300,
["WikiProject_Fishes"] = 45000,
["WikiProject_Florida"] = 34000,
["WikiProject_Folklore"] = 3900,
["WikiProject_Food_and_drink"] = 69000,
["WikiProject_Football"] = 527000,
["WikiProject_Forestry"] = 3300,
["WikiProject_Former_countries"] = 38000,
["WikiProject_Formula_One"] = 8300,
["WikiProject_France"] = 204000,
["WikiProject_Fraternities_and_Sororities"] = 4300,
["WikiProject_Fungi"] = 33000,
["WikiProject_Futures_studies"] = 2100,
["WikiProject_Gaelic_games"] = 21000,
["WikiProject_Gambling"] = 5200,
["WikiProject_Gastropods"] = 49000,
["WikiProject_Gender_studies"] = 5600,
["WikiProject_Genealogy"] = 7500,
["WikiProject_Geography"] = 99000,
["WikiProject_Geology"] = 32000,
["WikiProject_Georgia_(U.S._state)"] = 27000,
["WikiProject_Georgia_(country)"] = 12000,
["WikiProject_Germany"] = 188000,
["WikiProject_Ghana"] = 9000,
["WikiProject_Ghost_towns"] = 2900,
["WikiProject_Gibraltar"] = 2600,
["WikiProject_Glaciers"] = 3900,
["WikiProject_Gloucestershire"] = 3200,
["WikiProject_Golf"] = 18000,
["WikiProject_Google"] = 2200,
["WikiProject_Greater_Manchester"] = 7600,
["WikiProject_Greece"] = 58000,
["WikiProject_Green_Bay_Packers"] = 3300,
["WikiProject_Greenland"] = 3200,
["WikiProject_Guatemala"] = 5400,
["WikiProject_Guild_of_Copy_Editors"] = 12000,
["WikiProject_Guitarists"] = 4400,
["WikiProject_Gymnastics"] = 13000,
["WikiProject_Haiti"] = 6000,
["WikiProject_Hampshire"] = 4600,
["WikiProject_Handball"] = 16000,
["WikiProject_Hawaii"] = 10000,
["WikiProject_Health_and_fitness"] = 7100,
["WikiProject_Heraldry"] = 3400,
["WikiProject_Heraldry_and_vexillology"] = 18000,
["WikiProject_Hertfordshire"] = 3600,
["WikiProject_Higher_education"] = 93000,
["WikiProject_Higher_education/config"] = 93000,
["WikiProject_Highways"] = 16000,
["WikiProject_Highways/class"] = 16000,
["WikiProject_Hinduism"] = 11000,
["WikiProject_Hip-hop"] = 31000,
["WikiProject_Hip_hop"] = 20000,
["WikiProject_Historic_sites"] = 30000,
["WikiProject_History"] = 78000,
["WikiProject_History_of_Science"] = 6100,
["WikiProject_Holidays"] = 5500,
["WikiProject_Home_Living"] = 3700,
["WikiProject_Honduras"] = 3900,
["WikiProject_Hong_Kong"] = 26000,
["WikiProject_Horror"] = 19000,
["WikiProject_Horse_racing"] = 16000,
["WikiProject_Horticulture_and_Gardening"] = 5000,
["WikiProject_Hospitals"] = 13000,
["WikiProject_Hotels"] = 6200,
["WikiProject_Houston"] = 4200,
["WikiProject_Human_rights"] = 18000,
["WikiProject_Hungary"] = 34000,
["WikiProject_Ice_Hockey"] = 67000,
["WikiProject_Iceland"] = 12000,
["WikiProject_Illinois"] = 43000,
["WikiProject_Indexes"] = 2400,
["WikiProject_India"] = 308000,
["WikiProject_Indigenous_peoples_of_North_America"] = 20000,
["WikiProject_Indigenous_peoples_of_the_Americas"] = 5600,
["WikiProject_Indonesia"] = 38000,
["WikiProject_Industrial"] = 4600,
["WikiProject_Industrial_design"] = 3800,
["WikiProject_Industrial_tasks"] = 4600,
["WikiProject_Insects"] = 126000,
["WikiProject_International_relations"] = 95000,
["WikiProject_Internet"] = 10000,
["WikiProject_Internet_culture"] = 9900,
["WikiProject_Intertranswiki/OKA"] = 5400,
["WikiProject_Iran"] = 96000,
["WikiProject_Iraq"] = 13000,
["WikiProject_Ireland"] = 106000,
["WikiProject_Islam"] = 25000,
["WikiProject_Islands"] = 17000,
["WikiProject_Isle_of_Man"] = 3100,
["WikiProject_Israel"] = 36000,
["WikiProject_Italy"] = 130000,
["WikiProject_Japan"] = 147000,
["WikiProject_Jazz"] = 46000,
["WikiProject_Jewish_Women"] = 3600,
["WikiProject_Jewish_culture"] = 2200,
["WikiProject_Jewish_history"] = 13000,
["WikiProject_Jordan"] = 5400,
["WikiProject_Journalism"] = 51000,
["WikiProject_Judaism"] = 26000,
["WikiProject_Kansas"] = 16000,
["WikiProject_Kent"] = 5400,
["WikiProject_Kingdom_of_Naples"] = 2400,
["WikiProject_Korea"] = 68000,
["WikiProject_Kosovo"] = 5800,
["WikiProject_Kurdistan"] = 6700,
["WikiProject_Kuwait"] = 2800,
["WikiProject_Kyrgyzstan"] = 3400,
["WikiProject_LGBTQ+_studies"] = 44000,
["WikiProject_LGBT_studies"] = 23000,
["WikiProject_Lacrosse"] = 3700,
["WikiProject_Lakes"] = 22000,
["WikiProject_Lancashire_and_Cumbria"] = 8900,
["WikiProject_Languages"] = 25000,
["WikiProject_Latin"] = 2100,
["WikiProject_Latin_America"] = 3100,
["WikiProject_Latin_music"] = 20000,
["WikiProject_Latino_and_Hispanic_heritage"] = 16000,
["WikiProject_Latter_Day_Saint_movement"] = 5300,
["WikiProject_Latvia"] = 14000,
["WikiProject_Law"] = 92000,
["WikiProject_Law_Enforcement"] = 17000,
["WikiProject_Leaders_by_year"] = 2600,
["WikiProject_Lebanon"] = 11000,
["WikiProject_Lepidoptera"] = 127000,
["WikiProject_Libraries"] = 13000,
["WikiProject_Library_of_Congress"] = 2300,
["WikiProject_Lighthouses"] = 4000,
["WikiProject_Lincolnshire"] = 5100,
["WikiProject_Linguistics"] = 17000,
["WikiProject_Lists"] = 221000,
["WikiProject_Lists/class"] = 221000,
["WikiProject_Literature"] = 42000,
["WikiProject_Lithuania"] = 18000,
["WikiProject_London"] = 40000,
["WikiProject_London_Transport"] = 3300,
["WikiProject_Lower_Saxony"] = 2100,
["WikiProject_Lutheranism"] = 4100,
["WikiProject_Luxembourg"] = 7200,
["WikiProject_Macau"] = 2400,
["WikiProject_Magazines"] = 23000,
["WikiProject_Maine"] = 12000,
["WikiProject_Malaysia"] = 31000,
["WikiProject_Maldives"] = 3900,
["WikiProject_Malta"] = 6400,
["WikiProject_Mammals"] = 21000,
["WikiProject_Maps"] = 11000,
["WikiProject_Marine_life"] = 17000,
["WikiProject_Marketing_&_Advertising"] = 6800,
["WikiProject_Martial_arts"] = 40000,
["WikiProject_Maryland"] = 21000,
["WikiProject_Mathematics"] = 33000,
["WikiProject_Media"] = 24000,
["WikiProject_Media_franchises"] = 3300,
["WikiProject_Medicine"] = 79000,
["WikiProject_Melanesia"] = 9500,
["WikiProject_Merseyside"] = 4400,
["WikiProject_Mesoamerica"] = 3100,
["WikiProject_Metal"] = 28000,
["WikiProject_Metalworking"] = 2700,
["WikiProject_Mexico"] = 60000,
["WikiProject_Miami"] = 2900,
["WikiProject_Michigan"] = 33000,
["WikiProject_Microbiology"] = 23000,
["WikiProject_Micronesia"] = 9100,
["WikiProject_Microsoft"] = 2900,
["WikiProject_Microsoft_Windows"] = 2500,
["WikiProject_Middle_Ages"] = 33000,
["WikiProject_Military_history"] = 345000,
["WikiProject_Military_history/Checklist_categories"] = 163000,
["WikiProject_Military_history/Class"] = 345000,
["WikiProject_Military_history/Special_project_categories"] = 345000,
["WikiProject_Military_history/Special_project_phase"] = 345000,
["WikiProject_Military_history/Task_force_categories"] = 373000,
["WikiProject_Military_history/YesNo"] = 278000,
["WikiProject_Military_history/class"] = 345000,
["WikiProject_Mills"] = 2800,
["WikiProject_Mining"] = 9100,
["WikiProject_Minnesota"] = 26000,
["WikiProject_Missouri"] = 27000,
["WikiProject_Mixed_martial_arts"] = 7300,
["WikiProject_Moldova"] = 7400,
["WikiProject_Molecular_Biology"] = 39000,
["WikiProject_Mongols"] = 6500,
["WikiProject_Montana"] = 10000,
["WikiProject_Montenegro"] = 7200,
["WikiProject_Morocco"] = 11000,
["WikiProject_Motorcycle_racing"] = 7300,
["WikiProject_Motorcycling"] = 8500,
["WikiProject_Motorsport"] = 29000,
["WikiProject_Mountains"] = 39000,
["WikiProject_Multi-sport_events"] = 49000,
["WikiProject_Museums"] = 34000,
["WikiProject_Music/Music_genres_task_force"] = 6100,
["WikiProject_Music_theory"] = 2300,
["WikiProject_Musical_Instruments"] = 5800,
["WikiProject_Musical_Theatre"] = 8200,
["WikiProject_Myanmar"] = 13000,
["WikiProject_Mythology"] = 14000,
["WikiProject_NASCAR"] = 9100,
["WikiProject_National_Basketball_Association"] = 17000,
["WikiProject_National_Football_League"] = 54000,
["WikiProject_National_Register_of_Historic_Places"] = 96000,
["WikiProject_National_Register_of_Historic_Places/importance"] = 96000,
["WikiProject_Nepal"] = 21000,
["WikiProject_Netball"] = 2100,
["WikiProject_Netherlands"] = 63000,
["WikiProject_Neuroscience"] = 5500,
["WikiProject_Nevada"] = 9500,
["WikiProject_New_Jersey"] = 28000,
["WikiProject_New_York_(state)"] = 54000,
["WikiProject_New_York_City"] = 36000,
["WikiProject_New_Zealand"] = 84000,
["WikiProject_Newspapers"] = 19000,
["WikiProject_Nicaragua"] = 3400,
["WikiProject_Nigeria"] = 25000,
["WikiProject_Normandy"] = 4700,
["WikiProject_Norse_history_and_culture"] = 3700,
["WikiProject_North_America"] = 15000,
["WikiProject_North_America/importance"] = 15000,
["WikiProject_North_East_England"] = 6600,
["WikiProject_North_Macedonia"] = 8200,
["WikiProject_Northern_Ireland"] = 23000,
["WikiProject_Norway"] = 64000,
["WikiProject_Nottinghamshire"] = 3000,
["WikiProject_Novels"] = 95000,
["WikiProject_Numismatics"] = 8200,
["WikiProject_Nursing"] = 2400,
["WikiProject_Occult"] = 2800,
["WikiProject_Occupational_Safety_and_Health"] = 3400,
["WikiProject_Occupations"] = 5800,
["WikiProject_Oceania"] = 10000,
["WikiProject_Oceans"] = 3300,
["WikiProject_Ohio"] = 9700,
["WikiProject_Oklahoma"] = 16000,
["WikiProject_Olympics"] = 211000,
["WikiProject_Oman"] = 2400,
["WikiProject_Opera"] = 18000,
["WikiProject_Orders,_decorations,_and_medals"] = 7800,
["WikiProject_Oregon"] = 28000,
["WikiProject_Oregon/errors"] = 28000,
["WikiProject_Oregon_collab"] = 28000,
["WikiProject_Organizations"] = 61000,
["WikiProject_Organized_Labour"] = 14000,
["WikiProject_Overseas_France"] = 6200,
["WikiProject_Pakistan"] = 47000,
["WikiProject_Palaeontology"] = 35000,
["WikiProject_Palestine"] = 15000,
["WikiProject_Panama"] = 4800,
["WikiProject_Papua_New_Guinea"] = 6000,
["WikiProject_Paraguay"] = 4600,
["WikiProject_Paranormal"] = 2900,
["WikiProject_Pennsylvania"] = 55000,
["WikiProject_Peru"] = 19000,
["WikiProject_Pharmacology"] = 19000,
["WikiProject_Philadelphia"] = 12000,
["WikiProject_Philately"] = 5200,
["WikiProject_Philippines"] = 6400,
["WikiProject_Philosophy"] = 24000,
["WikiProject_Photography"] = 17000,
["WikiProject_Physics"] = 30000,
["WikiProject_Physiology"] = 4200,
["WikiProject_Pittsburgh"] = 6400,
["WikiProject_Plants"] = 157000,
["WikiProject_Podcasting"] = 2800,
["WikiProject_Poetry"] = 27000,
["WikiProject_Pokémon"] = 4000,
["WikiProject_Pokémon/class"] = 4000,
["WikiProject_Poland"] = 118000,
["WikiProject_Politics"] = 284000,
["WikiProject_Politics_of_the_United_Kingdom"] = 55000,
["WikiProject_Polynesia"] = 16000,
["WikiProject_Pop_music"] = 37000,
["WikiProject_Popular_culture"] = 3900,
["WikiProject_Pornography"] = 5200,
["WikiProject_Portals"] = 2600,
["WikiProject_Portals/class"] = 2600,
["WikiProject_Portals/importance"] = 2600,
["WikiProject_Portals/importancescale"] = 2600,
["WikiProject_Portugal"] = 34000,
["WikiProject_Post-hardcore"] = 4400,
["WikiProject_Primates"] = 2800,
["WikiProject_Pritzker-GLAM"] = 3000,
["WikiProject_Professional_sound_production"] = 2600,
["WikiProject_Professional_wrestling"] = 19000,
["WikiProject_Progressive_Rock"] = 4200,
["WikiProject_Protected_areas"] = 30000,
["WikiProject_Protista"] = 5300,
["WikiProject_Psychoactive_and_Recreational_Drugs"] = 2500,
["WikiProject_Psychology"] = 21000,
["WikiProject_Puerto_Rico"] = 16000,
["WikiProject_Punk_music"] = 8600,
["WikiProject_Qatar"] = 4800,
["WikiProject_R&B_and_Soul_Music"] = 19000,
["WikiProject_Radio"] = 15000,
["WikiProject_Radio_Stations"] = 43000,
["WikiProject_Record_Charts"] = 5500,
["WikiProject_Record_Labels"] = 15000,
["WikiProject_Record_Production"] = 7500,
["WikiProject_Redirect"] = 6500,
["WikiProject_Redirect/class"] = 6500,
["WikiProject_Referees"] = 4500,
["WikiProject_Reggae"] = 3300,
["WikiProject_Regional_and_national_music"] = 10000,
["WikiProject_Religion"] = 36000,
["WikiProject_Religious_Buildings,_Architecture_and_Monasticism"] = 2000,
["WikiProject_Religious_texts"] = 2600,
["WikiProject_Retailing"] = 5900,
["WikiProject_Retailing/importance"] = 5900,
["WikiProject_Rivers"] = 60000,
["WikiProject_Robotics"] = 3500,
["WikiProject_Rock_music"] = 34000,
["WikiProject_Rocketry"] = 2600,
["WikiProject_Rocketry/importance"] = 2600,
["WikiProject_Rocks_and_minerals"] = 3200,
["WikiProject_Rodents"] = 5400,
["WikiProject_Role-playing_games"] = 7600,
["WikiProject_Romance"] = 3400,
["WikiProject_Romania"] = 45000,
["WikiProject_Rome"] = 4100,
["WikiProject_Roots_music"] = 5900,
["WikiProject_Rowing"] = 14000,
["WikiProject_Royalty_and_Nobility"] = 7000,
["WikiProject_Rugby_league"] = 21000,
["WikiProject_Rugby_union"] = 42000,
["WikiProject_Running"] = 27000,
["WikiProject_Russia"] = 134000,
["WikiProject_Sailing"] = 14000,
["WikiProject_Saints"] = 6400,
["WikiProject_San_Diego"] = 3600,
["WikiProject_Saudi_Arabia"] = 10000,
["WikiProject_Schools"] = 89000,
["WikiProject_Science"] = 20000,
["WikiProject_Science_Fiction"] = 20000,
["WikiProject_Science_fiction"] = 2400,
["WikiProject_Scotland"] = 62000,
["WikiProject_Scottish_Islands"] = 3300,
["WikiProject_Scouting"] = 7900,
["WikiProject_Screenwriters"] = 2700,
["WikiProject_Sculpture"] = 17000,
["WikiProject_Serbia"] = 30000,
["WikiProject_Sexology_and_sexuality"] = 10000,
["WikiProject_Shakespeare"] = 2200,
["WikiProject_Ships"] = 91000,
["WikiProject_Shipwrecks"] = 8200,
["WikiProject_Shopping_Centers"] = 5900,
["WikiProject_Sicily"] = 3900,
["WikiProject_Singapore"] = 16000,
["WikiProject_Skepticism"] = 6200,
["WikiProject_Skiing_and_Snowboarding"] = 22000,
["WikiProject_Skyscrapers"] = 6300,
["WikiProject_Slovakia"] = 19000,
["WikiProject_Slovenia"] = 22000,
["WikiProject_Snooker"] = 3300,
["WikiProject_Soap_Operas"] = 22000,
["WikiProject_Socialism"] = 26000,
["WikiProject_Sociology"] = 51000,
["WikiProject_Softball"] = 5600,
["WikiProject_Software"] = 16000,
["WikiProject_Somalia"] = 3200,
["WikiProject_Somerset"] = 4900,
["WikiProject_Song_Contests"] = 9200,
["WikiProject_Songs"] = 237000,
["WikiProject_South_Africa"] = 50000,
["WikiProject_South_America"] = 37000,
["WikiProject_South_Dakota"] = 9300,
["WikiProject_Southeast_Asia"] = 16000,
["WikiProject_Soviet_Union"] = 27000,
["WikiProject_Spaceflight"] = 14000,
["WikiProject_Spain"] = 97000,
["WikiProject_Speed_Skating"] = 6100,
["WikiProject_Spiders"] = 16000,
["WikiProject_Sports"] = 179000,
["WikiProject_Sports_Car_Racing"] = 5400,
["WikiProject_Squash"] = 2800,
["WikiProject_Sri_Lanka"] = 31000,
["WikiProject_St._Louis"] = 3300,
["WikiProject_Star_Trek"] = 4200,
["WikiProject_Star_Wars"] = 6100,
["WikiProject_Statistics"] = 7400,
["WikiProject_Stub_sorting"] = 67000,
["WikiProject_Stub_sorting_category"] = 22000,
["WikiProject_Stub_sorting_category/styles.css"] = 22000,
["WikiProject_Surrey"] = 2800,
["WikiProject_Sussex"] = 4500,
["WikiProject_Sweden"] = 74000,
["WikiProject_Swimming"] = 40000,
["WikiProject_Switzerland"] = 50000,
["WikiProject_Syria"] = 13000,
["WikiProject_Systems"] = 4900,
["WikiProject_Table_tennis"] = 4700,
["WikiProject_Taiwan"] = 22000,
["WikiProject_Tajikistan"] = 2600,
["WikiProject_Tambayan_Philippines"] = 59000,
["WikiProject_Taxation"] = 2300,
["WikiProject_Technology"] = 19000,
["WikiProject_Telecommunications"] = 11000,
["WikiProject_Television"] = 325000,
["WikiProject_Television/config"] = 325000,
["WikiProject_Templates"] = 33000,
["WikiProject_Tennessee"] = 21000,
["WikiProject_Tennis"] = 63000,
["WikiProject_Textile_Arts"] = 2800,
["WikiProject_Textile_arts"] = 3700,
["WikiProject_Thailand"] = 28000,
["WikiProject_The_Beatles"] = 5100,
["WikiProject_The_Simpsons"] = 2300,
["WikiProject_Theatre"] = 41000,
["WikiProject_Theology"] = 2500,
["WikiProject_Tibet"] = 4000,
["WikiProject_Time"] = 18000,
["WikiProject_Timor-Leste"] = 2200,
["WikiProject_Toys"] = 4000,
["WikiProject_Trade"] = 2900,
["WikiProject_Trains"] = 153000,
["WikiProject_Trains/portalbox"] = 153000,
["WikiProject_Translation_studies"] = 2600,
["WikiProject_Transport"] = 34000,
["WikiProject_Travel_and_Tourism"] = 16000,
["WikiProject_Tree_of_Life"] = 9100,
["WikiProject_Trinidad_and_Tobago"] = 5100,
["WikiProject_Tunisia"] = 5700,
["WikiProject_Turkey"] = 68000,
["WikiProject_Turkmenistan"] = 2300,
["WikiProject_Turtles"] = 3700,
["WikiProject_Typography"] = 2900,
["WikiProject_U.S._Congress"] = 25000,
["WikiProject_U.S._Roads"] = 34000,
["WikiProject_U.S._Roads/StateName"] = 33000,
["WikiProject_U.S._Roads/articletest"] = 34000,
["WikiProject_U.S._Roads/cats"] = 34000,
["WikiProject_U.S._Roads/cats/core"] = 34000,
["WikiProject_U.S._Roads/cats/istemplate"] = 34000,
["WikiProject_U.S._Roads/class"] = 34000,
["WikiProject_U.S._Roads/overcat"] = 33000,
["WikiProject_U.S._Supreme_Court_cases"] = 6300,
["WikiProject_UK_Parliament_constituencies"] = 2300,
["WikiProject_UK_geography"] = 38000,
["WikiProject_Ukraine"] = 44000,
["WikiProject_Ukraine/class"] = 44000,
["WikiProject_Underwater_diving"] = 3900,
["WikiProject_United_Arab_Emirates"] = 8300,
["WikiProject_United_Kingdom"] = 95000,
["WikiProject_United_States"] = 961000,
["WikiProject_United_States_History"] = 5300,
["WikiProject_United_States_Territories"] = 8200,
["WikiProject_United_States_courts_and_judges"] = 13000,
["WikiProject_University_of_California"] = 3400,
["WikiProject_University_of_Cambridge"] = 2800,
["WikiProject_University_of_Florida"] = 2100,
["WikiProject_University_of_Oxford"] = 12000,
["WikiProject_University_of_Pennsylvania"] = 3100,
["WikiProject_Unreferenced_articles"] = 3000,
["WikiProject_Urban_studies_and_planning"] = 6900,
["WikiProject_Uruguay"] = 12000,
["WikiProject_Userboxes"] = 64000,
["WikiProject_Veganism_and_Vegetarianism"] = 3400,
["WikiProject_Venezuela"] = 14000,
["WikiProject_Veterinary_medicine"] = 2400,
["WikiProject_Video_Games"] = 2000,
["WikiProject_Video_games"] = 117000,
["WikiProject_Video_games/class"] = 117000,
["WikiProject_Video_games/importance"] = 117000,
["WikiProject_Vietnam"] = 20000,
["WikiProject_Villages"] = 13000,
["WikiProject_Virginia"] = 32000,
["WikiProject_Viruses"] = 7300,
["WikiProject_Visual_arts"] = 111000,
["WikiProject_Volcanoes"] = 7100,
["WikiProject_Volleyball"] = 20000,
["WikiProject_Wales"] = 35000,
["WikiProject_Warwickshire"] = 2700,
["WikiProject_Water"] = 2600,
["WikiProject_Water_sports"] = 16000,
["WikiProject_Weather"] = 16000,
["WikiProject_Websites"] = 5800,
["WikiProject_West_Midlands"] = 4700,
["WikiProject_Western_Asia"] = 11000,
["WikiProject_Westerns"] = 9900,
["WikiProject_Wiki_Loves_Women"] = 2100,
["WikiProject_Wikipedia_essays"] = 2700,
["WikiProject_Wikipedia_essays/importance"] = 2700,
["WikiProject_Wiltshire"] = 2800,
["WikiProject_Wisconsin"] = 32000,
["WikiProject_Women"] = 186000,
["WikiProject_Women's_Health"] = 3700,
["WikiProject_Women's_History"] = 93000,
["WikiProject_Women's_sport"] = 208000,
["WikiProject_Women_artists"] = 24000,
["WikiProject_Women_in_Business"] = 9600,
["WikiProject_Women_in_Music"] = 79000,
["WikiProject_Women_in_Red"] = 65000,
["WikiProject_Women_in_Religion"] = 9200,
["WikiProject_Women_scientists"] = 28000,
["WikiProject_Women_writers"] = 84000,
["WikiProject_World_Heritage_Sites"] = 2800,
["WikiProject_World_Rally"] = 2300,
["WikiProject_Writing_systems"] = 4700,
["WikiProject_Years"] = 732000,
["WikiProject_Yemen"] = 6500,
["WikiProject_Yorkshire"] = 29000,
["WikiProject_YouTube"] = 3400,
["WikiProject_Yugoslavia"] = 7400,
["WikiProject_Zimbabwe"] = 6100,
["WikiProject_Zoo"] = 3100,
["WikiProject_banner"] = 6400,
["WikiProject_banner_shell"] = 11900000,
["WikiProject_cleanup_list"] = 80000,
["WikiProject_cleanup_listing"] = 9600,
["WikiProject_cleanup_listing/styles.css"] = 9600,
["WikiProject_description_page"] = 2900,
["WikiProject_status"] = 2700,
["WikiProjectbasename"] = 2600,
["Wiki_Loves_Pride_talk"] = 4300,
["Wikibooks"] = 2600,
["Wikibreak"] = 2600,
["Wikicite"] = 2300,
["Wikidata"] = 476000,
["WikidataCheck"] = 36000,
["Wikidata_check"] = 548000,
["Wikidata_entity_link"] = 64000,
["Wikidata_image"] = 1060000,
["Wikidata_list"] = 4300,
["Wikidata_list_end"] = 4200,
["Wikidata_location"] = 3400,
["Wikidata_property_link"] = 2600,
["Wikidata_sitelink"] = 95000,
["Wikinews"] = 3300,
["Wikipedia's_sister_projects/styles.css"] = 6800,
["Wikipedia:Version_1.0_article_stats"] = 5100,
["Wikipedia_Embassy_link"] = 4400,
["Wikipedia_ads"] = 3800,
["Wikipedia_category"] = 18000,
["Wikipedia_help_pages"] = 2200,
["Wikipedia_languages/styles.css"] = 4500,
["Wikipedia_logs"] = 9300,
["Wikipedia_other"] = 13000,
["Wikipedia_policies_and_guidelines"] = 3800,
["Wikiquote"] = 44000,
["Wikiquote-inline"] = 3000,
["Wikiquote_inline"] = 3300,
["Wikisource"] = 20000,
["Wikisource-inline"] = 6400,
["Wikisource/Author"] = 5700,
["Wikisource/inner_core"] = 20000,
["Wikisource/outer_core"] = 20000,
["Wikisource_inline"] = 6500,
["Wikispecies"] = 36000,
["Wikispecies-inline"] = 12000,
["Wikispecies_inline"] = 14000,
["Wikivoyage"] = 12000,
["Wikivoyage-inline"] = 2600,
["Wikivoyage_inline"] = 5800,
["Wikt"] = 11000,
["Wikt-lang"] = 4700,
["Wiktionary"] = 82000,
["Wiktionary-inline"] = 2600,
["Wiktionary_inline"] = 3400,
["Wiktionary_redirect"] = 2100,
["Wiktionary_redirect/styles.css"] = 2200,
["Win_draw_lose"] = 8100,
["Win_draw_lose_totals"] = 6500,
["Wink"] = 4500,
["Winners"] = 5300,
["Winning_percentage"] = 43000,
["Winpct"] = 8800,
["Women's_Tennis_Association_link"] = 3900,
["Won"] = 54000,
["Word_break"] = 2300,
["Workpage"] = 4700,
["Works_year_header"] = 4900,
["Works_year_header/helper"] = 4900,
["WorldFootball.net"] = 25000,
["World_Athletics"] = 14000,
["World_Rowing"] = 2700,
["World_Series_Year"] = 6800,
["World_Tennis_profile"] = 9300,
["World_topic"] = 2100,
["Worldfootball.net"] = 6200,
["Wrap"] = 59000,
["Wraplink"] = 3800,
["Writer_icon"] = 6300,
["Writer_icon2"] = 6300,
["WritingCredits"] = 4000,
["Wsy"] = 5900,
["Module:WDL"] = 15000,
["Module:WLink"] = 9200,
["Module:WPMILHIST_Infobox_style"] = 245000,
["Module:WPSHIPS_utilities"] = 103000,
["Module:WPSHIPS_utilities/data"] = 103000,
["Module:Wd"] = 1940000,
["Module:Wd/i18n"] = 1940000,
["Module:Weather_box"] = 32000,
["Module:Weather_box/colors"] = 32000,
["Module:Weather_box/row"] = 32000,
["Module:Webarchive"] = 692000,
["Module:Webarchive/data"] = 692000,
["Module:Wide_image"] = 11000,
["Module:Wide_image/styles.css"] = 11000,
["Module:WikiProject_banner"] = 12000000,
["Module:WikiProject_banner/auxiliary"] = 4770000,
["Module:WikiProject_banner/config"] = 12000000,
["Module:WikiProject_banner/styles.css"] = 11900000,
["Module:Wikidata"] = 212000,
["Module:WikidataCheck"] = 560000,
["Module:WikidataIB"] = 1820000,
["Module:WikidataIB/nolinks"] = 1820000,
["Module:WikidataIB/titleformats"] = 1820000,
["Module:WikidataIdentifiers"] = 2800,
["Module:Wikipedia_ads"] = 3800,
["Module:Wikipedia_ads/data"] = 4100,
["Module:Wikipedia_ads/list"] = 4100,
["Module:WikitextParser"] = 19000,
["Module:Wikitext_Parsing"] = 18900000,
["Module:Wikt-lang"] = 4700,
["Module:Wikt-lang/data"] = 4700,
["Module:Women_in_Red_event"] = 67000,
["Module:World_topic"] = 2100,
["Module:WritingCredits"] = 4000,
}
tfifa2s8nibrbdgfm1ion67c3msf83p
Template:Presiza sitasaun
10
8271
74031
73100
2026-07-12T10:59:49Z
Robertsky
10424
trans
74031
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Unsubst||date=__DATE__ |$B=
{{Fix
|name = {{{name|Presiza sitasaun}}}
|subst = <includeonly>{{subst:substcheck}}</includeonly>
|link = :en:Wikipedia:Citation needed
|text = presiza sitasaun
|class = Template-Fact
|title = {{{reason|Reklamasaun ida-ne'e presiza referénsia sira ba fonte sira ne'ebé konfiável.}}}
|date = {{{date|}}}
|cat = [[Category:Artigu hotu-hotu ho deklarasaun sira ne'ebé laiha fonte]]
|cat-date = Category:Artigu hotu-hotu ho deklarasaun sira ne'ebé laiha fonte
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pájina sira ne'ebé kontein sitasaun presiza modelu ho parámetru sira ne'ebé la suporta|_VALUE_{{PAGENAME}}]]}}|preview=Pájina ne'ebé uza [[Template:Presiza sitasaun]] ho parámetru deskoñesidu "_VALUE_"|ignoreblank=y| date | name | reason }}}}<noinclude>
{{Documentation}}
</noinclude>
g8zwzyy6akdvq1vd6w1puvqhvp9xq0m
74038
74031
2026-07-12T11:00:54Z
Robertsky
10424
Robertsky moveu [[Template:Citation needed]] para [[Template:Presiza sitasaun]]
74031
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Unsubst||date=__DATE__ |$B=
{{Fix
|name = {{{name|Presiza sitasaun}}}
|subst = <includeonly>{{subst:substcheck}}</includeonly>
|link = :en:Wikipedia:Citation needed
|text = presiza sitasaun
|class = Template-Fact
|title = {{{reason|Reklamasaun ida-ne'e presiza referénsia sira ba fonte sira ne'ebé konfiável.}}}
|date = {{{date|}}}
|cat = [[Category:Artigu hotu-hotu ho deklarasaun sira ne'ebé laiha fonte]]
|cat-date = Category:Artigu hotu-hotu ho deklarasaun sira ne'ebé laiha fonte
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pájina sira ne'ebé kontein sitasaun presiza modelu ho parámetru sira ne'ebé la suporta|_VALUE_{{PAGENAME}}]]}}|preview=Pájina ne'ebé uza [[Template:Presiza sitasaun]] ho parámetru deskoñesidu "_VALUE_"|ignoreblank=y| date | name | reason }}}}<noinclude>
{{Documentation}}
</noinclude>
g8zwzyy6akdvq1vd6w1puvqhvp9xq0m
Misaun Apoiu Nasoens Unidas nian ba Timor Leste
0
8604
74024
73833
2026-07-11T20:58:53Z
Robertsky
10424
Robertsky moveu [[UNMISET]] para [[Misaun Apoiu Nasoens Unidas nian ba Timor Leste]]
73833
wikitext
text/x-wiki
'''Misaun Apoiu Nasoens Unidas nian ba Timor Leste''' ([[UNMISET]]) dura husi loron 20 Maiu 2002 to’o loron 20 Maiu 2005, bainhira troka ho Gabinete Nasoins Unidas iha Timor Leste ([[UNOTIL]]). Ida-ne'e harii bainhira Timór Lorosa'e sai estadu independente ne'ebé rekoñesidu internasionalmente no Administrasaun Tranzisaun Nasoins Unidas nian iha Timór Lorosa'e ([[Administrasaun Tranzisaun Nasoens Unidas iha Timor Leste|UNTAET]]) to'o nia rohan.
Forsa militár no polísia sira hosi nasaun sira ne'ebé kontribui tau iha kontrolu hosi Reprezentante Espesiál hosi Sekretáriu-Jerál. Halo tuir relatóriu progresu ne’ebé hato’o husi Sekretáriu-Jerál iha tinan 2003, mandatu inisiál fulan 12 nian hanaruk ba tinan rua, tuir mai hanaruk ba 20 Maiu 2005, hafoin ne’e troka fali ho Gabinete Nasoins Unidas nian iha Timor Leste ([[UNOTIL]]).
Relatóriu finál ida hafoin aprezenta ba Konsellu Seguransa no deklarasaun ida halo kona-ba ajuda ne'ebé kontinua ho Unidade Patrullamentu Fronteira ida. Mandatu sira hosi Rezolusaun sira Konsellu Seguransa nian prevee mós Unidade Krime Grave nian ida hodi investiga eventu sira iha tinan 1999 nian.
= Referensia =
gphynxd4v54pipc8l4x0rhnwcvr7z2a
74026
74024
2026-07-11T20:59:55Z
Robertsky
10424
74026
wikitext
text/x-wiki
'''Misaun Apoiu Nasoens Unidas nian ba Timor Leste''' ('''UNMISET''') dura husi loron 20 Maiu 2002 to’o loron 20 Maiu 2005, bainhira troka ho Gabinete Nasoins Unidas iha Timor Leste ([[UNOTIL]]). Ida-ne'e harii bainhira Timór Lorosa'e sai estadu independente ne'ebé rekoñesidu internasionalmente no [[Administrasaun Tranzisaun Nasoens Unidas iha Timor Leste|Administrasaun Tranzisaun Nasoins Unidas nian iha Timór Lorosa'e]] (UNTAET) to'o nia rohan.
Forsa militár no polísia sira hosi nasaun sira ne'ebé kontribui tau iha kontrolu hosi Reprezentante Espesiál hosi Sekretáriu-Jerál. Halo tuir relatóriu progresu ne’ebé hato’o husi Sekretáriu-Jerál iha tinan 2003, mandatu inisiál fulan 12 nian hanaruk ba tinan rua, tuir mai hanaruk ba 20 Maiu 2005, hafoin ne’e troka fali ho Gabinete Nasoins Unidas nian iha Timor Leste ([[UNOTIL]]).
Relatóriu finál ida hafoin aprezenta ba Konsellu Seguransa no deklarasaun ida halo kona-ba ajuda ne'ebé kontinua ho Unidade Patrullamentu Fronteira ida. Mandatu sira hosi Rezolusaun sira Konsellu Seguransa nian prevee mós Unidade Krime Grave nian ida hodi investiga eventu sira iha tinan 1999 nian.
= Referensia =
{{Reflist}}
d1dt3yo1cvr8hra9fkw4kuahi5oq8co
Universidade Marburg
0
8607
73850
2026-07-11T13:42:51Z
Diamantino Soares
9475
Criada por tradução da página "[[:en:Special:Redirect/revision/1363048497|Marburg University]]"
73850
wikitext
text/x-wiki
'''Universidade Marburg''' mak universidade peskiza públika ida ne'ebé lokaliza iha Marburg, Alemaña. Universidade ne'e harii iha tinan 1527 hosi Filipe I, Landgrave hosi Hesse, no konsidera hanesan universidade ida ne'ebé tuan liu iha Alemaña no universidade protestante tuan liu ne'ebé sei kontinua funsiona to'o ohin loron iha mundu.
Ohin loron, Universidade Marburg mak universidade públika ida ne'ebé pertence ba Estadu Hesse, no la iha afiliasaun relijioza.
Universidade Marburg iha estudante hamutuk 21.162 iha tinan akademiku 2024/2025. Universidade ne'e lokaliza iha Marburg, Alemaña, no oferese programa estudu internasionál oioin. Aleinde ne'e, universidade ne'e mós partisipa iha programa Erasmus, ne'ebé fó oportunidade ba estudante sira atu tuir programa troka estudante ho universidade sira seluk iha Europa.
== Istória ==
=== Tinan sira iha Fundasaun nian ===
Iha loron 1 fulan-Jullu 1527, xefe rai-na'in nian Johann Feige inaugura oficialmente Universidade Marburg, ne'ebé harii husi Landgrave Philip I liuhusi dekretu ida iha loron 30 fulan Maiu tinan ne'ebá. Iha tempu inaugurasaun, universidade ne'e iha profesór 11 no estudante 88.
Reitór dahuluk Universidade Marburg mak Johannes Eisermann, ne'ebé koñesidu mós ho naran latín ''Ferrarius Montanus''. Nia hanorin direitu no servisu hanesan asesór ba tribunál landgravial iha Amöneburg. Iha tinan ne'ebá duni, Philip I fó ba universidade ne'e liberdade akadémika ne'ebé presiza atu hala'o nia atividade sira.
Iha loron 4 fulan Outubru 1541, Universidade Marburg hetan independénsia finanseira liuhosi eskritura dotasaun. Tinan tuirmai, Landgrave Philip I simu priviléjiu universitáriu hosi Imperadór Carlos V durante Dieta Imperiál iha Regensburg.
Iha tempu dahuluk, Universidade Marburg uza edifísiu monástiku antigu sira ne'ebé uluk pertense ba Dominikanu sira, Fransiskanu sira, no Irmaun sira husi Vida Komún.
Landgrave Philip I mós fó ba universidade priviléjiu oioin, inklui direitu atu haruka reprezentante ida ba asembleia rejionál, no izensaun hosi taxa no impostu ba membru universitáriu sira.
Iha tinan 1529, Landgrave Philip I sai uma-na'in ba Marburg Colloquy, debate relijiozu ida entre Martin Luther, Ulrich Zwingli, no Philip Melanchthon.
Reputasaun husi fakuldade teolójia Universidade Marburg atrai estudante internasionál sira, liuliu husi Suisa, Dinamarka, Suésia, Olanda, no Eskósia. Entre estudante sira ne'e iha Patrick Hamilton, ne'ebé estuda iha Marburg ba tempu badak.
Durante sékulu dahuluk universidade nian, surtu moras oioin, hanesan moras suar Inglés no peste, obriga universidade atu muda temporariamente ba sidade sira ne'ebé besik.
=== sékulu XVI no XVII ===
To'o nia mate iha tinan 1560, Johann Friedrich Dryander kaer kadeira medisina iha Universidade Marburg. Iha loron 15 fulan-Novembru 1565, Landgrave William IV hosi Hesse-Kassel nomeia Georg Marius nu'udar profesór, lahó hetan uluk konsentimentu formál husi universidade.
Iha tinan 1566, universidade harii kadeira medisina daruak, ne'ebé prenxe husi Victorinus Schönfeldt. Antes ne'e, nia serbisu nu'udar profesór matemátika iha universidade.
Entre tinan 1580 no 1628, Rudolph Goclenius maka profesór filozofia, lójika, no étika iha Universidade Marburg.
Bainhira Landgrave Maurice husi Hesse-Kassel hetan eransa husi Landgraviate Hesse-Marburg iha tinan 1604, nia konverte ba Calvinizmu iha tinan tuirmai. Tanba ne'e, universidade hetan obrigasaun atu adopta konfisaun Reformada, ne'ebé nia mantein to'o nia alinhamentu konfisionál nia rohan iha tinan 1866.
Mudansa konfisionál ida ne'e lori profesór Luteranu barak ba Universidade Giessen, ne'ebé foin harii iha tinan 1607. Iha tinan 1625, bainhira Marburg temporariamente tama iha okos Hesse-Darmstadt Luteranu, Universidade Giessen fila fali ba Universidade Marburg no depois taka.
Iha loron 24 fulan-Juñu 1653, universidade ne'e loke fali husi William VI husi Hesse-Kassel, ne'ebé muda fali universidade estadu nian husi Kassel ba Marburg, nune'e taka Universidade Kassel. Iha tinan sira tuirmai, universidade hasoru tempu difisil sira tanba konfisionalizasaun ne'ebé la'o hela no susar finanseiru.
=== sékulu 18 ===
Iha tinan 1723, filózofu Christian Wolff hetan nomeasaun ba kadeira ida iha Universidade Marburg hafoin hetan espulsaun hosi Halle hosi Frederick William I. Maski hetan opozisaun hosi parte sira hosi fakuldade teolójika, Wolff hanorin iha Marburg to'o 1740 ho protesaun hosi Landgrave, molok hetan bolu fali ba Prússia hosi Frederick the Great . Funu Tinan Hitu nian ikusmai perturba universidade, tanba Hesse sai hanesan kampu funu nian no Marburg hetan fortifikasaun.
Iha tinan 1785, universidade ne'e iha estatutu legál no polítiku espesiál: nia iha nia jurisdisaun rasik, dotasaun ekleziástiku sira, no kadeira ida iha asembleia rejionál. Landgrave hala'o knaar nu'udar reitór, ministru finansas nu'udar kuradór, no senadu kompostu hosi reprezentante sira hosi teolojia, lei, medisina, no filozofia, hamutuk ho instrutór linguajen no tékniku sira.
Universidade Marburg hetan kreximentu foun durante era Napoleónika . Iha tinan 1807, Eleitoradu Hesse nian sai parte hosi Reinu Westfalia ne'ebé foin harii, estadu satélite fransés ida. Maski universidade oioin iha reinu foun nia laran taka, Marburg hetan salvasaun no benefísiu finanseiru hosi redistribuisaun rekursu sira-nian, liuliu hafoin taka universidade sira iha Rinteln no Helmstedt . Biblioteka universitáriu habelar maka'as liuhosi transferénsia sira hosi Rinteln.
Iha tinan 1810, autoridade sira Westfalia nian bandu estudante sira atu uza kór no farda rejionál sira, hodi hamosu konflitu ne'ebé naruk entre estudante sira no administrasaun. Iha Maiu 1811, estudante 200 resin halo protestu hodi marxa ba Gladenbach, ne'ebé lori ba libertasaun estudante ida ne'ebé dadur no inkéritu ofisiál ida.
Hafoin retornu hosi prínsipe-eleitor iha tinan 1813, reforma barak maka inverte, inklui disolusaun hosi estrutura administrativu sira hosi Westfalia no finansiamentu sentralizadu. Influensiadu husi Funu Libertasaun nian, movimentu estudante sira ne'ebé promove unidade nasionál no ideia liberál sira hetan trasaun iha Marburg. Iha tinan 1816, sosiedade estudante ''Teutonia nian'' hamutuk ho asosiasaun estudante lokál sira hodi forma ''Germania Marburgensis'', maski nia dezenvolvimentu hetan impedimentu hosi Dekretu Carlsbad nian to'o tinan 1850. Iha prínsipe-eleitór Wilhelm I nia okos, restrisaun relijioza sira sai kmaan, hodi permite nomeasaun ba profesór katóliku sira hamutuk ho luteranu sira. Wilhelm II depois fó igualdade konfisionál tomak, ne'ebé kontribui ba aumentu iha matríkula. Durante dékada 1820 no dékada sira tuirmai, universidade habelar nia instalasaun sira, inklui jardín botániku foun, biblioteka, laboratóriu kímiku, teatru anatómiku, observatóriu, no klínika sira. Klínika feto nian, hahú iha Hessian nia ukun, remata iha tinan 1867.
Tuir aneksasaun Hesse nian hosi Prússia iha tinan 1866, universidade tranzita hosi instituisaun rejionál ida ba parte ida hosi sistema edukasaun Prússia nian, hodi hetan benefísiu hosi ninia reforma sira. Iha tempu ne'ebá, iha estudante na'in 264 (na'in 22 hosi li'ur Hesse) no profesór na'in 51.
Tanba limitasaun propriedade no preferénsia atu uza edifísiu estadu nian ne'ebé eziste, universidade desentralizadu nafatin iha sidade tomak envezde adota modelu kampus unifikadu. Númeru estudante sira aumenta beibeik, to'o 500 iha 1880 no liu 1,000 iha 1887.
=== sékulu XX ===
Iha tinan 1909, matríkula estudante nian iha Universidade Marburg aumenta dala rua. Maski feto sira seidauk hetan admisaun formál, Tadako Urata simu grau doutoramentu iha medisina iha tinan 1905 tuir provizaun espesiál ida. Onra akadémika dahuluk ne'ebé fó ba feto ida iha universidade fó ona iha tinan 1827 ba Daniel Jeanne Wyttenbach, ne'ebé simu doutoramentu onoráriu ida ba nia hakerek filozófiku sira kona-ba estétika. Admisaun formál ba feto sira hahú iha semestre invernu 1908/09 ho estudante feto na'in 26; sira nia númeru sa'e ba 206 bainhira mosu Funu Mundiál I.
Funu marka interupsaun boot ida. Enkuantu estudante mane 2,258 maka rejista iha veraun 1914, númeru ne'e tun ba 1,899 iha semestre tuirmai, ho de'it 478 ne'ebé tuir palestra sira. Iha fulan tolu nia laran funu nian, universidade lakon ona estudante na'in 55.
=== Períodu Nazi ===
Iha tinan 1926, kapítulu ida hosi Liga Nasionál Sosialista Estudante Alemaña nian (NSDStB) harii iha Marburg. Iha tinan 1931, ida-ne'e kaer maioria iha konsellu estudante nian no lidera ida-ne'e hahú hosi ne'ebá. Hafoin Nazi sira sa'e ba podér iha tinan 1933, profesór na'in 21—liu désimu ida hosi pesoál profesór sira—hetan demisaun tanba razaun polítika ka rasiál tuir lei sira funsaun públika nian. Entre sira maka matenek-na'in sira ne'ebé notavel hanesan ekonomista Wilhelm Röpke, filólogu romanu Erich Auerbach, no filozofu Karl Löwith . Profesór Hermann Jacobsohn, linguista ida, oho-an iha fulan-Abril tinan 1933 hafoin nia suspensaun. <ref name=":2" /> <ref>{{Cite web |date=1933-05-01 |title=Professor Kills Self |url=https://www.jta.org/archive/professor-kills-self |access-date=2025-09-09 |website=Jewish Telegraphic Agency |language=en}}</ref> Kuota rasial no jéneru foun sira impoin ba estudante sira, limita matríkula Judeu nian ba 1.5% iha jerál no 5% ba estudante sira tinan dahuluk nian. Proporsaun estudante feto sira nian limitadu temporariamente ba 10%.
=== Depois 1945 ===
Tuir 1945, universidade haree kreximentu lalais iha númeru estudante sira. Atu akomoda demanda, esforsu espansaun sira hahú iha dékada 1960, inklui edifísiu administrativu foun, jantar, no palestra sira, no muda Fakuldade Filozofia nian. Fakuldade Siénsia Naturál ida harii iha kampus Lahnberge ne'ebé foin dezenvolve, ne'ebé nia edifísiu sira maka entre sira dahuluk iha Alemaña ne'ebé tuir modelu konstrusaun prefabrikadu ne'ebé koñesidu hanesan ''Sistema Marburg'' .
=== sékulu 21 ===
Eventu nasionál ida ne'ebé maka laiha presedente akontese iha loron 1 fulan-Janeiru tinan 2006, bainhira ospitál universitáriu hetan privatizasaun no fa'an ba Rhön-Klinikum AG, empreza privadu ida kuidadu saúde nian, hafoin nia fuzaun ho Ospitál Universitáriu Gießen nian. <ref>{{Cite news |last=Conrad |first=Till |date=2022-05-16 |title=Die langen Kämpfe ums Krankenhaus |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Iha tinan 2012 universidade loke muzeu kímika interativu dahuluk alemaun nian, ho naran ''Chemicum'' . Ninia programa kursu esperimentál ho objetivu atu enkoraja foin-sa'e sira atu buka kareira iha siénsia. <ref name="chemicum-news">{{Cite web |date=12 February 2011 |title="Chemikum Marburg" hat ein dauerhaftes Domizil |url=https://idw-online.de/pages/en/news454460 |access-date=23 January 2012 |publisher=Informationsdienst Wissenschaft}}</ref>
== Estrutura ==
[[Imajen:Marburg_UB_Neubau_Eingang_Alter_Botanischer_Garten_von_OSO.jpg|miniaturadaimagem|Biblioteka universitáriu]]
[[Imajen:Uni_Marburg_Lahnberge_04.jpg|miniaturadaimagem|''Kampus Lahnberge'' dedika ba siénsia naturál sira. Imajen hatudu ''Edifísiu ho Objetivu Múltiplu'', uma ba Departamentu Matemátika no Siénsia Informátika, no mós laboratóriu sira ba peskiza iha siénsia materiál no kímika fízika]]
=== Departamentu sira ===
Universidade Marburg fahe ba 16 fakuldade. Iha nia tempu dahuluk, universidade ne'e kompostu husi Fakuldade Teolojia, Fakuldade Medisina, Fakuldade Direitu, no Fakuldade Filosofia. Husi Fakuldade Filosofia, Fakuldade Matemátika no Siénsia Naturál separa iha tinan 1964.
Iha tinan 1970, tuir Lei Edukasaun Asentu-Superiór Hesse nian, fakuldade sira ne'e hetan reestruturasaun sai fakuldade 20. Depois husi fusaun sira ne'ebé akontese liu husi tinan 1997, organizasaun atual kompostu husi 16 fakuldade, ne'ebé numerasaun la tuir ona sequência kontinua. [1]
Hanesan parte ida hosi Prosesu Bologna nian, Universidade introdús númeru boot ida hosi programa foun sira Lisensiatura no Mestradu nian. Iha tempu hanesan, programa lisensiatura tradisionál sira ho Majistradu, Diplom no kualifikasaun sira ne'ebé hanesan hapara tiha. <ref>{{Cite web |date=2007-11-06 |title=Marburger Lehrer informieren sich über neues Studiensystem |url=https://www.uni-marburg.de/archive/news/2007-11-6-marburger-lehrer-informieren-sich-uber-neues-studiensystem.html |access-date=2025-09-09 |website=Uni Marburg}}</ref>
=== Institutu no muzeu asosiadu sira ===
Universidade koopera ho institutu afiliadu sira tuirmai:
* Fundasaun Christoph Dornier ba Psikolojia Klínika <ref>{{Cite news |last=Dietrich |first=Simon |date=1991-10-23 |title=Philipps-Universitaet. Viele Kooperationen mit Unternehmen |work=[[Handelsblatt]] |language=de}}</ref>
* Sentru Peskiza ba Hakerek Pesoál sira <ref>{{Cite news |date=2012-09-20 |title=Aufschlussreiche Würdigungen Verstorbener |work=[[Ostthüringer Zeitung]] |pages=14 |language=de}}</ref>
* Institutu Hans von Soden ba Peskiza Teolójika <ref>{{Cite news |date=2003-11-11 |title=Universität Marburg Neues Institut zur Förderung von Theologen |work=[[Frankfurter Rundschau]] |pages=34 |language=de}}</ref>
* Jestaun Kuidadu Saúde eV <ref>{{Cite news |date=2005-06-18 |title=Gesundheitsmanagement |work=[[Salzburger Nachrichten]] |pages=39 |language=de}}</ref>
* Institutu ba Estudu Kooperativu sira (fundasaun legál privadu ida) <ref>{{Cite news |last=Fehl |first=Ulrich |date=1998-01-26 |title=Im Rahmen marktwirtschaftlicher Ordnung |work=[[Frankfurter Allgemeine Zeitung]] |pages=14 |language=de}}</ref>
* Institutu ba Terapia Komportamentál no Medisina Komportamentál (IVV) <ref>{{Cite news |date=2008-11-21 |title=Vortrag über Selbstverletzungen bei Jugendlichen |work=Gießener Anzeiger |language=de}}</ref>
* Institutu ba Étika Negósiu no Sosiál <ref>{{Cite news |last=Meyer |first=Claus-Peter |date=2001-11-29 |title=Debeka als Arbeitgeber ausgezeichnet |work=VersicherungsJournal Deutschland |language=de}}</ref>
* Semináriu Katóliku-Teolójiku Fakuldade Teolojia nian iha Fulda <ref>{{Cite news |date=2020-10-16 |title=Keine Priester mehr aus Fulda? |work=[[Frankfurter Allgemeine Zeitung]] |pages=5 |language=de}}</ref>
Muzeu sira tuirmai ne'e iha afiliasaun ho universidade:
* Muzeu Mineralójiku hosi Universidade Philipps Marburg <ref>{{Cite news |date=2013-08-27 |title=Bedeutende Sammlung von Mineralien gestiftet |work=Oberhessische Zeitung |language=de}}</ref>
* Muzeu Arte no Istória Kulturál <ref>{{Cite web |title=Kunstmuseum |url=https://www.uni-marburg.de/de/museum/kunstmuseum |access-date=2025-09-09 |website=Uni Marburg |language=de}}</ref> <ref>{{Cite news |last=Schwarzwäller |first=Nadja |date=2018-06-19 |title=Verein macht sich stark für Museum |work=[[Oberhessische Presse]] |language=de}}</ref>
=== Kolesaun sira husi universidade (selesaun) ===
* Alter Botanischer Garten Marburg, the university's old [[botanical garden]]
* Botanischer Garten Marburg, the university's current botanical garden
* Forschungsinstitut Lichtbildarchiv älterer Originalurkunden bis 1250 (Collection of photographs taken from medieval charters)
* Bildarchiv Foto Marburg (German national picture archive of arts)
* Religionskundliche Sammlung (Collection of religious objects)
* Deutscher Sprachatlas (Linguistic Atlas of Germany)<ref>{{Cite web |title=Research Center Deutscher Sprachatlas |url=https://www.uni-marburg.de/en/fb09/dsa |access-date=1 August 2024}}</ref>
* Mineralogisches Museum (Museum of Mineralogy)
* Museum für Kunst und Kulturgeschichte (Museum of Arts)
* Museum Anatomicum (Museum of Anatomy and Medical History, currently closed)<ref>{{Cite news |last=Pfaffel |first=Dorothee |date=2025-04-04 |title=Wollen Sie das sehen? |work=Neuburger Rundschau |pages=25 |language=de}}</ref>
* University Archive https://www.uni-marburg.de/de/uniarchiv
== Peskiza ==
=== Klasifikasaun sira ===
Departamentu sira psikolojia no jeografia nian atinji ona estatutu Grupu Exelénsia nian iha Klasifikasaun Exelénsia CHE nian iha Europa tomak 2009.<templatestyles src="Module:Infobox/styles.css"></templatestyles>Tuir QS World University Rankings of 2024, instituisaun ne'e situa iha intervalu 761-770 globalmente, no nia kaer pozisaun 40-41 nasionalmente. Tuir THE World University Rankings of 2024, nia hetan klasifikasaun iha grupu 401-500 iha nivel mundiál, enkuantu nia klasifikasaun nasionál monu entre 37 no 41. Iha ARWU World Rankings of 2023, universidade ne'e lista iha 401-500 iha mundu tomak no nia hetan pozisaun entre 25 no nasionál 31.
=== Sentru Peskiza Kolaborativu sira ===
Universidade ne'e signifikativu ba nia peskiza siénsia-moris nian maibé mós uma ba sentru ida hosi sentru uitoan ne'ebé hala'o peskiza kona-ba Médiu Oriente, CNMS ( Sentru ba Estudu sira Médiu Oriente no Besik nian ).
Peskiza universidade nian ilustra hosi nia partisipasaun iha SFB oioin ( ''Sonderforschungsbereiche'' ). Sentru peskiza kolaborativu sira-ne'e hetan finansiamentu hosi Fundasaun Siénsia Alemaña ''DFG'' . Sira enkoraja peskizadór sira atu hakat liu baliza sira hosi dixiplina sira, institutu sira, departamentu sira no fakuldade sira iha universidade partisipante nia laran. SFB atuál iha Universidade Marburg maka: <ref>{{Cite web |title=Sonderforschungsbereiche |url=https://www.uni-marburg.de/de/forschung/spitzenfoerderung/sfb |access-date=9 May 2020 |website=Philipps-Universität Marburg}}</ref>
* SFB 1083 – Estrutura no Dinámika Interfase Internu sira-nian (hahú iha 2013, iha kooperasaun ho Sentru Fízika Internasionál Donostia San Sebastián ) <ref>{{Cite web |date=2025-04-09 |title=SFB1083 |url=https://www.internal-interfaces.de/ |access-date=2025-09-09 |website=Internal Interfaces |language=en}}</ref>
* SFB/TRR 138 – Dinámika Seguransa nian: Forma sira Titulizasaun nian iha Perspetiva Istóriku (hahú iha 2014)
* CRC/TRR 393 – Trajetória sira husi Transtornu Afetivu sira (dezde 2024)
=== Manan-na'in sira Prémiu Nobel nian ===
Entre 1901 no 2011, ema na'in sanulu-resin-ida ne'ebé asosiadu ho Universidade Marburg liuhosi estudu ka hanorin hetan Prémiu Nobel[[File:Nobel_Prize.png|15x15px]] : <ref>{{Cite web |title=Nobelpreisträger |url=https://www.uni-marburg.de/de/universitaet/profil/geschichte/nobelpreistraeger |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 1901: Emil von Behring (Medicine)<ref>{{Cite news |last=Warnecke |first=Christiane |date=2009-06-13 |title=Mit Emil von Behring fing alles an |work=[[Frankfurter Neue Presse]] |pages=1 |language=de}}</ref>
* 1909: Ferdinand Braun (Physics)
* 1910: Albrecht Kossel (Medicine)
* 1930: Hans Fischer (Chemistry)
* 1936: Otto Loewi (Medicine)
* 1939: Adolf Butenandt (Chemistry)
* 1944: Otto Hahn (Chemistry)<ref>{{Cite news |last=Hanke |first=Franz-Josef |date=2008-06-23 |title=Ehre, wem Ehre gebührt – Wissenschaftspreise ehren die Forscher und nutzen auch wieder der Wissenschaft |work=[[Badische Zeitung]] |pages=12 |language=de}}</ref>
* 1958: Boris Pasternak (Literature)
* 1963: Karl Ziegler (Chemistry)
* 1979: Georg Wittig (Chemistry)
* 2011: Jules Hoffmann (Medicine)<ref>{{Cite news |last=Breu |first=Michael |date=2011-10-04 |title=Nobelpreis geht an einen Toten. Medizinpreis erstmals posthum vergeben |work=[[Basler Zeitung]] |pages=12 |language=de}}</ref>
=== Manan-na'in sira Prémiu Leibniz nian ===
Prémiu Gottfried Wilhelm Leibniz fó ba peskizadór sira tuirmai ne'ebé iha afiliasaun ho Universidade Marburg: <ref>{{Cite news |date=2021-12-10 |title=Trägerinnen und Träger des Leibnizpreises an der Philipps-Universität Marburg |work=[[Oberhessische Presse]] |pages=3 |language=de}}</ref>
* 1987: Rudolf K. Thauer – Mikrobiolojia Biokímika
* 1989: Manfred T. Reetz – Kímika Orgánika
* 1991: Ernst O. Göbel – Fízika Estadu-Sólidu
* 1991: Rolf Müller – Biokímika / Biolojia Molekulár
* 1996: Reinhard Lührmann – Biolojia Molekulár
* 1997: Paul Knochel – Kímika Organometálika
* 1997: Stephan W. Koch – Fízika Teórika
* 2002: Bruno Eckhardt – Fízika Teórika
* 2003: Roland Lill – Biolojia Sélula / Biokímika
* 2006: Gyburg Radke (kaben ho Uhlmann) – Filolójia no Filozofia Klásiku
* 2011: Friederike Pannewick – Estudu Árabe
* 2022: Stefanie Dehnen – Kímika Inorgánika
* 2024: Tobias Erb – Mikrobiolojia Sintétika
=== Prémiu Ars legend ba ensinu universitáriu ne'ebé di'ak tebes ===
Prémiu Ars legendi ba Ensinu Universitáriu Exelente, prémiu aas liu iha Alemaña iha área ensinu superiór nian, ne'ebé aprezenta hosi Stifterverband für die Deutsche Wissenschaft no Konferénsia Reitór Alemaña nian (HRK), fó ba ema sira tuirmai ne'ebé hanorin iha Universidade Marburg: <ref>{{Cite web |last= |title=Ars legendi-Preis |url=https://www.stifterverband.org/ars-legendi-preis |access-date=2025-09-09 |website=Stifterverband |language=de}}</ref> <ref name=":3">{{Cite web |title=Preisträger*innen |url=https://www.uni-marburg.de/de/universitaet/profil/zahlen-fakten-preise/preise |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 2010: Jürgen Schäfer (Prémiu Fakuldade ba Medisina)
* 2015: Jürgen Handke (ba "Ensinu no Aprendizajen Dijitál")
* 2016: Ilka Agricola (Prémiu Fakuldade nian ba Matemátika)
* 2017: Stefan Bösner (Prémiu Fakuldade ba Medisina)
* 2018: Evelyn Korn (ba "Alineamentu Konstrutivu")
* 2024: Rolf Kreyer (ba "Teoria no prátika linguístika Inglés nian kombinadu") <ref>{{Cite web |last= |date=2025-06-05 |title=Marburger Anglist Professor Kreyer erhält Preis für ausgezeichnete Lehre |url=https://www.op-marburg.de/lokales/marburg-biedenkopf/marburg/marburger-anglist-professor-kreyer-erhaelt-preis-fuer-ausgezeichnete-lehre-IVUZOSGCCREO3F2XUUNLS5N474.html |access-date=2025-09-09 |website=[[Oberhessische Presse]] |language=de}}</ref>
=== Instituisaun sientífika sira ===
Universidade Marburg simu instituisaun akadémika no peskiza oioin:
* Akademia Peskiza Universidade Marburg (MARA) apoia peskizadór sira iha kareira inisiál liuhosi formasaun interdisiplinár, finansiamentu, no servisu dezenvolvimentu kareira nian. <ref>{{Cite news |date=2010-12-23 |title=Bedingungen für Promotion transparent machen |work=Gießener Anzeiger |language=de}}</ref>
* Sentru Dokumentasaun Alemaña ba Istória Arte nian (Bildarchiv Foto Marburg) maka arkivu imajen ida ne'ebé boot liu iha Europa ba arte no arkitetura, ne'ebé fornese rekursu no servisu sira ba muzeu sira, matenek-na'in sira, no editór sira. <ref>{{Cite news |last=Brockschmidt |first=Rolf |date=2023-09-02 |title=Für den Fall der Fälle |work=[[Der Tagesspiegel]] |pages=34 |language=de}}</ref>
* Sentru Demokrasia Hesse koordena esforsu sira hasoru estremizmu direita no oferese programa Mestradu ida iha akonsellamentu iha kontestu ne'ebá. <ref>{{Cite news |last=Haschink |first=Gregor |date=2022-05-11 |title=Opferberatung studieren |work=[[Frankfurter Rundschau]] |language=de}}</ref>
* Sentru Peskiza Deutscher Sprachatlas dokumenta no estuda variedade rejionál sira hosi lian Alemaña no mantein arkivu ida ne'ebé luan hosi materiál dialetu sira hosi fatin 50,000 resin. <ref>{{Cite news |last=Rummel |first=Silke |date=2014-09-09 |title=Forschungszentrum Deutscher Sprachatlas |work=Darmstädter Echo |language=de}}</ref>
* Sentru Estudu Jéneru no Peskiza Feminista, harii iha 2001, promove serbisu interdisiplinár iha estudu jéneru no koordena programa akadémiku sira ne'ebé iha relasaun. <ref>{{Cite news |date=2017-11-10 |title=Bildungsministerium gibt knapp eine Million Euro für Gender-Forschung |work=[[Oberhessische Presse]] |language=de}}</ref>
* Jardim Botániku, ne'ebé lokaliza iha kampus Lahnberge, ho luan hektar 20 no inklui kolesaun ai-horis ne'ebé luan, área peskiza nian, no estufa sira; Jardim Botániku Antigu agora serve hanesan parke públiku. <ref>{{Cite web |last=Ahlers |first=Wolfram |date=2021-08-20 |title=Botanischer Garten in Marburg muss renoviert werden |url=https://www.faz.net/aktuell/rhein-main/region-und-hessen/botanischer-garten-in-marburg-muss-renoviert-werden-17488145.html |access-date=2025-09-09 |website=[[Frankfurter Allgemeine Zeitung]] |language=de}}</ref>
* SYNMIKRO, Sentru ba Mikrobiolojia Sintétika, avansa peskiza kona-ba enjeñaria funsaun mikrobiál sira, ho aplikasaun sira iha bioteknolojia no medisina, iha kolaborasaun ho Sosiedade Max Planck . <ref>{{Cite news |last=Hitzeroth |first=Manfred |date=2018-11-10 |title=Sieg mit mikrobiologischem Baukasten |work=[[Oberhessische Presse]] |language=de}}</ref>
== Estudante sira ==
[[Imajen:Alte_Universität_(Marburg)_2.jpg|miniaturadaimagem|''Universidade Antiga'', ne'ebé maka iha igreja universitáriu, departamentu ba estudu relijiozu sira no sala palestra reprezentativu ida]]
Students at Marburg University are represented by the General Student Committee (AStA) and the Student Parliament (StuPa), with additional representation at faculty level through student councils. The universal transit pass (semester ticket), negotiated by the AStA, allows students extensive access to public transport in Hesse and neighbouring areas, including use of selected InterCity (IC) and InterCity Express (ICE) trains.<ref>{{Cite news |date=2018-10-24 |title=ICE: Für Asta war Ticket-Reichweite zentraler Punkt |work=[[Oberhessische Presse]] |language=de}}</ref><ref>{{Cite news |last=Robinson |first=Patrick |date=2025-03-06 |title=Nach der Prüfung ist vor der Prüfung |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Universidade oferese rezidénsia oioin ba estudante sira, inklui Christian-Wolff-Haus, <ref>{{Cite news |date=2024-11-16 |title=Kernsanierung für Christian-Wolff-Haus |work=[[Oberhessische Presse]] |pages=5 |language=de}}</ref> istóriku Collegium Philippinum, <ref>{{Cite news |date=2025-09-08 |title=Felina Karle bekommt dank jahrhundertealten Rechts einen Platz im Collegium Philippinum in Marburg |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref> no Vilmarhaus, ne'ebé maka jere hosi Igreja Protestante. Konrad-Biesalski-Haus nafatin notavel ba nia asesibilidade pioneiru ba estudante sira ho defisiénsia fíziku. <ref>{{Cite news |last=Maas |first=Marie-Charlotte |date=2012-06-14 |title=Gleichheit unter Ungleichen |work=[[Die Zeit]] |pages=71 |language=de}}</ref>
== Antigu alunu no profesór sira ne'ebé notavel ==
=== Sientista naturál sira ===
<templatestyles src="Div col/styles.css" />
=== Teólogu sira ===
Marburg sempre koñesidu hanesan universidade ida ne'ebé foka ba umanidade . Ida-ne'e mantein forsa ne'e, liuliu iha Filozofia no Teolojia ba tempu naruk hafoin Funu Mundiál Daruak . <ref>{{Cite web |last=Peter |first=Lothar |date=2020-05-02 |title=Ein Partisan im Land der Mitläufer |url=https://jacobin.de/artikel/wolfgang-abendroth-marburg-marxismus-partisanenprofessor |access-date=2025-09-09 |website=Jacobin Magazin |language=de}}</ref> <ref>{{Cite news |last=Sieg |first=Ulrich |date=2005-02-05 |title=Aus dem Geiste Kants Hermann Cohen, Paul Natorp und der Erste Weltkrieg |work=[[Neue Zürcher Zeitung]] |pages=64 |language=de}}</ref><templatestyles src="Div col/styles.css" />
=== Filózofu sira ===
=== Seluk ===
<templatestyles src="Div col/styles.css" />
[[Kategoria:Páginas com traduções não revistas]]
tnux3tc6x0fpeu16vsu4uv0keq0ixju
73851
73850
2026-07-11T13:44:05Z
Diamantino Soares
9475
73851
wikitext
text/x-wiki
=== Introdusaun ===
'''Universidade Marburg''' mak universidade peskiza públika ida ne'ebé lokaliza iha Marburg, Alemaña. Universidade ne'e harii iha tinan 1527 hosi Filipe I, Landgrave hosi Hesse, no konsidera hanesan universidade ida ne'ebé tuan liu iha Alemaña no universidade protestante tuan liu ne'ebé sei kontinua funsiona to'o ohin loron iha mundu.
Ohin loron, Universidade Marburg mak universidade públika ida ne'ebé pertence ba Estadu Hesse, no la iha afiliasaun relijioza.
Universidade Marburg iha estudante hamutuk 21.162 iha tinan akademiku 2024/2025. Universidade ne'e lokaliza iha Marburg, Alemaña, no oferese programa estudu internasionál oioin. Aleinde ne'e, universidade ne'e mós partisipa iha programa Erasmus, ne'ebé fó oportunidade ba estudante sira atu tuir programa troka estudante ho universidade sira seluk iha Europa.
== Istória ==
=== Tinan sira iha Fundasaun nian ===
Iha loron 1 fulan-Jullu 1527, xefe rai-na'in nian Johann Feige inaugura oficialmente Universidade Marburg, ne'ebé harii husi Landgrave Philip I liuhusi dekretu ida iha loron 30 fulan Maiu tinan ne'ebá. Iha tempu inaugurasaun, universidade ne'e iha profesór 11 no estudante 88.
Reitór dahuluk Universidade Marburg mak Johannes Eisermann, ne'ebé koñesidu mós ho naran latín ''Ferrarius Montanus''. Nia hanorin direitu no servisu hanesan asesór ba tribunál landgravial iha Amöneburg. Iha tinan ne'ebá duni, Philip I fó ba universidade ne'e liberdade akadémika ne'ebé presiza atu hala'o nia atividade sira.
Iha loron 4 fulan Outubru 1541, Universidade Marburg hetan independénsia finanseira liuhosi eskritura dotasaun. Tinan tuirmai, Landgrave Philip I simu priviléjiu universitáriu hosi Imperadór Carlos V durante Dieta Imperiál iha Regensburg.
Iha tempu dahuluk, Universidade Marburg uza edifísiu monástiku antigu sira ne'ebé uluk pertense ba Dominikanu sira, Fransiskanu sira, no Irmaun sira husi Vida Komún.
Landgrave Philip I mós fó ba universidade priviléjiu oioin, inklui direitu atu haruka reprezentante ida ba asembleia rejionál, no izensaun hosi taxa no impostu ba membru universitáriu sira.
Iha tinan 1529, Landgrave Philip I sai uma-na'in ba Marburg Colloquy, debate relijiozu ida entre Martin Luther, Ulrich Zwingli, no Philip Melanchthon.
Reputasaun husi fakuldade teolójia Universidade Marburg atrai estudante internasionál sira, liuliu husi Suisa, Dinamarka, Suésia, Olanda, no Eskósia. Entre estudante sira ne'e iha Patrick Hamilton, ne'ebé estuda iha Marburg ba tempu badak.
Durante sékulu dahuluk universidade nian, surtu moras oioin, hanesan moras suar Inglés no peste, obriga universidade atu muda temporariamente ba sidade sira ne'ebé besik.
=== sékulu XVI no XVII ===
To'o nia mate iha tinan 1560, Johann Friedrich Dryander kaer kadeira medisina iha Universidade Marburg. Iha loron 15 fulan-Novembru 1565, Landgrave William IV hosi Hesse-Kassel nomeia Georg Marius nu'udar profesór, lahó hetan uluk konsentimentu formál husi universidade.
Iha tinan 1566, universidade harii kadeira medisina daruak, ne'ebé prenxe husi Victorinus Schönfeldt. Antes ne'e, nia serbisu nu'udar profesór matemátika iha universidade.
Entre tinan 1580 no 1628, Rudolph Goclenius maka profesór filozofia, lójika, no étika iha Universidade Marburg.
Bainhira Landgrave Maurice husi Hesse-Kassel hetan eransa husi Landgraviate Hesse-Marburg iha tinan 1604, nia konverte ba Calvinizmu iha tinan tuirmai. Tanba ne'e, universidade hetan obrigasaun atu adopta konfisaun Reformada, ne'ebé nia mantein to'o nia alinhamentu konfisionál nia rohan iha tinan 1866.
Mudansa konfisionál ida ne'e lori profesór Luteranu barak ba Universidade Giessen, ne'ebé foin harii iha tinan 1607. Iha tinan 1625, bainhira Marburg temporariamente tama iha okos Hesse-Darmstadt Luteranu, Universidade Giessen fila fali ba Universidade Marburg no depois taka.
Iha loron 24 fulan-Juñu 1653, universidade ne'e loke fali husi William VI husi Hesse-Kassel, ne'ebé muda fali universidade estadu nian husi Kassel ba Marburg, nune'e taka Universidade Kassel. Iha tinan sira tuirmai, universidade hasoru tempu difisil sira tanba konfisionalizasaun ne'ebé la'o hela no susar finanseiru.
=== sékulu 18 ===
Iha tinan 1723, filózofu Christian Wolff hetan nomeasaun ba kadeira ida iha Universidade Marburg hafoin hetan espulsaun hosi Halle hosi Frederick William I. Maski hetan opozisaun hosi parte sira hosi fakuldade teolójika, Wolff hanorin iha Marburg to'o 1740 ho protesaun hosi Landgrave, molok hetan bolu fali ba Prússia hosi Frederick the Great . Funu Tinan Hitu nian ikusmai perturba universidade, tanba Hesse sai hanesan kampu funu nian no Marburg hetan fortifikasaun.
Iha tinan 1785, universidade ne'e iha estatutu legál no polítiku espesiál: nia iha nia jurisdisaun rasik, dotasaun ekleziástiku sira, no kadeira ida iha asembleia rejionál. Landgrave hala'o knaar nu'udar reitór, ministru finansas nu'udar kuradór, no senadu kompostu hosi reprezentante sira hosi teolojia, lei, medisina, no filozofia, hamutuk ho instrutór linguajen no tékniku sira.
Universidade Marburg hetan kreximentu foun durante era Napoleónika . Iha tinan 1807, Eleitoradu Hesse nian sai parte hosi Reinu Westfalia ne'ebé foin harii, estadu satélite fransés ida. Maski universidade oioin iha reinu foun nia laran taka, Marburg hetan salvasaun no benefísiu finanseiru hosi redistribuisaun rekursu sira-nian, liuliu hafoin taka universidade sira iha Rinteln no Helmstedt . Biblioteka universitáriu habelar maka'as liuhosi transferénsia sira hosi Rinteln.
Iha tinan 1810, autoridade sira Westfalia nian bandu estudante sira atu uza kór no farda rejionál sira, hodi hamosu konflitu ne'ebé naruk entre estudante sira no administrasaun. Iha Maiu 1811, estudante 200 resin halo protestu hodi marxa ba Gladenbach, ne'ebé lori ba libertasaun estudante ida ne'ebé dadur no inkéritu ofisiál ida.
Hafoin retornu hosi prínsipe-eleitor iha tinan 1813, reforma barak maka inverte, inklui disolusaun hosi estrutura administrativu sira hosi Westfalia no finansiamentu sentralizadu. Influensiadu husi Funu Libertasaun nian, movimentu estudante sira ne'ebé promove unidade nasionál no ideia liberál sira hetan trasaun iha Marburg. Iha tinan 1816, sosiedade estudante ''Teutonia nian'' hamutuk ho asosiasaun estudante lokál sira hodi forma ''Germania Marburgensis'', maski nia dezenvolvimentu hetan impedimentu hosi Dekretu Carlsbad nian to'o tinan 1850. Iha prínsipe-eleitór Wilhelm I nia okos, restrisaun relijioza sira sai kmaan, hodi permite nomeasaun ba profesór katóliku sira hamutuk ho luteranu sira. Wilhelm II depois fó igualdade konfisionál tomak, ne'ebé kontribui ba aumentu iha matríkula. Durante dékada 1820 no dékada sira tuirmai, universidade habelar nia instalasaun sira, inklui jardín botániku foun, biblioteka, laboratóriu kímiku, teatru anatómiku, observatóriu, no klínika sira. Klínika feto nian, hahú iha Hessian nia ukun, remata iha tinan 1867.
Tuir aneksasaun Hesse nian hosi Prússia iha tinan 1866, universidade tranzita hosi instituisaun rejionál ida ba parte ida hosi sistema edukasaun Prússia nian, hodi hetan benefísiu hosi ninia reforma sira. Iha tempu ne'ebá, iha estudante na'in 264 (na'in 22 hosi li'ur Hesse) no profesór na'in 51.
Tanba limitasaun propriedade no preferénsia atu uza edifísiu estadu nian ne'ebé eziste, universidade desentralizadu nafatin iha sidade tomak envezde adota modelu kampus unifikadu. Númeru estudante sira aumenta beibeik, to'o 500 iha 1880 no liu 1,000 iha 1887.
=== sékulu XX ===
Iha tinan 1909, matríkula estudante nian iha Universidade Marburg aumenta dala rua. Maski feto sira seidauk hetan admisaun formál, Tadako Urata simu grau doutoramentu iha medisina iha tinan 1905 tuir provizaun espesiál ida. Onra akadémika dahuluk ne'ebé fó ba feto ida iha universidade fó ona iha tinan 1827 ba Daniel Jeanne Wyttenbach, ne'ebé simu doutoramentu onoráriu ida ba nia hakerek filozófiku sira kona-ba estétika. Admisaun formál ba feto sira hahú iha semestre invernu 1908/09 ho estudante feto na'in 26; sira nia númeru sa'e ba 206 bainhira mosu Funu Mundiál I.
Funu marka interupsaun boot ida. Enkuantu estudante mane 2,258 maka rejista iha veraun 1914, númeru ne'e tun ba 1,899 iha semestre tuirmai, ho de'it 478 ne'ebé tuir palestra sira. Iha fulan tolu nia laran funu nian, universidade lakon ona estudante na'in 55.
=== Períodu Nazi ===
Iha tinan 1926, kapítulu ida hosi Liga Nasionál Sosialista Estudante Alemaña nian (NSDStB) harii iha Marburg. Iha tinan 1931, ida-ne'e kaer maioria iha konsellu estudante nian no lidera ida-ne'e hahú hosi ne'ebá. Hafoin Nazi sira sa'e ba podér iha tinan 1933, profesór na'in 21—liu désimu ida hosi pesoál profesór sira—hetan demisaun tanba razaun polítika ka rasiál tuir lei sira funsaun públika nian. Entre sira maka matenek-na'in sira ne'ebé notavel hanesan ekonomista Wilhelm Röpke, filólogu romanu Erich Auerbach, no filozofu Karl Löwith . Profesór Hermann Jacobsohn, linguista ida, oho-an iha fulan-Abril tinan 1933 hafoin nia suspensaun. <ref name=":2" /> <ref>{{Cite web |date=1933-05-01 |title=Professor Kills Self |url=https://www.jta.org/archive/professor-kills-self |access-date=2025-09-09 |website=Jewish Telegraphic Agency |language=en}}</ref> Kuota rasial no jéneru foun sira impoin ba estudante sira, limita matríkula Judeu nian ba 1.5% iha jerál no 5% ba estudante sira tinan dahuluk nian. Proporsaun estudante feto sira nian limitadu temporariamente ba 10%.
=== Depois 1945 ===
Tuir 1945, universidade haree kreximentu lalais iha númeru estudante sira. Atu akomoda demanda, esforsu espansaun sira hahú iha dékada 1960, inklui edifísiu administrativu foun, jantar, no palestra sira, no muda Fakuldade Filozofia nian. Fakuldade Siénsia Naturál ida harii iha kampus Lahnberge ne'ebé foin dezenvolve, ne'ebé nia edifísiu sira maka entre sira dahuluk iha Alemaña ne'ebé tuir modelu konstrusaun prefabrikadu ne'ebé koñesidu hanesan ''Sistema Marburg'' .
=== sékulu 21 ===
Eventu nasionál ida ne'ebé maka laiha presedente akontese iha loron 1 fulan-Janeiru tinan 2006, bainhira ospitál universitáriu hetan privatizasaun no fa'an ba Rhön-Klinikum AG, empreza privadu ida kuidadu saúde nian, hafoin nia fuzaun ho Ospitál Universitáriu Gießen nian. <ref>{{Cite news |last=Conrad |first=Till |date=2022-05-16 |title=Die langen Kämpfe ums Krankenhaus |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Iha tinan 2012 universidade loke muzeu kímika interativu dahuluk alemaun nian, ho naran ''Chemicum'' . Ninia programa kursu esperimentál ho objetivu atu enkoraja foin-sa'e sira atu buka kareira iha siénsia. <ref name="chemicum-news">{{Cite web |date=12 February 2011 |title="Chemikum Marburg" hat ein dauerhaftes Domizil |url=https://idw-online.de/pages/en/news454460 |access-date=23 January 2012 |publisher=Informationsdienst Wissenschaft}}</ref>
== Estrutura ==
[[Imajen:Marburg_UB_Neubau_Eingang_Alter_Botanischer_Garten_von_OSO.jpg|miniaturadaimagem|Biblioteka universitáriu]]
[[Imajen:Uni_Marburg_Lahnberge_04.jpg|miniaturadaimagem|''Kampus Lahnberge'' dedika ba siénsia naturál sira. Imajen hatudu ''Edifísiu ho Objetivu Múltiplu'', uma ba Departamentu Matemátika no Siénsia Informátika, no mós laboratóriu sira ba peskiza iha siénsia materiál no kímika fízika]]
=== Departamentu sira ===
Universidade Marburg fahe ba 16 fakuldade. Iha nia tempu dahuluk, universidade ne'e kompostu husi Fakuldade Teolojia, Fakuldade Medisina, Fakuldade Direitu, no Fakuldade Filosofia. Husi Fakuldade Filosofia, Fakuldade Matemátika no Siénsia Naturál separa iha tinan 1964.
Iha tinan 1970, tuir Lei Edukasaun Asentu-Superiór Hesse nian, fakuldade sira ne'e hetan reestruturasaun sai fakuldade 20. Depois husi fusaun sira ne'ebé akontese liu husi tinan 1997, organizasaun atual kompostu husi 16 fakuldade, ne'ebé numerasaun la tuir ona sequência kontinua. [1]
Hanesan parte ida hosi Prosesu Bologna nian, Universidade introdús númeru boot ida hosi programa foun sira Lisensiatura no Mestradu nian. Iha tempu hanesan, programa lisensiatura tradisionál sira ho Majistradu, Diplom no kualifikasaun sira ne'ebé hanesan hapara tiha. <ref>{{Cite web |date=2007-11-06 |title=Marburger Lehrer informieren sich über neues Studiensystem |url=https://www.uni-marburg.de/archive/news/2007-11-6-marburger-lehrer-informieren-sich-uber-neues-studiensystem.html |access-date=2025-09-09 |website=Uni Marburg}}</ref>
=== Institutu no muzeu asosiadu sira ===
Universidade koopera ho institutu afiliadu sira tuirmai:
* Fundasaun Christoph Dornier ba Psikolojia Klínika <ref>{{Cite news |last=Dietrich |first=Simon |date=1991-10-23 |title=Philipps-Universitaet. Viele Kooperationen mit Unternehmen |work=[[Handelsblatt]] |language=de}}</ref>
* Sentru Peskiza ba Hakerek Pesoál sira <ref>{{Cite news |date=2012-09-20 |title=Aufschlussreiche Würdigungen Verstorbener |work=[[Ostthüringer Zeitung]] |pages=14 |language=de}}</ref>
* Institutu Hans von Soden ba Peskiza Teolójika <ref>{{Cite news |date=2003-11-11 |title=Universität Marburg Neues Institut zur Förderung von Theologen |work=[[Frankfurter Rundschau]] |pages=34 |language=de}}</ref>
* Jestaun Kuidadu Saúde eV <ref>{{Cite news |date=2005-06-18 |title=Gesundheitsmanagement |work=[[Salzburger Nachrichten]] |pages=39 |language=de}}</ref>
* Institutu ba Estudu Kooperativu sira (fundasaun legál privadu ida) <ref>{{Cite news |last=Fehl |first=Ulrich |date=1998-01-26 |title=Im Rahmen marktwirtschaftlicher Ordnung |work=[[Frankfurter Allgemeine Zeitung]] |pages=14 |language=de}}</ref>
* Institutu ba Terapia Komportamentál no Medisina Komportamentál (IVV) <ref>{{Cite news |date=2008-11-21 |title=Vortrag über Selbstverletzungen bei Jugendlichen |work=Gießener Anzeiger |language=de}}</ref>
* Institutu ba Étika Negósiu no Sosiál <ref>{{Cite news |last=Meyer |first=Claus-Peter |date=2001-11-29 |title=Debeka als Arbeitgeber ausgezeichnet |work=VersicherungsJournal Deutschland |language=de}}</ref>
* Semináriu Katóliku-Teolójiku Fakuldade Teolojia nian iha Fulda <ref>{{Cite news |date=2020-10-16 |title=Keine Priester mehr aus Fulda? |work=[[Frankfurter Allgemeine Zeitung]] |pages=5 |language=de}}</ref>
Muzeu sira tuirmai ne'e iha afiliasaun ho universidade:
* Muzeu Mineralójiku hosi Universidade Philipps Marburg <ref>{{Cite news |date=2013-08-27 |title=Bedeutende Sammlung von Mineralien gestiftet |work=Oberhessische Zeitung |language=de}}</ref>
* Muzeu Arte no Istória Kulturál <ref>{{Cite web |title=Kunstmuseum |url=https://www.uni-marburg.de/de/museum/kunstmuseum |access-date=2025-09-09 |website=Uni Marburg |language=de}}</ref> <ref>{{Cite news |last=Schwarzwäller |first=Nadja |date=2018-06-19 |title=Verein macht sich stark für Museum |work=[[Oberhessische Presse]] |language=de}}</ref>
=== Kolesaun sira husi universidade (selesaun) ===
* Alter Botanischer Garten Marburg, the university's old [[botanical garden]]
* Botanischer Garten Marburg, the university's current botanical garden
* Forschungsinstitut Lichtbildarchiv älterer Originalurkunden bis 1250 (Collection of photographs taken from medieval charters)
* Bildarchiv Foto Marburg (German national picture archive of arts)
* Religionskundliche Sammlung (Collection of religious objects)
* Deutscher Sprachatlas (Linguistic Atlas of Germany)<ref>{{Cite web |title=Research Center Deutscher Sprachatlas |url=https://www.uni-marburg.de/en/fb09/dsa |access-date=1 August 2024}}</ref>
* Mineralogisches Museum (Museum of Mineralogy)
* Museum für Kunst und Kulturgeschichte (Museum of Arts)
* Museum Anatomicum (Museum of Anatomy and Medical History, currently closed)<ref>{{Cite news |last=Pfaffel |first=Dorothee |date=2025-04-04 |title=Wollen Sie das sehen? |work=Neuburger Rundschau |pages=25 |language=de}}</ref>
* University Archive https://www.uni-marburg.de/de/uniarchiv
== Peskiza ==
=== Klasifikasaun sira ===
Departamentu sira psikolojia no jeografia nian atinji ona estatutu Grupu Exelénsia nian iha Klasifikasaun Exelénsia CHE nian iha Europa tomak 2009.<templatestyles src="Module:Infobox/styles.css"></templatestyles>Tuir QS World University Rankings of 2024, instituisaun ne'e situa iha intervalu 761-770 globalmente, no nia kaer pozisaun 40-41 nasionalmente. Tuir THE World University Rankings of 2024, nia hetan klasifikasaun iha grupu 401-500 iha nivel mundiál, enkuantu nia klasifikasaun nasionál monu entre 37 no 41. Iha ARWU World Rankings of 2023, universidade ne'e lista iha 401-500 iha mundu tomak no nia hetan pozisaun entre 25 no nasionál 31.
=== Sentru Peskiza Kolaborativu sira ===
Universidade ne'e signifikativu ba nia peskiza siénsia-moris nian maibé mós uma ba sentru ida hosi sentru uitoan ne'ebé hala'o peskiza kona-ba Médiu Oriente, CNMS ( Sentru ba Estudu sira Médiu Oriente no Besik nian ).
Peskiza universidade nian ilustra hosi nia partisipasaun iha SFB oioin ( ''Sonderforschungsbereiche'' ). Sentru peskiza kolaborativu sira-ne'e hetan finansiamentu hosi Fundasaun Siénsia Alemaña ''DFG'' . Sira enkoraja peskizadór sira atu hakat liu baliza sira hosi dixiplina sira, institutu sira, departamentu sira no fakuldade sira iha universidade partisipante nia laran. SFB atuál iha Universidade Marburg maka: <ref>{{Cite web |title=Sonderforschungsbereiche |url=https://www.uni-marburg.de/de/forschung/spitzenfoerderung/sfb |access-date=9 May 2020 |website=Philipps-Universität Marburg}}</ref>
* SFB 1083 – Estrutura no Dinámika Interfase Internu sira-nian (hahú iha 2013, iha kooperasaun ho Sentru Fízika Internasionál Donostia San Sebastián ) <ref>{{Cite web |date=2025-04-09 |title=SFB1083 |url=https://www.internal-interfaces.de/ |access-date=2025-09-09 |website=Internal Interfaces |language=en}}</ref>
* SFB/TRR 138 – Dinámika Seguransa nian: Forma sira Titulizasaun nian iha Perspetiva Istóriku (hahú iha 2014)
* CRC/TRR 393 – Trajetória sira husi Transtornu Afetivu sira (dezde 2024)
=== Manan-na'in sira Prémiu Nobel nian ===
Entre 1901 no 2011, ema na'in sanulu-resin-ida ne'ebé asosiadu ho Universidade Marburg liuhosi estudu ka hanorin hetan Prémiu Nobel[[File:Nobel_Prize.png|15x15px]] : <ref>{{Cite web |title=Nobelpreisträger |url=https://www.uni-marburg.de/de/universitaet/profil/geschichte/nobelpreistraeger |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 1901: Emil von Behring (Medicine)<ref>{{Cite news |last=Warnecke |first=Christiane |date=2009-06-13 |title=Mit Emil von Behring fing alles an |work=[[Frankfurter Neue Presse]] |pages=1 |language=de}}</ref>
* 1909: Ferdinand Braun (Physics)
* 1910: Albrecht Kossel (Medicine)
* 1930: Hans Fischer (Chemistry)
* 1936: Otto Loewi (Medicine)
* 1939: Adolf Butenandt (Chemistry)
* 1944: Otto Hahn (Chemistry)<ref>{{Cite news |last=Hanke |first=Franz-Josef |date=2008-06-23 |title=Ehre, wem Ehre gebührt – Wissenschaftspreise ehren die Forscher und nutzen auch wieder der Wissenschaft |work=[[Badische Zeitung]] |pages=12 |language=de}}</ref>
* 1958: Boris Pasternak (Literature)
* 1963: Karl Ziegler (Chemistry)
* 1979: Georg Wittig (Chemistry)
* 2011: Jules Hoffmann (Medicine)<ref>{{Cite news |last=Breu |first=Michael |date=2011-10-04 |title=Nobelpreis geht an einen Toten. Medizinpreis erstmals posthum vergeben |work=[[Basler Zeitung]] |pages=12 |language=de}}</ref>
=== Manan-na'in sira Prémiu Leibniz nian ===
Prémiu Gottfried Wilhelm Leibniz fó ba peskizadór sira tuirmai ne'ebé iha afiliasaun ho Universidade Marburg: <ref>{{Cite news |date=2021-12-10 |title=Trägerinnen und Träger des Leibnizpreises an der Philipps-Universität Marburg |work=[[Oberhessische Presse]] |pages=3 |language=de}}</ref>
* 1987: Rudolf K. Thauer – Mikrobiolojia Biokímika
* 1989: Manfred T. Reetz – Kímika Orgánika
* 1991: Ernst O. Göbel – Fízika Estadu-Sólidu
* 1991: Rolf Müller – Biokímika / Biolojia Molekulár
* 1996: Reinhard Lührmann – Biolojia Molekulár
* 1997: Paul Knochel – Kímika Organometálika
* 1997: Stephan W. Koch – Fízika Teórika
* 2002: Bruno Eckhardt – Fízika Teórika
* 2003: Roland Lill – Biolojia Sélula / Biokímika
* 2006: Gyburg Radke (kaben ho Uhlmann) – Filolójia no Filozofia Klásiku
* 2011: Friederike Pannewick – Estudu Árabe
* 2022: Stefanie Dehnen – Kímika Inorgánika
* 2024: Tobias Erb – Mikrobiolojia Sintétika
=== Prémiu Ars legend ba ensinu universitáriu ne'ebé di'ak tebes ===
Prémiu Ars legendi ba Ensinu Universitáriu Exelente, prémiu aas liu iha Alemaña iha área ensinu superiór nian, ne'ebé aprezenta hosi Stifterverband für die Deutsche Wissenschaft no Konferénsia Reitór Alemaña nian (HRK), fó ba ema sira tuirmai ne'ebé hanorin iha Universidade Marburg: <ref>{{Cite web |last= |title=Ars legendi-Preis |url=https://www.stifterverband.org/ars-legendi-preis |access-date=2025-09-09 |website=Stifterverband |language=de}}</ref> <ref name=":3">{{Cite web |title=Preisträger*innen |url=https://www.uni-marburg.de/de/universitaet/profil/zahlen-fakten-preise/preise |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 2010: Jürgen Schäfer (Prémiu Fakuldade ba Medisina)
* 2015: Jürgen Handke (ba "Ensinu no Aprendizajen Dijitál")
* 2016: Ilka Agricola (Prémiu Fakuldade nian ba Matemátika)
* 2017: Stefan Bösner (Prémiu Fakuldade ba Medisina)
* 2018: Evelyn Korn (ba "Alineamentu Konstrutivu")
* 2024: Rolf Kreyer (ba "Teoria no prátika linguístika Inglés nian kombinadu") <ref>{{Cite web |last= |date=2025-06-05 |title=Marburger Anglist Professor Kreyer erhält Preis für ausgezeichnete Lehre |url=https://www.op-marburg.de/lokales/marburg-biedenkopf/marburg/marburger-anglist-professor-kreyer-erhaelt-preis-fuer-ausgezeichnete-lehre-IVUZOSGCCREO3F2XUUNLS5N474.html |access-date=2025-09-09 |website=[[Oberhessische Presse]] |language=de}}</ref>
=== Instituisaun sientífika sira ===
Universidade Marburg simu instituisaun akadémika no peskiza oioin:
* Akademia Peskiza Universidade Marburg (MARA) apoia peskizadór sira iha kareira inisiál liuhosi formasaun interdisiplinár, finansiamentu, no servisu dezenvolvimentu kareira nian. <ref>{{Cite news |date=2010-12-23 |title=Bedingungen für Promotion transparent machen |work=Gießener Anzeiger |language=de}}</ref>
* Sentru Dokumentasaun Alemaña ba Istória Arte nian (Bildarchiv Foto Marburg) maka arkivu imajen ida ne'ebé boot liu iha Europa ba arte no arkitetura, ne'ebé fornese rekursu no servisu sira ba muzeu sira, matenek-na'in sira, no editór sira. <ref>{{Cite news |last=Brockschmidt |first=Rolf |date=2023-09-02 |title=Für den Fall der Fälle |work=[[Der Tagesspiegel]] |pages=34 |language=de}}</ref>
* Sentru Demokrasia Hesse koordena esforsu sira hasoru estremizmu direita no oferese programa Mestradu ida iha akonsellamentu iha kontestu ne'ebá. <ref>{{Cite news |last=Haschink |first=Gregor |date=2022-05-11 |title=Opferberatung studieren |work=[[Frankfurter Rundschau]] |language=de}}</ref>
* Sentru Peskiza Deutscher Sprachatlas dokumenta no estuda variedade rejionál sira hosi lian Alemaña no mantein arkivu ida ne'ebé luan hosi materiál dialetu sira hosi fatin 50,000 resin. <ref>{{Cite news |last=Rummel |first=Silke |date=2014-09-09 |title=Forschungszentrum Deutscher Sprachatlas |work=Darmstädter Echo |language=de}}</ref>
* Sentru Estudu Jéneru no Peskiza Feminista, harii iha 2001, promove serbisu interdisiplinár iha estudu jéneru no koordena programa akadémiku sira ne'ebé iha relasaun. <ref>{{Cite news |date=2017-11-10 |title=Bildungsministerium gibt knapp eine Million Euro für Gender-Forschung |work=[[Oberhessische Presse]] |language=de}}</ref>
* Jardim Botániku, ne'ebé lokaliza iha kampus Lahnberge, ho luan hektar 20 no inklui kolesaun ai-horis ne'ebé luan, área peskiza nian, no estufa sira; Jardim Botániku Antigu agora serve hanesan parke públiku. <ref>{{Cite web |last=Ahlers |first=Wolfram |date=2021-08-20 |title=Botanischer Garten in Marburg muss renoviert werden |url=https://www.faz.net/aktuell/rhein-main/region-und-hessen/botanischer-garten-in-marburg-muss-renoviert-werden-17488145.html |access-date=2025-09-09 |website=[[Frankfurter Allgemeine Zeitung]] |language=de}}</ref>
* SYNMIKRO, Sentru ba Mikrobiolojia Sintétika, avansa peskiza kona-ba enjeñaria funsaun mikrobiál sira, ho aplikasaun sira iha bioteknolojia no medisina, iha kolaborasaun ho Sosiedade Max Planck . <ref>{{Cite news |last=Hitzeroth |first=Manfred |date=2018-11-10 |title=Sieg mit mikrobiologischem Baukasten |work=[[Oberhessische Presse]] |language=de}}</ref>
== Estudante sira ==
[[Imajen:Alte_Universität_(Marburg)_2.jpg|miniaturadaimagem|''Universidade Antiga'', ne'ebé maka iha igreja universitáriu, departamentu ba estudu relijiozu sira no sala palestra reprezentativu ida]]
Students at Marburg University are represented by the General Student Committee (AStA) and the Student Parliament (StuPa), with additional representation at faculty level through student councils. The universal transit pass (semester ticket), negotiated by the AStA, allows students extensive access to public transport in Hesse and neighbouring areas, including use of selected InterCity (IC) and InterCity Express (ICE) trains.<ref>{{Cite news |date=2018-10-24 |title=ICE: Für Asta war Ticket-Reichweite zentraler Punkt |work=[[Oberhessische Presse]] |language=de}}</ref><ref>{{Cite news |last=Robinson |first=Patrick |date=2025-03-06 |title=Nach der Prüfung ist vor der Prüfung |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Universidade oferese rezidénsia oioin ba estudante sira, inklui Christian-Wolff-Haus, <ref>{{Cite news |date=2024-11-16 |title=Kernsanierung für Christian-Wolff-Haus |work=[[Oberhessische Presse]] |pages=5 |language=de}}</ref> istóriku Collegium Philippinum, <ref>{{Cite news |date=2025-09-08 |title=Felina Karle bekommt dank jahrhundertealten Rechts einen Platz im Collegium Philippinum in Marburg |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref> no Vilmarhaus, ne'ebé maka jere hosi Igreja Protestante. Konrad-Biesalski-Haus nafatin notavel ba nia asesibilidade pioneiru ba estudante sira ho defisiénsia fíziku. <ref>{{Cite news |last=Maas |first=Marie-Charlotte |date=2012-06-14 |title=Gleichheit unter Ungleichen |work=[[Die Zeit]] |pages=71 |language=de}}</ref>
== Antigu alunu no profesór sira ne'ebé notavel ==
=== Sientista naturál sira ===
<templatestyles src="Div col/styles.css" />
=== Teólogu sira ===
Marburg sempre koñesidu hanesan universidade ida ne'ebé foka ba umanidade . Ida-ne'e mantein forsa ne'e, liuliu iha Filozofia no Teolojia ba tempu naruk hafoin Funu Mundiál Daruak . <ref>{{Cite web |last=Peter |first=Lothar |date=2020-05-02 |title=Ein Partisan im Land der Mitläufer |url=https://jacobin.de/artikel/wolfgang-abendroth-marburg-marxismus-partisanenprofessor |access-date=2025-09-09 |website=Jacobin Magazin |language=de}}</ref> <ref>{{Cite news |last=Sieg |first=Ulrich |date=2005-02-05 |title=Aus dem Geiste Kants Hermann Cohen, Paul Natorp und der Erste Weltkrieg |work=[[Neue Zürcher Zeitung]] |pages=64 |language=de}}</ref><templatestyles src="Div col/styles.css" />
=== Filózofu sira ===
=== Seluk ===
<templatestyles src="Div col/styles.css" />
[[Kategoria:Páginas com traduções não revistas]]
thbm52w066wsil2y7zn3ox1qxgmubwh
73852
73851
2026-07-11T13:44:26Z
Diamantino Soares
9475
73852
wikitext
text/x-wiki
== Introdusaun ==
'''Universidade Marburg''' mak universidade peskiza públika ida ne'ebé lokaliza iha Marburg, Alemaña. Universidade ne'e harii iha tinan 1527 hosi Filipe I, Landgrave hosi Hesse, no konsidera hanesan universidade ida ne'ebé tuan liu iha Alemaña no universidade protestante tuan liu ne'ebé sei kontinua funsiona to'o ohin loron iha mundu.
Ohin loron, Universidade Marburg mak universidade públika ida ne'ebé pertence ba Estadu Hesse, no la iha afiliasaun relijioza.
Universidade Marburg iha estudante hamutuk 21.162 iha tinan akademiku 2024/2025. Universidade ne'e lokaliza iha Marburg, Alemaña, no oferese programa estudu internasionál oioin. Aleinde ne'e, universidade ne'e mós partisipa iha programa Erasmus, ne'ebé fó oportunidade ba estudante sira atu tuir programa troka estudante ho universidade sira seluk iha Europa.
== Istória ==
=== Tinan sira iha Fundasaun nian ===
Iha loron 1 fulan-Jullu 1527, xefe rai-na'in nian Johann Feige inaugura oficialmente Universidade Marburg, ne'ebé harii husi Landgrave Philip I liuhusi dekretu ida iha loron 30 fulan Maiu tinan ne'ebá. Iha tempu inaugurasaun, universidade ne'e iha profesór 11 no estudante 88.
Reitór dahuluk Universidade Marburg mak Johannes Eisermann, ne'ebé koñesidu mós ho naran latín ''Ferrarius Montanus''. Nia hanorin direitu no servisu hanesan asesór ba tribunál landgravial iha Amöneburg. Iha tinan ne'ebá duni, Philip I fó ba universidade ne'e liberdade akadémika ne'ebé presiza atu hala'o nia atividade sira.
Iha loron 4 fulan Outubru 1541, Universidade Marburg hetan independénsia finanseira liuhosi eskritura dotasaun. Tinan tuirmai, Landgrave Philip I simu priviléjiu universitáriu hosi Imperadór Carlos V durante Dieta Imperiál iha Regensburg.
Iha tempu dahuluk, Universidade Marburg uza edifísiu monástiku antigu sira ne'ebé uluk pertense ba Dominikanu sira, Fransiskanu sira, no Irmaun sira husi Vida Komún.
Landgrave Philip I mós fó ba universidade priviléjiu oioin, inklui direitu atu haruka reprezentante ida ba asembleia rejionál, no izensaun hosi taxa no impostu ba membru universitáriu sira.
Iha tinan 1529, Landgrave Philip I sai uma-na'in ba Marburg Colloquy, debate relijiozu ida entre Martin Luther, Ulrich Zwingli, no Philip Melanchthon.
Reputasaun husi fakuldade teolójia Universidade Marburg atrai estudante internasionál sira, liuliu husi Suisa, Dinamarka, Suésia, Olanda, no Eskósia. Entre estudante sira ne'e iha Patrick Hamilton, ne'ebé estuda iha Marburg ba tempu badak.
Durante sékulu dahuluk universidade nian, surtu moras oioin, hanesan moras suar Inglés no peste, obriga universidade atu muda temporariamente ba sidade sira ne'ebé besik.
=== sékulu XVI no XVII ===
To'o nia mate iha tinan 1560, Johann Friedrich Dryander kaer kadeira medisina iha Universidade Marburg. Iha loron 15 fulan-Novembru 1565, Landgrave William IV hosi Hesse-Kassel nomeia Georg Marius nu'udar profesór, lahó hetan uluk konsentimentu formál husi universidade.
Iha tinan 1566, universidade harii kadeira medisina daruak, ne'ebé prenxe husi Victorinus Schönfeldt. Antes ne'e, nia serbisu nu'udar profesór matemátika iha universidade.
Entre tinan 1580 no 1628, Rudolph Goclenius maka profesór filozofia, lójika, no étika iha Universidade Marburg.
Bainhira Landgrave Maurice husi Hesse-Kassel hetan eransa husi Landgraviate Hesse-Marburg iha tinan 1604, nia konverte ba Calvinizmu iha tinan tuirmai. Tanba ne'e, universidade hetan obrigasaun atu adopta konfisaun Reformada, ne'ebé nia mantein to'o nia alinhamentu konfisionál nia rohan iha tinan 1866.
Mudansa konfisionál ida ne'e lori profesór Luteranu barak ba Universidade Giessen, ne'ebé foin harii iha tinan 1607. Iha tinan 1625, bainhira Marburg temporariamente tama iha okos Hesse-Darmstadt Luteranu, Universidade Giessen fila fali ba Universidade Marburg no depois taka.
Iha loron 24 fulan-Juñu 1653, universidade ne'e loke fali husi William VI husi Hesse-Kassel, ne'ebé muda fali universidade estadu nian husi Kassel ba Marburg, nune'e taka Universidade Kassel. Iha tinan sira tuirmai, universidade hasoru tempu difisil sira tanba konfisionalizasaun ne'ebé la'o hela no susar finanseiru.
=== sékulu 18 ===
Iha tinan 1723, filózofu Christian Wolff hetan nomeasaun ba kadeira ida iha Universidade Marburg hafoin hetan espulsaun hosi Halle hosi Frederick William I. Maski hetan opozisaun hosi parte sira hosi fakuldade teolójika, Wolff hanorin iha Marburg to'o 1740 ho protesaun hosi Landgrave, molok hetan bolu fali ba Prússia hosi Frederick the Great . Funu Tinan Hitu nian ikusmai perturba universidade, tanba Hesse sai hanesan kampu funu nian no Marburg hetan fortifikasaun.
Iha tinan 1785, universidade ne'e iha estatutu legál no polítiku espesiál: nia iha nia jurisdisaun rasik, dotasaun ekleziástiku sira, no kadeira ida iha asembleia rejionál. Landgrave hala'o knaar nu'udar reitór, ministru finansas nu'udar kuradór, no senadu kompostu hosi reprezentante sira hosi teolojia, lei, medisina, no filozofia, hamutuk ho instrutór linguajen no tékniku sira.
Universidade Marburg hetan kreximentu foun durante era Napoleónika . Iha tinan 1807, Eleitoradu Hesse nian sai parte hosi Reinu Westfalia ne'ebé foin harii, estadu satélite fransés ida. Maski universidade oioin iha reinu foun nia laran taka, Marburg hetan salvasaun no benefísiu finanseiru hosi redistribuisaun rekursu sira-nian, liuliu hafoin taka universidade sira iha Rinteln no Helmstedt . Biblioteka universitáriu habelar maka'as liuhosi transferénsia sira hosi Rinteln.
Iha tinan 1810, autoridade sira Westfalia nian bandu estudante sira atu uza kór no farda rejionál sira, hodi hamosu konflitu ne'ebé naruk entre estudante sira no administrasaun. Iha Maiu 1811, estudante 200 resin halo protestu hodi marxa ba Gladenbach, ne'ebé lori ba libertasaun estudante ida ne'ebé dadur no inkéritu ofisiál ida.
Hafoin retornu hosi prínsipe-eleitor iha tinan 1813, reforma barak maka inverte, inklui disolusaun hosi estrutura administrativu sira hosi Westfalia no finansiamentu sentralizadu. Influensiadu husi Funu Libertasaun nian, movimentu estudante sira ne'ebé promove unidade nasionál no ideia liberál sira hetan trasaun iha Marburg. Iha tinan 1816, sosiedade estudante ''Teutonia nian'' hamutuk ho asosiasaun estudante lokál sira hodi forma ''Germania Marburgensis'', maski nia dezenvolvimentu hetan impedimentu hosi Dekretu Carlsbad nian to'o tinan 1850. Iha prínsipe-eleitór Wilhelm I nia okos, restrisaun relijioza sira sai kmaan, hodi permite nomeasaun ba profesór katóliku sira hamutuk ho luteranu sira. Wilhelm II depois fó igualdade konfisionál tomak, ne'ebé kontribui ba aumentu iha matríkula. Durante dékada 1820 no dékada sira tuirmai, universidade habelar nia instalasaun sira, inklui jardín botániku foun, biblioteka, laboratóriu kímiku, teatru anatómiku, observatóriu, no klínika sira. Klínika feto nian, hahú iha Hessian nia ukun, remata iha tinan 1867.
Tuir aneksasaun Hesse nian hosi Prússia iha tinan 1866, universidade tranzita hosi instituisaun rejionál ida ba parte ida hosi sistema edukasaun Prússia nian, hodi hetan benefísiu hosi ninia reforma sira. Iha tempu ne'ebá, iha estudante na'in 264 (na'in 22 hosi li'ur Hesse) no profesór na'in 51.
Tanba limitasaun propriedade no preferénsia atu uza edifísiu estadu nian ne'ebé eziste, universidade desentralizadu nafatin iha sidade tomak envezde adota modelu kampus unifikadu. Númeru estudante sira aumenta beibeik, to'o 500 iha 1880 no liu 1,000 iha 1887.
=== sékulu XX ===
Iha tinan 1909, matríkula estudante nian iha Universidade Marburg aumenta dala rua. Maski feto sira seidauk hetan admisaun formál, Tadako Urata simu grau doutoramentu iha medisina iha tinan 1905 tuir provizaun espesiál ida. Onra akadémika dahuluk ne'ebé fó ba feto ida iha universidade fó ona iha tinan 1827 ba Daniel Jeanne Wyttenbach, ne'ebé simu doutoramentu onoráriu ida ba nia hakerek filozófiku sira kona-ba estétika. Admisaun formál ba feto sira hahú iha semestre invernu 1908/09 ho estudante feto na'in 26; sira nia númeru sa'e ba 206 bainhira mosu Funu Mundiál I.
Funu marka interupsaun boot ida. Enkuantu estudante mane 2,258 maka rejista iha veraun 1914, númeru ne'e tun ba 1,899 iha semestre tuirmai, ho de'it 478 ne'ebé tuir palestra sira. Iha fulan tolu nia laran funu nian, universidade lakon ona estudante na'in 55.
=== Períodu Nazi ===
Iha tinan 1926, kapítulu ida hosi Liga Nasionál Sosialista Estudante Alemaña nian (NSDStB) harii iha Marburg. Iha tinan 1931, ida-ne'e kaer maioria iha konsellu estudante nian no lidera ida-ne'e hahú hosi ne'ebá. Hafoin Nazi sira sa'e ba podér iha tinan 1933, profesór na'in 21—liu désimu ida hosi pesoál profesór sira—hetan demisaun tanba razaun polítika ka rasiál tuir lei sira funsaun públika nian. Entre sira maka matenek-na'in sira ne'ebé notavel hanesan ekonomista Wilhelm Röpke, filólogu romanu Erich Auerbach, no filozofu Karl Löwith . Profesór Hermann Jacobsohn, linguista ida, oho-an iha fulan-Abril tinan 1933 hafoin nia suspensaun. <ref name=":2" /> <ref>{{Cite web |date=1933-05-01 |title=Professor Kills Self |url=https://www.jta.org/archive/professor-kills-self |access-date=2025-09-09 |website=Jewish Telegraphic Agency |language=en}}</ref> Kuota rasial no jéneru foun sira impoin ba estudante sira, limita matríkula Judeu nian ba 1.5% iha jerál no 5% ba estudante sira tinan dahuluk nian. Proporsaun estudante feto sira nian limitadu temporariamente ba 10%.
=== Depois 1945 ===
Tuir 1945, universidade haree kreximentu lalais iha númeru estudante sira. Atu akomoda demanda, esforsu espansaun sira hahú iha dékada 1960, inklui edifísiu administrativu foun, jantar, no palestra sira, no muda Fakuldade Filozofia nian. Fakuldade Siénsia Naturál ida harii iha kampus Lahnberge ne'ebé foin dezenvolve, ne'ebé nia edifísiu sira maka entre sira dahuluk iha Alemaña ne'ebé tuir modelu konstrusaun prefabrikadu ne'ebé koñesidu hanesan ''Sistema Marburg'' .
=== sékulu 21 ===
Eventu nasionál ida ne'ebé maka laiha presedente akontese iha loron 1 fulan-Janeiru tinan 2006, bainhira ospitál universitáriu hetan privatizasaun no fa'an ba Rhön-Klinikum AG, empreza privadu ida kuidadu saúde nian, hafoin nia fuzaun ho Ospitál Universitáriu Gießen nian. <ref>{{Cite news |last=Conrad |first=Till |date=2022-05-16 |title=Die langen Kämpfe ums Krankenhaus |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Iha tinan 2012 universidade loke muzeu kímika interativu dahuluk alemaun nian, ho naran ''Chemicum'' . Ninia programa kursu esperimentál ho objetivu atu enkoraja foin-sa'e sira atu buka kareira iha siénsia. <ref name="chemicum-news">{{Cite web |date=12 February 2011 |title="Chemikum Marburg" hat ein dauerhaftes Domizil |url=https://idw-online.de/pages/en/news454460 |access-date=23 January 2012 |publisher=Informationsdienst Wissenschaft}}</ref>
== Estrutura ==
[[Imajen:Marburg_UB_Neubau_Eingang_Alter_Botanischer_Garten_von_OSO.jpg|miniaturadaimagem|Biblioteka universitáriu]]
[[Imajen:Uni_Marburg_Lahnberge_04.jpg|miniaturadaimagem|''Kampus Lahnberge'' dedika ba siénsia naturál sira. Imajen hatudu ''Edifísiu ho Objetivu Múltiplu'', uma ba Departamentu Matemátika no Siénsia Informátika, no mós laboratóriu sira ba peskiza iha siénsia materiál no kímika fízika]]
=== Departamentu sira ===
Universidade Marburg fahe ba 16 fakuldade. Iha nia tempu dahuluk, universidade ne'e kompostu husi Fakuldade Teolojia, Fakuldade Medisina, Fakuldade Direitu, no Fakuldade Filosofia. Husi Fakuldade Filosofia, Fakuldade Matemátika no Siénsia Naturál separa iha tinan 1964.
Iha tinan 1970, tuir Lei Edukasaun Asentu-Superiór Hesse nian, fakuldade sira ne'e hetan reestruturasaun sai fakuldade 20. Depois husi fusaun sira ne'ebé akontese liu husi tinan 1997, organizasaun atual kompostu husi 16 fakuldade, ne'ebé numerasaun la tuir ona sequência kontinua. [1]
Hanesan parte ida hosi Prosesu Bologna nian, Universidade introdús númeru boot ida hosi programa foun sira Lisensiatura no Mestradu nian. Iha tempu hanesan, programa lisensiatura tradisionál sira ho Majistradu, Diplom no kualifikasaun sira ne'ebé hanesan hapara tiha. <ref>{{Cite web |date=2007-11-06 |title=Marburger Lehrer informieren sich über neues Studiensystem |url=https://www.uni-marburg.de/archive/news/2007-11-6-marburger-lehrer-informieren-sich-uber-neues-studiensystem.html |access-date=2025-09-09 |website=Uni Marburg}}</ref>
=== Institutu no muzeu asosiadu sira ===
Universidade koopera ho institutu afiliadu sira tuirmai:
* Fundasaun Christoph Dornier ba Psikolojia Klínika <ref>{{Cite news |last=Dietrich |first=Simon |date=1991-10-23 |title=Philipps-Universitaet. Viele Kooperationen mit Unternehmen |work=[[Handelsblatt]] |language=de}}</ref>
* Sentru Peskiza ba Hakerek Pesoál sira <ref>{{Cite news |date=2012-09-20 |title=Aufschlussreiche Würdigungen Verstorbener |work=[[Ostthüringer Zeitung]] |pages=14 |language=de}}</ref>
* Institutu Hans von Soden ba Peskiza Teolójika <ref>{{Cite news |date=2003-11-11 |title=Universität Marburg Neues Institut zur Förderung von Theologen |work=[[Frankfurter Rundschau]] |pages=34 |language=de}}</ref>
* Jestaun Kuidadu Saúde eV <ref>{{Cite news |date=2005-06-18 |title=Gesundheitsmanagement |work=[[Salzburger Nachrichten]] |pages=39 |language=de}}</ref>
* Institutu ba Estudu Kooperativu sira (fundasaun legál privadu ida) <ref>{{Cite news |last=Fehl |first=Ulrich |date=1998-01-26 |title=Im Rahmen marktwirtschaftlicher Ordnung |work=[[Frankfurter Allgemeine Zeitung]] |pages=14 |language=de}}</ref>
* Institutu ba Terapia Komportamentál no Medisina Komportamentál (IVV) <ref>{{Cite news |date=2008-11-21 |title=Vortrag über Selbstverletzungen bei Jugendlichen |work=Gießener Anzeiger |language=de}}</ref>
* Institutu ba Étika Negósiu no Sosiál <ref>{{Cite news |last=Meyer |first=Claus-Peter |date=2001-11-29 |title=Debeka als Arbeitgeber ausgezeichnet |work=VersicherungsJournal Deutschland |language=de}}</ref>
* Semináriu Katóliku-Teolójiku Fakuldade Teolojia nian iha Fulda <ref>{{Cite news |date=2020-10-16 |title=Keine Priester mehr aus Fulda? |work=[[Frankfurter Allgemeine Zeitung]] |pages=5 |language=de}}</ref>
Muzeu sira tuirmai ne'e iha afiliasaun ho universidade:
* Muzeu Mineralójiku hosi Universidade Philipps Marburg <ref>{{Cite news |date=2013-08-27 |title=Bedeutende Sammlung von Mineralien gestiftet |work=Oberhessische Zeitung |language=de}}</ref>
* Muzeu Arte no Istória Kulturál <ref>{{Cite web |title=Kunstmuseum |url=https://www.uni-marburg.de/de/museum/kunstmuseum |access-date=2025-09-09 |website=Uni Marburg |language=de}}</ref> <ref>{{Cite news |last=Schwarzwäller |first=Nadja |date=2018-06-19 |title=Verein macht sich stark für Museum |work=[[Oberhessische Presse]] |language=de}}</ref>
=== Kolesaun sira husi universidade (selesaun) ===
* Alter Botanischer Garten Marburg, the university's old [[botanical garden]]
* Botanischer Garten Marburg, the university's current botanical garden
* Forschungsinstitut Lichtbildarchiv älterer Originalurkunden bis 1250 (Collection of photographs taken from medieval charters)
* Bildarchiv Foto Marburg (German national picture archive of arts)
* Religionskundliche Sammlung (Collection of religious objects)
* Deutscher Sprachatlas (Linguistic Atlas of Germany)<ref>{{Cite web |title=Research Center Deutscher Sprachatlas |url=https://www.uni-marburg.de/en/fb09/dsa |access-date=1 August 2024}}</ref>
* Mineralogisches Museum (Museum of Mineralogy)
* Museum für Kunst und Kulturgeschichte (Museum of Arts)
* Museum Anatomicum (Museum of Anatomy and Medical History, currently closed)<ref>{{Cite news |last=Pfaffel |first=Dorothee |date=2025-04-04 |title=Wollen Sie das sehen? |work=Neuburger Rundschau |pages=25 |language=de}}</ref>
* University Archive https://www.uni-marburg.de/de/uniarchiv
== Peskiza ==
=== Klasifikasaun sira ===
Departamentu sira psikolojia no jeografia nian atinji ona estatutu Grupu Exelénsia nian iha Klasifikasaun Exelénsia CHE nian iha Europa tomak 2009.<templatestyles src="Module:Infobox/styles.css"></templatestyles>Tuir QS World University Rankings of 2024, instituisaun ne'e situa iha intervalu 761-770 globalmente, no nia kaer pozisaun 40-41 nasionalmente. Tuir THE World University Rankings of 2024, nia hetan klasifikasaun iha grupu 401-500 iha nivel mundiál, enkuantu nia klasifikasaun nasionál monu entre 37 no 41. Iha ARWU World Rankings of 2023, universidade ne'e lista iha 401-500 iha mundu tomak no nia hetan pozisaun entre 25 no nasionál 31.
=== Sentru Peskiza Kolaborativu sira ===
Universidade ne'e signifikativu ba nia peskiza siénsia-moris nian maibé mós uma ba sentru ida hosi sentru uitoan ne'ebé hala'o peskiza kona-ba Médiu Oriente, CNMS ( Sentru ba Estudu sira Médiu Oriente no Besik nian ).
Peskiza universidade nian ilustra hosi nia partisipasaun iha SFB oioin ( ''Sonderforschungsbereiche'' ). Sentru peskiza kolaborativu sira-ne'e hetan finansiamentu hosi Fundasaun Siénsia Alemaña ''DFG'' . Sira enkoraja peskizadór sira atu hakat liu baliza sira hosi dixiplina sira, institutu sira, departamentu sira no fakuldade sira iha universidade partisipante nia laran. SFB atuál iha Universidade Marburg maka: <ref>{{Cite web |title=Sonderforschungsbereiche |url=https://www.uni-marburg.de/de/forschung/spitzenfoerderung/sfb |access-date=9 May 2020 |website=Philipps-Universität Marburg}}</ref>
* SFB 1083 – Estrutura no Dinámika Interfase Internu sira-nian (hahú iha 2013, iha kooperasaun ho Sentru Fízika Internasionál Donostia San Sebastián ) <ref>{{Cite web |date=2025-04-09 |title=SFB1083 |url=https://www.internal-interfaces.de/ |access-date=2025-09-09 |website=Internal Interfaces |language=en}}</ref>
* SFB/TRR 138 – Dinámika Seguransa nian: Forma sira Titulizasaun nian iha Perspetiva Istóriku (hahú iha 2014)
* CRC/TRR 393 – Trajetória sira husi Transtornu Afetivu sira (dezde 2024)
=== Manan-na'in sira Prémiu Nobel nian ===
Entre 1901 no 2011, ema na'in sanulu-resin-ida ne'ebé asosiadu ho Universidade Marburg liuhosi estudu ka hanorin hetan Prémiu Nobel[[File:Nobel_Prize.png|15x15px]] : <ref>{{Cite web |title=Nobelpreisträger |url=https://www.uni-marburg.de/de/universitaet/profil/geschichte/nobelpreistraeger |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 1901: Emil von Behring (Medicine)<ref>{{Cite news |last=Warnecke |first=Christiane |date=2009-06-13 |title=Mit Emil von Behring fing alles an |work=[[Frankfurter Neue Presse]] |pages=1 |language=de}}</ref>
* 1909: Ferdinand Braun (Physics)
* 1910: Albrecht Kossel (Medicine)
* 1930: Hans Fischer (Chemistry)
* 1936: Otto Loewi (Medicine)
* 1939: Adolf Butenandt (Chemistry)
* 1944: Otto Hahn (Chemistry)<ref>{{Cite news |last=Hanke |first=Franz-Josef |date=2008-06-23 |title=Ehre, wem Ehre gebührt – Wissenschaftspreise ehren die Forscher und nutzen auch wieder der Wissenschaft |work=[[Badische Zeitung]] |pages=12 |language=de}}</ref>
* 1958: Boris Pasternak (Literature)
* 1963: Karl Ziegler (Chemistry)
* 1979: Georg Wittig (Chemistry)
* 2011: Jules Hoffmann (Medicine)<ref>{{Cite news |last=Breu |first=Michael |date=2011-10-04 |title=Nobelpreis geht an einen Toten. Medizinpreis erstmals posthum vergeben |work=[[Basler Zeitung]] |pages=12 |language=de}}</ref>
=== Manan-na'in sira Prémiu Leibniz nian ===
Prémiu Gottfried Wilhelm Leibniz fó ba peskizadór sira tuirmai ne'ebé iha afiliasaun ho Universidade Marburg: <ref>{{Cite news |date=2021-12-10 |title=Trägerinnen und Träger des Leibnizpreises an der Philipps-Universität Marburg |work=[[Oberhessische Presse]] |pages=3 |language=de}}</ref>
* 1987: Rudolf K. Thauer – Mikrobiolojia Biokímika
* 1989: Manfred T. Reetz – Kímika Orgánika
* 1991: Ernst O. Göbel – Fízika Estadu-Sólidu
* 1991: Rolf Müller – Biokímika / Biolojia Molekulár
* 1996: Reinhard Lührmann – Biolojia Molekulár
* 1997: Paul Knochel – Kímika Organometálika
* 1997: Stephan W. Koch – Fízika Teórika
* 2002: Bruno Eckhardt – Fízika Teórika
* 2003: Roland Lill – Biolojia Sélula / Biokímika
* 2006: Gyburg Radke (kaben ho Uhlmann) – Filolójia no Filozofia Klásiku
* 2011: Friederike Pannewick – Estudu Árabe
* 2022: Stefanie Dehnen – Kímika Inorgánika
* 2024: Tobias Erb – Mikrobiolojia Sintétika
=== Prémiu Ars legend ba ensinu universitáriu ne'ebé di'ak tebes ===
Prémiu Ars legendi ba Ensinu Universitáriu Exelente, prémiu aas liu iha Alemaña iha área ensinu superiór nian, ne'ebé aprezenta hosi Stifterverband für die Deutsche Wissenschaft no Konferénsia Reitór Alemaña nian (HRK), fó ba ema sira tuirmai ne'ebé hanorin iha Universidade Marburg: <ref>{{Cite web |last= |title=Ars legendi-Preis |url=https://www.stifterverband.org/ars-legendi-preis |access-date=2025-09-09 |website=Stifterverband |language=de}}</ref> <ref name=":3">{{Cite web |title=Preisträger*innen |url=https://www.uni-marburg.de/de/universitaet/profil/zahlen-fakten-preise/preise |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 2010: Jürgen Schäfer (Prémiu Fakuldade ba Medisina)
* 2015: Jürgen Handke (ba "Ensinu no Aprendizajen Dijitál")
* 2016: Ilka Agricola (Prémiu Fakuldade nian ba Matemátika)
* 2017: Stefan Bösner (Prémiu Fakuldade ba Medisina)
* 2018: Evelyn Korn (ba "Alineamentu Konstrutivu")
* 2024: Rolf Kreyer (ba "Teoria no prátika linguístika Inglés nian kombinadu") <ref>{{Cite web |last= |date=2025-06-05 |title=Marburger Anglist Professor Kreyer erhält Preis für ausgezeichnete Lehre |url=https://www.op-marburg.de/lokales/marburg-biedenkopf/marburg/marburger-anglist-professor-kreyer-erhaelt-preis-fuer-ausgezeichnete-lehre-IVUZOSGCCREO3F2XUUNLS5N474.html |access-date=2025-09-09 |website=[[Oberhessische Presse]] |language=de}}</ref>
=== Instituisaun sientífika sira ===
Universidade Marburg simu instituisaun akadémika no peskiza oioin:
* Akademia Peskiza Universidade Marburg (MARA) apoia peskizadór sira iha kareira inisiál liuhosi formasaun interdisiplinár, finansiamentu, no servisu dezenvolvimentu kareira nian. <ref>{{Cite news |date=2010-12-23 |title=Bedingungen für Promotion transparent machen |work=Gießener Anzeiger |language=de}}</ref>
* Sentru Dokumentasaun Alemaña ba Istória Arte nian (Bildarchiv Foto Marburg) maka arkivu imajen ida ne'ebé boot liu iha Europa ba arte no arkitetura, ne'ebé fornese rekursu no servisu sira ba muzeu sira, matenek-na'in sira, no editór sira. <ref>{{Cite news |last=Brockschmidt |first=Rolf |date=2023-09-02 |title=Für den Fall der Fälle |work=[[Der Tagesspiegel]] |pages=34 |language=de}}</ref>
* Sentru Demokrasia Hesse koordena esforsu sira hasoru estremizmu direita no oferese programa Mestradu ida iha akonsellamentu iha kontestu ne'ebá. <ref>{{Cite news |last=Haschink |first=Gregor |date=2022-05-11 |title=Opferberatung studieren |work=[[Frankfurter Rundschau]] |language=de}}</ref>
* Sentru Peskiza Deutscher Sprachatlas dokumenta no estuda variedade rejionál sira hosi lian Alemaña no mantein arkivu ida ne'ebé luan hosi materiál dialetu sira hosi fatin 50,000 resin. <ref>{{Cite news |last=Rummel |first=Silke |date=2014-09-09 |title=Forschungszentrum Deutscher Sprachatlas |work=Darmstädter Echo |language=de}}</ref>
* Sentru Estudu Jéneru no Peskiza Feminista, harii iha 2001, promove serbisu interdisiplinár iha estudu jéneru no koordena programa akadémiku sira ne'ebé iha relasaun. <ref>{{Cite news |date=2017-11-10 |title=Bildungsministerium gibt knapp eine Million Euro für Gender-Forschung |work=[[Oberhessische Presse]] |language=de}}</ref>
* Jardim Botániku, ne'ebé lokaliza iha kampus Lahnberge, ho luan hektar 20 no inklui kolesaun ai-horis ne'ebé luan, área peskiza nian, no estufa sira; Jardim Botániku Antigu agora serve hanesan parke públiku. <ref>{{Cite web |last=Ahlers |first=Wolfram |date=2021-08-20 |title=Botanischer Garten in Marburg muss renoviert werden |url=https://www.faz.net/aktuell/rhein-main/region-und-hessen/botanischer-garten-in-marburg-muss-renoviert-werden-17488145.html |access-date=2025-09-09 |website=[[Frankfurter Allgemeine Zeitung]] |language=de}}</ref>
* SYNMIKRO, Sentru ba Mikrobiolojia Sintétika, avansa peskiza kona-ba enjeñaria funsaun mikrobiál sira, ho aplikasaun sira iha bioteknolojia no medisina, iha kolaborasaun ho Sosiedade Max Planck . <ref>{{Cite news |last=Hitzeroth |first=Manfred |date=2018-11-10 |title=Sieg mit mikrobiologischem Baukasten |work=[[Oberhessische Presse]] |language=de}}</ref>
== Estudante sira ==
[[Imajen:Alte_Universität_(Marburg)_2.jpg|miniaturadaimagem|''Universidade Antiga'', ne'ebé maka iha igreja universitáriu, departamentu ba estudu relijiozu sira no sala palestra reprezentativu ida]]
Students at Marburg University are represented by the General Student Committee (AStA) and the Student Parliament (StuPa), with additional representation at faculty level through student councils. The universal transit pass (semester ticket), negotiated by the AStA, allows students extensive access to public transport in Hesse and neighbouring areas, including use of selected InterCity (IC) and InterCity Express (ICE) trains.<ref>{{Cite news |date=2018-10-24 |title=ICE: Für Asta war Ticket-Reichweite zentraler Punkt |work=[[Oberhessische Presse]] |language=de}}</ref><ref>{{Cite news |last=Robinson |first=Patrick |date=2025-03-06 |title=Nach der Prüfung ist vor der Prüfung |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Universidade oferese rezidénsia oioin ba estudante sira, inklui Christian-Wolff-Haus, <ref>{{Cite news |date=2024-11-16 |title=Kernsanierung für Christian-Wolff-Haus |work=[[Oberhessische Presse]] |pages=5 |language=de}}</ref> istóriku Collegium Philippinum, <ref>{{Cite news |date=2025-09-08 |title=Felina Karle bekommt dank jahrhundertealten Rechts einen Platz im Collegium Philippinum in Marburg |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref> no Vilmarhaus, ne'ebé maka jere hosi Igreja Protestante. Konrad-Biesalski-Haus nafatin notavel ba nia asesibilidade pioneiru ba estudante sira ho defisiénsia fíziku. <ref>{{Cite news |last=Maas |first=Marie-Charlotte |date=2012-06-14 |title=Gleichheit unter Ungleichen |work=[[Die Zeit]] |pages=71 |language=de}}</ref>
== Antigu alunu no profesór sira ne'ebé notavel ==
=== Sientista naturál sira ===
<templatestyles src="Div col/styles.css" />
=== Teólogu sira ===
Marburg sempre koñesidu hanesan universidade ida ne'ebé foka ba umanidade . Ida-ne'e mantein forsa ne'e, liuliu iha Filozofia no Teolojia ba tempu naruk hafoin Funu Mundiál Daruak . <ref>{{Cite web |last=Peter |first=Lothar |date=2020-05-02 |title=Ein Partisan im Land der Mitläufer |url=https://jacobin.de/artikel/wolfgang-abendroth-marburg-marxismus-partisanenprofessor |access-date=2025-09-09 |website=Jacobin Magazin |language=de}}</ref> <ref>{{Cite news |last=Sieg |first=Ulrich |date=2005-02-05 |title=Aus dem Geiste Kants Hermann Cohen, Paul Natorp und der Erste Weltkrieg |work=[[Neue Zürcher Zeitung]] |pages=64 |language=de}}</ref><templatestyles src="Div col/styles.css" />
=== Filózofu sira ===
=== Seluk ===
<templatestyles src="Div col/styles.css" />
[[Kategoria:Páginas com traduções não revistas]]
309sgpuhozjt3yz1kb81vlap45vhe44
73853
73852
2026-07-11T13:45:55Z
Diamantino Soares
9475
73853
wikitext
text/x-wiki
== Introdusaun ==
'''Universidade Marburg''' mak universidade peskiza públika ida ne'ebé lokaliza iha Marburg, Alemaña. Universidade ne'e harii iha tinan 1527 hosi Filipe I, Landgrave hosi Hesse, no konsidera hanesan universidade ida ne'ebé tuan liu iha Alemaña no universidade protestante tuan liu ne'ebé sei kontinua funsiona to'o ohin loron iha mundu.
Ohin loron, Universidade Marburg mak universidade públika ida ne'ebé pertence ba Estadu Hesse, no la iha afiliasaun relijioza.
Universidade Marburg iha estudante hamutuk 21.162 iha tinan akademiku 2024/2025. Universidade ne'e lokaliza iha Marburg, Alemaña, no oferese programa estudu internasionál oioin. Aleinde ne'e, universidade ne'e mós partisipa iha programa Erasmus, ne'ebé fó oportunidade ba estudante sira atu tuir programa troka estudante ho universidade sira seluk iha Europa.
== Istória ==
=== Tinan sira iha Fundasaun nian ===
Iha loron 1 fulan-Jullu 1527, xefe rai-na'in nian Johann Feige inaugura oficialmente Universidade Marburg, ne'ebé harii husi Landgrave Philip I liuhusi dekretu ida iha loron 30 fulan Maiu tinan ne'ebá. Iha tempu inaugurasaun, universidade ne'e iha profesór 11 no estudante 88.
Reitór dahuluk Universidade Marburg mak Johannes Eisermann, ne'ebé koñesidu mós ho naran latín ''Ferrarius Montanus''. Nia hanorin direitu no servisu hanesan asesór ba tribunál landgravial iha Amöneburg. Iha tinan ne'ebá duni, Philip I fó ba universidade ne'e liberdade akadémika ne'ebé presiza atu hala'o nia atividade sira.
Iha loron 4 fulan Outubru 1541, Universidade Marburg hetan independénsia finanseira liuhosi eskritura dotasaun. Tinan tuirmai, Landgrave Philip I simu priviléjiu universitáriu hosi Imperadór Carlos V durante Dieta Imperiál iha Regensburg.
Iha tempu dahuluk, Universidade Marburg uza edifísiu monástiku antigu sira ne'ebé uluk pertense ba Dominikanu sira, Fransiskanu sira, no Irmaun sira husi Vida Komún.
Landgrave Philip I mós fó ba universidade priviléjiu oioin, inklui direitu atu haruka reprezentante ida ba asembleia rejionál, no izensaun hosi taxa no impostu ba membru universitáriu sira.
Iha tinan 1529, Landgrave Philip I sai uma-na'in ba Marburg Colloquy, debate relijiozu ida entre Martin Luther, Ulrich Zwingli, no Philip Melanchthon.
Reputasaun husi fakuldade teolójia Universidade Marburg atrai estudante internasionál sira, liuliu husi Suisa, Dinamarka, Suésia, Olanda, no Eskósia. Entre estudante sira ne'e iha Patrick Hamilton, ne'ebé estuda iha Marburg ba tempu badak.
Durante sékulu dahuluk universidade nian, surtu moras oioin, hanesan moras suar Inglés no peste, obriga universidade atu muda temporariamente ba sidade sira ne'ebé besik.
=== sékulu XVI no XVII ===
To'o nia mate iha tinan 1560, Johann Friedrich Dryander kaer kadeira medisina iha Universidade Marburg. Iha loron 15 fulan-Novembru 1565, Landgrave William IV hosi Hesse-Kassel nomeia Georg Marius nu'udar profesór, lahó hetan uluk konsentimentu formál husi universidade.
Iha tinan 1566, universidade harii kadeira medisina daruak, ne'ebé prenxe husi Victorinus Schönfeldt. Antes ne'e, nia serbisu nu'udar profesór matemátika iha universidade.
Entre tinan 1580 no 1628, Rudolph Goclenius maka profesór filozofia, lójika, no étika iha Universidade Marburg.
Bainhira Landgrave Maurice husi Hesse-Kassel hetan eransa husi Landgraviate Hesse-Marburg iha tinan 1604, nia konverte ba Calvinizmu iha tinan tuirmai. Tanba ne'e, universidade hetan obrigasaun atu adopta konfisaun Reformada, ne'ebé nia mantein to'o nia alinhamentu konfisionál nia rohan iha tinan 1866.
Mudansa konfisionál ida ne'e lori profesór Luteranu barak ba Universidade Giessen, ne'ebé foin harii iha tinan 1607. Iha tinan 1625, bainhira Marburg temporariamente tama iha okos Hesse-Darmstadt Luteranu, Universidade Giessen fila fali ba Universidade Marburg no depois taka.
Iha loron 24 fulan-Juñu 1653, universidade ne'e loke fali husi William VI husi Hesse-Kassel, ne'ebé muda fali universidade estadu nian husi Kassel ba Marburg, nune'e taka Universidade Kassel. Iha tinan sira tuirmai, universidade hasoru tempu difisil sira tanba konfisionalizasaun ne'ebé la'o hela no susar finanseiru.
=== sékulu 18 ===
Iha tinan 1723, filózofu Christian Wolff hetan nomeasaun ba kadeira ida iha Universidade Marburg hafoin hetan espulsaun hosi Halle hosi Frederick William I. Maski hetan opozisaun hosi parte sira hosi fakuldade teolójika, Wolff hanorin iha Marburg to'o 1740 ho protesaun hosi Landgrave, molok hetan bolu fali ba Prússia hosi Frederick the Great . Funu Tinan Hitu nian ikusmai perturba universidade, tanba Hesse sai hanesan kampu funu nian no Marburg hetan fortifikasaun.
Iha tinan 1785, universidade ne'e iha estatutu legál no polítiku espesiál: nia iha nia jurisdisaun rasik, dotasaun ekleziástiku sira, no kadeira ida iha asembleia rejionál. Landgrave hala'o knaar nu'udar reitór, ministru finansas nu'udar kuradór, no senadu kompostu hosi reprezentante sira hosi teolojia, lei, medisina, no filozofia, hamutuk ho instrutór linguajen no tékniku sira.
Universidade Marburg hetan kreximentu foun durante era Napoleónika . Iha tinan 1807, Eleitoradu Hesse nian sai parte hosi Reinu Westfalia ne'ebé foin harii, estadu satélite fransés ida. Maski universidade oioin iha reinu foun nia laran taka, Marburg hetan salvasaun no benefísiu finanseiru hosi redistribuisaun rekursu sira-nian, liuliu hafoin taka universidade sira iha Rinteln no Helmstedt . Biblioteka universitáriu habelar maka'as liuhosi transferénsia sira hosi Rinteln.
Iha tinan 1810, autoridade sira Westfalia nian bandu estudante sira atu uza kór no farda rejionál sira, hodi hamosu konflitu ne'ebé naruk entre estudante sira no administrasaun. Iha Maiu 1811, estudante 200 resin halo protestu hodi marxa ba Gladenbach, ne'ebé lori ba libertasaun estudante ida ne'ebé dadur no inkéritu ofisiál ida.
Hafoin retornu hosi prínsipe-eleitor iha tinan 1813, reforma barak maka inverte, inklui disolusaun hosi estrutura administrativu sira hosi Westfalia no finansiamentu sentralizadu. Influensiadu husi Funu Libertasaun nian, movimentu estudante sira ne'ebé promove unidade nasionál no ideia liberál sira hetan trasaun iha Marburg. Iha tinan 1816, sosiedade estudante ''Teutonia nian'' hamutuk ho asosiasaun estudante lokál sira hodi forma ''Germania Marburgensis'', maski nia dezenvolvimentu hetan impedimentu hosi Dekretu Carlsbad nian to'o tinan 1850. Iha prínsipe-eleitór Wilhelm I nia okos, restrisaun relijioza sira sai kmaan, hodi permite nomeasaun ba profesór katóliku sira hamutuk ho luteranu sira. Wilhelm II depois fó igualdade konfisionál tomak, ne'ebé kontribui ba aumentu iha matríkula. Durante dékada 1820 no dékada sira tuirmai, universidade habelar nia instalasaun sira, inklui jardín botániku foun, biblioteka, laboratóriu kímiku, teatru anatómiku, observatóriu, no klínika sira. Klínika feto nian, hahú iha Hessian nia ukun, remata iha tinan 1867.
Tuir aneksasaun Hesse nian hosi Prússia iha tinan 1866, universidade tranzita hosi instituisaun rejionál ida ba parte ida hosi sistema edukasaun Prússia nian, hodi hetan benefísiu hosi ninia reforma sira. Iha tempu ne'ebá, iha estudante na'in 264 (na'in 22 hosi li'ur Hesse) no profesór na'in 51.
Tanba limitasaun propriedade no preferénsia atu uza edifísiu estadu nian ne'ebé eziste, universidade desentralizadu nafatin iha sidade tomak envezde adota modelu kampus unifikadu. Númeru estudante sira aumenta beibeik, to'o 500 iha 1880 no liu 1,000 iha 1887.
=== sékulu XX ===
Iha tinan 1909, matríkula estudante nian iha Universidade Marburg aumenta dala rua. Maski feto sira seidauk hetan admisaun formál, Tadako Urata simu grau doutoramentu iha medisina iha tinan 1905 tuir provizaun espesiál ida. Onra akadémika dahuluk ne'ebé fó ba feto ida iha universidade fó ona iha tinan 1827 ba Daniel Jeanne Wyttenbach, ne'ebé simu doutoramentu onoráriu ida ba nia hakerek filozófiku sira kona-ba estétika. Admisaun formál ba feto sira hahú iha semestre invernu 1908/09 ho estudante feto na'in 26; sira nia númeru sa'e ba 206 bainhira mosu Funu Mundiál I.
Funu marka interupsaun boot ida. Enkuantu estudante mane 2,258 maka rejista iha veraun 1914, númeru ne'e tun ba 1,899 iha semestre tuirmai, ho de'it 478 ne'ebé tuir palestra sira. Iha fulan tolu nia laran funu nian, universidade lakon ona estudante na'in 55.
=== Períodu Nazi ===
Iha tinan 1926, kapítulu ida hosi Liga Nasionál Sosialista Estudante Alemaña nian (NSDStB) harii iha Marburg. Iha tinan 1931, ida-ne'e kaer maioria iha konsellu estudante nian no lidera ida-ne'e hahú hosi ne'ebá. Hafoin Nazi sira sa'e ba podér iha tinan 1933, profesór na'in 21—liu désimu ida hosi pesoál profesór sira—hetan demisaun tanba razaun polítika ka rasiál tuir lei sira funsaun públika nian. Entre sira maka matenek-na'in sira ne'ebé notavel hanesan ekonomista Wilhelm Röpke, filólogu romanu Erich Auerbach, no filozofu Karl Löwith . Profesór Hermann Jacobsohn, linguista ida, oho-an iha fulan-Abril tinan 1933 hafoin nia suspensaun. <ref name=":2" /> <ref>{{Cite web |date=1933-05-01 |title=Professor Kills Self |url=https://www.jta.org/archive/professor-kills-self |access-date=2025-09-09 |website=Jewish Telegraphic Agency |language=en}}</ref> Kuota rasial no jéneru foun sira impoin ba estudante sira, limita matríkula Judeu nian ba 1.5% iha jerál no 5% ba estudante sira tinan dahuluk nian. Proporsaun estudante feto sira nian limitadu temporariamente ba 10%.
=== Depois 1945 ===
Tuir 1945, universidade haree kreximentu lalais iha númeru estudante sira. Atu akomoda demanda, esforsu espansaun sira hahú iha dékada 1960, inklui edifísiu administrativu foun, jantar, no palestra sira, no muda Fakuldade Filozofia nian. Fakuldade Siénsia Naturál ida harii iha kampus Lahnberge ne'ebé foin dezenvolve, ne'ebé nia edifísiu sira maka entre sira dahuluk iha Alemaña ne'ebé tuir modelu konstrusaun prefabrikadu ne'ebé koñesidu hanesan ''Sistema Marburg'' .
=== sékulu 21 ===
Eventu nasionál ida ne'ebé maka laiha presedente akontese iha loron 1 fulan-Janeiru tinan 2006, bainhira ospitál universitáriu hetan privatizasaun no fa'an ba Rhön-Klinikum AG, empreza privadu ida kuidadu saúde nian, hafoin nia fuzaun ho Ospitál Universitáriu Gießen nian. <ref>{{Cite news |last=Conrad |first=Till |date=2022-05-16 |title=Die langen Kämpfe ums Krankenhaus |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Iha tinan 2012 universidade loke muzeu kímika interativu dahuluk alemaun nian, ho naran ''Chemicum'' . Ninia programa kursu esperimentál ho objetivu atu enkoraja foin-sa'e sira atu buka kareira iha siénsia. <ref name="chemicum-news">{{Cite web |date=12 February 2011 |title="Chemikum Marburg" hat ein dauerhaftes Domizil |url=https://idw-online.de/pages/en/news454460 |access-date=23 January 2012 |publisher=Informationsdienst Wissenschaft}}</ref>
== Estrutura ==
[[Imajen:Marburg_UB_Neubau_Eingang_Alter_Botanischer_Garten_von_OSO.jpg|miniaturadaimagem|Biblioteka universitáriu]]
[[Imajen:Uni_Marburg_Lahnberge_04.jpg|miniaturadaimagem|''Kampus Lahnberge'' dedika ba siénsia naturál sira. Imajen hatudu ''Edifísiu ho Objetivu Múltiplu'', uma ba Departamentu Matemátika no Siénsia Informátika, no mós laboratóriu sira ba peskiza iha siénsia materiál no kímika fízika]]
=== Departamentu sira ===
Universidade Marburg fahe ba 16 fakuldade. Iha nia tempu dahuluk, universidade ne'e kompostu husi Fakuldade Teolojia, Fakuldade Medisina, Fakuldade Direitu, no Fakuldade Filosofia. Husi Fakuldade Filosofia, Fakuldade Matemátika no Siénsia Naturál separa iha tinan 1964.
Iha tinan 1970, tuir Lei Edukasaun Asentu-Superiór Hesse nian, fakuldade sira ne'e hetan reestruturasaun sai fakuldade 20. Depois husi fusaun sira ne'ebé akontese liu husi tinan 1997, organizasaun atual kompostu husi 16 fakuldade, ne'ebé numerasaun la tuir ona sequência kontinua. [1]
Hanesan parte ida hosi Prosesu Bologna nian, Universidade introdús númeru boot ida hosi programa foun sira Lisensiatura no Mestradu nian. Iha tempu hanesan, programa lisensiatura tradisionál sira ho Majistradu, Diplom no kualifikasaun sira ne'ebé hanesan hapara tiha. <ref>{{Cite web |date=2007-11-06 |title=Marburger Lehrer informieren sich über neues Studiensystem |url=https://www.uni-marburg.de/archive/news/2007-11-6-marburger-lehrer-informieren-sich-uber-neues-studiensystem.html |access-date=2025-09-09 |website=Uni Marburg}}</ref>
=== Institutu no muzeu asosiadu sira ===
Universidade koopera ho institutu afiliadu sira tuirmai:
* Fundasaun Christoph Dornier ba Psikolojia Klínika <ref>{{Cite news |last=Dietrich |first=Simon |date=1991-10-23 |title=Philipps-Universitaet. Viele Kooperationen mit Unternehmen |work=[[Handelsblatt]] |language=de}}</ref>
* Sentru Peskiza ba Hakerek Pesoál sira <ref>{{Cite news |date=2012-09-20 |title=Aufschlussreiche Würdigungen Verstorbener |work=[[Ostthüringer Zeitung]] |pages=14 |language=de}}</ref>
* Institutu Hans von Soden ba Peskiza Teolójika <ref>{{Cite news |date=2003-11-11 |title=Universität Marburg Neues Institut zur Förderung von Theologen |work=[[Frankfurter Rundschau]] |pages=34 |language=de}}</ref>
* Jestaun Kuidadu Saúde eV <ref>{{Cite news |date=2005-06-18 |title=Gesundheitsmanagement |work=[[Salzburger Nachrichten]] |pages=39 |language=de}}</ref>
* Institutu ba Estudu Kooperativu sira (fundasaun legál privadu ida) <ref>{{Cite news |last=Fehl |first=Ulrich |date=1998-01-26 |title=Im Rahmen marktwirtschaftlicher Ordnung |work=[[Frankfurter Allgemeine Zeitung]] |pages=14 |language=de}}</ref>
* Institutu ba Terapia Komportamentál no Medisina Komportamentál (IVV) <ref>{{Cite news |date=2008-11-21 |title=Vortrag über Selbstverletzungen bei Jugendlichen |work=Gießener Anzeiger |language=de}}</ref>
* Institutu ba Étika Negósiu no Sosiál <ref>{{Cite news |last=Meyer |first=Claus-Peter |date=2001-11-29 |title=Debeka als Arbeitgeber ausgezeichnet |work=VersicherungsJournal Deutschland |language=de}}</ref>
* Semináriu Katóliku-Teolójiku Fakuldade Teolojia nian iha Fulda <ref>{{Cite news |date=2020-10-16 |title=Keine Priester mehr aus Fulda? |work=[[Frankfurter Allgemeine Zeitung]] |pages=5 |language=de}}</ref>
Muzeu sira tuirmai ne'e iha afiliasaun ho universidade:
* Muzeu Mineralójiku hosi Universidade Philipps Marburg <ref>{{Cite news |date=2013-08-27 |title=Bedeutende Sammlung von Mineralien gestiftet |work=Oberhessische Zeitung |language=de}}</ref>
* Muzeu Arte no Istória Kulturál <ref>{{Cite web |title=Kunstmuseum |url=https://www.uni-marburg.de/de/museum/kunstmuseum |access-date=2025-09-09 |website=Uni Marburg |language=de}}</ref> <ref>{{Cite news |last=Schwarzwäller |first=Nadja |date=2018-06-19 |title=Verein macht sich stark für Museum |work=[[Oberhessische Presse]] |language=de}}</ref>
=== Kolesaun sira husi universidade (selesaun) ===
* Alter Botanischer Garten Marburg, the university's old [[botanical garden]]
* Botanischer Garten Marburg, the university's current botanical garden
* Forschungsinstitut Lichtbildarchiv älterer Originalurkunden bis 1250 (Collection of photographs taken from medieval charters)
* Bildarchiv Foto Marburg (German national picture archive of arts)
* Religionskundliche Sammlung (Collection of religious objects)
* Deutscher Sprachatlas (Linguistic Atlas of Germany)<ref>{{Cite web |title=Research Center Deutscher Sprachatlas |url=https://www.uni-marburg.de/en/fb09/dsa |access-date=1 August 2024}}</ref>
* Mineralogisches Museum (Museum of Mineralogy)
* Museum für Kunst und Kulturgeschichte (Museum of Arts)
* Museum Anatomicum (Museum of Anatomy and Medical History, currently closed)<ref>{{Cite news |last=Pfaffel |first=Dorothee |date=2025-04-04 |title=Wollen Sie das sehen? |work=Neuburger Rundschau |pages=25 |language=de}}</ref>
* University Archive https://www.uni-marburg.de/de/uniarchiv
== Peskiza ==
=== Klasifikasaun sira ===
Departamentu sira psikolojia no jeografia nian atinji ona estatutu Grupu Exelénsia nian iha Klasifikasaun Exelénsia CHE nian iha Europa tomak 2009.<templatestyles src="Module:Infobox/styles.css"></templatestyles>Tuir QS World University Rankings of 2024, instituisaun ne'e situa iha intervalu 761-770 globalmente, no nia kaer pozisaun 40-41 nasionalmente. Tuir THE World University Rankings of 2024, nia hetan klasifikasaun iha grupu 401-500 iha nivel mundiál, enkuantu nia klasifikasaun nasionál monu entre 37 no 41. Iha ARWU World Rankings of 2023, universidade ne'e lista iha 401-500 iha mundu tomak no nia hetan pozisaun entre 25 no nasionál 31.
=== Sentru Peskiza Kolaborativu sira ===
Universidade ne'e signifikativu ba nia peskiza siénsia-moris nian maibé mós uma ba sentru ida hosi sentru uitoan ne'ebé hala'o peskiza kona-ba Médiu Oriente, CNMS ( Sentru ba Estudu sira Médiu Oriente no Besik nian ).
Peskiza universidade nian ilustra hosi nia partisipasaun iha SFB oioin ( ''Sonderforschungsbereiche'' ). Sentru peskiza kolaborativu sira-ne'e hetan finansiamentu hosi Fundasaun Siénsia Alemaña ''DFG'' . Sira enkoraja peskizadór sira atu hakat liu baliza sira hosi dixiplina sira, institutu sira, departamentu sira no fakuldade sira iha universidade partisipante nia laran. SFB atuál iha Universidade Marburg maka: <ref>{{Cite web |title=Sonderforschungsbereiche |url=https://www.uni-marburg.de/de/forschung/spitzenfoerderung/sfb |access-date=9 May 2020 |website=Philipps-Universität Marburg}}</ref>
* SFB 1083 – Estrutura no Dinámika Interfase Internu sira-nian (hahú iha 2013, iha kooperasaun ho Sentru Fízika Internasionál Donostia San Sebastián ) <ref>{{Cite web |date=2025-04-09 |title=SFB1083 |url=https://www.internal-interfaces.de/ |access-date=2025-09-09 |website=Internal Interfaces |language=en}}</ref>
* SFB/TRR 138 – Dinámika Seguransa nian: Forma sira Titulizasaun nian iha Perspetiva Istóriku (hahú iha 2014)
* CRC/TRR 393 – Trajetória sira husi Transtornu Afetivu sira (dezde 2024)
=== Manan-na'in sira Prémiu Nobel nian ===
Entre 1901 no 2011, ema na'in sanulu-resin-ida ne'ebé asosiadu ho Universidade Marburg liuhosi estudu ka hanorin hetan Prémiu Nobel[[File:Nobel_Prize.png|15x15px]] : <ref>{{Cite web |title=Nobelpreisträger |url=https://www.uni-marburg.de/de/universitaet/profil/geschichte/nobelpreistraeger |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 1901: Emil von Behring (Medicine)<ref>{{Cite news |last=Warnecke |first=Christiane |date=2009-06-13 |title=Mit Emil von Behring fing alles an |work=[[Frankfurter Neue Presse]] |pages=1 |language=de}}</ref>
* 1909: Ferdinand Braun (Physics)
* 1910: Albrecht Kossel (Medicine)
* 1930: Hans Fischer (Chemistry)
* 1936: Otto Loewi (Medicine)
* 1939: Adolf Butenandt (Chemistry)
* 1944: Otto Hahn (Chemistry)<ref>{{Cite news |last=Hanke |first=Franz-Josef |date=2008-06-23 |title=Ehre, wem Ehre gebührt – Wissenschaftspreise ehren die Forscher und nutzen auch wieder der Wissenschaft |work=[[Badische Zeitung]] |pages=12 |language=de}}</ref>
* 1958: Boris Pasternak (Literature)
* 1963: Karl Ziegler (Chemistry)
* 1979: Georg Wittig (Chemistry)
* 2011: Jules Hoffmann (Medicine)<ref>{{Cite news |last=Breu |first=Michael |date=2011-10-04 |title=Nobelpreis geht an einen Toten. Medizinpreis erstmals posthum vergeben |work=[[Basler Zeitung]] |pages=12 |language=de}}</ref>
=== Manan-na'in sira Prémiu Leibniz nian ===
Prémiu Gottfried Wilhelm Leibniz fó ba peskizadór sira tuirmai ne'ebé iha afiliasaun ho Universidade Marburg: <ref>{{Cite news |date=2021-12-10 |title=Trägerinnen und Träger des Leibnizpreises an der Philipps-Universität Marburg |work=[[Oberhessische Presse]] |pages=3 |language=de}}</ref>
* 1987: Rudolf K. Thauer – Mikrobiolojia Biokímika
* 1989: Manfred T. Reetz – Kímika Orgánika
* 1991: Ernst O. Göbel – Fízika Estadu-Sólidu
* 1991: Rolf Müller – Biokímika / Biolojia Molekulár
* 1996: Reinhard Lührmann – Biolojia Molekulár
* 1997: Paul Knochel – Kímika Organometálika
* 1997: Stephan W. Koch – Fízika Teórika
* 2002: Bruno Eckhardt – Fízika Teórika
* 2003: Roland Lill – Biolojia Sélula / Biokímika
* 2006: Gyburg Radke (kaben ho Uhlmann) – Filolójia no Filozofia Klásiku
* 2011: Friederike Pannewick – Estudu Árabe
* 2022: Stefanie Dehnen – Kímika Inorgánika
* 2024: Tobias Erb – Mikrobiolojia Sintétika
=== Prémiu Ars legend ba ensinu universitáriu ne'ebé di'ak tebes ===
Prémiu Ars legendi ba Ensinu Universitáriu Exelente, prémiu aas liu iha Alemaña iha área ensinu superiór nian, ne'ebé aprezenta hosi Stifterverband für die Deutsche Wissenschaft no Konferénsia Reitór Alemaña nian (HRK), fó ba ema sira tuirmai ne'ebé hanorin iha Universidade Marburg: <ref>{{Cite web |last= |title=Ars legendi-Preis |url=https://www.stifterverband.org/ars-legendi-preis |access-date=2025-09-09 |website=Stifterverband |language=de}}</ref> <ref name=":3">{{Cite web |title=Preisträger*innen |url=https://www.uni-marburg.de/de/universitaet/profil/zahlen-fakten-preise/preise |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 2010: Jürgen Schäfer (Prémiu Fakuldade ba Medisina)
* 2015: Jürgen Handke (ba "Ensinu no Aprendizajen Dijitál")
* 2016: Ilka Agricola (Prémiu Fakuldade nian ba Matemátika)
* 2017: Stefan Bösner (Prémiu Fakuldade ba Medisina)
* 2018: Evelyn Korn (ba "Alineamentu Konstrutivu")
* 2024: Rolf Kreyer (ba "Teoria no prátika linguístika Inglés nian kombinadu") <ref>{{Cite web |last= |date=2025-06-05 |title=Marburger Anglist Professor Kreyer erhält Preis für ausgezeichnete Lehre |url=https://www.op-marburg.de/lokales/marburg-biedenkopf/marburg/marburger-anglist-professor-kreyer-erhaelt-preis-fuer-ausgezeichnete-lehre-IVUZOSGCCREO3F2XUUNLS5N474.html |access-date=2025-09-09 |website=[[Oberhessische Presse]] |language=de}}</ref>
=== Instituisaun sientífika sira ===
Universidade Marburg simu instituisaun akadémika no peskiza oioin:
* Akademia Peskiza Universidade Marburg (MARA) apoia peskizadór sira iha kareira inisiál liuhosi formasaun interdisiplinár, finansiamentu, no servisu dezenvolvimentu kareira nian. <ref>{{Cite news |date=2010-12-23 |title=Bedingungen für Promotion transparent machen |work=Gießener Anzeiger |language=de}}</ref>
* Sentru Dokumentasaun Alemaña ba Istória Arte nian (Bildarchiv Foto Marburg) maka arkivu imajen ida ne'ebé boot liu iha Europa ba arte no arkitetura, ne'ebé fornese rekursu no servisu sira ba muzeu sira, matenek-na'in sira, no editór sira. <ref>{{Cite news |last=Brockschmidt |first=Rolf |date=2023-09-02 |title=Für den Fall der Fälle |work=[[Der Tagesspiegel]] |pages=34 |language=de}}</ref>
* Sentru Demokrasia Hesse koordena esforsu sira hasoru estremizmu direita no oferese programa Mestradu ida iha akonsellamentu iha kontestu ne'ebá. <ref>{{Cite news |last=Haschink |first=Gregor |date=2022-05-11 |title=Opferberatung studieren |work=[[Frankfurter Rundschau]] |language=de}}</ref>
* Sentru Peskiza Deutscher Sprachatlas dokumenta no estuda variedade rejionál sira hosi lian Alemaña no mantein arkivu ida ne'ebé luan hosi materiál dialetu sira hosi fatin 50,000 resin. <ref>{{Cite news |last=Rummel |first=Silke |date=2014-09-09 |title=Forschungszentrum Deutscher Sprachatlas |work=Darmstädter Echo |language=de}}</ref>
* Sentru Estudu Jéneru no Peskiza Feminista, harii iha 2001, promove serbisu interdisiplinár iha estudu jéneru no koordena programa akadémiku sira ne'ebé iha relasaun. <ref>{{Cite news |date=2017-11-10 |title=Bildungsministerium gibt knapp eine Million Euro für Gender-Forschung |work=[[Oberhessische Presse]] |language=de}}</ref>
* Jardim Botániku, ne'ebé lokaliza iha kampus Lahnberge, ho luan hektar 20 no inklui kolesaun ai-horis ne'ebé luan, área peskiza nian, no estufa sira; Jardim Botániku Antigu agora serve hanesan parke públiku. <ref>{{Cite web |last=Ahlers |first=Wolfram |date=2021-08-20 |title=Botanischer Garten in Marburg muss renoviert werden |url=https://www.faz.net/aktuell/rhein-main/region-und-hessen/botanischer-garten-in-marburg-muss-renoviert-werden-17488145.html |access-date=2025-09-09 |website=[[Frankfurter Allgemeine Zeitung]] |language=de}}</ref>
* SYNMIKRO, Sentru ba Mikrobiolojia Sintétika, avansa peskiza kona-ba enjeñaria funsaun mikrobiál sira, ho aplikasaun sira iha bioteknolojia no medisina, iha kolaborasaun ho Sosiedade Max Planck . <ref>{{Cite news |last=Hitzeroth |first=Manfred |date=2018-11-10 |title=Sieg mit mikrobiologischem Baukasten |work=[[Oberhessische Presse]] |language=de}}</ref>
== Estudante sira ==
[[Imajen:Alte_Universität_(Marburg)_2.jpg|miniaturadaimagem|''Universidade Antiga'', ne'ebé maka iha igreja universitáriu, departamentu ba estudu relijiozu sira no sala palestra reprezentativu ida]]
Students at Marburg University are represented by the General Student Committee (AStA) and the Student Parliament (StuPa), with additional representation at faculty level through student councils. The universal transit pass (semester ticket), negotiated by the AStA, allows students extensive access to public transport in Hesse and neighbouring areas, including use of selected InterCity (IC) and InterCity Express (ICE) trains.<ref>{{Cite news |date=2018-10-24 |title=ICE: Für Asta war Ticket-Reichweite zentraler Punkt |work=[[Oberhessische Presse]] |language=de}}</ref><ref>{{Cite news |last=Robinson |first=Patrick |date=2025-03-06 |title=Nach der Prüfung ist vor der Prüfung |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Universidade oferese rezidénsia oioin ba estudante sira, inklui Christian-Wolff-Haus, <ref>{{Cite news |date=2024-11-16 |title=Kernsanierung für Christian-Wolff-Haus |work=[[Oberhessische Presse]] |pages=5 |language=de}}</ref> istóriku Collegium Philippinum, <ref>{{Cite news |date=2025-09-08 |title=Felina Karle bekommt dank jahrhundertealten Rechts einen Platz im Collegium Philippinum in Marburg |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref> no Vilmarhaus, ne'ebé maka jere hosi Igreja Protestante. Konrad-Biesalski-Haus nafatin notavel ba nia asesibilidade pioneiru ba estudante sira ho defisiénsia fíziku. <ref>{{Cite news |last=Maas |first=Marie-Charlotte |date=2012-06-14 |title=Gleichheit unter Ungleichen |work=[[Die Zeit]] |pages=71 |language=de}}</ref>
== Antigu alunu no profesór sira ne'ebé notavel ==
=== Sientista naturál sira ===
<templatestyles src="Div col/styles.css" />
=== Teólogu sira ===
Marburg sempre koñesidu hanesan universidade ida ne'ebé foka ba umanidade . Ida-ne'e mantein forsa ne'e, liuliu iha Filozofia no Teolojia ba tempu naruk hafoin Funu Mundiál Daruak . <ref>{{Cite web |last=Peter |first=Lothar |date=2020-05-02 |title=Ein Partisan im Land der Mitläufer |url=https://jacobin.de/artikel/wolfgang-abendroth-marburg-marxismus-partisanenprofessor |access-date=2025-09-09 |website=Jacobin Magazin |language=de}}</ref> <ref>{{Cite news |last=Sieg |first=Ulrich |date=2005-02-05 |title=Aus dem Geiste Kants Hermann Cohen, Paul Natorp und der Erste Weltkrieg |work=[[Neue Zürcher Zeitung]] |pages=64 |language=de}}</ref><templatestyles src="Div col/styles.css" />
=== Filózofu sira ===
=== Seluk ===
<templatestyles src="Div col/styles.css" />
[[Kategoria:Páginas com traduções não revistas]]
3nje5f7uhha43a203j6g5iisiqbilg3
73854
73853
2026-07-11T13:47:06Z
Diamantino Soares
9475
73854
wikitext
text/x-wiki
== Introdusaun ==
[[Imajen:Marburg asv2022-02 img02 Old University.jpg|miniaturadaimagem]]
'''Universidade Marburg''' mak universidade peskiza públika ida ne'ebé lokaliza iha Marburg, Alemaña. Universidade ne'e harii iha tinan 1527 hosi Filipe I, Landgrave hosi Hesse, no konsidera hanesan universidade ida ne'ebé tuan liu iha Alemaña no universidade protestante tuan liu ne'ebé sei kontinua funsiona to'o ohin loron iha mundu.
Ohin loron, Universidade Marburg mak universidade públika ida ne'ebé pertence ba Estadu Hesse, no la iha afiliasaun relijioza.
Universidade Marburg iha estudante hamutuk 21.162 iha tinan akademiku 2024/2025. Universidade ne'e lokaliza iha Marburg, Alemaña, no oferese programa estudu internasionál oioin. Aleinde ne'e, universidade ne'e mós partisipa iha programa Erasmus, ne'ebé fó oportunidade ba estudante sira atu tuir programa troka estudante ho universidade sira seluk iha Europa.
== Istória ==
=== Tinan sira iha Fundasaun nian ===
Iha loron 1 fulan-Jullu 1527, xefe rai-na'in nian Johann Feige inaugura oficialmente Universidade Marburg, ne'ebé harii husi Landgrave Philip I liuhusi dekretu ida iha loron 30 fulan Maiu tinan ne'ebá. Iha tempu inaugurasaun, universidade ne'e iha profesór 11 no estudante 88.
Reitór dahuluk Universidade Marburg mak Johannes Eisermann, ne'ebé koñesidu mós ho naran latín ''Ferrarius Montanus''. Nia hanorin direitu no servisu hanesan asesór ba tribunál landgravial iha Amöneburg. Iha tinan ne'ebá duni, Philip I fó ba universidade ne'e liberdade akadémika ne'ebé presiza atu hala'o nia atividade sira.
Iha loron 4 fulan Outubru 1541, Universidade Marburg hetan independénsia finanseira liuhosi eskritura dotasaun. Tinan tuirmai, Landgrave Philip I simu priviléjiu universitáriu hosi Imperadór Carlos V durante Dieta Imperiál iha Regensburg.
Iha tempu dahuluk, Universidade Marburg uza edifísiu monástiku antigu sira ne'ebé uluk pertense ba Dominikanu sira, Fransiskanu sira, no Irmaun sira husi Vida Komún.
Landgrave Philip I mós fó ba universidade priviléjiu oioin, inklui direitu atu haruka reprezentante ida ba asembleia rejionál, no izensaun hosi taxa no impostu ba membru universitáriu sira.
Iha tinan 1529, Landgrave Philip I sai uma-na'in ba Marburg Colloquy, debate relijiozu ida entre Martin Luther, Ulrich Zwingli, no Philip Melanchthon.
Reputasaun husi fakuldade teolójia Universidade Marburg atrai estudante internasionál sira, liuliu husi Suisa, Dinamarka, Suésia, Olanda, no Eskósia. Entre estudante sira ne'e iha Patrick Hamilton, ne'ebé estuda iha Marburg ba tempu badak.
Durante sékulu dahuluk universidade nian, surtu moras oioin, hanesan moras suar Inglés no peste, obriga universidade atu muda temporariamente ba sidade sira ne'ebé besik.
=== sékulu XVI no XVII ===
To'o nia mate iha tinan 1560, Johann Friedrich Dryander kaer kadeira medisina iha Universidade Marburg. Iha loron 15 fulan-Novembru 1565, Landgrave William IV hosi Hesse-Kassel nomeia Georg Marius nu'udar profesór, lahó hetan uluk konsentimentu formál husi universidade.
Iha tinan 1566, universidade harii kadeira medisina daruak, ne'ebé prenxe husi Victorinus Schönfeldt. Antes ne'e, nia serbisu nu'udar profesór matemátika iha universidade.
Entre tinan 1580 no 1628, Rudolph Goclenius maka profesór filozofia, lójika, no étika iha Universidade Marburg.
Bainhira Landgrave Maurice husi Hesse-Kassel hetan eransa husi Landgraviate Hesse-Marburg iha tinan 1604, nia konverte ba Calvinizmu iha tinan tuirmai. Tanba ne'e, universidade hetan obrigasaun atu adopta konfisaun Reformada, ne'ebé nia mantein to'o nia alinhamentu konfisionál nia rohan iha tinan 1866.
Mudansa konfisionál ida ne'e lori profesór Luteranu barak ba Universidade Giessen, ne'ebé foin harii iha tinan 1607. Iha tinan 1625, bainhira Marburg temporariamente tama iha okos Hesse-Darmstadt Luteranu, Universidade Giessen fila fali ba Universidade Marburg no depois taka.
Iha loron 24 fulan-Juñu 1653, universidade ne'e loke fali husi William VI husi Hesse-Kassel, ne'ebé muda fali universidade estadu nian husi Kassel ba Marburg, nune'e taka Universidade Kassel. Iha tinan sira tuirmai, universidade hasoru tempu difisil sira tanba konfisionalizasaun ne'ebé la'o hela no susar finanseiru.
=== sékulu 18 ===
Iha tinan 1723, filózofu Christian Wolff hetan nomeasaun ba kadeira ida iha Universidade Marburg hafoin hetan espulsaun hosi Halle hosi Frederick William I. Maski hetan opozisaun hosi parte sira hosi fakuldade teolójika, Wolff hanorin iha Marburg to'o 1740 ho protesaun hosi Landgrave, molok hetan bolu fali ba Prússia hosi Frederick the Great . Funu Tinan Hitu nian ikusmai perturba universidade, tanba Hesse sai hanesan kampu funu nian no Marburg hetan fortifikasaun.
Iha tinan 1785, universidade ne'e iha estatutu legál no polítiku espesiál: nia iha nia jurisdisaun rasik, dotasaun ekleziástiku sira, no kadeira ida iha asembleia rejionál. Landgrave hala'o knaar nu'udar reitór, ministru finansas nu'udar kuradór, no senadu kompostu hosi reprezentante sira hosi teolojia, lei, medisina, no filozofia, hamutuk ho instrutór linguajen no tékniku sira.
Universidade Marburg hetan kreximentu foun durante era Napoleónika . Iha tinan 1807, Eleitoradu Hesse nian sai parte hosi Reinu Westfalia ne'ebé foin harii, estadu satélite fransés ida. Maski universidade oioin iha reinu foun nia laran taka, Marburg hetan salvasaun no benefísiu finanseiru hosi redistribuisaun rekursu sira-nian, liuliu hafoin taka universidade sira iha Rinteln no Helmstedt . Biblioteka universitáriu habelar maka'as liuhosi transferénsia sira hosi Rinteln.
Iha tinan 1810, autoridade sira Westfalia nian bandu estudante sira atu uza kór no farda rejionál sira, hodi hamosu konflitu ne'ebé naruk entre estudante sira no administrasaun. Iha Maiu 1811, estudante 200 resin halo protestu hodi marxa ba Gladenbach, ne'ebé lori ba libertasaun estudante ida ne'ebé dadur no inkéritu ofisiál ida.
Hafoin retornu hosi prínsipe-eleitor iha tinan 1813, reforma barak maka inverte, inklui disolusaun hosi estrutura administrativu sira hosi Westfalia no finansiamentu sentralizadu. Influensiadu husi Funu Libertasaun nian, movimentu estudante sira ne'ebé promove unidade nasionál no ideia liberál sira hetan trasaun iha Marburg. Iha tinan 1816, sosiedade estudante ''Teutonia nian'' hamutuk ho asosiasaun estudante lokál sira hodi forma ''Germania Marburgensis'', maski nia dezenvolvimentu hetan impedimentu hosi Dekretu Carlsbad nian to'o tinan 1850. Iha prínsipe-eleitór Wilhelm I nia okos, restrisaun relijioza sira sai kmaan, hodi permite nomeasaun ba profesór katóliku sira hamutuk ho luteranu sira. Wilhelm II depois fó igualdade konfisionál tomak, ne'ebé kontribui ba aumentu iha matríkula. Durante dékada 1820 no dékada sira tuirmai, universidade habelar nia instalasaun sira, inklui jardín botániku foun, biblioteka, laboratóriu kímiku, teatru anatómiku, observatóriu, no klínika sira. Klínika feto nian, hahú iha Hessian nia ukun, remata iha tinan 1867.
Tuir aneksasaun Hesse nian hosi Prússia iha tinan 1866, universidade tranzita hosi instituisaun rejionál ida ba parte ida hosi sistema edukasaun Prússia nian, hodi hetan benefísiu hosi ninia reforma sira. Iha tempu ne'ebá, iha estudante na'in 264 (na'in 22 hosi li'ur Hesse) no profesór na'in 51.
Tanba limitasaun propriedade no preferénsia atu uza edifísiu estadu nian ne'ebé eziste, universidade desentralizadu nafatin iha sidade tomak envezde adota modelu kampus unifikadu. Númeru estudante sira aumenta beibeik, to'o 500 iha 1880 no liu 1,000 iha 1887.
=== sékulu XX ===
Iha tinan 1909, matríkula estudante nian iha Universidade Marburg aumenta dala rua. Maski feto sira seidauk hetan admisaun formál, Tadako Urata simu grau doutoramentu iha medisina iha tinan 1905 tuir provizaun espesiál ida. Onra akadémika dahuluk ne'ebé fó ba feto ida iha universidade fó ona iha tinan 1827 ba Daniel Jeanne Wyttenbach, ne'ebé simu doutoramentu onoráriu ida ba nia hakerek filozófiku sira kona-ba estétika. Admisaun formál ba feto sira hahú iha semestre invernu 1908/09 ho estudante feto na'in 26; sira nia númeru sa'e ba 206 bainhira mosu Funu Mundiál I.
Funu marka interupsaun boot ida. Enkuantu estudante mane 2,258 maka rejista iha veraun 1914, númeru ne'e tun ba 1,899 iha semestre tuirmai, ho de'it 478 ne'ebé tuir palestra sira. Iha fulan tolu nia laran funu nian, universidade lakon ona estudante na'in 55.
=== Períodu Nazi ===
Iha tinan 1926, kapítulu ida hosi Liga Nasionál Sosialista Estudante Alemaña nian (NSDStB) harii iha Marburg. Iha tinan 1931, ida-ne'e kaer maioria iha konsellu estudante nian no lidera ida-ne'e hahú hosi ne'ebá. Hafoin Nazi sira sa'e ba podér iha tinan 1933, profesór na'in 21—liu désimu ida hosi pesoál profesór sira—hetan demisaun tanba razaun polítika ka rasiál tuir lei sira funsaun públika nian. Entre sira maka matenek-na'in sira ne'ebé notavel hanesan ekonomista Wilhelm Röpke, filólogu romanu Erich Auerbach, no filozofu Karl Löwith . Profesór Hermann Jacobsohn, linguista ida, oho-an iha fulan-Abril tinan 1933 hafoin nia suspensaun. <ref name=":2" /> <ref>{{Cite web |date=1933-05-01 |title=Professor Kills Self |url=https://www.jta.org/archive/professor-kills-self |access-date=2025-09-09 |website=Jewish Telegraphic Agency |language=en}}</ref> Kuota rasial no jéneru foun sira impoin ba estudante sira, limita matríkula Judeu nian ba 1.5% iha jerál no 5% ba estudante sira tinan dahuluk nian. Proporsaun estudante feto sira nian limitadu temporariamente ba 10%.
=== Depois 1945 ===
Tuir 1945, universidade haree kreximentu lalais iha númeru estudante sira. Atu akomoda demanda, esforsu espansaun sira hahú iha dékada 1960, inklui edifísiu administrativu foun, jantar, no palestra sira, no muda Fakuldade Filozofia nian. Fakuldade Siénsia Naturál ida harii iha kampus Lahnberge ne'ebé foin dezenvolve, ne'ebé nia edifísiu sira maka entre sira dahuluk iha Alemaña ne'ebé tuir modelu konstrusaun prefabrikadu ne'ebé koñesidu hanesan ''Sistema Marburg'' .
=== sékulu 21 ===
Eventu nasionál ida ne'ebé maka laiha presedente akontese iha loron 1 fulan-Janeiru tinan 2006, bainhira ospitál universitáriu hetan privatizasaun no fa'an ba Rhön-Klinikum AG, empreza privadu ida kuidadu saúde nian, hafoin nia fuzaun ho Ospitál Universitáriu Gießen nian. <ref>{{Cite news |last=Conrad |first=Till |date=2022-05-16 |title=Die langen Kämpfe ums Krankenhaus |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Iha tinan 2012 universidade loke muzeu kímika interativu dahuluk alemaun nian, ho naran ''Chemicum'' . Ninia programa kursu esperimentál ho objetivu atu enkoraja foin-sa'e sira atu buka kareira iha siénsia. <ref name="chemicum-news">{{Cite web |date=12 February 2011 |title="Chemikum Marburg" hat ein dauerhaftes Domizil |url=https://idw-online.de/pages/en/news454460 |access-date=23 January 2012 |publisher=Informationsdienst Wissenschaft}}</ref>
== Estrutura ==
[[Imajen:Marburg_UB_Neubau_Eingang_Alter_Botanischer_Garten_von_OSO.jpg|miniaturadaimagem|Biblioteka universitáriu]]
[[Imajen:Uni_Marburg_Lahnberge_04.jpg|miniaturadaimagem|''Kampus Lahnberge'' dedika ba siénsia naturál sira. Imajen hatudu ''Edifísiu ho Objetivu Múltiplu'', uma ba Departamentu Matemátika no Siénsia Informátika, no mós laboratóriu sira ba peskiza iha siénsia materiál no kímika fízika]]
=== Departamentu sira ===
Universidade Marburg fahe ba 16 fakuldade. Iha nia tempu dahuluk, universidade ne'e kompostu husi Fakuldade Teolojia, Fakuldade Medisina, Fakuldade Direitu, no Fakuldade Filosofia. Husi Fakuldade Filosofia, Fakuldade Matemátika no Siénsia Naturál separa iha tinan 1964.
Iha tinan 1970, tuir Lei Edukasaun Asentu-Superiór Hesse nian, fakuldade sira ne'e hetan reestruturasaun sai fakuldade 20. Depois husi fusaun sira ne'ebé akontese liu husi tinan 1997, organizasaun atual kompostu husi 16 fakuldade, ne'ebé numerasaun la tuir ona sequência kontinua. [1]
Hanesan parte ida hosi Prosesu Bologna nian, Universidade introdús númeru boot ida hosi programa foun sira Lisensiatura no Mestradu nian. Iha tempu hanesan, programa lisensiatura tradisionál sira ho Majistradu, Diplom no kualifikasaun sira ne'ebé hanesan hapara tiha. <ref>{{Cite web |date=2007-11-06 |title=Marburger Lehrer informieren sich über neues Studiensystem |url=https://www.uni-marburg.de/archive/news/2007-11-6-marburger-lehrer-informieren-sich-uber-neues-studiensystem.html |access-date=2025-09-09 |website=Uni Marburg}}</ref>
=== Institutu no muzeu asosiadu sira ===
Universidade koopera ho institutu afiliadu sira tuirmai:
* Fundasaun Christoph Dornier ba Psikolojia Klínika <ref>{{Cite news |last=Dietrich |first=Simon |date=1991-10-23 |title=Philipps-Universitaet. Viele Kooperationen mit Unternehmen |work=[[Handelsblatt]] |language=de}}</ref>
* Sentru Peskiza ba Hakerek Pesoál sira <ref>{{Cite news |date=2012-09-20 |title=Aufschlussreiche Würdigungen Verstorbener |work=[[Ostthüringer Zeitung]] |pages=14 |language=de}}</ref>
* Institutu Hans von Soden ba Peskiza Teolójika <ref>{{Cite news |date=2003-11-11 |title=Universität Marburg Neues Institut zur Förderung von Theologen |work=[[Frankfurter Rundschau]] |pages=34 |language=de}}</ref>
* Jestaun Kuidadu Saúde eV <ref>{{Cite news |date=2005-06-18 |title=Gesundheitsmanagement |work=[[Salzburger Nachrichten]] |pages=39 |language=de}}</ref>
* Institutu ba Estudu Kooperativu sira (fundasaun legál privadu ida) <ref>{{Cite news |last=Fehl |first=Ulrich |date=1998-01-26 |title=Im Rahmen marktwirtschaftlicher Ordnung |work=[[Frankfurter Allgemeine Zeitung]] |pages=14 |language=de}}</ref>
* Institutu ba Terapia Komportamentál no Medisina Komportamentál (IVV) <ref>{{Cite news |date=2008-11-21 |title=Vortrag über Selbstverletzungen bei Jugendlichen |work=Gießener Anzeiger |language=de}}</ref>
* Institutu ba Étika Negósiu no Sosiál <ref>{{Cite news |last=Meyer |first=Claus-Peter |date=2001-11-29 |title=Debeka als Arbeitgeber ausgezeichnet |work=VersicherungsJournal Deutschland |language=de}}</ref>
* Semináriu Katóliku-Teolójiku Fakuldade Teolojia nian iha Fulda <ref>{{Cite news |date=2020-10-16 |title=Keine Priester mehr aus Fulda? |work=[[Frankfurter Allgemeine Zeitung]] |pages=5 |language=de}}</ref>
Muzeu sira tuirmai ne'e iha afiliasaun ho universidade:
* Muzeu Mineralójiku hosi Universidade Philipps Marburg <ref>{{Cite news |date=2013-08-27 |title=Bedeutende Sammlung von Mineralien gestiftet |work=Oberhessische Zeitung |language=de}}</ref>
* Muzeu Arte no Istória Kulturál <ref>{{Cite web |title=Kunstmuseum |url=https://www.uni-marburg.de/de/museum/kunstmuseum |access-date=2025-09-09 |website=Uni Marburg |language=de}}</ref> <ref>{{Cite news |last=Schwarzwäller |first=Nadja |date=2018-06-19 |title=Verein macht sich stark für Museum |work=[[Oberhessische Presse]] |language=de}}</ref>
=== Kolesaun sira husi universidade (selesaun) ===
* Alter Botanischer Garten Marburg, the university's old [[botanical garden]]
* Botanischer Garten Marburg, the university's current botanical garden
* Forschungsinstitut Lichtbildarchiv älterer Originalurkunden bis 1250 (Collection of photographs taken from medieval charters)
* Bildarchiv Foto Marburg (German national picture archive of arts)
* Religionskundliche Sammlung (Collection of religious objects)
* Deutscher Sprachatlas (Linguistic Atlas of Germany)<ref>{{Cite web |title=Research Center Deutscher Sprachatlas |url=https://www.uni-marburg.de/en/fb09/dsa |access-date=1 August 2024}}</ref>
* Mineralogisches Museum (Museum of Mineralogy)
* Museum für Kunst und Kulturgeschichte (Museum of Arts)
* Museum Anatomicum (Museum of Anatomy and Medical History, currently closed)<ref>{{Cite news |last=Pfaffel |first=Dorothee |date=2025-04-04 |title=Wollen Sie das sehen? |work=Neuburger Rundschau |pages=25 |language=de}}</ref>
* University Archive https://www.uni-marburg.de/de/uniarchiv
== Peskiza ==
=== Klasifikasaun sira ===
Departamentu sira psikolojia no jeografia nian atinji ona estatutu Grupu Exelénsia nian iha Klasifikasaun Exelénsia CHE nian iha Europa tomak 2009.<templatestyles src="Module:Infobox/styles.css"></templatestyles>Tuir QS World University Rankings of 2024, instituisaun ne'e situa iha intervalu 761-770 globalmente, no nia kaer pozisaun 40-41 nasionalmente. Tuir THE World University Rankings of 2024, nia hetan klasifikasaun iha grupu 401-500 iha nivel mundiál, enkuantu nia klasifikasaun nasionál monu entre 37 no 41. Iha ARWU World Rankings of 2023, universidade ne'e lista iha 401-500 iha mundu tomak no nia hetan pozisaun entre 25 no nasionál 31.
=== Sentru Peskiza Kolaborativu sira ===
Universidade ne'e signifikativu ba nia peskiza siénsia-moris nian maibé mós uma ba sentru ida hosi sentru uitoan ne'ebé hala'o peskiza kona-ba Médiu Oriente, CNMS ( Sentru ba Estudu sira Médiu Oriente no Besik nian ).
Peskiza universidade nian ilustra hosi nia partisipasaun iha SFB oioin ( ''Sonderforschungsbereiche'' ). Sentru peskiza kolaborativu sira-ne'e hetan finansiamentu hosi Fundasaun Siénsia Alemaña ''DFG'' . Sira enkoraja peskizadór sira atu hakat liu baliza sira hosi dixiplina sira, institutu sira, departamentu sira no fakuldade sira iha universidade partisipante nia laran. SFB atuál iha Universidade Marburg maka: <ref>{{Cite web |title=Sonderforschungsbereiche |url=https://www.uni-marburg.de/de/forschung/spitzenfoerderung/sfb |access-date=9 May 2020 |website=Philipps-Universität Marburg}}</ref>
* SFB 1083 – Estrutura no Dinámika Interfase Internu sira-nian (hahú iha 2013, iha kooperasaun ho Sentru Fízika Internasionál Donostia San Sebastián ) <ref>{{Cite web |date=2025-04-09 |title=SFB1083 |url=https://www.internal-interfaces.de/ |access-date=2025-09-09 |website=Internal Interfaces |language=en}}</ref>
* SFB/TRR 138 – Dinámika Seguransa nian: Forma sira Titulizasaun nian iha Perspetiva Istóriku (hahú iha 2014)
* CRC/TRR 393 – Trajetória sira husi Transtornu Afetivu sira (dezde 2024)
=== Manan-na'in sira Prémiu Nobel nian ===
Entre 1901 no 2011, ema na'in sanulu-resin-ida ne'ebé asosiadu ho Universidade Marburg liuhosi estudu ka hanorin hetan Prémiu Nobel[[File:Nobel_Prize.png|15x15px]] : <ref>{{Cite web |title=Nobelpreisträger |url=https://www.uni-marburg.de/de/universitaet/profil/geschichte/nobelpreistraeger |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 1901: Emil von Behring (Medicine)<ref>{{Cite news |last=Warnecke |first=Christiane |date=2009-06-13 |title=Mit Emil von Behring fing alles an |work=[[Frankfurter Neue Presse]] |pages=1 |language=de}}</ref>
* 1909: Ferdinand Braun (Physics)
* 1910: Albrecht Kossel (Medicine)
* 1930: Hans Fischer (Chemistry)
* 1936: Otto Loewi (Medicine)
* 1939: Adolf Butenandt (Chemistry)
* 1944: Otto Hahn (Chemistry)<ref>{{Cite news |last=Hanke |first=Franz-Josef |date=2008-06-23 |title=Ehre, wem Ehre gebührt – Wissenschaftspreise ehren die Forscher und nutzen auch wieder der Wissenschaft |work=[[Badische Zeitung]] |pages=12 |language=de}}</ref>
* 1958: Boris Pasternak (Literature)
* 1963: Karl Ziegler (Chemistry)
* 1979: Georg Wittig (Chemistry)
* 2011: Jules Hoffmann (Medicine)<ref>{{Cite news |last=Breu |first=Michael |date=2011-10-04 |title=Nobelpreis geht an einen Toten. Medizinpreis erstmals posthum vergeben |work=[[Basler Zeitung]] |pages=12 |language=de}}</ref>
=== Manan-na'in sira Prémiu Leibniz nian ===
Prémiu Gottfried Wilhelm Leibniz fó ba peskizadór sira tuirmai ne'ebé iha afiliasaun ho Universidade Marburg: <ref>{{Cite news |date=2021-12-10 |title=Trägerinnen und Träger des Leibnizpreises an der Philipps-Universität Marburg |work=[[Oberhessische Presse]] |pages=3 |language=de}}</ref>
* 1987: Rudolf K. Thauer – Mikrobiolojia Biokímika
* 1989: Manfred T. Reetz – Kímika Orgánika
* 1991: Ernst O. Göbel – Fízika Estadu-Sólidu
* 1991: Rolf Müller – Biokímika / Biolojia Molekulár
* 1996: Reinhard Lührmann – Biolojia Molekulár
* 1997: Paul Knochel – Kímika Organometálika
* 1997: Stephan W. Koch – Fízika Teórika
* 2002: Bruno Eckhardt – Fízika Teórika
* 2003: Roland Lill – Biolojia Sélula / Biokímika
* 2006: Gyburg Radke (kaben ho Uhlmann) – Filolójia no Filozofia Klásiku
* 2011: Friederike Pannewick – Estudu Árabe
* 2022: Stefanie Dehnen – Kímika Inorgánika
* 2024: Tobias Erb – Mikrobiolojia Sintétika
=== Prémiu Ars legend ba ensinu universitáriu ne'ebé di'ak tebes ===
Prémiu Ars legendi ba Ensinu Universitáriu Exelente, prémiu aas liu iha Alemaña iha área ensinu superiór nian, ne'ebé aprezenta hosi Stifterverband für die Deutsche Wissenschaft no Konferénsia Reitór Alemaña nian (HRK), fó ba ema sira tuirmai ne'ebé hanorin iha Universidade Marburg: <ref>{{Cite web |last= |title=Ars legendi-Preis |url=https://www.stifterverband.org/ars-legendi-preis |access-date=2025-09-09 |website=Stifterverband |language=de}}</ref> <ref name=":3">{{Cite web |title=Preisträger*innen |url=https://www.uni-marburg.de/de/universitaet/profil/zahlen-fakten-preise/preise |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 2010: Jürgen Schäfer (Prémiu Fakuldade ba Medisina)
* 2015: Jürgen Handke (ba "Ensinu no Aprendizajen Dijitál")
* 2016: Ilka Agricola (Prémiu Fakuldade nian ba Matemátika)
* 2017: Stefan Bösner (Prémiu Fakuldade ba Medisina)
* 2018: Evelyn Korn (ba "Alineamentu Konstrutivu")
* 2024: Rolf Kreyer (ba "Teoria no prátika linguístika Inglés nian kombinadu") <ref>{{Cite web |last= |date=2025-06-05 |title=Marburger Anglist Professor Kreyer erhält Preis für ausgezeichnete Lehre |url=https://www.op-marburg.de/lokales/marburg-biedenkopf/marburg/marburger-anglist-professor-kreyer-erhaelt-preis-fuer-ausgezeichnete-lehre-IVUZOSGCCREO3F2XUUNLS5N474.html |access-date=2025-09-09 |website=[[Oberhessische Presse]] |language=de}}</ref>
=== Instituisaun sientífika sira ===
Universidade Marburg simu instituisaun akadémika no peskiza oioin:
* Akademia Peskiza Universidade Marburg (MARA) apoia peskizadór sira iha kareira inisiál liuhosi formasaun interdisiplinár, finansiamentu, no servisu dezenvolvimentu kareira nian. <ref>{{Cite news |date=2010-12-23 |title=Bedingungen für Promotion transparent machen |work=Gießener Anzeiger |language=de}}</ref>
* Sentru Dokumentasaun Alemaña ba Istória Arte nian (Bildarchiv Foto Marburg) maka arkivu imajen ida ne'ebé boot liu iha Europa ba arte no arkitetura, ne'ebé fornese rekursu no servisu sira ba muzeu sira, matenek-na'in sira, no editór sira. <ref>{{Cite news |last=Brockschmidt |first=Rolf |date=2023-09-02 |title=Für den Fall der Fälle |work=[[Der Tagesspiegel]] |pages=34 |language=de}}</ref>
* Sentru Demokrasia Hesse koordena esforsu sira hasoru estremizmu direita no oferese programa Mestradu ida iha akonsellamentu iha kontestu ne'ebá. <ref>{{Cite news |last=Haschink |first=Gregor |date=2022-05-11 |title=Opferberatung studieren |work=[[Frankfurter Rundschau]] |language=de}}</ref>
* Sentru Peskiza Deutscher Sprachatlas dokumenta no estuda variedade rejionál sira hosi lian Alemaña no mantein arkivu ida ne'ebé luan hosi materiál dialetu sira hosi fatin 50,000 resin. <ref>{{Cite news |last=Rummel |first=Silke |date=2014-09-09 |title=Forschungszentrum Deutscher Sprachatlas |work=Darmstädter Echo |language=de}}</ref>
* Sentru Estudu Jéneru no Peskiza Feminista, harii iha 2001, promove serbisu interdisiplinár iha estudu jéneru no koordena programa akadémiku sira ne'ebé iha relasaun. <ref>{{Cite news |date=2017-11-10 |title=Bildungsministerium gibt knapp eine Million Euro für Gender-Forschung |work=[[Oberhessische Presse]] |language=de}}</ref>
* Jardim Botániku, ne'ebé lokaliza iha kampus Lahnberge, ho luan hektar 20 no inklui kolesaun ai-horis ne'ebé luan, área peskiza nian, no estufa sira; Jardim Botániku Antigu agora serve hanesan parke públiku. <ref>{{Cite web |last=Ahlers |first=Wolfram |date=2021-08-20 |title=Botanischer Garten in Marburg muss renoviert werden |url=https://www.faz.net/aktuell/rhein-main/region-und-hessen/botanischer-garten-in-marburg-muss-renoviert-werden-17488145.html |access-date=2025-09-09 |website=[[Frankfurter Allgemeine Zeitung]] |language=de}}</ref>
* SYNMIKRO, Sentru ba Mikrobiolojia Sintétika, avansa peskiza kona-ba enjeñaria funsaun mikrobiál sira, ho aplikasaun sira iha bioteknolojia no medisina, iha kolaborasaun ho Sosiedade Max Planck . <ref>{{Cite news |last=Hitzeroth |first=Manfred |date=2018-11-10 |title=Sieg mit mikrobiologischem Baukasten |work=[[Oberhessische Presse]] |language=de}}</ref>
== Estudante sira ==
[[Imajen:Alte_Universität_(Marburg)_2.jpg|miniaturadaimagem|''Universidade Antiga'', ne'ebé maka iha igreja universitáriu, departamentu ba estudu relijiozu sira no sala palestra reprezentativu ida]]
Students at Marburg University are represented by the General Student Committee (AStA) and the Student Parliament (StuPa), with additional representation at faculty level through student councils. The universal transit pass (semester ticket), negotiated by the AStA, allows students extensive access to public transport in Hesse and neighbouring areas, including use of selected InterCity (IC) and InterCity Express (ICE) trains.<ref>{{Cite news |date=2018-10-24 |title=ICE: Für Asta war Ticket-Reichweite zentraler Punkt |work=[[Oberhessische Presse]] |language=de}}</ref><ref>{{Cite news |last=Robinson |first=Patrick |date=2025-03-06 |title=Nach der Prüfung ist vor der Prüfung |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Universidade oferese rezidénsia oioin ba estudante sira, inklui Christian-Wolff-Haus, <ref>{{Cite news |date=2024-11-16 |title=Kernsanierung für Christian-Wolff-Haus |work=[[Oberhessische Presse]] |pages=5 |language=de}}</ref> istóriku Collegium Philippinum, <ref>{{Cite news |date=2025-09-08 |title=Felina Karle bekommt dank jahrhundertealten Rechts einen Platz im Collegium Philippinum in Marburg |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref> no Vilmarhaus, ne'ebé maka jere hosi Igreja Protestante. Konrad-Biesalski-Haus nafatin notavel ba nia asesibilidade pioneiru ba estudante sira ho defisiénsia fíziku. <ref>{{Cite news |last=Maas |first=Marie-Charlotte |date=2012-06-14 |title=Gleichheit unter Ungleichen |work=[[Die Zeit]] |pages=71 |language=de}}</ref>
== Antigu alunu no profesór sira ne'ebé notavel ==
=== Sientista naturál sira ===
<templatestyles src="Div col/styles.css" />
=== Teólogu sira ===
Marburg sempre koñesidu hanesan universidade ida ne'ebé foka ba umanidade . Ida-ne'e mantein forsa ne'e, liuliu iha Filozofia no Teolojia ba tempu naruk hafoin Funu Mundiál Daruak . <ref>{{Cite web |last=Peter |first=Lothar |date=2020-05-02 |title=Ein Partisan im Land der Mitläufer |url=https://jacobin.de/artikel/wolfgang-abendroth-marburg-marxismus-partisanenprofessor |access-date=2025-09-09 |website=Jacobin Magazin |language=de}}</ref> <ref>{{Cite news |last=Sieg |first=Ulrich |date=2005-02-05 |title=Aus dem Geiste Kants Hermann Cohen, Paul Natorp und der Erste Weltkrieg |work=[[Neue Zürcher Zeitung]] |pages=64 |language=de}}</ref><templatestyles src="Div col/styles.css" />
=== Filózofu sira ===
=== Seluk ===
<templatestyles src="Div col/styles.css" />
[[Kategoria:Páginas com traduções não revistas]]
eir9dlbz93n201gd62jyl94agskd65j
74029
73854
2026-07-12T00:18:36Z
InternetArchiveBot
8082
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
74029
wikitext
text/x-wiki
== Introdusaun ==
[[Imajen:Marburg asv2022-02 img02 Old University.jpg|miniaturadaimagem]]
'''Universidade Marburg''' mak universidade peskiza públika ida ne'ebé lokaliza iha Marburg, Alemaña. Universidade ne'e harii iha tinan 1527 hosi Filipe I, Landgrave hosi Hesse, no konsidera hanesan universidade ida ne'ebé tuan liu iha Alemaña no universidade protestante tuan liu ne'ebé sei kontinua funsiona to'o ohin loron iha mundu.
Ohin loron, Universidade Marburg mak universidade públika ida ne'ebé pertence ba Estadu Hesse, no la iha afiliasaun relijioza.
Universidade Marburg iha estudante hamutuk 21.162 iha tinan akademiku 2024/2025. Universidade ne'e lokaliza iha Marburg, Alemaña, no oferese programa estudu internasionál oioin. Aleinde ne'e, universidade ne'e mós partisipa iha programa Erasmus, ne'ebé fó oportunidade ba estudante sira atu tuir programa troka estudante ho universidade sira seluk iha Europa.
== Istória ==
=== Tinan sira iha Fundasaun nian ===
Iha loron 1 fulan-Jullu 1527, xefe rai-na'in nian Johann Feige inaugura oficialmente Universidade Marburg, ne'ebé harii husi Landgrave Philip I liuhusi dekretu ida iha loron 30 fulan Maiu tinan ne'ebá. Iha tempu inaugurasaun, universidade ne'e iha profesór 11 no estudante 88.
Reitór dahuluk Universidade Marburg mak Johannes Eisermann, ne'ebé koñesidu mós ho naran latín ''Ferrarius Montanus''. Nia hanorin direitu no servisu hanesan asesór ba tribunál landgravial iha Amöneburg. Iha tinan ne'ebá duni, Philip I fó ba universidade ne'e liberdade akadémika ne'ebé presiza atu hala'o nia atividade sira.
Iha loron 4 fulan Outubru 1541, Universidade Marburg hetan independénsia finanseira liuhosi eskritura dotasaun. Tinan tuirmai, Landgrave Philip I simu priviléjiu universitáriu hosi Imperadór Carlos V durante Dieta Imperiál iha Regensburg.
Iha tempu dahuluk, Universidade Marburg uza edifísiu monástiku antigu sira ne'ebé uluk pertense ba Dominikanu sira, Fransiskanu sira, no Irmaun sira husi Vida Komún.
Landgrave Philip I mós fó ba universidade priviléjiu oioin, inklui direitu atu haruka reprezentante ida ba asembleia rejionál, no izensaun hosi taxa no impostu ba membru universitáriu sira.
Iha tinan 1529, Landgrave Philip I sai uma-na'in ba Marburg Colloquy, debate relijiozu ida entre Martin Luther, Ulrich Zwingli, no Philip Melanchthon.
Reputasaun husi fakuldade teolójia Universidade Marburg atrai estudante internasionál sira, liuliu husi Suisa, Dinamarka, Suésia, Olanda, no Eskósia. Entre estudante sira ne'e iha Patrick Hamilton, ne'ebé estuda iha Marburg ba tempu badak.
Durante sékulu dahuluk universidade nian, surtu moras oioin, hanesan moras suar Inglés no peste, obriga universidade atu muda temporariamente ba sidade sira ne'ebé besik.
=== sékulu XVI no XVII ===
To'o nia mate iha tinan 1560, Johann Friedrich Dryander kaer kadeira medisina iha Universidade Marburg. Iha loron 15 fulan-Novembru 1565, Landgrave William IV hosi Hesse-Kassel nomeia Georg Marius nu'udar profesór, lahó hetan uluk konsentimentu formál husi universidade.
Iha tinan 1566, universidade harii kadeira medisina daruak, ne'ebé prenxe husi Victorinus Schönfeldt. Antes ne'e, nia serbisu nu'udar profesór matemátika iha universidade.
Entre tinan 1580 no 1628, Rudolph Goclenius maka profesór filozofia, lójika, no étika iha Universidade Marburg.
Bainhira Landgrave Maurice husi Hesse-Kassel hetan eransa husi Landgraviate Hesse-Marburg iha tinan 1604, nia konverte ba Calvinizmu iha tinan tuirmai. Tanba ne'e, universidade hetan obrigasaun atu adopta konfisaun Reformada, ne'ebé nia mantein to'o nia alinhamentu konfisionál nia rohan iha tinan 1866.
Mudansa konfisionál ida ne'e lori profesór Luteranu barak ba Universidade Giessen, ne'ebé foin harii iha tinan 1607. Iha tinan 1625, bainhira Marburg temporariamente tama iha okos Hesse-Darmstadt Luteranu, Universidade Giessen fila fali ba Universidade Marburg no depois taka.
Iha loron 24 fulan-Juñu 1653, universidade ne'e loke fali husi William VI husi Hesse-Kassel, ne'ebé muda fali universidade estadu nian husi Kassel ba Marburg, nune'e taka Universidade Kassel. Iha tinan sira tuirmai, universidade hasoru tempu difisil sira tanba konfisionalizasaun ne'ebé la'o hela no susar finanseiru.
=== sékulu 18 ===
Iha tinan 1723, filózofu Christian Wolff hetan nomeasaun ba kadeira ida iha Universidade Marburg hafoin hetan espulsaun hosi Halle hosi Frederick William I. Maski hetan opozisaun hosi parte sira hosi fakuldade teolójika, Wolff hanorin iha Marburg to'o 1740 ho protesaun hosi Landgrave, molok hetan bolu fali ba Prússia hosi Frederick the Great . Funu Tinan Hitu nian ikusmai perturba universidade, tanba Hesse sai hanesan kampu funu nian no Marburg hetan fortifikasaun.
Iha tinan 1785, universidade ne'e iha estatutu legál no polítiku espesiál: nia iha nia jurisdisaun rasik, dotasaun ekleziástiku sira, no kadeira ida iha asembleia rejionál. Landgrave hala'o knaar nu'udar reitór, ministru finansas nu'udar kuradór, no senadu kompostu hosi reprezentante sira hosi teolojia, lei, medisina, no filozofia, hamutuk ho instrutór linguajen no tékniku sira.
Universidade Marburg hetan kreximentu foun durante era Napoleónika . Iha tinan 1807, Eleitoradu Hesse nian sai parte hosi Reinu Westfalia ne'ebé foin harii, estadu satélite fransés ida. Maski universidade oioin iha reinu foun nia laran taka, Marburg hetan salvasaun no benefísiu finanseiru hosi redistribuisaun rekursu sira-nian, liuliu hafoin taka universidade sira iha Rinteln no Helmstedt . Biblioteka universitáriu habelar maka'as liuhosi transferénsia sira hosi Rinteln.
Iha tinan 1810, autoridade sira Westfalia nian bandu estudante sira atu uza kór no farda rejionál sira, hodi hamosu konflitu ne'ebé naruk entre estudante sira no administrasaun. Iha Maiu 1811, estudante 200 resin halo protestu hodi marxa ba Gladenbach, ne'ebé lori ba libertasaun estudante ida ne'ebé dadur no inkéritu ofisiál ida.
Hafoin retornu hosi prínsipe-eleitor iha tinan 1813, reforma barak maka inverte, inklui disolusaun hosi estrutura administrativu sira hosi Westfalia no finansiamentu sentralizadu. Influensiadu husi Funu Libertasaun nian, movimentu estudante sira ne'ebé promove unidade nasionál no ideia liberál sira hetan trasaun iha Marburg. Iha tinan 1816, sosiedade estudante ''Teutonia nian'' hamutuk ho asosiasaun estudante lokál sira hodi forma ''Germania Marburgensis'', maski nia dezenvolvimentu hetan impedimentu hosi Dekretu Carlsbad nian to'o tinan 1850. Iha prínsipe-eleitór Wilhelm I nia okos, restrisaun relijioza sira sai kmaan, hodi permite nomeasaun ba profesór katóliku sira hamutuk ho luteranu sira. Wilhelm II depois fó igualdade konfisionál tomak, ne'ebé kontribui ba aumentu iha matríkula. Durante dékada 1820 no dékada sira tuirmai, universidade habelar nia instalasaun sira, inklui jardín botániku foun, biblioteka, laboratóriu kímiku, teatru anatómiku, observatóriu, no klínika sira. Klínika feto nian, hahú iha Hessian nia ukun, remata iha tinan 1867.
Tuir aneksasaun Hesse nian hosi Prússia iha tinan 1866, universidade tranzita hosi instituisaun rejionál ida ba parte ida hosi sistema edukasaun Prússia nian, hodi hetan benefísiu hosi ninia reforma sira. Iha tempu ne'ebá, iha estudante na'in 264 (na'in 22 hosi li'ur Hesse) no profesór na'in 51.
Tanba limitasaun propriedade no preferénsia atu uza edifísiu estadu nian ne'ebé eziste, universidade desentralizadu nafatin iha sidade tomak envezde adota modelu kampus unifikadu. Númeru estudante sira aumenta beibeik, to'o 500 iha 1880 no liu 1,000 iha 1887.
=== sékulu XX ===
Iha tinan 1909, matríkula estudante nian iha Universidade Marburg aumenta dala rua. Maski feto sira seidauk hetan admisaun formál, Tadako Urata simu grau doutoramentu iha medisina iha tinan 1905 tuir provizaun espesiál ida. Onra akadémika dahuluk ne'ebé fó ba feto ida iha universidade fó ona iha tinan 1827 ba Daniel Jeanne Wyttenbach, ne'ebé simu doutoramentu onoráriu ida ba nia hakerek filozófiku sira kona-ba estétika. Admisaun formál ba feto sira hahú iha semestre invernu 1908/09 ho estudante feto na'in 26; sira nia númeru sa'e ba 206 bainhira mosu Funu Mundiál I.
Funu marka interupsaun boot ida. Enkuantu estudante mane 2,258 maka rejista iha veraun 1914, númeru ne'e tun ba 1,899 iha semestre tuirmai, ho de'it 478 ne'ebé tuir palestra sira. Iha fulan tolu nia laran funu nian, universidade lakon ona estudante na'in 55.
=== Períodu Nazi ===
Iha tinan 1926, kapítulu ida hosi Liga Nasionál Sosialista Estudante Alemaña nian (NSDStB) harii iha Marburg. Iha tinan 1931, ida-ne'e kaer maioria iha konsellu estudante nian no lidera ida-ne'e hahú hosi ne'ebá. Hafoin Nazi sira sa'e ba podér iha tinan 1933, profesór na'in 21—liu désimu ida hosi pesoál profesór sira—hetan demisaun tanba razaun polítika ka rasiál tuir lei sira funsaun públika nian. Entre sira maka matenek-na'in sira ne'ebé notavel hanesan ekonomista Wilhelm Röpke, filólogu romanu Erich Auerbach, no filozofu Karl Löwith . Profesór Hermann Jacobsohn, linguista ida, oho-an iha fulan-Abril tinan 1933 hafoin nia suspensaun. <ref name=":2" /> <ref>{{Cite web |date=1933-05-01 |title=Professor Kills Self |url=https://www.jta.org/archive/professor-kills-self |access-date=2025-09-09 |website=Jewish Telegraphic Agency |language=en}}</ref> Kuota rasial no jéneru foun sira impoin ba estudante sira, limita matríkula Judeu nian ba 1.5% iha jerál no 5% ba estudante sira tinan dahuluk nian. Proporsaun estudante feto sira nian limitadu temporariamente ba 10%.
=== Depois 1945 ===
Tuir 1945, universidade haree kreximentu lalais iha númeru estudante sira. Atu akomoda demanda, esforsu espansaun sira hahú iha dékada 1960, inklui edifísiu administrativu foun, jantar, no palestra sira, no muda Fakuldade Filozofia nian. Fakuldade Siénsia Naturál ida harii iha kampus Lahnberge ne'ebé foin dezenvolve, ne'ebé nia edifísiu sira maka entre sira dahuluk iha Alemaña ne'ebé tuir modelu konstrusaun prefabrikadu ne'ebé koñesidu hanesan ''Sistema Marburg'' .
=== sékulu 21 ===
Eventu nasionál ida ne'ebé maka laiha presedente akontese iha loron 1 fulan-Janeiru tinan 2006, bainhira ospitál universitáriu hetan privatizasaun no fa'an ba Rhön-Klinikum AG, empreza privadu ida kuidadu saúde nian, hafoin nia fuzaun ho Ospitál Universitáriu Gießen nian. <ref>{{Cite news |last=Conrad |first=Till |date=2022-05-16 |title=Die langen Kämpfe ums Krankenhaus |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Iha tinan 2012 universidade loke muzeu kímika interativu dahuluk alemaun nian, ho naran ''Chemicum'' . Ninia programa kursu esperimentál ho objetivu atu enkoraja foin-sa'e sira atu buka kareira iha siénsia. <ref name="chemicum-news">{{Cite web |date=12 February 2011 |title="Chemikum Marburg" hat ein dauerhaftes Domizil |url=https://idw-online.de/pages/en/news454460 |access-date=23 January 2012 |publisher=Informationsdienst Wissenschaft }} {{Webarchive|url=https://web.archive.org/web/20141111075522/https://idw-online.de/pages/en/news454460 |date=11 November 2014 }}</ref>
== Estrutura ==
[[Imajen:Marburg_UB_Neubau_Eingang_Alter_Botanischer_Garten_von_OSO.jpg|miniaturadaimagem|Biblioteka universitáriu]]
[[Imajen:Uni_Marburg_Lahnberge_04.jpg|miniaturadaimagem|''Kampus Lahnberge'' dedika ba siénsia naturál sira. Imajen hatudu ''Edifísiu ho Objetivu Múltiplu'', uma ba Departamentu Matemátika no Siénsia Informátika, no mós laboratóriu sira ba peskiza iha siénsia materiál no kímika fízika]]
=== Departamentu sira ===
Universidade Marburg fahe ba 16 fakuldade. Iha nia tempu dahuluk, universidade ne'e kompostu husi Fakuldade Teolojia, Fakuldade Medisina, Fakuldade Direitu, no Fakuldade Filosofia. Husi Fakuldade Filosofia, Fakuldade Matemátika no Siénsia Naturál separa iha tinan 1964.
Iha tinan 1970, tuir Lei Edukasaun Asentu-Superiór Hesse nian, fakuldade sira ne'e hetan reestruturasaun sai fakuldade 20. Depois husi fusaun sira ne'ebé akontese liu husi tinan 1997, organizasaun atual kompostu husi 16 fakuldade, ne'ebé numerasaun la tuir ona sequência kontinua. [1]
Hanesan parte ida hosi Prosesu Bologna nian, Universidade introdús númeru boot ida hosi programa foun sira Lisensiatura no Mestradu nian. Iha tempu hanesan, programa lisensiatura tradisionál sira ho Majistradu, Diplom no kualifikasaun sira ne'ebé hanesan hapara tiha. <ref>{{Cite web |date=2007-11-06 |title=Marburger Lehrer informieren sich über neues Studiensystem |url=https://www.uni-marburg.de/archive/news/2007-11-6-marburger-lehrer-informieren-sich-uber-neues-studiensystem.html |access-date=2025-09-09 |website=Uni Marburg}}</ref>
=== Institutu no muzeu asosiadu sira ===
Universidade koopera ho institutu afiliadu sira tuirmai:
* Fundasaun Christoph Dornier ba Psikolojia Klínika <ref>{{Cite news |last=Dietrich |first=Simon |date=1991-10-23 |title=Philipps-Universitaet. Viele Kooperationen mit Unternehmen |work=[[Handelsblatt]] |language=de}}</ref>
* Sentru Peskiza ba Hakerek Pesoál sira <ref>{{Cite news |date=2012-09-20 |title=Aufschlussreiche Würdigungen Verstorbener |work=[[Ostthüringer Zeitung]] |pages=14 |language=de}}</ref>
* Institutu Hans von Soden ba Peskiza Teolójika <ref>{{Cite news |date=2003-11-11 |title=Universität Marburg Neues Institut zur Förderung von Theologen |work=[[Frankfurter Rundschau]] |pages=34 |language=de}}</ref>
* Jestaun Kuidadu Saúde eV <ref>{{Cite news |date=2005-06-18 |title=Gesundheitsmanagement |work=[[Salzburger Nachrichten]] |pages=39 |language=de}}</ref>
* Institutu ba Estudu Kooperativu sira (fundasaun legál privadu ida) <ref>{{Cite news |last=Fehl |first=Ulrich |date=1998-01-26 |title=Im Rahmen marktwirtschaftlicher Ordnung |work=[[Frankfurter Allgemeine Zeitung]] |pages=14 |language=de}}</ref>
* Institutu ba Terapia Komportamentál no Medisina Komportamentál (IVV) <ref>{{Cite news |date=2008-11-21 |title=Vortrag über Selbstverletzungen bei Jugendlichen |work=Gießener Anzeiger |language=de}}</ref>
* Institutu ba Étika Negósiu no Sosiál <ref>{{Cite news |last=Meyer |first=Claus-Peter |date=2001-11-29 |title=Debeka als Arbeitgeber ausgezeichnet |work=VersicherungsJournal Deutschland |language=de}}</ref>
* Semináriu Katóliku-Teolójiku Fakuldade Teolojia nian iha Fulda <ref>{{Cite news |date=2020-10-16 |title=Keine Priester mehr aus Fulda? |work=[[Frankfurter Allgemeine Zeitung]] |pages=5 |language=de}}</ref>
Muzeu sira tuirmai ne'e iha afiliasaun ho universidade:
* Muzeu Mineralójiku hosi Universidade Philipps Marburg <ref>{{Cite news |date=2013-08-27 |title=Bedeutende Sammlung von Mineralien gestiftet |work=Oberhessische Zeitung |language=de}}</ref>
* Muzeu Arte no Istória Kulturál <ref>{{Cite web |title=Kunstmuseum |url=https://www.uni-marburg.de/de/museum/kunstmuseum |access-date=2025-09-09 |website=Uni Marburg |language=de}}</ref> <ref>{{Cite news |last=Schwarzwäller |first=Nadja |date=2018-06-19 |title=Verein macht sich stark für Museum |work=[[Oberhessische Presse]] |language=de}}</ref>
=== Kolesaun sira husi universidade (selesaun) ===
* Alter Botanischer Garten Marburg, the university's old [[botanical garden]]
* Botanischer Garten Marburg, the university's current botanical garden
* Forschungsinstitut Lichtbildarchiv älterer Originalurkunden bis 1250 (Collection of photographs taken from medieval charters)
* Bildarchiv Foto Marburg (German national picture archive of arts)
* Religionskundliche Sammlung (Collection of religious objects)
* Deutscher Sprachatlas (Linguistic Atlas of Germany)<ref>{{Cite web |title=Research Center Deutscher Sprachatlas |url=https://www.uni-marburg.de/en/fb09/dsa |access-date=1 August 2024}}</ref>
* Mineralogisches Museum (Museum of Mineralogy)
* Museum für Kunst und Kulturgeschichte (Museum of Arts)
* Museum Anatomicum (Museum of Anatomy and Medical History, currently closed)<ref>{{Cite news |last=Pfaffel |first=Dorothee |date=2025-04-04 |title=Wollen Sie das sehen? |work=Neuburger Rundschau |pages=25 |language=de}}</ref>
* University Archive https://www.uni-marburg.de/de/uniarchiv
== Peskiza ==
=== Klasifikasaun sira ===
Departamentu sira psikolojia no jeografia nian atinji ona estatutu Grupu Exelénsia nian iha Klasifikasaun Exelénsia CHE nian iha Europa tomak 2009.<templatestyles src="Module:Infobox/styles.css"></templatestyles>Tuir QS World University Rankings of 2024, instituisaun ne'e situa iha intervalu 761-770 globalmente, no nia kaer pozisaun 40-41 nasionalmente. Tuir THE World University Rankings of 2024, nia hetan klasifikasaun iha grupu 401-500 iha nivel mundiál, enkuantu nia klasifikasaun nasionál monu entre 37 no 41. Iha ARWU World Rankings of 2023, universidade ne'e lista iha 401-500 iha mundu tomak no nia hetan pozisaun entre 25 no nasionál 31.
=== Sentru Peskiza Kolaborativu sira ===
Universidade ne'e signifikativu ba nia peskiza siénsia-moris nian maibé mós uma ba sentru ida hosi sentru uitoan ne'ebé hala'o peskiza kona-ba Médiu Oriente, CNMS ( Sentru ba Estudu sira Médiu Oriente no Besik nian ).
Peskiza universidade nian ilustra hosi nia partisipasaun iha SFB oioin ( ''Sonderforschungsbereiche'' ). Sentru peskiza kolaborativu sira-ne'e hetan finansiamentu hosi Fundasaun Siénsia Alemaña ''DFG'' . Sira enkoraja peskizadór sira atu hakat liu baliza sira hosi dixiplina sira, institutu sira, departamentu sira no fakuldade sira iha universidade partisipante nia laran. SFB atuál iha Universidade Marburg maka: <ref>{{Cite web |title=Sonderforschungsbereiche |url=https://www.uni-marburg.de/de/forschung/spitzenfoerderung/sfb |access-date=9 May 2020 |website=Philipps-Universität Marburg}}</ref>
* SFB 1083 – Estrutura no Dinámika Interfase Internu sira-nian (hahú iha 2013, iha kooperasaun ho Sentru Fízika Internasionál Donostia San Sebastián ) <ref>{{Cite web |date=2025-04-09 |title=SFB1083 |url=https://www.internal-interfaces.de/ |access-date=2025-09-09 |website=Internal Interfaces |language=en}}</ref>
* SFB/TRR 138 – Dinámika Seguransa nian: Forma sira Titulizasaun nian iha Perspetiva Istóriku (hahú iha 2014)
* CRC/TRR 393 – Trajetória sira husi Transtornu Afetivu sira (dezde 2024)
=== Manan-na'in sira Prémiu Nobel nian ===
Entre 1901 no 2011, ema na'in sanulu-resin-ida ne'ebé asosiadu ho Universidade Marburg liuhosi estudu ka hanorin hetan Prémiu Nobel[[File:Nobel_Prize.png|15x15px]] : <ref>{{Cite web |title=Nobelpreisträger |url=https://www.uni-marburg.de/de/universitaet/profil/geschichte/nobelpreistraeger |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 1901: Emil von Behring (Medicine)<ref>{{Cite news |last=Warnecke |first=Christiane |date=2009-06-13 |title=Mit Emil von Behring fing alles an |work=[[Frankfurter Neue Presse]] |pages=1 |language=de}}</ref>
* 1909: Ferdinand Braun (Physics)
* 1910: Albrecht Kossel (Medicine)
* 1930: Hans Fischer (Chemistry)
* 1936: Otto Loewi (Medicine)
* 1939: Adolf Butenandt (Chemistry)
* 1944: Otto Hahn (Chemistry)<ref>{{Cite news |last=Hanke |first=Franz-Josef |date=2008-06-23 |title=Ehre, wem Ehre gebührt – Wissenschaftspreise ehren die Forscher und nutzen auch wieder der Wissenschaft |work=[[Badische Zeitung]] |pages=12 |language=de}}</ref>
* 1958: Boris Pasternak (Literature)
* 1963: Karl Ziegler (Chemistry)
* 1979: Georg Wittig (Chemistry)
* 2011: Jules Hoffmann (Medicine)<ref>{{Cite news |last=Breu |first=Michael |date=2011-10-04 |title=Nobelpreis geht an einen Toten. Medizinpreis erstmals posthum vergeben |work=[[Basler Zeitung]] |pages=12 |language=de}}</ref>
=== Manan-na'in sira Prémiu Leibniz nian ===
Prémiu Gottfried Wilhelm Leibniz fó ba peskizadór sira tuirmai ne'ebé iha afiliasaun ho Universidade Marburg: <ref>{{Cite news |date=2021-12-10 |title=Trägerinnen und Träger des Leibnizpreises an der Philipps-Universität Marburg |work=[[Oberhessische Presse]] |pages=3 |language=de}}</ref>
* 1987: Rudolf K. Thauer – Mikrobiolojia Biokímika
* 1989: Manfred T. Reetz – Kímika Orgánika
* 1991: Ernst O. Göbel – Fízika Estadu-Sólidu
* 1991: Rolf Müller – Biokímika / Biolojia Molekulár
* 1996: Reinhard Lührmann – Biolojia Molekulár
* 1997: Paul Knochel – Kímika Organometálika
* 1997: Stephan W. Koch – Fízika Teórika
* 2002: Bruno Eckhardt – Fízika Teórika
* 2003: Roland Lill – Biolojia Sélula / Biokímika
* 2006: Gyburg Radke (kaben ho Uhlmann) – Filolójia no Filozofia Klásiku
* 2011: Friederike Pannewick – Estudu Árabe
* 2022: Stefanie Dehnen – Kímika Inorgánika
* 2024: Tobias Erb – Mikrobiolojia Sintétika
=== Prémiu Ars legend ba ensinu universitáriu ne'ebé di'ak tebes ===
Prémiu Ars legendi ba Ensinu Universitáriu Exelente, prémiu aas liu iha Alemaña iha área ensinu superiór nian, ne'ebé aprezenta hosi Stifterverband für die Deutsche Wissenschaft no Konferénsia Reitór Alemaña nian (HRK), fó ba ema sira tuirmai ne'ebé hanorin iha Universidade Marburg: <ref>{{Cite web |last= |title=Ars legendi-Preis |url=https://www.stifterverband.org/ars-legendi-preis |access-date=2025-09-09 |website=Stifterverband |language=de}}</ref> <ref name=":3">{{Cite web |title=Preisträger*innen |url=https://www.uni-marburg.de/de/universitaet/profil/zahlen-fakten-preise/preise |access-date=2025-09-08 |website=Uni Marburg |language=de}}</ref>
* 2010: Jürgen Schäfer (Prémiu Fakuldade ba Medisina)
* 2015: Jürgen Handke (ba "Ensinu no Aprendizajen Dijitál")
* 2016: Ilka Agricola (Prémiu Fakuldade nian ba Matemátika)
* 2017: Stefan Bösner (Prémiu Fakuldade ba Medisina)
* 2018: Evelyn Korn (ba "Alineamentu Konstrutivu")
* 2024: Rolf Kreyer (ba "Teoria no prátika linguístika Inglés nian kombinadu") <ref>{{Cite web |last= |date=2025-06-05 |title=Marburger Anglist Professor Kreyer erhält Preis für ausgezeichnete Lehre |url=https://www.op-marburg.de/lokales/marburg-biedenkopf/marburg/marburger-anglist-professor-kreyer-erhaelt-preis-fuer-ausgezeichnete-lehre-IVUZOSGCCREO3F2XUUNLS5N474.html |access-date=2025-09-09 |website=[[Oberhessische Presse]] |language=de}}</ref>
=== Instituisaun sientífika sira ===
Universidade Marburg simu instituisaun akadémika no peskiza oioin:
* Akademia Peskiza Universidade Marburg (MARA) apoia peskizadór sira iha kareira inisiál liuhosi formasaun interdisiplinár, finansiamentu, no servisu dezenvolvimentu kareira nian. <ref>{{Cite news |date=2010-12-23 |title=Bedingungen für Promotion transparent machen |work=Gießener Anzeiger |language=de}}</ref>
* Sentru Dokumentasaun Alemaña ba Istória Arte nian (Bildarchiv Foto Marburg) maka arkivu imajen ida ne'ebé boot liu iha Europa ba arte no arkitetura, ne'ebé fornese rekursu no servisu sira ba muzeu sira, matenek-na'in sira, no editór sira. <ref>{{Cite news |last=Brockschmidt |first=Rolf |date=2023-09-02 |title=Für den Fall der Fälle |work=[[Der Tagesspiegel]] |pages=34 |language=de}}</ref>
* Sentru Demokrasia Hesse koordena esforsu sira hasoru estremizmu direita no oferese programa Mestradu ida iha akonsellamentu iha kontestu ne'ebá. <ref>{{Cite news |last=Haschink |first=Gregor |date=2022-05-11 |title=Opferberatung studieren |work=[[Frankfurter Rundschau]] |language=de}}</ref>
* Sentru Peskiza Deutscher Sprachatlas dokumenta no estuda variedade rejionál sira hosi lian Alemaña no mantein arkivu ida ne'ebé luan hosi materiál dialetu sira hosi fatin 50,000 resin. <ref>{{Cite news |last=Rummel |first=Silke |date=2014-09-09 |title=Forschungszentrum Deutscher Sprachatlas |work=Darmstädter Echo |language=de}}</ref>
* Sentru Estudu Jéneru no Peskiza Feminista, harii iha 2001, promove serbisu interdisiplinár iha estudu jéneru no koordena programa akadémiku sira ne'ebé iha relasaun. <ref>{{Cite news |date=2017-11-10 |title=Bildungsministerium gibt knapp eine Million Euro für Gender-Forschung |work=[[Oberhessische Presse]] |language=de}}</ref>
* Jardim Botániku, ne'ebé lokaliza iha kampus Lahnberge, ho luan hektar 20 no inklui kolesaun ai-horis ne'ebé luan, área peskiza nian, no estufa sira; Jardim Botániku Antigu agora serve hanesan parke públiku. <ref>{{Cite web |last=Ahlers |first=Wolfram |date=2021-08-20 |title=Botanischer Garten in Marburg muss renoviert werden |url=https://www.faz.net/aktuell/rhein-main/region-und-hessen/botanischer-garten-in-marburg-muss-renoviert-werden-17488145.html |access-date=2025-09-09 |website=[[Frankfurter Allgemeine Zeitung]] |language=de}}</ref>
* SYNMIKRO, Sentru ba Mikrobiolojia Sintétika, avansa peskiza kona-ba enjeñaria funsaun mikrobiál sira, ho aplikasaun sira iha bioteknolojia no medisina, iha kolaborasaun ho Sosiedade Max Planck . <ref>{{Cite news |last=Hitzeroth |first=Manfred |date=2018-11-10 |title=Sieg mit mikrobiologischem Baukasten |work=[[Oberhessische Presse]] |language=de}}</ref>
== Estudante sira ==
[[Imajen:Alte_Universität_(Marburg)_2.jpg|miniaturadaimagem|''Universidade Antiga'', ne'ebé maka iha igreja universitáriu, departamentu ba estudu relijiozu sira no sala palestra reprezentativu ida]]
Students at Marburg University are represented by the General Student Committee (AStA) and the Student Parliament (StuPa), with additional representation at faculty level through student councils. The universal transit pass (semester ticket), negotiated by the AStA, allows students extensive access to public transport in Hesse and neighbouring areas, including use of selected InterCity (IC) and InterCity Express (ICE) trains.<ref>{{Cite news |date=2018-10-24 |title=ICE: Für Asta war Ticket-Reichweite zentraler Punkt |work=[[Oberhessische Presse]] |language=de}}</ref><ref>{{Cite news |last=Robinson |first=Patrick |date=2025-03-06 |title=Nach der Prüfung ist vor der Prüfung |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref>
Universidade oferese rezidénsia oioin ba estudante sira, inklui Christian-Wolff-Haus, <ref>{{Cite news |date=2024-11-16 |title=Kernsanierung für Christian-Wolff-Haus |work=[[Oberhessische Presse]] |pages=5 |language=de}}</ref> istóriku Collegium Philippinum, <ref>{{Cite news |date=2025-09-08 |title=Felina Karle bekommt dank jahrhundertealten Rechts einen Platz im Collegium Philippinum in Marburg |work=[[Oberhessische Presse]] |pages=4 |language=de}}</ref> no Vilmarhaus, ne'ebé maka jere hosi Igreja Protestante. Konrad-Biesalski-Haus nafatin notavel ba nia asesibilidade pioneiru ba estudante sira ho defisiénsia fíziku. <ref>{{Cite news |last=Maas |first=Marie-Charlotte |date=2012-06-14 |title=Gleichheit unter Ungleichen |work=[[Die Zeit]] |pages=71 |language=de}}</ref>
== Antigu alunu no profesór sira ne'ebé notavel ==
=== Sientista naturál sira ===
<templatestyles src="Div col/styles.css" />
=== Teólogu sira ===
Marburg sempre koñesidu hanesan universidade ida ne'ebé foka ba umanidade . Ida-ne'e mantein forsa ne'e, liuliu iha Filozofia no Teolojia ba tempu naruk hafoin Funu Mundiál Daruak . <ref>{{Cite web |last=Peter |first=Lothar |date=2020-05-02 |title=Ein Partisan im Land der Mitläufer |url=https://jacobin.de/artikel/wolfgang-abendroth-marburg-marxismus-partisanenprofessor |access-date=2025-09-09 |website=Jacobin Magazin |language=de}}</ref> <ref>{{Cite news |last=Sieg |first=Ulrich |date=2005-02-05 |title=Aus dem Geiste Kants Hermann Cohen, Paul Natorp und der Erste Weltkrieg |work=[[Neue Zürcher Zeitung]] |pages=64 |language=de}}</ref><templatestyles src="Div col/styles.css" />
=== Filózofu sira ===
=== Seluk ===
<templatestyles src="Div col/styles.css" />
[[Kategoria:Páginas com traduções não revistas]]
sq6d1531ltkybarieer058orwyorfwj
Claudio Osorio (jogadór futeból)
0
8608
73855
2026-07-11T14:04:34Z
Diamantino Soares
9475
Criada por tradução da página "[[:en:Special:Redirect/revision/1361677750|Claudio Osorio (footballer)]]"
73855
wikitext
text/x-wiki
<templatestyles src="Module:Infobox/styles.css"></templatestyles>
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube Cobh Ramblers iha Liga Primeira Divizaun Irlanda no ekipa nasionál Timor-Leste.
Moris iha Timor-Leste, Osorio reprezenta Inglaterra iha nivel juventude antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
3j9oxam2dzd1q8jt2gq5ig6mja031hm
73856
73855
2026-07-11T14:05:10Z
Diamantino Soares
9475
73856
wikitext
text/x-wiki
== Introdusaun <templatestyles src="Module:Infobox/styles.css"></templatestyles> ==
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube Cobh Ramblers iha Liga Primeira Divizaun Irlanda no ekipa nasionál Timor-Leste.
Moris iha Timor-Leste, Osorio reprezenta Inglaterra iha nivel juventude antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
q2ey2mytdf210ub6jyxiwpv3qq3dnr7
73857
73856
2026-07-11T14:06:44Z
Diamantino Soares
9475
/* Ligasaun esternu sira */
73857
wikitext
text/x-wiki
== Introdusaun <templatestyles src="Module:Infobox/styles.css"></templatestyles> ==
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube Cobh Ramblers iha Liga Primeira Divizaun Irlanda no ekipa nasionál Timor-Leste.
Moris iha Timor-Leste, Osorio reprezenta Inglaterra iha nivel juventude antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
<references group="https://en.wikipedia.org/wiki/Claudio_Osorio_(footballer)" />
c94s4e64j91mzboqqnjaqyxezqpr1em
73858
73857
2026-07-11T14:08:20Z
Diamantino Soares
9475
73858
wikitext
text/x-wiki
== Introdusaun ==
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube Cobh Ramblers iha Liga Primeira Divizaun Irlanda no ekipa nasionál Timor-Leste.
[[Imajen:Claudio Gomes Osorio.jpg|miniaturadaimagem|Claudio Osorio 8]]
Moris iha Timor-Leste, Osorio reprezenta Inglaterra iha nivel juventude antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
<references group="https://en.wikipedia.org/wiki/Claudio_Osorio_(footballer)" />
8x63v1vl42akx0z2q6do96jot100lxn
73859
73858
2026-07-11T14:09:28Z
Diamantino Soares
9475
/* kareira internasionál */
73859
wikitext
text/x-wiki
== Introdusaun ==
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube Cobh Ramblers iha Liga Primeira Divizaun Irlanda no ekipa nasionál Timor-Leste.
[[Imajen:Claudio Gomes Osorio.jpg|miniaturadaimagem|Claudio Osorio 8]]
Moris iha Timor-Leste, Osorio reprezenta Inglaterra iha nivel juventude antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
[[Imajen:East Timor-Brunei 8 October 2024 43.jpg|miniaturadaimagem|Jogador Selesaun Nasional Timor-Leste]]
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
<references group="https://en.wikipedia.org/wiki/Claudio_Osorio_(footballer)" />
8k8h9t504au3x40yei6x9ht3sl61u3k
73860
73859
2026-07-11T14:14:03Z
Diamantino Soares
9475
73860
wikitext
text/x-wiki
== Introdusaun ==
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube Cobh Ramblers iha Liga Primeira Divizaun Irlanda no ekipa nasionál Timor-Leste.
[[Imajen:Claudio Gomes Osorio.jpg|miniaturadaimagem|Claudio Osorio 8]]
Moris iha [[Timór Lorosa'e|Timor-Leste,]] Osorio reprezenta Inglaterra iha nivel juventude antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
[[Imajen:East Timor-Brunei 8 October 2024 43.jpg|miniaturadaimagem|Jogador Selesaun Nasional Timor-Leste]]
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
<references group="https://en.wikipedia.org/wiki/Claudio_Osorio_(footballer)" />
1g6u3irljg5i2j3xev59ak4puityyzi
73861
73860
2026-07-11T14:14:31Z
Diamantino Soares
9475
73861
wikitext
text/x-wiki
== Introdusaun ==
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube Cobh Ramblers iha Liga Primeira Divizaun Irlanda no ekipa nasionál Timor-Leste.
[[Imajen:Claudio Gomes Osorio.jpg|miniaturadaimagem|Claudio Osorio 8]]
Moris iha [[Timór Lorosa'e|Timor-Leste,]] Osorio reprezenta Inglaterra iha nivel junior antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
[[Imajen:East Timor-Brunei 8 October 2024 43.jpg|miniaturadaimagem|Jogador Selesaun Nasional Timor-Leste]]
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
<references group="https://en.wikipedia.org/wiki/Claudio_Osorio_(footballer)" />
av4tahsvh72pbr31twjbcb1tov93ohy
73862
73861
2026-07-11T14:17:43Z
Diamantino Soares
9475
73862
wikitext
text/x-wiki
== Introdusaun ==
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube [[:en:Cobh_Ramblers_F.C.|Cobh Ramblers]] iha [[:en:League_of_Ireland_First_Division|Liga Primeira Divizaun Irlanda]] no selesaun nasionál Timor-Leste.
[[Imajen:Claudio Gomes Osorio.jpg|miniaturadaimagem|Claudio Osorio 8]]
Moris iha [[Timór Lorosa'e|Timor-Leste,]] Osorio reprezenta Inglaterra iha nivel junior antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
[[Imajen:East Timor-Brunei 8 October 2024 43.jpg|miniaturadaimagem|Jogador Selesaun Nasional Timor-Leste]]
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
<references group="https://en.wikipedia.org/wiki/Claudio_Osorio_(footballer)" />
4r7ypnn62wzeuskk2y8sg0saiojz21i
73863
73862
2026-07-11T18:57:54Z
Robertsky
10424
/* Referénsia sira */
73863
wikitext
text/x-wiki
== Introdusaun ==
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube [[:en:Cobh_Ramblers_F.C.|Cobh Ramblers]] iha [[:en:League_of_Ireland_First_Division|Liga Primeira Divizaun Irlanda]] no selesaun nasionál Timor-Leste.
[[Imajen:Claudio Gomes Osorio.jpg|miniaturadaimagem|Claudio Osorio 8]]
Moris iha [[Timór Lorosa'e|Timor-Leste,]] Osorio reprezenta Inglaterra iha nivel junior antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading. [1] Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.
== kareira internasionál ==
=== Junior ===
[[Imajen:East Timor-Brunei 8 October 2024 43.jpg|miniaturadaimagem|Jogador Selesaun Nasional Timor-Leste]]
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman. <ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23 <ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
{{reflist}}
== Ligasaun esternu sira ==
* Claudio Osorio at Soccerway (archive)
[[Kategoria:Páginas com traduções não revistas]]
<references group="https://en.wikipedia.org/wiki/Claudio_Osorio_(footballer)" />
g15ye8wmivi14kudgic4jzbcpyi2dqb
74023
73863
2026-07-11T19:18:35Z
Robertsky
10424
fix refs
74023
wikitext
text/x-wiki
'''Claudio Gomes Osorio''' (moris iha loron 26 fulan-Setembru 2002) mak jogadór futeból profisionál ida ne'ebé joga hanesan médiu ofensivu ba klube {{Interlanguage link|Cobh Ramblers|en|Cobh_Ramblers_F.C.}} iha {{Interlanguage link|Liga Primeira Divizaun Irlanda|en|League_of_Ireland_First_Division}} no selesaun nasionál Timor-Leste.
[[Imajen:Claudio Gomes Osorio.jpg|miniaturadaimagem|Claudio Osorio 8]]
Moris iha [[Timór Lorosa'e|Timor-Leste,]] Osorio reprezenta Inglaterra iha nivel junior antes muda hodi reprezenta Timor-Leste iha nivel senior.
== Historia ==
Osorio moris iha Fatuhada, Timor-Leste, no muda ba Irlanda Norte bainhira nia tinan neen. Depois, nia muda ba Inglaterra bainhira nia tinan sanulu-resin-ida no tama iha Akademia Reading.<ref name="Timor-Leste Return"/><ref name="NFT Stats"/>
== Kareira klube ==
=== Reading ===
Iha Setembru 2019, Osorio asina nia kontratu profisionál dahuluk ho Reading.<ref>{{Cite web |url=https://readingfc.co.uk/ |title=Home of the Royals! |first=Reading |last=FC |website=Reading FC}}</ref> Nia halo nia estreia profisionál ba klube ne'e iha derrota 3–0 iha EFL Cup hasoru Swansea City iha loron 10 fulan-Agostu 2021.<ref>{{Cite web |url=https://int.soccerway.com/matches/2021/08/10/england/league-cup/reading-fc/swansea-city-afc/3524381/ |title=Reading vs. Swansea City - 10 August 2021 - Soccerway |website=int.soccerway.com}}</ref>
Iha loron 17 fulan-Maiu 2023, Reading anuncia katak Osorio sei sai husi klube bainhira nia kontratu remata iha rohan fulan-Juñu 2023.<ref>{{cite web |title=NEW DEALS OFFERED AS CONTRACTS COME TO THEIR CONCLUSION |url=https://www.readingfc.co.uk/news/2023/may/17/new-deals-offered-as-contracts-come-to-their-conclusion/ |website=readingfc.co.uk |publisher=Reading F.C. |access-date=17 May 2023 |date=17 May 2023}}</ref>
=== Karketu Dili ===
Iha fulan-Maiu 2024, fó sai katak Osorio fila ona ba Timor-Leste no asina kontratu ho Karketu Dili, antes nia reprezenta Timor-Leste iha nivel internasionál senior.<ref name="Timor-Leste Return">{{Cite web |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |first=Hortencio |last=Sanches |date=18 May 2024 |website=TATOLI Agência Noticiosa de Timor-Leste}}</ref>
=== Persipal Palu ===
Iha loron 27 fulan-Agostu 2025, klube Indonézia Persipal Palu fó sai kona-ba kontratasaun Osorio.<ref>{{cite web |title=WELCOME! @cgo.26 Show your prowess on the field, make dreams come true together!" |url=https://www.instagram.com/p/DN1jLI05shN/?img_index=2&igsh=MTJweDd1bTJ6ODJkbw== |website=Instagram |access-date=27 August 2025 |language=id}}</ref>
=== Cobh Ramblers fila fali ===
Iha loron 27 fulan-Janeiru 2026, klube Liga Primeira Divizaun Irlanda, Cobh Ramblers, anunsia retornu Osorio ba époka 2026.<ref>{{cite web |title=Claudio to Cobh confirmed! |url=https://www.instagram.com/p/DUBD2k9iIiL/?hl=en |website=instagram.com/cobhramblersfc/ |publisher=Cobh Ramblers F.C. Instagram |access-date=28 January 2026 |date=27 January 2026}}</ref>
== Kareira internasionál ==
=== Junior ===
[[Imajen:East Timor-Brunei 8 October 2024 43.jpg|miniaturadaimagem|Jogador Selesaun Nasional Timor-Leste]]
Osorio mak internasionál juventude ba Inglaterra. Nia reprezenta Inglaterra U15 iha jogu ida iha loron 17 fulan-Dezembru 2016, iha vitória 5–2 hasoru Turquia U15.<ref>{{Cite web |url=https://www.tff.org/Default.aspx?pageID=529&macID=178951 |title=England U15 - Turkey U15, 17.12.2016 friendly |website=www.tff.org}}</ref>
=== Seniór ===
Iha Maiu 2024, Osorio hetan bolu atu joga ba [[Ekipa futeból nasionál Timór Lorosa'e|selesaun Timor-Leste]], nasaun orijen hosi nia inan-aman.<ref>{{Cite web |date=18 May 2024 |title=Claudio Osorio sei fila hikas 'knua', reforsa selesaun nasionál |url=https://tatoli.tl/2024/05/18/claudio-osorio-sei-fila-hikas-knua-reforsa-selesaun-nasional/ |access-date=28 May 2024 |website=tatoli.tl |publisher=Tatoli |language=tet}}</ref>
Osorio marka nia golu internasionál dahuluk iha loron 9 fulan-Juñu tinan 2026 hasoru Brunei durante kualifikasaun ba Kampeonatu ASEAN 2026 iha Estádiu Kuala Lumpur .
== Estatístika kareira nian ==
=== Klube ===
{{updated|match played 19 June 2026}}<ref>{{Soccerway|new_id=osorio-claudio/lbJ6B7pS|accessdate=18 November 2025}}</ref>
{| class="wikitable" style="text-align: center"
|+Aparisaun no golu sira tuir klube, époka no kompetisaun
! rowspan="2" | Klube
! rowspan="2" | Tempu
! colspan="3" | Liga
! colspan="2" | Tasa Nasionál [ a ]
! colspan="2" | Tasa Liga [ b ]
! colspan="2" | Seluk
! colspan="2" | Totál
|-
! Divizaun
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
! Aplikasaun sira
! Metas
|-
| rowspan="4" | Lee
| 2020–21
| rowspan="3" | Kampeonatu
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
| 2021–22<ref name="sw">{{Soccerway|new_id=osorio-claudio/lbJ6B7pS|accessdate=18 November 2025}}</ref>
| 0
| 0
| 1
| 0
| 1
| 0
| colspan="2" | —
| 2
| 0
|-
| 2022–23<ref name="sw" />
| 0
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 0
| 0
|-
! colspan="2" | Totál
! 0
! 0
! 1
! 0
! 1
! 0
! colspan="2" | —
! 2
! 0
|-
| Cobh Ramblers (empresta)
| 2023
| Liga Irlanda nian Primeira Divizaun
| 9
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 9
| 0
|-
| rowspan="1" | Persipal Palu
| 2025–26
| rowspan="1" | Kampeonatu
| 3
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 3
| 0
|-
| Cobh Ramblers
| 2026
| Liga Irlanda nian Primeira Divizaun
| 6
| 0
| 0
| 0
| 0
| 0
| colspan="2" | —
| 6
| 0
|-
! colspan="3" | Totál kareira nian
! 18
! 0
! 1
! 0
! 1
! 0
! 0
! 0
! 20
! 0
|}
{{notelist}}
=== Internasionál ===
{{updated|match played 2 June 2026}}<ref name="NFT Stats">{{NFT player|pid=95553|name=Claudio Osorio}}</ref>
{| class="wikitable" style="text-align:center"
! colspan="4" |[[Ekipa futeból nasionál Timór Lorosa'e|Selesaun nasionál Timor-Leste]]
|-
! Tinan
! Aplikasaun sira
! Metas
|-
| 2024
| 8
| 0
|-
| 2025
| 6
| 0
|-
| 2026
| 2
| 1
|-
! Totál
! 16
! 1
|}
== Golu internasionál ==
{| class="wikitable"
!Lae.
! Data
! Lokál
! Adversáriu
! Pontua
! Rezulta
! Kompetisaun
|-
| 1.
| 9 Juñu 2026
| Estádiu Kuala Lumpur, Kuala Lumpur, Malázia
| Brunei
| align="center" | '''2''' –1
| align="center" | 3–1
| Kualifikasaun ba Kampeonatu ASEAN 2026
|}
== Referénsia sira ==
{{reflist}}
== Ligasaun esternu sira ==
* {{Soccerway|new_id=claudio-osorio/lbJ6B7pS|id=claudio-osorio/535322|archive=20240905130102}}
[[Kategoria:Páginas com traduções não revistas]]
b63bxv3m2eh8ss018v2nx5a9ko15rj4
Template:Infobox person
10
8609
73864
2026-06-09T19:45:02Z
Andrybak
11646
add parameter "image_class", needed when a monochrome logo is used as an image for a person, including in templates that are wrappers for {{Infobox person}}, such as [[Template:Infobox social media personality]]
73864
wikitext
text/x-wiki
<includeonly>{{#invoke:infobox|infoboxTemplate|child={{if empty|{{{child|}}}|{{{embed|}}}}}
| bodyclass = biography vcard
| above = {{#if:{{{honorific_prefix|}}}|<div class="honorific-prefix" style="font-size: 80%; font-weight: normal;">{{{honorific_prefix|}}}</div>}}<div class="fn">{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}}</div>{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 80%; font-weight: normal;">{{{honorific_suffix|}}}</div>}}
| subheader = {{#ifeq:{{lc: {{if empty|{{{child|}}}|{{{embed|}}}}}}}|yes|{{#if:{{{embed_title|}}}|'''{{{embed_title|}}}'''}}}}
| subheader2 = {{#switch:{{if empty|{{{child|}}}|{{{embed|}}}}}|yes=<!--empty when this infobox is embedded-->|#default={{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}} }} }}
| subheaderstyle2 = font-size: 125%
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image_size|}}}}}|300|{{{image_size|}}}}}}}x200px|{{{image_size|}}}}}|sizedefault=frameless|upright={{if empty|{{{image_upright|}}}|1}}|alt={{if empty|{{{alt|}}}|{{{image_alt|}}}}}|class={{{image_class|}}}|suppressplaceholder=yes}}
| caption = {{if empty|{{{caption|}}}|{{{image_caption|}}}}}
| label2 = Pronunciation
| data2 = {{{pronunciation|}}}
| label10 = Born
| data10 = {{br separated entries
|1={{#if:{{{birth_name|}}}|<div style="display:inline" class="nickname">{{{birth_name|}}}</div>}}
|2={{#invoke:person date|birth}}
|3={{#if:{{{birth_place|}}}|<div style="display:inline" class="birthplace">{{{birth_place|}}}</div>}}
}}
| label11 = Bapti{{#if:{{{baptized|}}}|z|s}}ed
| data11 = {{#if:{{{birth_date|}}}||{{if empty|{{{baptized|}}}|{{{baptised|}}}}}}}
| label12 = Disappeared
| data12 = {{Br separated entries|1={{{disappeared_date|}}}|2={{{disappeared_place|}}}}}
| label13 = Status
| data13 = {{{disappeared_status|}}}
| label14 = Died
| data14 = {{br separated entries
|1={{#invoke:person date|death}}
|2={{#if:{{{death_place|}}}|<div style="display:inline" class="deathplace">{{{death_place|}}}</div>}}
}}
| label15 = {{longitem|Cause of death}}
| data15 = {{{death_cause|}}}
| label16 = {{longitem|Body discovered}}
| data16 = {{{body_discovered|}}}
| label17 = {{longitem|{{#if:{{{burial_place|}}}|Burial place|Resting place}}}}
| data17 = {{#if:{{{burial_place|}}}|{{Br separated entries|1={{{burial_place|}}}|2={{{burial_coordinates|}}}}}|{{Br separated entries|1={{{resting_place|}}}|2={{{resting_place_coordinates|}}}}}}}
| class17 = label
| label18 = Monuments
| data18 = {{{monuments|}}}
| label21 = Other name{{pluralize from text|{{{other_names|}}}|plural=s}}
| data21 = {{{other_names|}}}
| class21 = nickname
| label22 = Siglum
| data22 = {{{siglum|}}}
| label23 = Citizenship
| data23 = {{{citizenship|}}}
| class23 = category
| label24 = Education
| data24 = {{{education|}}}
| label25 = Alma mater
| data25 = {{{alma_mater|}}}
| label26 = Occupation{{Pluralize from text|{{{occupation|}}}|plural=s}}
| data26 = {{{occupation|}}}
| class26 = role
| label27 = Years active
| data27 = {{{years_active|}}}
| label28 = Era
| data28 = {{{era|}}}
| class28 = category
| label29 = Employer{{Pluralize from text|{{{employer|}}}|likely=(s)|plural=s}}
| data29 = {{{employer|}}}{{main other|{{Pluralize from text| {{{employer|}}}|likely=[[Category:Pages using infobox person with multiple employers]]}}}}
| class29 = org
| label30 = {{#if:{{{organisation|}}}|Organisation|Organization}}{{#if:{{{organizations|}}}|s|{{pluralize from text|{{if empty|{{{organization|}}}|{{{organisation|}}}}}|likely=(s)|plural=s}}}}
| data30 = {{if empty|{{{organisation|}}}|{{{organization|}}}|{{{organizations|}}}}}{{main other|{{Pluralize from text|{{if empty|{{{organization|}}}|{{{organisation|}}}}}|likely=[[Category:Pages using infobox person with multiple organizations]]}}}}
| class30 = org
| label31 = Agent{{Pluralize from text|{{{agent|}}}|likely=(s)|plural=s}}
| data31 = {{{agent|}}}{{main other|{{Pluralize from text|{{{agent|}}}|likely=[[Category:Pages using infobox person with multiple agents]]}}}}
| class31 = agent
| label32 = Known for
| data32 = {{{known_for|}}}
| label33 = Works
| data33 = {{{works|}}}
| label34 = Notable credit{{Pluralize from text|{{{credits|}}}|likely=(s)|plural=s}}
| data34 = {{#if:{{{works|}}}||<!--
-->{{{credits|}}}{{main other|{{Pluralize from text|{{{credits|}}}|likely=[[Category:Pages using infobox person with multiple credits]]}}}}}}
| label35 = Label{{Pluralize from text|{{{label_name|}}}|likely=(s)|plural=s}}
| data35 = {{#if:{{{works|}}}{{{credits|}}}||<!--
-->{{{label_name|}}}{{main other|{{Pluralize from text|{{{label_name|}}}|likely=[[Category:Pages using infobox person with multiple labels]]}}}}}}
| label36 = Notable work
| data36 = {{#if:{{{works|}}}{{{credits|}}}{{{label_name|}}}||{{{notable_works|}}}}}
| label37 = Style
| data37 = {{{style|}}}
| class37 = category
| label40 = Television
| data40 = {{{television|}}}
| label41 = Height
| data41 = {{#if:{{{height_m|}}}{{{height_cm|}}}{{{height_ft|}}}{{{height_in|}}} | {{convinfobox|{{if empty|{{{height_m|}}}|{{{height_cm|}}}}}|{{#if:{{{height_m|}}}|m|cm}}|{{{height_ft|}}}|ft|{{{height_in|}}}|in}}}}{{#if:{{{height|}}} | {{infobox person/height|{{{height|}}}}}}}
| label42 = {{#if:{{{office|}}}|Office|Title}}
| data42 = {{if empty|{{{office|}}}|{{{title|}}}}}
| class42 = title
| label43 = Term
| data43 = {{{term|}}}
| label44 = Predecessor
| data44 = {{{predecessor|}}}
| label45 = Successor
| data45 = {{{successor|}}}
| label46 = {{longitem|Political party}}
| data46 = {{{political_party|}}}
| class46 = org
| label47 = {{longitem|Other political<br />affiliations}}
| data47 = {{{other_party|}}}
| class47 = org
| label48 = Movement
| data48 = {{{movement|}}}
| class48 = category
| label49 = Opponent{{Pluralize from text|{{{opponents|}}}|likely=(s)|plural=s}}
| data49 = {{{opponents|}}}{{main other|{{Pluralize from text|{{{opponents|}}}|likely=[[Category:Pages using infobox person with multiple opponents]]}}}}
| label50 = {{longitem|Board member of}}
| data50 = {{{boards|}}}
| label51 = {{longitem|{{#if:{{{criminal_charges|}}}|Criminal charges|Criminal charge{{pluralize from text|{{{criminal_charge|}}}|likely=(s)|plural=s}}}}}}
| data51 = {{if empty|{{{criminal_charges|}}}|{{{criminal_charge|}}}}}{{main other|{{Pluralize from text|{{{criminal_charge|}}}|likely=[[Category:Pages using infobox person with multiple criminal charges]]}}}}
| label52 = {{longitem|Criminal penalty}}
| data52 = {{{criminal_penalty|}}}
| label53 = {{longitem|{{#if:{{{judicial_status|}}}|Judicial status|Criminal status}}}}
| data53 = {{if empty|{{{judicial_status|}}} | {{{criminal_status|}}}}}
| class53 = category
| label54 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|}}}|likely=(s)|plural=s}}}}
| data54 = {{if empty|{{{spouse|}}}|{{{spouses|}}}}}{{main other|{{Pluralize from text| {{{spouse|}}} |likely=[[Category:Pages using infobox person with multiple spouses]]}}}}
| label55 = Partner{{#if:{{{partners|}}}|s|{{Pluralize from text|{{if empty|{{{partner|}}}|{{{domesticpartner|}}}|{{{domestic_partner|}}}|{{{partner(s)|}}}}} |likely=(s)|plural=s}}}}
| data55 = {{if empty|{{{partner|}}}|{{{partners|}}}}}{{main other|{{Pluralize from text| {{{partner|}}} |likely=[[Category:Pages using infobox person with multiple partners]]}}}}
| label56 = Children
| data56 = {{{children|}}}
| label57 = {{#if:{{{parents|}}}|Parent{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!--
-->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|Parents|{{#if:{{{father|}}}|Father|{{#if:{{{mother|}}}|Mother}}}}}}}}
| data57 = {{#if:{{{parents|}}}|{{{parents}}}|{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|{{Unbulleted list|{{{father}}} (father)|{{{mother}}} (mother)}}|{{{mother|}}}{{{father|}}}}}}}<!--
-->{{main other|{{Pluralize from text|{{{parents|}}}|likely=[[Category:Pages using infobox person with multiple parents]]}}}}
| label58 = Relatives
| data58 = {{{relatives|}}}
| label59 = Family
| data59 = {{{family|}}}
| label60 = Call sign
| data60 = {{{callsign|}}}
| label61 = Awards
| data61 = {{{awards|}}}
| label62 = {{#if:{{{honours|}}}|Honours|Honors}}
| data62 = {{if empty|{{{honours|}}}|{{{honors|}}}}}
| data64 = {{{module|}}}
| data65 = {{{module2|}}}
| data66 = {{{module3|}}}
| data67 = {{{module4|}}}
| data68 = {{{module5|}}}
| data69 = {{{module6|}}}
| label70 = Website
| data70 = {{{website|}}}
| header71 = {{#if:{{{signature|}}}|{{if empty|{{{signature_type|}}}|Signature}}}}
| data72 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|class=infobox-signature skin-invert|sizedefault=150px|alt={{{signature_alt|}}}}}
| header73 = {{#if:{{{footnotes|}}}|Notes}}
| data74 = {{#if:{{{footnotes|}}}|<div style="text-align: left;">{{{footnotes}}}</div>}}
}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using {{if empty|{{lcfirst:{{{template_name|}}}}}|infobox person}} with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview = Page using [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]] with unknown parameter "_VALUE_"|ignoreblank=y| agent | alma_mater | alt | awards | baptised | baptized | birth_date | birth_name | birth_place | boards | body_discovered | burial_coordinates | burial_place | callsign | caption | child | children | citizenship | credits | criminal_charge | criminal_charges | criminal_penalty | criminal_status | death_cause | death_date | death_place | disappeared_date | disappeared_place | disappeared_status | domestic_partner | domesticpartner | education | embed | embed_title | employer | era | family | father | footnotes | height | height_cm | height_ft | height_in | height_m | honorific_prefix | honorific_suffix | honors | honours | image | image_alt | image_caption | image_class | image_size | image_upright | judicial_status | known_for | label_name | landscape | module | module2 | module3 | module4 | module5 | module6 | monuments | mother | movement | name | native_name | native_name_lang | nocat_wdimage | notable_works | occupation | office | opponents | organisation | organization | organizations | other_names | other_party | parents | partner | partner(s) | partners | political_party | predecessor | pronunciation | relatives | resting_place | resting_place_coordinates | siglum | signature | signature_alt | signature_size | signature_type | spouse | spouses | style | successor | television | template_name | term | title | website | works | years_active }}<!--
-->{{Main other|{{#if:{{{pronunciation|}}}|[[Category:Biography template using pronunciation]]}}<!--
-->{{#if:{{{signature|}}}|[[Category:Biography with signature]]}}<!--
-->[[Category:Articles with hCards]]
}}<!--
-->{{#invoke:Check for conflicting parameters|check
| nested = 1
| template = [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]]
| cat = {{main other|Category:Pages using {{if empty|{{{template_name|}}}|infobox person}} with conflicting parameters}}
| child; embed
| image_alt; alt
| height_m; height_cm; height_ft; height
| caption; image_caption
| baptized; baptised
| organisation; organization; organizations
| {{#if:{{{works|}}}|works;}} {{#if:{{{credits|}}}|credits;}} {{#if:{{{label_name|}}}|label_name;}} notable_works
| height_m; height_cm
| office; title
| criminal_charges; criminal_charge
| spouse; spouses
| partner; partners
| {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{father|}}}||NULL_}}father
| {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{mother|}}}||NULL_}}mother
| honours; honors
}}{{#ifeq:{{if empty|{{{child|}}}|{{{embed|}}}}}|yes||{{Wikidata image|1={{{image|}}}|2={{{nocat_wdimage|}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
mguzs9omiu2y2juwi2lxehaye1kzcmd
73865
73864
2026-07-11T18:58:56Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_person]]
73864
wikitext
text/x-wiki
<includeonly>{{#invoke:infobox|infoboxTemplate|child={{if empty|{{{child|}}}|{{{embed|}}}}}
| bodyclass = biography vcard
| above = {{#if:{{{honorific_prefix|}}}|<div class="honorific-prefix" style="font-size: 80%; font-weight: normal;">{{{honorific_prefix|}}}</div>}}<div class="fn">{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}}</div>{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 80%; font-weight: normal;">{{{honorific_suffix|}}}</div>}}
| subheader = {{#ifeq:{{lc: {{if empty|{{{child|}}}|{{{embed|}}}}}}}|yes|{{#if:{{{embed_title|}}}|'''{{{embed_title|}}}'''}}}}
| subheader2 = {{#switch:{{if empty|{{{child|}}}|{{{embed|}}}}}|yes=<!--empty when this infobox is embedded-->|#default={{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}} }} }}
| subheaderstyle2 = font-size: 125%
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image_size|}}}}}|300|{{{image_size|}}}}}}}x200px|{{{image_size|}}}}}|sizedefault=frameless|upright={{if empty|{{{image_upright|}}}|1}}|alt={{if empty|{{{alt|}}}|{{{image_alt|}}}}}|class={{{image_class|}}}|suppressplaceholder=yes}}
| caption = {{if empty|{{{caption|}}}|{{{image_caption|}}}}}
| label2 = Pronunciation
| data2 = {{{pronunciation|}}}
| label10 = Born
| data10 = {{br separated entries
|1={{#if:{{{birth_name|}}}|<div style="display:inline" class="nickname">{{{birth_name|}}}</div>}}
|2={{#invoke:person date|birth}}
|3={{#if:{{{birth_place|}}}|<div style="display:inline" class="birthplace">{{{birth_place|}}}</div>}}
}}
| label11 = Bapti{{#if:{{{baptized|}}}|z|s}}ed
| data11 = {{#if:{{{birth_date|}}}||{{if empty|{{{baptized|}}}|{{{baptised|}}}}}}}
| label12 = Disappeared
| data12 = {{Br separated entries|1={{{disappeared_date|}}}|2={{{disappeared_place|}}}}}
| label13 = Status
| data13 = {{{disappeared_status|}}}
| label14 = Died
| data14 = {{br separated entries
|1={{#invoke:person date|death}}
|2={{#if:{{{death_place|}}}|<div style="display:inline" class="deathplace">{{{death_place|}}}</div>}}
}}
| label15 = {{longitem|Cause of death}}
| data15 = {{{death_cause|}}}
| label16 = {{longitem|Body discovered}}
| data16 = {{{body_discovered|}}}
| label17 = {{longitem|{{#if:{{{burial_place|}}}|Burial place|Resting place}}}}
| data17 = {{#if:{{{burial_place|}}}|{{Br separated entries|1={{{burial_place|}}}|2={{{burial_coordinates|}}}}}|{{Br separated entries|1={{{resting_place|}}}|2={{{resting_place_coordinates|}}}}}}}
| class17 = label
| label18 = Monuments
| data18 = {{{monuments|}}}
| label21 = Other name{{pluralize from text|{{{other_names|}}}|plural=s}}
| data21 = {{{other_names|}}}
| class21 = nickname
| label22 = Siglum
| data22 = {{{siglum|}}}
| label23 = Citizenship
| data23 = {{{citizenship|}}}
| class23 = category
| label24 = Education
| data24 = {{{education|}}}
| label25 = Alma mater
| data25 = {{{alma_mater|}}}
| label26 = Occupation{{Pluralize from text|{{{occupation|}}}|plural=s}}
| data26 = {{{occupation|}}}
| class26 = role
| label27 = Years active
| data27 = {{{years_active|}}}
| label28 = Era
| data28 = {{{era|}}}
| class28 = category
| label29 = Employer{{Pluralize from text|{{{employer|}}}|likely=(s)|plural=s}}
| data29 = {{{employer|}}}{{main other|{{Pluralize from text| {{{employer|}}}|likely=[[Category:Pages using infobox person with multiple employers]]}}}}
| class29 = org
| label30 = {{#if:{{{organisation|}}}|Organisation|Organization}}{{#if:{{{organizations|}}}|s|{{pluralize from text|{{if empty|{{{organization|}}}|{{{organisation|}}}}}|likely=(s)|plural=s}}}}
| data30 = {{if empty|{{{organisation|}}}|{{{organization|}}}|{{{organizations|}}}}}{{main other|{{Pluralize from text|{{if empty|{{{organization|}}}|{{{organisation|}}}}}|likely=[[Category:Pages using infobox person with multiple organizations]]}}}}
| class30 = org
| label31 = Agent{{Pluralize from text|{{{agent|}}}|likely=(s)|plural=s}}
| data31 = {{{agent|}}}{{main other|{{Pluralize from text|{{{agent|}}}|likely=[[Category:Pages using infobox person with multiple agents]]}}}}
| class31 = agent
| label32 = Known for
| data32 = {{{known_for|}}}
| label33 = Works
| data33 = {{{works|}}}
| label34 = Notable credit{{Pluralize from text|{{{credits|}}}|likely=(s)|plural=s}}
| data34 = {{#if:{{{works|}}}||<!--
-->{{{credits|}}}{{main other|{{Pluralize from text|{{{credits|}}}|likely=[[Category:Pages using infobox person with multiple credits]]}}}}}}
| label35 = Label{{Pluralize from text|{{{label_name|}}}|likely=(s)|plural=s}}
| data35 = {{#if:{{{works|}}}{{{credits|}}}||<!--
-->{{{label_name|}}}{{main other|{{Pluralize from text|{{{label_name|}}}|likely=[[Category:Pages using infobox person with multiple labels]]}}}}}}
| label36 = Notable work
| data36 = {{#if:{{{works|}}}{{{credits|}}}{{{label_name|}}}||{{{notable_works|}}}}}
| label37 = Style
| data37 = {{{style|}}}
| class37 = category
| label40 = Television
| data40 = {{{television|}}}
| label41 = Height
| data41 = {{#if:{{{height_m|}}}{{{height_cm|}}}{{{height_ft|}}}{{{height_in|}}} | {{convinfobox|{{if empty|{{{height_m|}}}|{{{height_cm|}}}}}|{{#if:{{{height_m|}}}|m|cm}}|{{{height_ft|}}}|ft|{{{height_in|}}}|in}}}}{{#if:{{{height|}}} | {{infobox person/height|{{{height|}}}}}}}
| label42 = {{#if:{{{office|}}}|Office|Title}}
| data42 = {{if empty|{{{office|}}}|{{{title|}}}}}
| class42 = title
| label43 = Term
| data43 = {{{term|}}}
| label44 = Predecessor
| data44 = {{{predecessor|}}}
| label45 = Successor
| data45 = {{{successor|}}}
| label46 = {{longitem|Political party}}
| data46 = {{{political_party|}}}
| class46 = org
| label47 = {{longitem|Other political<br />affiliations}}
| data47 = {{{other_party|}}}
| class47 = org
| label48 = Movement
| data48 = {{{movement|}}}
| class48 = category
| label49 = Opponent{{Pluralize from text|{{{opponents|}}}|likely=(s)|plural=s}}
| data49 = {{{opponents|}}}{{main other|{{Pluralize from text|{{{opponents|}}}|likely=[[Category:Pages using infobox person with multiple opponents]]}}}}
| label50 = {{longitem|Board member of}}
| data50 = {{{boards|}}}
| label51 = {{longitem|{{#if:{{{criminal_charges|}}}|Criminal charges|Criminal charge{{pluralize from text|{{{criminal_charge|}}}|likely=(s)|plural=s}}}}}}
| data51 = {{if empty|{{{criminal_charges|}}}|{{{criminal_charge|}}}}}{{main other|{{Pluralize from text|{{{criminal_charge|}}}|likely=[[Category:Pages using infobox person with multiple criminal charges]]}}}}
| label52 = {{longitem|Criminal penalty}}
| data52 = {{{criminal_penalty|}}}
| label53 = {{longitem|{{#if:{{{judicial_status|}}}|Judicial status|Criminal status}}}}
| data53 = {{if empty|{{{judicial_status|}}} | {{{criminal_status|}}}}}
| class53 = category
| label54 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|}}}|likely=(s)|plural=s}}}}
| data54 = {{if empty|{{{spouse|}}}|{{{spouses|}}}}}{{main other|{{Pluralize from text| {{{spouse|}}} |likely=[[Category:Pages using infobox person with multiple spouses]]}}}}
| label55 = Partner{{#if:{{{partners|}}}|s|{{Pluralize from text|{{if empty|{{{partner|}}}|{{{domesticpartner|}}}|{{{domestic_partner|}}}|{{{partner(s)|}}}}} |likely=(s)|plural=s}}}}
| data55 = {{if empty|{{{partner|}}}|{{{partners|}}}}}{{main other|{{Pluralize from text| {{{partner|}}} |likely=[[Category:Pages using infobox person with multiple partners]]}}}}
| label56 = Children
| data56 = {{{children|}}}
| label57 = {{#if:{{{parents|}}}|Parent{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!--
-->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|Parents|{{#if:{{{father|}}}|Father|{{#if:{{{mother|}}}|Mother}}}}}}}}
| data57 = {{#if:{{{parents|}}}|{{{parents}}}|{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|{{Unbulleted list|{{{father}}} (father)|{{{mother}}} (mother)}}|{{{mother|}}}{{{father|}}}}}}}<!--
-->{{main other|{{Pluralize from text|{{{parents|}}}|likely=[[Category:Pages using infobox person with multiple parents]]}}}}
| label58 = Relatives
| data58 = {{{relatives|}}}
| label59 = Family
| data59 = {{{family|}}}
| label60 = Call sign
| data60 = {{{callsign|}}}
| label61 = Awards
| data61 = {{{awards|}}}
| label62 = {{#if:{{{honours|}}}|Honours|Honors}}
| data62 = {{if empty|{{{honours|}}}|{{{honors|}}}}}
| data64 = {{{module|}}}
| data65 = {{{module2|}}}
| data66 = {{{module3|}}}
| data67 = {{{module4|}}}
| data68 = {{{module5|}}}
| data69 = {{{module6|}}}
| label70 = Website
| data70 = {{{website|}}}
| header71 = {{#if:{{{signature|}}}|{{if empty|{{{signature_type|}}}|Signature}}}}
| data72 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|class=infobox-signature skin-invert|sizedefault=150px|alt={{{signature_alt|}}}}}
| header73 = {{#if:{{{footnotes|}}}|Notes}}
| data74 = {{#if:{{{footnotes|}}}|<div style="text-align: left;">{{{footnotes}}}</div>}}
}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using {{if empty|{{lcfirst:{{{template_name|}}}}}|infobox person}} with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview = Page using [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]] with unknown parameter "_VALUE_"|ignoreblank=y| agent | alma_mater | alt | awards | baptised | baptized | birth_date | birth_name | birth_place | boards | body_discovered | burial_coordinates | burial_place | callsign | caption | child | children | citizenship | credits | criminal_charge | criminal_charges | criminal_penalty | criminal_status | death_cause | death_date | death_place | disappeared_date | disappeared_place | disappeared_status | domestic_partner | domesticpartner | education | embed | embed_title | employer | era | family | father | footnotes | height | height_cm | height_ft | height_in | height_m | honorific_prefix | honorific_suffix | honors | honours | image | image_alt | image_caption | image_class | image_size | image_upright | judicial_status | known_for | label_name | landscape | module | module2 | module3 | module4 | module5 | module6 | monuments | mother | movement | name | native_name | native_name_lang | nocat_wdimage | notable_works | occupation | office | opponents | organisation | organization | organizations | other_names | other_party | parents | partner | partner(s) | partners | political_party | predecessor | pronunciation | relatives | resting_place | resting_place_coordinates | siglum | signature | signature_alt | signature_size | signature_type | spouse | spouses | style | successor | television | template_name | term | title | website | works | years_active }}<!--
-->{{Main other|{{#if:{{{pronunciation|}}}|[[Category:Biography template using pronunciation]]}}<!--
-->{{#if:{{{signature|}}}|[[Category:Biography with signature]]}}<!--
-->[[Category:Articles with hCards]]
}}<!--
-->{{#invoke:Check for conflicting parameters|check
| nested = 1
| template = [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]]
| cat = {{main other|Category:Pages using {{if empty|{{{template_name|}}}|infobox person}} with conflicting parameters}}
| child; embed
| image_alt; alt
| height_m; height_cm; height_ft; height
| caption; image_caption
| baptized; baptised
| organisation; organization; organizations
| {{#if:{{{works|}}}|works;}} {{#if:{{{credits|}}}|credits;}} {{#if:{{{label_name|}}}|label_name;}} notable_works
| height_m; height_cm
| office; title
| criminal_charges; criminal_charge
| spouse; spouses
| partner; partners
| {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{father|}}}||NULL_}}father
| {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{mother|}}}||NULL_}}mother
| honours; honors
}}{{#ifeq:{{if empty|{{{child|}}}|{{{embed|}}}}}|yes||{{Wikidata image|1={{{image|}}}|2={{{nocat_wdimage|}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
mguzs9omiu2y2juwi2lxehaye1kzcmd
73980
73865
2026-07-11T19:00:14Z
Robertsky
10424
Protegeu "[[Template:Infobox person]]" ([Edita=Blokeiu ema anónimu ho uza-na'in foun] (indefinidamente) [Book=Blokeiu ema anónimu ho uza-na'in foun] (indefinidamente))
73864
wikitext
text/x-wiki
<includeonly>{{#invoke:infobox|infoboxTemplate|child={{if empty|{{{child|}}}|{{{embed|}}}}}
| bodyclass = biography vcard
| above = {{#if:{{{honorific_prefix|}}}|<div class="honorific-prefix" style="font-size: 80%; font-weight: normal;">{{{honorific_prefix|}}}</div>}}<div class="fn">{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}}</div>{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 80%; font-weight: normal;">{{{honorific_suffix|}}}</div>}}
| subheader = {{#ifeq:{{lc: {{if empty|{{{child|}}}|{{{embed|}}}}}}}|yes|{{#if:{{{embed_title|}}}|'''{{{embed_title|}}}'''}}}}
| subheader2 = {{#switch:{{if empty|{{{child|}}}|{{{embed|}}}}}|yes=<!--empty when this infobox is embedded-->|#default={{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}} }} }}
| subheaderstyle2 = font-size: 125%
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image_size|}}}}}|300|{{{image_size|}}}}}}}x200px|{{{image_size|}}}}}|sizedefault=frameless|upright={{if empty|{{{image_upright|}}}|1}}|alt={{if empty|{{{alt|}}}|{{{image_alt|}}}}}|class={{{image_class|}}}|suppressplaceholder=yes}}
| caption = {{if empty|{{{caption|}}}|{{{image_caption|}}}}}
| label2 = Pronunciation
| data2 = {{{pronunciation|}}}
| label10 = Born
| data10 = {{br separated entries
|1={{#if:{{{birth_name|}}}|<div style="display:inline" class="nickname">{{{birth_name|}}}</div>}}
|2={{#invoke:person date|birth}}
|3={{#if:{{{birth_place|}}}|<div style="display:inline" class="birthplace">{{{birth_place|}}}</div>}}
}}
| label11 = Bapti{{#if:{{{baptized|}}}|z|s}}ed
| data11 = {{#if:{{{birth_date|}}}||{{if empty|{{{baptized|}}}|{{{baptised|}}}}}}}
| label12 = Disappeared
| data12 = {{Br separated entries|1={{{disappeared_date|}}}|2={{{disappeared_place|}}}}}
| label13 = Status
| data13 = {{{disappeared_status|}}}
| label14 = Died
| data14 = {{br separated entries
|1={{#invoke:person date|death}}
|2={{#if:{{{death_place|}}}|<div style="display:inline" class="deathplace">{{{death_place|}}}</div>}}
}}
| label15 = {{longitem|Cause of death}}
| data15 = {{{death_cause|}}}
| label16 = {{longitem|Body discovered}}
| data16 = {{{body_discovered|}}}
| label17 = {{longitem|{{#if:{{{burial_place|}}}|Burial place|Resting place}}}}
| data17 = {{#if:{{{burial_place|}}}|{{Br separated entries|1={{{burial_place|}}}|2={{{burial_coordinates|}}}}}|{{Br separated entries|1={{{resting_place|}}}|2={{{resting_place_coordinates|}}}}}}}
| class17 = label
| label18 = Monuments
| data18 = {{{monuments|}}}
| label21 = Other name{{pluralize from text|{{{other_names|}}}|plural=s}}
| data21 = {{{other_names|}}}
| class21 = nickname
| label22 = Siglum
| data22 = {{{siglum|}}}
| label23 = Citizenship
| data23 = {{{citizenship|}}}
| class23 = category
| label24 = Education
| data24 = {{{education|}}}
| label25 = Alma mater
| data25 = {{{alma_mater|}}}
| label26 = Occupation{{Pluralize from text|{{{occupation|}}}|plural=s}}
| data26 = {{{occupation|}}}
| class26 = role
| label27 = Years active
| data27 = {{{years_active|}}}
| label28 = Era
| data28 = {{{era|}}}
| class28 = category
| label29 = Employer{{Pluralize from text|{{{employer|}}}|likely=(s)|plural=s}}
| data29 = {{{employer|}}}{{main other|{{Pluralize from text| {{{employer|}}}|likely=[[Category:Pages using infobox person with multiple employers]]}}}}
| class29 = org
| label30 = {{#if:{{{organisation|}}}|Organisation|Organization}}{{#if:{{{organizations|}}}|s|{{pluralize from text|{{if empty|{{{organization|}}}|{{{organisation|}}}}}|likely=(s)|plural=s}}}}
| data30 = {{if empty|{{{organisation|}}}|{{{organization|}}}|{{{organizations|}}}}}{{main other|{{Pluralize from text|{{if empty|{{{organization|}}}|{{{organisation|}}}}}|likely=[[Category:Pages using infobox person with multiple organizations]]}}}}
| class30 = org
| label31 = Agent{{Pluralize from text|{{{agent|}}}|likely=(s)|plural=s}}
| data31 = {{{agent|}}}{{main other|{{Pluralize from text|{{{agent|}}}|likely=[[Category:Pages using infobox person with multiple agents]]}}}}
| class31 = agent
| label32 = Known for
| data32 = {{{known_for|}}}
| label33 = Works
| data33 = {{{works|}}}
| label34 = Notable credit{{Pluralize from text|{{{credits|}}}|likely=(s)|plural=s}}
| data34 = {{#if:{{{works|}}}||<!--
-->{{{credits|}}}{{main other|{{Pluralize from text|{{{credits|}}}|likely=[[Category:Pages using infobox person with multiple credits]]}}}}}}
| label35 = Label{{Pluralize from text|{{{label_name|}}}|likely=(s)|plural=s}}
| data35 = {{#if:{{{works|}}}{{{credits|}}}||<!--
-->{{{label_name|}}}{{main other|{{Pluralize from text|{{{label_name|}}}|likely=[[Category:Pages using infobox person with multiple labels]]}}}}}}
| label36 = Notable work
| data36 = {{#if:{{{works|}}}{{{credits|}}}{{{label_name|}}}||{{{notable_works|}}}}}
| label37 = Style
| data37 = {{{style|}}}
| class37 = category
| label40 = Television
| data40 = {{{television|}}}
| label41 = Height
| data41 = {{#if:{{{height_m|}}}{{{height_cm|}}}{{{height_ft|}}}{{{height_in|}}} | {{convinfobox|{{if empty|{{{height_m|}}}|{{{height_cm|}}}}}|{{#if:{{{height_m|}}}|m|cm}}|{{{height_ft|}}}|ft|{{{height_in|}}}|in}}}}{{#if:{{{height|}}} | {{infobox person/height|{{{height|}}}}}}}
| label42 = {{#if:{{{office|}}}|Office|Title}}
| data42 = {{if empty|{{{office|}}}|{{{title|}}}}}
| class42 = title
| label43 = Term
| data43 = {{{term|}}}
| label44 = Predecessor
| data44 = {{{predecessor|}}}
| label45 = Successor
| data45 = {{{successor|}}}
| label46 = {{longitem|Political party}}
| data46 = {{{political_party|}}}
| class46 = org
| label47 = {{longitem|Other political<br />affiliations}}
| data47 = {{{other_party|}}}
| class47 = org
| label48 = Movement
| data48 = {{{movement|}}}
| class48 = category
| label49 = Opponent{{Pluralize from text|{{{opponents|}}}|likely=(s)|plural=s}}
| data49 = {{{opponents|}}}{{main other|{{Pluralize from text|{{{opponents|}}}|likely=[[Category:Pages using infobox person with multiple opponents]]}}}}
| label50 = {{longitem|Board member of}}
| data50 = {{{boards|}}}
| label51 = {{longitem|{{#if:{{{criminal_charges|}}}|Criminal charges|Criminal charge{{pluralize from text|{{{criminal_charge|}}}|likely=(s)|plural=s}}}}}}
| data51 = {{if empty|{{{criminal_charges|}}}|{{{criminal_charge|}}}}}{{main other|{{Pluralize from text|{{{criminal_charge|}}}|likely=[[Category:Pages using infobox person with multiple criminal charges]]}}}}
| label52 = {{longitem|Criminal penalty}}
| data52 = {{{criminal_penalty|}}}
| label53 = {{longitem|{{#if:{{{judicial_status|}}}|Judicial status|Criminal status}}}}
| data53 = {{if empty|{{{judicial_status|}}} | {{{criminal_status|}}}}}
| class53 = category
| label54 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|}}}|likely=(s)|plural=s}}}}
| data54 = {{if empty|{{{spouse|}}}|{{{spouses|}}}}}{{main other|{{Pluralize from text| {{{spouse|}}} |likely=[[Category:Pages using infobox person with multiple spouses]]}}}}
| label55 = Partner{{#if:{{{partners|}}}|s|{{Pluralize from text|{{if empty|{{{partner|}}}|{{{domesticpartner|}}}|{{{domestic_partner|}}}|{{{partner(s)|}}}}} |likely=(s)|plural=s}}}}
| data55 = {{if empty|{{{partner|}}}|{{{partners|}}}}}{{main other|{{Pluralize from text| {{{partner|}}} |likely=[[Category:Pages using infobox person with multiple partners]]}}}}
| label56 = Children
| data56 = {{{children|}}}
| label57 = {{#if:{{{parents|}}}|Parent{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!--
-->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|Parents|{{#if:{{{father|}}}|Father|{{#if:{{{mother|}}}|Mother}}}}}}}}
| data57 = {{#if:{{{parents|}}}|{{{parents}}}|{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|{{Unbulleted list|{{{father}}} (father)|{{{mother}}} (mother)}}|{{{mother|}}}{{{father|}}}}}}}<!--
-->{{main other|{{Pluralize from text|{{{parents|}}}|likely=[[Category:Pages using infobox person with multiple parents]]}}}}
| label58 = Relatives
| data58 = {{{relatives|}}}
| label59 = Family
| data59 = {{{family|}}}
| label60 = Call sign
| data60 = {{{callsign|}}}
| label61 = Awards
| data61 = {{{awards|}}}
| label62 = {{#if:{{{honours|}}}|Honours|Honors}}
| data62 = {{if empty|{{{honours|}}}|{{{honors|}}}}}
| data64 = {{{module|}}}
| data65 = {{{module2|}}}
| data66 = {{{module3|}}}
| data67 = {{{module4|}}}
| data68 = {{{module5|}}}
| data69 = {{{module6|}}}
| label70 = Website
| data70 = {{{website|}}}
| header71 = {{#if:{{{signature|}}}|{{if empty|{{{signature_type|}}}|Signature}}}}
| data72 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|class=infobox-signature skin-invert|sizedefault=150px|alt={{{signature_alt|}}}}}
| header73 = {{#if:{{{footnotes|}}}|Notes}}
| data74 = {{#if:{{{footnotes|}}}|<div style="text-align: left;">{{{footnotes}}}</div>}}
}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using {{if empty|{{lcfirst:{{{template_name|}}}}}|infobox person}} with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview = Page using [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]] with unknown parameter "_VALUE_"|ignoreblank=y| agent | alma_mater | alt | awards | baptised | baptized | birth_date | birth_name | birth_place | boards | body_discovered | burial_coordinates | burial_place | callsign | caption | child | children | citizenship | credits | criminal_charge | criminal_charges | criminal_penalty | criminal_status | death_cause | death_date | death_place | disappeared_date | disappeared_place | disappeared_status | domestic_partner | domesticpartner | education | embed | embed_title | employer | era | family | father | footnotes | height | height_cm | height_ft | height_in | height_m | honorific_prefix | honorific_suffix | honors | honours | image | image_alt | image_caption | image_class | image_size | image_upright | judicial_status | known_for | label_name | landscape | module | module2 | module3 | module4 | module5 | module6 | monuments | mother | movement | name | native_name | native_name_lang | nocat_wdimage | notable_works | occupation | office | opponents | organisation | organization | organizations | other_names | other_party | parents | partner | partner(s) | partners | political_party | predecessor | pronunciation | relatives | resting_place | resting_place_coordinates | siglum | signature | signature_alt | signature_size | signature_type | spouse | spouses | style | successor | television | template_name | term | title | website | works | years_active }}<!--
-->{{Main other|{{#if:{{{pronunciation|}}}|[[Category:Biography template using pronunciation]]}}<!--
-->{{#if:{{{signature|}}}|[[Category:Biography with signature]]}}<!--
-->[[Category:Articles with hCards]]
}}<!--
-->{{#invoke:Check for conflicting parameters|check
| nested = 1
| template = [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]]
| cat = {{main other|Category:Pages using {{if empty|{{{template_name|}}}|infobox person}} with conflicting parameters}}
| child; embed
| image_alt; alt
| height_m; height_cm; height_ft; height
| caption; image_caption
| baptized; baptised
| organisation; organization; organizations
| {{#if:{{{works|}}}|works;}} {{#if:{{{credits|}}}|credits;}} {{#if:{{{label_name|}}}|label_name;}} notable_works
| height_m; height_cm
| office; title
| criminal_charges; criminal_charge
| spouse; spouses
| partner; partners
| {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{father|}}}||NULL_}}father
| {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{mother|}}}||NULL_}}mother
| honours; honors
}}{{#ifeq:{{if empty|{{{child|}}}|{{{embed|}}}}}|yes||{{Wikidata image|1={{{image|}}}|2={{{nocat_wdimage|}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
mguzs9omiu2y2juwi2lxehaye1kzcmd
Template:If both
10
8610
73866
2025-08-05T05:07:39Z
Theknightwho
11677
Avoid issues with the empty string parameter.
73866
wikitext
text/x-wiki
{{safesubst:<noinclude/>#if:{{{1|}}}| {{safesubst:<noinclude/>#if:{{{2|}}}|{{{3|}}}|{{{4|}}}}} |{{{4|}}} }}<noinclude>
{{Documentation}}
<!--
PLEASE ADD CATEGORIES
TO THE /doc SUBPAGE, THANKS
-->
</noinclude>
nuwl84dtikaj4rfmr0nwvxnatlew8ks
73867
73866
2026-07-11T18:58:57Z
Robertsky
10424
1 versaun husi [[:en:Template:If_both]]
73866
wikitext
text/x-wiki
{{safesubst:<noinclude/>#if:{{{1|}}}| {{safesubst:<noinclude/>#if:{{{2|}}}|{{{3|}}}|{{{4|}}}}} |{{{4|}}} }}<noinclude>
{{Documentation}}
<!--
PLEASE ADD CATEGORIES
TO THE /doc SUBPAGE, THANKS
-->
</noinclude>
nuwl84dtikaj4rfmr0nwvxnatlew8ks
Template:Br separated entries
10
8611
73868
2025-10-30T02:03:42Z
Zackmann08
11656
Adding dataPlural flag so that [[Module:Detect singular]] will function properly. Should have no VISIBLE effect
73868
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Separated entries|br|dataPlural=1}}<noinclude>
{{documentation}}
</noinclude>
8xv8u5m4k3e3a02h7dtrmmoeszevcr0
73869
73868
2026-07-11T18:58:57Z
Robertsky
10424
1 versaun husi [[:en:Template:Br_separated_entries]]
73868
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Separated entries|br|dataPlural=1}}<noinclude>
{{documentation}}
</noinclude>
8xv8u5m4k3e3a02h7dtrmmoeszevcr0
Template:Querylink
10
8612
73870
2021-02-20T01:52:03Z
Matt Fitzpatrick
11699
revert - potentially unwanted behavior with WantedPages
73870
wikitext
text/x-wiki
<includeonly><span class="plainlinks">[{{SERVER}}{{#if:{{{1|}}}|{{localurl:{{{1}}}}}}}?{{{qs}}} {{{2|{{{1}}}}}}]</span></includeonly><noinclude>
{{template doc}}
</noinclude>
b16fzio8seev0gygjroissnzlt3rwu4
73871
73870
2026-07-11T18:58:58Z
Robertsky
10424
1 versaun husi [[:en:Template:Querylink]]
73870
wikitext
text/x-wiki
<includeonly><span class="plainlinks">[{{SERVER}}{{#if:{{{1|}}}|{{localurl:{{{1}}}}}}}?{{{qs}}} {{{2|{{{1}}}}}}]</span></includeonly><noinclude>
{{template doc}}
</noinclude>
b16fzio8seev0gygjroissnzlt3rwu4
Template:In string
10
8613
73878
2024-11-09T16:12:51Z
Pppery
11644
Set plain to true by default explicitly per request
73878
wikitext
text/x-wiki
{{#invoke:String|replace
|source={{#invoke:String|find|source={{{source|{{{1|}}}}}}|target={{{target|{{{2|}}}}}}|start={{{start|{{{3|}}}}}}|plain={{#if:{{{plain|{{{4|}}}}}}|{{{plain|{{{4}}}}}}|true}}}}
|pattern=^0$
|replace={{#if:{{{nomatch|}}}|{{{nomatch|}}}|{{#if:{{{nomatch}}}|0<!-- no replacement -->|<!--return blank-->}}}}
|plain=false}}<!--
--><noinclude>{{documentation}}</noinclude>
tr7klwr761m703pzx5qat4xi4rrtjw1
73879
73878
2026-07-11T18:59:01Z
Robertsky
10424
1 versaun husi [[:en:Template:In_string]]
73878
wikitext
text/x-wiki
{{#invoke:String|replace
|source={{#invoke:String|find|source={{{source|{{{1|}}}}}}|target={{{target|{{{2|}}}}}}|start={{{start|{{{3|}}}}}}|plain={{#if:{{{plain|{{{4|}}}}}}|{{{plain|{{{4}}}}}}|true}}}}
|pattern=^0$
|replace={{#if:{{{nomatch|}}}|{{{nomatch|}}}|{{#if:{{{nomatch}}}|0<!-- no replacement -->|<!--return blank-->}}}}
|plain=false}}<!--
--><noinclude>{{documentation}}</noinclude>
tr7klwr761m703pzx5qat4xi4rrtjw1
Template:Infobox person/height
10
8614
73880
2019-09-26T15:11:11Z
Frietjes
11686
use lua version for efficiency and readability, passes all tests in the testscases so seems fine
73880
wikitext
text/x-wiki
{{#invoke:person height|main}}<noinclude>
{{Documentation}}
</noinclude>
er0y8xmwd91jl83h0g23bm3e8psjplm
73881
73880
2026-07-11T18:59:01Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_person/height]]
73880
wikitext
text/x-wiki
{{#invoke:person height|main}}<noinclude>
{{Documentation}}
</noinclude>
er0y8xmwd91jl83h0g23bm3e8psjplm
Template:Marriage
10
8615
73882
2026-03-19T22:05:19Z
Wbm1058
11350
blank out "Unknown" P570 value to prevent error transclusion. see [[Template talk:Marriage#Unexplained error template transclusion]] for detailed explanation.
73882
wikitext
text/x-wiki
<templatestyles src="Template:Marriage/styles.css"/>
{{#if:{{{1|}}}||{{#if:{{{2|}}}{{{3|}}}{{{end|{{{reason|}}}}}}
|{{#ifeq:{{{1|+}}}|{{{1|-}}}|<div class="marriage-line-margin3px">​</div>|{{main other|[[Category:Marriage template errors|Z{{PAGENAME}}]]}}}}}}}}
<div class="marriage-display-inline">{{#if:{{{1|}}}
|{{trim|{{#if:{{{end|{{{reason|}}}}}}
|<div style="display:inline-block;line-height:normal;{{#if:{{{2|}}}{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-top:1px;white-space:normal;|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2=20|3=margin-top:1px;white-space:normal;}}}}">{{{1|}}}</div>
{{#if:{{{2|}}}
|{{#if:{{{end|{{{reason|}}}}}}|<div class="marriage-line-margin2px">​</div>}}
|{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}
|<div class="marriage-line-margin2px">​</div>
|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2=20
|3=<div class="marriage-line-margin2px">​</div>}}
}}}}
|<div style="display:inline-block;line-height:normal;{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-top:1px;white-space:normal;|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}|3=margin-top:1px;white-space:normal;}}}}">{{{1|}}}</div>
{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}
|<div class="marriage-line-margin2px">​</div>
|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}
|3=<div class="marriage-line-margin2px">​</div>}}}}
}}}}}} <div style="display:inline-block;{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-bottom:1px;|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}|3=margin-bottom:1px;|4={{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}|margin-bottom:1px;}}}}}}}}">​</div>(<!--
-->{{#if:{{{2|}}}
|{{#ifeq:{{{end|{{{reason|+}}}}}}|
|{{#switch:{{{3|}}} | = after }}
|{{abbr|m.|married}} }}{{#ifeq:{{{2|}}}|{{YEAR|{{{2|}}}}}
|{{{2|}}}
|{{tooltip|dotted=no|1={{#iferror: {{YEAR|{{{2|}}}}} | {{main other|[[Category:Marriage template errors|I{{PAGENAME}}]]}}{{error-small|invalid year}}|{{YEAR|{{{2|}}}}}}}|2={{{2|}}}}}
}}
|{{#if:{{{3|}}}{{{end|{{{reason|}}}}}}||{{#if:{{#property:P570}}||{{main other|[[Category:Marriage template errors|N{{PAGENAME}}]]}}}}<!--
-->{{#if:{{{end|{{{reason|}}}}}}||{{#if:{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} | {{main other|[[Category:Marriage template errors|B{{PAGENAME}}]]}}before {{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} |{{error-small|date missing}}}}}}<!--
-->{{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}{{{3|}}}|, }}}}}}
}}{{#if:{{{3|}}}
|{{#ifeq:{{{end|{{{reason|}}}}}}|
|{{#if:{{{2|}}}|⁠–⁠|{{#ifeq:{{{end|+}}}|{{{end|-}}}
|{{#ifeq:{{{end|+}}}|{{{end|-}}} | until | before }}
|{{#ifeq:{{{reason|+}}}|{{{reason|-}}} | until | before }}}} }}
|{{#if:{{{2|}}}
|; 
}}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}}
| d | d. | died = died <!-- this used to be {{abbr|d.|died}} but caused confusion with "divorced" -->
| div | div. | divorce | divorced = {{abbr|div.|divorced}}
| sep | sep. | separated = {{abbr|sep.|separated}} <!-- commonly used reason for end -->
| ann | ann. | annulled | annulment = {{abbr|ann.|annulled}} <!-- commonly used reason for end -->
| she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died |{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead.}} }}
| he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died |{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead.}} }}
| w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason}}
| = <!--(reason marriage ended not supplied)-->
| #default = {{{end|{{{reason|}}}}}}
}}
}}{{#ifeq:{{{3|}}}
|{{Str ≠ len|{{{3}}}|4
|{{#ifexpr:{{#iferror:{{#time:Ymd|{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}} }}|{{#time:Ymd}} }} >= {{#time:Ymd|{{{3|}}}}}
|{{#ifexpr:{{#time:Ymd|{{if empty|{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}}|{{tomorrow}} }}}} = {{#time:Ymd|{{{3|}}}}}
|{{#if:{{{end|{{{reason|}}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template errors|D{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{First word|{{PAGENAMEBASE}}|sep=,}}'s date of death}}</var>|{{YEAR|{{{3|}}}}} }}}}
|{{YEAR|{{{3|}}}}}
}}
|{{main other|[[Category:Marriage template errors|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{#ifexpr:{{#time:Ymd}} >= {{#time:Ymd|{{{3|}}}}}|posthumous|future}} date}}</var>|{{YEAR|{{{3|}}}}}
}}}}
|{{#ifexpr:{{#iferror:{{YEAR|{{#ifeq:{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}}|Unknown||{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}}}} }}|{{#time:Y}} }} >= {{YEAR|{{{3|}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template errors|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{#ifexpr:{{#time:Y}} >= {{{3|}}}|posthumous|future}} year}}</var>|{{YEAR|{{{3|}}}}}
}}}}
}}
|{{{3|}}}
|{{tooltip|dotted=no|1={{#iferror: {{YEAR|{{{3|}}}}} | {{main other|[[Category:Marriage template errors|I{{PAGENAME}}]]}}{{error-small|invalid year}}
|{{Str ≠ len|{{{3}}}|4
|{{#ifexpr:{{#iferror:{{#time:Ymd|{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}} }}|{{#time:Ymd}} }} >= {{#time:Ymd|{{{3|}}}}}
|{{#ifexpr:{{#time:Ymd|{{if empty|{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}}|{{tomorrow}} }}}} = {{#time:Ymd|{{{3|}}}}}
|{{#if:{{{end|{{{reason|}}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template errors|D{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{First word|{{PAGENAMEBASE}}|sep=,}}'s date of death}}</var>|{{YEAR|{{{3|}}}}} }}}}
|{{YEAR|{{{3|}}}}}
}}
|{{main other|[[Category:Marriage template errors|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{#ifexpr:{{#time:Ymd}} >= {{#time:Ymd|{{{3|}}}}}|posthumous|future}} date}}</var>|{{YEAR|{{{3|}}}}}
}}}}
|{{#ifexpr:{{#iferror:{{YEAR|{{#ifeq:{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}}|Unknown||{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}}}} }}|{{#time:Y}} }} >= {{YEAR|{{{3|}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template errors|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{#ifexpr:{{#time:Y}} >= {{{3|}}}|posthumous|future}} year}}</var>|{{YEAR|{{{3|}}}}}
}}}}
}}}}|2={{{3|}}}}}
}}
|{{#if:{{{2|}}}
|{{#if:{{{end|{{{reason|}}}}}}|, |}}
}}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}}
| d | d. | died = died
| div | div. | divorce | divorced = divorced
| sep | sep. | separated = separated
| ann | ann. | annulled | annulment = annulled
| she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died|{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead}}}}
| he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died|{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead}}}}
| w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason }}
| = <!--(reason marriage ended not supplied)-->
| #default = {{{end|{{{reason|}}}}}}
}}
}})<wbr />​</div><!--
-->{{#invoke:Parameter validation|validateparams|module_options = Module:Parameter validation/default config}}<noinclude>
{{documentation}}
</noinclude>
d8v27pumig0xzpxubzn15mbfdvxymlg
73883
73882
2026-07-11T18:59:01Z
Robertsky
10424
1 versaun husi [[:en:Template:Marriage]]
73882
wikitext
text/x-wiki
<templatestyles src="Template:Marriage/styles.css"/>
{{#if:{{{1|}}}||{{#if:{{{2|}}}{{{3|}}}{{{end|{{{reason|}}}}}}
|{{#ifeq:{{{1|+}}}|{{{1|-}}}|<div class="marriage-line-margin3px">​</div>|{{main other|[[Category:Marriage template errors|Z{{PAGENAME}}]]}}}}}}}}
<div class="marriage-display-inline">{{#if:{{{1|}}}
|{{trim|{{#if:{{{end|{{{reason|}}}}}}
|<div style="display:inline-block;line-height:normal;{{#if:{{{2|}}}{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-top:1px;white-space:normal;|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2=20|3=margin-top:1px;white-space:normal;}}}}">{{{1|}}}</div>
{{#if:{{{2|}}}
|{{#if:{{{end|{{{reason|}}}}}}|<div class="marriage-line-margin2px">​</div>}}
|{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}
|<div class="marriage-line-margin2px">​</div>
|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2=20
|3=<div class="marriage-line-margin2px">​</div>}}
}}}}
|<div style="display:inline-block;line-height:normal;{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-top:1px;white-space:normal;|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}|3=margin-top:1px;white-space:normal;}}}}">{{{1|}}}</div>
{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}
|<div class="marriage-line-margin2px">​</div>
|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}
|3=<div class="marriage-line-margin2px">​</div>}}}}
}}}}}} <div style="display:inline-block;{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-bottom:1px;|{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}|3=margin-bottom:1px;|4={{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}|margin-bottom:1px;}}}}}}}}">​</div>(<!--
-->{{#if:{{{2|}}}
|{{#ifeq:{{{end|{{{reason|+}}}}}}|
|{{#switch:{{{3|}}} | = after }}
|{{abbr|m.|married}} }}{{#ifeq:{{{2|}}}|{{YEAR|{{{2|}}}}}
|{{{2|}}}
|{{tooltip|dotted=no|1={{#iferror: {{YEAR|{{{2|}}}}} | {{main other|[[Category:Marriage template errors|I{{PAGENAME}}]]}}{{error-small|invalid year}}|{{YEAR|{{{2|}}}}}}}|2={{{2|}}}}}
}}
|{{#if:{{{3|}}}{{{end|{{{reason|}}}}}}||{{#if:{{#property:P570}}||{{main other|[[Category:Marriage template errors|N{{PAGENAME}}]]}}}}<!--
-->{{#if:{{{end|{{{reason|}}}}}}||{{#if:{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} | {{main other|[[Category:Marriage template errors|B{{PAGENAME}}]]}}before {{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} |{{error-small|date missing}}}}}}<!--
-->{{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}{{{3|}}}|, }}}}}}
}}{{#if:{{{3|}}}
|{{#ifeq:{{{end|{{{reason|}}}}}}|
|{{#if:{{{2|}}}|⁠–⁠|{{#ifeq:{{{end|+}}}|{{{end|-}}}
|{{#ifeq:{{{end|+}}}|{{{end|-}}} | until | before }}
|{{#ifeq:{{{reason|+}}}|{{{reason|-}}} | until | before }}}} }}
|{{#if:{{{2|}}}
|; 
}}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}}
| d | d. | died = died <!-- this used to be {{abbr|d.|died}} but caused confusion with "divorced" -->
| div | div. | divorce | divorced = {{abbr|div.|divorced}}
| sep | sep. | separated = {{abbr|sep.|separated}} <!-- commonly used reason for end -->
| ann | ann. | annulled | annulment = {{abbr|ann.|annulled}} <!-- commonly used reason for end -->
| she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died |{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead.}} }}
| he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died |{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead.}} }}
| w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason}}
| = <!--(reason marriage ended not supplied)-->
| #default = {{{end|{{{reason|}}}}}}
}}
}}{{#ifeq:{{{3|}}}
|{{Str ≠ len|{{{3}}}|4
|{{#ifexpr:{{#iferror:{{#time:Ymd|{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}} }}|{{#time:Ymd}} }} >= {{#time:Ymd|{{{3|}}}}}
|{{#ifexpr:{{#time:Ymd|{{if empty|{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}}|{{tomorrow}} }}}} = {{#time:Ymd|{{{3|}}}}}
|{{#if:{{{end|{{{reason|}}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template errors|D{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{First word|{{PAGENAMEBASE}}|sep=,}}'s date of death}}</var>|{{YEAR|{{{3|}}}}} }}}}
|{{YEAR|{{{3|}}}}}
}}
|{{main other|[[Category:Marriage template errors|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{#ifexpr:{{#time:Ymd}} >= {{#time:Ymd|{{{3|}}}}}|posthumous|future}} date}}</var>|{{YEAR|{{{3|}}}}}
}}}}
|{{#ifexpr:{{#iferror:{{YEAR|{{#ifeq:{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}}|Unknown||{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}}}} }}|{{#time:Y}} }} >= {{YEAR|{{{3|}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template errors|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{#ifexpr:{{#time:Y}} >= {{{3|}}}|posthumous|future}} year}}</var>|{{YEAR|{{{3|}}}}}
}}}}
}}
|{{{3|}}}
|{{tooltip|dotted=no|1={{#iferror: {{YEAR|{{{3|}}}}} | {{main other|[[Category:Marriage template errors|I{{PAGENAME}}]]}}{{error-small|invalid year}}
|{{Str ≠ len|{{{3}}}|4
|{{#ifexpr:{{#iferror:{{#time:Ymd|{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}} }}|{{#time:Ymd}} }} >= {{#time:Ymd|{{{3|}}}}}
|{{#ifexpr:{{#time:Ymd|{{if empty|{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}}|{{tomorrow}} }}}} = {{#time:Ymd|{{{3|}}}}}
|{{#if:{{{end|{{{reason|}}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template errors|D{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{First word|{{PAGENAMEBASE}}|sep=,}}'s date of death}}</var>|{{YEAR|{{{3|}}}}} }}}}
|{{YEAR|{{{3|}}}}}
}}
|{{main other|[[Category:Marriage template errors|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{#ifexpr:{{#time:Ymd}} >= {{#time:Ymd|{{{3|}}}}}|posthumous|future}} date}}</var>|{{YEAR|{{{3|}}}}}
}}}}
|{{#ifexpr:{{#iferror:{{YEAR|{{#ifeq:{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}}|Unknown||{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}}}} }}|{{#time:Y}} }} >= {{YEAR|{{{3|}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template errors|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template errors|{{#ifexpr:{{#time:Y}} >= {{{3|}}}|posthumous|future}} year}}</var>|{{YEAR|{{{3|}}}}}
}}}}
}}}}|2={{{3|}}}}}
}}
|{{#if:{{{2|}}}
|{{#if:{{{end|{{{reason|}}}}}}|, |}}
}}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}}
| d | d. | died = died
| div | div. | divorce | divorced = divorced
| sep | sep. | separated = separated
| ann | ann. | annulled | annulment = annulled
| she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died|{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead}}}}
| he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died|{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead}}}}
| w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason }}
| = <!--(reason marriage ended not supplied)-->
| #default = {{{end|{{{reason|}}}}}}
}}
}})<wbr />​</div><!--
-->{{#invoke:Parameter validation|validateparams|module_options = Module:Parameter validation/default config}}<noinclude>
{{documentation}}
</noinclude>
d8v27pumig0xzpxubzn15mbfdvxymlg
Template:Str ≥ len
10
8616
73884
2021-04-06T11:38:38Z
Elli
8038
Undid revision 1016291968 by [[Special:Contributions/Elli|Elli]] ([[User talk:Elli|talk]]) wrong template, damn it!
73884
wikitext
text/x-wiki
{{{{{|safesubst:}}}#ifexpr: {{{{{|safesubst:}}}#invoke:String|len|s={{{1|}}}}} >= {{{2|0}}} <noinclude><!-- str >= len --></noinclude>
| {{{3|}}}
| {{{4|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
5n8ijb7krko6nhwqukd6gap519qlr6k
73885
73884
2026-07-11T18:59:01Z
Robertsky
10424
1 versaun husi [[:en:Template:Str_≥_len]]
73884
wikitext
text/x-wiki
{{{{{|safesubst:}}}#ifexpr: {{{{{|safesubst:}}}#invoke:String|len|s={{{1|}}}}} >= {{{2|0}}} <noinclude><!-- str >= len --></noinclude>
| {{{3|}}}
| {{{4|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
5n8ijb7krko6nhwqukd6gap519qlr6k
Módulo:Person height
828
8617
73886
2025-12-10T11:10:59Z
S.A. Julio
11761
allow conversion for heights improperly formatted with a comma, such as 1,82 m
73886
Scribunto
text/plain
-- This module implements [[Template:Infobox person/height]]
local p = {}
local function splitsuffix(s)
local suffix = ''
if mw.ustring.match(s,'^(.-)(<sup.*)$') then
local a = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%1')
local b = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%2')
s = a
suffix = b .. suffix
end
if mw.ustring.match(s,'^(.-)(%[%[[Cc]ategory:.*)$') then
local a = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%1')
local b = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%2')
s = a
suffix = b .. suffix
end
return s, suffix
end
local function clean(s)
s = mw.ustring.gsub(s, '(%d),(%d)', '%1.%2')
s = mw.ustring.gsub(s, '[Mm]etre', 'm')
s = mw.ustring.gsub(s, '([^a])meter', '%1m') -- prevents "parameter" from being changed to "param"
s = mw.ustring.gsub(s, '[Cc]enti', 'c') -- changes "centim" to "cm"
s = mw.ustring.gsub(s, 'ms', 'm')
s = mw.ustring.gsub(s, 'm[%.,]', 'm')
s = mw.ustring.gsub(s, '[Ff]eet', 'ft')
s = mw.ustring.gsub(s, 'foot', 'ft')
s = mw.ustring.gsub(s, 'ft[%.,]', 'ft')
s = mw.ustring.gsub(s, '[Ii]nches', 'in')
s = mw.ustring.gsub(s, '[Ii]nch', 'in')
s = mw.ustring.gsub(s, 'ins', 'in')
s = mw.ustring.gsub(s, 'in[%.,]', 'in')
s = mw.ustring.gsub(s, '%[%[[Mm]%]%]s', '[[Metre|m]]')
s = mw.ustring.gsub(s, '%[%[[Mm]|[Mm]%]%]', '[[Metre|m]]')
s = mw.ustring.gsub(s, '%[%[[Cc]m%]%]s', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Cc]m|[Cc]m%]%]', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Cc]entim|cm%]%]', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Ii]n|in%]%]', '[[inch|in]]')
s = mw.ustring.gsub(s, '(%d)%s+[Cc][Mm]', '%1 cm')
s = mw.ustring.gsub(s, '(%d)%s+[Mm]', '%1 m')
s = mw.ustring.gsub(s, '(%d)%s+[Ff][Tt]', '%1 ft')
s = mw.ustring.gsub(s, '(%d)%s+[Ii][Nn]', '%1 in')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Cc][Mm]', '%1cm')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Mm]', '%1m')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ff][Tt]', '%1ft')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ii][Nn]', '%1in')
s = mw.ustring.gsub(s, '(%d)%s*[′\']%s*([%d]%d*)%s*[\"″]', '%1 ft %2 in')
return s
end
local function isnumber(s)
if s then
s = mw.ustring.gsub(s, '%+%s*%d+%s*/%s*%d+%s*$', '')
s = mw.ustring.gsub(s, '%s*1%s*/%s*2%s*$', '0.5')
return tonumber(s)
end
return nil
end
local function trimspace(s)
if s then
s = mw.ustring.gsub(s, '^%s*(.-)%s*$', '%1')
end
return s
end
local function force_unit(s, t)
s = mw.ustring.gsub(s, '&[Nn][Bb][Ss][Pp];', '★')
if (t == 'cm') then
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)m', '%1%2.%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2.%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)m', '%1%2%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)m', '%1%20%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%20%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)m', '%100.%2cm')
s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100.%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)m', '%100%2cm')
s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)m', '%100%2cm')
s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+cm)', '%1')
s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+%[%[[Cc]entimet[re][re]|cm%]%])', '%1')
else
s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)cm', '%1.%2%3m')
s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]')
s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)cm', '%1.%2%3m')
s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]')
s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)cm', '0.%1%2m')
s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]')
s = mw.ustring.gsub(s, '(%d%d)([★%s]+)cm', '0.%1%2m')
s = mw.ustring.gsub(s, '(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]')
end
s = mw.ustring.gsub(s, '★', ' ')
return s
end
local function get_convert_args(s, prefer, enforce, ri)
local prefer_m = (prefer or '') == 'm'
local force_m = (enforce or '') == 'm'
local prefer_cm = (prefer or '') == 'cm'
local force_cm = (enforce or '') == 'cm'
ri = (ri or '') == 'cmin' and 'cmin' or ''
unconverted = clean(s or '') -- basic unit cleaning
s = mw.ustring.gsub(unconverted, '&[Nn][Bb][Ss][Pp];', ' ')
local m = mw.ustring.find(s, 'm')
local c = mw.ustring.find(s, 'cm')
local f = mw.ustring.find(s, 'ft')
local i = mw.ustring.find(s, 'in')
if m == nil and f == nil and i == nil then
return '', unconverted
end
local adj = nil
if c ~= nil and f == nil and i == nil then
local n = mw.ustring.sub(s, 1, c - 1)
if isnumber(n) then
if force_m then
local prec = require("Module:Math")._precision(trimspace(n))
adj = (prec == 1) and 'ri3' or 'ri2'
end
if ri ~= '' then
adj = force_m and 'ri2' or 'ri0'
end
return force_m
and {n/100,'m','ftin',0,['abbr']='on', ['adj']=adj}
or {n,'cm','ftin',0,['abbr']='on', ['adj']=adj}, mw.ustring.sub(s, c+2)
end
return '', unconverted
end
if m ~= nil and c == nil and f == nil and i == nil then
local n = mw.ustring.sub(s, 1, m - 1)
if ri ~= '' then
adj = force_cm and 'ri0' or 'ri2'
end
if isnumber(n) then
return force_cm
and {n*100,'cm','ftin',0,['abbr']='on',['adj']=adj}
or {n,'m','ftin',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, m+1)
end
return '', unconverted
end
if f ~= nil and i ~=nil and m == nil then
local n1 = mw.ustring.sub(s, 1, f - 1)
local n2 = mw.ustring.sub(s, f+2, i - 1)
if isnumber(n1) and isnumber(n2) then
if ri ~= '' then
adj = 'ri0'
end
return (force_m or prefer_m)
and {n1,'ft',n2,'in', 'm',2,['abbr']='on',['adj']=adj}
or {n1,'ft',n2,'in', 'cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, i+2)
end
return '', unconverted
end
if f ~= nil and i == nil and m == nil then
local n = mw.ustring.sub(s, 1, f - 1)
if isnumber(n) then
if ri ~= '' then
local n2 = 12*(n - math.floor(n))
adj = 'ri0'
return (force_m or prefer_m)
and {math.floor(n),'ft',n2, 'in','m',2,['abbr']='on',['adj']=adj}
or {math.floor(n),'ft',n2,'in','cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, f+2)
end
return (force_m or prefer_m)
and {n,'ft','m',2,['abbr']='on'}
or {n,'ft','cm',0,['abbr']='on'}, mw.ustring.sub(s, f+2)
end
return '', unconverted
end
if i ~= nil and f == nil and m == nil then
local n = mw.ustring.sub(s, 1, i - 1)
if isnumber(n) then
if ri ~= '' then
adj = 'ri0'
end
return (force_m or prefer_m)
and {n,'in','m',2,['abbr']='on'}
or {n,'in','cm',0,['abbr']='on'}, mw.ustring.sub(s, i+2)
end
return '', unconverted
end
if force_cm and c == nil then
return '', force_unit(unconverted, 'cm')
end
if force_m and c ~= nil then
return '', force_unit(unconverted, 'm')
end
return '', unconverted
end
function convert(frame, args)
local str, suffix = splitsuffix(args[1] or '')
local targs, str = get_convert_args(str, args['prefer'] or '', args['enforce'] or '', args['ri'] or '')
str = str .. suffix
if type(targs) == 'table' then
return frame:expandTemplate{ title = 'convert', args = targs} .. str
else
return str
end
end
function p.main(frame)
return convert(frame, frame.args[1] and frame.args or frame:getParent().args)
end
return p
qnnushq2vmu70yabmkyqw9wjixj1a0z
73887
73886
2026-07-11T18:59:03Z
Robertsky
10424
1 versaun husi [[:en:Module:Person_height]]
73886
Scribunto
text/plain
-- This module implements [[Template:Infobox person/height]]
local p = {}
local function splitsuffix(s)
local suffix = ''
if mw.ustring.match(s,'^(.-)(<sup.*)$') then
local a = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%1')
local b = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%2')
s = a
suffix = b .. suffix
end
if mw.ustring.match(s,'^(.-)(%[%[[Cc]ategory:.*)$') then
local a = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%1')
local b = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%2')
s = a
suffix = b .. suffix
end
return s, suffix
end
local function clean(s)
s = mw.ustring.gsub(s, '(%d),(%d)', '%1.%2')
s = mw.ustring.gsub(s, '[Mm]etre', 'm')
s = mw.ustring.gsub(s, '([^a])meter', '%1m') -- prevents "parameter" from being changed to "param"
s = mw.ustring.gsub(s, '[Cc]enti', 'c') -- changes "centim" to "cm"
s = mw.ustring.gsub(s, 'ms', 'm')
s = mw.ustring.gsub(s, 'm[%.,]', 'm')
s = mw.ustring.gsub(s, '[Ff]eet', 'ft')
s = mw.ustring.gsub(s, 'foot', 'ft')
s = mw.ustring.gsub(s, 'ft[%.,]', 'ft')
s = mw.ustring.gsub(s, '[Ii]nches', 'in')
s = mw.ustring.gsub(s, '[Ii]nch', 'in')
s = mw.ustring.gsub(s, 'ins', 'in')
s = mw.ustring.gsub(s, 'in[%.,]', 'in')
s = mw.ustring.gsub(s, '%[%[[Mm]%]%]s', '[[Metre|m]]')
s = mw.ustring.gsub(s, '%[%[[Mm]|[Mm]%]%]', '[[Metre|m]]')
s = mw.ustring.gsub(s, '%[%[[Cc]m%]%]s', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Cc]m|[Cc]m%]%]', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Cc]entim|cm%]%]', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Ii]n|in%]%]', '[[inch|in]]')
s = mw.ustring.gsub(s, '(%d)%s+[Cc][Mm]', '%1 cm')
s = mw.ustring.gsub(s, '(%d)%s+[Mm]', '%1 m')
s = mw.ustring.gsub(s, '(%d)%s+[Ff][Tt]', '%1 ft')
s = mw.ustring.gsub(s, '(%d)%s+[Ii][Nn]', '%1 in')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Cc][Mm]', '%1cm')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Mm]', '%1m')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ff][Tt]', '%1ft')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ii][Nn]', '%1in')
s = mw.ustring.gsub(s, '(%d)%s*[′\']%s*([%d]%d*)%s*[\"″]', '%1 ft %2 in')
return s
end
local function isnumber(s)
if s then
s = mw.ustring.gsub(s, '%+%s*%d+%s*/%s*%d+%s*$', '')
s = mw.ustring.gsub(s, '%s*1%s*/%s*2%s*$', '0.5')
return tonumber(s)
end
return nil
end
local function trimspace(s)
if s then
s = mw.ustring.gsub(s, '^%s*(.-)%s*$', '%1')
end
return s
end
local function force_unit(s, t)
s = mw.ustring.gsub(s, '&[Nn][Bb][Ss][Pp];', '★')
if (t == 'cm') then
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)m', '%1%2.%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2.%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)m', '%1%2%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)m', '%1%20%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%20%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)m', '%100.%2cm')
s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100.%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)m', '%100%2cm')
s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)m', '%100%2cm')
s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+cm)', '%1')
s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+%[%[[Cc]entimet[re][re]|cm%]%])', '%1')
else
s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)cm', '%1.%2%3m')
s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]')
s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)cm', '%1.%2%3m')
s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]')
s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)cm', '0.%1%2m')
s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]')
s = mw.ustring.gsub(s, '(%d%d)([★%s]+)cm', '0.%1%2m')
s = mw.ustring.gsub(s, '(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]')
end
s = mw.ustring.gsub(s, '★', ' ')
return s
end
local function get_convert_args(s, prefer, enforce, ri)
local prefer_m = (prefer or '') == 'm'
local force_m = (enforce or '') == 'm'
local prefer_cm = (prefer or '') == 'cm'
local force_cm = (enforce or '') == 'cm'
ri = (ri or '') == 'cmin' and 'cmin' or ''
unconverted = clean(s or '') -- basic unit cleaning
s = mw.ustring.gsub(unconverted, '&[Nn][Bb][Ss][Pp];', ' ')
local m = mw.ustring.find(s, 'm')
local c = mw.ustring.find(s, 'cm')
local f = mw.ustring.find(s, 'ft')
local i = mw.ustring.find(s, 'in')
if m == nil and f == nil and i == nil then
return '', unconverted
end
local adj = nil
if c ~= nil and f == nil and i == nil then
local n = mw.ustring.sub(s, 1, c - 1)
if isnumber(n) then
if force_m then
local prec = require("Module:Math")._precision(trimspace(n))
adj = (prec == 1) and 'ri3' or 'ri2'
end
if ri ~= '' then
adj = force_m and 'ri2' or 'ri0'
end
return force_m
and {n/100,'m','ftin',0,['abbr']='on', ['adj']=adj}
or {n,'cm','ftin',0,['abbr']='on', ['adj']=adj}, mw.ustring.sub(s, c+2)
end
return '', unconverted
end
if m ~= nil and c == nil and f == nil and i == nil then
local n = mw.ustring.sub(s, 1, m - 1)
if ri ~= '' then
adj = force_cm and 'ri0' or 'ri2'
end
if isnumber(n) then
return force_cm
and {n*100,'cm','ftin',0,['abbr']='on',['adj']=adj}
or {n,'m','ftin',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, m+1)
end
return '', unconverted
end
if f ~= nil and i ~=nil and m == nil then
local n1 = mw.ustring.sub(s, 1, f - 1)
local n2 = mw.ustring.sub(s, f+2, i - 1)
if isnumber(n1) and isnumber(n2) then
if ri ~= '' then
adj = 'ri0'
end
return (force_m or prefer_m)
and {n1,'ft',n2,'in', 'm',2,['abbr']='on',['adj']=adj}
or {n1,'ft',n2,'in', 'cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, i+2)
end
return '', unconverted
end
if f ~= nil and i == nil and m == nil then
local n = mw.ustring.sub(s, 1, f - 1)
if isnumber(n) then
if ri ~= '' then
local n2 = 12*(n - math.floor(n))
adj = 'ri0'
return (force_m or prefer_m)
and {math.floor(n),'ft',n2, 'in','m',2,['abbr']='on',['adj']=adj}
or {math.floor(n),'ft',n2,'in','cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, f+2)
end
return (force_m or prefer_m)
and {n,'ft','m',2,['abbr']='on'}
or {n,'ft','cm',0,['abbr']='on'}, mw.ustring.sub(s, f+2)
end
return '', unconverted
end
if i ~= nil and f == nil and m == nil then
local n = mw.ustring.sub(s, 1, i - 1)
if isnumber(n) then
if ri ~= '' then
adj = 'ri0'
end
return (force_m or prefer_m)
and {n,'in','m',2,['abbr']='on'}
or {n,'in','cm',0,['abbr']='on'}, mw.ustring.sub(s, i+2)
end
return '', unconverted
end
if force_cm and c == nil then
return '', force_unit(unconverted, 'cm')
end
if force_m and c ~= nil then
return '', force_unit(unconverted, 'm')
end
return '', unconverted
end
function convert(frame, args)
local str, suffix = splitsuffix(args[1] or '')
local targs, str = get_convert_args(str, args['prefer'] or '', args['enforce'] or '', args['ri'] or '')
str = str .. suffix
if type(targs) == 'table' then
return frame:expandTemplate{ title = 'convert', args = targs} .. str
else
return str
end
end
function p.main(frame)
return convert(frame, frame.args[1] and frame.args or frame:getParent().args)
end
return p
qnnushq2vmu70yabmkyqw9wjixj1a0z
Template:Str ≠ len
10
8618
73890
2017-03-25T12:38:47Z
Jo-Jo Eumerus
4806
Changed protection level for "[[Template:Str ≠ len]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access]...
73890
wikitext
text/x-wiki
{{{{{|safesubst:}}}#ifexpr: {{{{{|safesubst:}}}#invoke:String|len|s={{{1|}}}}} != {{{2|0}}} <noinclude><!-- str >= len --></noinclude>
| {{{3|}}}
| {{{4|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
bjndedolj3rubo3o1o2kt0n4hoa36ki
73891
73890
2026-07-11T18:59:03Z
Robertsky
10424
1 versaun husi [[:en:Template:Str_≠_len]]
73890
wikitext
text/x-wiki
{{{{{|safesubst:}}}#ifexpr: {{{{{|safesubst:}}}#invoke:String|len|s={{{1|}}}}} != {{{2|0}}} <noinclude><!-- str >= len --></noinclude>
| {{{3|}}}
| {{{4|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
bjndedolj3rubo3o1o2kt0n4hoa36ki
Template:YEAR
10
8619
73894
2021-08-17T01:21:54Z
MusikBot II
11671
Changed protection settings for "[[Template:YEAR]]": [[Wikipedia:High-risk templates|High-risk template or module]] 62847 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
73894
wikitext
text/x-wiki
<includeonly>{{#if: {{{1|}}}
|{{#iferror:{{#time:Y|1 January {{{1|}}} }}
|{{#iferror:{{#time:Y|{{{1|}}} }}
|{{#ifeq:{{{2|}}}|{{{2}}}|error|{{error|Error}}}}
|{{#time:Y|{{{1|}}} }} }}
|{{#time:Y|1 January {{{1|}}} }} }}
|{{CURRENTYEAR}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
6pkr8ifd4do88keroffs6jc441jh1za
73895
73894
2026-07-11T18:59:04Z
Robertsky
10424
1 versaun husi [[:en:Template:YEAR]]
73894
wikitext
text/x-wiki
<includeonly>{{#if: {{{1|}}}
|{{#iferror:{{#time:Y|1 January {{{1|}}} }}
|{{#iferror:{{#time:Y|{{{1|}}} }}
|{{#ifeq:{{{2|}}}|{{{2}}}|error|{{error|Error}}}}
|{{#time:Y|{{{1|}}} }} }}
|{{#time:Y|1 January {{{1|}}} }} }}
|{{CURRENTYEAR}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
6pkr8ifd4do88keroffs6jc441jh1za
Template:Indented plainlist
10
8620
73896
2026-04-20T18:00:09Z
MusikBot II
11671
Changed protection settings for "[[Template:Indented plainlist]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2513 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
73896
wikitext
text/x-wiki
{{plainlist|class={{{class|}}}|style=margin-left:{{{in|{{{indent|1em}}}}}};text-indent:-{{{in|{{{indent|1em}}}}}};{{{style|}}}}}{{#if:{{{1|}}}|
{{{1}}}
{{endplainlist}}}}<noinclude></div>
{{documentation}}
</noinclude>
9pwqbwr77qreu5ic9nufyjxuxbhv4cn
73897
73896
2026-07-11T18:59:04Z
Robertsky
10424
1 versaun husi [[:en:Template:Indented_plainlist]]
73896
wikitext
text/x-wiki
{{plainlist|class={{{class|}}}|style=margin-left:{{{in|{{{indent|1em}}}}}};text-indent:-{{{in|{{{indent|1em}}}}}};{{{style|}}}}}{{#if:{{{1|}}}|
{{{1}}}
{{endplainlist}}}}<noinclude></div>
{{documentation}}
</noinclude>
9pwqbwr77qreu5ic9nufyjxuxbhv4cn
Template:Count
10
8621
73898
2022-08-11T14:32:42Z
Neveselbert
11759
cr.
73898
wikitext
text/x-wiki
{{safesubst<noinclude/>:#ifexpr:{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}>0|{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}|{{{base|0}}}}}<noinclude>{{documentation}}</noinclude>
nxgj5k0v7d0slmbxwqstpth3pxp36v7
73899
73898
2026-07-11T18:59:05Z
Robertsky
10424
1 versaun husi [[:en:Template:Count]]
73898
wikitext
text/x-wiki
{{safesubst<noinclude/>:#ifexpr:{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}>0|{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}|{{{base|0}}}}}<noinclude>{{documentation}}</noinclude>
nxgj5k0v7d0slmbxwqstpth3pxp36v7
Template:Tomorrow
10
8622
73900
2017-03-25T12:38:48Z
Jo-Jo Eumerus
4806
Changed protection level for "[[Template:Tomorrow]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (i...
73900
wikitext
text/x-wiki
{{#switch:{{{1}}}
|long={{#time:F"{{{2| }}}"j",{{{2| }}}"Y|+1 day}}
|num={{#time:n"{{{2| }}}"j|+1 day}}
|#default={{#time:F"{{{2| }}}"j|+1 day}}
}}<noinclude>{{Documentation}}</noinclude>
b0ep5vap4y7luyxxv40z3l06wr11u1q
73901
73900
2026-07-11T18:59:05Z
Robertsky
10424
1 versaun husi [[:en:Template:Tomorrow]]
73900
wikitext
text/x-wiki
{{#switch:{{{1}}}
|long={{#time:F"{{{2| }}}"j",{{{2| }}}"Y|+1 day}}
|num={{#time:n"{{{2| }}}"j|+1 day}}
|#default={{#time:F"{{{2| }}}"j|+1 day}}
}}<noinclude>{{Documentation}}</noinclude>
b0ep5vap4y7luyxxv40z3l06wr11u1q
Módulo:Parameter validation
828
8623
73902
2026-05-15T13:39:27Z
MSGJ
11655
tweaks by [[User:Mr. Starfleet Command]]
73902
Scribunto
text/plain
local util = {
empty = function( s )
return s == nil or type( s ) == 'string' and mw.text.trim( s ) == ''
end,
extract_options = function ( frame, optionsPrefix )
optionsPrefix = optionsPrefix or 'options'
local options, n = {}
if frame.args.module_options then
local module_options = mw.loadData( frame.args.module_options )
if type( module_options ) ~= 'table' then return {} end
local title = mw.title.getCurrentTitle()
local local_ptions = module_options[ title.namespace ] or module_options[ title.nsText ] or {}
for k, v in pairs( local_ptions ) do options[k] = v end
end
repeat
local ok, more = pcall( mw.text.jsonDecode, frame.args[optionsPrefix .. ( n or '' )] )
if ok and type( more ) == 'table' then
for k, v in pairs( more ) do options[k] = v end
end
n = ( n or 0 ) + 1
until not ok
return options
end,
build_namelist = function ( template_name, sp )
local res = { template_name }
if sp then
if type( sp ) == 'string' then sp = { sp } end
for _, p in ipairs( sp ) do table.insert( res, template_name .. '/' .. p ) end
end
return res
end,
table_empty = function( t ) -- normally, test if next(t) is nil, but for some perverse reason, non-empty tables returned by loadData return nil...
if type( t ) ~= 'table' then return true end
if #t > 0 then return false end
return true
end,
}
local function _readTemplateData( templateName )
local title = mw.title.makeTitle( 0, templateName )
local templateContent = title and title.exists and title:getContent() -- template's raw content
local capture = templateContent and mw.ustring.match( templateContent, '<templatedata%s*>(.*)</templatedata%s*>' ) -- templatedata as text
-- capture = capture and mw.ustring.gsub( capture, '"(%d+)"', tonumber ) -- convert "1": {} to 1: {}. frame.args uses numerical indexes for order-based params.
local trailingComma = capture and mw.ustring.find( capture, ',%s*[%]%}]' ) -- look for ,] or ,} : jsonDecode allows it, but it's verbotten in json
if capture and not trailingComma then return pcall( mw.text.jsonDecode, capture ) end
return false
end
local function readTemplateData( templateName )
for _, name in ipairs( templateName ) do
local td, result = _readTemplateData( name )
if td then return result end
end
return nil
end
-- this is the function to be called by other modules. it expects the frame, and then an optional list of subpages, e.g. { "Documentation" }.
-- if second parameter is nil, only template page will be searched for templatedata.
local function calculateViolations( frame, subpages )
-- used for parameter type validy test. keyed by TD 'type' string. values are function(val) returning bool.
local type_validators = {
['number'] = function( s ) return mw.language.getContentLanguage():parseFormattedNumber( s ) end
}
local function compatible( typ, val )
local func = type_validators[typ]
return type( func ) ~= 'function' or util.empty( val ) or func( val )
end
local t_frame = frame:getParent()
local t_args, template_name = t_frame.args, t_frame:getTitle()
template_name = mw.ustring.gsub( template_name, '/sandbox', '', 1 )
local td_source = util.build_namelist( template_name, subpages )
if frame.args.td_source then
table.insert(td_source, frame.args.td_source)
end
local templatedata = readTemplateData( td_source )
local td_params = templatedata and templatedata.params
local all_aliases = {}
if not td_params then return { ['no-templatedata'] = { [''] = '' } } end
-- from this point on, we know templatedata is valid.
local res = {} -- before returning to caller, we'll prune empty tables
-- allow for aliases
for x, p in pairs( td_params ) do
for y, alias in ipairs( p.aliases or {} ) do
p.primary = x
td_params[x] = p
all_aliases[alias] = p
if tonumber(alias) then all_aliases[tonumber(alias)] = p end
end
end
-- handle undeclared and deprecated
local already_seen = {}
local series = frame.args.series
for p_name, value in pairs( t_args ) do
local tp_param, noval, numeric = td_params[p_name] or all_aliases[p_name], util.empty( value ), tonumber( p_name )
local table_name
local hasval = not noval
if not tp_param and series then -- 2nd chance. check to see if series
for s_name, p in pairs(td_params) do
if mw.ustring.match( p_name, '^' .. s_name .. '%d+' .. '$') then
-- mw.log('found p_name ' .. p_name .. ' s_name:' .. s_name, ' p is:', p) debugging series support
tp_param = p
end -- don't bother breaking. td always correct.
end
end
if not tp_param then -- not in TD: this is called undeclared
-- calculate the relevant table for this undeclared parameter, based on parameter and value types
table_name =
noval and numeric and 'empty-undeclared-numeric' or
noval and not numeric and 'empty-undeclared' or
hasval and numeric and 'undeclared-numeric' or
'undeclared' -- tzvototi nishar.
else -- in td: test for deprecation and mistype. if deprecated, no further tests
table_name = tp_param.deprecated and hasval and 'deprecated'
or tp_param.deprecated and noval and 'empty-deprecated'
or not compatible( tp_param.type, value ) and 'incompatible'
or not series and already_seen[tp_param] and hasval and 'duplicate'
if hasval and table_name ~= 'duplicate' then
already_seen[tp_param] = p_name
end
end
-- report it.
if table_name then
res[table_name] = res[table_name] or {}
if table_name == 'duplicate' then
local primary_param = tp_param.primary
local primaryData = res[table_name][primary_param]
if not primaryData then
primaryData = {}
table.insert(primaryData, already_seen[tp_param])
end
table.insert(primaryData, p_name)
res[table_name][primary_param] = primaryData
else
res[table_name][p_name] = value
end
end
end
-- check for empty/missing parameters declared "required"
for p_name, param in pairs( td_params ) do
if param.required and util.empty( t_args[p_name] ) then
local is_alias
for _, alias in ipairs( param.aliases or {} ) do is_alias = is_alias or not util.empty( t_args[alias] ) end
if not is_alias then
res['empty-required'] = res['empty-required'] or {}
res['empty-required'][p_name] = ''
end
end
end
mw.logObject(res)
return res
end
-- wraps report in hidden frame
local function wrapReport(report, template_name, options)
mw.logObject(report)
if util.empty( report ) then return '' end
local naked = mw.title.new( template_name ).text
naked = mw.ustring.gsub(naked, 'Infobox', 'infobox', 1)
report = ( options['wrapper-prefix'] or '<div class="paramvalidator-wrapper"><span class="paramvalidator-error">' )
.. report
.. ( options['wrapper-suffix'] or '</span></div>' )
report = mw.ustring.gsub( report, 'tname_naked', naked )
report = mw.ustring.gsub( report, 'templatename', template_name )
return report
end
-- this is the "user" version, called with {{#invoke:}} returns a string, as defined by the options parameter
local function validateParams( frame )
local options, report, template_name = util.extract_options( frame ), '', frame:getParent():getTitle()
local ignore = function( p_name )
for _, pattern in ipairs( options.ignore or {} ) do
if mw.ustring.match( p_name, '^' .. pattern .. '$' ) then return true end
end
return false
end
local replace_macros = function( error_type, s, param_names )
local function concat_and_escape( t , sep )
sep = sep or ', '
return ( mw.ustring.gsub( table.concat( t, sep ), '%%', '%%%%' ) )
end
if s and ( type( param_names ) == 'table' ) then
local k_ar, kv_ar = {}, {}
for k, v in pairs( param_names ) do
table.insert( k_ar, k )
if type(v) == 'table' then
v = table.concat(v, ', ')
end
if error_type == 'duplicate' then
table.insert( kv_ar, v)
else
table.insert( kv_ar, k .. ': ' .. v)
end
end
s = mw.ustring.gsub( s, 'paramname', concat_and_escape( k_ar ) )
s = mw.ustring.gsub( s, 'paramandvalue', concat_and_escape( kv_ar, ' AND ' ) )
if mw.getCurrentFrame():preprocess( '{{REVISIONID}}' ) ~= '' then
s = mw.ustring.gsub( s, '<div.*<%/div>', '', 1 )
end
end
return s
end
local report_params = function( key, param_names )
local res = replace_macros( key, options[key], param_names )
res = frame:preprocess(res or '')
report = report .. ( res or '' )
return res
end
-- no option no work.
if util.table_empty( options ) then return '' end
-- get the errors.
local violations = calculateViolations( frame, options['doc-subpage'] )
-- special request of bora: use skip_empty_numeric
if violations['empty-undeclared-numeric'] then
for i = 1, tonumber( options['skip-empty-numeric'] ) or 0 do
violations['empty-undeclared-numeric'][i] = nil
end
end
-- handle ignore list, and prune empty violations - in that order!
local offenders = 0
for name, tab in pairs( violations ) do
-- remove ignored parameters from all violations
for pname in pairs( tab ) do if ignore( pname ) then tab[pname] = nil end end
-- prune empty violations
if util.table_empty( tab ) then violations[name] = nil end
-- WORK IS DONE. report the errors.
-- if report then count it.
if violations[name] and report_params( name, tab ) then offenders = offenders + 1 end
end
if offenders > 1 then report_params( 'multiple' ) end
if offenders ~= 0 then report_params( 'any' ) end -- could have tested for empty( report ), but since we count them anyway...
return wrapReport(report, template_name, options)
end
return {
['validateparams'] = validateParams,
['calculateViolations'] = calculateViolations,
['wrapReport'] = wrapReport
}
b2xz8kqfrgct90ewowjyfx1v5w9ke5h
73903
73902
2026-07-11T18:59:05Z
Robertsky
10424
1 versaun husi [[:en:Module:Parameter_validation]]
73902
Scribunto
text/plain
local util = {
empty = function( s )
return s == nil or type( s ) == 'string' and mw.text.trim( s ) == ''
end,
extract_options = function ( frame, optionsPrefix )
optionsPrefix = optionsPrefix or 'options'
local options, n = {}
if frame.args.module_options then
local module_options = mw.loadData( frame.args.module_options )
if type( module_options ) ~= 'table' then return {} end
local title = mw.title.getCurrentTitle()
local local_ptions = module_options[ title.namespace ] or module_options[ title.nsText ] or {}
for k, v in pairs( local_ptions ) do options[k] = v end
end
repeat
local ok, more = pcall( mw.text.jsonDecode, frame.args[optionsPrefix .. ( n or '' )] )
if ok and type( more ) == 'table' then
for k, v in pairs( more ) do options[k] = v end
end
n = ( n or 0 ) + 1
until not ok
return options
end,
build_namelist = function ( template_name, sp )
local res = { template_name }
if sp then
if type( sp ) == 'string' then sp = { sp } end
for _, p in ipairs( sp ) do table.insert( res, template_name .. '/' .. p ) end
end
return res
end,
table_empty = function( t ) -- normally, test if next(t) is nil, but for some perverse reason, non-empty tables returned by loadData return nil...
if type( t ) ~= 'table' then return true end
if #t > 0 then return false end
return true
end,
}
local function _readTemplateData( templateName )
local title = mw.title.makeTitle( 0, templateName )
local templateContent = title and title.exists and title:getContent() -- template's raw content
local capture = templateContent and mw.ustring.match( templateContent, '<templatedata%s*>(.*)</templatedata%s*>' ) -- templatedata as text
-- capture = capture and mw.ustring.gsub( capture, '"(%d+)"', tonumber ) -- convert "1": {} to 1: {}. frame.args uses numerical indexes for order-based params.
local trailingComma = capture and mw.ustring.find( capture, ',%s*[%]%}]' ) -- look for ,] or ,} : jsonDecode allows it, but it's verbotten in json
if capture and not trailingComma then return pcall( mw.text.jsonDecode, capture ) end
return false
end
local function readTemplateData( templateName )
for _, name in ipairs( templateName ) do
local td, result = _readTemplateData( name )
if td then return result end
end
return nil
end
-- this is the function to be called by other modules. it expects the frame, and then an optional list of subpages, e.g. { "Documentation" }.
-- if second parameter is nil, only template page will be searched for templatedata.
local function calculateViolations( frame, subpages )
-- used for parameter type validy test. keyed by TD 'type' string. values are function(val) returning bool.
local type_validators = {
['number'] = function( s ) return mw.language.getContentLanguage():parseFormattedNumber( s ) end
}
local function compatible( typ, val )
local func = type_validators[typ]
return type( func ) ~= 'function' or util.empty( val ) or func( val )
end
local t_frame = frame:getParent()
local t_args, template_name = t_frame.args, t_frame:getTitle()
template_name = mw.ustring.gsub( template_name, '/sandbox', '', 1 )
local td_source = util.build_namelist( template_name, subpages )
if frame.args.td_source then
table.insert(td_source, frame.args.td_source)
end
local templatedata = readTemplateData( td_source )
local td_params = templatedata and templatedata.params
local all_aliases = {}
if not td_params then return { ['no-templatedata'] = { [''] = '' } } end
-- from this point on, we know templatedata is valid.
local res = {} -- before returning to caller, we'll prune empty tables
-- allow for aliases
for x, p in pairs( td_params ) do
for y, alias in ipairs( p.aliases or {} ) do
p.primary = x
td_params[x] = p
all_aliases[alias] = p
if tonumber(alias) then all_aliases[tonumber(alias)] = p end
end
end
-- handle undeclared and deprecated
local already_seen = {}
local series = frame.args.series
for p_name, value in pairs( t_args ) do
local tp_param, noval, numeric = td_params[p_name] or all_aliases[p_name], util.empty( value ), tonumber( p_name )
local table_name
local hasval = not noval
if not tp_param and series then -- 2nd chance. check to see if series
for s_name, p in pairs(td_params) do
if mw.ustring.match( p_name, '^' .. s_name .. '%d+' .. '$') then
-- mw.log('found p_name ' .. p_name .. ' s_name:' .. s_name, ' p is:', p) debugging series support
tp_param = p
end -- don't bother breaking. td always correct.
end
end
if not tp_param then -- not in TD: this is called undeclared
-- calculate the relevant table for this undeclared parameter, based on parameter and value types
table_name =
noval and numeric and 'empty-undeclared-numeric' or
noval and not numeric and 'empty-undeclared' or
hasval and numeric and 'undeclared-numeric' or
'undeclared' -- tzvototi nishar.
else -- in td: test for deprecation and mistype. if deprecated, no further tests
table_name = tp_param.deprecated and hasval and 'deprecated'
or tp_param.deprecated and noval and 'empty-deprecated'
or not compatible( tp_param.type, value ) and 'incompatible'
or not series and already_seen[tp_param] and hasval and 'duplicate'
if hasval and table_name ~= 'duplicate' then
already_seen[tp_param] = p_name
end
end
-- report it.
if table_name then
res[table_name] = res[table_name] or {}
if table_name == 'duplicate' then
local primary_param = tp_param.primary
local primaryData = res[table_name][primary_param]
if not primaryData then
primaryData = {}
table.insert(primaryData, already_seen[tp_param])
end
table.insert(primaryData, p_name)
res[table_name][primary_param] = primaryData
else
res[table_name][p_name] = value
end
end
end
-- check for empty/missing parameters declared "required"
for p_name, param in pairs( td_params ) do
if param.required and util.empty( t_args[p_name] ) then
local is_alias
for _, alias in ipairs( param.aliases or {} ) do is_alias = is_alias or not util.empty( t_args[alias] ) end
if not is_alias then
res['empty-required'] = res['empty-required'] or {}
res['empty-required'][p_name] = ''
end
end
end
mw.logObject(res)
return res
end
-- wraps report in hidden frame
local function wrapReport(report, template_name, options)
mw.logObject(report)
if util.empty( report ) then return '' end
local naked = mw.title.new( template_name ).text
naked = mw.ustring.gsub(naked, 'Infobox', 'infobox', 1)
report = ( options['wrapper-prefix'] or '<div class="paramvalidator-wrapper"><span class="paramvalidator-error">' )
.. report
.. ( options['wrapper-suffix'] or '</span></div>' )
report = mw.ustring.gsub( report, 'tname_naked', naked )
report = mw.ustring.gsub( report, 'templatename', template_name )
return report
end
-- this is the "user" version, called with {{#invoke:}} returns a string, as defined by the options parameter
local function validateParams( frame )
local options, report, template_name = util.extract_options( frame ), '', frame:getParent():getTitle()
local ignore = function( p_name )
for _, pattern in ipairs( options.ignore or {} ) do
if mw.ustring.match( p_name, '^' .. pattern .. '$' ) then return true end
end
return false
end
local replace_macros = function( error_type, s, param_names )
local function concat_and_escape( t , sep )
sep = sep or ', '
return ( mw.ustring.gsub( table.concat( t, sep ), '%%', '%%%%' ) )
end
if s and ( type( param_names ) == 'table' ) then
local k_ar, kv_ar = {}, {}
for k, v in pairs( param_names ) do
table.insert( k_ar, k )
if type(v) == 'table' then
v = table.concat(v, ', ')
end
if error_type == 'duplicate' then
table.insert( kv_ar, v)
else
table.insert( kv_ar, k .. ': ' .. v)
end
end
s = mw.ustring.gsub( s, 'paramname', concat_and_escape( k_ar ) )
s = mw.ustring.gsub( s, 'paramandvalue', concat_and_escape( kv_ar, ' AND ' ) )
if mw.getCurrentFrame():preprocess( '{{REVISIONID}}' ) ~= '' then
s = mw.ustring.gsub( s, '<div.*<%/div>', '', 1 )
end
end
return s
end
local report_params = function( key, param_names )
local res = replace_macros( key, options[key], param_names )
res = frame:preprocess(res or '')
report = report .. ( res or '' )
return res
end
-- no option no work.
if util.table_empty( options ) then return '' end
-- get the errors.
local violations = calculateViolations( frame, options['doc-subpage'] )
-- special request of bora: use skip_empty_numeric
if violations['empty-undeclared-numeric'] then
for i = 1, tonumber( options['skip-empty-numeric'] ) or 0 do
violations['empty-undeclared-numeric'][i] = nil
end
end
-- handle ignore list, and prune empty violations - in that order!
local offenders = 0
for name, tab in pairs( violations ) do
-- remove ignored parameters from all violations
for pname in pairs( tab ) do if ignore( pname ) then tab[pname] = nil end end
-- prune empty violations
if util.table_empty( tab ) then violations[name] = nil end
-- WORK IS DONE. report the errors.
-- if report then count it.
if violations[name] and report_params( name, tab ) then offenders = offenders + 1 end
end
if offenders > 1 then report_params( 'multiple' ) end
if offenders ~= 0 then report_params( 'any' ) end -- could have tested for empty( report ), but since we count them anyway...
return wrapReport(report, template_name, options)
end
return {
['validateparams'] = validateParams,
['calculateViolations'] = calculateViolations,
['wrapReport'] = wrapReport
}
b2xz8kqfrgct90ewowjyfx1v5w9ke5h
Módulo:Parameter validation/default config
828
8624
73904
2026-05-15T13:38:37Z
MSGJ
11655
tweaks by [[User:Mr. Starfleet Command]]
73904
Scribunto
text/plain
local function create_message(msg)
return require('Module:If preview')._warning({
mw.ustring.format('[[templatename]] used with %s.', msg)
})
end
local function create(cat, msg)
return mw.ustring.format('{{main other|[[Category:Pages using tname_naked with %s parameters]]}}', cat) .. create_message(msg)
end
local options = {
['undeclared'] = create('unknown', 'unknown parameter(s): paramname'),
['deprecated'] = create('deprecated', 'deprecated parameter(s): paramname'),
['duplicate'] = create('duplicate', 'duplicate parameter(s): paramandvalue'),
['doc-subpage'] = 'doc',
}
local result = {
[0] = options,
[2] = options,
[4] = options,
[6] = options,
[10] = options,
[12] = options,
[14] = options,
}
return result
5q8hbkx98zpullg796znnwqi8pmpmz7
73905
73904
2026-07-11T18:59:05Z
Robertsky
10424
1 versaun husi [[:en:Module:Parameter_validation/default_config]]
73904
Scribunto
text/plain
local function create_message(msg)
return require('Module:If preview')._warning({
mw.ustring.format('[[templatename]] used with %s.', msg)
})
end
local function create(cat, msg)
return mw.ustring.format('{{main other|[[Category:Pages using tname_naked with %s parameters]]}}', cat) .. create_message(msg)
end
local options = {
['undeclared'] = create('unknown', 'unknown parameter(s): paramname'),
['deprecated'] = create('deprecated', 'deprecated parameter(s): paramname'),
['duplicate'] = create('duplicate', 'duplicate parameter(s): paramandvalue'),
['doc-subpage'] = 'doc',
}
local result = {
[0] = options,
[2] = options,
[4] = options,
[6] = options,
[10] = options,
[12] = options,
[14] = options,
}
return result
5q8hbkx98zpullg796znnwqi8pmpmz7
Template:!mxt
10
8625
73906
2026-04-03T01:44:40Z
Primefac
11658
Primefac moved page [[Template:!mxt]] to [[Template:Example text monospaced bad]]: expand name for clarity
73906
wikitext
text/x-wiki
#REDIRECT [[Template:Example text monospaced bad]]
{{Redirect category shell|
{{R from move}}
}}
cub4fzmiupa7knvtn7x39nnrn7l239n
73907
73906
2026-07-11T18:59:05Z
Robertsky
10424
1 versaun husi [[:en:Template:!mxt]]
73906
wikitext
text/x-wiki
#REDIRECT [[Template:Example text monospaced bad]]
{{Redirect category shell|
{{R from move}}
}}
cub4fzmiupa7knvtn7x39nnrn7l239n
Template:When on basepage
10
8626
73908
2025-08-04T23:52:55Z
Theknightwho
11677
Make substable.
73908
wikitext
text/x-wiki
{{safesubst:<noinclude/>#switch:
<!--If no or empty "page" parameter then detect
basepage/subpage/subsubpage-->
{{safesubst:<noinclude/>#if:{{{page|}}}
| {{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#titleparts:{{{page}}}|0|3}}
| subsubpage <noinclude><!-- Subsubpage or lower --></noinclude>
| {{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#titleparts:{{{page}}}|0|2}}
| subpage
| basepage
}}
}}
| {{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#titleparts:{{safesubst:<noinclude/>FULLPAGENAME}}|0|3}}
| subsubpage <noinclude><!-- Subsubpage or lower --></noinclude>
| {{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#titleparts:{{safesubst:<noinclude/>FULLPAGENAME}}|0|2}}
| subpage
| basepage
}}
}}
}}
| basepage = {{{1|}}}
| subpage = {{{2|}}}
| subsubpage = {{{3| {{{2|}}} }}} <noinclude><!-- Respecting empty parameter on purpose --></noinclude>
}}<noinclude><!-- End switch -->
{{Documentation}}
</noinclude>
pnrmop1xf89eekro22mpghvvgjgo4qd
73909
73908
2026-07-11T18:59:06Z
Robertsky
10424
1 versaun husi [[:en:Template:When_on_basepage]]
73908
wikitext
text/x-wiki
{{safesubst:<noinclude/>#switch:
<!--If no or empty "page" parameter then detect
basepage/subpage/subsubpage-->
{{safesubst:<noinclude/>#if:{{{page|}}}
| {{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#titleparts:{{{page}}}|0|3}}
| subsubpage <noinclude><!-- Subsubpage or lower --></noinclude>
| {{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#titleparts:{{{page}}}|0|2}}
| subpage
| basepage
}}
}}
| {{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#titleparts:{{safesubst:<noinclude/>FULLPAGENAME}}|0|3}}
| subsubpage <noinclude><!-- Subsubpage or lower --></noinclude>
| {{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#titleparts:{{safesubst:<noinclude/>FULLPAGENAME}}|0|2}}
| subpage
| basepage
}}
}}
}}
| basepage = {{{1|}}}
| subpage = {{{2|}}}
| subsubpage = {{{3| {{{2|}}} }}} <noinclude><!-- Respecting empty parameter on purpose --></noinclude>
}}<noinclude><!-- End switch -->
{{Documentation}}
</noinclude>
pnrmop1xf89eekro22mpghvvgjgo4qd
Template:Film- and television-related infobox templates
10
8627
73910
2024-08-26T19:17:05Z
Gonnym
11662
73910
wikitext
text/x-wiki
{{Navbox
| name = Film- and television-related infobox templates
| title = Film- and television-related infobox templates
| listclass = hlist
| state = {{{state|autocollapse}}}
| group1 = [[Wikipedia:List of infoboxes#Film|Film]]
| list1 =
* [[Template:Infobox film|Film]]
** [[Template:Infobox film/short description|/short description]]
* [[Template:Infobox film or theatre festival|Film or theatre festival]]
* [[Template:Infobox art movement|Art movement]]
* [[Template:Infobox cinema market|Cinema market]]
* [[Template:Infobox movie quote|Movie quote]]
| group2 = [[Wikipedia:List of infoboxes#Television|Television]]
| list2 =
* [[Template:Infobox television|Television]]
** [[Template:Infobox television/Short description|/Short description]]
* [[Template:Infobox television season|Television season]]
** [[Template:Infobox reality competition season|Reality competition season]]
* [[Template:Infobox television episode|Television episode]]
** [[Template:Infobox television crossover episode|crossover]]
*** [[Template:Infobox television crossover episode/part|/part]]
** ''[[Template:Infobox Doctor Who episode|Doctor Who]]''
** ''[[Template:Infobox Futurama episode|Futurama]]''
** ''[[Template:Infobox Simpsons episode|Simpsons]]''
* [[Template:Infobox animanga/Video|Animanga]]
| group3 = Misc video
| list3 =
* ''[[Template:Infobox Paris by Night|Paris by Night]]''
* [[Template:Infobox machinima|Machinima]]
| group4 = Industry
| list4 =
* [[Template:Infobox award|Award]]
* [[Template:Infobox awards list|Awards list]]
* [[Template:Infobox film awards|Film awards]]
** [[Template:Infobox film awards/link|/link]]
** [[Template:Infobox film awards/style|/style]]
* [[Template:Infobox broadcasting network|Broadcasting network]]
* [[Template:Infobox television channel|Television channel]]
* [[Template:Infobox television station|Television station]]
* [[Template:Infobox programming block|Programming block]]
* [[Template:Infobox presenter|Presenter]]
| group5 = [[Wikipedia:List of infoboxes#Photography|Technical]]
| list5 =
* [[Template:Infobox camera|Camera]]
* [[Template:Infobox movie camera|Movie camera]]
* [[Template:Infobox camera mount|Camera mount]]
* [[Template:Infobox photographic lens|Photographic lens]]
* [[Template:Infobox lens design|Lens design]]
* [[Template:Infobox photographic film|Photographic film]]
| group6 = [[Wikipedia:List of infoboxes#Fictional elements|Fiction]]
| list6 =
* [[Template:Infobox fictional artifact|Artifact]]
* [[Template:Infobox character|Character]]
** [[Template:Infobox Doctor Who doctor|Doctor Who doctor]]
** [[Template:Infobox G.I. Joe character|''G.I. Joe'']]
** [[Template:Infobox soap character|Soap opera]]
* [[Template:Infobox fictional family|Family]]
** [[Template:Infobox fictional family/member|Family member]]
* [[Template:Infobox fictional location|Location]]
* [[Template:Infobox fictional organisation|Organisation]]
* [[Template:Infobox fictional race|Race]]
* [[Template:Infobox fictional vehicle|Vehicle]]
| group7 = Template modules
| list7 =
* [[Template:Infobox name module|Name module]]
* [[Template:Based on|Based on]]
* [[Template:Infobox person|Person]]
* [[Template:Listen|Listen]]
| group8 = Related
| list8 =
* [[Template:Infobox advertising|Advertising]]
* [[Template:Infobox media franchise|Media franchise]]
* [[Template:Infobox audio drama|Audio drama]]
* [[Template:Infobox podcast|Podcast]]
* [[Template:Infobox radio station|Radio station]]
* [[Template:Infobox radio show|Radio show]]
}}<noinclude>
{{Documentation}}
</noinclude>
f8ik4bsipy145ylrinaubi93ilbrurb
73911
73910
2026-07-11T18:59:06Z
Robertsky
10424
1 versaun husi [[:en:Template:Film-_and_television-related_infobox_templates]]
73910
wikitext
text/x-wiki
{{Navbox
| name = Film- and television-related infobox templates
| title = Film- and television-related infobox templates
| listclass = hlist
| state = {{{state|autocollapse}}}
| group1 = [[Wikipedia:List of infoboxes#Film|Film]]
| list1 =
* [[Template:Infobox film|Film]]
** [[Template:Infobox film/short description|/short description]]
* [[Template:Infobox film or theatre festival|Film or theatre festival]]
* [[Template:Infobox art movement|Art movement]]
* [[Template:Infobox cinema market|Cinema market]]
* [[Template:Infobox movie quote|Movie quote]]
| group2 = [[Wikipedia:List of infoboxes#Television|Television]]
| list2 =
* [[Template:Infobox television|Television]]
** [[Template:Infobox television/Short description|/Short description]]
* [[Template:Infobox television season|Television season]]
** [[Template:Infobox reality competition season|Reality competition season]]
* [[Template:Infobox television episode|Television episode]]
** [[Template:Infobox television crossover episode|crossover]]
*** [[Template:Infobox television crossover episode/part|/part]]
** ''[[Template:Infobox Doctor Who episode|Doctor Who]]''
** ''[[Template:Infobox Futurama episode|Futurama]]''
** ''[[Template:Infobox Simpsons episode|Simpsons]]''
* [[Template:Infobox animanga/Video|Animanga]]
| group3 = Misc video
| list3 =
* ''[[Template:Infobox Paris by Night|Paris by Night]]''
* [[Template:Infobox machinima|Machinima]]
| group4 = Industry
| list4 =
* [[Template:Infobox award|Award]]
* [[Template:Infobox awards list|Awards list]]
* [[Template:Infobox film awards|Film awards]]
** [[Template:Infobox film awards/link|/link]]
** [[Template:Infobox film awards/style|/style]]
* [[Template:Infobox broadcasting network|Broadcasting network]]
* [[Template:Infobox television channel|Television channel]]
* [[Template:Infobox television station|Television station]]
* [[Template:Infobox programming block|Programming block]]
* [[Template:Infobox presenter|Presenter]]
| group5 = [[Wikipedia:List of infoboxes#Photography|Technical]]
| list5 =
* [[Template:Infobox camera|Camera]]
* [[Template:Infobox movie camera|Movie camera]]
* [[Template:Infobox camera mount|Camera mount]]
* [[Template:Infobox photographic lens|Photographic lens]]
* [[Template:Infobox lens design|Lens design]]
* [[Template:Infobox photographic film|Photographic film]]
| group6 = [[Wikipedia:List of infoboxes#Fictional elements|Fiction]]
| list6 =
* [[Template:Infobox fictional artifact|Artifact]]
* [[Template:Infobox character|Character]]
** [[Template:Infobox Doctor Who doctor|Doctor Who doctor]]
** [[Template:Infobox G.I. Joe character|''G.I. Joe'']]
** [[Template:Infobox soap character|Soap opera]]
* [[Template:Infobox fictional family|Family]]
** [[Template:Infobox fictional family/member|Family member]]
* [[Template:Infobox fictional location|Location]]
* [[Template:Infobox fictional organisation|Organisation]]
* [[Template:Infobox fictional race|Race]]
* [[Template:Infobox fictional vehicle|Vehicle]]
| group7 = Template modules
| list7 =
* [[Template:Infobox name module|Name module]]
* [[Template:Based on|Based on]]
* [[Template:Infobox person|Person]]
* [[Template:Listen|Listen]]
| group8 = Related
| list8 =
* [[Template:Infobox advertising|Advertising]]
* [[Template:Infobox media franchise|Media franchise]]
* [[Template:Infobox audio drama|Audio drama]]
* [[Template:Infobox podcast|Podcast]]
* [[Template:Infobox radio station|Radio station]]
* [[Template:Infobox radio show|Radio show]]
}}<noinclude>
{{Documentation}}
</noinclude>
f8ik4bsipy145ylrinaubi93ilbrurb
Template:Basepage subpage
10
8628
73912
2017-03-12T04:26:29Z
Godsy
11763
[[Template:This is a redirect]] has been deprecated, change to [[Template:Redirect category shell]].
73912
wikitext
text/x-wiki
#REDIRECT [[Template:When on basepage]]
{{Redirect category shell|
{{R from move}}
{{R from template shortcut}}
}}
8auv81suxp1xkygdvxy45lt28yl3p6z
73913
73912
2026-07-11T18:59:07Z
Robertsky
10424
1 versaun husi [[:en:Template:Basepage_subpage]]
73912
wikitext
text/x-wiki
#REDIRECT [[Template:When on basepage]]
{{Redirect category shell|
{{R from move}}
{{R from template shortcut}}
}}
8auv81suxp1xkygdvxy45lt28yl3p6z
Template:UF-hcard-person
10
8629
73914
2026-04-16T23:13:29Z
Mathglot
11764
/* Sub-templates */ Improve.
73914
wikitext
text/x-wiki
The HTML markup produced by this template includes an [[HCard|hCard microformat]], which makes the person's details [[Parsing|parsable]] by computers, either acting automatically to catalogue articles across Wikipedia or via a browser tool operated by a reader, to (for example) add the subject to an address book or database. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]].
=== Sub-templates ===
Date-of-birth ("bday") information will only be included in the microformat if {{tl|birth date}}, or {{tl|birth date and age}} are used in the infobox. ([[Wikipedia:WikiProject Microformats/dates|Do not use these if the date is before 1583]]). Be cautious about using these if the person is still living, per [[WP:DOB]].
To include a URL, use [[Template:URL]], specifying the url as the value of unnamed param 1; example:
: <code><nowiki>{{URL|1=https://www.somedomain.com/foo/bar?q=weird_stuff&xyz=more_stuff}}</nowiki></code>.
'''Please do not remove instances of these sub-templates.'''
=== Classes ===
hCard uses HTML classes including:
{{Flatlist|
*adr
*agent
*bday
*birthplace
*category
*country-name
*deathdate
*deathplace
*extended-address
*family-name
*fn (required)
*given-name
*honorific-prefix
*honorific-suffix
*label
*locality
*n
*nickname
*note
*org
*role
*url
*vcard
}}
'''Please do not rename or remove these classes nor collapse nested elements which use them.'''<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCards]]}} }}</includeonly><noinclude>
[[Category:Templates generating hCards]]
[[Category:Microformat message templates]]
</noinclude>
euzap3d1bdsv4gjs66egp0w3cy4b3oq
73915
73914
2026-07-11T18:59:07Z
Robertsky
10424
1 versaun husi [[:en:Template:UF-hcard-person]]
73914
wikitext
text/x-wiki
The HTML markup produced by this template includes an [[HCard|hCard microformat]], which makes the person's details [[Parsing|parsable]] by computers, either acting automatically to catalogue articles across Wikipedia or via a browser tool operated by a reader, to (for example) add the subject to an address book or database. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]].
=== Sub-templates ===
Date-of-birth ("bday") information will only be included in the microformat if {{tl|birth date}}, or {{tl|birth date and age}} are used in the infobox. ([[Wikipedia:WikiProject Microformats/dates|Do not use these if the date is before 1583]]). Be cautious about using these if the person is still living, per [[WP:DOB]].
To include a URL, use [[Template:URL]], specifying the url as the value of unnamed param 1; example:
: <code><nowiki>{{URL|1=https://www.somedomain.com/foo/bar?q=weird_stuff&xyz=more_stuff}}</nowiki></code>.
'''Please do not remove instances of these sub-templates.'''
=== Classes ===
hCard uses HTML classes including:
{{Flatlist|
*adr
*agent
*bday
*birthplace
*category
*country-name
*deathdate
*deathplace
*extended-address
*family-name
*fn (required)
*given-name
*honorific-prefix
*honorific-suffix
*label
*locality
*n
*nickname
*note
*org
*role
*url
*vcard
}}
'''Please do not rename or remove these classes nor collapse nested elements which use them.'''<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCards]]}} }}</includeonly><noinclude>
[[Category:Templates generating hCards]]
[[Category:Microformat message templates]]
</noinclude>
euzap3d1bdsv4gjs66egp0w3cy4b3oq
Template:Person infobox header
10
8630
73916
2025-10-17T12:11:29Z
Gonnym
11662
73916
wikitext
text/x-wiki
{{ombox|type=content|text=The design and content of [[:Category:People and person infobox templates|biographical infoboxes]] must comply with Wikipedia's [[Wikipedia:Verifiability|verifiability policy]], as well as the [[Wikipedia:Manual of Style/Infoboxes|infobox]] and [[Wikipedia:Manual of Style/Biography|biographical style guidelines]]. All content displayed by this template must adhere to the '''[[Wikipedia:Biographies of living persons|biographies of living persons policy]]''' when applicable. [[Wikipedia:Citing sources|Unsourced or poorly sourced]] [[Wikipedia:Contentious|contentious]] material '''must be removed''', especially if it is potentially [[Wikipedia:Libel|libelous]].}}<noinclude>
{{documentation
|content=
{{no documentation}}
[[Category:People and person infobox templates]]
}}
</noinclude>
cko6dk6awluiq5pbeleyd4pmnsa4dox
73917
73916
2026-07-11T18:59:07Z
Robertsky
10424
1 versaun husi [[:en:Template:Person_infobox_header]]
73916
wikitext
text/x-wiki
{{ombox|type=content|text=The design and content of [[:Category:People and person infobox templates|biographical infoboxes]] must comply with Wikipedia's [[Wikipedia:Verifiability|verifiability policy]], as well as the [[Wikipedia:Manual of Style/Infoboxes|infobox]] and [[Wikipedia:Manual of Style/Biography|biographical style guidelines]]. All content displayed by this template must adhere to the '''[[Wikipedia:Biographies of living persons|biographies of living persons policy]]''' when applicable. [[Wikipedia:Citing sources|Unsourced or poorly sourced]] [[Wikipedia:Contentious|contentious]] material '''must be removed''', especially if it is potentially [[Wikipedia:Libel|libelous]].}}<noinclude>
{{documentation
|content=
{{no documentation}}
[[Category:People and person infobox templates]]
}}
</noinclude>
cko6dk6awluiq5pbeleyd4pmnsa4dox
Template:Infobox person/doc
10
8631
73918
2026-06-14T20:08:43Z
Gonnym
11662
this was removed
73918
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}{{pp-move-indef}}</noinclude>{{for|an infobox for fictional characters|Template:Infobox character}}
{{Template shortcut|Personbox}}
{{documentation subpage}}
{{Person infobox header}}
{{High-use|info=About [https://linkcount.toolforge.org/index.php?project=en.wikipedia.org&page=Template:Infobox_person&namespaces=0 497,000] of them (89%) are in mainspace.}}
{{Notice|Please note that in 2016, the {{para|religion}} and {{para|ethnicity}} parameters were removed from Infobox person as a result of [[Wikipedia:Village pump (policy)/Archive 126#RfC: Religion in biographical infoboxes|the RfC: Religion in biographical infoboxes]] and [[Wikipedia:Village pump (policy)/Archive 127#RfC: Ethnicity in infoboxes|the RfC: Ethnicity in infoboxes]] as clarified by [[Template talk:Infobox person/Archive 31#Ethnicity? Religion?|this discussion]].}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters|Module:Check for conflicting parameters|Module:Person date}}
{{Tracks Wikidata|P18|cat=No local image but image on Wikidata}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{tl|Infobox person}} may be used to summarize information about a particular person, usually at the top of an article.
== Redirects and calls ==
At least {{PAGESINCATEGORY:Templates calling Infobox person}} other [[:Category:Templates calling Infobox person|templates call this one]] and many templates {{Querylink|Special:WhatLinksHere/Template:Infobox_person|qs=namespace=10&hidetrans=1&hidelinks=1|redirect here}}.
== Modules ==
The following templates are suitable for use as a "module" in this one:
* Templates in [[:Category:Biographical templates usable as a module]]
* {{tl|Listen}}
* {{tl|Infobox Chinese}}
== Usage ==
The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields. Any parameters left blank or omitted will not be displayed.
=== Blank template with basic parameters ===
{{Infobox person
| name = ''name''
| image = example-serious.jpg
| alt = alt
| caption = ''caption''
| birth_name = ''birth_name''
| birth_date = ''birth_date''
| birth_place = ''birth_place''
| death_date = ''death_date''
| death_place = ''death_place''
| other_names = ''other_names''
| occupation = ''occupation''
| years_active = ''years_active''
| known_for = ''known_for''
| notable_works = ''notable_works''
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em;" copy="1">
{{Infobox person
| name = <!-- defaults to article title when left blank -->
| image = <!-- filename only, no "File:" or "Image:" prefix, and no enclosing [[brackets]] -->
| alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software -->
| caption =
| birth_name = <!-- use only if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. -->
| birth_place =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (DEATH date then BIRTH date) -->
| death_place =
| other_names =
| occupation =
| years_active =
| known_for =
| notable_works =
}}
</syntaxhighlight>
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em;" copy="1">
{{Infobox person
| name =
| image =
| alt =
| caption =
| birth_name =
| birth_date =
| birth_place =
| death_date =
| death_place =
| other_names =
| occupation =
| years_active =
| known_for =
| notable_works =
}}
</syntaxhighlight>
{{clear}}
=== Blank template with all parameters ===
Only the most pertinent information should be included. Please {{em|remove}} unused parameters, and refrain from inserting dubious trivia in an attempt to fill all parameters.
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em" copy="1">
{{Infobox person
| honorific_prefix =
| name = <!-- defaults to article title when left blank -->
| honorific_suffix =
| native_name =
| native_name_lang =
| image = <!-- filename only, no "File:" or "Image:" prefix, and no enclosing [[brackets]] -->
| image_upright =
| landscape = <!-- yes, if wide image, otherwise leave blank -->
| alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software -->
| caption =
| pronunciation =
| birth_name = <!-- use only if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. -->
| birth_place =
| baptised = <!-- will not display if birth_date is entered -->
| disappeared_date = <!-- {{Disappeared date and age|YYYY|MM|DD|YYYY|MM|DD}} (disappeared date then birth date) -->
| disappeared_place =
| disappeared_status =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (enter DEATH date then BIRTH date (e.g., ...|1967|8|31|1908|2|28}} use both this parameter and |birth_date to display the person's date of birth, date of death, and age at death) -->
| death_place =
| death_cause = <!-- should only be included when the cause of death has significance for the subject's notability -->
| body_discovered =
| resting_place =
| resting_place_coordinates = <!-- {{coord|LAT|LONG|type:landmark|display=inline}} -->
| burial_place = <!-- may be used instead of resting_place and resting_place_coordinates (displays "Burial place" as label) -->
| burial_coordinates = <!-- {{coord|LAT|LONG|type:landmark|display=inline}} -->
| monuments =
| other_names =
| siglum =
| citizenship = <!-- use only when necessary per [[WP:INFONAT]] -->
| education =
| alma_mater =
| occupation =
| years_active =
| era =
| employer =
| organization =
| agent = <!-- discouraged in most cases, specifically when promotional, and requiring a reliable source -->
| known_for =
| notable_works = <!-- produces label "Notable work"; may be overridden by |credits=, which produces label "Notable credit(s)"; or by |works=, which produces label "Works"; or by |label_name=, which produces label "Label(s)" -->
| style =
| television =
| height = <!-- "X cm", "X m" or "X ft Y in" plus optional reference (conversions are automatic) -->
| title = <!-- formal/awarded/job title. The parameter |office=may be used as an alternative when the label is better rendered as "Office" (e.g. public office or appointments) -->
| term =
| predecessor =
| successor =
| political_party =
| other_party =
| movement =
| opponents =
| boards =
| criminal_charges = <!-- criminality parameters should be supported with citations from reliable sources -->
| criminal_penalty =
| criminal_status =
| spouse = <!-- use article title or common name -->
| partner = <!-- (unmarried long-term partner) -->
| children =
| parents = <!-- overrides mother and father parameters -->
| mother = <!-- may be used (optionally with father parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| father = <!-- may be used (optionally with mother parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| relatives =
| family =
| callsign = <!-- amateur radio, use if relevant -->
| awards =
| website = <!-- {{URL|example.com}} -->
| module =
| module2 =
| module3 =
| module4 =
| module5 =
| module6 =
| signature =
| signature_type =
| signature_size =
| signature_alt =
| footnotes =
}}
</syntaxhighlight>
{{Parameter names example | _display=italics
| honorific_prefix | name | honorific_suffix
| native_name | native_name_lang
| image=example-serious.jpg | image_upright=1 | landscape | alt | caption <!--shows placement of parameters, see examples for image-->
| pronunciation
| birth_name | birth_date | birth_place | baptised <!--does not display due to birth date displayed-->
| disappeared_date | disappeared_place | disappeared_status | death_date | death_place | death_cause <!--should only be included when the cause of death has significance for the subject's notability-->
| body_discovered | resting_place | resting_place_coordinates | monuments
| other_names | siglum | citizenship | education | alma_mater
| occupation | years_active | era | employer | organization | agent | known_for | notable_works
| style | television | height
| title | term | predecessor | successor | political_party | other_party | movement | opponents | boards
| criminal_charges | criminal_penalty | criminal_status
| spouse | partner | children | parents | relatives | family | callsign | awards | website
| module | module2 | module3 | module4 | module5 | module6 <!--removed the ... which only saved two lines from being shown-->
| signature=<nowiki>signature.jpg</nowiki> |signature_type | signature_size | signature_alt
| footnotes
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em" copy="1">
{{Infobox person
| honorific_prefix =
| name =
| honorific_suffix =
| native_name =
| native_name_lang =
| image =
| image_upright =
| landscape =
| alt =
| caption =
| pronunciation =
| birth_name =
| birth_date =
| birth_place =
| baptised =
| disappeared_date =
| disappeared_place =
| disappeared_status =
| death_date =
| death_place =
| death_cause =
| body_discovered =
| resting_place =
| resting_place_coordinates =
| burial_place =
| burial_coordinates =
| monuments =
| other_names =
| siglum =
| citizenship =
| education =
| alma_mater =
| occupation =
| years_active =
| era =
| employer =
| organization =
| agent =
| known_for =
| notable_works =
| style =
| television =
| height =
| title =
| term =
| predecessor =
| successor =
| political_party =
| other_party =
| movement =
| opponents =
| boards =
| criminal_charges =
| criminal_penalty =
| criminal_status =
| spouse =
| partner =
| children =
| parents =
| mother =
| father =
| relatives =
| family =
| callsign =
| awards =
| website =
| module =
| module2 =
| module3 =
| module4 =
| module5 =
| module6 =
| signature =
| signature_type =
| signature_size =
| signature_alt =
| footnotes =
}}
</syntaxhighlight>
{{clear}}
== Parameters ==
{{notice|Do not use all these parameters for any one person. The list is long to cover a wide range of people. Use only those parameters that convey essential or notable information about the subject, and ensure that this information is sourced in the article or (if present only in the infobox) in the infobox itself.}}
Any parameters left blank or omitted will not be displayed. Many parameters have alternative names, implemented for compatibility with other templates (especially to aid merging). The preferred names are shown in the table below.
{| class="wikitable"
! Parameter
! Explanation
|-
| {{code|honorific_prefix}}
| To appear on the line above the person's name. This is for honorifics of serious significance that are attached to the name in formal address, such as knighthoods, "The Honourable", and "His/Her Excellency"; do not use it for routine things like "{{!mxt|[[Dr.]]}}" or "{{!mxt|[[Ms.]]}}"
|-
| {{code|name}}
| Common name of person (defaults to article name if left blank; provide {{para|birth_name}} (below) if different from {{para|name}}). If middle initials are specified (or implied) by the lead of the article, and are not specified separately in the {{para|birth_name}} parameter, include them here. ''Do not put honorifics or alternative names in this parameter.'' There are separate parameters for these things, covered below.
|-
| {{code|honorific_suffix}}
| To appear on the line below the person's name. This is for things like {{para|honorific_suffix|[[Officer of the Order of the British Empire|OBE]]}} – honorifics of serious significance that are attached to the name in formal address, such as national orders and non-honorary doctorates; do not use it for routine things like "{{!mxt|[[Bachelor of Arts|BA]]}}". It is permissible but not required to use the {{tlx|post-nominals}} template inside this parameter; doing so requires {{tlx|post-nominals|size{{=}}100%|...}}.
|-
| {{code|native_name}}
| The person's name in their own language, if different.
|-
| {{code|native_name_lang}}
| [[ISO 639-1]] code, e.g., "{{pval|fr}}" for French. If more than one, use {{tlx|lang}} around each name in {{para|native_name}} instead.
|-
| {{code|image}}
| Image name: {{pval|abc.jpg}}, {{pval|xpz.png}}, {{pval|123.gif}}, etc., without the {{code|File:}} or {{code|Image:}} prefix. If an image is desired but not available, one may add {{pval|yes}} to the {{para|needs-photo}} parameter of the {{tlx|WikiProject Biography}} template on the talk page. If no image is available yet, [[Wikipedia:Centralized discussion/Image placeholders|do not use an image placeholder]]. See [[#Image]] for further guidelines.
|-
| {{code|image_upright}}
| Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).
|-
| {{code|landscape}}
| Set to <code>yes</code> when using wide, short images. The image height (rather than width) will be limited to 200 pixels.
|-
| {{code|alt}}
| Descriptive [[Wikipedia:Manual of Style/Accessibility/Alternative text for images|{{code|alt}} text for the image]], for visually impaired readers. One word (such as {{pval|photograph}}) is rarely sufficient. Do not copy-paste the value of {{para|caption}} (below) into this parameter. Example of the difference: "Willie Nelson at a concert in Dallas, 1989" is good as {{para|caption}} value; "Nelson in western-wear with an acoustic guitar, on stage in a daytime show with band in background" is an {{para|alt}} description. If nothing meaningful can be said that isn't already in the caption, use the [[Wikipedia:Manual of Style/Accessibility/Alternative text for images#Captions and nearby text|stock text]] {{para|alt|refer to caption}}.
|-
| {{code|caption}}
| Caption for image, if needed. Try to include the date of photo, some context (check the <code>File:</code> or [[Wikimedia Commons|Commons]] page for the image). Image credit should generally not be included per [[MOS:CREDITS]].
|-
| {{code|pronunciation}}
| Details of how to pronounce the individual's native name. <!--copied from TemplateData description, if changed please update there also-->
|-
| {{code|birth_name}}
| Name at birth; use only if different from {{para|name}}.
|-
| {{code|birth_date}}
| Date of birth: Use {{tlx|birth date and age}} (if living) or {{tlx|birth date}} (if dead). {{crossref|See template's page for details on usage.}} If only a year of birth is known, or age as of a certain date, consider using {{tlx|birth year and age}} or {{tlx|birth based on age as of date}}. For living people [[Wikipedia:Biographies of living persons#Privacy of personal information and using primary sources|supply only the year unless the exact date is already widely published]]. Treat such cases as if only the year is known, so use {{tlx|birth year and age}} or a similar option. The templates mentioned in this paragraph emit metadata indicating the date is in the Gregorian calendar; if the date is in the Julian calendar, do not use these templates, just write the date.
|- id="birth_place"
| {{code|birth_place}}
| Place of birth: {{var|city}}, {{var|administrative region}}, {{var|country}}.
* Use the name of the birthplace at the time of birth, e.g.: {{pval|Saigon}} (prior to 1976) or {{pval|Ho Chi Minh City}} (post-1976).
* [[Wikipedia:Manual of Style/Icons#Do not use flags to indicate locations of birth, residence, or death|Do not use a flag template]], coat of arms, or other icon.
* [[Wikipedia:Manual of Style/Infoboxes#Purpose|Omit unnecessary or redundant details]]. For example, it is not necessary to state: {{!xt|{{pval|New York City, [[New York (state)|New York]], United States}}}} when {{xt|{{pval|New York City, U.S.}}}} conveys essentially the same information more concisely.
* Country name should be visible (not just in a link target). Well-known countries [[Wikipedia:Manual of Style/Linking#What generally should not be linked|should generally not be linked]], but historical and less-well-known countries can be.
* For modern subjects, the country should generally be a sovereign state; for United Kingdom locations, the constituent [[Countries of the United Kingdom|countries of the UK]] are sometimes used instead, when more appropriate in the context.
* For historical subjects, use the place name most appropriate for the context and our readership.
* Historical sovereign should be clear from the place of birth, as this determines nationality and citizenship. {{xt|Porbandar, Kathiawar Agency, British India}}; {{xt|San Juan, Puerto Rico, Spanish Empire}}
* For subsequent places (of death, etc.) it is not necessary to repeat jurisdictional details or links for the same place name.
* Follow [[MOS:USA]], e.g. "US" instead of "USA"
* When clarifying for historical reasons ("then a part of X" or "now in X"), follow [[MOS:GEOLINK]].
|-
| {{code|baptised}}<br/>or {{code|baptized}}
| Date of baptism: {{em|Only}} for use when birth date is not known (e.g., for [[Ludwig van Beethoven]]). Will not display if a birth date is entered. Do not use subtemplates. Parameter <code>baptized</code> can be used for articles that use American English spelling.
|-
| {{code|disappeared_date}}
| (For missing people) Date of disappearance: Use {{tlx|disappeared date and age}} (if birth date is known) or {{tlx|disappeared date}} (if birth date unknown).
|-
| {{code|disappeared_place}}
| (For missing people) Place of disappearance: {{var|city}}, {{var|administrative region}}, {{var|country}}. <!--This space is needed for readability, due to quirk of these templated elements being in proximity.--> ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{code|disappeared_status}}
| (For missing people) Current status for the person, e.g., if the person is still regarded as missing (using {{tlx|missing for}} to calculate the time since disappearance), or if the person has been [[Declared death in absentia|declared dead ''{{lang|la|in absentia}}'']], with a date for such a ruling.
|-
| {{code|death_date}}
| Date of death: Use {{tlx|death date and age}} (if birth date is known) or {{tlx|death date}} (if birth date unknown). {{crossref|See template's page for details on usage.}} If exact dates are unknown, consider using {{tlx|death year and age}}. The templates mentioned in this paragraph emit metadata indicating the date is in the Gregorian calendar; if the date is in the Julian calendar, do not use these templates, just write the date.
|-
| {{code|death_place}}
| Place of death: {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{code|death_cause}}
| Cause of death. Should be clearly defined and sourced, and should only be included when the cause of death has significance for the subject's notability, e.g. [[James Dean]], [[John Lennon]]. It should not be filled in for unremarkable deaths such as those from old age or routine illness, e.g. [[Bruce Forsyth]], [[Eduard Khil]].
|-
| {{code|body_discovered}}
| Place where the body was discovered (if different from place of death). {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{code|burial_place}}
| Place of burial {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc. {{crossref|See {{para|resting_place}} for non-burials}}.)
|-
| {{code|burial_coordinates}}
| Coordinates for place of burial, to accompany {{para|burial_place}}. Use {{tlx|coord}} template.
|-
| {{code|resting_place}}
| Location of columbarium, ash-scattering, etc. If no location, leave blank. {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{code|resting_place_coordinates}}
| Coordinates for location of columbarium, ash-scattering etc. Use {{tlx|coord}} template.
|-
| {{code|monuments}}
| Significant monuments erected, buildings named, etc., in honour of the subject. If many, link to an appropriate section of the article instead.
|-
| {{code|other_names}}
| Other notable names for the person, if different from {{para|name}} and {{para|birth_name}}. [[Wikipedia:Manual of Style/Biographies#Pseudonyms|This can include]] stage names, maiden/married names, nicknames, criminal aliases, etc.
|-
| {{code|siglum}}
| [[Siglum]] or monogram, a text shortcut (often formed from the initials of the name, with variations) used to sign work, if relevant.
|-
| {{code|citizenship}}
| Country of legal citizenship. Rarely needed - omit if the same as birth country. See [[WP:INFONAT]] for detailed guidelines. {{crossref|Also see {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, anachronisms, "country" definitions, etc.
|-
| {{code|education}}
| Include subject's educational credentials, typically university degrees. List the full article title of each degree-granting parent institution, followed by degree(s) earned in parentheses, e.g. an alumnus of [[Harvard College]], [[Harvard Law School]], and the [[Kellogg School of Management]] would be listed as: <br>
[[Harvard University]] (BA, JD) <br>
[[Northwestern University]] (MBA) <br><br> If insufficient information is available to determine specific credentials attained, the 'alma_mater' parameter may be more appropriate.
|-
| {{code|alma_mater}}
| ''[[Alma mater]]''. This parameter is a more concise alternative to (not addition to) {{para|education}}, and will often consist of the linked name of the last-attended institution of higher education (not secondary schools). It is usually not relevant to include either parameter for non-graduates, but article talk page consensus may conclude otherwise, as perhaps at [[Bill Gates]].
|-
| {{code|occupation}}
| Occupation(s) as given in the lead. Use list markup for three or more entries, e.g. with {{tlx|flatlist}}. Please observe [[sentence case]] and capitalise only the first letter of the first item; e.g.:
{{block indent|1={{Flatlist|
* Musician
* singer-songwriter
* actor
}}}}
|-
| {{code|years_active}}
| Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format {{code|1950–2000}}, or {{code|1970–present}} if still active. [[Wikipedia:Manual of Style/Dates and numbers#Ranges|Date ranges]] always use an [[Wikipedia:Manual of Style#En dashes|en dash]], not hyphen. If no dates of birth and/or death are known for the subject, only a ''[[floruit]]'' date range, as is common with ancient subjects, this parameter can be used for it. If approximate (''[[wikt:circa#English|circa]]'') dates are known for either or both, put them in the {{para|birth_date}} and {{para|death_date}} parameters. Helpful templates: {{tlx|floruit}}, {{tlx|circa}}.
|-
| {{code|era}}
| Era (e.g., {{pval|Medieval}}) in which the person lived; less specific than {{para|years_active}}. Should not be used if dates are available.
|-
| {{code|employer}}
| Employer(s), if relevant.
|-
| {{code|organization}} or {{code|organisation}}
| Non-employing organization(s), if relevant.
|-
| {{code|agent}}
| The subject's agent (individual and/or agency), discouraged in most cases, specifically when promotional, and requiring a [[Wikipedia:Identifying reliable sources|reliable source]].
|-
| {{code|known_for}}
| A brief description of why the person is notable.
|-
| {{ubl|{{code|notable_works}};<br/> {{small|alternatives:}}
|{{code|credits}}
|{{code|label_name}}
|{{code|works}}
}}
| Title(s) of notable work(s) (publications, compositions, sculptures, films, etc.) by the subject, if any. Produces the label '''Notable work'''. May be overridden by {{para|credits}}, which produces '''Notable credit(s)'''; or by {{para|works}}, which produces '''Works'''; or by {{para|label_name}}, which produces '''Label(s)'''.
* The {{para|notable_works}}, {{para|credits}}, and {{para|label_name}} parameters are intended to be (at most) short [[#Inline lists|inline lists]].
* The {{para|label_name}} variant is used for one or more record labels with which a performer is associated, or a fashion label in which a designer has been heavily involved or for which they are well known. Remember that this parameter is an alternative to the others mentioned here and is not used along with them.
* The {{para|works}} variant is intended to link to {{em|a specific list article}} for a larger body of work (not all of which may be individually notable).
|-
| {{code|style}}
| The style of the subject's works, if applicable. {{crossref|This parameter is not for [[Style (manner of address)|styles of address or office]]; see {{para|honorific_prefix}}.}}
|-
| {{code|television}}
| Television programmes presented by or {{em|closely}} associated with the subject. For multiple entries, use an [[#Inline lists|inline list]].
|-
| {{code|height}}
| If person was notable for their height, or if height is relevant. If used, this should also include the year of the measurement if the person had not reached full adulthood when this stat was published. {{crossref|See documentation of this parameter at [[Template:Infobox sportsperson#height|Template:Infobox sportsperson]] for more information.}}
|-
| {{code|title}}
| Multiple uses:
* Formal title, such as {{pval|First Lady of Japan}} for [[Akie Abe]].
* Awarded title, such as {{pval|Mr. Olympia}} for [[Arnold Schwarzenegger]].
* Job title, such as {{pval|President of Calvin College}} for [[Anthony Diekema]].
* A combination of the above, such as {{pval|Professor of Mathematics}} and {{pval|[[Fellow of the Royal Society]]}} for [[Bill Parry (mathematician)|Bill Parry]]
For multiple entries, use an [[#Inline lists|inline list]].
Use the {{para|awards}} parameter, below, for awarded honors that are not really titles. A single award should not use both parameters.
|-
| {{code|office}}
| May be used as an alternative to {{para|title}} when the label is better displayed as '''Office''' (e.g. public office or appointments). Using this parameter will override {{para|title}}.
|-
| {{code|term}}
| Years the person held the {{para|title}} or {{para|office}} listed above. Helpful template: {{tlx|reign}} (also used for civil offices).
|-
| {{code|predecessor}}
| Person who previously held the {{para|title}} or {{para|office}} listed above.
|-
| {{code|successor}}
| Person who subsequently held the {{para|title}} or {{para|office}} listed above.
|-
| {{code|political_party}}
| If relevant. Field labelled '''Political party'''.
|-
| {{code|other_party}}
| If relevant. Field labelled '''Other political affiliations'''.
|-
| {{code|movement}}
| If relevant. Can be [[Social movement|social]], [[Political movement|political]] (non-party), [[Art movement|artistic]], [[Philosophical movement|philosophical]], [[List of literary movements|literary]], [[Cultural movement|cultural]], etc.
|-
| {{code|opponents}}
| Notable relevant opponents (e.g., for major political office).
|-
| {{code|boards}}
| For [[board of directors]] membership(s), if relevant. Field labeled '''Board member of'''.
|-
| {{ubl|{{code|criminal_charges}}|{{code|criminal_penalty}}|{{code|criminal_status}}}}
| For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.
|-
| {{code|spouse}}
| Name of spouse(s), followed by years of marriage. Use the format ''Name (m. 1950)'' for a current spouse, and ''Name (m. 1970–1999)'' for former spouse(s). Use article title (if linking) or [[Wikipedia:Article titles#Use commonly recognizable names|common name]]. For multiple entries, use an [[#Inline lists|inline list]]. For deceased persons still married at time of death, do not include the end year.
|-
| {{code|partner}}
| If particularly relevant, or if the partner is notable; "partner" here means unmarried life partners in a [[domestic partnership]] (of any gender or sexual orientation), not business partner. Use the format ''Name (1950–present)'' for current partner and ''Name (1970–1999)'' for former partner(s).
|- id=children
| {{code|children}}
| Typically the number of children (e.g., {{pval|3}}); only list names of independently notable or particularly relevant children. Names may be preceded by a number to show total children and avoid implying that named children are the only offspring. For multiple entries, use an [[#Inline lists|inline list]]. {{em|For [[Wikipedia:Biographies of living persons#Privacy of names|privacy reasons]], consider omitting the names of living children, unless notable.}}
|-
| {{code|parents}}
| Names of parents; include only if they are independently notable or particularly relevant. For multiple entries, use an [[#Inline lists|inline list]]. If subject has only one notable mother and/or only one notable father, {{para|mother}} and {{para|father}} parameters may be used instead. These parameters may be used for biological, adoptive, foster, or step-parents.
|-
| {{code|mother}}
| Name of mother; include only if subject has one mother who is independently notable or particularly relevant. Displays '''Parent(s)''' as label, and is overridden by the {{para|parents}} parameter.
|-
| {{code|father}}
| Name of father; include only if subject has one father who is independently notable or particularly relevant. Displays '''Parent(s)''' as label, and is overridden by the {{para|parents}} parameter.
|-
| {{code|relatives}}
| Names of siblings or other relatives; include only if independently notable and particularly relevant. Include the relationship in parentheses after the name (sister, uncle, etc.). For multiple entries, use an [[#Inline lists|inline list]].
|-
| {{code|callsign}}
| Amateur radio [[call sign]], if relevant.
|-
| {{code|awards}}
| Notable awards. If many, link to an appropriate section of the article instead. Use {{para|title}} parameter, above, for awarded titles; A single award should not use both parameters.
|-
| {{code|website}}
| Official website only. Unofficial websites should be placed under <code><nowiki>==External links==</nowiki></code> in the body of the article. Use {{tlx|URL}} as in {{tnull|URL|Example.com}}. Do not display the {{samp|www.}} part unless the site requires it.
|-
| {{ubl | {{code|module}} | {{code|module2}} | {{code|module3}} | {{code|module4}} | {{code|module5}} | {{code|module6}} }}
| Used for embedding other infoboxes into this one. Example:
<syntaxhighlight lang="wikitext">
{{Infobox person
| name = Paul McCartney
...
| module =
{{Infobox musical artist
| embed = yes
| instrument = piano
...
}} <!-- end of Infobox musical artist -->
...
}} <!-- end of Infobox person -->
</syntaxhighlight>
{{crossref|For more detailed information, see [[Wikipedia:WikiProject Infoboxes/embed]].}}
|-
| {{code|signature}}
| An image of the person's signature. Please use image name: {{pval|abc.jpg}}, {{pval|xpz.png}}, {{pval|123.gif}}, etc., without the {{samp|File:}} or {{samp|Image:}} prefix
|-
| {{code|signature_type}}
| Changes the '''Signature''' label to the preferred argument, such as '''Seal'''
|-
| {{code|signature_size}}
| Default is {{samp|150px}}. If necessary, a signature can be resized manually as per the {{para|image_size}} parameter.
|-
| {{code|signature_alt}}
| Alt text for the signature image. For example, for {{samp|[[:File:Thomas Jefferson Signature.svg]]}}, the alt text might be {{para|signature_alt| Th: Jefferson}}, spelling out the signature exactly as it appears in the image.
|-
| {{code|footnotes}}
| Textual notes about any of the infobox data. This is not for reference citations. If an infobox parameter's value needs a citation, [[Wikipedia:Citing sources|cite inline]] at the end of the value. Citations will appear in the article's references section along with the other citations in the article.
|-
| {{code|image_size}}
| {{strongbad|Deprecated}}. Size to display image: {{pval|200px}} (set width), {{pval|x300px}} (set height), or {{pval|200x300px}} (max width & max height). If empty or omitted, this defaults to {{samp|frameless}} (default is {{samp|220px}}, but logged-in users can change this by clicking on "my preferences" and adjusting thumbnail size). [[Wikipedia:Image use policy#Displayed image size|Use of this parameter is discouraged]]. Use {{para|image_upright}} instead. Do not use "{{!mxt|×}}" or capital "{{!mxt|X}}"
|-
| {{code|template_name}}
| '''This parameter should not be used in articles.''' It allows other templates to specify a template name such as ''Infobox architect'' for parameter tracking categories, like [[:Category:Pages using infobox architect with unknown parameters]] instead of [[:Category:Pages using infobox person with unknown parameters]]. The parameter is found in templates which use [[Template:Infobox person]] via [[Module:Template wrapper]], see [[:Category:Templates calling Infobox person]].
|}
=== Additional parameter usage explanation ===
==== Image ====
The image in the infobox should be representative of the person who is the subject of the article. For some historical figures, particularly those born in the 18th century or before, this image is often a painting or other artistic depiction of the individual (see [[George Washington]]). Persons born in the 20th century onward, such as [[Barack Obama]], are most often represented by a photograph of the individual.
When the subject of a biographical article has recently died, particularly those who have been publicly known for decades, editors may come to a consensus on the article's talk page regarding what image would best be suited for the infobox. An example of such a discussion can be found in the talk page archives for [[Elizabeth II]] (section [[Talk:Elizabeth II/Archive 45#Infobox photograph for after her death|Infobox photograph for after her death]]); in this instance, the 2015 photograph of Elizabeth II that was present in the article's infobox when discussions began was eventually replaced with a photograph of her taken in 1958.
=== Inline lists ===
{{Main|WP:Manual of Style/Lists#Horizontal lists|WP:Manual of Style/Lists#Unbulleted lists}}
Parameters with multiple values should be formatted with inline-list templates.
'''Horizontal''' ones include {{tlx|hlist}} or {{tlx|flatlist}}. In [[Wikipedia:Manual of Style/Lists#Horizontal lists|horizontal style]], only the first item is capitalized (aside from [[Wikipedia:Manual of Style/Capital letters#Proper names|proper names]]).
This style is best for short items, and few of them. Mid-dots, commas or semicolons are available as separators (use semicolons or mid-dots if any items contain their own commas). For example:
* {{para|parameter_name|{{tlp|hlist |Foo |bar |baz}}}} → {{hlist |Foo |bar |baz}}
* {{para|parameter_name|{{tlp|cslist |Foo |bar |baz}}}} → {{cslist |Foo |bar |baz}}
* {{para|parameter_name|{{tlp|cslist |Foo, fee |bar, bor |baz, biz |semi=true}}}} → {{cslist |Foo, fee |bar, bor |baz, biz |semi=true}}
Horizontal list example with {{tlx|hlist|Item one|item two|item three}}: {{hlist|Item one|item two|item three}}
'''Vertical''' templates are {{tlx|plainlist}} and {{tlx|unbulleted list}} (vertical), use [[Wikipedia:Manual of Style/Lists#Unbulleted lists|unbulleted, non-indented lists]] for clean display in infoboxes. Entries may be all [[sentence case]], or all lowercase (aside from proper names) after the first.
This style is best for long items, and longer lists. For long lists of information that may not be of immediate interest but retained for reference, the {{tlx|collapsible list}} template can be used; this is not a universally accessible option, so should not be used for key information.
''[[Wikipedia:Manual of Style/Lists#Line breaks|Do not use {{tag|br|s}} markup]]'' to create fake lists, as in: {{!mxt|<nowiki>Item one<br />item two<br />item three</nowiki>}}.
Vertical list example:, using {{tlx|unbulleted list|Item one|item two|item three}}:
{{unbulleted list|Item one|item two|item three}}
== Example ==
{{Infobox person{{#ifeq:{{SUBPAGENAME}}|sandbox |/sandbox}}
| name = Bill Gates
| image = Bill Gates 2017 (cropped).jpg
| alt = Head and shoulders photo of Bill Gates
| caption = Gates in 2017
| birth_name = William Henry Gates III
| birth_date = {{birth date and age|1955|10|28}}
| birth_place = [[Seattle, Washington]], U.S.
| known_for = Co-founder of [[Microsoft]] and [[Bill & Melinda Gates Foundation]]
| education = [[Harvard University]] (dropped out)
| occupation = {{hlist|Software developer|investor|entrepreneur}}
| years_active = 1972–present
| title = {{indented plainlist|
* Co-[[chairperson]] of the Bill & Melinda Gates Foundation
* Chairman and founder of [[Branded Entertainment Network]]
* Chairman and founder of [[Cascade Investment]]
* Chairman and co-founder of [[TerraPower]]
* Founder of [[Breakthrough Energy]]
* Technology advisor of Microsoft}}
| boards = {{plainlist|
* [[Berkshire Hathaway]]
* Microsoft (former, both)}}
| spouse = {{marriage|[[Melinda French]]|January 1, 1994|August 2, 2021|reason=divorce}}
| children = 3
| father = [[Bill Gates Sr.]]
| mother = [[Mary Maxwell Gates|Mary Maxwell]]
| website = {{URL|https://www.gatesnotes.com}}
| awards = {{ubl|[[Presidential Medal of Freedom]] (2016)|[[Hilal-e-Pakistan]] (2022)}}
| signature = Bill Gates signature.svg
| signature_alt = William H. Gates III
}}
<syntaxhighlight lang="wikitext" style="overflow: auto">
{{Infobox person
| name = Bill Gates
| image = Bill Gates 2017 (cropped).jpg
| alt = Head and shoulders photo of Bill Gates
| caption = Gates in 2017
| birth_name = William Henry Gates III
| birth_date = {{birth date and age|1955|10|28}}
| birth_place = [[Seattle, Washington]], U.S.
| known_for = Co-founder of [[Microsoft]] and [[Bill & Melinda Gates Foundation]]
| education = [[Harvard University]] (dropped out)
| occupation = {{hlist|Software developer|investor|entrepreneur}}
| years_active = 1972–present
| title = {{indented plainlist|
* Co-[[chairperson]] of the Bill & Melinda Gates Foundation
* Chairman and founder of [[Branded Entertainment Network]]
* Chairman and founder of [[Cascade Investment]]
* Chairman and co-founder of [[TerraPower]]
* Founder of [[Breakthrough Energy]]
* Technology advisor of Microsoft}}
| boards = {{plainlist|
* [[Berkshire Hathaway]]
* Microsoft (former, both)}}
| spouse = {{marriage|[[Melinda French]]|January 1, 1994|August 2, 2021|reason=divorce}}
| children = 3
| father = [[Bill Gates Sr.]]
| mother = [[Mary Maxwell Gates|Mary Maxwell]]
| website = {{URL|https://www.gatesnotes.com}}
| awards = {{ubl|[[Presidential Medal of Freedom]] (2016)|[[Hilal-e-Pakistan]] (2022)}}
| signature = Bill Gates signature.svg
| signature_alt = William H. Gates III
}}
</syntaxhighlight>
== Microformat ==
{{UF-hcard-person}}
{{clear}}
== TemplateData ==
{{TemplateData header}}
<div style="width:auto; overflow:scroll">
<templatedata>
{
"description": "An infobox for articles about people",
"format": "{{_\n| __________________ = _\n}}\n",
"params": {
"honorific_prefix": {
"description": "Honorific prefix(es), to appear on the line above the person's name",
"label": "Honorific prefix"
},
"name": {
"description": "Common name of person (defaults to article name if left blank; provide birth_name (below) if different from name). If middle initials are specified (or implied) by the lead of the article, and are not specified separately in the birth_name field, include them here.",
"label": "Name",
"type": "string",
"suggested": true
},
"honorific_suffix": {
"description": "Honorific suffix(es), to appear on the line below the person's name",
"label": "Honorific suffix"
},
"native_name": {
"description": "The person's name in their own language, if different.",
"label": "Native name",
"type": "string"
},
"native_name_lang": {
"description": "ISO 639-1 code, e.g., \"fr\" for French. If more than one, use Template:lang in 'native_name' instead.",
"label": "Native name language"
},
"image": {
"description": "Image name: abc.jpg, xpz.png, 123.gif, etc. If an image is desired but not available, one may add \"yes\" to the \"needs-photo\" section of the :Template:WPBiography on the talkpage. If no image is available yet, do not use an image placeholder.",
"label": "Image",
"example": "abc.jpg, xpz.png, 123.gif",
"type": "wiki-file-name",
"suggested": true
},
"image_size": {
"description": "DEPRECATED/DISCOURAGED. Size to display image: 200px (set width), x300px (set height), or 200x300px (max width & max height). This defaults to frameless (default is 220px, but logged in users can change this by clicking on \"my preferences\" and adjusting thumbnail size) if empty or omitted. Use of this parameter is discouraged as per WP:IMGSIZE. Use image_upright instead.",
"label": "DEPRECATED: Image size",
"example": "200px",
"default": "220px",
"deprecated": "DEPRECATED: Use of this parameter is discouraged as per WP:IMGSIZE. Delete it when encountered and use image_upright instead."
},
"alt": {
"description": "Alt text for image, for visually impaired readers. One word (such as \"photograph\") is rarely sufficient. See WP:ALT.",
"label": "Alt",
"type": "string",
"aliases": [
"image_alt"
]
},
"caption": {
"description": "Caption for image, if needed. Try to include date of photo when relevant.",
"label": "Caption",
"aliases": [
"image_caption"
],
"type": "string"
},
"pronunciation": {
"description": "Details of how to pronounce the individual's native name.",
"label": "Native name pronunciation"
},
"birth_name": {
"description": "Name at birth; use only if different from name.",
"label": "Birth name",
"type": "string"
},
"birth_date": {
"description": "Use {{Birth date and age|YYYY|MM|DD}} for living people when the full date of birth is known. For deceased people, use {{Birth date|YYYY|MM|DD}}, as their current age should not be displayed. If only the year of birth is known, use {{Birth year and age|YYYY}} where appropriate. If the birth year is calculated from an age given at a specific date, consider using {{Birth based on age as of date}}.",
"label": "Birth date",
"type": "content"
},
"birth_place": {
"description": "Place of birth: city, administrative region, sovereign state. Use the name of the birthplace at the time of birth, e.g.: Saigon (prior to 1976), Ho Chi Minh City (post 1976). Do not use a flag template.",
"label": "Birth place",
"type": "string"
},
"baptised": {
"description": "Date of baptism: ONLY for use when birth date is not known (e.g., Beethoven). Will not display if a birth date is entered. Do not use subtemplates. Parameter 'baptized' can be used for articles that use American english spelling.",
"label": "Baptised",
"aliases": [
"baptized"
],
"type": "date"
},
"disappeared_date": {
"description": "(For missing people) Date of disappearance: Template:disappeared date and age (if birth date is known) or Template:disappeared date (if birth date unknown).",
"label": "Disappeared date"
},
"disappeared_place": {
"description": "(For missing people) Place of disappearance: city, administrative region, sovereign state. Do not use a flag template.",
"label": "Disappeared place"
},
"disappeared_status": {
"description": "(For missing people) Current status for the person, e.g., if the person is still regarded as missing (using Template:missing for to calculate the time since disappearance), or if the person has been declared dead in absentia, with a date for such a ruling.",
"label": "Disappeared status"
},
"death_date": {
"description": "Use {{Death date and age|death year|death month|death day|birth year|birth month|birth day}} when both the full date of death and full date of birth are known. If the date of birth is unknown, use {{Death date|YYYY|MM|DD}} instead, as the age at death cannot be calculated. If only the year of death is known, or if the exact dates are uncertain, consider using {{Death year and age}}",
"label": "Death date"
},
"death_place": {
"description": "Place of death: city, administrative region, sovereign state. Note: Do not use a flag template. Use the name of the deathplace at the time of death, e.g.: Saigon (prior to 1976), Ho Chi Minh City (post 1976)",
"label": "Death place",
"type": "string"
},
"death_cause": {
"description": "Cause of death. This should only be included when the cause of death has significance for the subject's notability.",
"label": "Death cause"
},
"body_discovered": {
"description": "Place where the body was discovered (if different from place of death). Do not use a flag template.",
"label": "Body discovered"
},
"resting_place": {
"description": "Place of burial, ash-scattering, etc. Do not use a flag template.",
"label": "Resting place"
},
"resting_place_coordinates": {
"description": "Coordinates for place of burial, ash-scattering etc. Use Template:coord template.",
"label": "Resting place coordinates"
},
"monuments": {
"description": "Significant monuments erected, buildings named, etc., in honour of the subject. If many, link to an appropriate section of the article instead.",
"label": "Monuments"
},
"other_names": {
"description": "Other notable names for the person, if different from name and birth_name.",
"label": "Other names"
},
"siglum": {
"description": "Siglum, monogram, shortcut, if relevant.",
"label": "Siglum"
},
"citizenship": {
"description": "Country of legal citizenship. Rarely needed. Should only be used if citizenship cannot be inferred from the birthplace. Do not use a flag template.",
"label": "Citizenship",
"type": "string"
},
"education": {
"description": "Include subject's educational credentials, typically university degrees. List the full article title of each degree-granting parent institution, followed by degree(s) earned in parentheses, e.g. an alumnus of [[Harvard College]], [[Harvard Law School]], and the [[Kellogg School of Management]] would be listed as: [[Harvard University]] (BA, JD) [[Northwestern University]] (MBA). If insufficient information is available to determine specific credentials attained, the 'alma_mater' parameter may be more appropriate.",
"label": "Education"
},
"alma_mater": {
"description": "Alma mater. This parameter is a more concise alternative to 'education', and will most often simply consist of the linked name of the last-attended higher education institution. It is usually not relevant to include either parameter for non-graduates, but article talk page consensus may conclude otherwise, as at Bill Gates.",
"label": "Alma mater"
},
"occupation": {
"description": "Occupation(s) as given in the lead.",
"label": "Occupation"
},
"years_active": {
"description": "Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format 1950–2000, or 1970–present if still active (note the use of an en dash, not hyphen). If no dates of birth and/or death are known for the subject, only a floruit date range, as is common with ancient subjects, this parameter can be used for it. If approximate (circa) dates are known for either or both, put them in the birth_date and death_date parameters.",
"label": "Years active"
},
"era": {
"description": "Era during which the subject lived or was active. Less specific than 'years active'.",
"label": "Era"
},
"employer": {
"description": "Employer(s), if relevant.",
"label": "Employer"
},
"organization": {
"description": "Non-employing organization(s), if relevant.",
"label": "Organization",
"aliases": [
"organizations",
"organisation",
"organisations"
]
},
"agent": {
"description": "The subject's agent (individual and/or agency), discouraged in most cases, specifically when promotional, and requiring a reliable source.",
"label": "Agent"
},
"known_for": {
"description": "A brief description of what the person is notable for.",
"label": "Known For",
"example": "Environmental activism"
},
"notable_works": {
"description": "Title(s) of notable work(s) (publications, compositions, sculptures, films, etc.) by the subject, if any.",
"label": "Notable works",
"aliases": [
"works",
"credits",
"label_name"
]
},
"style": {
"description": "The style in which the subject works, if applicable.",
"label": "Style"
},
"television": {
"description": "Television programmes presented by or closely associated with the subject.",
"label": "Television"
},
"height": {
"description": "If person was notable for their height, or if height is relevant. If used, this should also include the year of the measurement if the person had not reached full adulthood when this stat was published. See documentation of this parameter at Template:Infobox sportsperson for more information.",
"label": "Height"
},
"height_m": {
"description": "If person was notable for their height, or if height is relevant, their height in metres (it will be automatically converted to Imperial).",
"label": "Height in metres",
"type": "number"
},
"height_cm": {
"description": "If person was notable for their height, or if height is relevant, their height in centimetres (it will be automatically converted to Imperial).",
"label": "Height in centimetres",
"type": "number"
},
"height_ft": {
"description": "If person was notable for their height, or if height is relevant, their height in whole feet (it will be automatically converted to SI). Use with height_in.",
"label": "Height in feet",
"type": "number"
},
"height_in": {
"description": "If person was notable for their height, or if height is relevant, their height in remaining inches (it will be automatically converted to SI). Use with height_ft.",
"label": "Remaining height in inches",
"type": "number"
},
"title": {
"description": "Multiple uses: Formal title, such as First Lady of Japan for Akie Abe.; Awarded title, such as Mr. Olympia for Arnold Schwarzenegger.; Job title, such as President of Calvin College for Anthony Diekema.; A combination of the above, such as Professor of Mathematics and Fellow of the Royal Society for Bill Parry See also \"awards\" parameter, below, for awarded honors that are not really titles. A single award should not use both parameters.",
"label": "Title",
"aliases": [
"office"
]
},
"term": {
"description": "Years the person held the title listed above.",
"label": "Term"
},
"predecessor": {
"description": "Person who previously held the title listed above.",
"label": "Predecessor"
},
"successor": {
"description": "Person who subsequently held the title listed above.",
"label": "Successor"
},
"movement": {
"description": "If relevant. '''Movement''' can be social, political (non-party), artistic, philosophical, literary, cultural, etc.",
"label": "Movement"
},
"opponents": {
"description": "Notable relevant opponents (e.g., for major political office).",
"label": "Opponents"
},
"boards": {
"description": "For board of directors membership(s), if relevant. Field labeled Board member of.",
"label": "Boards"
},
"criminal_charges": {
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources in the article body.",
"label": "Criminal charge(s)",
"aliases": [
"criminal_charge"
]
},
"criminal_penalty": {
"label": "Criminal penalty",
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body."
},
"criminal_status": {
"label": "Criminal status",
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.",
"aliases": [
"judicial_status"
]
},
"spouse": {
"description": "Name of spouse(s), followed by years of marriage. Use the format Name (married 1950–present) for a current spouse, and Name (married 1970–1999) for former spouse(s). Separate entries using Template:Plainlist or Template:Unbulleted list. For deceased persons still married at time of death, do not include an end year. {{Marriage}} may be used.",
"label": "Spouse(s)",
"aliases": [
"spouses"
]
},
"partner": {
"description": "For unmarried life partners in a domestic partnership (of any gender or sexual orientation), not business partners. Use the format Name (1950–present) for current partner and Name (1970–1999) for former partner(s).",
"label": "Partner(s)",
"aliases": [
"partners"
]
},
"children": {
"description": "Number of children, or list of independently notable names, in which case, separate entries using Template:Plainlist or Template:Unbulleted list. Names may be preceded by a number to show total children and avoid implying that named children are the only offspring. For privacy reasons, consider omitting the names of children of living persons, unless notable.",
"label": "Children",
"example": "3"
},
"parents": {
"description": "Names of parents. Separate entries using Template:Plainlist or Template:Unbulleted list. If subject has only one notable mother and/or father, 'mother' and 'father' parameters may be used instead",
"label": "Parent(s)"
},
"mother": {
"description": "Name of mother; include only if subject has one mother who is independently notable or particularly relevant. Overwritten by 'parents' parameter.",
"label": "Mother",
"type": "string"
},
"father": {
"description": "Name of father; include only if subject has one father who is independently notable or particularly relevant. Overwritten by 'parents' parameter.",
"label": "Father",
"type": "string"
},
"relatives": {
"description": "Names of siblings or other relatives. Include the relationship in parentheses after the name (sister, uncle, etc). Separate entries using Template:Plainlist or Template:Unbulleted list.",
"label": "Relatives"
},
"family": {
"description": "Family or house of the individual, if notable.",
"label": "Family"
},
"callsign": {
"description": "Amateur radio call sign, if relevant.",
"label": "Callsign"
},
"awards": {
"description": "Notable awards. If many, link to an appropriate section of the article instead. See also \"title\" parameter, above, for awarded titles. A single award should not use both parameters.",
"label": "Awards"
},
"honours": {
"description": "Honours the individual has been awarded, if notable.",
"label": "Honours",
"aliases": [
"honors"
]
},
"website": {
"description": "Official website only. Unofficial websites should be placed under ==External links== in the body of the article. Use {{URL}}. Do not include the www. part unless the server requires it. Use camel case capitalization to make multiword domain names easier to read.",
"label": "Website",
"type": "content",
"example": "{{URL|example.com}}",
"suggested": true
},
"module": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module"
},
"module2": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module two"
},
"module3": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module three"
},
"module4": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module four"
},
"module5": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module five"
},
"module6": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module six"
},
"child": {
"label": "DEPRECATED: Use as an embedded infobox",
"description": "DEPRECATED: Use this infobox within another one. For experts only.",
"example": "yes",
"deprecated": true,
"aliases": [
"embed"
]
},
"signature": {
"description": "An image of the person's signature. Please use image name: abc.jpg, xpz.png, 123.gif, etc.",
"label": "Signature",
"type": "wiki-file-name"
},
"signature_type": {
"description": "Alter from Signature to, for example, Seal",
"label": "Signature type",
"type": "string"
},
"signature_size": {
"description": "Default is 150px. If necessary, a signature can be resized manually as per the \"image_size\" parameter.",
"label": "Signature size"
},
"signature_alt": {
"description": "Alt text for the signature image. For example, for :File:Thomas Jefferson Signature.svg, the alt text might be |signature_alt= Th: Jefferson, spelling out the signature exactly as it appears in the image.",
"label": "Signature alt",
"type": "string"
},
"footnotes": {
"description": "Notes about any of the infobox data.",
"label": "Footnotes"
},
"abovestyle": {
"description": "DEPRECATED: A CSS style to use for the individual's name, over-riding the community norm. Use only in exception circumstances.",
"label": "DEPRECATED: Name CSS over-ride",
"deprecated": true
},
"image_upright": {
"label": "Image upright",
"description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).",
"example": "1.15",
"default": "1",
"type": "number"
},
"landscape": {
"label": "Landscape",
"description": "Set to yes when using wide, short images. The image height (rather than width) will be limited to 200 pixels.",
"type": "boolean"
},
"burial_place": {
"label": "Burial place",
"description": "Place of burial, alternative to 'Resting place' Displays the label 'Burial place'.",
"type": "content"
},
"burial_coordinates": {
"label": "Burial place coordinates",
"description": "Coordinates for place of burial, to accompany 'Burial place'. Use {{coord}} template."
},
"nocat_wdimage": {
"label": "nocat_wdimage",
"description": "Where an infobox has no image but Wikidata has an image name, add an image or |nocat_wdimage=yes to the infobox.",
"type": "string"
},
"template_name": {
"label": "Template name",
"description": "Used when {{Infobox person}} is wrapped by another template. This would be the (lower-case) name of the wrapping template, without the \"Template:\" prefix."
},
"political_party": {
"label": "Party",
"description": "If relevant. Field labelled Political party."
},
"other_party": {
"label": "Other party",
"description": "If relevant. Field labelled Other political affiliations."
}
},
"paramOrder": [
"honorific_prefix",
"name",
"honorific_suffix",
"native_name",
"native_name_lang",
"image",
"image_upright",
"landscape",
"alt",
"caption",
"pronunciation",
"other_names",
"siglum",
"birth_name",
"birth_date",
"birth_place",
"baptised",
"disappeared_date",
"disappeared_place",
"disappeared_status",
"death_date",
"death_place",
"death_cause",
"body_discovered",
"resting_place",
"resting_place_coordinates",
"burial_place",
"burial_coordinates",
"monuments",
"citizenship",
"education",
"alma_mater",
"occupation",
"years_active",
"era",
"employer",
"organization",
"agent",
"known_for",
"notable_works",
"style",
"television",
"height",
"height_m",
"height_cm",
"height_ft",
"height_in",
"title",
"term",
"predecessor",
"successor",
"political_party",
"other_party",
"movement",
"opponents",
"boards",
"criminal_charges",
"criminal_penalty",
"criminal_status",
"spouse",
"partner",
"children",
"parents",
"mother",
"father",
"relatives",
"family",
"callsign",
"awards",
"honours",
"website",
"template_name",
"module",
"module2",
"module3",
"module4",
"module5",
"module6",
"signature",
"signature_type",
"signature_size",
"signature_alt",
"footnotes",
"nocat_wdimage",
"child",
"abovestyle",
"image_size"
]
}
</templatedata>
</div>
== Tracking categories ==
{{Infobox tracking categories}}
* {{clc|Pages using infobox person with multiple employers}}
* {{clc|Pages using infobox person with multiple organizations}}
* {{clc|Pages using infobox person with multiple agents}}
* {{clc|Pages using infobox person with multiple credits}}
* {{clc|Pages using infobox person with multiple labels}}
* {{clc|Pages using infobox person with multiple opponents}}
* {{clc|Pages using infobox person with multiple criminal charges}}
* {{clc|Pages using infobox person with multiple spouses}}
* {{clc|Pages using infobox person with multiple partners}}
* {{clc|Pages using infobox person with multiple parents}}
* {{clc|Biography template using pronunciation}}
* {{clc|Biography with signature}}
* {{clc|No local image but image on Wikidata}} – Used by [[Template:Wikidata image]] to track articles where an infobox has no image but [[Wikidata]] has an image name. To exclude articles from this category, add an image or {{para|nocat_wdimage|yes}} to the infobox.
== See also ==
* {{clc|Category:Templates calling Infobox person}}
Variations of this template which use [[Wikidata]]:
* {{tl|Infobox person/Wikidata}}
Dependencies:
* {{tl|Br separated entries}}
* {{tl|Pluralize from text}}
* {{tl|Main other}}
* {{tl|Convinfobox}}
* {{tl|Infobox person/height}}
* {{tl|Count}}
* {{tl|Unbulleted list}}
* {{tl|If empty}}
Alternative templates are listed at [[Wikipedia:WikiProject Biography/Infoboxes|WikiProject Biography/Infoboxes]] and within the [[:Category:People and person infobox templates|people and person infobox templates category]].
<div style="display: none">{{reflist}}</div>
{{Film- and television-related infobox templates}}
<includeonly>
{{Basepage subpage|
[[Category:Infobox templates|Person]]
[[Category:People and person infobox templates| ]]
[[Category:Biographical templates usable as a module|Person]]
[[Category:Infobox templates with module parameter|Person]]
[[Category:Templates that add a tracking category]]
}}
</includeonly>
4k2saqq6gix9wupa7tupwao42x2qvl0
73919
73918
2026-07-11T18:59:07Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_person/doc]]
73918
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}{{pp-move-indef}}</noinclude>{{for|an infobox for fictional characters|Template:Infobox character}}
{{Template shortcut|Personbox}}
{{documentation subpage}}
{{Person infobox header}}
{{High-use|info=About [https://linkcount.toolforge.org/index.php?project=en.wikipedia.org&page=Template:Infobox_person&namespaces=0 497,000] of them (89%) are in mainspace.}}
{{Notice|Please note that in 2016, the {{para|religion}} and {{para|ethnicity}} parameters were removed from Infobox person as a result of [[Wikipedia:Village pump (policy)/Archive 126#RfC: Religion in biographical infoboxes|the RfC: Religion in biographical infoboxes]] and [[Wikipedia:Village pump (policy)/Archive 127#RfC: Ethnicity in infoboxes|the RfC: Ethnicity in infoboxes]] as clarified by [[Template talk:Infobox person/Archive 31#Ethnicity? Religion?|this discussion]].}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters|Module:Check for conflicting parameters|Module:Person date}}
{{Tracks Wikidata|P18|cat=No local image but image on Wikidata}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{tl|Infobox person}} may be used to summarize information about a particular person, usually at the top of an article.
== Redirects and calls ==
At least {{PAGESINCATEGORY:Templates calling Infobox person}} other [[:Category:Templates calling Infobox person|templates call this one]] and many templates {{Querylink|Special:WhatLinksHere/Template:Infobox_person|qs=namespace=10&hidetrans=1&hidelinks=1|redirect here}}.
== Modules ==
The following templates are suitable for use as a "module" in this one:
* Templates in [[:Category:Biographical templates usable as a module]]
* {{tl|Listen}}
* {{tl|Infobox Chinese}}
== Usage ==
The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields. Any parameters left blank or omitted will not be displayed.
=== Blank template with basic parameters ===
{{Infobox person
| name = ''name''
| image = example-serious.jpg
| alt = alt
| caption = ''caption''
| birth_name = ''birth_name''
| birth_date = ''birth_date''
| birth_place = ''birth_place''
| death_date = ''death_date''
| death_place = ''death_place''
| other_names = ''other_names''
| occupation = ''occupation''
| years_active = ''years_active''
| known_for = ''known_for''
| notable_works = ''notable_works''
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em;" copy="1">
{{Infobox person
| name = <!-- defaults to article title when left blank -->
| image = <!-- filename only, no "File:" or "Image:" prefix, and no enclosing [[brackets]] -->
| alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software -->
| caption =
| birth_name = <!-- use only if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. -->
| birth_place =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (DEATH date then BIRTH date) -->
| death_place =
| other_names =
| occupation =
| years_active =
| known_for =
| notable_works =
}}
</syntaxhighlight>
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em;" copy="1">
{{Infobox person
| name =
| image =
| alt =
| caption =
| birth_name =
| birth_date =
| birth_place =
| death_date =
| death_place =
| other_names =
| occupation =
| years_active =
| known_for =
| notable_works =
}}
</syntaxhighlight>
{{clear}}
=== Blank template with all parameters ===
Only the most pertinent information should be included. Please {{em|remove}} unused parameters, and refrain from inserting dubious trivia in an attempt to fill all parameters.
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em" copy="1">
{{Infobox person
| honorific_prefix =
| name = <!-- defaults to article title when left blank -->
| honorific_suffix =
| native_name =
| native_name_lang =
| image = <!-- filename only, no "File:" or "Image:" prefix, and no enclosing [[brackets]] -->
| image_upright =
| landscape = <!-- yes, if wide image, otherwise leave blank -->
| alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software -->
| caption =
| pronunciation =
| birth_name = <!-- use only if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. -->
| birth_place =
| baptised = <!-- will not display if birth_date is entered -->
| disappeared_date = <!-- {{Disappeared date and age|YYYY|MM|DD|YYYY|MM|DD}} (disappeared date then birth date) -->
| disappeared_place =
| disappeared_status =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (enter DEATH date then BIRTH date (e.g., ...|1967|8|31|1908|2|28}} use both this parameter and |birth_date to display the person's date of birth, date of death, and age at death) -->
| death_place =
| death_cause = <!-- should only be included when the cause of death has significance for the subject's notability -->
| body_discovered =
| resting_place =
| resting_place_coordinates = <!-- {{coord|LAT|LONG|type:landmark|display=inline}} -->
| burial_place = <!-- may be used instead of resting_place and resting_place_coordinates (displays "Burial place" as label) -->
| burial_coordinates = <!-- {{coord|LAT|LONG|type:landmark|display=inline}} -->
| monuments =
| other_names =
| siglum =
| citizenship = <!-- use only when necessary per [[WP:INFONAT]] -->
| education =
| alma_mater =
| occupation =
| years_active =
| era =
| employer =
| organization =
| agent = <!-- discouraged in most cases, specifically when promotional, and requiring a reliable source -->
| known_for =
| notable_works = <!-- produces label "Notable work"; may be overridden by |credits=, which produces label "Notable credit(s)"; or by |works=, which produces label "Works"; or by |label_name=, which produces label "Label(s)" -->
| style =
| television =
| height = <!-- "X cm", "X m" or "X ft Y in" plus optional reference (conversions are automatic) -->
| title = <!-- formal/awarded/job title. The parameter |office=may be used as an alternative when the label is better rendered as "Office" (e.g. public office or appointments) -->
| term =
| predecessor =
| successor =
| political_party =
| other_party =
| movement =
| opponents =
| boards =
| criminal_charges = <!-- criminality parameters should be supported with citations from reliable sources -->
| criminal_penalty =
| criminal_status =
| spouse = <!-- use article title or common name -->
| partner = <!-- (unmarried long-term partner) -->
| children =
| parents = <!-- overrides mother and father parameters -->
| mother = <!-- may be used (optionally with father parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| father = <!-- may be used (optionally with mother parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| relatives =
| family =
| callsign = <!-- amateur radio, use if relevant -->
| awards =
| website = <!-- {{URL|example.com}} -->
| module =
| module2 =
| module3 =
| module4 =
| module5 =
| module6 =
| signature =
| signature_type =
| signature_size =
| signature_alt =
| footnotes =
}}
</syntaxhighlight>
{{Parameter names example | _display=italics
| honorific_prefix | name | honorific_suffix
| native_name | native_name_lang
| image=example-serious.jpg | image_upright=1 | landscape | alt | caption <!--shows placement of parameters, see examples for image-->
| pronunciation
| birth_name | birth_date | birth_place | baptised <!--does not display due to birth date displayed-->
| disappeared_date | disappeared_place | disappeared_status | death_date | death_place | death_cause <!--should only be included when the cause of death has significance for the subject's notability-->
| body_discovered | resting_place | resting_place_coordinates | monuments
| other_names | siglum | citizenship | education | alma_mater
| occupation | years_active | era | employer | organization | agent | known_for | notable_works
| style | television | height
| title | term | predecessor | successor | political_party | other_party | movement | opponents | boards
| criminal_charges | criminal_penalty | criminal_status
| spouse | partner | children | parents | relatives | family | callsign | awards | website
| module | module2 | module3 | module4 | module5 | module6 <!--removed the ... which only saved two lines from being shown-->
| signature=<nowiki>signature.jpg</nowiki> |signature_type | signature_size | signature_alt
| footnotes
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em" copy="1">
{{Infobox person
| honorific_prefix =
| name =
| honorific_suffix =
| native_name =
| native_name_lang =
| image =
| image_upright =
| landscape =
| alt =
| caption =
| pronunciation =
| birth_name =
| birth_date =
| birth_place =
| baptised =
| disappeared_date =
| disappeared_place =
| disappeared_status =
| death_date =
| death_place =
| death_cause =
| body_discovered =
| resting_place =
| resting_place_coordinates =
| burial_place =
| burial_coordinates =
| monuments =
| other_names =
| siglum =
| citizenship =
| education =
| alma_mater =
| occupation =
| years_active =
| era =
| employer =
| organization =
| agent =
| known_for =
| notable_works =
| style =
| television =
| height =
| title =
| term =
| predecessor =
| successor =
| political_party =
| other_party =
| movement =
| opponents =
| boards =
| criminal_charges =
| criminal_penalty =
| criminal_status =
| spouse =
| partner =
| children =
| parents =
| mother =
| father =
| relatives =
| family =
| callsign =
| awards =
| website =
| module =
| module2 =
| module3 =
| module4 =
| module5 =
| module6 =
| signature =
| signature_type =
| signature_size =
| signature_alt =
| footnotes =
}}
</syntaxhighlight>
{{clear}}
== Parameters ==
{{notice|Do not use all these parameters for any one person. The list is long to cover a wide range of people. Use only those parameters that convey essential or notable information about the subject, and ensure that this information is sourced in the article or (if present only in the infobox) in the infobox itself.}}
Any parameters left blank or omitted will not be displayed. Many parameters have alternative names, implemented for compatibility with other templates (especially to aid merging). The preferred names are shown in the table below.
{| class="wikitable"
! Parameter
! Explanation
|-
| {{code|honorific_prefix}}
| To appear on the line above the person's name. This is for honorifics of serious significance that are attached to the name in formal address, such as knighthoods, "The Honourable", and "His/Her Excellency"; do not use it for routine things like "{{!mxt|[[Dr.]]}}" or "{{!mxt|[[Ms.]]}}"
|-
| {{code|name}}
| Common name of person (defaults to article name if left blank; provide {{para|birth_name}} (below) if different from {{para|name}}). If middle initials are specified (or implied) by the lead of the article, and are not specified separately in the {{para|birth_name}} parameter, include them here. ''Do not put honorifics or alternative names in this parameter.'' There are separate parameters for these things, covered below.
|-
| {{code|honorific_suffix}}
| To appear on the line below the person's name. This is for things like {{para|honorific_suffix|[[Officer of the Order of the British Empire|OBE]]}} – honorifics of serious significance that are attached to the name in formal address, such as national orders and non-honorary doctorates; do not use it for routine things like "{{!mxt|[[Bachelor of Arts|BA]]}}". It is permissible but not required to use the {{tlx|post-nominals}} template inside this parameter; doing so requires {{tlx|post-nominals|size{{=}}100%|...}}.
|-
| {{code|native_name}}
| The person's name in their own language, if different.
|-
| {{code|native_name_lang}}
| [[ISO 639-1]] code, e.g., "{{pval|fr}}" for French. If more than one, use {{tlx|lang}} around each name in {{para|native_name}} instead.
|-
| {{code|image}}
| Image name: {{pval|abc.jpg}}, {{pval|xpz.png}}, {{pval|123.gif}}, etc., without the {{code|File:}} or {{code|Image:}} prefix. If an image is desired but not available, one may add {{pval|yes}} to the {{para|needs-photo}} parameter of the {{tlx|WikiProject Biography}} template on the talk page. If no image is available yet, [[Wikipedia:Centralized discussion/Image placeholders|do not use an image placeholder]]. See [[#Image]] for further guidelines.
|-
| {{code|image_upright}}
| Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).
|-
| {{code|landscape}}
| Set to <code>yes</code> when using wide, short images. The image height (rather than width) will be limited to 200 pixels.
|-
| {{code|alt}}
| Descriptive [[Wikipedia:Manual of Style/Accessibility/Alternative text for images|{{code|alt}} text for the image]], for visually impaired readers. One word (such as {{pval|photograph}}) is rarely sufficient. Do not copy-paste the value of {{para|caption}} (below) into this parameter. Example of the difference: "Willie Nelson at a concert in Dallas, 1989" is good as {{para|caption}} value; "Nelson in western-wear with an acoustic guitar, on stage in a daytime show with band in background" is an {{para|alt}} description. If nothing meaningful can be said that isn't already in the caption, use the [[Wikipedia:Manual of Style/Accessibility/Alternative text for images#Captions and nearby text|stock text]] {{para|alt|refer to caption}}.
|-
| {{code|caption}}
| Caption for image, if needed. Try to include the date of photo, some context (check the <code>File:</code> or [[Wikimedia Commons|Commons]] page for the image). Image credit should generally not be included per [[MOS:CREDITS]].
|-
| {{code|pronunciation}}
| Details of how to pronounce the individual's native name. <!--copied from TemplateData description, if changed please update there also-->
|-
| {{code|birth_name}}
| Name at birth; use only if different from {{para|name}}.
|-
| {{code|birth_date}}
| Date of birth: Use {{tlx|birth date and age}} (if living) or {{tlx|birth date}} (if dead). {{crossref|See template's page for details on usage.}} If only a year of birth is known, or age as of a certain date, consider using {{tlx|birth year and age}} or {{tlx|birth based on age as of date}}. For living people [[Wikipedia:Biographies of living persons#Privacy of personal information and using primary sources|supply only the year unless the exact date is already widely published]]. Treat such cases as if only the year is known, so use {{tlx|birth year and age}} or a similar option. The templates mentioned in this paragraph emit metadata indicating the date is in the Gregorian calendar; if the date is in the Julian calendar, do not use these templates, just write the date.
|- id="birth_place"
| {{code|birth_place}}
| Place of birth: {{var|city}}, {{var|administrative region}}, {{var|country}}.
* Use the name of the birthplace at the time of birth, e.g.: {{pval|Saigon}} (prior to 1976) or {{pval|Ho Chi Minh City}} (post-1976).
* [[Wikipedia:Manual of Style/Icons#Do not use flags to indicate locations of birth, residence, or death|Do not use a flag template]], coat of arms, or other icon.
* [[Wikipedia:Manual of Style/Infoboxes#Purpose|Omit unnecessary or redundant details]]. For example, it is not necessary to state: {{!xt|{{pval|New York City, [[New York (state)|New York]], United States}}}} when {{xt|{{pval|New York City, U.S.}}}} conveys essentially the same information more concisely.
* Country name should be visible (not just in a link target). Well-known countries [[Wikipedia:Manual of Style/Linking#What generally should not be linked|should generally not be linked]], but historical and less-well-known countries can be.
* For modern subjects, the country should generally be a sovereign state; for United Kingdom locations, the constituent [[Countries of the United Kingdom|countries of the UK]] are sometimes used instead, when more appropriate in the context.
* For historical subjects, use the place name most appropriate for the context and our readership.
* Historical sovereign should be clear from the place of birth, as this determines nationality and citizenship. {{xt|Porbandar, Kathiawar Agency, British India}}; {{xt|San Juan, Puerto Rico, Spanish Empire}}
* For subsequent places (of death, etc.) it is not necessary to repeat jurisdictional details or links for the same place name.
* Follow [[MOS:USA]], e.g. "US" instead of "USA"
* When clarifying for historical reasons ("then a part of X" or "now in X"), follow [[MOS:GEOLINK]].
|-
| {{code|baptised}}<br/>or {{code|baptized}}
| Date of baptism: {{em|Only}} for use when birth date is not known (e.g., for [[Ludwig van Beethoven]]). Will not display if a birth date is entered. Do not use subtemplates. Parameter <code>baptized</code> can be used for articles that use American English spelling.
|-
| {{code|disappeared_date}}
| (For missing people) Date of disappearance: Use {{tlx|disappeared date and age}} (if birth date is known) or {{tlx|disappeared date}} (if birth date unknown).
|-
| {{code|disappeared_place}}
| (For missing people) Place of disappearance: {{var|city}}, {{var|administrative region}}, {{var|country}}. <!--This space is needed for readability, due to quirk of these templated elements being in proximity.--> ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{code|disappeared_status}}
| (For missing people) Current status for the person, e.g., if the person is still regarded as missing (using {{tlx|missing for}} to calculate the time since disappearance), or if the person has been [[Declared death in absentia|declared dead ''{{lang|la|in absentia}}'']], with a date for such a ruling.
|-
| {{code|death_date}}
| Date of death: Use {{tlx|death date and age}} (if birth date is known) or {{tlx|death date}} (if birth date unknown). {{crossref|See template's page for details on usage.}} If exact dates are unknown, consider using {{tlx|death year and age}}. The templates mentioned in this paragraph emit metadata indicating the date is in the Gregorian calendar; if the date is in the Julian calendar, do not use these templates, just write the date.
|-
| {{code|death_place}}
| Place of death: {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{code|death_cause}}
| Cause of death. Should be clearly defined and sourced, and should only be included when the cause of death has significance for the subject's notability, e.g. [[James Dean]], [[John Lennon]]. It should not be filled in for unremarkable deaths such as those from old age or routine illness, e.g. [[Bruce Forsyth]], [[Eduard Khil]].
|-
| {{code|body_discovered}}
| Place where the body was discovered (if different from place of death). {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{code|burial_place}}
| Place of burial {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc. {{crossref|See {{para|resting_place}} for non-burials}}.)
|-
| {{code|burial_coordinates}}
| Coordinates for place of burial, to accompany {{para|burial_place}}. Use {{tlx|coord}} template.
|-
| {{code|resting_place}}
| Location of columbarium, ash-scattering, etc. If no location, leave blank. {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{code|resting_place_coordinates}}
| Coordinates for location of columbarium, ash-scattering etc. Use {{tlx|coord}} template.
|-
| {{code|monuments}}
| Significant monuments erected, buildings named, etc., in honour of the subject. If many, link to an appropriate section of the article instead.
|-
| {{code|other_names}}
| Other notable names for the person, if different from {{para|name}} and {{para|birth_name}}. [[Wikipedia:Manual of Style/Biographies#Pseudonyms|This can include]] stage names, maiden/married names, nicknames, criminal aliases, etc.
|-
| {{code|siglum}}
| [[Siglum]] or monogram, a text shortcut (often formed from the initials of the name, with variations) used to sign work, if relevant.
|-
| {{code|citizenship}}
| Country of legal citizenship. Rarely needed - omit if the same as birth country. See [[WP:INFONAT]] for detailed guidelines. {{crossref|Also see {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, anachronisms, "country" definitions, etc.
|-
| {{code|education}}
| Include subject's educational credentials, typically university degrees. List the full article title of each degree-granting parent institution, followed by degree(s) earned in parentheses, e.g. an alumnus of [[Harvard College]], [[Harvard Law School]], and the [[Kellogg School of Management]] would be listed as: <br>
[[Harvard University]] (BA, JD) <br>
[[Northwestern University]] (MBA) <br><br> If insufficient information is available to determine specific credentials attained, the 'alma_mater' parameter may be more appropriate.
|-
| {{code|alma_mater}}
| ''[[Alma mater]]''. This parameter is a more concise alternative to (not addition to) {{para|education}}, and will often consist of the linked name of the last-attended institution of higher education (not secondary schools). It is usually not relevant to include either parameter for non-graduates, but article talk page consensus may conclude otherwise, as perhaps at [[Bill Gates]].
|-
| {{code|occupation}}
| Occupation(s) as given in the lead. Use list markup for three or more entries, e.g. with {{tlx|flatlist}}. Please observe [[sentence case]] and capitalise only the first letter of the first item; e.g.:
{{block indent|1={{Flatlist|
* Musician
* singer-songwriter
* actor
}}}}
|-
| {{code|years_active}}
| Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format {{code|1950–2000}}, or {{code|1970–present}} if still active. [[Wikipedia:Manual of Style/Dates and numbers#Ranges|Date ranges]] always use an [[Wikipedia:Manual of Style#En dashes|en dash]], not hyphen. If no dates of birth and/or death are known for the subject, only a ''[[floruit]]'' date range, as is common with ancient subjects, this parameter can be used for it. If approximate (''[[wikt:circa#English|circa]]'') dates are known for either or both, put them in the {{para|birth_date}} and {{para|death_date}} parameters. Helpful templates: {{tlx|floruit}}, {{tlx|circa}}.
|-
| {{code|era}}
| Era (e.g., {{pval|Medieval}}) in which the person lived; less specific than {{para|years_active}}. Should not be used if dates are available.
|-
| {{code|employer}}
| Employer(s), if relevant.
|-
| {{code|organization}} or {{code|organisation}}
| Non-employing organization(s), if relevant.
|-
| {{code|agent}}
| The subject's agent (individual and/or agency), discouraged in most cases, specifically when promotional, and requiring a [[Wikipedia:Identifying reliable sources|reliable source]].
|-
| {{code|known_for}}
| A brief description of why the person is notable.
|-
| {{ubl|{{code|notable_works}};<br/> {{small|alternatives:}}
|{{code|credits}}
|{{code|label_name}}
|{{code|works}}
}}
| Title(s) of notable work(s) (publications, compositions, sculptures, films, etc.) by the subject, if any. Produces the label '''Notable work'''. May be overridden by {{para|credits}}, which produces '''Notable credit(s)'''; or by {{para|works}}, which produces '''Works'''; or by {{para|label_name}}, which produces '''Label(s)'''.
* The {{para|notable_works}}, {{para|credits}}, and {{para|label_name}} parameters are intended to be (at most) short [[#Inline lists|inline lists]].
* The {{para|label_name}} variant is used for one or more record labels with which a performer is associated, or a fashion label in which a designer has been heavily involved or for which they are well known. Remember that this parameter is an alternative to the others mentioned here and is not used along with them.
* The {{para|works}} variant is intended to link to {{em|a specific list article}} for a larger body of work (not all of which may be individually notable).
|-
| {{code|style}}
| The style of the subject's works, if applicable. {{crossref|This parameter is not for [[Style (manner of address)|styles of address or office]]; see {{para|honorific_prefix}}.}}
|-
| {{code|television}}
| Television programmes presented by or {{em|closely}} associated with the subject. For multiple entries, use an [[#Inline lists|inline list]].
|-
| {{code|height}}
| If person was notable for their height, or if height is relevant. If used, this should also include the year of the measurement if the person had not reached full adulthood when this stat was published. {{crossref|See documentation of this parameter at [[Template:Infobox sportsperson#height|Template:Infobox sportsperson]] for more information.}}
|-
| {{code|title}}
| Multiple uses:
* Formal title, such as {{pval|First Lady of Japan}} for [[Akie Abe]].
* Awarded title, such as {{pval|Mr. Olympia}} for [[Arnold Schwarzenegger]].
* Job title, such as {{pval|President of Calvin College}} for [[Anthony Diekema]].
* A combination of the above, such as {{pval|Professor of Mathematics}} and {{pval|[[Fellow of the Royal Society]]}} for [[Bill Parry (mathematician)|Bill Parry]]
For multiple entries, use an [[#Inline lists|inline list]].
Use the {{para|awards}} parameter, below, for awarded honors that are not really titles. A single award should not use both parameters.
|-
| {{code|office}}
| May be used as an alternative to {{para|title}} when the label is better displayed as '''Office''' (e.g. public office or appointments). Using this parameter will override {{para|title}}.
|-
| {{code|term}}
| Years the person held the {{para|title}} or {{para|office}} listed above. Helpful template: {{tlx|reign}} (also used for civil offices).
|-
| {{code|predecessor}}
| Person who previously held the {{para|title}} or {{para|office}} listed above.
|-
| {{code|successor}}
| Person who subsequently held the {{para|title}} or {{para|office}} listed above.
|-
| {{code|political_party}}
| If relevant. Field labelled '''Political party'''.
|-
| {{code|other_party}}
| If relevant. Field labelled '''Other political affiliations'''.
|-
| {{code|movement}}
| If relevant. Can be [[Social movement|social]], [[Political movement|political]] (non-party), [[Art movement|artistic]], [[Philosophical movement|philosophical]], [[List of literary movements|literary]], [[Cultural movement|cultural]], etc.
|-
| {{code|opponents}}
| Notable relevant opponents (e.g., for major political office).
|-
| {{code|boards}}
| For [[board of directors]] membership(s), if relevant. Field labeled '''Board member of'''.
|-
| {{ubl|{{code|criminal_charges}}|{{code|criminal_penalty}}|{{code|criminal_status}}}}
| For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.
|-
| {{code|spouse}}
| Name of spouse(s), followed by years of marriage. Use the format ''Name (m. 1950)'' for a current spouse, and ''Name (m. 1970–1999)'' for former spouse(s). Use article title (if linking) or [[Wikipedia:Article titles#Use commonly recognizable names|common name]]. For multiple entries, use an [[#Inline lists|inline list]]. For deceased persons still married at time of death, do not include the end year.
|-
| {{code|partner}}
| If particularly relevant, or if the partner is notable; "partner" here means unmarried life partners in a [[domestic partnership]] (of any gender or sexual orientation), not business partner. Use the format ''Name (1950–present)'' for current partner and ''Name (1970–1999)'' for former partner(s).
|- id=children
| {{code|children}}
| Typically the number of children (e.g., {{pval|3}}); only list names of independently notable or particularly relevant children. Names may be preceded by a number to show total children and avoid implying that named children are the only offspring. For multiple entries, use an [[#Inline lists|inline list]]. {{em|For [[Wikipedia:Biographies of living persons#Privacy of names|privacy reasons]], consider omitting the names of living children, unless notable.}}
|-
| {{code|parents}}
| Names of parents; include only if they are independently notable or particularly relevant. For multiple entries, use an [[#Inline lists|inline list]]. If subject has only one notable mother and/or only one notable father, {{para|mother}} and {{para|father}} parameters may be used instead. These parameters may be used for biological, adoptive, foster, or step-parents.
|-
| {{code|mother}}
| Name of mother; include only if subject has one mother who is independently notable or particularly relevant. Displays '''Parent(s)''' as label, and is overridden by the {{para|parents}} parameter.
|-
| {{code|father}}
| Name of father; include only if subject has one father who is independently notable or particularly relevant. Displays '''Parent(s)''' as label, and is overridden by the {{para|parents}} parameter.
|-
| {{code|relatives}}
| Names of siblings or other relatives; include only if independently notable and particularly relevant. Include the relationship in parentheses after the name (sister, uncle, etc.). For multiple entries, use an [[#Inline lists|inline list]].
|-
| {{code|callsign}}
| Amateur radio [[call sign]], if relevant.
|-
| {{code|awards}}
| Notable awards. If many, link to an appropriate section of the article instead. Use {{para|title}} parameter, above, for awarded titles; A single award should not use both parameters.
|-
| {{code|website}}
| Official website only. Unofficial websites should be placed under <code><nowiki>==External links==</nowiki></code> in the body of the article. Use {{tlx|URL}} as in {{tnull|URL|Example.com}}. Do not display the {{samp|www.}} part unless the site requires it.
|-
| {{ubl | {{code|module}} | {{code|module2}} | {{code|module3}} | {{code|module4}} | {{code|module5}} | {{code|module6}} }}
| Used for embedding other infoboxes into this one. Example:
<syntaxhighlight lang="wikitext">
{{Infobox person
| name = Paul McCartney
...
| module =
{{Infobox musical artist
| embed = yes
| instrument = piano
...
}} <!-- end of Infobox musical artist -->
...
}} <!-- end of Infobox person -->
</syntaxhighlight>
{{crossref|For more detailed information, see [[Wikipedia:WikiProject Infoboxes/embed]].}}
|-
| {{code|signature}}
| An image of the person's signature. Please use image name: {{pval|abc.jpg}}, {{pval|xpz.png}}, {{pval|123.gif}}, etc., without the {{samp|File:}} or {{samp|Image:}} prefix
|-
| {{code|signature_type}}
| Changes the '''Signature''' label to the preferred argument, such as '''Seal'''
|-
| {{code|signature_size}}
| Default is {{samp|150px}}. If necessary, a signature can be resized manually as per the {{para|image_size}} parameter.
|-
| {{code|signature_alt}}
| Alt text for the signature image. For example, for {{samp|[[:File:Thomas Jefferson Signature.svg]]}}, the alt text might be {{para|signature_alt| Th: Jefferson}}, spelling out the signature exactly as it appears in the image.
|-
| {{code|footnotes}}
| Textual notes about any of the infobox data. This is not for reference citations. If an infobox parameter's value needs a citation, [[Wikipedia:Citing sources|cite inline]] at the end of the value. Citations will appear in the article's references section along with the other citations in the article.
|-
| {{code|image_size}}
| {{strongbad|Deprecated}}. Size to display image: {{pval|200px}} (set width), {{pval|x300px}} (set height), or {{pval|200x300px}} (max width & max height). If empty or omitted, this defaults to {{samp|frameless}} (default is {{samp|220px}}, but logged-in users can change this by clicking on "my preferences" and adjusting thumbnail size). [[Wikipedia:Image use policy#Displayed image size|Use of this parameter is discouraged]]. Use {{para|image_upright}} instead. Do not use "{{!mxt|×}}" or capital "{{!mxt|X}}"
|-
| {{code|template_name}}
| '''This parameter should not be used in articles.''' It allows other templates to specify a template name such as ''Infobox architect'' for parameter tracking categories, like [[:Category:Pages using infobox architect with unknown parameters]] instead of [[:Category:Pages using infobox person with unknown parameters]]. The parameter is found in templates which use [[Template:Infobox person]] via [[Module:Template wrapper]], see [[:Category:Templates calling Infobox person]].
|}
=== Additional parameter usage explanation ===
==== Image ====
The image in the infobox should be representative of the person who is the subject of the article. For some historical figures, particularly those born in the 18th century or before, this image is often a painting or other artistic depiction of the individual (see [[George Washington]]). Persons born in the 20th century onward, such as [[Barack Obama]], are most often represented by a photograph of the individual.
When the subject of a biographical article has recently died, particularly those who have been publicly known for decades, editors may come to a consensus on the article's talk page regarding what image would best be suited for the infobox. An example of such a discussion can be found in the talk page archives for [[Elizabeth II]] (section [[Talk:Elizabeth II/Archive 45#Infobox photograph for after her death|Infobox photograph for after her death]]); in this instance, the 2015 photograph of Elizabeth II that was present in the article's infobox when discussions began was eventually replaced with a photograph of her taken in 1958.
=== Inline lists ===
{{Main|WP:Manual of Style/Lists#Horizontal lists|WP:Manual of Style/Lists#Unbulleted lists}}
Parameters with multiple values should be formatted with inline-list templates.
'''Horizontal''' ones include {{tlx|hlist}} or {{tlx|flatlist}}. In [[Wikipedia:Manual of Style/Lists#Horizontal lists|horizontal style]], only the first item is capitalized (aside from [[Wikipedia:Manual of Style/Capital letters#Proper names|proper names]]).
This style is best for short items, and few of them. Mid-dots, commas or semicolons are available as separators (use semicolons or mid-dots if any items contain their own commas). For example:
* {{para|parameter_name|{{tlp|hlist |Foo |bar |baz}}}} → {{hlist |Foo |bar |baz}}
* {{para|parameter_name|{{tlp|cslist |Foo |bar |baz}}}} → {{cslist |Foo |bar |baz}}
* {{para|parameter_name|{{tlp|cslist |Foo, fee |bar, bor |baz, biz |semi=true}}}} → {{cslist |Foo, fee |bar, bor |baz, biz |semi=true}}
Horizontal list example with {{tlx|hlist|Item one|item two|item three}}: {{hlist|Item one|item two|item three}}
'''Vertical''' templates are {{tlx|plainlist}} and {{tlx|unbulleted list}} (vertical), use [[Wikipedia:Manual of Style/Lists#Unbulleted lists|unbulleted, non-indented lists]] for clean display in infoboxes. Entries may be all [[sentence case]], or all lowercase (aside from proper names) after the first.
This style is best for long items, and longer lists. For long lists of information that may not be of immediate interest but retained for reference, the {{tlx|collapsible list}} template can be used; this is not a universally accessible option, so should not be used for key information.
''[[Wikipedia:Manual of Style/Lists#Line breaks|Do not use {{tag|br|s}} markup]]'' to create fake lists, as in: {{!mxt|<nowiki>Item one<br />item two<br />item three</nowiki>}}.
Vertical list example:, using {{tlx|unbulleted list|Item one|item two|item three}}:
{{unbulleted list|Item one|item two|item three}}
== Example ==
{{Infobox person{{#ifeq:{{SUBPAGENAME}}|sandbox |/sandbox}}
| name = Bill Gates
| image = Bill Gates 2017 (cropped).jpg
| alt = Head and shoulders photo of Bill Gates
| caption = Gates in 2017
| birth_name = William Henry Gates III
| birth_date = {{birth date and age|1955|10|28}}
| birth_place = [[Seattle, Washington]], U.S.
| known_for = Co-founder of [[Microsoft]] and [[Bill & Melinda Gates Foundation]]
| education = [[Harvard University]] (dropped out)
| occupation = {{hlist|Software developer|investor|entrepreneur}}
| years_active = 1972–present
| title = {{indented plainlist|
* Co-[[chairperson]] of the Bill & Melinda Gates Foundation
* Chairman and founder of [[Branded Entertainment Network]]
* Chairman and founder of [[Cascade Investment]]
* Chairman and co-founder of [[TerraPower]]
* Founder of [[Breakthrough Energy]]
* Technology advisor of Microsoft}}
| boards = {{plainlist|
* [[Berkshire Hathaway]]
* Microsoft (former, both)}}
| spouse = {{marriage|[[Melinda French]]|January 1, 1994|August 2, 2021|reason=divorce}}
| children = 3
| father = [[Bill Gates Sr.]]
| mother = [[Mary Maxwell Gates|Mary Maxwell]]
| website = {{URL|https://www.gatesnotes.com}}
| awards = {{ubl|[[Presidential Medal of Freedom]] (2016)|[[Hilal-e-Pakistan]] (2022)}}
| signature = Bill Gates signature.svg
| signature_alt = William H. Gates III
}}
<syntaxhighlight lang="wikitext" style="overflow: auto">
{{Infobox person
| name = Bill Gates
| image = Bill Gates 2017 (cropped).jpg
| alt = Head and shoulders photo of Bill Gates
| caption = Gates in 2017
| birth_name = William Henry Gates III
| birth_date = {{birth date and age|1955|10|28}}
| birth_place = [[Seattle, Washington]], U.S.
| known_for = Co-founder of [[Microsoft]] and [[Bill & Melinda Gates Foundation]]
| education = [[Harvard University]] (dropped out)
| occupation = {{hlist|Software developer|investor|entrepreneur}}
| years_active = 1972–present
| title = {{indented plainlist|
* Co-[[chairperson]] of the Bill & Melinda Gates Foundation
* Chairman and founder of [[Branded Entertainment Network]]
* Chairman and founder of [[Cascade Investment]]
* Chairman and co-founder of [[TerraPower]]
* Founder of [[Breakthrough Energy]]
* Technology advisor of Microsoft}}
| boards = {{plainlist|
* [[Berkshire Hathaway]]
* Microsoft (former, both)}}
| spouse = {{marriage|[[Melinda French]]|January 1, 1994|August 2, 2021|reason=divorce}}
| children = 3
| father = [[Bill Gates Sr.]]
| mother = [[Mary Maxwell Gates|Mary Maxwell]]
| website = {{URL|https://www.gatesnotes.com}}
| awards = {{ubl|[[Presidential Medal of Freedom]] (2016)|[[Hilal-e-Pakistan]] (2022)}}
| signature = Bill Gates signature.svg
| signature_alt = William H. Gates III
}}
</syntaxhighlight>
== Microformat ==
{{UF-hcard-person}}
{{clear}}
== TemplateData ==
{{TemplateData header}}
<div style="width:auto; overflow:scroll">
<templatedata>
{
"description": "An infobox for articles about people",
"format": "{{_\n| __________________ = _\n}}\n",
"params": {
"honorific_prefix": {
"description": "Honorific prefix(es), to appear on the line above the person's name",
"label": "Honorific prefix"
},
"name": {
"description": "Common name of person (defaults to article name if left blank; provide birth_name (below) if different from name). If middle initials are specified (or implied) by the lead of the article, and are not specified separately in the birth_name field, include them here.",
"label": "Name",
"type": "string",
"suggested": true
},
"honorific_suffix": {
"description": "Honorific suffix(es), to appear on the line below the person's name",
"label": "Honorific suffix"
},
"native_name": {
"description": "The person's name in their own language, if different.",
"label": "Native name",
"type": "string"
},
"native_name_lang": {
"description": "ISO 639-1 code, e.g., \"fr\" for French. If more than one, use Template:lang in 'native_name' instead.",
"label": "Native name language"
},
"image": {
"description": "Image name: abc.jpg, xpz.png, 123.gif, etc. If an image is desired but not available, one may add \"yes\" to the \"needs-photo\" section of the :Template:WPBiography on the talkpage. If no image is available yet, do not use an image placeholder.",
"label": "Image",
"example": "abc.jpg, xpz.png, 123.gif",
"type": "wiki-file-name",
"suggested": true
},
"image_size": {
"description": "DEPRECATED/DISCOURAGED. Size to display image: 200px (set width), x300px (set height), or 200x300px (max width & max height). This defaults to frameless (default is 220px, but logged in users can change this by clicking on \"my preferences\" and adjusting thumbnail size) if empty or omitted. Use of this parameter is discouraged as per WP:IMGSIZE. Use image_upright instead.",
"label": "DEPRECATED: Image size",
"example": "200px",
"default": "220px",
"deprecated": "DEPRECATED: Use of this parameter is discouraged as per WP:IMGSIZE. Delete it when encountered and use image_upright instead."
},
"alt": {
"description": "Alt text for image, for visually impaired readers. One word (such as \"photograph\") is rarely sufficient. See WP:ALT.",
"label": "Alt",
"type": "string",
"aliases": [
"image_alt"
]
},
"caption": {
"description": "Caption for image, if needed. Try to include date of photo when relevant.",
"label": "Caption",
"aliases": [
"image_caption"
],
"type": "string"
},
"pronunciation": {
"description": "Details of how to pronounce the individual's native name.",
"label": "Native name pronunciation"
},
"birth_name": {
"description": "Name at birth; use only if different from name.",
"label": "Birth name",
"type": "string"
},
"birth_date": {
"description": "Use {{Birth date and age|YYYY|MM|DD}} for living people when the full date of birth is known. For deceased people, use {{Birth date|YYYY|MM|DD}}, as their current age should not be displayed. If only the year of birth is known, use {{Birth year and age|YYYY}} where appropriate. If the birth year is calculated from an age given at a specific date, consider using {{Birth based on age as of date}}.",
"label": "Birth date",
"type": "content"
},
"birth_place": {
"description": "Place of birth: city, administrative region, sovereign state. Use the name of the birthplace at the time of birth, e.g.: Saigon (prior to 1976), Ho Chi Minh City (post 1976). Do not use a flag template.",
"label": "Birth place",
"type": "string"
},
"baptised": {
"description": "Date of baptism: ONLY for use when birth date is not known (e.g., Beethoven). Will not display if a birth date is entered. Do not use subtemplates. Parameter 'baptized' can be used for articles that use American english spelling.",
"label": "Baptised",
"aliases": [
"baptized"
],
"type": "date"
},
"disappeared_date": {
"description": "(For missing people) Date of disappearance: Template:disappeared date and age (if birth date is known) or Template:disappeared date (if birth date unknown).",
"label": "Disappeared date"
},
"disappeared_place": {
"description": "(For missing people) Place of disappearance: city, administrative region, sovereign state. Do not use a flag template.",
"label": "Disappeared place"
},
"disappeared_status": {
"description": "(For missing people) Current status for the person, e.g., if the person is still regarded as missing (using Template:missing for to calculate the time since disappearance), or if the person has been declared dead in absentia, with a date for such a ruling.",
"label": "Disappeared status"
},
"death_date": {
"description": "Use {{Death date and age|death year|death month|death day|birth year|birth month|birth day}} when both the full date of death and full date of birth are known. If the date of birth is unknown, use {{Death date|YYYY|MM|DD}} instead, as the age at death cannot be calculated. If only the year of death is known, or if the exact dates are uncertain, consider using {{Death year and age}}",
"label": "Death date"
},
"death_place": {
"description": "Place of death: city, administrative region, sovereign state. Note: Do not use a flag template. Use the name of the deathplace at the time of death, e.g.: Saigon (prior to 1976), Ho Chi Minh City (post 1976)",
"label": "Death place",
"type": "string"
},
"death_cause": {
"description": "Cause of death. This should only be included when the cause of death has significance for the subject's notability.",
"label": "Death cause"
},
"body_discovered": {
"description": "Place where the body was discovered (if different from place of death). Do not use a flag template.",
"label": "Body discovered"
},
"resting_place": {
"description": "Place of burial, ash-scattering, etc. Do not use a flag template.",
"label": "Resting place"
},
"resting_place_coordinates": {
"description": "Coordinates for place of burial, ash-scattering etc. Use Template:coord template.",
"label": "Resting place coordinates"
},
"monuments": {
"description": "Significant monuments erected, buildings named, etc., in honour of the subject. If many, link to an appropriate section of the article instead.",
"label": "Monuments"
},
"other_names": {
"description": "Other notable names for the person, if different from name and birth_name.",
"label": "Other names"
},
"siglum": {
"description": "Siglum, monogram, shortcut, if relevant.",
"label": "Siglum"
},
"citizenship": {
"description": "Country of legal citizenship. Rarely needed. Should only be used if citizenship cannot be inferred from the birthplace. Do not use a flag template.",
"label": "Citizenship",
"type": "string"
},
"education": {
"description": "Include subject's educational credentials, typically university degrees. List the full article title of each degree-granting parent institution, followed by degree(s) earned in parentheses, e.g. an alumnus of [[Harvard College]], [[Harvard Law School]], and the [[Kellogg School of Management]] would be listed as: [[Harvard University]] (BA, JD) [[Northwestern University]] (MBA). If insufficient information is available to determine specific credentials attained, the 'alma_mater' parameter may be more appropriate.",
"label": "Education"
},
"alma_mater": {
"description": "Alma mater. This parameter is a more concise alternative to 'education', and will most often simply consist of the linked name of the last-attended higher education institution. It is usually not relevant to include either parameter for non-graduates, but article talk page consensus may conclude otherwise, as at Bill Gates.",
"label": "Alma mater"
},
"occupation": {
"description": "Occupation(s) as given in the lead.",
"label": "Occupation"
},
"years_active": {
"description": "Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format 1950–2000, or 1970–present if still active (note the use of an en dash, not hyphen). If no dates of birth and/or death are known for the subject, only a floruit date range, as is common with ancient subjects, this parameter can be used for it. If approximate (circa) dates are known for either or both, put them in the birth_date and death_date parameters.",
"label": "Years active"
},
"era": {
"description": "Era during which the subject lived or was active. Less specific than 'years active'.",
"label": "Era"
},
"employer": {
"description": "Employer(s), if relevant.",
"label": "Employer"
},
"organization": {
"description": "Non-employing organization(s), if relevant.",
"label": "Organization",
"aliases": [
"organizations",
"organisation",
"organisations"
]
},
"agent": {
"description": "The subject's agent (individual and/or agency), discouraged in most cases, specifically when promotional, and requiring a reliable source.",
"label": "Agent"
},
"known_for": {
"description": "A brief description of what the person is notable for.",
"label": "Known For",
"example": "Environmental activism"
},
"notable_works": {
"description": "Title(s) of notable work(s) (publications, compositions, sculptures, films, etc.) by the subject, if any.",
"label": "Notable works",
"aliases": [
"works",
"credits",
"label_name"
]
},
"style": {
"description": "The style in which the subject works, if applicable.",
"label": "Style"
},
"television": {
"description": "Television programmes presented by or closely associated with the subject.",
"label": "Television"
},
"height": {
"description": "If person was notable for their height, or if height is relevant. If used, this should also include the year of the measurement if the person had not reached full adulthood when this stat was published. See documentation of this parameter at Template:Infobox sportsperson for more information.",
"label": "Height"
},
"height_m": {
"description": "If person was notable for their height, or if height is relevant, their height in metres (it will be automatically converted to Imperial).",
"label": "Height in metres",
"type": "number"
},
"height_cm": {
"description": "If person was notable for their height, or if height is relevant, their height in centimetres (it will be automatically converted to Imperial).",
"label": "Height in centimetres",
"type": "number"
},
"height_ft": {
"description": "If person was notable for their height, or if height is relevant, their height in whole feet (it will be automatically converted to SI). Use with height_in.",
"label": "Height in feet",
"type": "number"
},
"height_in": {
"description": "If person was notable for their height, or if height is relevant, their height in remaining inches (it will be automatically converted to SI). Use with height_ft.",
"label": "Remaining height in inches",
"type": "number"
},
"title": {
"description": "Multiple uses: Formal title, such as First Lady of Japan for Akie Abe.; Awarded title, such as Mr. Olympia for Arnold Schwarzenegger.; Job title, such as President of Calvin College for Anthony Diekema.; A combination of the above, such as Professor of Mathematics and Fellow of the Royal Society for Bill Parry See also \"awards\" parameter, below, for awarded honors that are not really titles. A single award should not use both parameters.",
"label": "Title",
"aliases": [
"office"
]
},
"term": {
"description": "Years the person held the title listed above.",
"label": "Term"
},
"predecessor": {
"description": "Person who previously held the title listed above.",
"label": "Predecessor"
},
"successor": {
"description": "Person who subsequently held the title listed above.",
"label": "Successor"
},
"movement": {
"description": "If relevant. '''Movement''' can be social, political (non-party), artistic, philosophical, literary, cultural, etc.",
"label": "Movement"
},
"opponents": {
"description": "Notable relevant opponents (e.g., for major political office).",
"label": "Opponents"
},
"boards": {
"description": "For board of directors membership(s), if relevant. Field labeled Board member of.",
"label": "Boards"
},
"criminal_charges": {
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources in the article body.",
"label": "Criminal charge(s)",
"aliases": [
"criminal_charge"
]
},
"criminal_penalty": {
"label": "Criminal penalty",
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body."
},
"criminal_status": {
"label": "Criminal status",
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.",
"aliases": [
"judicial_status"
]
},
"spouse": {
"description": "Name of spouse(s), followed by years of marriage. Use the format Name (married 1950–present) for a current spouse, and Name (married 1970–1999) for former spouse(s). Separate entries using Template:Plainlist or Template:Unbulleted list. For deceased persons still married at time of death, do not include an end year. {{Marriage}} may be used.",
"label": "Spouse(s)",
"aliases": [
"spouses"
]
},
"partner": {
"description": "For unmarried life partners in a domestic partnership (of any gender or sexual orientation), not business partners. Use the format Name (1950–present) for current partner and Name (1970–1999) for former partner(s).",
"label": "Partner(s)",
"aliases": [
"partners"
]
},
"children": {
"description": "Number of children, or list of independently notable names, in which case, separate entries using Template:Plainlist or Template:Unbulleted list. Names may be preceded by a number to show total children and avoid implying that named children are the only offspring. For privacy reasons, consider omitting the names of children of living persons, unless notable.",
"label": "Children",
"example": "3"
},
"parents": {
"description": "Names of parents. Separate entries using Template:Plainlist or Template:Unbulleted list. If subject has only one notable mother and/or father, 'mother' and 'father' parameters may be used instead",
"label": "Parent(s)"
},
"mother": {
"description": "Name of mother; include only if subject has one mother who is independently notable or particularly relevant. Overwritten by 'parents' parameter.",
"label": "Mother",
"type": "string"
},
"father": {
"description": "Name of father; include only if subject has one father who is independently notable or particularly relevant. Overwritten by 'parents' parameter.",
"label": "Father",
"type": "string"
},
"relatives": {
"description": "Names of siblings or other relatives. Include the relationship in parentheses after the name (sister, uncle, etc). Separate entries using Template:Plainlist or Template:Unbulleted list.",
"label": "Relatives"
},
"family": {
"description": "Family or house of the individual, if notable.",
"label": "Family"
},
"callsign": {
"description": "Amateur radio call sign, if relevant.",
"label": "Callsign"
},
"awards": {
"description": "Notable awards. If many, link to an appropriate section of the article instead. See also \"title\" parameter, above, for awarded titles. A single award should not use both parameters.",
"label": "Awards"
},
"honours": {
"description": "Honours the individual has been awarded, if notable.",
"label": "Honours",
"aliases": [
"honors"
]
},
"website": {
"description": "Official website only. Unofficial websites should be placed under ==External links== in the body of the article. Use {{URL}}. Do not include the www. part unless the server requires it. Use camel case capitalization to make multiword domain names easier to read.",
"label": "Website",
"type": "content",
"example": "{{URL|example.com}}",
"suggested": true
},
"module": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module"
},
"module2": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module two"
},
"module3": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module three"
},
"module4": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module four"
},
"module5": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module five"
},
"module6": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module six"
},
"child": {
"label": "DEPRECATED: Use as an embedded infobox",
"description": "DEPRECATED: Use this infobox within another one. For experts only.",
"example": "yes",
"deprecated": true,
"aliases": [
"embed"
]
},
"signature": {
"description": "An image of the person's signature. Please use image name: abc.jpg, xpz.png, 123.gif, etc.",
"label": "Signature",
"type": "wiki-file-name"
},
"signature_type": {
"description": "Alter from Signature to, for example, Seal",
"label": "Signature type",
"type": "string"
},
"signature_size": {
"description": "Default is 150px. If necessary, a signature can be resized manually as per the \"image_size\" parameter.",
"label": "Signature size"
},
"signature_alt": {
"description": "Alt text for the signature image. For example, for :File:Thomas Jefferson Signature.svg, the alt text might be |signature_alt= Th: Jefferson, spelling out the signature exactly as it appears in the image.",
"label": "Signature alt",
"type": "string"
},
"footnotes": {
"description": "Notes about any of the infobox data.",
"label": "Footnotes"
},
"abovestyle": {
"description": "DEPRECATED: A CSS style to use for the individual's name, over-riding the community norm. Use only in exception circumstances.",
"label": "DEPRECATED: Name CSS over-ride",
"deprecated": true
},
"image_upright": {
"label": "Image upright",
"description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).",
"example": "1.15",
"default": "1",
"type": "number"
},
"landscape": {
"label": "Landscape",
"description": "Set to yes when using wide, short images. The image height (rather than width) will be limited to 200 pixels.",
"type": "boolean"
},
"burial_place": {
"label": "Burial place",
"description": "Place of burial, alternative to 'Resting place' Displays the label 'Burial place'.",
"type": "content"
},
"burial_coordinates": {
"label": "Burial place coordinates",
"description": "Coordinates for place of burial, to accompany 'Burial place'. Use {{coord}} template."
},
"nocat_wdimage": {
"label": "nocat_wdimage",
"description": "Where an infobox has no image but Wikidata has an image name, add an image or |nocat_wdimage=yes to the infobox.",
"type": "string"
},
"template_name": {
"label": "Template name",
"description": "Used when {{Infobox person}} is wrapped by another template. This would be the (lower-case) name of the wrapping template, without the \"Template:\" prefix."
},
"political_party": {
"label": "Party",
"description": "If relevant. Field labelled Political party."
},
"other_party": {
"label": "Other party",
"description": "If relevant. Field labelled Other political affiliations."
}
},
"paramOrder": [
"honorific_prefix",
"name",
"honorific_suffix",
"native_name",
"native_name_lang",
"image",
"image_upright",
"landscape",
"alt",
"caption",
"pronunciation",
"other_names",
"siglum",
"birth_name",
"birth_date",
"birth_place",
"baptised",
"disappeared_date",
"disappeared_place",
"disappeared_status",
"death_date",
"death_place",
"death_cause",
"body_discovered",
"resting_place",
"resting_place_coordinates",
"burial_place",
"burial_coordinates",
"monuments",
"citizenship",
"education",
"alma_mater",
"occupation",
"years_active",
"era",
"employer",
"organization",
"agent",
"known_for",
"notable_works",
"style",
"television",
"height",
"height_m",
"height_cm",
"height_ft",
"height_in",
"title",
"term",
"predecessor",
"successor",
"political_party",
"other_party",
"movement",
"opponents",
"boards",
"criminal_charges",
"criminal_penalty",
"criminal_status",
"spouse",
"partner",
"children",
"parents",
"mother",
"father",
"relatives",
"family",
"callsign",
"awards",
"honours",
"website",
"template_name",
"module",
"module2",
"module3",
"module4",
"module5",
"module6",
"signature",
"signature_type",
"signature_size",
"signature_alt",
"footnotes",
"nocat_wdimage",
"child",
"abovestyle",
"image_size"
]
}
</templatedata>
</div>
== Tracking categories ==
{{Infobox tracking categories}}
* {{clc|Pages using infobox person with multiple employers}}
* {{clc|Pages using infobox person with multiple organizations}}
* {{clc|Pages using infobox person with multiple agents}}
* {{clc|Pages using infobox person with multiple credits}}
* {{clc|Pages using infobox person with multiple labels}}
* {{clc|Pages using infobox person with multiple opponents}}
* {{clc|Pages using infobox person with multiple criminal charges}}
* {{clc|Pages using infobox person with multiple spouses}}
* {{clc|Pages using infobox person with multiple partners}}
* {{clc|Pages using infobox person with multiple parents}}
* {{clc|Biography template using pronunciation}}
* {{clc|Biography with signature}}
* {{clc|No local image but image on Wikidata}} – Used by [[Template:Wikidata image]] to track articles where an infobox has no image but [[Wikidata]] has an image name. To exclude articles from this category, add an image or {{para|nocat_wdimage|yes}} to the infobox.
== See also ==
* {{clc|Category:Templates calling Infobox person}}
Variations of this template which use [[Wikidata]]:
* {{tl|Infobox person/Wikidata}}
Dependencies:
* {{tl|Br separated entries}}
* {{tl|Pluralize from text}}
* {{tl|Main other}}
* {{tl|Convinfobox}}
* {{tl|Infobox person/height}}
* {{tl|Count}}
* {{tl|Unbulleted list}}
* {{tl|If empty}}
Alternative templates are listed at [[Wikipedia:WikiProject Biography/Infoboxes|WikiProject Biography/Infoboxes]] and within the [[:Category:People and person infobox templates|people and person infobox templates category]].
<div style="display: none">{{reflist}}</div>
{{Film- and television-related infobox templates}}
<includeonly>
{{Basepage subpage|
[[Category:Infobox templates|Person]]
[[Category:People and person infobox templates| ]]
[[Category:Biographical templates usable as a module|Person]]
[[Category:Infobox templates with module parameter|Person]]
[[Category:Templates that add a tracking category]]
}}
</includeonly>
4k2saqq6gix9wupa7tupwao42x2qvl0
Template:Marriage/styles.css
10
8632
73920
2025-07-04T20:30:48Z
Paine Ellsworth
11670
per edit request on talk page - remove unwanted property
73920
sanitized-css
text/css
/* {{pp-template}} */
.marriage-line-margin2px {
line-height: 0;
margin-bottom: -2px;
}
.marriage-line-margin3px {
line-height: 0;
margin-bottom: -3px;
}
.marriage-display-inline {
display: inline;
}
svkk90r9qcgelhufx0yirkmdwf7ntrk
73921
73920
2026-07-11T18:59:09Z
Robertsky
10424
1 versaun husi [[:en:Template:Marriage/styles.css]]
73920
sanitized-css
text/css
/* {{pp-template}} */
.marriage-line-margin2px {
line-height: 0;
margin-bottom: -2px;
}
.marriage-line-margin3px {
line-height: 0;
margin-bottom: -3px;
}
.marriage-display-inline {
display: inline;
}
svkk90r9qcgelhufx0yirkmdwf7ntrk
Módulo:Person date
828
8633
73922
2025-12-06T07:51:53Z
Zackmann08
11656
no longer needed or supported
73922
Scribunto
text/plain
require("strict")
local p = {}
local TEMPLATES = {
birth_date = "Birth date",
birth_date_and_age = "Birth date and age",
birth_year = "Birth year",
birth_year_and_age = "Birth year and age",
death_date = "Death date",
death_date_text = "Death date text",
death_date_and_age = "Death date and age",
death_year = "Death year",
death_year_and_age = "Death year and age",
}
local invalid_date_category = ''
local tracking_category = ''
local Date = require('Module:Date')._Date
local getArgs = require('Module:Arguments').getArgs
if mw.title.getCurrentTitle():inNamespaces(0, 828, 829) then
-- Category only in namespaces: 0=article, 828=module & 829=module talk (last 2 needed for testcases)
tracking_category = '[[Category:Pages where birth or death is being automatically determined]]'
invalid_date_category = '[[Category:Pages with invalid birth or death dates]]'
end
local function check_for_invalid_date(str)
return mw.ustring.match(str, '^%?') or mw.ustring.match(str, '^%d%d%?') or mw.ustring.match(str, '^[Uu]nk')
end
local function expand_template(template, args)
return mw.getCurrentFrame():expandTemplate{title = template, args = args}
end
local function parse_date(str)
local date = Date(str)
if date then
return tostring(date.year), tostring(date.month), tostring(date.day)
end
-- TODO: Date has not been parsed. Need to work out what to do. For now, throw an error.
-- Example where this can occur: "birth_date = 22 December 1946" at [[Maurice Pasternak]].
-- There was a nonbreaking space after "22" whidh Date does not accept.
error('Module:Person_date parse_date invalid date: "' .. tostring(str) .. '"')
end
local function date_format(str)
if mw.ustring.match (str, '^%d+%s*%a+[%.]*%s*%d%d%d%d$') then
return 'df'
elseif mw.ustring.match(str, '^%a+[%.]*%s+%d+,%s*%d%d%d%d$') then
return 'mf'
else
return 'ERROR'
end
end
local function is_valid_month (str)
str = string.upper(mw.ustring.sub(str,1,1))..string.lower(mw.ustring.sub(str,2))
local months = {'Jan','Jan.','January','Feb','Feb.','February','Mar','March','Apr','Apr.','April','May','Jun','Jun.','June','Jul','Jul.','July','Aug','Aug.','August','Sep','Sept','Sep.','Sept.','September','Oct','Oct.','October','Nov','Nov','November','Dec','Dec.','December'}
for index, value in ipairs(months) do
if value == str then
return true
end
end
return false
end
local function is_month_year_only(str)
local month = mw.ustring.match(str, '^(%a+)[%.]*%s+%d%d%d%d$')
if month == nil then
return false
else
return is_valid_month(month)
end
end
local function is_valid_date(str)
local month = mw.ustring.match (str, '^%d+%s*(%a+)[%.]*%s*%d%d%d%d$') or mw.ustring.match(str, '^(%a+)[%.]*%s+%d+,%s*%d%d%d%d$')
if month == nil then
return false
else
return is_valid_month(month)
end
end
local function is_year_only(str)
return mw.ustring.match(str, '^%d%d%d%d$')
end
local function already_has_template(str)
str = mw.ustring.gsub(str, '&[Nn][Bb][Ss][Pp];', ' ')
return mw.ustring.match(str, '<span') or mw.ustring.match(str, '<time') or mw.ustring.match(str,'%(aged%s*%d+') or mw.ustring.match(str,'%(age%s*%d+')
end
local function sanatize_date(str)
-- Sanatize leading & trailing whitespace (this caused an issue before it was implemented)
str = mw.ustring.gsub(str,'^%s*','')
str = mw.ustring.gsub(str,'%s*$','')
-- Sanatize ordinals
str = mw.ustring.gsub(str, '(%d+)st([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)rd([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)th([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)nd([,%s])', '%1%2')
return str
end
local function parse_birth(args)
local birth_date = args['birth_date'] or ''
local death_date = args['death_date'] or ''
local disap_date = args['disappeared_date'] or ''
local original = birth_date
birth_date = sanatize_date(birth_date)
death_date = sanatize_date(death_date)
disap_date = sanatize_date(disap_date)
-- Check for bad inputs. This used to be covered by a switch statement in infoboxes
if check_for_invalid_date(birth_date) then
return original..invalid_date_category
end
if already_has_template(birth_date) then
return original
end
if is_valid_date(birth_date) then
local location = mw.ustring.find(birth_date, '%d%d%d%d')
local extra = mw.ustring.sub(birth_date, location+4) .. tracking_category
local date = mw.ustring.sub(birth_date, 1,location+3)
local year, month, day = parse_date(date)
local format = date_format(date)
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_date_and_age, {year, month, day, [format] = 'yes'}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) or is_month_year_only(death_date) then
return expand_template(TEMPLATES.birth_date, {year, month, day, [format] = 'yes'}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
if is_month_year_only(birth_date) then
local year = Date('1 '..birth_date):text('%Y')
local month = Date('1 '..birth_date):text('%-m')
local location = mw.ustring.find(birth_date, '%d%d%d%d')
local date = mw.ustring.sub(birth_date, 1,location+3)
local extra = mw.ustring.sub(birth_date, location+4) .. tracking_category
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_year_and_age, {year, month}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) or is_month_year_only(death_date) then
return expand_template(TEMPLATES.birth_year, {date}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
if is_year_only(birth_date) then
local date = mw.ustring.sub(birth_date, 1, 5)
local extra = mw.ustring.sub(birth_date, 5) .. tracking_category
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_year_and_age, {date}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) then
return expand_template(TEMPLATES.birth_year, {date}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
return original
end
local function parse_death(args)
local birth_date = args['birth_date'] or ''
local death_date = args['death_date'] or ''
local original = death_date
birth_date = sanatize_date(birth_date)
death_date = sanatize_date(death_date)
-- Check for bad inputs. This used to be covered by a switch statement in infoboxes
if check_for_invalid_date(death_date) then
return original..invalid_date_category
end
if already_has_template(death_date) then
return original
end
if is_valid_date(death_date) or is_month_year_only(death_date) then
local location = mw.ustring.find(death_date, '%d%d%d%d')
local date = mw.ustring.sub(death_date, 1,location+3)
local extra = mw.ustring.sub(death_date, location+4) .. tracking_category
local format = date_format(date)
if birth_date == '' then
if is_month_year_only(death_date) then
return expand_template(TEMPLATES.death_date_text, {date}) .. extra
end
local year, month, day = parse_date(date)
return expand_template(TEMPLATES.death_date, {year, month, day, [format] = 'yes'}) .. extra
else
if is_year_only(birth_date) then
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
if is_month_year_only(death_date) then
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
return expand_template(TEMPLATES.death_date_and_age, {date, bd, [format] = 'yes'}) .. extra
elseif is_valid_date(birth_date) or is_month_year_only(birth_date) then
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
if (is_month_year_only(death_date)) then
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
return expand_template(TEMPLATES.death_date_and_age, {date, bd, [format] = 'yes'}) .. extra
end
end
end
if is_year_only(death_date) then
if birth_date == '' then
return expand_template(TEMPLATES.death_year, {mw.ustring.sub(death_date, 1, 5)}) .. mw.ustring.sub(death_date, 5) .. tracking_category
else
if is_year_only(birth_date) then
return expand_template(TEMPLATES.death_year_and_age, {mw.ustring.sub(death_date, 1, 5), mw.ustring.sub(birth_date, 1, 5)}) .. mw.ustring.sub(death_date, 5) .. tracking_category
else
if is_valid_date(birth_date) then
local location = mw.ustring.find(death_date, '%d%d%d%d')
local date = mw.ustring.sub(death_date, 1,location+3)
local extra = mw.ustring.sub(death_date, location+4) .. tracking_category
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
end
end
end
return original
end
function p.birth(frame)
return parse_birth(getArgs(frame, {parentFirst = true}))
end
function p.death(frame)
return parse_death(getArgs(frame, {parentFirst = true}))
end
return p
qm4tcdz8g5vkfc018ay0tu8zlfditks
73923
73922
2026-07-11T18:59:09Z
Robertsky
10424
1 versaun husi [[:en:Module:Person_date]]
73922
Scribunto
text/plain
require("strict")
local p = {}
local TEMPLATES = {
birth_date = "Birth date",
birth_date_and_age = "Birth date and age",
birth_year = "Birth year",
birth_year_and_age = "Birth year and age",
death_date = "Death date",
death_date_text = "Death date text",
death_date_and_age = "Death date and age",
death_year = "Death year",
death_year_and_age = "Death year and age",
}
local invalid_date_category = ''
local tracking_category = ''
local Date = require('Module:Date')._Date
local getArgs = require('Module:Arguments').getArgs
if mw.title.getCurrentTitle():inNamespaces(0, 828, 829) then
-- Category only in namespaces: 0=article, 828=module & 829=module talk (last 2 needed for testcases)
tracking_category = '[[Category:Pages where birth or death is being automatically determined]]'
invalid_date_category = '[[Category:Pages with invalid birth or death dates]]'
end
local function check_for_invalid_date(str)
return mw.ustring.match(str, '^%?') or mw.ustring.match(str, '^%d%d%?') or mw.ustring.match(str, '^[Uu]nk')
end
local function expand_template(template, args)
return mw.getCurrentFrame():expandTemplate{title = template, args = args}
end
local function parse_date(str)
local date = Date(str)
if date then
return tostring(date.year), tostring(date.month), tostring(date.day)
end
-- TODO: Date has not been parsed. Need to work out what to do. For now, throw an error.
-- Example where this can occur: "birth_date = 22 December 1946" at [[Maurice Pasternak]].
-- There was a nonbreaking space after "22" whidh Date does not accept.
error('Module:Person_date parse_date invalid date: "' .. tostring(str) .. '"')
end
local function date_format(str)
if mw.ustring.match (str, '^%d+%s*%a+[%.]*%s*%d%d%d%d$') then
return 'df'
elseif mw.ustring.match(str, '^%a+[%.]*%s+%d+,%s*%d%d%d%d$') then
return 'mf'
else
return 'ERROR'
end
end
local function is_valid_month (str)
str = string.upper(mw.ustring.sub(str,1,1))..string.lower(mw.ustring.sub(str,2))
local months = {'Jan','Jan.','January','Feb','Feb.','February','Mar','March','Apr','Apr.','April','May','Jun','Jun.','June','Jul','Jul.','July','Aug','Aug.','August','Sep','Sept','Sep.','Sept.','September','Oct','Oct.','October','Nov','Nov','November','Dec','Dec.','December'}
for index, value in ipairs(months) do
if value == str then
return true
end
end
return false
end
local function is_month_year_only(str)
local month = mw.ustring.match(str, '^(%a+)[%.]*%s+%d%d%d%d$')
if month == nil then
return false
else
return is_valid_month(month)
end
end
local function is_valid_date(str)
local month = mw.ustring.match (str, '^%d+%s*(%a+)[%.]*%s*%d%d%d%d$') or mw.ustring.match(str, '^(%a+)[%.]*%s+%d+,%s*%d%d%d%d$')
if month == nil then
return false
else
return is_valid_month(month)
end
end
local function is_year_only(str)
return mw.ustring.match(str, '^%d%d%d%d$')
end
local function already_has_template(str)
str = mw.ustring.gsub(str, '&[Nn][Bb][Ss][Pp];', ' ')
return mw.ustring.match(str, '<span') or mw.ustring.match(str, '<time') or mw.ustring.match(str,'%(aged%s*%d+') or mw.ustring.match(str,'%(age%s*%d+')
end
local function sanatize_date(str)
-- Sanatize leading & trailing whitespace (this caused an issue before it was implemented)
str = mw.ustring.gsub(str,'^%s*','')
str = mw.ustring.gsub(str,'%s*$','')
-- Sanatize ordinals
str = mw.ustring.gsub(str, '(%d+)st([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)rd([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)th([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)nd([,%s])', '%1%2')
return str
end
local function parse_birth(args)
local birth_date = args['birth_date'] or ''
local death_date = args['death_date'] or ''
local disap_date = args['disappeared_date'] or ''
local original = birth_date
birth_date = sanatize_date(birth_date)
death_date = sanatize_date(death_date)
disap_date = sanatize_date(disap_date)
-- Check for bad inputs. This used to be covered by a switch statement in infoboxes
if check_for_invalid_date(birth_date) then
return original..invalid_date_category
end
if already_has_template(birth_date) then
return original
end
if is_valid_date(birth_date) then
local location = mw.ustring.find(birth_date, '%d%d%d%d')
local extra = mw.ustring.sub(birth_date, location+4) .. tracking_category
local date = mw.ustring.sub(birth_date, 1,location+3)
local year, month, day = parse_date(date)
local format = date_format(date)
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_date_and_age, {year, month, day, [format] = 'yes'}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) or is_month_year_only(death_date) then
return expand_template(TEMPLATES.birth_date, {year, month, day, [format] = 'yes'}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
if is_month_year_only(birth_date) then
local year = Date('1 '..birth_date):text('%Y')
local month = Date('1 '..birth_date):text('%-m')
local location = mw.ustring.find(birth_date, '%d%d%d%d')
local date = mw.ustring.sub(birth_date, 1,location+3)
local extra = mw.ustring.sub(birth_date, location+4) .. tracking_category
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_year_and_age, {year, month}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) or is_month_year_only(death_date) then
return expand_template(TEMPLATES.birth_year, {date}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
if is_year_only(birth_date) then
local date = mw.ustring.sub(birth_date, 1, 5)
local extra = mw.ustring.sub(birth_date, 5) .. tracking_category
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_year_and_age, {date}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) then
return expand_template(TEMPLATES.birth_year, {date}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
return original
end
local function parse_death(args)
local birth_date = args['birth_date'] or ''
local death_date = args['death_date'] or ''
local original = death_date
birth_date = sanatize_date(birth_date)
death_date = sanatize_date(death_date)
-- Check for bad inputs. This used to be covered by a switch statement in infoboxes
if check_for_invalid_date(death_date) then
return original..invalid_date_category
end
if already_has_template(death_date) then
return original
end
if is_valid_date(death_date) or is_month_year_only(death_date) then
local location = mw.ustring.find(death_date, '%d%d%d%d')
local date = mw.ustring.sub(death_date, 1,location+3)
local extra = mw.ustring.sub(death_date, location+4) .. tracking_category
local format = date_format(date)
if birth_date == '' then
if is_month_year_only(death_date) then
return expand_template(TEMPLATES.death_date_text, {date}) .. extra
end
local year, month, day = parse_date(date)
return expand_template(TEMPLATES.death_date, {year, month, day, [format] = 'yes'}) .. extra
else
if is_year_only(birth_date) then
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
if is_month_year_only(death_date) then
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
return expand_template(TEMPLATES.death_date_and_age, {date, bd, [format] = 'yes'}) .. extra
elseif is_valid_date(birth_date) or is_month_year_only(birth_date) then
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
if (is_month_year_only(death_date)) then
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
return expand_template(TEMPLATES.death_date_and_age, {date, bd, [format] = 'yes'}) .. extra
end
end
end
if is_year_only(death_date) then
if birth_date == '' then
return expand_template(TEMPLATES.death_year, {mw.ustring.sub(death_date, 1, 5)}) .. mw.ustring.sub(death_date, 5) .. tracking_category
else
if is_year_only(birth_date) then
return expand_template(TEMPLATES.death_year_and_age, {mw.ustring.sub(death_date, 1, 5), mw.ustring.sub(birth_date, 1, 5)}) .. mw.ustring.sub(death_date, 5) .. tracking_category
else
if is_valid_date(birth_date) then
local location = mw.ustring.find(death_date, '%d%d%d%d')
local date = mw.ustring.sub(death_date, 1,location+3)
local extra = mw.ustring.sub(death_date, location+4) .. tracking_category
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
end
end
end
return original
end
function p.birth(frame)
return parse_birth(getArgs(frame, {parentFirst = true}))
end
function p.death(frame)
return parse_death(getArgs(frame, {parentFirst = true}))
end
return p
qm4tcdz8g5vkfc018ay0tu8zlfditks
Template:Infobox tracking categories
10
8634
73924
2026-07-02T06:32:35Z
Gonnym
11662
order alphabetically
73924
wikitext
text/x-wiki
<includeonly>{{#ifexist: Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with conflicting parameters|
* {{Category link with count|Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with conflicting parameters}}}}{{#ifexist: Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with deprecated parameters|
* {{Category link with count|Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with deprecated parameters}}}}{{#ifexist: Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with unknown parameters|
* {{Category link with count|Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with unknown parameters}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
bh542nwsz96fraf5o4w0gwcb8evjt92
73925
73924
2026-07-11T18:59:09Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_tracking_categories]]
73924
wikitext
text/x-wiki
<includeonly>{{#ifexist: Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with conflicting parameters|
* {{Category link with count|Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with conflicting parameters}}}}{{#ifexist: Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with deprecated parameters|
* {{Category link with count|Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with deprecated parameters}}}}{{#ifexist: Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with unknown parameters|
* {{Category link with count|Category:Pages using {{lcfirst:{{If empty|{{{1|}}}|{{BASEPAGENAME}}}}}} with unknown parameters}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
bh542nwsz96fraf5o4w0gwcb8evjt92
Template:Example text monospaced bad
10
8635
73926
2026-04-03T01:44:40Z
Primefac
11658
Primefac moved page [[Template:!mxt]] to [[Template:Example text monospaced bad]]: expand name for clarity
73926
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{safesubst:<noinclude/>#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example deprecated-content example-bad monospaced example-mono" style="font-family: monospace, monospace; color: var(--color-content-removed, #8B0000);" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude>
{{Documentation|Template:Xt/doc}}
<!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.-->
[[Category:Programming typing-aid templates]]
</noinclude>
nj7gqt8gxp1hwt549605z0qaqxpdkqo
73927
73926
2026-07-11T18:59:10Z
Robertsky
10424
1 versaun husi [[:en:Template:Example_text_monospaced_bad]]
73926
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{safesubst:<noinclude/>#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example deprecated-content example-bad monospaced example-mono" style="font-family: monospace, monospace; color: var(--color-content-removed, #8B0000);" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude>
{{Documentation|Template:Xt/doc}}
<!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.-->
[[Category:Programming typing-aid templates]]
</noinclude>
nj7gqt8gxp1hwt549605z0qaqxpdkqo
Template:Infobox football biography
10
8636
73928
2026-04-25T05:05:51Z
Zackmann08
11656
Implement a better call to [[Template:Pluralize from text]] that should eliminate a number of "likely" cases where "(s)" is displayed by taking into account the formatted output
73928
wikitext
text/x-wiki
{{#invoke:Infobox3cols|infoboxTemplate
| child = {{Yesno|{{if empty|{{{embed|}}}|no}}}}
| bodyclass = vcard
| bodystyle = line-height: 1.2em; max-width: 420px !important;
| title = {{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes|{{#if:{{{header-color|}}}|<hr style="color: #202122;background-color: {{if empty|{{{header-color|}}}|transparent}}; height: 3px;" />|}}<div style="text-align: center;">{{if empty|{{{embed-header|}}}|Association football career}}</div>|{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}} }}
| titleclass = fn
| titlestyle = line-height: 1.2em; {{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes||font-size: 125%}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|upright={{{upright|}}}|alt={{{alt|}}}|suppressplaceholder=yes}}
| caption = {{{caption|}}}
| captionstyle= padding:0.2em 0 0 0;
| headerstyle = color: #202122;background-color: {{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes|{{if empty|{{{header-color|}}}|transparent}}|#b0c4de}}; line-height: 1.5em
| labelstyle = white-space: nowrap; vertical-align: baseline; text-align: left
| datastyle = white-space: nowrap; vertical-align: baseline;
| datastylea = white-space: nowrap; vertical-align: baseline;
| datastyleb = white-space: nowrap; vertical-align: baseline; text-align: right
| datastylec = white-space: nowrap; vertical-align: baseline; text-align: right
| header1 = {{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes||{{#if:{{{full_name|}}}{{{fullname|}}}{{{birth_name|}}}{{{birth_date|}}}{{{birth_place|}}}{{{death_date|}}}{{{death_place|}}}{{{height|}}}{{{position|}}}|Personal information}} }}
| label2 = Full name
| data2 = {{if empty|{{{full_name|}}}|{{{fullname|}}}}}
|extracellstyles=2,3,4,5,6,7,8,9,11=white-space: normal;
| class2 = nickname
| label3 = Birth name
| data3 = {{{birth_name|}}}
| class3 = nickname
| label4 = Date of birth
| data4 = {{#invoke:person date|birth}}
| label5 = Place of birth
| data5 = {{{birth_place|}}}
| class5 = birthplace
| label6 = Date of death
| data6 = {{#invoke:person date|death}}
| label7 = Place of death
| class7 = deathplace
| data7 = {{{death_place|}}}
| label8 = Height
| data8 = {{#if:{{{height|}}} | {{#invoke:person height|main|{{{height|}}}|enforce=m|ri=cmin}} }}
| label9 = Position{{pluralize from text|{{#invoke:Footballer positions|main|{{{position|}}}}}|likely=(s)|plural=s}}
| class9 = role
| data9 = {{#if:{{{position|}}}|{{#invoke:Footballer positions|main|{{{position}}}}}}}
| header10 = {{#if:{{#switch:{{lc:{{{currentclub|}}}}}|n/a|[[n/a]]|na|none|no|unknown|-|–|—|―|free agent|[[free agent]]|unattached|?|retired=|{{{currentclub|}}}}}|Team information}}
| label11 = {{Longitem|Current team}}
| class11 = org
| data11 = {{#switch:{{lc:{{{currentclub|}}}}}|n/a|[[n/a]]|na|none|no|unknown|-|–|—|―|free agent|[[free agent]]|unattached|?|retired=|{{{currentclub|}}}}}
| label12 = Number
| data12 = {{#if:{{#switch:{{lc:{{{currentclub|}}}}}|n/a|[[n/a]]|na|none|no|unknown|-|–|—|―|free agent|[[free agent]]|unattached|?|retired=|{{{currentclub|}}}}}|{{#switch:{{lc:{{{clubnumber|}}}}}|n/a|na|none|no|tbd|tbc|tba|unknown|-|–|—|―|?=|{{{clubnumber|}}}}}}}
| header13 = {{#if:{{{youthclubs1|}}}|Youth career}}
| label14 = {{#if:{{{clubs1|}}}{{{nationalteam1|}}}{{{college1|}}}||{{#if:{{{youthclubs1|}}}|Years}} }}
| data14 = {{#if:{{{clubs1|}}}{{{nationalteam1|}}}{{{college1|}}}||{{#if:{{{youthclubs1|}}}|'''Team'''}} }}
| label15 = {{#if:{{{youthclubs1|}}}|<span style="font-weight:normal">{{{youthyears1|}}}</span>}}
| data15 = {{{youthclubs1|}}}
| label16 = {{#if:{{{youthclubs2|}}}|<span style="font-weight:normal">{{{youthyears2|}}}</span>}}
| data16 = {{{youthclubs2|}}}
| label17 = {{#if:{{{youthclubs3|}}}|<span style="font-weight:normal">{{{youthyears3|}}}</span>}}
| data17 = {{{youthclubs3|}}}
| label18 = {{#if:{{{youthclubs4|}}}|<span style="font-weight:normal">{{{youthyears4|}}}</span>}}
| data18 = {{{youthclubs4|}}}
| label19 = {{#if:{{{youthclubs5|}}}|<span style="font-weight:normal">{{{youthyears5|}}}</span>}}
| data19 = {{{youthclubs5|}}}
| label20 = {{#if:{{{youthclubs6|}}}|<span style="font-weight:normal">{{{youthyears6|}}}</span>}}
| data20 = {{{youthclubs6|}}}
| label21 = {{#if:{{{youthclubs7|}}}|<span style="font-weight:normal">{{{youthyears7|}}}</span>}}
| data21 = {{{youthclubs7|}}}
| label22 = {{#if:{{{youthclubs8|}}}|<span style="font-weight:normal">{{{youthyears8|}}}</span>}}
| data22 = {{{youthclubs8|}}}
| label23 = {{#if:{{{youthclubs9|}}}|<span style="font-weight:normal">{{{youthyears9|}}}</span>}}
| data23 = {{{youthclubs9|}}}
| label24 = {{#if:{{{youthclubs10|}}}|<span style="font-weight:normal">{{{youthyears10|}}}</span>}}
| data24 = {{{youthclubs10|}}}
| label25 = {{#if:{{{youthclubs11|}}}|<span style="font-weight:normal">{{{youthyears11|}}}</span>}}
| data25 = {{{youthclubs11|}}}
| label26 = {{#if:{{{youthclubs12|}}}|<span style="font-weight:normal">{{{youthyears12|}}}</span>}}
| data26 = {{{youthclubs12|}}}
| header27 = {{#if:{{{college1|}}}|College career}}
| label28 = {{#if:{{{college1|}}}|Years}}
| data28a = '''Team'''
| data28b = '''{{abbr|Apps|College appearances}}'''
| data28c = '''({{abbr|Gls|College goals}})'''
| label29 = {{#if:{{{college1|}}}|<span style="font-weight:normal">{{{collegeyears1|}}}</span>}}
| data29a = {{{college1|}}}
| data29b = {{{collegecaps1|}}}
| data29c = {{#if:{{{collegegoals1|}}}|({{{collegegoals1}}})}}
| label30 = {{#if:{{{college2|}}}|<span style="font-weight:normal">{{{collegeyears2|}}}</span>}}
| data30a = {{{college2|}}}
| data30b = {{{collegecaps2|}}}
| data30c = {{#if:{{{collegegoals2|}}}|({{{collegegoals2}}})}}
| label31 = {{#if:{{{college3|}}}|<span style="font-weight:normal">{{{collegeyears3|}}}</span>}}
| data31a = {{{college3|}}}
| data31b = {{{collegecaps3|}}}
| data31c = {{#if:{{{collegegoals3|}}}|({{{collegegoals3}}})}}
| label32 = {{#if:{{{college4|}}}|<span style="font-weight:normal">{{{collegeyears4|}}}</span>}}
| data32a = {{{college4|}}}
| data32b = {{{collegecaps4|}}}
| data32c = {{#if:{{{collegegoals4|}}}|({{{collegegoals4}}})}}
| header33 = {{#if:{{{clubs1|}}}|Senior career*}}
| label34 = {{#if:{{{clubs1|}}}|Years}}
| data34a = '''Team'''
| data34b = '''{{abbr|Apps|League appearances}}'''
| data34c = '''({{abbr|Gls|League goals}})'''
| label35 = {{#if:{{{clubs1|}}}|<span style="font-weight:normal">{{{years1|}}}</span>}}
| data35a = {{{clubs1|}}}
| data35b = {{{caps1|}}}
| data35c = {{#if:{{{goals1|}}}|({{{goals1}}})}}
| label36 = {{#if:{{{clubs2|}}}|<span style="font-weight:normal">{{{years2|}}}</span>}}
| data36a = {{{clubs2|}}}
| data36b = {{{caps2|}}}
| data36c = {{#if:{{{goals2|}}}|({{{goals2}}})}}
| label37 = {{#if:{{{clubs3|}}}|<span style="font-weight:normal">{{{years3|}}}</span>}}
| data37a = {{{clubs3|}}}
| data37b = {{{caps3|}}}
| data37c = {{#if:{{{goals3|}}}|({{{goals3}}})}}
| label38 = {{#if:{{{clubs4|}}}|<span style="font-weight:normal">{{{years4|}}}</span>}}
| data38a = {{{clubs4|}}}
| data38b = {{{caps4|}}}
| data38c = {{#if:{{{goals4|}}}|({{{goals4}}})}}
| label39 = {{#if:{{{clubs5|}}}|<span style="font-weight:normal">{{{years5|}}}</span>}}
| data39a = {{{clubs5|}}}
| data39b = {{{caps5|}}}
| data39c = {{#if:{{{goals5|}}}|({{{goals5}}})}}
| label40 = {{#if:{{{clubs6|}}}|<span style="font-weight:normal">{{{years6|}}}</span>}}
| data40a = {{{clubs6|}}}
| data40b = {{{caps6|}}}
| data40c = {{#if:{{{goals6|}}}|({{{goals6}}})}}
| label41 = {{#if:{{{clubs7|}}}|<span style="font-weight:normal">{{{years7|}}}</span>}}
| data41a = {{{clubs7|}}}
| data41b = {{{caps7|}}}
| data41c = {{#if:{{{goals7|}}}|({{{goals7}}})}}
| label42 = {{#if:{{{clubs8|}}}|<span style="font-weight:normal">{{{years8|}}}</span>}}
| data42a = {{{clubs8|}}}
| data42b = {{{caps8|}}}
| data42c = {{#if:{{{goals8|}}}|({{{goals8}}})}}
| label43 = {{#if:{{{clubs9|}}}|<span style="font-weight:normal">{{{years9|}}}</span>}}
| data43a = {{{clubs9|}}}
| data43b = {{{caps9|}}}
| data43c = {{#if:{{{goals9|}}}|({{{goals9}}})}}
| label44 = {{#if:{{{clubs10|}}}|<span style="font-weight:normal">{{{years10|}}}</span>}}
| data44a = {{{clubs10|}}}
| data44b = {{{caps10|}}}
| data44c = {{#if:{{{goals10|}}}|({{{goals10}}})}}
| label45 = {{#if:{{{clubs11|}}}|<span style="font-weight:normal">{{{years11|}}}</span>}}
| data45a = {{{clubs11|}}}
| data45b = {{{caps11|}}}
| data45c = {{#if:{{{goals11|}}}|({{{goals11}}})}}
| label46 = {{#if:{{{clubs12|}}}|<span style="font-weight:normal">{{{years12|}}}</span>}}
| data46a = {{{clubs12|}}}
| data46b = {{{caps12|}}}
| data46c = {{#if:{{{goals12|}}}|({{{goals12}}})}}
| label47 = {{#if:{{{clubs13|}}}|<span style="font-weight:normal">{{{years13|}}}</span>}}
| data47a = {{{clubs13|}}}
| data47b = {{{caps13|}}}
| data47c = {{#if:{{{goals13|}}}|({{{goals13}}})}}
| label48 = {{#if:{{{clubs14|}}}|<span style="font-weight:normal">{{{years14|}}}</span>}}
| data48a = {{{clubs14|}}}
| data48b = {{{caps14|}}}
| data48c = {{#if:{{{goals14|}}}|({{{goals14}}})}}
| label49 = {{#if:{{{clubs15|}}}|<span style="font-weight:normal">{{{years15|}}}</span>}}
| data49a = {{{clubs15|}}}
| data49b = {{{caps15|}}}
| data49c = {{#if:{{{goals15|}}}|({{{goals15}}})}}
| label50 = {{#if:{{{clubs16|}}}|<span style="font-weight:normal">{{{years16|}}}</span>}}
| data50a = {{{clubs16|}}}
| data50b = {{{caps16|}}}
| data50c = {{#if:{{{goals16|}}}|({{{goals16}}})}}
| label51 = {{#if:{{{clubs17|}}}|<span style="font-weight:normal">{{{years17|}}}</span>}}
| data51a = {{{clubs17|}}}
| data51b = {{{caps17|}}}
| data51c = {{#if:{{{goals17|}}}|({{{goals17}}})}}
| label52 = {{#if:{{{clubs18|}}}|<span style="font-weight:normal">{{{years18|}}}</span>}}
| data52a = {{{clubs18|}}}
| data52b = {{{caps18|}}}
| data52c = {{#if:{{{goals18|}}}|({{{goals18}}})}}
| label53 = {{#if:{{{clubs19|}}}|<span style="font-weight:normal">{{{years19|}}}</span>}}
| data53a = {{{clubs19|}}}
| data53b = {{{caps19|}}}
| data53c = {{#if:{{{goals19|}}}|({{{goals19}}})}}
| label54 = {{#if:{{{clubs20|}}}|<span style="font-weight:normal">{{{years20|}}}</span>}}
| data54a = {{{clubs20|}}}
| data54b = {{{caps20|}}}
| data54c = {{#if:{{{goals20|}}}|({{{goals20}}})}}
| label55 = {{#if:{{{clubs21|}}}|<span style="font-weight:normal">{{{years21|}}}</span>}}
| data55a = {{{clubs21|}}}
| data55b = {{{caps21|}}}
| data55c = {{#if:{{{goals21|}}}|({{{goals21}}})}}
| label56 = {{#if:{{{clubs22|}}}|<span style="font-weight:normal">{{{years22|}}}</span>}}
| data56a = {{{clubs22|}}}
| data56b = {{{caps22|}}}
| data56c = {{#if:{{{goals22|}}}|({{{goals22}}})}}
| label57 = {{#if:{{{clubs23|}}}|<span style="font-weight:normal">{{{years23|}}}</span>}}
| data57a = {{{clubs23|}}}
| data57b = {{{caps23|}}}
| data57c = {{#if:{{{goals23|}}}|({{{goals23}}})}}
| label58 = {{#if:{{{clubs24|}}}|<span style="font-weight:normal">{{{years24|}}}</span>}}
| data58a = {{{clubs24|}}}
| data58b = {{{caps24|}}}
| data58c = {{#if:{{{goals24|}}}|({{{goals24}}})}}
| label59 = {{#if:{{{clubs25|}}}|<span style="font-weight:normal">{{{years25|}}}</span>}}
| data59a = {{{clubs25|}}}
| data59b = {{{caps25|}}}
| data59c = {{#if:{{{goals25|}}}|({{{goals25}}})}}
| label60 = {{#if:{{{clubs26|}}}|<span style="font-weight:normal">{{{years26|}}}</span>}}
| data60a = {{{clubs26|}}}
| data60b = {{{caps26|}}}
| data60c = {{#if:{{{goals26|}}}|({{{goals26}}})}}
| label61 = {{#if:{{{clubs27|}}}|<span style="font-weight:normal">{{{years27|}}}</span>}}
| data61a = {{{clubs27|}}}
| data61b = {{{caps27|}}}
| data61c = {{#if:{{{goals27|}}}|({{{goals27}}})}}
| label62 = {{#if:{{{clubs28|}}}|<span style="font-weight:normal">{{{years28|}}}</span>}}
| data62a = {{{clubs28|}}}
| data62b = {{{caps28|}}}
| data62c = {{#if:{{{goals28|}}}|({{{goals28}}})}}
| label63 = {{#if:{{{clubs29|}}}|<span style="font-weight:normal">{{{years29|}}}</span>}}
| data63a = {{{clubs29|}}}
| data63b = {{{caps29|}}}
| data63c = {{#if:{{{goals29|}}}|({{{goals29}}})}}
| label64 = {{#if:{{{clubs30|}}}|<span style="font-weight:normal">{{{years30|}}}</span>}}
| data64a = {{{clubs30|}}}
| data64b = {{{caps30|}}}
| data64c = {{#if:{{{goals30|}}}|({{{goals30}}})}}
| label65 = {{#if:{{{clubs31|}}}|<span style="font-weight:normal">{{{years31|}}}</span>}}
| data65a = {{{clubs31|}}}
| data65b = {{{caps31|}}}
| data65c = {{#if:{{{goals31|}}}|({{{goals31}}})}}
| label66 = {{#if:{{{clubs32|}}}|<span style="font-weight:normal">{{{years32|}}}</span>}}
| data66a = {{{clubs32|}}}
| data66b = {{{caps32|}}}
| data66c = {{#if:{{{goals32|}}}|({{{goals32}}})}}
| label67 = {{#if:{{{clubs33|}}}|<span style="font-weight:normal">{{{years33|}}}</span>}}
| data67a = {{{clubs33|}}}
| data67b = {{{caps33|}}}
| data67c = {{#if:{{{goals33|}}}|({{{goals33}}})}}
| label68 = {{#if:{{{clubs34|}}}|<span style="font-weight:normal">{{{years34|}}}</span>}}
| data68a = {{{clubs34|}}}
| data68b = {{{caps34|}}}
| data68c = {{#if:{{{goals34|}}}|({{{goals34}}})}}
| label69 = {{#if:{{{clubs35|}}}|<span style="font-weight:normal">{{{years35|}}}</span>}}
| data69a = {{{clubs35|}}}
| data69b = {{{caps35|}}}
| data69c = {{#if:{{{goals35|}}}|({{{goals35}}})}}
| label70 = {{#if:{{{clubs36|}}}|<span style="font-weight:normal">{{{years36|}}}</span>}}
| data70a = {{{clubs36|}}}
| data70b = {{{caps36|}}}
| data70c = {{#if:{{{goals36|}}}|({{{goals36}}})}}
| label71 = {{#if:{{{clubs37|}}}|<span style="font-weight:normal">{{{years37|}}}</span>}}
| data71a = {{{clubs37|}}}
| data71b = {{{caps37|}}}
| data71c = {{#if:{{{goals37|}}}|({{{goals37}}})}}
| label72 = {{#if:{{{clubs38|}}}|<span style="font-weight:normal">{{{years38|}}}</span>}}
| data72a = {{{clubs38|}}}
| data72b = {{{caps38|}}}
| data72c = {{#if:{{{goals38|}}}|({{{goals38}}})}}
| label73 = {{#if:{{{clubs39|}}}|<span style="font-weight:normal">{{{years39|}}}</span>}}
| data73a = {{{clubs39|}}}
| data73b = {{{caps39|}}}
| data73c = {{#if:{{{goals39|}}}|({{{goals39}}})}}
| label74 = {{#if:{{{clubs40|}}}|<span style="font-weight:normal">{{{years40|}}}</span>}}
| data74a = {{{clubs40|}}}
| data74b = {{{caps40|}}}
| data74c = {{#if:{{{goals40|}}}|({{{goals40}}})}}
| label75 = {{#if:{{{clubs41|}}}|<span style="font-weight:normal">{{{years41|}}}</span>}}
| data75a = {{{clubs41|}}}
| data75b = {{{caps41|}}}
| data75c = {{#if:{{{goals41|}}}|({{{goals41}}})}}
| label76 = {{#if:{{{clubs42|}}}|<span style="font-weight:normal">{{{years42|}}}</span>}}
| data76a = {{{clubs42|}}}
| data76b = {{{caps42|}}}
| data76c = {{#if:{{{goals42|}}}|({{{goals42}}})}}
| label77 = {{#if:{{{clubs43|}}}|<span style="font-weight:normal">{{{years43|}}}</span>}}
| data77a = {{{clubs43|}}}
| data77b = {{{caps43|}}}
| data77c = {{#if:{{{goals43|}}}|({{{goals43}}})}}
| label78 = {{#if:{{{clubs44|}}}|<span style="font-weight:normal">{{{years44|}}}</span>}}
| data78a = {{{clubs44|}}}
| data78b = {{{caps44|}}}
| data78c = {{#if:{{{goals44|}}}|({{{goals44}}})}}
| label79 = {{#if:{{{clubs45|}}}|<span style="font-weight:normal">{{{years45|}}}</span>}}
| data79a = {{{clubs45|}}}
| data79b = {{{caps45|}}}
| data79c = {{#if:{{{goals45|}}}|({{{goals45}}})}}
| label80 = {{#if:{{{clubs46|}}}|<span style="font-weight:normal">{{{years46|}}}</span>}}
| data80a = {{{clubs46|}}}
| data80b = {{{caps46|}}}
| data80c = {{#if:{{{goals46|}}}|({{{goals46}}})}}
| label81 = {{#if:{{{clubs47|}}}|<span style="font-weight:normal">{{{years47|}}}</span>}}
| data81a = {{{clubs47|}}}
| data81b = {{{caps47|}}}
| data81c = {{#if:{{{goals47|}}}|({{{goals47}}})}}
| label82 = {{#if:{{{clubs48|}}}|<span style="font-weight:normal">{{{years48|}}}</span>}}
| data82a = {{{clubs48|}}}
| data82b = {{{caps48|}}}
| data82c = {{#if:{{{goals48|}}}|({{{goals48}}})}}
| label83 = {{#if:{{{clubs49|}}}|<span style="font-weight:normal">{{{years49|}}}</span>}}
| data83a = {{{clubs49|}}}
| data83b = {{{caps49|}}}
| data83c = {{#if:{{{goals49|}}}|({{{goals49}}})}}
| label84 = {{#if:{{{clubs50|}}}|<span style="font-weight:normal">{{{years50|}}}</span>}}
| data84a = {{{clubs50|}}}
| data84b = {{{caps50|}}}
| data84c = {{#if:{{{goals50|}}}|({{{goals50}}})}}
| label85 = {{#if:{{{clubs51|}}}|<span style="font-weight:normal">{{{years51|}}}</span>}}
| data85a = {{{clubs51|}}}
| data85b = {{{caps51|}}}
| data85c = {{#if:{{{goals51|}}}|({{{goals51}}})}}
| label86 = {{#if:{{{clubs52|}}}|<span style="font-weight:normal">{{{years52|}}}</span>}}
| data86a = {{{clubs52|}}}
| data86b = {{{caps52|}}}
| data86c = {{#if:{{{goals52|}}}|({{{goals52}}})}}
| label87 = Total
| data87b = {{#if:{{{totalcaps|}}}|'''{{{totalcaps}}}'''}}
| data87c = {{#if:{{{totalgoals|}}}|'''({{{totalgoals}}})'''}}
| header88 = {{#if:{{{nationalteam1|}}}|International career{{#if:{{{ntupdate|}}}{{{nationalteam-update|}}}|<sup>‡</sup> }} }}
| label89 = {{#if:{{{clubs1|}}}{{{college1|}}}||{{#if:{{{nationalteam1|}}}|Years}} }}
| data89a = {{#if:{{{clubs1|}}}{{{college1|}}}||'''Team''' }}
| data89b = {{#if:{{{clubs1|}}}{{{college1|}}}||'''{{abbr|Apps|National team appearances}}''' }}
| data89c = {{#if:{{{clubs1|}}}{{{college1|}}}||'''({{abbr|Gls|National team goals}})''' }}
| label90 = {{#if:{{{nationalteam1|}}}|<span style="font-weight:normal">{{{nationalyears1|}}}</span>}}
| data90a = {{{nationalteam1|}}}
| data90b = {{{nationalcaps1|}}}
| data90c = {{#if:{{{nationalgoals1|}}}|({{{nationalgoals1}}})}}
| label91 = {{#if:{{{nationalteam2|}}}|<span style="font-weight:normal">{{{nationalyears2|}}}</span>}}
| data91a = {{{nationalteam2|}}}
| data91b = {{{nationalcaps2|}}}
| data91c = {{#if:{{{nationalgoals2|}}}|({{{nationalgoals2}}})}}
| label92 = {{#if:{{{nationalteam3|}}}|<span style="font-weight:normal">{{{nationalyears3|}}}</span>}}
| data92a = {{{nationalteam3|}}}
| data92b = {{{nationalcaps3|}}}
| data92c = {{#if:{{{nationalgoals3|}}}|({{{nationalgoals3}}})}}
| label93 = {{#if:{{{nationalteam4|}}}|<span style="font-weight:normal">{{{nationalyears4|}}}</span>}}
| data93a = {{{nationalteam4|}}}
| data93b = {{{nationalcaps4|}}}
| data93c = {{#if:{{{nationalgoals4|}}}|({{{nationalgoals4}}})}}
| label94 = {{#if:{{{nationalteam5|}}}|<span style="font-weight:normal">{{{nationalyears5|}}}</span>}}
| data94a = {{{nationalteam5|}}}
| data94b = {{{nationalcaps5|}}}
| data94c = {{#if:{{{nationalgoals5|}}}|({{{nationalgoals5}}})}}
| label95 = {{#if:{{{nationalteam6|}}}|<span style="font-weight:normal">{{{nationalyears6|}}}</span>}}
| data95a = {{{nationalteam6|}}}
| data95b = {{{nationalcaps6|}}}
| data95c = {{#if:{{{nationalgoals6|}}}|({{{nationalgoals6}}})}}
| label96 = {{#if:{{{nationalteam7|}}}|<span style="font-weight:normal">{{{nationalyears7|}}}</span>}}
| data96a = {{{nationalteam7|}}}
| data96b = {{{nationalcaps7|}}}
| data96c = {{#if:{{{nationalgoals7|}}}|({{{nationalgoals7}}})}}
| label97 = {{#if:{{{nationalteam8|}}}|<span style="font-weight:normal">{{{nationalyears8|}}}</span>}}
| data97a = {{{nationalteam8|}}}
| data97b = {{{nationalcaps8|}}}
| data97c = {{#if:{{{nationalgoals8|}}}|({{{nationalgoals8}}})}}
| label98 = {{#if:{{{nationalteam9|}}}|<span style="font-weight:normal">{{{nationalyears9|}}}</span>}}
| data98a = {{{nationalteam9|}}}
| data98b = {{{nationalcaps9|}}}
| data98c = {{#if:{{{nationalgoals9|}}}|({{{nationalgoals9}}})}}
| label99 = {{#if:{{{nationalteam10|}}}|<span style="font-weight:normal">{{{nationalyears10|}}}</span>}}
| data99a = {{{nationalteam10|}}}
| data99b = {{{nationalcaps10|}}}
| data99c = {{#if:{{{nationalgoals10|}}}|({{{nationalgoals10}}})}}
| header100 = {{#if:{{{managerclubs1|}}}|Managerial career}}
| label101 = {{#if:{{{clubs1|}}}{{{nationalteam1|}}}{{{college1|}}}{{{youthclubs1|}}}||{{#if:{{{managerclubs1|}}}|Years}} }}
| data101 = {{#if:{{{clubs1|}}}{{{nationalteam1|}}}{{{college1|}}}{{{youthclubs1|}}}||{{#if:{{{managerclubs1|}}}|'''Team'''}} }}
| label102 = {{#if:{{{managerclubs1|}}}|<span style="font-weight:normal">{{{manageryears1|}}}</span>}}
| data102 = {{{managerclubs1|}}}
| label103 = {{#if:{{{managerclubs2|}}}|<span style="font-weight:normal">{{{manageryears2|}}}</span>}}
| data103 = {{{managerclubs2|}}}
| label104 = {{#if:{{{managerclubs3|}}}|<span style="font-weight:normal">{{{manageryears3|}}}</span>}}
| data104 = {{{managerclubs3|}}}
| label105 = {{#if:{{{managerclubs4|}}}|<span style="font-weight:normal">{{{manageryears4|}}}</span>}}
| data105 = {{{managerclubs4|}}}
| label106 = {{#if:{{{managerclubs5|}}}|<span style="font-weight:normal">{{{manageryears5|}}}</span>}}
| data106 = {{{managerclubs5|}}}
| label107 = {{#if:{{{managerclubs6|}}}|<span style="font-weight:normal">{{{manageryears6|}}}</span>}}
| data107 = {{{managerclubs6|}}}
| label108 = {{#if:{{{managerclubs7|}}}|<span style="font-weight:normal">{{{manageryears7|}}}</span>}}
| data108 = {{{managerclubs7|}}}
| label109 = {{#if:{{{managerclubs8|}}}|<span style="font-weight:normal">{{{manageryears8|}}}</span>}}
| data109 = {{{managerclubs8|}}}
| label110 = {{#if:{{{managerclubs9|}}}|<span style="font-weight:normal">{{{manageryears9|}}}</span>}}
| data110 = {{{managerclubs9|}}}
| label111 = {{#if:{{{managerclubs10|}}}|<span style="font-weight:normal">{{{manageryears10|}}}</span>}}
| data111 = {{{managerclubs10|}}}
| label112 = {{#if:{{{managerclubs11|}}}|<span style="font-weight:normal">{{{manageryears11|}}}</span>}}
| data112 = {{{managerclubs11|}}}
| label113 = {{#if:{{{managerclubs12|}}}|<span style="font-weight:normal">{{{manageryears12|}}}</span>}}
| data113 = {{{managerclubs12|}}}
| label114 = {{#if:{{{managerclubs13|}}}|<span style="font-weight:normal">{{{manageryears13|}}}</span>}}
| data114 = {{{managerclubs13|}}}
| label115 = {{#if:{{{managerclubs14|}}}|<span style="font-weight:normal">{{{manageryears14|}}}</span>}}
| data115 = {{{managerclubs14|}}}
| label116 = {{#if:{{{managerclubs15|}}}|<span style="font-weight:normal">{{{manageryears15|}}}</span>}}
| data116 = {{{managerclubs15|}}}
| label117 = {{#if:{{{managerclubs16|}}}|<span style="font-weight:normal">{{{manageryears16|}}}</span>}}
| data117 = {{{managerclubs16|}}}
| label118 = {{#if:{{{managerclubs17|}}}|<span style="font-weight:normal">{{{manageryears17|}}}</span>}}
| data118 = {{{managerclubs17|}}}
| label119 = {{#if:{{{managerclubs18|}}}|<span style="font-weight:normal">{{{manageryears18|}}}</span>}}
| data119 = {{{managerclubs18|}}}
| label120 = {{#if:{{{managerclubs19|}}}|<span style="font-weight:normal">{{{manageryears19|}}}</span>}}
| data120 = {{{managerclubs19|}}}
| label121 = {{#if:{{{managerclubs20|}}}|<span style="font-weight:normal">{{{manageryears20|}}}</span>}}
| data121 = {{{managerclubs20|}}}
| label122 = {{#if:{{{managerclubs21|}}}|<span style="font-weight:normal">{{{manageryears21|}}}</span>}}
| data122 = {{{managerclubs21|}}}
| label123 = {{#if:{{{managerclubs22|}}}|<span style="font-weight:normal">{{{manageryears22|}}}</span>}}
| data123 = {{{managerclubs22|}}}
| label124 = {{#if:{{{managerclubs23|}}}|<span style="font-weight:normal">{{{manageryears23|}}}</span>}}
| data124 = {{{managerclubs23|}}}
| label125 = {{#if:{{{managerclubs24|}}}|<span style="font-weight:normal">{{{manageryears24|}}}</span>}}
| data125 = {{{managerclubs24|}}}
| label126 = {{#if:{{{managerclubs25|}}}|<span style="font-weight:normal">{{{manageryears25|}}}</span>}}
| data126 = {{{managerclubs25|}}}
| label127 = {{#if:{{{managerclubs26|}}}|<span style="font-weight:normal">{{{manageryears26|}}}</span>}}
| data127 = {{{managerclubs26|}}}
| label128 = {{#if:{{{managerclubs27|}}}|<span style="font-weight:normal">{{{manageryears27|}}}</span>}}
| data128 = {{{managerclubs27|}}}
| label129 = {{#if:{{{managerclubs28|}}}|<span style="font-weight:normal">{{{manageryears28|}}}</span>}}
| data129 = {{{managerclubs28|}}}
| label130 = {{#if:{{{managerclubs29|}}}|<span style="font-weight:normal">{{{manageryears29|}}}</span>}}
| data130 = {{{managerclubs29|}}}
| label131 = {{#if:{{{managerclubs30|}}}|<span style="font-weight:normal">{{{manageryears30|}}}</span>}}
| data131 = {{{managerclubs30|}}}
| label132 = {{#if:{{{managerclubs31|}}}|<span style="font-weight:normal">{{{manageryears31|}}}</span>}}
| data132 = {{{managerclubs31|}}}
| label133 = {{#if:{{{managerclubs32|}}}|<span style="font-weight:normal">{{{manageryears32|}}}</span>}}
| data133 = {{{managerclubs32|}}}
| label134 = {{#if:{{{managerclubs33|}}}|<span style="font-weight:normal">{{{manageryears33|}}}</span>}}
| data134 = {{{managerclubs33|}}}
| label135 = {{#if:{{{managerclubs34|}}}|<span style="font-weight:normal">{{{manageryears34|}}}</span>}}
| data135 = {{{managerclubs34|}}}
| label136 = {{#if:{{{managerclubs35|}}}|<span style="font-weight:normal">{{{manageryears35|}}}</span>}}
| data136 = {{{managerclubs35|}}}
| label137 = {{#if:{{{managerclubs36|}}}|<span style="font-weight:normal">{{{manageryears36|}}}</span>}}
| data137 = {{{managerclubs36|}}}
| label138 = {{#if:{{{managerclubs37|}}}|<span style="font-weight:normal">{{{manageryears37|}}}</span>}}
| data138 = {{{managerclubs37|}}}
| label139 = {{#if:{{{managerclubs38|}}}|<span style="font-weight:normal">{{{manageryears38|}}}</span>}}
| data139 = {{{managerclubs38|}}}
| label140 = {{#if:{{{managerclubs39|}}}|<span style="font-weight:normal">{{{manageryears39|}}}</span>}}
| data140 = {{{managerclubs39|}}}
| label141 = {{#if:{{{managerclubs40|}}}|<span style="font-weight:normal">{{{manageryears40|}}}</span>}}
| data141 = {{{managerclubs40|}}}
| label142 = {{#if:{{{managerclubs41|}}}|<span style="font-weight:normal">{{{manageryears41|}}}</span>}}
| data142 = {{{managerclubs41|}}}
| label143 = {{#if:{{{managerclubs42|}}}|<span style="font-weight:normal">{{{manageryears42|}}}</span>}}
| data143 = {{{managerclubs42|}}}
| label144 = {{#if:{{{managerclubs43|}}}|<span style="font-weight:normal">{{{manageryears43|}}}</span>}}
| data144 = {{{managerclubs43|}}}
| label145 = {{#if:{{{managerclubs44|}}}|<span style="font-weight:normal">{{{manageryears44|}}}</span>}}
| data145 = {{{managerclubs44|}}}
| label146 = {{#if:{{{managerclubs45|}}}|<span style="font-weight:normal">{{{manageryears45|}}}</span>}}
| data146 = {{{managerclubs45|}}}
| label147 = {{#if:{{{managerclubs46|}}}|<span style="font-weight:normal">{{{manageryears46|}}}</span>}}
| data147 = {{{managerclubs46|}}}
| label148 = {{#if:{{{managerclubs47|}}}|<span style="font-weight:normal">{{{manageryears47|}}}</span>}}
| data148 = {{{managerclubs47|}}}
| label149 = {{#if:{{{managerclubs48|}}}|<span style="font-weight:normal">{{{manageryears48|}}}</span>}}
| data149 = {{{managerclubs48|}}}
| label150 = {{#if:{{{managerclubs49|}}}|<span style="font-weight:normal">{{{manageryears49|}}}</span>}}
| data150 = {{{managerclubs49|}}}
| label151 = {{#if:{{{managerclubs50|}}}|<span style="font-weight:normal">{{{manageryears50|}}}</span>}}
| data151 = {{{managerclubs50|}}}
| label152 = {{#if:{{{managerclubs51|}}}|<span style="font-weight:normal">{{{manageryears51|}}}</span>}}
| data152 = {{{managerclubs51|}}}
| label153 = {{#if:{{{managerclubs52|}}}|<span style="font-weight:normal">{{{manageryears52|}}}</span>}}
| data153 = {{{managerclubs52|}}}
| label154 = {{#if:{{{managerclubs53|}}}|<span style="font-weight:normal">{{{manageryears53|}}}</span>}}
| data154 = {{{managerclubs53|}}}
| label155 = {{#if:{{{managerclubs54|}}}|<span style="font-weight:normal">{{{manageryears54|}}}</span>}}
| data155 = {{{managerclubs54|}}}
| label156 = {{#if:{{{managerclubs55|}}}|<span style="font-weight:normal">{{{manageryears55|}}}</span>}}
| data156 = {{{managerclubs55|}}}
| label157 = {{#if:{{{managerclubs56|}}}|<span style="font-weight:normal">{{{manageryears56|}}}</span>}}
| data157 = {{{managerclubs56|}}}
| label158 = {{#if:{{{managerclubs57|}}}|<span style="font-weight:normal">{{{manageryears57|}}}</span>}}
| data158 = {{{managerclubs57|}}}
| label159 = {{#if:{{{managerclubs58|}}}|<span style="font-weight:normal">{{{manageryears58|}}}</span>}}
| data159 = {{{managerclubs58|}}}
| label160 = {{#if:{{{managerclubs59|}}}|<span style="font-weight:normal">{{{manageryears59|}}}</span>}}
| data160 = {{{managerclubs59|}}}
| label161 = {{#if:{{{managerclubs60|}}}|<span style="font-weight:normal">{{{manageryears60|}}}</span>}}
| data161 = {{{managerclubs60|}}}
| label162 = {{#if:{{{managerclubs61|}}}|<span style="font-weight:normal">{{{manageryears61|}}}</span>}}
| data162 = {{{managerclubs61|}}}
| label163 = {{#if:{{{managerclubs62|}}}|<span style="font-weight:normal">{{{manageryears62|}}}</span>}}
| data163 = {{{managerclubs62|}}}
| label164 = {{#if:{{{managerclubs63|}}}|<span style="font-weight:normal">{{{manageryears63|}}}</span>}}
| data164 = {{{managerclubs63|}}}
| label165 = {{#if:{{{managerclubs64|}}}|<span style="font-weight:normal">{{{manageryears64|}}}</span>}}
| data165 = {{{managerclubs64|}}}
| label166 = {{#if:{{{managerclubs65|}}}|<span style="font-weight:normal">{{{manageryears65|}}}</span>}}
| data166 = {{{managerclubs65|}}}
| label167 = {{#if:{{{managerclubs66|}}}|<span style="font-weight:normal">{{{manageryears66|}}}</span>}}
| data167 = {{{managerclubs66|}}}
| label168 = {{#if:{{{managerclubs67|}}}|<span style="font-weight:normal">{{{manageryears67|}}}</span>}}
| data168 = {{{managerclubs67|}}}
| label169 = {{#if:{{{managerclubs68|}}}|<span style="font-weight:normal">{{{manageryears68|}}}</span>}}
| data169 = {{{managerclubs68|}}}
| label170 = {{#if:{{{managerclubs69|}}}|<span style="font-weight:normal">{{{manageryears69|}}}</span>}}
| data170 = {{{managerclubs69|}}}
| label171 = {{#if:{{{managerclubs70|}}}|<span style="font-weight:normal">{{{manageryears70|}}}</span>}}
| data171 = {{{managerclubs70|}}}
| label172 = {{#if:{{{managerclubs71|}}}|<span style="font-weight:normal">{{{manageryears71|}}}</span>}}
| data172 = {{{managerclubs71|}}}
| label173 = {{#if:{{{managerclubs72|}}}|<span style="font-weight:normal">{{{manageryears72|}}}</span>}}
| data173 = {{{managerclubs72|}}}
| label174 = {{#if:{{{managerclubs73|}}}|<span style="font-weight:normal">{{{manageryears73|}}}</span>}}
| data174 = {{{managerclubs73|}}}
| label175 = {{#if:{{{managerclubs74|}}}|<span style="font-weight:normal">{{{manageryears74|}}}</span>}}
| data175 = {{{managerclubs74|}}}
| label176 = {{#if:{{{managerclubs75|}}}|<span style="font-weight:normal">{{{manageryears75|}}}</span>}}
| data176 = {{{managerclubs75|}}}
| label177 = {{#if:{{{managerclubs76|}}}|<span style="font-weight:normal">{{{manageryears76|}}}</span>}}
| data177 = {{{managerclubs76|}}}
| label178 = {{#if:{{{managerclubs77|}}}|<span style="font-weight:normal">{{{manageryears77|}}}</span>}}
| data178 = {{{managerclubs77|}}}
| label179 = {{#if:{{{managerclubs78|}}}|<span style="font-weight:normal">{{{manageryears78|}}}</span>}}
| data179 = {{{managerclubs78|}}}
| label180 = {{#if:{{{managerclubs79|}}}|<span style="font-weight:normal">{{{manageryears79|}}}</span>}}
| data180 = {{{managerclubs79|}}}
| label181 = {{#if:{{{managerclubs80|}}}|<span style="font-weight:normal">{{{manageryears80|}}}</span>}}
| data181 = {{{managerclubs80|}}}
| header182 = {{Infobox medal templates
|title = Medal record
|medals = {{{medaltemplates|}}}
|expand = {{yesno|{{{medaltemplates-expand|}}}}}
}}
| data183 = {{#if:{{{module|}}}|<nowiki />
{{{!}} style="text-align:left; width:100%; margin:0; border-spacing:0; line-height: normal"
{{!}}-
{{!}}
{{{module|}}}
{{!}}}
}}
| belowstyle = color:darkslategray;
| below = {{br separated entries
| 1 = {{#if:{{{clubs1|}}}|<nowiki>*</nowiki> Club domestic league appearances and goals{{#if:{{{pcupdate|}}}{{{club-update|}}}| as of {{if empty|{{{pcupdate|}}}|{{{club-update}}}}}}} }}
| 2 = {{#if:{{{ntupdate|}}}{{{nationalteam-update|}}}|‡ National team caps and goals as of {{if empty|{{{ntupdate|}}}|{{{nationalteam-update}}}}} }}
}}
}}<includeonly><!--
-->{{#if:{{{height|}}}|{{main other|{{#invoke:Check height|main|{{{height}}}|metric=m|cat=Pages using infobox football biography with height issues}}}}}}<!--
-->{{#if:{{{clubnumber|}}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:String|replace|source={{{clubnumber}}}|pattern=%c'"`UNIQ%-%-ref%-.-%-QINU`"'%c|replace=|plain=false}}|pattern=^[1-9]%d?$|nomatch=n}}|n|{{main other|[[Category:Pages using infobox football biography with invalid clubnumber]]}}}}}}<!--
-->{{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes||{{Wikidata image|1={{{image|}}}|2={{{nocat_wdimage|}}} }} }}<!--
-->{{#if:{{{module|}}}|{{main other|[[Category:Pages using infobox football biography with a module]]}}}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox football biography with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox football biography]] with unknown parameter "_VALUE_"| alt | birth_date | birth_name | birth_place | caption | club-update | clubnumber | currentclub | death_date | death_place | embed | embed-header | full_name | fullname | header-color | height | image | image_size | medaltemplates | medaltemplates-expand | module | name | nationalteam-update | nocat_wdimage | ntupdate | pcupdate | position | upright
| regexp1 = youthyears[1-9] | regexp2 = youthclubs[1-9]
| regexp3 = youthyears1[0-2] | regexp4 = youthclubs1[0-2]
| regexp5 = collegeyears[1-4] | regexp6 = college[1-4] | regexp7 = collegecaps[1-4] | regexp8 = collegegoals[1-4]
| regexp9 = years[1-9] | regexp10 = clubs[1-9] | regexp11 = caps[1-9] | regexp12 = goals[1-9]
| regexp13 = years[1-4][%d] | regexp14 = clubs[1-4][%d] | regexp15 = caps[1-4][%d] | regexp16 = goals[1-4][%d]
| regexp17 = years5[0-2] | regexp18 = clubs5[0-2] | regexp19 = caps5[0-2] | regexp20 = goals5[0-2]
| totalcaps | totalgoals
| regexp21 = nationalyears[1-9] | regexp22 = nationalteam[1-9] | regexp23 = nationalcaps[1-9] | regexp24 = nationalgoals[1-9]
| nationalyears10 | nationalteam10 | nationalcaps10 | nationalgoals10
| regexp25 = manageryears[1-9] | regexp26 = managerclubs[1-9]
| regexp27 = manageryears[1-7][%d] | regexp28 = managerclubs[1-7][%d]
| manageryears80 | managerclubs80
}}</includeonly>{{#invoke:Check for conflicting parameters|check
| template = [[Template:Infobox football biography]]
| cat = {{main other|Category:Pages using infobox football biography with conflicting parameters}}
| full_name; fullname
| pcupdate; club-update
| ntupdate; nationalteam-update
}}<noinclude>
{{documentation}}
</noinclude>
85o309nwaqiwo4brymn10bq4hxalodi
73929
73928
2026-07-11T18:59:28Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_football_biography]]
73928
wikitext
text/x-wiki
{{#invoke:Infobox3cols|infoboxTemplate
| child = {{Yesno|{{if empty|{{{embed|}}}|no}}}}
| bodyclass = vcard
| bodystyle = line-height: 1.2em; max-width: 420px !important;
| title = {{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes|{{#if:{{{header-color|}}}|<hr style="color: #202122;background-color: {{if empty|{{{header-color|}}}|transparent}}; height: 3px;" />|}}<div style="text-align: center;">{{if empty|{{{embed-header|}}}|Association football career}}</div>|{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}} }}
| titleclass = fn
| titlestyle = line-height: 1.2em; {{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes||font-size: 125%}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|upright={{{upright|}}}|alt={{{alt|}}}|suppressplaceholder=yes}}
| caption = {{{caption|}}}
| captionstyle= padding:0.2em 0 0 0;
| headerstyle = color: #202122;background-color: {{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes|{{if empty|{{{header-color|}}}|transparent}}|#b0c4de}}; line-height: 1.5em
| labelstyle = white-space: nowrap; vertical-align: baseline; text-align: left
| datastyle = white-space: nowrap; vertical-align: baseline;
| datastylea = white-space: nowrap; vertical-align: baseline;
| datastyleb = white-space: nowrap; vertical-align: baseline; text-align: right
| datastylec = white-space: nowrap; vertical-align: baseline; text-align: right
| header1 = {{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes||{{#if:{{{full_name|}}}{{{fullname|}}}{{{birth_name|}}}{{{birth_date|}}}{{{birth_place|}}}{{{death_date|}}}{{{death_place|}}}{{{height|}}}{{{position|}}}|Personal information}} }}
| label2 = Full name
| data2 = {{if empty|{{{full_name|}}}|{{{fullname|}}}}}
|extracellstyles=2,3,4,5,6,7,8,9,11=white-space: normal;
| class2 = nickname
| label3 = Birth name
| data3 = {{{birth_name|}}}
| class3 = nickname
| label4 = Date of birth
| data4 = {{#invoke:person date|birth}}
| label5 = Place of birth
| data5 = {{{birth_place|}}}
| class5 = birthplace
| label6 = Date of death
| data6 = {{#invoke:person date|death}}
| label7 = Place of death
| class7 = deathplace
| data7 = {{{death_place|}}}
| label8 = Height
| data8 = {{#if:{{{height|}}} | {{#invoke:person height|main|{{{height|}}}|enforce=m|ri=cmin}} }}
| label9 = Position{{pluralize from text|{{#invoke:Footballer positions|main|{{{position|}}}}}|likely=(s)|plural=s}}
| class9 = role
| data9 = {{#if:{{{position|}}}|{{#invoke:Footballer positions|main|{{{position}}}}}}}
| header10 = {{#if:{{#switch:{{lc:{{{currentclub|}}}}}|n/a|[[n/a]]|na|none|no|unknown|-|–|—|―|free agent|[[free agent]]|unattached|?|retired=|{{{currentclub|}}}}}|Team information}}
| label11 = {{Longitem|Current team}}
| class11 = org
| data11 = {{#switch:{{lc:{{{currentclub|}}}}}|n/a|[[n/a]]|na|none|no|unknown|-|–|—|―|free agent|[[free agent]]|unattached|?|retired=|{{{currentclub|}}}}}
| label12 = Number
| data12 = {{#if:{{#switch:{{lc:{{{currentclub|}}}}}|n/a|[[n/a]]|na|none|no|unknown|-|–|—|―|free agent|[[free agent]]|unattached|?|retired=|{{{currentclub|}}}}}|{{#switch:{{lc:{{{clubnumber|}}}}}|n/a|na|none|no|tbd|tbc|tba|unknown|-|–|—|―|?=|{{{clubnumber|}}}}}}}
| header13 = {{#if:{{{youthclubs1|}}}|Youth career}}
| label14 = {{#if:{{{clubs1|}}}{{{nationalteam1|}}}{{{college1|}}}||{{#if:{{{youthclubs1|}}}|Years}} }}
| data14 = {{#if:{{{clubs1|}}}{{{nationalteam1|}}}{{{college1|}}}||{{#if:{{{youthclubs1|}}}|'''Team'''}} }}
| label15 = {{#if:{{{youthclubs1|}}}|<span style="font-weight:normal">{{{youthyears1|}}}</span>}}
| data15 = {{{youthclubs1|}}}
| label16 = {{#if:{{{youthclubs2|}}}|<span style="font-weight:normal">{{{youthyears2|}}}</span>}}
| data16 = {{{youthclubs2|}}}
| label17 = {{#if:{{{youthclubs3|}}}|<span style="font-weight:normal">{{{youthyears3|}}}</span>}}
| data17 = {{{youthclubs3|}}}
| label18 = {{#if:{{{youthclubs4|}}}|<span style="font-weight:normal">{{{youthyears4|}}}</span>}}
| data18 = {{{youthclubs4|}}}
| label19 = {{#if:{{{youthclubs5|}}}|<span style="font-weight:normal">{{{youthyears5|}}}</span>}}
| data19 = {{{youthclubs5|}}}
| label20 = {{#if:{{{youthclubs6|}}}|<span style="font-weight:normal">{{{youthyears6|}}}</span>}}
| data20 = {{{youthclubs6|}}}
| label21 = {{#if:{{{youthclubs7|}}}|<span style="font-weight:normal">{{{youthyears7|}}}</span>}}
| data21 = {{{youthclubs7|}}}
| label22 = {{#if:{{{youthclubs8|}}}|<span style="font-weight:normal">{{{youthyears8|}}}</span>}}
| data22 = {{{youthclubs8|}}}
| label23 = {{#if:{{{youthclubs9|}}}|<span style="font-weight:normal">{{{youthyears9|}}}</span>}}
| data23 = {{{youthclubs9|}}}
| label24 = {{#if:{{{youthclubs10|}}}|<span style="font-weight:normal">{{{youthyears10|}}}</span>}}
| data24 = {{{youthclubs10|}}}
| label25 = {{#if:{{{youthclubs11|}}}|<span style="font-weight:normal">{{{youthyears11|}}}</span>}}
| data25 = {{{youthclubs11|}}}
| label26 = {{#if:{{{youthclubs12|}}}|<span style="font-weight:normal">{{{youthyears12|}}}</span>}}
| data26 = {{{youthclubs12|}}}
| header27 = {{#if:{{{college1|}}}|College career}}
| label28 = {{#if:{{{college1|}}}|Years}}
| data28a = '''Team'''
| data28b = '''{{abbr|Apps|College appearances}}'''
| data28c = '''({{abbr|Gls|College goals}})'''
| label29 = {{#if:{{{college1|}}}|<span style="font-weight:normal">{{{collegeyears1|}}}</span>}}
| data29a = {{{college1|}}}
| data29b = {{{collegecaps1|}}}
| data29c = {{#if:{{{collegegoals1|}}}|({{{collegegoals1}}})}}
| label30 = {{#if:{{{college2|}}}|<span style="font-weight:normal">{{{collegeyears2|}}}</span>}}
| data30a = {{{college2|}}}
| data30b = {{{collegecaps2|}}}
| data30c = {{#if:{{{collegegoals2|}}}|({{{collegegoals2}}})}}
| label31 = {{#if:{{{college3|}}}|<span style="font-weight:normal">{{{collegeyears3|}}}</span>}}
| data31a = {{{college3|}}}
| data31b = {{{collegecaps3|}}}
| data31c = {{#if:{{{collegegoals3|}}}|({{{collegegoals3}}})}}
| label32 = {{#if:{{{college4|}}}|<span style="font-weight:normal">{{{collegeyears4|}}}</span>}}
| data32a = {{{college4|}}}
| data32b = {{{collegecaps4|}}}
| data32c = {{#if:{{{collegegoals4|}}}|({{{collegegoals4}}})}}
| header33 = {{#if:{{{clubs1|}}}|Senior career*}}
| label34 = {{#if:{{{clubs1|}}}|Years}}
| data34a = '''Team'''
| data34b = '''{{abbr|Apps|League appearances}}'''
| data34c = '''({{abbr|Gls|League goals}})'''
| label35 = {{#if:{{{clubs1|}}}|<span style="font-weight:normal">{{{years1|}}}</span>}}
| data35a = {{{clubs1|}}}
| data35b = {{{caps1|}}}
| data35c = {{#if:{{{goals1|}}}|({{{goals1}}})}}
| label36 = {{#if:{{{clubs2|}}}|<span style="font-weight:normal">{{{years2|}}}</span>}}
| data36a = {{{clubs2|}}}
| data36b = {{{caps2|}}}
| data36c = {{#if:{{{goals2|}}}|({{{goals2}}})}}
| label37 = {{#if:{{{clubs3|}}}|<span style="font-weight:normal">{{{years3|}}}</span>}}
| data37a = {{{clubs3|}}}
| data37b = {{{caps3|}}}
| data37c = {{#if:{{{goals3|}}}|({{{goals3}}})}}
| label38 = {{#if:{{{clubs4|}}}|<span style="font-weight:normal">{{{years4|}}}</span>}}
| data38a = {{{clubs4|}}}
| data38b = {{{caps4|}}}
| data38c = {{#if:{{{goals4|}}}|({{{goals4}}})}}
| label39 = {{#if:{{{clubs5|}}}|<span style="font-weight:normal">{{{years5|}}}</span>}}
| data39a = {{{clubs5|}}}
| data39b = {{{caps5|}}}
| data39c = {{#if:{{{goals5|}}}|({{{goals5}}})}}
| label40 = {{#if:{{{clubs6|}}}|<span style="font-weight:normal">{{{years6|}}}</span>}}
| data40a = {{{clubs6|}}}
| data40b = {{{caps6|}}}
| data40c = {{#if:{{{goals6|}}}|({{{goals6}}})}}
| label41 = {{#if:{{{clubs7|}}}|<span style="font-weight:normal">{{{years7|}}}</span>}}
| data41a = {{{clubs7|}}}
| data41b = {{{caps7|}}}
| data41c = {{#if:{{{goals7|}}}|({{{goals7}}})}}
| label42 = {{#if:{{{clubs8|}}}|<span style="font-weight:normal">{{{years8|}}}</span>}}
| data42a = {{{clubs8|}}}
| data42b = {{{caps8|}}}
| data42c = {{#if:{{{goals8|}}}|({{{goals8}}})}}
| label43 = {{#if:{{{clubs9|}}}|<span style="font-weight:normal">{{{years9|}}}</span>}}
| data43a = {{{clubs9|}}}
| data43b = {{{caps9|}}}
| data43c = {{#if:{{{goals9|}}}|({{{goals9}}})}}
| label44 = {{#if:{{{clubs10|}}}|<span style="font-weight:normal">{{{years10|}}}</span>}}
| data44a = {{{clubs10|}}}
| data44b = {{{caps10|}}}
| data44c = {{#if:{{{goals10|}}}|({{{goals10}}})}}
| label45 = {{#if:{{{clubs11|}}}|<span style="font-weight:normal">{{{years11|}}}</span>}}
| data45a = {{{clubs11|}}}
| data45b = {{{caps11|}}}
| data45c = {{#if:{{{goals11|}}}|({{{goals11}}})}}
| label46 = {{#if:{{{clubs12|}}}|<span style="font-weight:normal">{{{years12|}}}</span>}}
| data46a = {{{clubs12|}}}
| data46b = {{{caps12|}}}
| data46c = {{#if:{{{goals12|}}}|({{{goals12}}})}}
| label47 = {{#if:{{{clubs13|}}}|<span style="font-weight:normal">{{{years13|}}}</span>}}
| data47a = {{{clubs13|}}}
| data47b = {{{caps13|}}}
| data47c = {{#if:{{{goals13|}}}|({{{goals13}}})}}
| label48 = {{#if:{{{clubs14|}}}|<span style="font-weight:normal">{{{years14|}}}</span>}}
| data48a = {{{clubs14|}}}
| data48b = {{{caps14|}}}
| data48c = {{#if:{{{goals14|}}}|({{{goals14}}})}}
| label49 = {{#if:{{{clubs15|}}}|<span style="font-weight:normal">{{{years15|}}}</span>}}
| data49a = {{{clubs15|}}}
| data49b = {{{caps15|}}}
| data49c = {{#if:{{{goals15|}}}|({{{goals15}}})}}
| label50 = {{#if:{{{clubs16|}}}|<span style="font-weight:normal">{{{years16|}}}</span>}}
| data50a = {{{clubs16|}}}
| data50b = {{{caps16|}}}
| data50c = {{#if:{{{goals16|}}}|({{{goals16}}})}}
| label51 = {{#if:{{{clubs17|}}}|<span style="font-weight:normal">{{{years17|}}}</span>}}
| data51a = {{{clubs17|}}}
| data51b = {{{caps17|}}}
| data51c = {{#if:{{{goals17|}}}|({{{goals17}}})}}
| label52 = {{#if:{{{clubs18|}}}|<span style="font-weight:normal">{{{years18|}}}</span>}}
| data52a = {{{clubs18|}}}
| data52b = {{{caps18|}}}
| data52c = {{#if:{{{goals18|}}}|({{{goals18}}})}}
| label53 = {{#if:{{{clubs19|}}}|<span style="font-weight:normal">{{{years19|}}}</span>}}
| data53a = {{{clubs19|}}}
| data53b = {{{caps19|}}}
| data53c = {{#if:{{{goals19|}}}|({{{goals19}}})}}
| label54 = {{#if:{{{clubs20|}}}|<span style="font-weight:normal">{{{years20|}}}</span>}}
| data54a = {{{clubs20|}}}
| data54b = {{{caps20|}}}
| data54c = {{#if:{{{goals20|}}}|({{{goals20}}})}}
| label55 = {{#if:{{{clubs21|}}}|<span style="font-weight:normal">{{{years21|}}}</span>}}
| data55a = {{{clubs21|}}}
| data55b = {{{caps21|}}}
| data55c = {{#if:{{{goals21|}}}|({{{goals21}}})}}
| label56 = {{#if:{{{clubs22|}}}|<span style="font-weight:normal">{{{years22|}}}</span>}}
| data56a = {{{clubs22|}}}
| data56b = {{{caps22|}}}
| data56c = {{#if:{{{goals22|}}}|({{{goals22}}})}}
| label57 = {{#if:{{{clubs23|}}}|<span style="font-weight:normal">{{{years23|}}}</span>}}
| data57a = {{{clubs23|}}}
| data57b = {{{caps23|}}}
| data57c = {{#if:{{{goals23|}}}|({{{goals23}}})}}
| label58 = {{#if:{{{clubs24|}}}|<span style="font-weight:normal">{{{years24|}}}</span>}}
| data58a = {{{clubs24|}}}
| data58b = {{{caps24|}}}
| data58c = {{#if:{{{goals24|}}}|({{{goals24}}})}}
| label59 = {{#if:{{{clubs25|}}}|<span style="font-weight:normal">{{{years25|}}}</span>}}
| data59a = {{{clubs25|}}}
| data59b = {{{caps25|}}}
| data59c = {{#if:{{{goals25|}}}|({{{goals25}}})}}
| label60 = {{#if:{{{clubs26|}}}|<span style="font-weight:normal">{{{years26|}}}</span>}}
| data60a = {{{clubs26|}}}
| data60b = {{{caps26|}}}
| data60c = {{#if:{{{goals26|}}}|({{{goals26}}})}}
| label61 = {{#if:{{{clubs27|}}}|<span style="font-weight:normal">{{{years27|}}}</span>}}
| data61a = {{{clubs27|}}}
| data61b = {{{caps27|}}}
| data61c = {{#if:{{{goals27|}}}|({{{goals27}}})}}
| label62 = {{#if:{{{clubs28|}}}|<span style="font-weight:normal">{{{years28|}}}</span>}}
| data62a = {{{clubs28|}}}
| data62b = {{{caps28|}}}
| data62c = {{#if:{{{goals28|}}}|({{{goals28}}})}}
| label63 = {{#if:{{{clubs29|}}}|<span style="font-weight:normal">{{{years29|}}}</span>}}
| data63a = {{{clubs29|}}}
| data63b = {{{caps29|}}}
| data63c = {{#if:{{{goals29|}}}|({{{goals29}}})}}
| label64 = {{#if:{{{clubs30|}}}|<span style="font-weight:normal">{{{years30|}}}</span>}}
| data64a = {{{clubs30|}}}
| data64b = {{{caps30|}}}
| data64c = {{#if:{{{goals30|}}}|({{{goals30}}})}}
| label65 = {{#if:{{{clubs31|}}}|<span style="font-weight:normal">{{{years31|}}}</span>}}
| data65a = {{{clubs31|}}}
| data65b = {{{caps31|}}}
| data65c = {{#if:{{{goals31|}}}|({{{goals31}}})}}
| label66 = {{#if:{{{clubs32|}}}|<span style="font-weight:normal">{{{years32|}}}</span>}}
| data66a = {{{clubs32|}}}
| data66b = {{{caps32|}}}
| data66c = {{#if:{{{goals32|}}}|({{{goals32}}})}}
| label67 = {{#if:{{{clubs33|}}}|<span style="font-weight:normal">{{{years33|}}}</span>}}
| data67a = {{{clubs33|}}}
| data67b = {{{caps33|}}}
| data67c = {{#if:{{{goals33|}}}|({{{goals33}}})}}
| label68 = {{#if:{{{clubs34|}}}|<span style="font-weight:normal">{{{years34|}}}</span>}}
| data68a = {{{clubs34|}}}
| data68b = {{{caps34|}}}
| data68c = {{#if:{{{goals34|}}}|({{{goals34}}})}}
| label69 = {{#if:{{{clubs35|}}}|<span style="font-weight:normal">{{{years35|}}}</span>}}
| data69a = {{{clubs35|}}}
| data69b = {{{caps35|}}}
| data69c = {{#if:{{{goals35|}}}|({{{goals35}}})}}
| label70 = {{#if:{{{clubs36|}}}|<span style="font-weight:normal">{{{years36|}}}</span>}}
| data70a = {{{clubs36|}}}
| data70b = {{{caps36|}}}
| data70c = {{#if:{{{goals36|}}}|({{{goals36}}})}}
| label71 = {{#if:{{{clubs37|}}}|<span style="font-weight:normal">{{{years37|}}}</span>}}
| data71a = {{{clubs37|}}}
| data71b = {{{caps37|}}}
| data71c = {{#if:{{{goals37|}}}|({{{goals37}}})}}
| label72 = {{#if:{{{clubs38|}}}|<span style="font-weight:normal">{{{years38|}}}</span>}}
| data72a = {{{clubs38|}}}
| data72b = {{{caps38|}}}
| data72c = {{#if:{{{goals38|}}}|({{{goals38}}})}}
| label73 = {{#if:{{{clubs39|}}}|<span style="font-weight:normal">{{{years39|}}}</span>}}
| data73a = {{{clubs39|}}}
| data73b = {{{caps39|}}}
| data73c = {{#if:{{{goals39|}}}|({{{goals39}}})}}
| label74 = {{#if:{{{clubs40|}}}|<span style="font-weight:normal">{{{years40|}}}</span>}}
| data74a = {{{clubs40|}}}
| data74b = {{{caps40|}}}
| data74c = {{#if:{{{goals40|}}}|({{{goals40}}})}}
| label75 = {{#if:{{{clubs41|}}}|<span style="font-weight:normal">{{{years41|}}}</span>}}
| data75a = {{{clubs41|}}}
| data75b = {{{caps41|}}}
| data75c = {{#if:{{{goals41|}}}|({{{goals41}}})}}
| label76 = {{#if:{{{clubs42|}}}|<span style="font-weight:normal">{{{years42|}}}</span>}}
| data76a = {{{clubs42|}}}
| data76b = {{{caps42|}}}
| data76c = {{#if:{{{goals42|}}}|({{{goals42}}})}}
| label77 = {{#if:{{{clubs43|}}}|<span style="font-weight:normal">{{{years43|}}}</span>}}
| data77a = {{{clubs43|}}}
| data77b = {{{caps43|}}}
| data77c = {{#if:{{{goals43|}}}|({{{goals43}}})}}
| label78 = {{#if:{{{clubs44|}}}|<span style="font-weight:normal">{{{years44|}}}</span>}}
| data78a = {{{clubs44|}}}
| data78b = {{{caps44|}}}
| data78c = {{#if:{{{goals44|}}}|({{{goals44}}})}}
| label79 = {{#if:{{{clubs45|}}}|<span style="font-weight:normal">{{{years45|}}}</span>}}
| data79a = {{{clubs45|}}}
| data79b = {{{caps45|}}}
| data79c = {{#if:{{{goals45|}}}|({{{goals45}}})}}
| label80 = {{#if:{{{clubs46|}}}|<span style="font-weight:normal">{{{years46|}}}</span>}}
| data80a = {{{clubs46|}}}
| data80b = {{{caps46|}}}
| data80c = {{#if:{{{goals46|}}}|({{{goals46}}})}}
| label81 = {{#if:{{{clubs47|}}}|<span style="font-weight:normal">{{{years47|}}}</span>}}
| data81a = {{{clubs47|}}}
| data81b = {{{caps47|}}}
| data81c = {{#if:{{{goals47|}}}|({{{goals47}}})}}
| label82 = {{#if:{{{clubs48|}}}|<span style="font-weight:normal">{{{years48|}}}</span>}}
| data82a = {{{clubs48|}}}
| data82b = {{{caps48|}}}
| data82c = {{#if:{{{goals48|}}}|({{{goals48}}})}}
| label83 = {{#if:{{{clubs49|}}}|<span style="font-weight:normal">{{{years49|}}}</span>}}
| data83a = {{{clubs49|}}}
| data83b = {{{caps49|}}}
| data83c = {{#if:{{{goals49|}}}|({{{goals49}}})}}
| label84 = {{#if:{{{clubs50|}}}|<span style="font-weight:normal">{{{years50|}}}</span>}}
| data84a = {{{clubs50|}}}
| data84b = {{{caps50|}}}
| data84c = {{#if:{{{goals50|}}}|({{{goals50}}})}}
| label85 = {{#if:{{{clubs51|}}}|<span style="font-weight:normal">{{{years51|}}}</span>}}
| data85a = {{{clubs51|}}}
| data85b = {{{caps51|}}}
| data85c = {{#if:{{{goals51|}}}|({{{goals51}}})}}
| label86 = {{#if:{{{clubs52|}}}|<span style="font-weight:normal">{{{years52|}}}</span>}}
| data86a = {{{clubs52|}}}
| data86b = {{{caps52|}}}
| data86c = {{#if:{{{goals52|}}}|({{{goals52}}})}}
| label87 = Total
| data87b = {{#if:{{{totalcaps|}}}|'''{{{totalcaps}}}'''}}
| data87c = {{#if:{{{totalgoals|}}}|'''({{{totalgoals}}})'''}}
| header88 = {{#if:{{{nationalteam1|}}}|International career{{#if:{{{ntupdate|}}}{{{nationalteam-update|}}}|<sup>‡</sup> }} }}
| label89 = {{#if:{{{clubs1|}}}{{{college1|}}}||{{#if:{{{nationalteam1|}}}|Years}} }}
| data89a = {{#if:{{{clubs1|}}}{{{college1|}}}||'''Team''' }}
| data89b = {{#if:{{{clubs1|}}}{{{college1|}}}||'''{{abbr|Apps|National team appearances}}''' }}
| data89c = {{#if:{{{clubs1|}}}{{{college1|}}}||'''({{abbr|Gls|National team goals}})''' }}
| label90 = {{#if:{{{nationalteam1|}}}|<span style="font-weight:normal">{{{nationalyears1|}}}</span>}}
| data90a = {{{nationalteam1|}}}
| data90b = {{{nationalcaps1|}}}
| data90c = {{#if:{{{nationalgoals1|}}}|({{{nationalgoals1}}})}}
| label91 = {{#if:{{{nationalteam2|}}}|<span style="font-weight:normal">{{{nationalyears2|}}}</span>}}
| data91a = {{{nationalteam2|}}}
| data91b = {{{nationalcaps2|}}}
| data91c = {{#if:{{{nationalgoals2|}}}|({{{nationalgoals2}}})}}
| label92 = {{#if:{{{nationalteam3|}}}|<span style="font-weight:normal">{{{nationalyears3|}}}</span>}}
| data92a = {{{nationalteam3|}}}
| data92b = {{{nationalcaps3|}}}
| data92c = {{#if:{{{nationalgoals3|}}}|({{{nationalgoals3}}})}}
| label93 = {{#if:{{{nationalteam4|}}}|<span style="font-weight:normal">{{{nationalyears4|}}}</span>}}
| data93a = {{{nationalteam4|}}}
| data93b = {{{nationalcaps4|}}}
| data93c = {{#if:{{{nationalgoals4|}}}|({{{nationalgoals4}}})}}
| label94 = {{#if:{{{nationalteam5|}}}|<span style="font-weight:normal">{{{nationalyears5|}}}</span>}}
| data94a = {{{nationalteam5|}}}
| data94b = {{{nationalcaps5|}}}
| data94c = {{#if:{{{nationalgoals5|}}}|({{{nationalgoals5}}})}}
| label95 = {{#if:{{{nationalteam6|}}}|<span style="font-weight:normal">{{{nationalyears6|}}}</span>}}
| data95a = {{{nationalteam6|}}}
| data95b = {{{nationalcaps6|}}}
| data95c = {{#if:{{{nationalgoals6|}}}|({{{nationalgoals6}}})}}
| label96 = {{#if:{{{nationalteam7|}}}|<span style="font-weight:normal">{{{nationalyears7|}}}</span>}}
| data96a = {{{nationalteam7|}}}
| data96b = {{{nationalcaps7|}}}
| data96c = {{#if:{{{nationalgoals7|}}}|({{{nationalgoals7}}})}}
| label97 = {{#if:{{{nationalteam8|}}}|<span style="font-weight:normal">{{{nationalyears8|}}}</span>}}
| data97a = {{{nationalteam8|}}}
| data97b = {{{nationalcaps8|}}}
| data97c = {{#if:{{{nationalgoals8|}}}|({{{nationalgoals8}}})}}
| label98 = {{#if:{{{nationalteam9|}}}|<span style="font-weight:normal">{{{nationalyears9|}}}</span>}}
| data98a = {{{nationalteam9|}}}
| data98b = {{{nationalcaps9|}}}
| data98c = {{#if:{{{nationalgoals9|}}}|({{{nationalgoals9}}})}}
| label99 = {{#if:{{{nationalteam10|}}}|<span style="font-weight:normal">{{{nationalyears10|}}}</span>}}
| data99a = {{{nationalteam10|}}}
| data99b = {{{nationalcaps10|}}}
| data99c = {{#if:{{{nationalgoals10|}}}|({{{nationalgoals10}}})}}
| header100 = {{#if:{{{managerclubs1|}}}|Managerial career}}
| label101 = {{#if:{{{clubs1|}}}{{{nationalteam1|}}}{{{college1|}}}{{{youthclubs1|}}}||{{#if:{{{managerclubs1|}}}|Years}} }}
| data101 = {{#if:{{{clubs1|}}}{{{nationalteam1|}}}{{{college1|}}}{{{youthclubs1|}}}||{{#if:{{{managerclubs1|}}}|'''Team'''}} }}
| label102 = {{#if:{{{managerclubs1|}}}|<span style="font-weight:normal">{{{manageryears1|}}}</span>}}
| data102 = {{{managerclubs1|}}}
| label103 = {{#if:{{{managerclubs2|}}}|<span style="font-weight:normal">{{{manageryears2|}}}</span>}}
| data103 = {{{managerclubs2|}}}
| label104 = {{#if:{{{managerclubs3|}}}|<span style="font-weight:normal">{{{manageryears3|}}}</span>}}
| data104 = {{{managerclubs3|}}}
| label105 = {{#if:{{{managerclubs4|}}}|<span style="font-weight:normal">{{{manageryears4|}}}</span>}}
| data105 = {{{managerclubs4|}}}
| label106 = {{#if:{{{managerclubs5|}}}|<span style="font-weight:normal">{{{manageryears5|}}}</span>}}
| data106 = {{{managerclubs5|}}}
| label107 = {{#if:{{{managerclubs6|}}}|<span style="font-weight:normal">{{{manageryears6|}}}</span>}}
| data107 = {{{managerclubs6|}}}
| label108 = {{#if:{{{managerclubs7|}}}|<span style="font-weight:normal">{{{manageryears7|}}}</span>}}
| data108 = {{{managerclubs7|}}}
| label109 = {{#if:{{{managerclubs8|}}}|<span style="font-weight:normal">{{{manageryears8|}}}</span>}}
| data109 = {{{managerclubs8|}}}
| label110 = {{#if:{{{managerclubs9|}}}|<span style="font-weight:normal">{{{manageryears9|}}}</span>}}
| data110 = {{{managerclubs9|}}}
| label111 = {{#if:{{{managerclubs10|}}}|<span style="font-weight:normal">{{{manageryears10|}}}</span>}}
| data111 = {{{managerclubs10|}}}
| label112 = {{#if:{{{managerclubs11|}}}|<span style="font-weight:normal">{{{manageryears11|}}}</span>}}
| data112 = {{{managerclubs11|}}}
| label113 = {{#if:{{{managerclubs12|}}}|<span style="font-weight:normal">{{{manageryears12|}}}</span>}}
| data113 = {{{managerclubs12|}}}
| label114 = {{#if:{{{managerclubs13|}}}|<span style="font-weight:normal">{{{manageryears13|}}}</span>}}
| data114 = {{{managerclubs13|}}}
| label115 = {{#if:{{{managerclubs14|}}}|<span style="font-weight:normal">{{{manageryears14|}}}</span>}}
| data115 = {{{managerclubs14|}}}
| label116 = {{#if:{{{managerclubs15|}}}|<span style="font-weight:normal">{{{manageryears15|}}}</span>}}
| data116 = {{{managerclubs15|}}}
| label117 = {{#if:{{{managerclubs16|}}}|<span style="font-weight:normal">{{{manageryears16|}}}</span>}}
| data117 = {{{managerclubs16|}}}
| label118 = {{#if:{{{managerclubs17|}}}|<span style="font-weight:normal">{{{manageryears17|}}}</span>}}
| data118 = {{{managerclubs17|}}}
| label119 = {{#if:{{{managerclubs18|}}}|<span style="font-weight:normal">{{{manageryears18|}}}</span>}}
| data119 = {{{managerclubs18|}}}
| label120 = {{#if:{{{managerclubs19|}}}|<span style="font-weight:normal">{{{manageryears19|}}}</span>}}
| data120 = {{{managerclubs19|}}}
| label121 = {{#if:{{{managerclubs20|}}}|<span style="font-weight:normal">{{{manageryears20|}}}</span>}}
| data121 = {{{managerclubs20|}}}
| label122 = {{#if:{{{managerclubs21|}}}|<span style="font-weight:normal">{{{manageryears21|}}}</span>}}
| data122 = {{{managerclubs21|}}}
| label123 = {{#if:{{{managerclubs22|}}}|<span style="font-weight:normal">{{{manageryears22|}}}</span>}}
| data123 = {{{managerclubs22|}}}
| label124 = {{#if:{{{managerclubs23|}}}|<span style="font-weight:normal">{{{manageryears23|}}}</span>}}
| data124 = {{{managerclubs23|}}}
| label125 = {{#if:{{{managerclubs24|}}}|<span style="font-weight:normal">{{{manageryears24|}}}</span>}}
| data125 = {{{managerclubs24|}}}
| label126 = {{#if:{{{managerclubs25|}}}|<span style="font-weight:normal">{{{manageryears25|}}}</span>}}
| data126 = {{{managerclubs25|}}}
| label127 = {{#if:{{{managerclubs26|}}}|<span style="font-weight:normal">{{{manageryears26|}}}</span>}}
| data127 = {{{managerclubs26|}}}
| label128 = {{#if:{{{managerclubs27|}}}|<span style="font-weight:normal">{{{manageryears27|}}}</span>}}
| data128 = {{{managerclubs27|}}}
| label129 = {{#if:{{{managerclubs28|}}}|<span style="font-weight:normal">{{{manageryears28|}}}</span>}}
| data129 = {{{managerclubs28|}}}
| label130 = {{#if:{{{managerclubs29|}}}|<span style="font-weight:normal">{{{manageryears29|}}}</span>}}
| data130 = {{{managerclubs29|}}}
| label131 = {{#if:{{{managerclubs30|}}}|<span style="font-weight:normal">{{{manageryears30|}}}</span>}}
| data131 = {{{managerclubs30|}}}
| label132 = {{#if:{{{managerclubs31|}}}|<span style="font-weight:normal">{{{manageryears31|}}}</span>}}
| data132 = {{{managerclubs31|}}}
| label133 = {{#if:{{{managerclubs32|}}}|<span style="font-weight:normal">{{{manageryears32|}}}</span>}}
| data133 = {{{managerclubs32|}}}
| label134 = {{#if:{{{managerclubs33|}}}|<span style="font-weight:normal">{{{manageryears33|}}}</span>}}
| data134 = {{{managerclubs33|}}}
| label135 = {{#if:{{{managerclubs34|}}}|<span style="font-weight:normal">{{{manageryears34|}}}</span>}}
| data135 = {{{managerclubs34|}}}
| label136 = {{#if:{{{managerclubs35|}}}|<span style="font-weight:normal">{{{manageryears35|}}}</span>}}
| data136 = {{{managerclubs35|}}}
| label137 = {{#if:{{{managerclubs36|}}}|<span style="font-weight:normal">{{{manageryears36|}}}</span>}}
| data137 = {{{managerclubs36|}}}
| label138 = {{#if:{{{managerclubs37|}}}|<span style="font-weight:normal">{{{manageryears37|}}}</span>}}
| data138 = {{{managerclubs37|}}}
| label139 = {{#if:{{{managerclubs38|}}}|<span style="font-weight:normal">{{{manageryears38|}}}</span>}}
| data139 = {{{managerclubs38|}}}
| label140 = {{#if:{{{managerclubs39|}}}|<span style="font-weight:normal">{{{manageryears39|}}}</span>}}
| data140 = {{{managerclubs39|}}}
| label141 = {{#if:{{{managerclubs40|}}}|<span style="font-weight:normal">{{{manageryears40|}}}</span>}}
| data141 = {{{managerclubs40|}}}
| label142 = {{#if:{{{managerclubs41|}}}|<span style="font-weight:normal">{{{manageryears41|}}}</span>}}
| data142 = {{{managerclubs41|}}}
| label143 = {{#if:{{{managerclubs42|}}}|<span style="font-weight:normal">{{{manageryears42|}}}</span>}}
| data143 = {{{managerclubs42|}}}
| label144 = {{#if:{{{managerclubs43|}}}|<span style="font-weight:normal">{{{manageryears43|}}}</span>}}
| data144 = {{{managerclubs43|}}}
| label145 = {{#if:{{{managerclubs44|}}}|<span style="font-weight:normal">{{{manageryears44|}}}</span>}}
| data145 = {{{managerclubs44|}}}
| label146 = {{#if:{{{managerclubs45|}}}|<span style="font-weight:normal">{{{manageryears45|}}}</span>}}
| data146 = {{{managerclubs45|}}}
| label147 = {{#if:{{{managerclubs46|}}}|<span style="font-weight:normal">{{{manageryears46|}}}</span>}}
| data147 = {{{managerclubs46|}}}
| label148 = {{#if:{{{managerclubs47|}}}|<span style="font-weight:normal">{{{manageryears47|}}}</span>}}
| data148 = {{{managerclubs47|}}}
| label149 = {{#if:{{{managerclubs48|}}}|<span style="font-weight:normal">{{{manageryears48|}}}</span>}}
| data149 = {{{managerclubs48|}}}
| label150 = {{#if:{{{managerclubs49|}}}|<span style="font-weight:normal">{{{manageryears49|}}}</span>}}
| data150 = {{{managerclubs49|}}}
| label151 = {{#if:{{{managerclubs50|}}}|<span style="font-weight:normal">{{{manageryears50|}}}</span>}}
| data151 = {{{managerclubs50|}}}
| label152 = {{#if:{{{managerclubs51|}}}|<span style="font-weight:normal">{{{manageryears51|}}}</span>}}
| data152 = {{{managerclubs51|}}}
| label153 = {{#if:{{{managerclubs52|}}}|<span style="font-weight:normal">{{{manageryears52|}}}</span>}}
| data153 = {{{managerclubs52|}}}
| label154 = {{#if:{{{managerclubs53|}}}|<span style="font-weight:normal">{{{manageryears53|}}}</span>}}
| data154 = {{{managerclubs53|}}}
| label155 = {{#if:{{{managerclubs54|}}}|<span style="font-weight:normal">{{{manageryears54|}}}</span>}}
| data155 = {{{managerclubs54|}}}
| label156 = {{#if:{{{managerclubs55|}}}|<span style="font-weight:normal">{{{manageryears55|}}}</span>}}
| data156 = {{{managerclubs55|}}}
| label157 = {{#if:{{{managerclubs56|}}}|<span style="font-weight:normal">{{{manageryears56|}}}</span>}}
| data157 = {{{managerclubs56|}}}
| label158 = {{#if:{{{managerclubs57|}}}|<span style="font-weight:normal">{{{manageryears57|}}}</span>}}
| data158 = {{{managerclubs57|}}}
| label159 = {{#if:{{{managerclubs58|}}}|<span style="font-weight:normal">{{{manageryears58|}}}</span>}}
| data159 = {{{managerclubs58|}}}
| label160 = {{#if:{{{managerclubs59|}}}|<span style="font-weight:normal">{{{manageryears59|}}}</span>}}
| data160 = {{{managerclubs59|}}}
| label161 = {{#if:{{{managerclubs60|}}}|<span style="font-weight:normal">{{{manageryears60|}}}</span>}}
| data161 = {{{managerclubs60|}}}
| label162 = {{#if:{{{managerclubs61|}}}|<span style="font-weight:normal">{{{manageryears61|}}}</span>}}
| data162 = {{{managerclubs61|}}}
| label163 = {{#if:{{{managerclubs62|}}}|<span style="font-weight:normal">{{{manageryears62|}}}</span>}}
| data163 = {{{managerclubs62|}}}
| label164 = {{#if:{{{managerclubs63|}}}|<span style="font-weight:normal">{{{manageryears63|}}}</span>}}
| data164 = {{{managerclubs63|}}}
| label165 = {{#if:{{{managerclubs64|}}}|<span style="font-weight:normal">{{{manageryears64|}}}</span>}}
| data165 = {{{managerclubs64|}}}
| label166 = {{#if:{{{managerclubs65|}}}|<span style="font-weight:normal">{{{manageryears65|}}}</span>}}
| data166 = {{{managerclubs65|}}}
| label167 = {{#if:{{{managerclubs66|}}}|<span style="font-weight:normal">{{{manageryears66|}}}</span>}}
| data167 = {{{managerclubs66|}}}
| label168 = {{#if:{{{managerclubs67|}}}|<span style="font-weight:normal">{{{manageryears67|}}}</span>}}
| data168 = {{{managerclubs67|}}}
| label169 = {{#if:{{{managerclubs68|}}}|<span style="font-weight:normal">{{{manageryears68|}}}</span>}}
| data169 = {{{managerclubs68|}}}
| label170 = {{#if:{{{managerclubs69|}}}|<span style="font-weight:normal">{{{manageryears69|}}}</span>}}
| data170 = {{{managerclubs69|}}}
| label171 = {{#if:{{{managerclubs70|}}}|<span style="font-weight:normal">{{{manageryears70|}}}</span>}}
| data171 = {{{managerclubs70|}}}
| label172 = {{#if:{{{managerclubs71|}}}|<span style="font-weight:normal">{{{manageryears71|}}}</span>}}
| data172 = {{{managerclubs71|}}}
| label173 = {{#if:{{{managerclubs72|}}}|<span style="font-weight:normal">{{{manageryears72|}}}</span>}}
| data173 = {{{managerclubs72|}}}
| label174 = {{#if:{{{managerclubs73|}}}|<span style="font-weight:normal">{{{manageryears73|}}}</span>}}
| data174 = {{{managerclubs73|}}}
| label175 = {{#if:{{{managerclubs74|}}}|<span style="font-weight:normal">{{{manageryears74|}}}</span>}}
| data175 = {{{managerclubs74|}}}
| label176 = {{#if:{{{managerclubs75|}}}|<span style="font-weight:normal">{{{manageryears75|}}}</span>}}
| data176 = {{{managerclubs75|}}}
| label177 = {{#if:{{{managerclubs76|}}}|<span style="font-weight:normal">{{{manageryears76|}}}</span>}}
| data177 = {{{managerclubs76|}}}
| label178 = {{#if:{{{managerclubs77|}}}|<span style="font-weight:normal">{{{manageryears77|}}}</span>}}
| data178 = {{{managerclubs77|}}}
| label179 = {{#if:{{{managerclubs78|}}}|<span style="font-weight:normal">{{{manageryears78|}}}</span>}}
| data179 = {{{managerclubs78|}}}
| label180 = {{#if:{{{managerclubs79|}}}|<span style="font-weight:normal">{{{manageryears79|}}}</span>}}
| data180 = {{{managerclubs79|}}}
| label181 = {{#if:{{{managerclubs80|}}}|<span style="font-weight:normal">{{{manageryears80|}}}</span>}}
| data181 = {{{managerclubs80|}}}
| header182 = {{Infobox medal templates
|title = Medal record
|medals = {{{medaltemplates|}}}
|expand = {{yesno|{{{medaltemplates-expand|}}}}}
}}
| data183 = {{#if:{{{module|}}}|<nowiki />
{{{!}} style="text-align:left; width:100%; margin:0; border-spacing:0; line-height: normal"
{{!}}-
{{!}}
{{{module|}}}
{{!}}}
}}
| belowstyle = color:darkslategray;
| below = {{br separated entries
| 1 = {{#if:{{{clubs1|}}}|<nowiki>*</nowiki> Club domestic league appearances and goals{{#if:{{{pcupdate|}}}{{{club-update|}}}| as of {{if empty|{{{pcupdate|}}}|{{{club-update}}}}}}} }}
| 2 = {{#if:{{{ntupdate|}}}{{{nationalteam-update|}}}|‡ National team caps and goals as of {{if empty|{{{ntupdate|}}}|{{{nationalteam-update}}}}} }}
}}
}}<includeonly><!--
-->{{#if:{{{height|}}}|{{main other|{{#invoke:Check height|main|{{{height}}}|metric=m|cat=Pages using infobox football biography with height issues}}}}}}<!--
-->{{#if:{{{clubnumber|}}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:String|replace|source={{{clubnumber}}}|pattern=%c'"`UNIQ%-%-ref%-.-%-QINU`"'%c|replace=|plain=false}}|pattern=^[1-9]%d?$|nomatch=n}}|n|{{main other|[[Category:Pages using infobox football biography with invalid clubnumber]]}}}}}}<!--
-->{{#ifeq:{{Yesno|{{if empty|{{{embed|}}}|no}}}}|yes||{{Wikidata image|1={{{image|}}}|2={{{nocat_wdimage|}}} }} }}<!--
-->{{#if:{{{module|}}}|{{main other|[[Category:Pages using infobox football biography with a module]]}}}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox football biography with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox football biography]] with unknown parameter "_VALUE_"| alt | birth_date | birth_name | birth_place | caption | club-update | clubnumber | currentclub | death_date | death_place | embed | embed-header | full_name | fullname | header-color | height | image | image_size | medaltemplates | medaltemplates-expand | module | name | nationalteam-update | nocat_wdimage | ntupdate | pcupdate | position | upright
| regexp1 = youthyears[1-9] | regexp2 = youthclubs[1-9]
| regexp3 = youthyears1[0-2] | regexp4 = youthclubs1[0-2]
| regexp5 = collegeyears[1-4] | regexp6 = college[1-4] | regexp7 = collegecaps[1-4] | regexp8 = collegegoals[1-4]
| regexp9 = years[1-9] | regexp10 = clubs[1-9] | regexp11 = caps[1-9] | regexp12 = goals[1-9]
| regexp13 = years[1-4][%d] | regexp14 = clubs[1-4][%d] | regexp15 = caps[1-4][%d] | regexp16 = goals[1-4][%d]
| regexp17 = years5[0-2] | regexp18 = clubs5[0-2] | regexp19 = caps5[0-2] | regexp20 = goals5[0-2]
| totalcaps | totalgoals
| regexp21 = nationalyears[1-9] | regexp22 = nationalteam[1-9] | regexp23 = nationalcaps[1-9] | regexp24 = nationalgoals[1-9]
| nationalyears10 | nationalteam10 | nationalcaps10 | nationalgoals10
| regexp25 = manageryears[1-9] | regexp26 = managerclubs[1-9]
| regexp27 = manageryears[1-7][%d] | regexp28 = managerclubs[1-7][%d]
| manageryears80 | managerclubs80
}}</includeonly>{{#invoke:Check for conflicting parameters|check
| template = [[Template:Infobox football biography]]
| cat = {{main other|Category:Pages using infobox football biography with conflicting parameters}}
| full_name; fullname
| pcupdate; club-update
| ntupdate; nationalteam-update
}}<noinclude>
{{documentation}}
</noinclude>
85o309nwaqiwo4brymn10bq4hxalodi
Template:Mono
10
8637
73930
2019-10-13T01:15:06Z
Izno
8419
implement ifsubst
73930
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
eyigcpktddtgno85j4vajm121b6hlip
73931
73930
2026-07-11T18:59:28Z
Robertsky
10424
1 versaun husi [[:en:Template:Mono]]
73930
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
eyigcpktddtgno85j4vajm121b6hlip
Template:Mono/styles.css
10
8638
73932
2019-03-04T00:01:15Z
Pppery
11644
Adding protection template
73932
sanitized-css
text/css
/* {{pp-template}} */
.monospaced {
/* "monospace, monospace" per [[WP:MONO]] */
font-family: monospace, monospace;
}
np4jqak6c9salmg4ht0lxddkoh7wqt0
73933
73932
2026-07-11T18:59:28Z
Robertsky
10424
1 versaun husi [[:en:Template:Mono/styles.css]]
73932
sanitized-css
text/css
/* {{pp-template}} */
.monospaced {
/* "monospace, monospace" per [[WP:MONO]] */
font-family: monospace, monospace;
}
np4jqak6c9salmg4ht0lxddkoh7wqt0
Template:Hidden begin
10
8639
73934
2025-10-04T17:15:00Z
Jonesey95
11668
fix text color in dark mode; this generally works but may cause problems, in which case revert or try specifying a different CSS value
73934
wikitext
text/x-wiki
<includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};color:inherit;}} {{{style|}}}"><!--
--><div class="hidden-title skin-nightmode-reset-color" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}} {{#if:{{{titlebgcolor|}}}|background-color:{{{titlebgcolor}}};color:inherit;}} {{{titlestyle|}}}">{{{title|{{{header|}}}}}}</div><!--
--><div class="hidden-content mw-collapsible-content" style="{{#if:{{{ta2|}}}|text-align:{{{ta2}}};}} {{#if:{{{contentbgcolor|}}}|background-color:{{{contentbgcolor}}};color:inherit;}} {{{contentstyle|{{{bodystyle|}}}}}}"><!--
Content added after the template
--></includeonly><noinclude>
{{Documentation}}
</noinclude>
3fk8uj9th66zvww6bd58rbapuyb6ij4
73935
73934
2026-07-11T18:59:29Z
Robertsky
10424
1 versaun husi [[:en:Template:Hidden_begin]]
73934
wikitext
text/x-wiki
<includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};color:inherit;}} {{{style|}}}"><!--
--><div class="hidden-title skin-nightmode-reset-color" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}} {{#if:{{{titlebgcolor|}}}|background-color:{{{titlebgcolor}}};color:inherit;}} {{{titlestyle|}}}">{{{title|{{{header|}}}}}}</div><!--
--><div class="hidden-content mw-collapsible-content" style="{{#if:{{{ta2|}}}|text-align:{{{ta2}}};}} {{#if:{{{contentbgcolor|}}}|background-color:{{{contentbgcolor}}};color:inherit;}} {{{contentstyle|{{{bodystyle|}}}}}}"><!--
Content added after the template
--></includeonly><noinclude>
{{Documentation}}
</noinclude>
3fk8uj9th66zvww6bd58rbapuyb6ij4
Template:Hidden end
10
8640
73936
2022-12-12T14:54:45Z
Terasail
11767
Only noinclude once
73936
wikitext
text/x-wiki
<includeonly></div></div></includeonly><noinclude>
{{hatnote|Templates {{noredirect|Template:End hidden|End hidden}} and {{noredirect|Template:End hidden section|End hidden section}} redirect here.}}
{{Documentation|Template:Hidden begin/doc}}
</noinclude>
cpg1p4ge0ds1gb2obatbf2gvwrfngz6
73937
73936
2026-07-11T18:59:29Z
Robertsky
10424
1 versaun husi [[:en:Template:Hidden_end]]
73936
wikitext
text/x-wiki
<includeonly></div></div></includeonly><noinclude>
{{hatnote|Templates {{noredirect|Template:End hidden|End hidden}} and {{noredirect|Template:End hidden section|End hidden section}} redirect here.}}
{{Documentation|Template:Hidden begin/doc}}
</noinclude>
cpg1p4ge0ds1gb2obatbf2gvwrfngz6
Template:Convinfobox
10
8641
73938
2024-06-22T15:53:03Z
Hike395
11700
Restored revision 1230406945 by [[Special:Contributions/Hike395|Hike395]] ([[User talk:Hike395|talk]]): Lua version again: passes all values to {{convert}}, doesn't filter
73938
wikitext
text/x-wiki
{{#invoke:ConvertIB|convert}}<noinclude>{{documentation}}</noinclude>
kg7aax967oy52t5apd4ectiojcwz3nb
73939
73938
2026-07-11T18:59:29Z
Robertsky
10424
1 versaun husi [[:en:Template:Convinfobox]]
73938
wikitext
text/x-wiki
{{#invoke:ConvertIB|convert}}<noinclude>{{documentation}}</noinclude>
kg7aax967oy52t5apd4ectiojcwz3nb
Template:Infobox medal templates
10
8642
73940
2025-10-26T07:19:22Z
Zackmann08
11656
Adding unknown parameter tracking through [[:Category:Pages using infobox medal templates with unknown parameters]] using [[User:Zackmann08/AddCheckForUnknownParameters.js|AddCheckForUnknownParameters]] and [[Module:check for unknown parameters]]
73940
wikitext
text/x-wiki
{{#if:{{{medals|}}}|<div class="mw-collapsible {{#if:{{{expand|}}}||mw-collapsed}}" style="text-align:center; font-size:95%">
<div class="skin-nightmode-reset-color" style="line-height:1.6em; font-size:105%; {{{titlestyle|}}}"><!--
--><div style="margin:0 4em;">{{#if:{{{title|}}}|{{{title}}}|Medal record}}</div><!--
--></div>
<div class="mw-collapsible-content" style="font-size:105%"><templatestyles src="infobox/mobileviewfix.css"/>
{{{!}} class="skin-nightmode-reset-color" style="width:100%; background-color:#f9f9f9; color:#000000; font-weight:normal"
{{!}} colspan="2" style="padding:0" {{!}}
{{{medals}}}
{{!}}}
</div></div>
}}{{#if:{{#invoke:string2|startswith|1={{{medal_templates|}}} |2={{{!}} }}|[[Category:Infobox medal templates requiring repair]]|}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox medal templates with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox medal templates]] with unknown parameter "_VALUE_"|ignoreblank=y| expand | medal_templates | medals | title | titlestyle }}<noinclude>{{documentation}}</noinclude>
reta8hl80g7yp7ukship2clmsulfsoo
73941
73940
2026-07-11T18:59:29Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_medal_templates]]
73940
wikitext
text/x-wiki
{{#if:{{{medals|}}}|<div class="mw-collapsible {{#if:{{{expand|}}}||mw-collapsed}}" style="text-align:center; font-size:95%">
<div class="skin-nightmode-reset-color" style="line-height:1.6em; font-size:105%; {{{titlestyle|}}}"><!--
--><div style="margin:0 4em;">{{#if:{{{title|}}}|{{{title}}}|Medal record}}</div><!--
--></div>
<div class="mw-collapsible-content" style="font-size:105%"><templatestyles src="infobox/mobileviewfix.css"/>
{{{!}} class="skin-nightmode-reset-color" style="width:100%; background-color:#f9f9f9; color:#000000; font-weight:normal"
{{!}} colspan="2" style="padding:0" {{!}}
{{{medals}}}
{{!}}}
</div></div>
}}{{#if:{{#invoke:string2|startswith|1={{{medal_templates|}}} |2={{{!}} }}|[[Category:Infobox medal templates requiring repair]]|}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox medal templates with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox medal templates]] with unknown parameter "_VALUE_"|ignoreblank=y| expand | medal_templates | medals | title | titlestyle }}<noinclude>{{documentation}}</noinclude>
reta8hl80g7yp7ukship2clmsulfsoo
Template:Medal
10
8643
73942
2025-10-05T00:08:07Z
Jonesey95
11668
fix text color in dark mode; this generally works but may cause problems, in which case revert or try specifying a different CSS value
73942
wikitext
text/x-wiki
<noinclude>
{|
</noinclude>
|-
{{#switch: {{{1}}}
|Sport|Team|Country|Independent = ! colspan="3" style="text-align:center;vertical-align:middle;background-color:#eeeeee;color:inherit;
|Competition|Comp|Olympic|Olympics|WorldChampionships|EuropeanChampionships = ! colspan="3" style="text-align:center;vertical-align:middle;background-color:#cccccc;color:inherit;
|#default = {{!}} style="text-align:center;vertical-align:middle;color:inherit;
}}{{#switch: {{{1}}}
| Gold | G = " {{!}} [[File:Gold medal icon (G initial).svg|16px|Gold medal – first place|link=]]
| Silver | S = " {{!}} [[File:Silver medal icon (S initial).svg|16px|Silver medal – second place|link=]]
| Bronze | B = " {{!}} [[File:Bronze medal icon (B initial).svg|16px|Bronze medal – third place|link=]]
| Winner | W = background-color:gold;color:inherit;" {{!}} '''Winner'''{{Main other|[[Category:Articles using Template:Medal with Winner]]}}
| Runner-up | Runnerup | RU = background-color:silver;color:inherit;" {{!}} '''Runner-up'''{{Main other|[[Category:Articles using Template:Medal with Runner-up]]}}
| First | 1st = " {{!}} [[File:Gold medal icon.svg|16px|First place|link=]]
| Second | 2nd = " {{!}} [[File:Silver medal icon.svg|16px|Second place|link=]]
| Third | 3rd = " {{!}} [[File:Bronze medal icon.svg|16px|Third place|link=]]
| Disqualified | DQ = background-color:pink;color:inherit;" {{!}} '''Disqualified'''
| TrueSpirit | PdC = background-color:white;color:inherit;" {{!}} [[File:Olympic_rings.svg|30px]]{{!!}}style="background-color:white;color:inherit;" {{!}}'''[[Pierre de Coubertin medal]]'''
| Olympics | Olympic = " {{!}} <span class="nowrap">[[Olympic Games]]</span>
| WorldChampionships = " {{!}} <span class="nowrap">World Championships</span>
| EuropeanChampionships = " {{!}} <span class="nowrap">European Championships</span>
| Competition | Comp | Sport = " {{!}} <span class="nowrap">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
| Team = " class="adr" {{!}} <span class="country-name">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
| Country = " class="adr" {{!}} Representing <span class="country-name">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
| Independent = " class="adr" {{!}} Competed as an <span class="country-name">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
| #default = " {{!}}   {{Main other|[[Category:Articles using Template:Medal with unrecognised first positional argument]]}}
}}{{#switch: {{{1}}}
|Competition|Comp|Sport|Team|Olympic|Olympics|WorldChampionships|EuropeanChampionships|Country|Independent=
|#default = {{!!}} style="text-align:center;vertical-align:middle;" {{!}} <span class="nowrap">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
}}{{#switch: {{{1}}}
|Competition|Comp|Sport|Team|Olympic|Olympics|WorldChampionships|EuropeanChampionships|Country|Independent|TrueSpirit|PdC=
|#default = {{!!}} style="text-align:center;vertical-align:middle;" {{!}} {{trim|{{{3|}}}}}{{Main other|{{#if:{{{3|}}}||{{#if:{{{3}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}}}<noinclude>
|}
{{documentation}}
</noinclude>
3tefolkdppgblskiyt05bdo3591t26m
73943
73942
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Medal]]
73942
wikitext
text/x-wiki
<noinclude>
{|
</noinclude>
|-
{{#switch: {{{1}}}
|Sport|Team|Country|Independent = ! colspan="3" style="text-align:center;vertical-align:middle;background-color:#eeeeee;color:inherit;
|Competition|Comp|Olympic|Olympics|WorldChampionships|EuropeanChampionships = ! colspan="3" style="text-align:center;vertical-align:middle;background-color:#cccccc;color:inherit;
|#default = {{!}} style="text-align:center;vertical-align:middle;color:inherit;
}}{{#switch: {{{1}}}
| Gold | G = " {{!}} [[File:Gold medal icon (G initial).svg|16px|Gold medal – first place|link=]]
| Silver | S = " {{!}} [[File:Silver medal icon (S initial).svg|16px|Silver medal – second place|link=]]
| Bronze | B = " {{!}} [[File:Bronze medal icon (B initial).svg|16px|Bronze medal – third place|link=]]
| Winner | W = background-color:gold;color:inherit;" {{!}} '''Winner'''{{Main other|[[Category:Articles using Template:Medal with Winner]]}}
| Runner-up | Runnerup | RU = background-color:silver;color:inherit;" {{!}} '''Runner-up'''{{Main other|[[Category:Articles using Template:Medal with Runner-up]]}}
| First | 1st = " {{!}} [[File:Gold medal icon.svg|16px|First place|link=]]
| Second | 2nd = " {{!}} [[File:Silver medal icon.svg|16px|Second place|link=]]
| Third | 3rd = " {{!}} [[File:Bronze medal icon.svg|16px|Third place|link=]]
| Disqualified | DQ = background-color:pink;color:inherit;" {{!}} '''Disqualified'''
| TrueSpirit | PdC = background-color:white;color:inherit;" {{!}} [[File:Olympic_rings.svg|30px]]{{!!}}style="background-color:white;color:inherit;" {{!}}'''[[Pierre de Coubertin medal]]'''
| Olympics | Olympic = " {{!}} <span class="nowrap">[[Olympic Games]]</span>
| WorldChampionships = " {{!}} <span class="nowrap">World Championships</span>
| EuropeanChampionships = " {{!}} <span class="nowrap">European Championships</span>
| Competition | Comp | Sport = " {{!}} <span class="nowrap">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
| Team = " class="adr" {{!}} <span class="country-name">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
| Country = " class="adr" {{!}} Representing <span class="country-name">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
| Independent = " class="adr" {{!}} Competed as an <span class="country-name">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
| #default = " {{!}}   {{Main other|[[Category:Articles using Template:Medal with unrecognised first positional argument]]}}
}}{{#switch: {{{1}}}
|Competition|Comp|Sport|Team|Olympic|Olympics|WorldChampionships|EuropeanChampionships|Country|Independent=
|#default = {{!!}} style="text-align:center;vertical-align:middle;" {{!}} <span class="nowrap">{{trim|{{{2|}}}}}</span>{{Main other|{{#if:{{{2|}}}||{{#if:{{{2}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}
}}{{#switch: {{{1}}}
|Competition|Comp|Sport|Team|Olympic|Olympics|WorldChampionships|EuropeanChampionships|Country|Independent|TrueSpirit|PdC=
|#default = {{!!}} style="text-align:center;vertical-align:middle;" {{!}} {{trim|{{{3|}}}}}{{Main other|{{#if:{{{3|}}}||{{#if:{{{3}}}|[[Category:Articles using Template:Medal missing an expected parameter]]}}}}}}}}<noinclude>
|}
{{documentation}}
</noinclude>
3tefolkdppgblskiyt05bdo3591t26m
Template:Fraction/styles.css
10
8644
73944
2023-05-15T17:30:42Z
Izno
8419
clip-path now supported
73944
sanitized-css
text/css
/* {{pp|small=y}} */
.frac {
white-space: nowrap;
}
.frac .num,
.frac .den {
font-size: 80%;
line-height: 0; /* we want this inline */
vertical-align: super;
}
.frac .den {
vertical-align: sub;
}
/* [[Template:Screen reader-only]] is canonical implementation onwiki */
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
clip-path: polygon(0px 0px, 0px 0px, 0px 0px);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
/* white-space: nowrap; /* already have nowrap above */
}
kupllpfs310n1rzl5neixn869f4spyp
73945
73944
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Fraction/styles.css]]
73944
sanitized-css
text/css
/* {{pp|small=y}} */
.frac {
white-space: nowrap;
}
.frac .num,
.frac .den {
font-size: 80%;
line-height: 0; /* we want this inline */
vertical-align: super;
}
.frac .den {
vertical-align: sub;
}
/* [[Template:Screen reader-only]] is canonical implementation onwiki */
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
clip-path: polygon(0px 0px, 0px 0px, 0px 0px);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
/* white-space: nowrap; /* already have nowrap above */
}
kupllpfs310n1rzl5neixn869f4spyp
Template:Age
10
8645
73946
2021-02-06T06:09:01Z
Johnuniq
11653
fix to not display confusing "0" on Template:Age per request
73946
wikitext
text/x-wiki
<includeonly>{{#invoke:age|age_generic|template=age_full_years}}</includeonly><noinclude>{{documentation}}</noinclude>
7ja0eus7qdx5cxy7ni0lo2ih7pb00lj
73947
73946
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Age]]
73946
wikitext
text/x-wiki
<includeonly>{{#invoke:age|age_generic|template=age_full_years}}</includeonly><noinclude>{{documentation}}</noinclude>
7ja0eus7qdx5cxy7ni0lo2ih7pb00lj
Template:Date-mf
10
8646
73948
2021-06-15T17:09:49Z
Frietjes
11686
reduce complexity by using padleft: parserfunction directly
73948
wikitext
text/x-wiki
{{#ifeq:{{{test| }}}| ||{{{up-date}}}}}{{#if:{{{2|}}}|{{{2}}}|{{{1|}}}{{#ifeq:{{{BCE| }}}| ||BCE}}}}<!-- BELOW FOR hCalendar/vevent
--><span style="display:none"> (<span class="{{{class|dtstart}}} {{{class-extra|}}}">{{#ifeq:{{{ISO8601| }}}| |{{#ifeq:{{{BCE| }}}| ||-}}{{padleft:{{#expr:{{#time:Y|{{#ifeq:{{{class|dtend}}}|dtend|{{#titleparts:{{{up-date|/-m-d/+1 hour ,}}}|1|3}}}}{{#titleparts:{{{up-date|/-m-d/+1 hour ,}}}|1|1}}}}-3000 }}|4|0}}{{#time:{{#titleparts:{{{up-date|/-m-d/+1 hour ,}}}|1|2}}|{{#ifeq:{{{class|dtend}}}|dtend|{{#titleparts:{{{up-date|/-m-d/+1 hour ,}}}|1|3}}}}{{#titleparts:{{{up-date|/-m-d}}}|1|1}}}}{{#ifeq:{{{timezone| }}}| ||Z}}|{{{ISO8601|}}}}}</span>)</span><noinclude>
{{documentation}}
</noinclude>
0up47z3b5aifjx4toi38dpusqqch0d6
73949
73948
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Date-mf]]
73948
wikitext
text/x-wiki
{{#ifeq:{{{test| }}}| ||{{{up-date}}}}}{{#if:{{{2|}}}|{{{2}}}|{{{1|}}}{{#ifeq:{{{BCE| }}}| ||BCE}}}}<!-- BELOW FOR hCalendar/vevent
--><span style="display:none"> (<span class="{{{class|dtstart}}} {{{class-extra|}}}">{{#ifeq:{{{ISO8601| }}}| |{{#ifeq:{{{BCE| }}}| ||-}}{{padleft:{{#expr:{{#time:Y|{{#ifeq:{{{class|dtend}}}|dtend|{{#titleparts:{{{up-date|/-m-d/+1 hour ,}}}|1|3}}}}{{#titleparts:{{{up-date|/-m-d/+1 hour ,}}}|1|1}}}}-3000 }}|4|0}}{{#time:{{#titleparts:{{{up-date|/-m-d/+1 hour ,}}}|1|2}}|{{#ifeq:{{{class|dtend}}}|dtend|{{#titleparts:{{{up-date|/-m-d/+1 hour ,}}}|1|3}}}}{{#titleparts:{{{up-date|/-m-d}}}|1|1}}}}{{#ifeq:{{{timezone| }}}| ||Z}}|{{{ISO8601|}}}}}</span>)</span><noinclude>
{{documentation}}
</noinclude>
0up47z3b5aifjx4toi38dpusqqch0d6
Template:Infobox/mobileviewfix.css
10
8647
73950
2023-04-27T08:57:55Z
El C
5872
Changed protection settings for "[[Template:Infobox/mobileviewfix.css]]": [[WP:High-risk templates|High-risk template or module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
73950
sanitized-css
text/css
/* {{pp-template}}
The mobile skin (Minerva) generally inject display: block property to tables to make them scrollable on your phone screen. This could give benefits for large contents, but may also caused some smaller tables shortened and shift to left, even if they are set width:100% property. This is happened in numerous infoboxes.
*/
body.skin-minerva .infobox table {
display: table;
}
body.skin-minerva .infobox caption {
display: table-caption;
}
ezj541df0gm8311f9dvd0q9sigletku
73951
73950
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox/mobileviewfix.css]]
73950
sanitized-css
text/css
/* {{pp-template}}
The mobile skin (Minerva) generally inject display: block property to tables to make them scrollable on your phone screen. This could give benefits for large contents, but may also caused some smaller tables shortened and shift to left, even if they are set width:100% property. This is happened in numerous infoboxes.
*/
body.skin-minerva .infobox table {
display: table;
}
body.skin-minerva .infobox caption {
display: table-caption;
}
ezj541df0gm8311f9dvd0q9sigletku
Template:Fraction
10
8648
73952
2024-01-16T00:53:18Z
Jonesey95
11668
readability per TPER
73952
wikitext
text/x-wiki
<templatestyles src="Fraction/styles.css" /><!--
--><span class="frac"><!--
-->{{#if:{{{3|}}}<!-- if 3
-->|{{{1}}}<span class="sr-only">+</span><span class="num">{{{2}}}</span>⁄<span class="den">{{{3}}}</span><!-- then 1 2/3
-->|{{#if:{{{2|}}}<!-- elseif 2
-->|<span class="num">{{{1}}}</span>⁄<span class="den">{{{2}}}</span><!-- then 1/2
-->|{{#if:{{{1|}}}<!-- elseif 1
-->|<span class="num">1</span>⁄<span class="den">{{{1}}}</span><!-- then 1/1
-->|⁄<!-- else 0, a slash
-->}}<!-- endif 1
-->}}<!-- endif 2
-->}}<!-- endif 3
--></span><noinclude>
{{documentation}}
</noinclude>
h4nu18eu2nc7i9vqxdo45igrlkvppw3
73953
73952
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Fraction]]
73952
wikitext
text/x-wiki
<templatestyles src="Fraction/styles.css" /><!--
--><span class="frac"><!--
-->{{#if:{{{3|}}}<!-- if 3
-->|{{{1}}}<span class="sr-only">+</span><span class="num">{{{2}}}</span>⁄<span class="den">{{{3}}}</span><!-- then 1 2/3
-->|{{#if:{{{2|}}}<!-- elseif 2
-->|<span class="num">{{{1}}}</span>⁄<span class="den">{{{2}}}</span><!-- then 1/2
-->|{{#if:{{{1|}}}<!-- elseif 1
-->|<span class="num">1</span>⁄<span class="den">{{{1}}}</span><!-- then 1/1
-->|⁄<!-- else 0, a slash
-->}}<!-- endif 1
-->}}<!-- endif 2
-->}}<!-- endif 3
--></span><noinclude>
{{documentation}}
</noinclude>
h4nu18eu2nc7i9vqxdo45igrlkvppw3
Módulo:Infobox3cols
828
8649
73954
2026-05-25T05:20:24Z
Zackmann08
11656
adding a large number of params that were valid but missing from the unknown params
73954
Scribunto
text/plain
local check_for_unknown_parameters = require("Module:Check for unknown parameters")._check
local p = {}
local args = {}
local origArgs = {}
local root
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix, suffix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([0-9]%d*)' .. suffix .. '$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header then
has_list_class({rowArgs.rowclass, rowArgs.class, args.headerclass})
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'h'])
:wikitext(rowArgs.header)
elseif rowArgs.label then
if rowArgs.data then
has_list_class({rowArgs.rowclass, rowArgs.class})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'l'])
:wikitext(rowArgs.label)
:done()
local dataCell = row:tag('td')
dataCell
:attr('colspan', '3')
:addClass('infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num])
:newline()
:wikitext(rowArgs.data)
elseif rowArgs.dataa or rowArgs.datab or rowArgs.datac then
has_list_class({rowArgs.rowclass, rowArgs.classa})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'l'])
:wikitext(rowArgs.label)
:done()
local dataCella = row:tag('td')
dataCella
:addClass('infobox-data infobox-data-a')
:addClass(rowArgs.classa)
-- @deprecated next; target .infobox-<name> .infobox-data-a
:cssText(rowArgs.dataastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'a'])
:newline()
:wikitext(rowArgs.dataa)
if rowArgs.renderb then
has_list_class({rowArgs.classb})
local dataCellb = row:tag('td')
dataCellb
:addClass('infobox-data infobox-data-b')
:addClass(rowArgs.classb)
-- @deprecated next; target .infobox-<name> .infobox-data-b
:cssText(rowArgs.databstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'b'])
:newline()
:wikitext(rowArgs.datab)
end
if rowArgs.renderc then
has_list_class({rowArgs.classc})
local dataCellc = row:tag('td')
dataCellc
:addClass('infobox-data infobox-data-c')
:addClass(rowArgs.classc)
-- @deprecated next; target .infobox-<name> .infobox-data-c
:cssText(rowArgs.datacstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'c'])
:newline()
:wikitext(rowArgs.datac)
end
end
elseif rowArgs.data then
has_list_class({rowArgs.rowclass, rowArgs.class})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-full-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox-full-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num])
:newline()
:wikitext(rowArgs.data)
end
end
local function renderTitle()
if not args.title then return end
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_list_class({args.aboveclass})
root
:tag('tr')
:tag('th')
:attr('colspan', '4')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(args.above)
end
local function renderBelowRow()
if not args.below then return end
has_list_class({args.belowclass})
root
:tag('tr')
:tag('td')
:attr('colspan', '4')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
local function addSubheaderRow(subheaderArgs)
if not subheaderArgs.data then return end
has_list_class({subheaderArgs.rowclass, subheaderArgs.class})
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:newline()
:wikitext(subheaderArgs.data)
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader','')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if not imageArgs.data then return end
has_list_class({imageArgs.rowclass, imageArgs.class})
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:newline()
:wikitext(imageArgs.data)
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image','')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header',''), getArgNums('data','[abc]?'))
local datab_count = #(getArgNums('data','b'))
local datac_count = #(getArgNums('data','c'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
num = tostring(num),
renderb = datab_count > 0,
renderc = datac_count > 0,
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
dataa = args['data' .. tostring(num) .. 'a'],
dataastyle = args.datastylea,
classa = args['class' .. tostring(num) .. 'a'],
datab = args['data' .. tostring(num) .. 'b'],
databstyle = args.datastyleb,
classb = args['class' .. tostring(num) .. 'b'],
datac = args['data' .. tostring(num) .. 'c'],
datacstyle = args.datastylec,
classc = args['class' .. tostring(num) .. 'c'],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)],
})
end
end
local function renderNavBar()
if not args.name then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '4')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
local title = mw.title.getCurrentTitle()
if args.decat == 'yes' then return end
if #(getArgNums('data','[abc]?')) == 0 and title.namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
root:wikitext(check_for_unknown_parameters({
['unknown'] = mw.getCurrentFrame():expandTemplate{
title = 'main other',
args = {'[[Category:Pages using infobox3cols with unknown parameters|_VALUE_"' .. title.text .. ']]'}
},
['preview'] = 'Page using [[Template:infobox3cols]] with unknown parameter "_VALUE_"',
['ignoreblank'] = 'y',
regexp1 = "header[%d]+",
regexp2 = "label[%d]+",
regexp3 = "data[%d]+[abc]?",
regexp4 = "class[%d]+[abc]?",
regexp5 = "rowclass[%d]+",
regexp6 = "rowstyle[%d]+",
regexp7 = "rowcellstyle[%d]+",
regexp8 = "subheader[1]?[0-9]?",
regexp9 = "subheaderrowclass[1]?[0-9]?",
"above", "aboveclass", "aboverowclass", "abovestyle", "below", "belowclass",
"belowrowclass", "belowstyle", "bodyclass", "bodystyle", "caption", "caption1",
"caption2", "captionstyle", "child", "datastyle", "datastylea", "datastyleb",
"datastylec", "extracellstyles", "headerstyle", "image", "image1", "image2",
"imageclass", "imagerowclass1", "imagerowclass2", "imagestyle", "labelstyle",
"name", "subbox", "subheaderstyle", "templatestyles",
"title", "titleclass", "titlestyle"
}, origArgs))
if origArgs.header0 or origArgs.label0 or origArgs.data0 or origArgs.data0a
or origArgs.data0b or origArgs.data0c or origArgs.class0 or origArgs.rowclass0 then
root:wikitext("[[Category:Pages using infobox3cols with header0 or label0 or data0]]")
end
if title.namespace == 10 and mw.ustring.sub(title.text, 1, 7) == "Infobox" then
root:wikitext("[[Category:Infobox templates|" .. mw.ustring.sub(title.text, 9) .. "]]")
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
-- preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
-- renderEmptyRowCategories()
renderTrackingCategories()
-- cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
root = mw.html.create('table')
has_list_class({args.bodyclass})
root
:addClass((args.child == 'yes' or args.subbox == 'yes') and 'infobox-subbox' or 'infobox')
:addClass(args.child == 'yes' and 'infobox-3cols-child' or nil)
-- avoid https://phabricator.wikimedia.org/F55300125
:addClass('infobox-table')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
renderTitle()
renderAboveRow()
structure_infobox_common()
return loadTemplateStyles() .. tostring(root)
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 0 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i) .. (v.suffix or '')
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i) .. (v.dependsuffix or '')
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessSingleArg('image')
preprocessSingleArg('caption')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'data', suffix = 'a', depend = {'label'}},
{prefix = 'data', suffix = 'a'},
{prefix = 'data', suffix = 'b', depend = {'label'}},
{prefix = 'data', suffix = 'b'},
{prefix = 'data', suffix = 'c', depend = {'label'}},
{prefix = 'data', suffix = 'c'},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'},
{prefix = 'class', suffix = 'a'},
{prefix = 'class', suffix = 'b'},
{prefix = 'class', suffix = 'c'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('datastylea')
preprocessSingleArg('datastyleb')
preprocessSingleArg('datastylec')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
args['extracellstyles'] = {}
for line in mw.text.gsplit(origArgs['extracellstyles'] or '', '\n') do
local equals = line:find('=')
if equals then
for i in mw.text.gsplit(line:sub(1, equals - 1), '%s*,%s*') do
args.extracellstyles[i] = line:sub(equals + 1)
end
end
end
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame, extra_args)
origArgs = extra_args or {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
-- Shortcut for making child infoboxes via #invoke.
function p.child(frame)
return p.infoboxTemplate(frame, {child = "yes"})
end
return p
koel0uj7ch2jol6ermjr8okirt90pi7
73955
73954
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Module:Infobox3cols]]
73954
Scribunto
text/plain
local check_for_unknown_parameters = require("Module:Check for unknown parameters")._check
local p = {}
local args = {}
local origArgs = {}
local root
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix, suffix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([0-9]%d*)' .. suffix .. '$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header then
has_list_class({rowArgs.rowclass, rowArgs.class, args.headerclass})
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'h'])
:wikitext(rowArgs.header)
elseif rowArgs.label then
if rowArgs.data then
has_list_class({rowArgs.rowclass, rowArgs.class})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'l'])
:wikitext(rowArgs.label)
:done()
local dataCell = row:tag('td')
dataCell
:attr('colspan', '3')
:addClass('infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num])
:newline()
:wikitext(rowArgs.data)
elseif rowArgs.dataa or rowArgs.datab or rowArgs.datac then
has_list_class({rowArgs.rowclass, rowArgs.classa})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'l'])
:wikitext(rowArgs.label)
:done()
local dataCella = row:tag('td')
dataCella
:addClass('infobox-data infobox-data-a')
:addClass(rowArgs.classa)
-- @deprecated next; target .infobox-<name> .infobox-data-a
:cssText(rowArgs.dataastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'a'])
:newline()
:wikitext(rowArgs.dataa)
if rowArgs.renderb then
has_list_class({rowArgs.classb})
local dataCellb = row:tag('td')
dataCellb
:addClass('infobox-data infobox-data-b')
:addClass(rowArgs.classb)
-- @deprecated next; target .infobox-<name> .infobox-data-b
:cssText(rowArgs.databstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'b'])
:newline()
:wikitext(rowArgs.datab)
end
if rowArgs.renderc then
has_list_class({rowArgs.classc})
local dataCellc = row:tag('td')
dataCellc
:addClass('infobox-data infobox-data-c')
:addClass(rowArgs.classc)
-- @deprecated next; target .infobox-<name> .infobox-data-c
:cssText(rowArgs.datacstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'c'])
:newline()
:wikitext(rowArgs.datac)
end
end
elseif rowArgs.data then
has_list_class({rowArgs.rowclass, rowArgs.class})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-full-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox-full-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num])
:newline()
:wikitext(rowArgs.data)
end
end
local function renderTitle()
if not args.title then return end
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_list_class({args.aboveclass})
root
:tag('tr')
:tag('th')
:attr('colspan', '4')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(args.above)
end
local function renderBelowRow()
if not args.below then return end
has_list_class({args.belowclass})
root
:tag('tr')
:tag('td')
:attr('colspan', '4')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
local function addSubheaderRow(subheaderArgs)
if not subheaderArgs.data then return end
has_list_class({subheaderArgs.rowclass, subheaderArgs.class})
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:newline()
:wikitext(subheaderArgs.data)
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader','')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if not imageArgs.data then return end
has_list_class({imageArgs.rowclass, imageArgs.class})
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:newline()
:wikitext(imageArgs.data)
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image','')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header',''), getArgNums('data','[abc]?'))
local datab_count = #(getArgNums('data','b'))
local datac_count = #(getArgNums('data','c'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
num = tostring(num),
renderb = datab_count > 0,
renderc = datac_count > 0,
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
dataa = args['data' .. tostring(num) .. 'a'],
dataastyle = args.datastylea,
classa = args['class' .. tostring(num) .. 'a'],
datab = args['data' .. tostring(num) .. 'b'],
databstyle = args.datastyleb,
classb = args['class' .. tostring(num) .. 'b'],
datac = args['data' .. tostring(num) .. 'c'],
datacstyle = args.datastylec,
classc = args['class' .. tostring(num) .. 'c'],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)],
})
end
end
local function renderNavBar()
if not args.name then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '4')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
local title = mw.title.getCurrentTitle()
if args.decat == 'yes' then return end
if #(getArgNums('data','[abc]?')) == 0 and title.namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
root:wikitext(check_for_unknown_parameters({
['unknown'] = mw.getCurrentFrame():expandTemplate{
title = 'main other',
args = {'[[Category:Pages using infobox3cols with unknown parameters|_VALUE_"' .. title.text .. ']]'}
},
['preview'] = 'Page using [[Template:infobox3cols]] with unknown parameter "_VALUE_"',
['ignoreblank'] = 'y',
regexp1 = "header[%d]+",
regexp2 = "label[%d]+",
regexp3 = "data[%d]+[abc]?",
regexp4 = "class[%d]+[abc]?",
regexp5 = "rowclass[%d]+",
regexp6 = "rowstyle[%d]+",
regexp7 = "rowcellstyle[%d]+",
regexp8 = "subheader[1]?[0-9]?",
regexp9 = "subheaderrowclass[1]?[0-9]?",
"above", "aboveclass", "aboverowclass", "abovestyle", "below", "belowclass",
"belowrowclass", "belowstyle", "bodyclass", "bodystyle", "caption", "caption1",
"caption2", "captionstyle", "child", "datastyle", "datastylea", "datastyleb",
"datastylec", "extracellstyles", "headerstyle", "image", "image1", "image2",
"imageclass", "imagerowclass1", "imagerowclass2", "imagestyle", "labelstyle",
"name", "subbox", "subheaderstyle", "templatestyles",
"title", "titleclass", "titlestyle"
}, origArgs))
if origArgs.header0 or origArgs.label0 or origArgs.data0 or origArgs.data0a
or origArgs.data0b or origArgs.data0c or origArgs.class0 or origArgs.rowclass0 then
root:wikitext("[[Category:Pages using infobox3cols with header0 or label0 or data0]]")
end
if title.namespace == 10 and mw.ustring.sub(title.text, 1, 7) == "Infobox" then
root:wikitext("[[Category:Infobox templates|" .. mw.ustring.sub(title.text, 9) .. "]]")
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
-- preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
-- renderEmptyRowCategories()
renderTrackingCategories()
-- cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
root = mw.html.create('table')
has_list_class({args.bodyclass})
root
:addClass((args.child == 'yes' or args.subbox == 'yes') and 'infobox-subbox' or 'infobox')
:addClass(args.child == 'yes' and 'infobox-3cols-child' or nil)
-- avoid https://phabricator.wikimedia.org/F55300125
:addClass('infobox-table')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
renderTitle()
renderAboveRow()
structure_infobox_common()
return loadTemplateStyles() .. tostring(root)
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 0 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i) .. (v.suffix or '')
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i) .. (v.dependsuffix or '')
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessSingleArg('image')
preprocessSingleArg('caption')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'data', suffix = 'a', depend = {'label'}},
{prefix = 'data', suffix = 'a'},
{prefix = 'data', suffix = 'b', depend = {'label'}},
{prefix = 'data', suffix = 'b'},
{prefix = 'data', suffix = 'c', depend = {'label'}},
{prefix = 'data', suffix = 'c'},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'},
{prefix = 'class', suffix = 'a'},
{prefix = 'class', suffix = 'b'},
{prefix = 'class', suffix = 'c'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('datastylea')
preprocessSingleArg('datastyleb')
preprocessSingleArg('datastylec')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
args['extracellstyles'] = {}
for line in mw.text.gsplit(origArgs['extracellstyles'] or '', '\n') do
local equals = line:find('=')
if equals then
for i in mw.text.gsplit(line:sub(1, equals - 1), '%s*,%s*') do
args.extracellstyles[i] = line:sub(equals + 1)
end
end
end
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame, extra_args)
origArgs = extra_args or {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
-- Shortcut for making child infoboxes via #invoke.
function p.child(frame)
return p.infoboxTemplate(frame, {child = "yes"})
end
return p
koel0uj7ch2jol6ermjr8okirt90pi7
Template:Height
10
8650
73956
2018-10-23T17:58:54Z
Frietjes
11686
Undid revision 865395444 by [[Special:Contributions/Frietjes|Frietjes]] ([[User talk:Frietjes|talk]])
73956
wikitext
text/x-wiki
{{#switch:{{#if:{{{centimeter|{{{centimeters|{{{centimetre|{{{centimetres|{{{cm|}}}}}}}}}}}}}}}|1|0}}{{#if:{{{meter|{{{meters|{{{metre|{{{metres|{{{m|}}}}}}}}}}}}}}}|1|0}}{{#if:{{{foot|{{{feet|{{{ft|}}}}}}}}}|1|0}}{{#if:{{{inch|{{{inches|{{{in|}}}}}}}}}|1|0}}
|1000={{convert|{{{centimeter|{{{centimeters|{{{centimetre|{{{centimetres|{{{cm|}}}}}}}}}}}}}}}|cm|ftin|frac={{#ifeq:{{{precision}}}|0||{{{frac|2}}}}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{{precision|1}}} }}
|0100={{convert|{{{meter|{{{meters|{{{metre|{{{metres|{{{m}}}}}}}}}}}}}}}|m|ftin|frac={{#ifeq:{{{precision}}}|0||{{{frac|2}}}}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{{precision|1}}} }}
|0011={{convert|{{{foot|{{{feet|{{{ft|}}}}}}}}}|ft|{{{inch|{{{inches|{{{in|}}}}}}}}}|in|{{#ifeq:{{{out|}}}|cm|cm|m}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{#if:{{{precision|}}}|{{{precision}}}|{{#ifeq:{{{out|}}}|cm|0|2}}}} }}
|0010={{convert|{{{foot|{{{feet|{{{ft|}}}}}}}}}|ft|0|in|{{#ifeq:{{{out|}}}|cm|cm|m}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{#if:{{{precision|}}}|{{{precision}}}|{{#ifeq:{{{out|}}}|cm|0|2}}}} }}
|0001={{convert|0|ft|{{{inch|{{{inches|{{{in|}}}}}}}}}|in|{{#ifeq:{{{out|}}}|cm|cm|m}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{#if:{{{precision|}}}|{{{precision}}}|{{#ifeq:{{{out|}}}|cm|0|2}}}} }}
|0000=
|#default={{Error|Error: please specify height using only one type of units}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using height with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Height]] with unknown parameter "_VALUE_"|ignoreblank=y| abbr | centimeter | centimeters | centimetre | centimetres | cm | feet | foot | frac | ft | in | inch | inches | m | meter | meters | metre | metres | out | precision | wiki | {{#ifeq:{{{1}}}|0|1|_NULLPARAMETER_}}
}}{{#ifeq:{{{1}}}|0|{{main other|[[Category:Pages using height with 1 equal 0]]}}
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
o8i2bu2gserf1qetrx0jzzh8mgpdcys
73957
73956
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Height]]
73956
wikitext
text/x-wiki
{{#switch:{{#if:{{{centimeter|{{{centimeters|{{{centimetre|{{{centimetres|{{{cm|}}}}}}}}}}}}}}}|1|0}}{{#if:{{{meter|{{{meters|{{{metre|{{{metres|{{{m|}}}}}}}}}}}}}}}|1|0}}{{#if:{{{foot|{{{feet|{{{ft|}}}}}}}}}|1|0}}{{#if:{{{inch|{{{inches|{{{in|}}}}}}}}}|1|0}}
|1000={{convert|{{{centimeter|{{{centimeters|{{{centimetre|{{{centimetres|{{{cm|}}}}}}}}}}}}}}}|cm|ftin|frac={{#ifeq:{{{precision}}}|0||{{{frac|2}}}}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{{precision|1}}} }}
|0100={{convert|{{{meter|{{{meters|{{{metre|{{{metres|{{{m}}}}}}}}}}}}}}}|m|ftin|frac={{#ifeq:{{{precision}}}|0||{{{frac|2}}}}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{{precision|1}}} }}
|0011={{convert|{{{foot|{{{feet|{{{ft|}}}}}}}}}|ft|{{{inch|{{{inches|{{{in|}}}}}}}}}|in|{{#ifeq:{{{out|}}}|cm|cm|m}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{#if:{{{precision|}}}|{{{precision}}}|{{#ifeq:{{{out|}}}|cm|0|2}}}} }}
|0010={{convert|{{{foot|{{{feet|{{{ft|}}}}}}}}}|ft|0|in|{{#ifeq:{{{out|}}}|cm|cm|m}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{#if:{{{precision|}}}|{{{precision}}}|{{#ifeq:{{{out|}}}|cm|0|2}}}} }}
|0001={{convert|0|ft|{{{inch|{{{inches|{{{in|}}}}}}}}}|in|{{#ifeq:{{{out|}}}|cm|cm|m}}|abbr={{#switch:{{{abbr}}}|no=off|mos=def|#default=on}}|lk={{#ifeq:{{{wiki|}}}|yes|on|off}}|{{#if:{{{precision|}}}|{{{precision}}}|{{#ifeq:{{{out|}}}|cm|0|2}}}} }}
|0000=
|#default={{Error|Error: please specify height using only one type of units}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using height with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Height]] with unknown parameter "_VALUE_"|ignoreblank=y| abbr | centimeter | centimeters | centimetre | centimetres | cm | feet | foot | frac | ft | in | inch | inches | m | meter | meters | metre | metres | out | precision | wiki | {{#ifeq:{{{1}}}|0|1|_NULLPARAMETER_}}
}}{{#ifeq:{{{1}}}|0|{{main other|[[Category:Pages using height with 1 equal 0]]}}
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
o8i2bu2gserf1qetrx0jzzh8mgpdcys
Template:Birth-date and age
10
8651
73958
2025-07-30T18:04:07Z
Pppery
11644
Pppery moved page [[Template:Birth-date and age]] to [[Template:Birth date and age text]]: [[Special:Permalink/1303388041#6WC|Requested]] by TechnoSquirrel69 at [[WP:RM/TR]]: Synchronize with the templates moved per [[Special:PermanentLink/1263603725#Requested move 15 September 2023|this requested move]].
73958
wikitext
text/x-wiki
#REDIRECT [[Template:Birth date and age text]]
{{Redirect category shell|
{{R from move}}
}}
l3cvegj7lz91po6q2s8nx6jyd1p5cpv
73959
73958
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Birth-date_and_age]]
73958
wikitext
text/x-wiki
#REDIRECT [[Template:Birth date and age text]]
{{Redirect category shell|
{{R from move}}
}}
l3cvegj7lz91po6q2s8nx6jyd1p5cpv
Template:Infobox rugby biography
10
8652
73960
2026-07-06T22:00:03Z
Primefac
11658
Undid revision [[Special:Diff/1362830294|1362830294]] by [[Special:Contributions/Gonnym|Gonnym]] ([[User talk:Gonnym|talk]]) something got borked here. Also, there is no need to turn an #invoke:infobox into #invoke:Infobox and similar
73960
wikitext
text/x-wiki
<includeonly>{{short description|Rugby player|noreplace}}{{#invoke:infobox|infoboxTemplate
| child = {{Yesno|{{{embed|no}}}}}
| bodyclass = vcard
| title = {{#ifeq:{{Yesno|{{{embed|no}}}}}|yes
|
|<div class="fn">{{{name|{{PAGENAMEBASE}}}}}</div>{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 77%; font-weight: normal; display:inline;">{{{honorific_suffix|}}}</div>}}
}}
| headerstyle = background-color: {{{header_color|#b0c4de}}};color:inherit;
| labelstyle = white-space:nowrap;province
| autoheaders = y
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|sizedefault=frameless|upright={{{upright|1}}}|alt={{{alt|}}}}}
| caption = {{{caption|}}}
| label1 = Full name
| data1 = {{{full_name|{{{fullname|}}}}}}
| label3 = Born
| data3 = {{br separated entries
|1={{#if:{{{birth_name|}}}|<span class="nickname">{{{birth_name|}}}</span>}}
|2={{#invoke:person date|birth}}
|3={{#if:{{{birth_place|}}}|<div class="birthplace">{{{birth_place|}}}</div>}}
}}
| label4 = Died
| data4 = {{br separated entries
|1={{#invoke:person date|death}}
|2={{#if:{{{death_place|}}}|<div class="deathplace">{{{death_place|}}}</div>}}
}}
| label7 = Height
| data7 = {{#if:{{{height|}}}{{{height_cm|}}}{{{height_ft|}}}{{{height_in|}}}|{{convinfobox|{{{height_cm|}}}|cm|{{{height_ft|}}}|ft|{{{height_in|}}}|in|{{#if:{{{height_ft|}}}{{{height_in|}}}|0}}}} {{#if: {{{height|}}} | {{Infobox person/height|{{{height}}}}}}}}}
| label8 = Weight
| data8 = {{#if:{{{weight|}}}{{{weight_kg|}}}{{{weight_st|}}}{{{weight_lb|}}}|{{convinfobox|{{{weight_kg|}}}|kg|{{{weight_st|}}}|st|{{{weight_lb|}}}|lb|{{#if:{{{weight_kg|}}}{{{weight_lb|}}}|0}}}} {{#if: {{{weight|}}} | {{Infobox person/weight|{{{weight}}}}}}}}}
| label9 = School
| data9 = {{{school|}}}
| label10 = University
| data10 = {{{university|}}}
| label11 = Notable relative{{pluralize from text|{{{relatives|}}}|likely=(s)|plural=s}}
| data11 = {{{relatives|}}}
| label14 = Occupation{{pluralize from text|{{{occupation|}}}|likely=(s)|plural=s}}
| data14 = {{{occupation|}}}
| data15 = {{Infobox rugby biography/correct date|{{{weight_update|}}}|pretext= Height and weight}}
<!--
***Rugby Union***
-->
| header30 = Rugby union career
| data31 = {{#if:{{{ru_currentposition|{{{ru_position|{{{position|}}}}}}}}}{{{ru_currentteam|{{{currentclub|{{{ru_currentclub|}}}}}}}}}{{{youthclubs1|}}}{{{amatteam1|}}}{{{clubs1|}}}{{{ru_province1|}}}{{{super1|}}}{{{repteam1|}}}{{{ru_sevensnationalteam1|{{{repsevensteam1|}}}}}}{{{coachteams1|}}}{{{refereecomps1|}}}|{{#invoke:infobox3cols|infoboxTemplate
| child = yes
| headerstyle = background-color: #e0ffff;color:inherit;
| labelstyle = white-space:nowrap; font-weight: normal;
| datastyle = white-space: nowrap; vertical-align: baseline
| datastylea = white-space: nowrap; vertical-align: baseline
| datastyleb = white-space: nowrap; vertical-align: baseline; text-align: right
| datastylec = white-space: nowrap; vertical-align: baseline; text-align: right
| label4 = '''Position{{pluralize from text|{{If empty | {{{ru_currentposition|}}} | {{{ru_position|}}} | {{{position|}}} }}|likely=(s)|plural=s}}'''
| class4 = role
| data4 = {{If empty | {{{ru_currentposition|}}} | {{{ru_position|}}} | {{{position|}}} }}
| label5 = '''Current team'''
| class5 = org
| data5 = {{If empty | {{{ru_currentteam|}}} | {{{currentclub|}}} | {{{ru_currentclub|}}} }}
<!--
*****RU YOUTH*****
-->
| header10 = {{#if:{{{youthclubs1|}}}|Youth career}}
| label11 = {{#if:{{{youthclubs1|}}}|{{{youthyears1|-}}}}}
| data11 = {{{youthclubs1|}}}
| label12 = {{#if:{{{youthclubs2|}}}|{{{youthyears2|–}}}}}
| data12 = {{{youthclubs2|}}}
| label13 = {{#if:{{{youthclubs3|}}}|{{{youthyears3|–}}}}}
| data13 = {{{youthclubs3|}}}
| label14 = {{#if:{{{youthclubs4|}}}|{{{youthyears4|–}}}}}
| data14 = {{{youthclubs4|}}}
| label15 = {{#if:{{{youthclubs5|}}}|{{{youthyears5|–}}}}}
| data15 = {{{youthclubs5|}}}
<!--
*****RU AMATEUR*****
-->
| header20 = {{#if:{{{amatteam1|}}}|Amateur team(s)}}
| label21 = {{#if:{{{amatteam1|}}}|'''Years'''}}
| data21a = {{#if:{{{amatteam1|}}}|'''Team'''}}
| data21b = {{#if:{{{amatteam1|}}}|'''Apps'''}}
| data21c = {{#if:{{{amatteam1|}}}|'''(Points)'''}}
| label22 = {{#if:{{{amatteam1|}}}|<nowiki />{{{amatyears1|–}}}}}
| data22a = {{{amatteam1|}}}
| data22b = {{{amatapps1|}}}
| data22c = {{#if:{{{amatpoints1|}}}|({{{amatpoints1|}}})}}
| label23 = {{#if:{{{amatteam2|}}}|<nowiki />{{{amatyears2|–}}}}}
| data23a = {{{amatteam2|}}}
| data23b = {{{amatapps2|}}}
| data23c = {{#if:{{{amatpoints2|}}}|({{{amatpoints2}}})}}
| label24 = {{#if:{{{amatteam3|}}}|<nowiki />{{{amatyears3|–}}}}}
| data24a = {{{amatteam3|}}}
| data24b = {{{amatapps3|}}}
| data24c = {{#if:{{{amatpoints3|}}}|({{{amatpoints3}}})}}
| label25 = {{#if:{{{amatteam4|}}}|<nowiki />{{{amatyears4|–}}}}}
| data25a = {{{amatteam4|}}}
| data25b = {{{amatapps4|}}}
| data25c = {{#if:{{{amatpoints4|}}}|({{{amatpoints4}}})}}
| label26 = {{#if:{{{amatteam5|}}}|<nowiki />{{{amatyears5|–}}}}}
| data26a = {{{amatteam5|}}}
| data26b = {{{amatapps5|}}}
| data26c = {{#if:{{{amatpoints5|}}}|({{{amatpoints5}}})}}
| label27 = {{#if:{{{amatteam6|}}}|<nowiki />{{{amatyears6|–}}}}}
| data27a = {{{amatteam6|}}}
| data27b = {{{amatapps6|}}}
| data27c = {{#if:{{{amatpoints6|}}}|({{{amatpoints6}}})}}
| label28 = {{#if:{{{amatteam7|}}}|<nowiki />{{{amatyears7|–}}}}}
| data28a = {{{amatteam7|}}}
| data28b = {{{amatapps7|}}}
| data28c = {{#if:{{{amatpoints7|}}}|({{{amatpoints7}}})}}
| label29 = {{#if:{{{amatteam8|}}}|<nowiki />{{{amatyears8|–}}}}}
| data29a = {{{amatteam8|}}}
| data29b = {{{amatapps8|}}}
| data29c = {{#if:{{{amatpoints8|}}}|({{{amatpoints8}}})}}
| label30 = {{#if:{{{amatteam9|}}}|<nowiki />{{{amatyears9|–}}}}}
| data30a = {{{amatteam9|}}}
| data30b = {{{amatapps9|}}}
| data30c = {{#if:{{{amatpoints9|}}}|({{{amatpoints9}}})}}
| label31 = {{#if:{{{amatteam10|}}}|<nowiki />{{{amatyears10|–}}}}}
| data31a = {{{amatteam10|}}}
| data31b = {{{amatapps10|}}}
| data31c = {{#if:{{{amatpoints10|}}}|({{{amatpoints10}}})}}
| label32 = {{#if:{{{amatteam11|}}}|<nowiki />{{{amatyears11|–}}}}}
| data32a = {{{amatteam11|}}}
| data32b = {{{amatapps11|}}}
| data32c = {{#if:{{{amatpoints11|}}}|({{{amatpoints11}}})}}
| label33 = {{#if:{{{amatteam12|}}}|<nowiki />{{{amatyears12|–}}}}}
| data33a = {{{amatteam12|}}}
| data33b = {{{amatapps12|}}}
| data33c = {{#if:{{{amatpoints12|}}}|({{{amatpoints12}}})}}
| label34 = {{#if:{{{amatteam13|}}}|<nowiki />{{{amatyears13|–}}}}}
| data34a = {{{amatteam13|}}}
| data34b = {{{amatapps13|}}}
| data34c = {{#if:{{{amatpoints13|}}}|({{{amatpoints13}}})}}
| label35 = {{#if:{{{amatteam14|}}}|<nowiki />{{{amatyears14|–}}}}}
| data35a = {{{amatteam14|}}}
| data35b = {{{amatapps14|}}}
| data35c = {{#if:{{{amatpoints14|}}}|({{{amatpoints14}}})}}
| label36 = {{#if:{{{amatteam15|}}}|<nowiki />{{{amatyears15|–}}}}}
| data36a = {{{amatteam15|}}}
| data36b = {{{amatapps15|}}}
| data36c = {{#if:{{{amatpoints15|}}}|({{{amatpoints15}}})}}
| data37 = {{#if:{{{amatupdate|{{{ru_amupdate|}}}}}}|{{Infobox rugby biography/correct date|{{{amatupdate|{{{ru_amupdate|}}}}}}}}}}
<!--
*****RU SENIOR*****
-->
| header40 = {{#if:{{{clubs1|}}}|Senior career}}
| label41 = {{#if:{{{clubs1|}}}|'''Years'''}}
| data41a = {{#if:{{{clubs1|}}}|'''Team'''}}
| data41b = {{#if:{{{clubs1|}}}|'''Apps'''}}
| data41c = {{#if:{{{clubs1|}}}|'''(Points)'''}}
| label42 = {{#if:{{{clubs1|}}}|<nowiki />{{{years1|–}}}}}
| data42a = {{{clubs1|}}}
| data42b = {{{apps1|}}}
| data42c = {{#if:{{{points1|}}}|({{{points1|}}})}}
| label43 = {{#if:{{{clubs2|}}}|<nowiki />{{{years2|–}}}}}
| data43a = {{{clubs2|}}}
| data43b = {{{apps2|}}}
| data43c = {{#if:{{{points2|}}}|({{{points2}}})}}
| label44 = {{#if:{{{clubs3|}}}|<nowiki />{{{years3|–}}}}}
| data44a = {{{clubs3|}}}
| data44b = {{{apps3|}}}
| data44c = {{#if:{{{points3|}}}|({{{points3}}})}}
| label45 = {{#if:{{{clubs4|}}}|<nowiki />{{{years4|–}}}}}
| data45a = {{{clubs4|}}}
| data45b = {{{apps4|}}}
| data45c = {{#if:{{{points4|}}}|({{{points4}}})}}
| label46 = {{#if:{{{clubs5|}}}|<nowiki />{{{years5|–}}}}}
| data46a = {{{clubs5|}}}
| data46b = {{{apps5|}}}
| data46c = {{#if:{{{points5|}}}|({{{points5}}})}}
| label47 = {{#if:{{{clubs6|}}}|<nowiki />{{{years6|–}}}}}
| data47a = {{{clubs6|}}}
| data47b = {{{apps6|}}}
| data47c = {{#if:{{{points6|}}}|({{{points6}}})}}
| label48 = {{#if:{{{clubs7|}}}|<nowiki />{{{years7|–}}}}}
| data48a = {{{clubs7|}}}
| data48b = {{{apps7|}}}
| data48c = {{#if:{{{points7|}}}|({{{points7}}})}}
| label49 = {{#if:{{{clubs8|}}}|<nowiki />{{{years8|–}}}}}
| data49a = {{{clubs8|}}}
| data49b = {{{apps8|}}}
| data49c = {{#if:{{{points8|}}}|({{{points8}}})}}
| label50 = {{#if:{{{clubs9|}}}|<nowiki />{{{years9|–}}}}}
| data50a = {{{clubs9|}}}
| data50b = {{{apps9|}}}
| data50c = {{#if:{{{points9|}}}|({{{points9}}})}}
| label51 = {{#if:{{{clubs10|}}}|<nowiki />{{{years10|–}}}}}
| data51a = {{{clubs10|}}}
| data51b = {{{apps10|}}}
| data51c = {{#if:{{{points10|}}}|({{{points10}}})}}
| label52 = {{#if:{{{clubs11|}}}|<nowiki />{{{years11|–}}}}}
| data52a = {{{clubs11|}}}
| data52b = {{{apps11|}}}
| data52c = {{#if:{{{points11|}}}|({{{points11}}})}}
| label53 = {{#if:{{{clubs12|}}}|<nowiki />{{{years12|–}}}}}
| data53a = {{{clubs12|}}}
| data53b = {{{apps12|}}}
| data53c = {{#if:{{{points12|}}}|({{{points12}}})}}
| label54 = {{#if:{{{clubs13|}}}|<nowiki />{{{years13|–}}}}}
| data54a = {{{clubs13|}}}
| data54b = {{{apps13|}}}
| data54c = {{#if:{{{points13|}}}|({{{points13}}})}}
| label55 = {{#if:{{{clubs14|}}}|<nowiki />{{{years14|–}}}}}
| data55a = {{{clubs14|}}}
| data55b = {{{apps14|}}}
| data55c = {{#if:{{{points14|}}}|({{{points14}}})}}
| label56 = {{#if:{{{clubs15|}}}|<nowiki />{{{years15|–}}}}}
| data56a = {{{clubs15|}}}
| data56b = {{{apps15|}}}
| data56c = {{#if:{{{points15|}}}|({{{points15}}})}}
| label57 = {{#if:{{{clubs16|}}}|<nowiki />{{{years16|–}}}}}
| data57a = {{{clubs16|}}}
| data57b = {{{apps16|}}}
| data57c = {{#if:{{{points16|}}}|({{{points16}}})}}
| label58 = {{#if:{{{clubs17|}}}|<nowiki />{{{years17|–}}}}}
| data58a = {{{clubs17|}}}
| data58b = {{{apps17|}}}
| data58c = {{#if:{{{points17|}}}|({{{points17}}})}}
| label59 = {{#if:{{{clubs18|}}}|<nowiki />{{{years18|–}}}}}
| data59a = {{{clubs18|}}}
| data59b = {{{apps18|}}}
| data59c = {{#if:{{{points18|}}}|({{{points18}}})}}
| label60 = {{#if:{{{clubs19|}}}|<nowiki />{{{years19|–}}}}}
| data60a = {{{clubs19|}}}
| data60b = {{{apps19|}}}
| data60c = {{#if:{{{points19|}}}|({{{points19}}})}}
| label61 = {{#if:{{{clubs20|}}}|<nowiki />{{{years20|–}}}}}
| data61a = {{{clubs20|}}}
| data61b = {{{apps20|}}}
| data61c = {{#if:{{{points20|}}}|({{{points20}}})}}
| label62 = {{#if:{{{clubs21|}}}|<nowiki />{{{years21|–}}}}}
| data62a = {{{clubs21|}}}
| data62b = {{{apps21|}}}
| data62c = {{#if:{{{points21|}}}|({{{points21}}})}}
| label63 = {{#if:{{{clubs22|}}}|<nowiki />{{{years22|–}}}}}
| data63a = {{{clubs22|}}}
| data63b = {{{apps22|}}}
| data63c = {{#if:{{{points22|}}}|({{{points22}}})}}
| label64 = {{#if:{{{totalyears|}}}|'''{{{totalyears}}}'''|{{#if:{{{totalapps|}}}|'''Total'''}}}}
| data64a = {{#if:{{{totalyears|}}}|{{#if:{{{totalapps|}}}|'''Total'''}}}}
| data64b = {{#if:{{{totalapps|}}}|'''{{{totalapps|}}}'''}}
| data64c = {{#if:{{{totalpoints|}}}|'''({{{totalpoints}}})'''}}
| data65 = {{#if:{{{clubupdate|{{{ru_clubupdate|}}}}}}|{{Infobox rugby biography/correct date|{{{clubupdate|{{{ru_clubupdate|}}}}}}}}}}
<!--
*****RU PROVINCIAL*****
-->
| header70 = {{#if:{{{province1|}}}|Provincial / State sides}}
| label71 = {{#if:{{{province1|}}}|'''Years'''}}
| data71a = {{#if:{{{province1|}}}|'''Team'''}}
| data71b = {{#if:{{{province1|}}}|'''Apps'''}}
| data71c = {{#if:{{{province1|}}}|'''(Points)'''}}
| label72 = {{#if:{{{province1|}}}|<nowiki />{{{provinceyears1|–}}}}}
| data72a = {{{province1|}}}
| data72b = {{{provinceapps1|}}}
| data72c = {{#if:{{{provincepoints1|}}}|({{{provincepoints1|}}})}}
| label73 = {{#if:{{{province2|}}}|<nowiki />{{{provinceyears2|-}}}}}
| data73a = {{{province2|}}}
| data73b = {{{provinceapps2|}}}
| data73c = {{#if:{{{provincepoints2|}}}|({{{provincepoints2|}}})}}
| label74 = {{#if:{{{province3|}}}|<nowiki />{{{provinceyears3|-}}}}}
| data74a = {{{province3|}}}
| data74b = {{{provinceapps3|}}}
| data74c = {{#if:{{{provincepoints3|}}}|({{{provincepoints3|}}})}}
| label75 = {{#if:{{{province4|}}}|<nowiki />{{{provinceyears4|–}}}}}
| data75a = {{{province4|}}}
| data75b = {{{provinceapps4|}}}
| data75c = {{#if:{{{provincepoints4|}}}|({{{provincepoints4}}})}}
| label76 = {{#if:{{{province5|}}}|<nowiki />{{{provinceyears5|–}}}}}
| data76a = {{{province5|}}}
| data76b = {{{provinceapps5|}}}
| data76c = {{#if:{{{provincepoints5|}}}|({{{provincepoints5}}})}}
| label77 = {{#if:{{{province6|}}}|<nowiki />{{{provinceyears6|–}}}}}
| data77a = {{{province6|}}}
| data77b = {{{provinceapps6|}}}
| data77c = {{#if:{{{provincepoints6|}}}|({{{provincepoints6}}})}}
| label78 = {{#if:{{{province7|}}}|<nowiki />{{{provinceyears7|–}}}}}
| data78a = {{{province7|}}}
| data78b = {{{provinceapps7|}}}
| data78c = {{#if:{{{provincepoints7|}}}|({{{provincepoints7}}})}}
| label79 = {{#if:{{{province8|}}}|<nowiki />{{{provinceyears8|–}}}}}
| data79a = {{{province8|}}}
| data79b = {{{provinceapps8|}}}
| data79c = {{#if:{{{provincepoints8|}}}|({{{provincepoints8}}})}}
| label80 = {{#if:{{{province9|}}}|<nowiki />{{{provinceyears9|–}}}}}
| data80a = {{{province9|}}}
| data80b = {{{provinceapps9|}}}
| data80c = {{#if:{{{provincepoints9|}}}|({{{provincepoints9}}})}}
| label81 = {{#if:{{{province10|}}}|<nowiki />{{{provinceyears10|–}}}}}
| data81a = {{{province10|}}}
| data81b = {{{provinceapps10|}}}
| data81c = {{#if:{{{provincepoints10|}}}|({{{provincepoints10}}})}}
| data82 = {{#if:{{{ru_provinceupdate|}}}|{{Infobox rugby biography/correct date|{{{ru_provinceupdate|}}}}}}}
<!--
*****RU SUPER RUGBY*****
-->
| header90 = {{#if:{{{super1|}}}|Super Rugby}}
| label91 = {{#if:{{{super1|}}}|'''Years'''}}
| data91a = {{#if:{{{super1|}}}|'''Team'''}}
| data91b = {{#if:{{{super1|}}}|'''Apps'''}}
| data91c = {{#if:{{{super1|}}}|'''(Points)'''}}
| label92 = {{#if:{{{super1|}}}|<nowiki />{{{superyears1|–}}}}}
| data92a = {{{super1|}}}
| data92b = {{{superapps1|}}}
| data92c = {{#if:{{{superpoints1|}}}|({{{superpoints1|}}})}}
| label93 = {{#if:{{{super2|}}}|<nowiki />{{{superyears2|–}}}}}
| data93a = {{{super2|}}}
| data93b = {{{superapps2|}}}
| data93c = {{#if:{{{superpoints2|}}}|({{{superpoints2}}})}}
| label94 = {{#if:{{{super3|}}}|<nowiki />{{{superyears3|–}}}}}
| data94a = {{{super3|}}}
| data94b = {{{superapps3|}}}
| data94c = {{#if:{{{superpoints3|}}}|({{{superpoints3}}})}}
| label95 = {{#if:{{{super4|}}}|<nowiki />{{{superyears4|–}}}}}
| data95a = {{{super4|}}}
| data95b = {{{superapps4|}}}
| data95c = {{#if:{{{superpoints4|}}}|({{{superpoints4}}})}}
| label96 = {{#if:{{{super5|}}}|<nowiki />{{{superyears5|–}}}}}
| data96a = {{{super5|}}}
| data96b = {{{superapps5|}}}
| data96c = {{#if:{{{superpoints5|}}}|({{{superpoints5}}})}}
| label97 = {{#if:{{{super6|}}}|<nowiki />{{{superyears6|–}}}}}
| data97a = {{{super6|}}}
| data97b = {{{superapps6|}}}
| data97c = {{#if:{{{superpoints6|}}}|({{{superpoints6}}})}}
| label98 = {{#if:{{{super7|}}}|<nowiki />{{{superyears7|–}}}}}
| data98a = {{{super7|}}}
| data98b = {{{superapps7|}}}
| data98c = {{#if:{{{superpoints7|}}}|({{{superpoints7}}})}}
| label99 = {{#if:{{{super8|}}}|<nowiki />{{{superyears8|–}}}}}
| data99a = {{{super8|}}}
| data99b = {{{superapps8|}}}
| data99c = {{#if:{{{superpoints8|}}}|({{{superpoints8}}})}}
| label100 = {{#if:{{{super9|}}}|<nowiki />{{{superyears9|–}}}}}
| data100a = {{{super9|}}}
| data100b = {{{superapps9|}}}
| data100c = {{#if:{{{superpoints9|}}}|({{{superpoints9}}})}}
| label101 = {{#if:{{{super10|}}}|<nowiki />{{{superyears10|–}}}}}
| data101a = {{{super10|}}}
| data101b = {{{superapps10|}}}
| data101c = {{#if:{{{superpoints10|}}}|({{{superpoints10}}})}}
| data103 = {{#if:{{{superupdate|{{{super14update|}}}}}}|{{Infobox rugby biography/correct date|{{{superupdate|{{{super14update|}}}}}}}}}}
<!--
*****RU NATIONAL TEAM*****
-->
| header110 = {{#if:{{{repteam1|}}}|International career}}
| label111 = {{#if:{{{repteam1|}}}|'''Years'''}}
| data111a = {{#if:{{{repteam1|}}}|'''Team'''}}
| data111b = {{#if:{{{repteam1|}}}|'''Apps'''}}
| data111c = {{#if:{{{repteam1|}}}|'''(Points)'''}}
| label112 = {{#if:{{{repteam1|}}}|<nowiki />{{{repyears1|–}}}}}
| data112a = {{{repteam1|}}}
| data112b = {{{repcaps1|}}}
| data112c = {{#if:{{{reppoints1|}}}|({{{reppoints1|}}})}}
| label113 = {{#if:{{{repteam2|}}}|<nowiki />{{{repyears2|–}}}}}
| data113a = {{{repteam2|}}}
| data113b = {{{repcaps2|}}}
| data113c = {{#if:{{{reppoints2|}}}|({{{reppoints2|}}})}}
| label114 = {{#if:{{{repteam3|}}}|<nowiki />{{{repyears3|–}}}}}
| data114a = {{{repteam3|}}}
| data114b = {{{repcaps3|}}}
| data114c = {{#if:{{{reppoints3|}}}|({{{reppoints3|}}})}}
| label115 = {{#if:{{{repteam4|}}}|<nowiki />{{{repyears4|–}}}}}
| data115a = {{{repteam4|}}}
| data115b = {{{repcaps4|}}}
| data115c = {{#if:{{{reppoints4|}}}|({{{reppoints4|}}})}}
| label116 = {{#if:{{{repteam5|}}}|<nowiki />{{{repyears5|–}}}}}
| data116a = {{{repteam5|}}}
| data116b = {{{repcaps5|}}}
| data116c = {{#if:{{{reppoints5|}}}|({{{reppoints5|}}})}}
| label117 = {{#if:{{{repteam6|}}}|<nowiki />{{{repyears6|–}}}}}
| data117a = {{{repteam6|}}}
| data117b = {{{repcaps6|}}}
| data117c = {{#if:{{{reppoints6|}}}|({{{reppoints6|}}})}}
| label118 = {{#if:{{{repteam7|}}}|<nowiki />{{{repyears7|–}}}}}
| data118a = {{{repteam7|}}}
| data118b = {{{repcaps7|}}}
| data118c = {{#if:{{{reppoints7|}}}|({{{reppoints7|}}})}}
| label119 = {{#if:{{{repteam8|}}}|<nowiki />{{{repyears8|–}}}}}
| data119a = {{{repteam8|}}}
| data119b = {{{repcaps8|}}}
| data119c = {{#if:{{{reppoints8|}}}|({{{reppoints8|}}})}}
| label120 = {{#if:{{{repteam9|}}}|<nowiki />{{{repyears9|–}}}}}
| data120a = {{{repteam9|}}}
| data120b = {{{repcaps9|}}}
| data120c = {{#if:{{{reppoints9|}}}|({{{reppoints9|}}})}}
| label121 = {{#if:{{{repteam10|}}}|<nowiki />{{{repyears10|–}}}}}
| data121a = {{{repteam10|}}}
| data121b = {{{repcaps10|}}}
| data121c = {{#if:{{{reppoints10|}}}|({{{reppoints10|}}})}}
| data122 = {{#if:{{{repupdate|{{{ru_ntupdate|}}}}}}|{{Infobox rugby biography/correct date|{{{repupdate|{{{ru_ntupdate|}}}}}}}}}}
<!--
*****RU SEVENS NATIONAL TEAM*****
-->
| header130 = {{#if:{{{repsevensteam1|}}}|National sevens team{{#if:{{{repsevensteam2|}}}|s}}}}
| label131 = {{#if:{{{repsevensteam1|}}}|'''Years'''}}
| data131a = {{#if:{{{repsevensteam1|}}}|'''Team'''}}
| data131c = {{#if:{{{repsevensteam1|}}}|'''Comps'''}}
| label132 = {{#if:{{{repsevensteam1|}}}|<nowiki />{{{repsevensyears1|–}}}}}
| data132a = {{{repsevensteam1|}}}
| data132c = {{{repsevenscomp1|}}}
| label133 = {{#if:{{{repsevensteam2|}}}|<nowiki />{{{repsevensyears2|–}}}}}
| data133a = {{{repsevensteam2|}}}
| data133c = {{{repsevenscomp2|}}}
| label134 = {{#if:{{{repsevensteam3|}}}|<nowiki />{{{repsevensyears3|–}}}}}
| data134a = {{{repsevensteam3|}}}
| data134c = {{{repsevenscomp3|}}}
| label135 = {{#if:{{{repsevensteam4|}}}|<nowiki />{{{repsevensyears4|–}}}}}
| data135a = {{{repsevensteam4|}}}
| data135c = {{{repsevenscomp4|}}}
| label136 = {{#if:{{{repsevensteam5|}}}|<nowiki />{{{repsevensyears5|–}}}}}
| data136a = {{{repsevensteam5|}}}
| data136c = {{{repsevenscomp5|}}}
| label137 = {{#if:{{{repsevensteam6|}}}|<nowiki />{{{repsevensyears6|–}}}}}
| data137a = {{{repsevensteam6|}}}
| data137c = {{{repsevenscomp6|}}}
| label138 = {{#if:{{{repsevensteam7|}}}|<nowiki />{{{repsevensyears7|–}}}}}
| data138a = {{{repsevensteam7|}}}
| data138c = {{{repsevenscomp7|}}}
| label139 = {{#if:{{{repsevensteam8|}}}|<nowiki />{{{repsevensyears8|–}}}}}
| data139a = {{{repsevensteam8|}}}
| data139c = {{{repsevenscomp8|}}}
| label140 = {{#if:{{{repsevensteam9|}}}|<nowiki />{{{repsevensyears9|–}}}}}
| data140a = {{{repsevensteam9|}}}
| data140c = {{{repsevenscomp9|}}}
| label141 = {{#if:{{{repsevensteam10|}}}|<nowiki />{{{repsevensyears10|–}}}}}
| data141a = {{{repsevensteam10|}}}
| data141c = {{{repsevenscomp10|}}}
| data142 = {{#if:{{{ru_sevensupdate|}}}|{{Infobox rugby biography/correct date|{{{ru_sevensupdate|}}}}}}}
<!--
*****RU COACH*****
-->
| header150 = {{#if:{{{coachteams1|}}}|Coaching career}}
| label151 = {{#if:{{{coachteams1|}}}|'''Years'''}}
| data151 = {{#if:{{{coachteams1|}}}|'''Team'''}}
| label152 = {{#if:{{{coachteams1|}}}|{{{coachyears1|–}}}}}
| data152 = {{{coachteams1|}}}
| label153 = {{#if:{{{coachteams2|}}}|{{{coachyears2|–}}}}}
| data153 = {{{coachteams2|}}}
| label154 = {{#if:{{{coachteams3|}}}|{{{coachyears3|–}}}}}
| data154 = {{{coachteams3|}}}
| label155 = {{#if:{{{coachteams4|}}}|{{{coachyears4|–}}}}}
| data155 = {{{coachteams4|}}}
| label156 = {{#if:{{{coachteams5|}}}|{{{coachyears5|–}}}}}
| data156 = {{{coachteams5|}}}
| label157 = {{#if:{{{coachteams6|}}}|{{{coachyears6|–}}}}}
| data157 = {{{coachteams6|}}}
| label158 = {{#if:{{{coachteams7|}}}|{{{coachyears7|–}}}}}
| data158 = {{{coachteams7|}}}
| label159 = {{#if:{{{coachteams8|}}}|{{{coachyears8|–}}}}}
| data159 = {{{coachteams8|}}}
| label160 = {{#if:{{{coachteams9|}}}|{{{coachyears9|–}}}}}
| data160 = {{{coachteams9|}}}
| label161 = {{#if:{{{coachteams10|}}}|{{{coachyears10|–}}}}}
| data161 = {{{coachteams10|}}}
| label162 = {{#if:{{{coachteams11|}}}|{{{coachyears11|–}}}}}
| data162 = {{{coachteams11|}}}
| label163 = {{#if:{{{coachteams12|}}}|{{{coachyears12|–}}}}}
| data163 = {{{coachteams12|}}}
| label164 = {{#if:{{{coachteams13|}}}|{{{coachyears13|–}}}}}
| data164 = {{{coachteams13|}}}
| label165 = {{#if:{{{coachteams14|}}}|{{{coachyears14|–}}}}}
| data165 = {{{coachteams14|}}}
| label166 = {{#if:{{{coachteams15|}}}|{{{coachyears15|–}}}}}
| data166 = {{{coachteams15|}}}
| label167 = {{#if:{{{coachteams16|}}}|{{{coachyears16|–}}}}}
| data167 = {{{coachteams16|}}}
| label168 = {{#if:{{{coachteams17|}}}|{{{coachyears17|–}}}}}
| data168 = {{{coachteams17|}}}
| label169 = {{#if:{{{coachteams18|}}}|{{{coachyears18|–}}}}}
| data169 = {{{coachteams18|}}}
| label170 = {{#if:{{{coachteams19|}}}|{{{coachyears19|–}}}}}
| data170 = {{{coachteams19|}}}
| label171 = {{#if:{{{coachteams20|}}}|{{{coachyears20|–}}}}}
| data171 = {{{coachteams20|}}}
| data172 = {{#if:{{{ru_coachupdate|}}}|{{Infobox rugby biography/correct date|{{{ru_coachupdate|}}}}}}}
<!--
*****RU REFEREE*****
-->
| header180 = {{#if:{{{refereecomps1|}}}|Refereeing career}}
| label181 = {{#if:{{{refereecomps1|}}}|'''Years'''}}
| data181a = {{#if:{{{refereecomps1|}}}|'''Competition'''}}
| data181c = {{#if:{{{refereecomps1|}}}|'''Apps'''}}
| label182 = {{#if:{{{refereecomps1|}}}|<nowiki />{{{refereeyears1|-}}}}}
| data182a = {{{refereecomps1|}}}
| data182c = {{{refereeapps1|}}}
| label183 = {{#if:{{{refereecomps2|}}}|<nowiki />{{{refereeyears2|–}}}}}
| data183a = {{{refereecomps2|}}}
| data183c = {{{refereeapps2|}}}
| label184 = {{#if:{{{refereecomps3|}}}|<nowiki />{{{refereeyears3|–}}}}}
| data184a = {{{refereecomps3|}}}
| data184c = {{{refereeapps3|}}}
| label185 = {{#if:{{{refereecomps4|}}}|<nowiki />{{{refereeyears4|–}}}}}
| data185a = {{{refereecomps4|}}}
| data185c = {{{refereeapps4|}}}
| label186 = {{#if:{{{refereecomps5|}}}|<nowiki />{{{refereeyears5|–}}}}}
| data186a = {{{refereecomps5|}}}
| data186c = {{{refereeapps5|}}}
| label187 = {{#if:{{{refereecomps6|}}}|<nowiki />{{{refereeyears6|–}}}}}
| data187a = {{{refereecomps6|}}}
| data187c = {{{refereeapps6|}}}
| label188 = {{#if:{{{refereecomps7|}}}|<nowiki />{{{refereeyears7|–}}}}}
| data188a = {{{refereecomps7|}}}
| data188c = {{{refereeapps7|}}}
| label189 = {{#if:{{{refereecomps8|}}}|<nowiki />{{{refereeyears8|–}}}}}
| data189a = {{{refereecomps8|}}}
| data189c = {{{refereeapps8|}}}
| label190 = {{#if:{{{refereecomps9|}}}|<nowiki />{{{refereeyears9|–}}}}}
| data190a = {{{refereecomps9|}}}
| data190c = {{{refereeapps9|}}}
| label191 = {{#if:{{{refereecomps10|}}}|<nowiki />{{{refereeyears10|–}}}}}
| data191a = {{{refereecomps10|}}}
| data191c = {{{refereeapps10|}}}
| label192 = {{#if:{{{refereecomps11|}}}|<nowiki />{{{refereeyears11|–}}}}}
| data192a = {{{refereecomps11|}}}
| data192c = {{{refereeapps11|}}}
| label193 = {{#if:{{{refereecomps12|}}}|<nowiki />{{{refereeyears12|–}}}}}
| data193a = {{{refereecomps12|}}}
| data193c = {{{refereeapps12|}}}
| label194 = {{#if:{{{refereecomps13|}}}|<nowiki />{{{refereeyears13|–}}}}}
| data194a = {{{refereecomps13|}}}
| data194c = {{{refereeapps13|}}}
| label195 = {{#if:{{{refereecomps14|}}}|<nowiki />{{{refereeyears14|–}}}}}
| data195a = {{{refereecomps14|}}}
| data195c = {{{refereeapps14|}}}
| label196 = {{#if:{{{refereecomps15|}}}|<nowiki />{{{refereeyears15|–}}}}}
| data196a = {{{refereecomps15|}}}
| data196c = {{{refereeapps15|}}}
| label197 = {{#if:{{{refereecomps16|}}}|<nowiki />{{{refereeyears16|–}}}}}
| data197a = {{{refereecomps16|}}}
| data197c = {{{refereeapps16|}}}
| label198 = {{#if:{{{refereecomps17|}}}|<nowiki />{{{refereeyears17|–}}}}}
| data198a = {{{refereecomps17|}}}
| data198c = {{{refereeapps17|}}}
| label199 = {{#if:{{{refereecomps18|}}}|<nowiki />{{{refereeyears18|–}}}}}
| data199a = {{{refereecomps18|}}}
| data199c = {{{refereeapps18|}}}
| label200 = {{#if:{{{refereecomps19|}}}|<nowiki />{{{refereeyears19|–}}}}}
| data200a = {{{refereecomps19|}}}
| data200c = {{{refereeapps19|}}}
| label201 = {{#if:{{{refereecomps20|}}}|<nowiki />{{{refereeyears20|–}}}}}
| data201a = {{{refereecomps20|}}}
| data201c = {{{refereeapps20|}}}
| data202 = {{#if:{{{ru_refereeupdate|}}}|{{Infobox rugby biography/correct date|{{{ru_refereeupdate|}}}}}}}
}}}}
| header40 = Official website
| data41 = {{{website|{{{url|}}}}}}
| header42 = _BLANK_
| data43 = {{{module|}}}
| data44 = {{Infobox medal templates
| medals = {{{medals|{{{medaltemplates|}}}}}}
| expand = {{#ifeq: {{lc:{{{medals-expand|{{{show-medals|}}}}}}}} | no | | yes }}
}}
| data45 = {{{module2|}}}
}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox rugby biography with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox rugby biography]] with unknown parameter "_VALUE_"|ignoreblank=y | embed | name | image | upright | alt | caption | birth_name | full_name | fullname | birth_date | birth_place | death_date | death_place | header_color | height | height_cm | height_ft | height_in | honorific_suffix | weight | weight_kg | weight_st | weight_lb | school | university | relatives | occupation | weight_update
| ru_currentposition | ru_position | position | ru_currentteam | ru_currentclub | currentclub | regexp24 = youthyears[%d][%d]* | regexp25 = youthclubs[%d][%d]* | regexp26 = amatyears[%d][%d]* | regexp27 = amatteam[%d][%d]* | regexp28 = amatapps[%d][%d]* | regexp29 = amatpoints[%d][%d]* | amatupdate | ru_amupdate | regexp30 = years[%d][%d]* | regexp31 = clubs[%d][%d]* | regexp32 = apps[%d][%d]* | regexp33 = points[%d][%d]* | totalyears | totalapps | totalpoints | clubupdate | ru_clubupdate | regexp57 = provinceyears[%d][%d]* | regexp58 = province[%d][%d]* | regexp59 = provinceapps[%d][%d]* | regexp60 = provincepoints[%d][%d]* | ru_provinceupdate | regexp38 = superyears[%d][%d]* | regexp39 = super[%d][%d]* | regexp40 = superapps[%d][%d]* | regexp41 = superpoints[%d][%d]* | superupdate | super14update | regexp42 = repyears[%d][%d]* | regexp43 = repteam[%d][%d]* | regexp44 = repcaps[%d][%d]* | regexp45 = reppoints[%d][%d]* | repupdate | ru_ntupdate | regexp54 = repsevensyears[%d][%d]* | regexp55 = repsevensteam[%d][%d]* | regexp56 = repsevenscomp[%d][%d]* | ru_sevensupdate | regexp49 = coachyears[%d][%d]* | regexp50 = coachteams[%d][%d]* | ru_coachupdate | regexp51 = refereeyears[%d][%d]* | regexp52 = refereecomps[%d][%d]* | regexp53 = refereeapps[%d][%d]* | ru_refereeupdate
| website | url | module | medals | medaltemplates | medals-expand | show-medals | module2 }}<!--
Tracking categories
If this template is *not* using RU params-->{{main other|1={{#if:{{{youthclubs1|}}}{{{amatteam1|}}}{{{clubs1|}}}{{{province1|}}}{{{super1|}}}{{{repteam1|}}}{{{repsevensteam1|}}}{{{coachteams1|}}}{{{refereecomps1|}}}||[[Category:Pages using infobox rugby biography with no rugby union parameters]]}}<!--
If this template has too many teams of any given type-->{{#if:{{{youthclubs6|}}}{{{amatteam16|}}}{{{clubs23|}}}{{{province11|}}}{{{super11|}}}{{{repteam11|}}}{{{repsevensteam11|}}}{{{coachteams21|}}}{{{refereecomps21|}}}|[[Category:Pages using infobox rugby biography with too many parameters]]}}<!--
Tracking team parameters with multiple teams -->{{infobox rugby biography/depcheck|1={{{youthclubs1|}}}|2={{{amatteam1|}}}|3={{{clubs1|}}}|4={{{province1|}}}|5={{{super1|}}}|6={{{repteam1|}}}|7={{{repsevensteam1|}}}|8={{{coachteams1|}}}|9={{{refereecomps1|}}}}}<!--
If there are non-numeric values in the numeric params (apps, points) -->{{#iferror: {{#expr:{{{amatapps1|0}}}+{{{amatapps10|0}}}+{{{amatapps2|0}}}+{{{amatapps3|0}}}+{{{amatapps4|0}}}+{{{amatapps5|0}}}+{{{amatapps6|0}}}+{{{amatapps7|0}}}+{{{amatapps8|0}}}+{{{amatapps9|0}}}+{{{amatpoints1|0}}}+{{{amatpoints10|0}}}+{{{amatpoints2|0}}}+{{{amatpoints3|0}}}+{{{amatpoints4|0}}}+{{{amatpoints5|0}}}+{{{amatpoints6|0}}}+{{{amatpoints7|0}}}+{{{amatpoints8|0}}}+{{{amatpoints9|0}}}+{{{apps1|0}}}+{{{apps10|0}}}+{{{apps11|0}}}+{{{apps12|0}}}+{{{apps13|0}}}+{{{apps14|0}}}+{{{apps15|0}}}+{{{apps16|0}}}+{{{apps17|0}}}+{{{apps18|0}}}+{{{apps19|0}}}+{{{apps2|0}}}+{{{apps20|0}}}+{{{apps21|0}}}+{{{apps22|0}}}+{{{apps3|0}}}+{{{apps4|0}}}+{{{apps5|0}}}+{{{apps6|0}}}+{{{apps7|0}}}+{{{apps8|0}}}+{{{apps9|0}}}+{{{points1|0}}}+{{{points10|0}}}+{{{points11|0}}}+{{{points12|0}}}+{{{points13|0}}}+{{{points14|0}}}+{{{points15|0}}}+{{{points16|0}}}+{{{points17|0}}}+{{{points18|0}}}+{{{points19|0}}}+{{{points2|0}}}+{{{points20|0}}}+{{{points21|0}}}+{{{points22|0}}}+{{{points3|0}}}+{{{points4|0}}}+{{{points5|0}}}+{{{points6|0}}}+{{{points7|0}}}+{{{points8|0}}}+{{{points9|0}}}+{{{provinceapps1|0}}}+{{{provinceapps10|0}}}+{{{provinceapps2|0}}}+{{{provinceapps3|0}}}+{{{provinceapps4|0}}}+{{{provinceapps5|0}}}+{{{provinceapps6|0}}}+{{{provinceapps7|0}}}+{{{provinceapps8|0}}}+{{{provinceapps9|0}}}+{{{provincepoints1|0}}}+{{{provincepoints10|0}}}+{{{provincepoints2|0}}}+{{{provincepoints3|0}}}+{{{provincepoints4|0}}}+{{{provincepoints5|0}}}+{{{provincepoints6|0}}}+{{{provincepoints7|0}}}+{{{provincepoints8|0}}}+{{{provincepoints9|0}}}+{{{refereeapps1|0}}}+{{{refereeapps10|0}}}+{{{refereeapps11|0}}}+{{{refereeapps12|0}}}+{{{refereeapps13|0}}}+{{{refereeapps14|0}}}+{{{refereeapps15|0}}}+{{{refereeapps16|0}}}+{{{refereeapps17|0}}}+{{{refereeapps18|0}}}+{{{refereeapps19|0}}}+{{{refereeapps2|0}}}+{{{refereeapps20|0}}}+{{{refereeapps3|0}}}+{{{refereeapps4|0}}}+{{{refereeapps5|0}}}+{{{refereeapps6|0}}}+{{{refereeapps7|0}}}+{{{refereeapps8|0}}}+{{{refereeapps9|0}}}+{{{repcaps1|0}}}+{{{repcaps10|0}}}+{{{repcaps2|0}}}+{{{repcaps3|0}}}+{{{repcaps4|0}}}+{{{repcaps5|0}}}+{{{repcaps6|0}}}+{{{repcaps7|0}}}+{{{repcaps8|0}}}+{{{repcaps9|0}}}+{{{reppoints1|0}}}+{{{reppoints10|0}}}+{{{reppoints2|0}}}+{{{reppoints3|0}}}+{{{reppoints4|0}}}+{{{reppoints5|0}}}+{{{reppoints6|0}}}+{{{reppoints7|0}}}+{{{reppoints8|0}}}+{{{reppoints9|0}}}+{{{repsevenscomp1|0}}}+{{{repsevenscomp10|0}}}+{{{repsevenscomp2|0}}}+{{{repsevenscomp3|0}}}+{{{repsevenscomp4|0}}}+{{{repsevenscomp5|0}}}+{{{repsevenscomp6|0}}}+{{{repsevenscomp7|0}}}+{{{repsevenscomp8|0}}}+{{{repsevenscomp9|0}}}+{{{superapps1|0}}}+{{{superapps10|0}}}+{{{superapps2|0}}}+{{{superapps3|0}}}+{{{superapps4|0}}}+{{{superapps5|0}}}+{{{superapps6|0}}}+{{{superapps7|0}}}+{{{superapps8|0}}}+{{{superapps9|0}}}+{{{superpoints1|0}}}+{{{superpoints10|0}}}+{{{superpoints2|0}}}+{{{superpoints3|0}}}+{{{superpoints4|0}}}+{{{superpoints5|0}}}+{{{superpoints6|0}}}+{{{superpoints7|0}}}+{{{superpoints8|0}}}+{{{superpoints9|0}}}}} | [[Category:Pages using infobox rugby biography with non-numeric numeric parameters]]| }}<!--
If there is an image available but it's not in the infobox-->{{#ifeq:{{Yesno|{{{embed|no}}}}}|yes||{{#if:{{{image|}}}||{{#if:{{#invoke:wd|property|P18}}|[[Category:Pages using infobox rugby biography with available image]]}}}}}} }}<noinclude>
{{documentation}}<!-- add category and language links to the /doc sub-page, not here -->
</noinclude>
h56cfeome0kas0wj1dxhm5dwncn8py5
73961
73960
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_rugby_biography]]
73960
wikitext
text/x-wiki
<includeonly>{{short description|Rugby player|noreplace}}{{#invoke:infobox|infoboxTemplate
| child = {{Yesno|{{{embed|no}}}}}
| bodyclass = vcard
| title = {{#ifeq:{{Yesno|{{{embed|no}}}}}|yes
|
|<div class="fn">{{{name|{{PAGENAMEBASE}}}}}</div>{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 77%; font-weight: normal; display:inline;">{{{honorific_suffix|}}}</div>}}
}}
| headerstyle = background-color: {{{header_color|#b0c4de}}};color:inherit;
| labelstyle = white-space:nowrap;province
| autoheaders = y
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|sizedefault=frameless|upright={{{upright|1}}}|alt={{{alt|}}}}}
| caption = {{{caption|}}}
| label1 = Full name
| data1 = {{{full_name|{{{fullname|}}}}}}
| label3 = Born
| data3 = {{br separated entries
|1={{#if:{{{birth_name|}}}|<span class="nickname">{{{birth_name|}}}</span>}}
|2={{#invoke:person date|birth}}
|3={{#if:{{{birth_place|}}}|<div class="birthplace">{{{birth_place|}}}</div>}}
}}
| label4 = Died
| data4 = {{br separated entries
|1={{#invoke:person date|death}}
|2={{#if:{{{death_place|}}}|<div class="deathplace">{{{death_place|}}}</div>}}
}}
| label7 = Height
| data7 = {{#if:{{{height|}}}{{{height_cm|}}}{{{height_ft|}}}{{{height_in|}}}|{{convinfobox|{{{height_cm|}}}|cm|{{{height_ft|}}}|ft|{{{height_in|}}}|in|{{#if:{{{height_ft|}}}{{{height_in|}}}|0}}}} {{#if: {{{height|}}} | {{Infobox person/height|{{{height}}}}}}}}}
| label8 = Weight
| data8 = {{#if:{{{weight|}}}{{{weight_kg|}}}{{{weight_st|}}}{{{weight_lb|}}}|{{convinfobox|{{{weight_kg|}}}|kg|{{{weight_st|}}}|st|{{{weight_lb|}}}|lb|{{#if:{{{weight_kg|}}}{{{weight_lb|}}}|0}}}} {{#if: {{{weight|}}} | {{Infobox person/weight|{{{weight}}}}}}}}}
| label9 = School
| data9 = {{{school|}}}
| label10 = University
| data10 = {{{university|}}}
| label11 = Notable relative{{pluralize from text|{{{relatives|}}}|likely=(s)|plural=s}}
| data11 = {{{relatives|}}}
| label14 = Occupation{{pluralize from text|{{{occupation|}}}|likely=(s)|plural=s}}
| data14 = {{{occupation|}}}
| data15 = {{Infobox rugby biography/correct date|{{{weight_update|}}}|pretext= Height and weight}}
<!--
***Rugby Union***
-->
| header30 = Rugby union career
| data31 = {{#if:{{{ru_currentposition|{{{ru_position|{{{position|}}}}}}}}}{{{ru_currentteam|{{{currentclub|{{{ru_currentclub|}}}}}}}}}{{{youthclubs1|}}}{{{amatteam1|}}}{{{clubs1|}}}{{{ru_province1|}}}{{{super1|}}}{{{repteam1|}}}{{{ru_sevensnationalteam1|{{{repsevensteam1|}}}}}}{{{coachteams1|}}}{{{refereecomps1|}}}|{{#invoke:infobox3cols|infoboxTemplate
| child = yes
| headerstyle = background-color: #e0ffff;color:inherit;
| labelstyle = white-space:nowrap; font-weight: normal;
| datastyle = white-space: nowrap; vertical-align: baseline
| datastylea = white-space: nowrap; vertical-align: baseline
| datastyleb = white-space: nowrap; vertical-align: baseline; text-align: right
| datastylec = white-space: nowrap; vertical-align: baseline; text-align: right
| label4 = '''Position{{pluralize from text|{{If empty | {{{ru_currentposition|}}} | {{{ru_position|}}} | {{{position|}}} }}|likely=(s)|plural=s}}'''
| class4 = role
| data4 = {{If empty | {{{ru_currentposition|}}} | {{{ru_position|}}} | {{{position|}}} }}
| label5 = '''Current team'''
| class5 = org
| data5 = {{If empty | {{{ru_currentteam|}}} | {{{currentclub|}}} | {{{ru_currentclub|}}} }}
<!--
*****RU YOUTH*****
-->
| header10 = {{#if:{{{youthclubs1|}}}|Youth career}}
| label11 = {{#if:{{{youthclubs1|}}}|{{{youthyears1|-}}}}}
| data11 = {{{youthclubs1|}}}
| label12 = {{#if:{{{youthclubs2|}}}|{{{youthyears2|–}}}}}
| data12 = {{{youthclubs2|}}}
| label13 = {{#if:{{{youthclubs3|}}}|{{{youthyears3|–}}}}}
| data13 = {{{youthclubs3|}}}
| label14 = {{#if:{{{youthclubs4|}}}|{{{youthyears4|–}}}}}
| data14 = {{{youthclubs4|}}}
| label15 = {{#if:{{{youthclubs5|}}}|{{{youthyears5|–}}}}}
| data15 = {{{youthclubs5|}}}
<!--
*****RU AMATEUR*****
-->
| header20 = {{#if:{{{amatteam1|}}}|Amateur team(s)}}
| label21 = {{#if:{{{amatteam1|}}}|'''Years'''}}
| data21a = {{#if:{{{amatteam1|}}}|'''Team'''}}
| data21b = {{#if:{{{amatteam1|}}}|'''Apps'''}}
| data21c = {{#if:{{{amatteam1|}}}|'''(Points)'''}}
| label22 = {{#if:{{{amatteam1|}}}|<nowiki />{{{amatyears1|–}}}}}
| data22a = {{{amatteam1|}}}
| data22b = {{{amatapps1|}}}
| data22c = {{#if:{{{amatpoints1|}}}|({{{amatpoints1|}}})}}
| label23 = {{#if:{{{amatteam2|}}}|<nowiki />{{{amatyears2|–}}}}}
| data23a = {{{amatteam2|}}}
| data23b = {{{amatapps2|}}}
| data23c = {{#if:{{{amatpoints2|}}}|({{{amatpoints2}}})}}
| label24 = {{#if:{{{amatteam3|}}}|<nowiki />{{{amatyears3|–}}}}}
| data24a = {{{amatteam3|}}}
| data24b = {{{amatapps3|}}}
| data24c = {{#if:{{{amatpoints3|}}}|({{{amatpoints3}}})}}
| label25 = {{#if:{{{amatteam4|}}}|<nowiki />{{{amatyears4|–}}}}}
| data25a = {{{amatteam4|}}}
| data25b = {{{amatapps4|}}}
| data25c = {{#if:{{{amatpoints4|}}}|({{{amatpoints4}}})}}
| label26 = {{#if:{{{amatteam5|}}}|<nowiki />{{{amatyears5|–}}}}}
| data26a = {{{amatteam5|}}}
| data26b = {{{amatapps5|}}}
| data26c = {{#if:{{{amatpoints5|}}}|({{{amatpoints5}}})}}
| label27 = {{#if:{{{amatteam6|}}}|<nowiki />{{{amatyears6|–}}}}}
| data27a = {{{amatteam6|}}}
| data27b = {{{amatapps6|}}}
| data27c = {{#if:{{{amatpoints6|}}}|({{{amatpoints6}}})}}
| label28 = {{#if:{{{amatteam7|}}}|<nowiki />{{{amatyears7|–}}}}}
| data28a = {{{amatteam7|}}}
| data28b = {{{amatapps7|}}}
| data28c = {{#if:{{{amatpoints7|}}}|({{{amatpoints7}}})}}
| label29 = {{#if:{{{amatteam8|}}}|<nowiki />{{{amatyears8|–}}}}}
| data29a = {{{amatteam8|}}}
| data29b = {{{amatapps8|}}}
| data29c = {{#if:{{{amatpoints8|}}}|({{{amatpoints8}}})}}
| label30 = {{#if:{{{amatteam9|}}}|<nowiki />{{{amatyears9|–}}}}}
| data30a = {{{amatteam9|}}}
| data30b = {{{amatapps9|}}}
| data30c = {{#if:{{{amatpoints9|}}}|({{{amatpoints9}}})}}
| label31 = {{#if:{{{amatteam10|}}}|<nowiki />{{{amatyears10|–}}}}}
| data31a = {{{amatteam10|}}}
| data31b = {{{amatapps10|}}}
| data31c = {{#if:{{{amatpoints10|}}}|({{{amatpoints10}}})}}
| label32 = {{#if:{{{amatteam11|}}}|<nowiki />{{{amatyears11|–}}}}}
| data32a = {{{amatteam11|}}}
| data32b = {{{amatapps11|}}}
| data32c = {{#if:{{{amatpoints11|}}}|({{{amatpoints11}}})}}
| label33 = {{#if:{{{amatteam12|}}}|<nowiki />{{{amatyears12|–}}}}}
| data33a = {{{amatteam12|}}}
| data33b = {{{amatapps12|}}}
| data33c = {{#if:{{{amatpoints12|}}}|({{{amatpoints12}}})}}
| label34 = {{#if:{{{amatteam13|}}}|<nowiki />{{{amatyears13|–}}}}}
| data34a = {{{amatteam13|}}}
| data34b = {{{amatapps13|}}}
| data34c = {{#if:{{{amatpoints13|}}}|({{{amatpoints13}}})}}
| label35 = {{#if:{{{amatteam14|}}}|<nowiki />{{{amatyears14|–}}}}}
| data35a = {{{amatteam14|}}}
| data35b = {{{amatapps14|}}}
| data35c = {{#if:{{{amatpoints14|}}}|({{{amatpoints14}}})}}
| label36 = {{#if:{{{amatteam15|}}}|<nowiki />{{{amatyears15|–}}}}}
| data36a = {{{amatteam15|}}}
| data36b = {{{amatapps15|}}}
| data36c = {{#if:{{{amatpoints15|}}}|({{{amatpoints15}}})}}
| data37 = {{#if:{{{amatupdate|{{{ru_amupdate|}}}}}}|{{Infobox rugby biography/correct date|{{{amatupdate|{{{ru_amupdate|}}}}}}}}}}
<!--
*****RU SENIOR*****
-->
| header40 = {{#if:{{{clubs1|}}}|Senior career}}
| label41 = {{#if:{{{clubs1|}}}|'''Years'''}}
| data41a = {{#if:{{{clubs1|}}}|'''Team'''}}
| data41b = {{#if:{{{clubs1|}}}|'''Apps'''}}
| data41c = {{#if:{{{clubs1|}}}|'''(Points)'''}}
| label42 = {{#if:{{{clubs1|}}}|<nowiki />{{{years1|–}}}}}
| data42a = {{{clubs1|}}}
| data42b = {{{apps1|}}}
| data42c = {{#if:{{{points1|}}}|({{{points1|}}})}}
| label43 = {{#if:{{{clubs2|}}}|<nowiki />{{{years2|–}}}}}
| data43a = {{{clubs2|}}}
| data43b = {{{apps2|}}}
| data43c = {{#if:{{{points2|}}}|({{{points2}}})}}
| label44 = {{#if:{{{clubs3|}}}|<nowiki />{{{years3|–}}}}}
| data44a = {{{clubs3|}}}
| data44b = {{{apps3|}}}
| data44c = {{#if:{{{points3|}}}|({{{points3}}})}}
| label45 = {{#if:{{{clubs4|}}}|<nowiki />{{{years4|–}}}}}
| data45a = {{{clubs4|}}}
| data45b = {{{apps4|}}}
| data45c = {{#if:{{{points4|}}}|({{{points4}}})}}
| label46 = {{#if:{{{clubs5|}}}|<nowiki />{{{years5|–}}}}}
| data46a = {{{clubs5|}}}
| data46b = {{{apps5|}}}
| data46c = {{#if:{{{points5|}}}|({{{points5}}})}}
| label47 = {{#if:{{{clubs6|}}}|<nowiki />{{{years6|–}}}}}
| data47a = {{{clubs6|}}}
| data47b = {{{apps6|}}}
| data47c = {{#if:{{{points6|}}}|({{{points6}}})}}
| label48 = {{#if:{{{clubs7|}}}|<nowiki />{{{years7|–}}}}}
| data48a = {{{clubs7|}}}
| data48b = {{{apps7|}}}
| data48c = {{#if:{{{points7|}}}|({{{points7}}})}}
| label49 = {{#if:{{{clubs8|}}}|<nowiki />{{{years8|–}}}}}
| data49a = {{{clubs8|}}}
| data49b = {{{apps8|}}}
| data49c = {{#if:{{{points8|}}}|({{{points8}}})}}
| label50 = {{#if:{{{clubs9|}}}|<nowiki />{{{years9|–}}}}}
| data50a = {{{clubs9|}}}
| data50b = {{{apps9|}}}
| data50c = {{#if:{{{points9|}}}|({{{points9}}})}}
| label51 = {{#if:{{{clubs10|}}}|<nowiki />{{{years10|–}}}}}
| data51a = {{{clubs10|}}}
| data51b = {{{apps10|}}}
| data51c = {{#if:{{{points10|}}}|({{{points10}}})}}
| label52 = {{#if:{{{clubs11|}}}|<nowiki />{{{years11|–}}}}}
| data52a = {{{clubs11|}}}
| data52b = {{{apps11|}}}
| data52c = {{#if:{{{points11|}}}|({{{points11}}})}}
| label53 = {{#if:{{{clubs12|}}}|<nowiki />{{{years12|–}}}}}
| data53a = {{{clubs12|}}}
| data53b = {{{apps12|}}}
| data53c = {{#if:{{{points12|}}}|({{{points12}}})}}
| label54 = {{#if:{{{clubs13|}}}|<nowiki />{{{years13|–}}}}}
| data54a = {{{clubs13|}}}
| data54b = {{{apps13|}}}
| data54c = {{#if:{{{points13|}}}|({{{points13}}})}}
| label55 = {{#if:{{{clubs14|}}}|<nowiki />{{{years14|–}}}}}
| data55a = {{{clubs14|}}}
| data55b = {{{apps14|}}}
| data55c = {{#if:{{{points14|}}}|({{{points14}}})}}
| label56 = {{#if:{{{clubs15|}}}|<nowiki />{{{years15|–}}}}}
| data56a = {{{clubs15|}}}
| data56b = {{{apps15|}}}
| data56c = {{#if:{{{points15|}}}|({{{points15}}})}}
| label57 = {{#if:{{{clubs16|}}}|<nowiki />{{{years16|–}}}}}
| data57a = {{{clubs16|}}}
| data57b = {{{apps16|}}}
| data57c = {{#if:{{{points16|}}}|({{{points16}}})}}
| label58 = {{#if:{{{clubs17|}}}|<nowiki />{{{years17|–}}}}}
| data58a = {{{clubs17|}}}
| data58b = {{{apps17|}}}
| data58c = {{#if:{{{points17|}}}|({{{points17}}})}}
| label59 = {{#if:{{{clubs18|}}}|<nowiki />{{{years18|–}}}}}
| data59a = {{{clubs18|}}}
| data59b = {{{apps18|}}}
| data59c = {{#if:{{{points18|}}}|({{{points18}}})}}
| label60 = {{#if:{{{clubs19|}}}|<nowiki />{{{years19|–}}}}}
| data60a = {{{clubs19|}}}
| data60b = {{{apps19|}}}
| data60c = {{#if:{{{points19|}}}|({{{points19}}})}}
| label61 = {{#if:{{{clubs20|}}}|<nowiki />{{{years20|–}}}}}
| data61a = {{{clubs20|}}}
| data61b = {{{apps20|}}}
| data61c = {{#if:{{{points20|}}}|({{{points20}}})}}
| label62 = {{#if:{{{clubs21|}}}|<nowiki />{{{years21|–}}}}}
| data62a = {{{clubs21|}}}
| data62b = {{{apps21|}}}
| data62c = {{#if:{{{points21|}}}|({{{points21}}})}}
| label63 = {{#if:{{{clubs22|}}}|<nowiki />{{{years22|–}}}}}
| data63a = {{{clubs22|}}}
| data63b = {{{apps22|}}}
| data63c = {{#if:{{{points22|}}}|({{{points22}}})}}
| label64 = {{#if:{{{totalyears|}}}|'''{{{totalyears}}}'''|{{#if:{{{totalapps|}}}|'''Total'''}}}}
| data64a = {{#if:{{{totalyears|}}}|{{#if:{{{totalapps|}}}|'''Total'''}}}}
| data64b = {{#if:{{{totalapps|}}}|'''{{{totalapps|}}}'''}}
| data64c = {{#if:{{{totalpoints|}}}|'''({{{totalpoints}}})'''}}
| data65 = {{#if:{{{clubupdate|{{{ru_clubupdate|}}}}}}|{{Infobox rugby biography/correct date|{{{clubupdate|{{{ru_clubupdate|}}}}}}}}}}
<!--
*****RU PROVINCIAL*****
-->
| header70 = {{#if:{{{province1|}}}|Provincial / State sides}}
| label71 = {{#if:{{{province1|}}}|'''Years'''}}
| data71a = {{#if:{{{province1|}}}|'''Team'''}}
| data71b = {{#if:{{{province1|}}}|'''Apps'''}}
| data71c = {{#if:{{{province1|}}}|'''(Points)'''}}
| label72 = {{#if:{{{province1|}}}|<nowiki />{{{provinceyears1|–}}}}}
| data72a = {{{province1|}}}
| data72b = {{{provinceapps1|}}}
| data72c = {{#if:{{{provincepoints1|}}}|({{{provincepoints1|}}})}}
| label73 = {{#if:{{{province2|}}}|<nowiki />{{{provinceyears2|-}}}}}
| data73a = {{{province2|}}}
| data73b = {{{provinceapps2|}}}
| data73c = {{#if:{{{provincepoints2|}}}|({{{provincepoints2|}}})}}
| label74 = {{#if:{{{province3|}}}|<nowiki />{{{provinceyears3|-}}}}}
| data74a = {{{province3|}}}
| data74b = {{{provinceapps3|}}}
| data74c = {{#if:{{{provincepoints3|}}}|({{{provincepoints3|}}})}}
| label75 = {{#if:{{{province4|}}}|<nowiki />{{{provinceyears4|–}}}}}
| data75a = {{{province4|}}}
| data75b = {{{provinceapps4|}}}
| data75c = {{#if:{{{provincepoints4|}}}|({{{provincepoints4}}})}}
| label76 = {{#if:{{{province5|}}}|<nowiki />{{{provinceyears5|–}}}}}
| data76a = {{{province5|}}}
| data76b = {{{provinceapps5|}}}
| data76c = {{#if:{{{provincepoints5|}}}|({{{provincepoints5}}})}}
| label77 = {{#if:{{{province6|}}}|<nowiki />{{{provinceyears6|–}}}}}
| data77a = {{{province6|}}}
| data77b = {{{provinceapps6|}}}
| data77c = {{#if:{{{provincepoints6|}}}|({{{provincepoints6}}})}}
| label78 = {{#if:{{{province7|}}}|<nowiki />{{{provinceyears7|–}}}}}
| data78a = {{{province7|}}}
| data78b = {{{provinceapps7|}}}
| data78c = {{#if:{{{provincepoints7|}}}|({{{provincepoints7}}})}}
| label79 = {{#if:{{{province8|}}}|<nowiki />{{{provinceyears8|–}}}}}
| data79a = {{{province8|}}}
| data79b = {{{provinceapps8|}}}
| data79c = {{#if:{{{provincepoints8|}}}|({{{provincepoints8}}})}}
| label80 = {{#if:{{{province9|}}}|<nowiki />{{{provinceyears9|–}}}}}
| data80a = {{{province9|}}}
| data80b = {{{provinceapps9|}}}
| data80c = {{#if:{{{provincepoints9|}}}|({{{provincepoints9}}})}}
| label81 = {{#if:{{{province10|}}}|<nowiki />{{{provinceyears10|–}}}}}
| data81a = {{{province10|}}}
| data81b = {{{provinceapps10|}}}
| data81c = {{#if:{{{provincepoints10|}}}|({{{provincepoints10}}})}}
| data82 = {{#if:{{{ru_provinceupdate|}}}|{{Infobox rugby biography/correct date|{{{ru_provinceupdate|}}}}}}}
<!--
*****RU SUPER RUGBY*****
-->
| header90 = {{#if:{{{super1|}}}|Super Rugby}}
| label91 = {{#if:{{{super1|}}}|'''Years'''}}
| data91a = {{#if:{{{super1|}}}|'''Team'''}}
| data91b = {{#if:{{{super1|}}}|'''Apps'''}}
| data91c = {{#if:{{{super1|}}}|'''(Points)'''}}
| label92 = {{#if:{{{super1|}}}|<nowiki />{{{superyears1|–}}}}}
| data92a = {{{super1|}}}
| data92b = {{{superapps1|}}}
| data92c = {{#if:{{{superpoints1|}}}|({{{superpoints1|}}})}}
| label93 = {{#if:{{{super2|}}}|<nowiki />{{{superyears2|–}}}}}
| data93a = {{{super2|}}}
| data93b = {{{superapps2|}}}
| data93c = {{#if:{{{superpoints2|}}}|({{{superpoints2}}})}}
| label94 = {{#if:{{{super3|}}}|<nowiki />{{{superyears3|–}}}}}
| data94a = {{{super3|}}}
| data94b = {{{superapps3|}}}
| data94c = {{#if:{{{superpoints3|}}}|({{{superpoints3}}})}}
| label95 = {{#if:{{{super4|}}}|<nowiki />{{{superyears4|–}}}}}
| data95a = {{{super4|}}}
| data95b = {{{superapps4|}}}
| data95c = {{#if:{{{superpoints4|}}}|({{{superpoints4}}})}}
| label96 = {{#if:{{{super5|}}}|<nowiki />{{{superyears5|–}}}}}
| data96a = {{{super5|}}}
| data96b = {{{superapps5|}}}
| data96c = {{#if:{{{superpoints5|}}}|({{{superpoints5}}})}}
| label97 = {{#if:{{{super6|}}}|<nowiki />{{{superyears6|–}}}}}
| data97a = {{{super6|}}}
| data97b = {{{superapps6|}}}
| data97c = {{#if:{{{superpoints6|}}}|({{{superpoints6}}})}}
| label98 = {{#if:{{{super7|}}}|<nowiki />{{{superyears7|–}}}}}
| data98a = {{{super7|}}}
| data98b = {{{superapps7|}}}
| data98c = {{#if:{{{superpoints7|}}}|({{{superpoints7}}})}}
| label99 = {{#if:{{{super8|}}}|<nowiki />{{{superyears8|–}}}}}
| data99a = {{{super8|}}}
| data99b = {{{superapps8|}}}
| data99c = {{#if:{{{superpoints8|}}}|({{{superpoints8}}})}}
| label100 = {{#if:{{{super9|}}}|<nowiki />{{{superyears9|–}}}}}
| data100a = {{{super9|}}}
| data100b = {{{superapps9|}}}
| data100c = {{#if:{{{superpoints9|}}}|({{{superpoints9}}})}}
| label101 = {{#if:{{{super10|}}}|<nowiki />{{{superyears10|–}}}}}
| data101a = {{{super10|}}}
| data101b = {{{superapps10|}}}
| data101c = {{#if:{{{superpoints10|}}}|({{{superpoints10}}})}}
| data103 = {{#if:{{{superupdate|{{{super14update|}}}}}}|{{Infobox rugby biography/correct date|{{{superupdate|{{{super14update|}}}}}}}}}}
<!--
*****RU NATIONAL TEAM*****
-->
| header110 = {{#if:{{{repteam1|}}}|International career}}
| label111 = {{#if:{{{repteam1|}}}|'''Years'''}}
| data111a = {{#if:{{{repteam1|}}}|'''Team'''}}
| data111b = {{#if:{{{repteam1|}}}|'''Apps'''}}
| data111c = {{#if:{{{repteam1|}}}|'''(Points)'''}}
| label112 = {{#if:{{{repteam1|}}}|<nowiki />{{{repyears1|–}}}}}
| data112a = {{{repteam1|}}}
| data112b = {{{repcaps1|}}}
| data112c = {{#if:{{{reppoints1|}}}|({{{reppoints1|}}})}}
| label113 = {{#if:{{{repteam2|}}}|<nowiki />{{{repyears2|–}}}}}
| data113a = {{{repteam2|}}}
| data113b = {{{repcaps2|}}}
| data113c = {{#if:{{{reppoints2|}}}|({{{reppoints2|}}})}}
| label114 = {{#if:{{{repteam3|}}}|<nowiki />{{{repyears3|–}}}}}
| data114a = {{{repteam3|}}}
| data114b = {{{repcaps3|}}}
| data114c = {{#if:{{{reppoints3|}}}|({{{reppoints3|}}})}}
| label115 = {{#if:{{{repteam4|}}}|<nowiki />{{{repyears4|–}}}}}
| data115a = {{{repteam4|}}}
| data115b = {{{repcaps4|}}}
| data115c = {{#if:{{{reppoints4|}}}|({{{reppoints4|}}})}}
| label116 = {{#if:{{{repteam5|}}}|<nowiki />{{{repyears5|–}}}}}
| data116a = {{{repteam5|}}}
| data116b = {{{repcaps5|}}}
| data116c = {{#if:{{{reppoints5|}}}|({{{reppoints5|}}})}}
| label117 = {{#if:{{{repteam6|}}}|<nowiki />{{{repyears6|–}}}}}
| data117a = {{{repteam6|}}}
| data117b = {{{repcaps6|}}}
| data117c = {{#if:{{{reppoints6|}}}|({{{reppoints6|}}})}}
| label118 = {{#if:{{{repteam7|}}}|<nowiki />{{{repyears7|–}}}}}
| data118a = {{{repteam7|}}}
| data118b = {{{repcaps7|}}}
| data118c = {{#if:{{{reppoints7|}}}|({{{reppoints7|}}})}}
| label119 = {{#if:{{{repteam8|}}}|<nowiki />{{{repyears8|–}}}}}
| data119a = {{{repteam8|}}}
| data119b = {{{repcaps8|}}}
| data119c = {{#if:{{{reppoints8|}}}|({{{reppoints8|}}})}}
| label120 = {{#if:{{{repteam9|}}}|<nowiki />{{{repyears9|–}}}}}
| data120a = {{{repteam9|}}}
| data120b = {{{repcaps9|}}}
| data120c = {{#if:{{{reppoints9|}}}|({{{reppoints9|}}})}}
| label121 = {{#if:{{{repteam10|}}}|<nowiki />{{{repyears10|–}}}}}
| data121a = {{{repteam10|}}}
| data121b = {{{repcaps10|}}}
| data121c = {{#if:{{{reppoints10|}}}|({{{reppoints10|}}})}}
| data122 = {{#if:{{{repupdate|{{{ru_ntupdate|}}}}}}|{{Infobox rugby biography/correct date|{{{repupdate|{{{ru_ntupdate|}}}}}}}}}}
<!--
*****RU SEVENS NATIONAL TEAM*****
-->
| header130 = {{#if:{{{repsevensteam1|}}}|National sevens team{{#if:{{{repsevensteam2|}}}|s}}}}
| label131 = {{#if:{{{repsevensteam1|}}}|'''Years'''}}
| data131a = {{#if:{{{repsevensteam1|}}}|'''Team'''}}
| data131c = {{#if:{{{repsevensteam1|}}}|'''Comps'''}}
| label132 = {{#if:{{{repsevensteam1|}}}|<nowiki />{{{repsevensyears1|–}}}}}
| data132a = {{{repsevensteam1|}}}
| data132c = {{{repsevenscomp1|}}}
| label133 = {{#if:{{{repsevensteam2|}}}|<nowiki />{{{repsevensyears2|–}}}}}
| data133a = {{{repsevensteam2|}}}
| data133c = {{{repsevenscomp2|}}}
| label134 = {{#if:{{{repsevensteam3|}}}|<nowiki />{{{repsevensyears3|–}}}}}
| data134a = {{{repsevensteam3|}}}
| data134c = {{{repsevenscomp3|}}}
| label135 = {{#if:{{{repsevensteam4|}}}|<nowiki />{{{repsevensyears4|–}}}}}
| data135a = {{{repsevensteam4|}}}
| data135c = {{{repsevenscomp4|}}}
| label136 = {{#if:{{{repsevensteam5|}}}|<nowiki />{{{repsevensyears5|–}}}}}
| data136a = {{{repsevensteam5|}}}
| data136c = {{{repsevenscomp5|}}}
| label137 = {{#if:{{{repsevensteam6|}}}|<nowiki />{{{repsevensyears6|–}}}}}
| data137a = {{{repsevensteam6|}}}
| data137c = {{{repsevenscomp6|}}}
| label138 = {{#if:{{{repsevensteam7|}}}|<nowiki />{{{repsevensyears7|–}}}}}
| data138a = {{{repsevensteam7|}}}
| data138c = {{{repsevenscomp7|}}}
| label139 = {{#if:{{{repsevensteam8|}}}|<nowiki />{{{repsevensyears8|–}}}}}
| data139a = {{{repsevensteam8|}}}
| data139c = {{{repsevenscomp8|}}}
| label140 = {{#if:{{{repsevensteam9|}}}|<nowiki />{{{repsevensyears9|–}}}}}
| data140a = {{{repsevensteam9|}}}
| data140c = {{{repsevenscomp9|}}}
| label141 = {{#if:{{{repsevensteam10|}}}|<nowiki />{{{repsevensyears10|–}}}}}
| data141a = {{{repsevensteam10|}}}
| data141c = {{{repsevenscomp10|}}}
| data142 = {{#if:{{{ru_sevensupdate|}}}|{{Infobox rugby biography/correct date|{{{ru_sevensupdate|}}}}}}}
<!--
*****RU COACH*****
-->
| header150 = {{#if:{{{coachteams1|}}}|Coaching career}}
| label151 = {{#if:{{{coachteams1|}}}|'''Years'''}}
| data151 = {{#if:{{{coachteams1|}}}|'''Team'''}}
| label152 = {{#if:{{{coachteams1|}}}|{{{coachyears1|–}}}}}
| data152 = {{{coachteams1|}}}
| label153 = {{#if:{{{coachteams2|}}}|{{{coachyears2|–}}}}}
| data153 = {{{coachteams2|}}}
| label154 = {{#if:{{{coachteams3|}}}|{{{coachyears3|–}}}}}
| data154 = {{{coachteams3|}}}
| label155 = {{#if:{{{coachteams4|}}}|{{{coachyears4|–}}}}}
| data155 = {{{coachteams4|}}}
| label156 = {{#if:{{{coachteams5|}}}|{{{coachyears5|–}}}}}
| data156 = {{{coachteams5|}}}
| label157 = {{#if:{{{coachteams6|}}}|{{{coachyears6|–}}}}}
| data157 = {{{coachteams6|}}}
| label158 = {{#if:{{{coachteams7|}}}|{{{coachyears7|–}}}}}
| data158 = {{{coachteams7|}}}
| label159 = {{#if:{{{coachteams8|}}}|{{{coachyears8|–}}}}}
| data159 = {{{coachteams8|}}}
| label160 = {{#if:{{{coachteams9|}}}|{{{coachyears9|–}}}}}
| data160 = {{{coachteams9|}}}
| label161 = {{#if:{{{coachteams10|}}}|{{{coachyears10|–}}}}}
| data161 = {{{coachteams10|}}}
| label162 = {{#if:{{{coachteams11|}}}|{{{coachyears11|–}}}}}
| data162 = {{{coachteams11|}}}
| label163 = {{#if:{{{coachteams12|}}}|{{{coachyears12|–}}}}}
| data163 = {{{coachteams12|}}}
| label164 = {{#if:{{{coachteams13|}}}|{{{coachyears13|–}}}}}
| data164 = {{{coachteams13|}}}
| label165 = {{#if:{{{coachteams14|}}}|{{{coachyears14|–}}}}}
| data165 = {{{coachteams14|}}}
| label166 = {{#if:{{{coachteams15|}}}|{{{coachyears15|–}}}}}
| data166 = {{{coachteams15|}}}
| label167 = {{#if:{{{coachteams16|}}}|{{{coachyears16|–}}}}}
| data167 = {{{coachteams16|}}}
| label168 = {{#if:{{{coachteams17|}}}|{{{coachyears17|–}}}}}
| data168 = {{{coachteams17|}}}
| label169 = {{#if:{{{coachteams18|}}}|{{{coachyears18|–}}}}}
| data169 = {{{coachteams18|}}}
| label170 = {{#if:{{{coachteams19|}}}|{{{coachyears19|–}}}}}
| data170 = {{{coachteams19|}}}
| label171 = {{#if:{{{coachteams20|}}}|{{{coachyears20|–}}}}}
| data171 = {{{coachteams20|}}}
| data172 = {{#if:{{{ru_coachupdate|}}}|{{Infobox rugby biography/correct date|{{{ru_coachupdate|}}}}}}}
<!--
*****RU REFEREE*****
-->
| header180 = {{#if:{{{refereecomps1|}}}|Refereeing career}}
| label181 = {{#if:{{{refereecomps1|}}}|'''Years'''}}
| data181a = {{#if:{{{refereecomps1|}}}|'''Competition'''}}
| data181c = {{#if:{{{refereecomps1|}}}|'''Apps'''}}
| label182 = {{#if:{{{refereecomps1|}}}|<nowiki />{{{refereeyears1|-}}}}}
| data182a = {{{refereecomps1|}}}
| data182c = {{{refereeapps1|}}}
| label183 = {{#if:{{{refereecomps2|}}}|<nowiki />{{{refereeyears2|–}}}}}
| data183a = {{{refereecomps2|}}}
| data183c = {{{refereeapps2|}}}
| label184 = {{#if:{{{refereecomps3|}}}|<nowiki />{{{refereeyears3|–}}}}}
| data184a = {{{refereecomps3|}}}
| data184c = {{{refereeapps3|}}}
| label185 = {{#if:{{{refereecomps4|}}}|<nowiki />{{{refereeyears4|–}}}}}
| data185a = {{{refereecomps4|}}}
| data185c = {{{refereeapps4|}}}
| label186 = {{#if:{{{refereecomps5|}}}|<nowiki />{{{refereeyears5|–}}}}}
| data186a = {{{refereecomps5|}}}
| data186c = {{{refereeapps5|}}}
| label187 = {{#if:{{{refereecomps6|}}}|<nowiki />{{{refereeyears6|–}}}}}
| data187a = {{{refereecomps6|}}}
| data187c = {{{refereeapps6|}}}
| label188 = {{#if:{{{refereecomps7|}}}|<nowiki />{{{refereeyears7|–}}}}}
| data188a = {{{refereecomps7|}}}
| data188c = {{{refereeapps7|}}}
| label189 = {{#if:{{{refereecomps8|}}}|<nowiki />{{{refereeyears8|–}}}}}
| data189a = {{{refereecomps8|}}}
| data189c = {{{refereeapps8|}}}
| label190 = {{#if:{{{refereecomps9|}}}|<nowiki />{{{refereeyears9|–}}}}}
| data190a = {{{refereecomps9|}}}
| data190c = {{{refereeapps9|}}}
| label191 = {{#if:{{{refereecomps10|}}}|<nowiki />{{{refereeyears10|–}}}}}
| data191a = {{{refereecomps10|}}}
| data191c = {{{refereeapps10|}}}
| label192 = {{#if:{{{refereecomps11|}}}|<nowiki />{{{refereeyears11|–}}}}}
| data192a = {{{refereecomps11|}}}
| data192c = {{{refereeapps11|}}}
| label193 = {{#if:{{{refereecomps12|}}}|<nowiki />{{{refereeyears12|–}}}}}
| data193a = {{{refereecomps12|}}}
| data193c = {{{refereeapps12|}}}
| label194 = {{#if:{{{refereecomps13|}}}|<nowiki />{{{refereeyears13|–}}}}}
| data194a = {{{refereecomps13|}}}
| data194c = {{{refereeapps13|}}}
| label195 = {{#if:{{{refereecomps14|}}}|<nowiki />{{{refereeyears14|–}}}}}
| data195a = {{{refereecomps14|}}}
| data195c = {{{refereeapps14|}}}
| label196 = {{#if:{{{refereecomps15|}}}|<nowiki />{{{refereeyears15|–}}}}}
| data196a = {{{refereecomps15|}}}
| data196c = {{{refereeapps15|}}}
| label197 = {{#if:{{{refereecomps16|}}}|<nowiki />{{{refereeyears16|–}}}}}
| data197a = {{{refereecomps16|}}}
| data197c = {{{refereeapps16|}}}
| label198 = {{#if:{{{refereecomps17|}}}|<nowiki />{{{refereeyears17|–}}}}}
| data198a = {{{refereecomps17|}}}
| data198c = {{{refereeapps17|}}}
| label199 = {{#if:{{{refereecomps18|}}}|<nowiki />{{{refereeyears18|–}}}}}
| data199a = {{{refereecomps18|}}}
| data199c = {{{refereeapps18|}}}
| label200 = {{#if:{{{refereecomps19|}}}|<nowiki />{{{refereeyears19|–}}}}}
| data200a = {{{refereecomps19|}}}
| data200c = {{{refereeapps19|}}}
| label201 = {{#if:{{{refereecomps20|}}}|<nowiki />{{{refereeyears20|–}}}}}
| data201a = {{{refereecomps20|}}}
| data201c = {{{refereeapps20|}}}
| data202 = {{#if:{{{ru_refereeupdate|}}}|{{Infobox rugby biography/correct date|{{{ru_refereeupdate|}}}}}}}
}}}}
| header40 = Official website
| data41 = {{{website|{{{url|}}}}}}
| header42 = _BLANK_
| data43 = {{{module|}}}
| data44 = {{Infobox medal templates
| medals = {{{medals|{{{medaltemplates|}}}}}}
| expand = {{#ifeq: {{lc:{{{medals-expand|{{{show-medals|}}}}}}}} | no | | yes }}
}}
| data45 = {{{module2|}}}
}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox rugby biography with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox rugby biography]] with unknown parameter "_VALUE_"|ignoreblank=y | embed | name | image | upright | alt | caption | birth_name | full_name | fullname | birth_date | birth_place | death_date | death_place | header_color | height | height_cm | height_ft | height_in | honorific_suffix | weight | weight_kg | weight_st | weight_lb | school | university | relatives | occupation | weight_update
| ru_currentposition | ru_position | position | ru_currentteam | ru_currentclub | currentclub | regexp24 = youthyears[%d][%d]* | regexp25 = youthclubs[%d][%d]* | regexp26 = amatyears[%d][%d]* | regexp27 = amatteam[%d][%d]* | regexp28 = amatapps[%d][%d]* | regexp29 = amatpoints[%d][%d]* | amatupdate | ru_amupdate | regexp30 = years[%d][%d]* | regexp31 = clubs[%d][%d]* | regexp32 = apps[%d][%d]* | regexp33 = points[%d][%d]* | totalyears | totalapps | totalpoints | clubupdate | ru_clubupdate | regexp57 = provinceyears[%d][%d]* | regexp58 = province[%d][%d]* | regexp59 = provinceapps[%d][%d]* | regexp60 = provincepoints[%d][%d]* | ru_provinceupdate | regexp38 = superyears[%d][%d]* | regexp39 = super[%d][%d]* | regexp40 = superapps[%d][%d]* | regexp41 = superpoints[%d][%d]* | superupdate | super14update | regexp42 = repyears[%d][%d]* | regexp43 = repteam[%d][%d]* | regexp44 = repcaps[%d][%d]* | regexp45 = reppoints[%d][%d]* | repupdate | ru_ntupdate | regexp54 = repsevensyears[%d][%d]* | regexp55 = repsevensteam[%d][%d]* | regexp56 = repsevenscomp[%d][%d]* | ru_sevensupdate | regexp49 = coachyears[%d][%d]* | regexp50 = coachteams[%d][%d]* | ru_coachupdate | regexp51 = refereeyears[%d][%d]* | regexp52 = refereecomps[%d][%d]* | regexp53 = refereeapps[%d][%d]* | ru_refereeupdate
| website | url | module | medals | medaltemplates | medals-expand | show-medals | module2 }}<!--
Tracking categories
If this template is *not* using RU params-->{{main other|1={{#if:{{{youthclubs1|}}}{{{amatteam1|}}}{{{clubs1|}}}{{{province1|}}}{{{super1|}}}{{{repteam1|}}}{{{repsevensteam1|}}}{{{coachteams1|}}}{{{refereecomps1|}}}||[[Category:Pages using infobox rugby biography with no rugby union parameters]]}}<!--
If this template has too many teams of any given type-->{{#if:{{{youthclubs6|}}}{{{amatteam16|}}}{{{clubs23|}}}{{{province11|}}}{{{super11|}}}{{{repteam11|}}}{{{repsevensteam11|}}}{{{coachteams21|}}}{{{refereecomps21|}}}|[[Category:Pages using infobox rugby biography with too many parameters]]}}<!--
Tracking team parameters with multiple teams -->{{infobox rugby biography/depcheck|1={{{youthclubs1|}}}|2={{{amatteam1|}}}|3={{{clubs1|}}}|4={{{province1|}}}|5={{{super1|}}}|6={{{repteam1|}}}|7={{{repsevensteam1|}}}|8={{{coachteams1|}}}|9={{{refereecomps1|}}}}}<!--
If there are non-numeric values in the numeric params (apps, points) -->{{#iferror: {{#expr:{{{amatapps1|0}}}+{{{amatapps10|0}}}+{{{amatapps2|0}}}+{{{amatapps3|0}}}+{{{amatapps4|0}}}+{{{amatapps5|0}}}+{{{amatapps6|0}}}+{{{amatapps7|0}}}+{{{amatapps8|0}}}+{{{amatapps9|0}}}+{{{amatpoints1|0}}}+{{{amatpoints10|0}}}+{{{amatpoints2|0}}}+{{{amatpoints3|0}}}+{{{amatpoints4|0}}}+{{{amatpoints5|0}}}+{{{amatpoints6|0}}}+{{{amatpoints7|0}}}+{{{amatpoints8|0}}}+{{{amatpoints9|0}}}+{{{apps1|0}}}+{{{apps10|0}}}+{{{apps11|0}}}+{{{apps12|0}}}+{{{apps13|0}}}+{{{apps14|0}}}+{{{apps15|0}}}+{{{apps16|0}}}+{{{apps17|0}}}+{{{apps18|0}}}+{{{apps19|0}}}+{{{apps2|0}}}+{{{apps20|0}}}+{{{apps21|0}}}+{{{apps22|0}}}+{{{apps3|0}}}+{{{apps4|0}}}+{{{apps5|0}}}+{{{apps6|0}}}+{{{apps7|0}}}+{{{apps8|0}}}+{{{apps9|0}}}+{{{points1|0}}}+{{{points10|0}}}+{{{points11|0}}}+{{{points12|0}}}+{{{points13|0}}}+{{{points14|0}}}+{{{points15|0}}}+{{{points16|0}}}+{{{points17|0}}}+{{{points18|0}}}+{{{points19|0}}}+{{{points2|0}}}+{{{points20|0}}}+{{{points21|0}}}+{{{points22|0}}}+{{{points3|0}}}+{{{points4|0}}}+{{{points5|0}}}+{{{points6|0}}}+{{{points7|0}}}+{{{points8|0}}}+{{{points9|0}}}+{{{provinceapps1|0}}}+{{{provinceapps10|0}}}+{{{provinceapps2|0}}}+{{{provinceapps3|0}}}+{{{provinceapps4|0}}}+{{{provinceapps5|0}}}+{{{provinceapps6|0}}}+{{{provinceapps7|0}}}+{{{provinceapps8|0}}}+{{{provinceapps9|0}}}+{{{provincepoints1|0}}}+{{{provincepoints10|0}}}+{{{provincepoints2|0}}}+{{{provincepoints3|0}}}+{{{provincepoints4|0}}}+{{{provincepoints5|0}}}+{{{provincepoints6|0}}}+{{{provincepoints7|0}}}+{{{provincepoints8|0}}}+{{{provincepoints9|0}}}+{{{refereeapps1|0}}}+{{{refereeapps10|0}}}+{{{refereeapps11|0}}}+{{{refereeapps12|0}}}+{{{refereeapps13|0}}}+{{{refereeapps14|0}}}+{{{refereeapps15|0}}}+{{{refereeapps16|0}}}+{{{refereeapps17|0}}}+{{{refereeapps18|0}}}+{{{refereeapps19|0}}}+{{{refereeapps2|0}}}+{{{refereeapps20|0}}}+{{{refereeapps3|0}}}+{{{refereeapps4|0}}}+{{{refereeapps5|0}}}+{{{refereeapps6|0}}}+{{{refereeapps7|0}}}+{{{refereeapps8|0}}}+{{{refereeapps9|0}}}+{{{repcaps1|0}}}+{{{repcaps10|0}}}+{{{repcaps2|0}}}+{{{repcaps3|0}}}+{{{repcaps4|0}}}+{{{repcaps5|0}}}+{{{repcaps6|0}}}+{{{repcaps7|0}}}+{{{repcaps8|0}}}+{{{repcaps9|0}}}+{{{reppoints1|0}}}+{{{reppoints10|0}}}+{{{reppoints2|0}}}+{{{reppoints3|0}}}+{{{reppoints4|0}}}+{{{reppoints5|0}}}+{{{reppoints6|0}}}+{{{reppoints7|0}}}+{{{reppoints8|0}}}+{{{reppoints9|0}}}+{{{repsevenscomp1|0}}}+{{{repsevenscomp10|0}}}+{{{repsevenscomp2|0}}}+{{{repsevenscomp3|0}}}+{{{repsevenscomp4|0}}}+{{{repsevenscomp5|0}}}+{{{repsevenscomp6|0}}}+{{{repsevenscomp7|0}}}+{{{repsevenscomp8|0}}}+{{{repsevenscomp9|0}}}+{{{superapps1|0}}}+{{{superapps10|0}}}+{{{superapps2|0}}}+{{{superapps3|0}}}+{{{superapps4|0}}}+{{{superapps5|0}}}+{{{superapps6|0}}}+{{{superapps7|0}}}+{{{superapps8|0}}}+{{{superapps9|0}}}+{{{superpoints1|0}}}+{{{superpoints10|0}}}+{{{superpoints2|0}}}+{{{superpoints3|0}}}+{{{superpoints4|0}}}+{{{superpoints5|0}}}+{{{superpoints6|0}}}+{{{superpoints7|0}}}+{{{superpoints8|0}}}+{{{superpoints9|0}}}}} | [[Category:Pages using infobox rugby biography with non-numeric numeric parameters]]| }}<!--
If there is an image available but it's not in the infobox-->{{#ifeq:{{Yesno|{{{embed|no}}}}}|yes||{{#if:{{{image|}}}||{{#if:{{#invoke:wd|property|P18}}|[[Category:Pages using infobox rugby biography with available image]]}}}}}} }}<noinclude>
{{documentation}}<!-- add category and language links to the /doc sub-page, not here -->
</noinclude>
h56cfeome0kas0wj1dxhm5dwncn8py5
Template:Infobox rugby biography/correct date
10
8653
73962
2025-10-15T17:35:44Z
Jonesey95
11668
fix color in dark mode per TPER
73962
wikitext
text/x-wiki
{{#if:{{{1|}}}|<div style="text-align: left;"><span style="white-space: nowrap; font-weight: bold; color: var(--color-subtle); text-align: left;">{{#if:{{{pretext|}}}|{{{pretext|}}} correct|Correct|}} as of {{{1}}}</span></div>}}
mo6da76y8gi6mk2frymzgs9sg8fg5s3
73963
73962
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_rugby_biography/correct_date]]
73962
wikitext
text/x-wiki
{{#if:{{{1|}}}|<div style="text-align: left;"><span style="white-space: nowrap; font-weight: bold; color: var(--color-subtle); text-align: left;">{{#if:{{{pretext|}}}|{{{pretext|}}} correct|Correct|}} as of {{{1}}}</span></div>}}
mo6da76y8gi6mk2frymzgs9sg8fg5s3
Template:Subst
10
8654
73964
2021-04-16T07:14:23Z
GKFX
11659
Make parameter optional
73964
wikitext
text/x-wiki
{{subst:{{#if:{{{1|}}}|[[Template:{{{1}}}|{{{1}}}]]}}}}<noinclude>
{{Documentation}}
<!-- Please add categories to the /doc subpage; interwikis go to Wikidata -->
</noinclude>
k21nqjo67xj6xdnfpkrj9u1obqsmtie
73965
73964
2026-07-11T18:59:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Subst]]
73964
wikitext
text/x-wiki
{{subst:{{#if:{{{1|}}}|[[Template:{{{1}}}|{{{1}}}]]}}}}<noinclude>
{{Documentation}}
<!-- Please add categories to the /doc subpage; interwikis go to Wikidata -->
</noinclude>
k21nqjo67xj6xdnfpkrj9u1obqsmtie
Template:Infobox person module documentation
10
8655
73966
2025-02-18T12:43:08Z
Gonnym
11662
fix noinclude
73966
wikitext
text/x-wiki
This infobox may be used to create a genre-specific section within {{tl|Infobox person}} (or similar [[:Category:People and person infobox templates|biographical infobox templates]]) for cases where a person may be notable in more than one field; a generic example is shown below. For guidance on usage, see [[Wikipedia:Infobox modules]]. Also see the [[Template:Infobox]] documentation which explains [[Template:Infobox/doc#Embedding|embedding]] and [[Template:Infobox/doc#Subboxes|subboxes]].
<syntaxhighlight lang="wikitext">
{{Infobox person
| name =
| image =
| caption =
| birth_date =
| birth_place =
| <!-- etc. -->
| module =
{{EMBEDDED TEMPLATE NAME | child=yes <!-- or embed=yes or subbox=yes -->
| parameter-1 =
| parameter-2 =
| parameter-3 =
| parameter-4 =
| <!-- etc. -->
}}
}}
</syntaxhighlight><noinclude>
[[Category:Template namespace templates]]
[[Category:Documentation shared content templates]]
</noinclude>
8ja0p0n8l65sff4pyo578k14zbysh39
73967
73966
2026-07-11T18:59:31Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_person_module_documentation]]
73966
wikitext
text/x-wiki
This infobox may be used to create a genre-specific section within {{tl|Infobox person}} (or similar [[:Category:People and person infobox templates|biographical infobox templates]]) for cases where a person may be notable in more than one field; a generic example is shown below. For guidance on usage, see [[Wikipedia:Infobox modules]]. Also see the [[Template:Infobox]] documentation which explains [[Template:Infobox/doc#Embedding|embedding]] and [[Template:Infobox/doc#Subboxes|subboxes]].
<syntaxhighlight lang="wikitext">
{{Infobox person
| name =
| image =
| caption =
| birth_date =
| birth_place =
| <!-- etc. -->
| module =
{{EMBEDDED TEMPLATE NAME | child=yes <!-- or embed=yes or subbox=yes -->
| parameter-1 =
| parameter-2 =
| parameter-3 =
| parameter-4 =
| <!-- etc. -->
}}
}}
</syntaxhighlight><noinclude>
[[Category:Template namespace templates]]
[[Category:Documentation shared content templates]]
</noinclude>
8ja0p0n8l65sff4pyo578k14zbysh39
Template:Infobox football biography/doc
10
8656
73968
2026-07-07T17:12:42Z
Gommeh
11768
Reverted edits by [[Special:Contributions/Connor-Quinn714|Connor-Quinn714]] ([[User talk:Connor-Quinn714|talk]]): vandalism ([[WP:AntiVandal|AV]])
73968
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{Short description|Wikipedia association football template}}
{{For|American football biographies|Template:Infobox gridiron football biography}}
{{High-use}}
{{Tracks Wikidata|P18|cat=No local image but image on Wikidata}}
{{Lua|Module:Infobox3cols|Module:InfoboxImage|Module:Check for unknown parameters|Module:String|Module:Footballer positions|Module:Check height}}
{{tl|Infobox football biography}} is intended to provide a quick overview of an [[association football]] (or [[Variants of association football|football variant]]) player's or manager's details to enable a reader to extract the most oft-needed information without trawling through the article proper.
{{Parameter names example
| name | image | upright | upright | alt | caption | full_name | birth_name | birth_date | birth_place | death_date | death_place | height | position | currentclub | clubnumber
| youthyears1 | youthclubs1 | youthyears2 | youthclubs2 | youthyears3 | youthclubs3 | youthyears4 | youthclubs4 | youthyears5 | youthclubs5 | youthyears6 | youthclubs6 | youthyears7 | youthclubs7 | youthyears8 | youthclubs8 | youthyears9 | youthclubs9 | youthyears10 | youthclubs10 | youthyears11 | youthclubs11 | youthyears12 | youthclubs12
| collegeyears1 | college1 | collegecaps1 | collegegoals1
| collegeyears2 | college2 | collegecaps2 | collegegoals2
| collegeyears3 | college3 | collegecaps3 | collegegoals3
| collegeyears4 | college4 | collegecaps4 | collegegoals4
| years1 | clubs1 | caps1 | goals1 | years2 | clubs2 | caps2 | goals2 | years3 | clubs3 | caps3 | goals3 | years4 | clubs4 | caps4 | goals4 | years5 | clubs5 | caps5 | goals5 | years6 | clubs6 | caps6 | goals6 | years7 | clubs7 | caps7 | goals7 | years8 | clubs8 | caps8 | goals8 | years9 | clubs9 | caps9 | goals9 | years10 | clubs10 | caps10 | goals10 | years11 | clubs11 | caps11 | goals11 | years12 | clubs12 | caps12 | goals12 | years13 | clubs13 | caps13 | goals13 | years14 | clubs14 | caps14 | goals14 | years15 | clubs15 | caps15 | goals15 | years16 | clubs16 | caps16 | goals16 | years17 | clubs17 | caps17 | goals17 | years18 | clubs18 | caps18 | goals18 | years19 | clubs19 | caps19 | goals19 | years20 | clubs20 | caps20 | goals20 | years21 | clubs21 | caps21 | goals21 | years22 | clubs22 | caps22 | goals22 | years23 | clubs23 | caps23 | goals23 | years24 | clubs24 | caps24 | goals24 | years25 | clubs25 | caps25 | goals25 | years26 | clubs26 | caps26 | goals26 | years27 | clubs27 | caps27 | goals27 | years28 | clubs28 | caps28 | goals28 | years29 | clubs29 | caps29 | goals29 | years30 | clubs30 | caps30 | goals30 | years31 | clubs31 | caps31 | goals31 | years32 | clubs32 | caps32 | goals32 | years33 | clubs33 | caps33 | goals33 | years34 | clubs34 | caps34 | goals34 | years35 | clubs35 | caps35 | goals35 | years36 | clubs36 | caps36 | goals36 | years37 | clubs37 | caps37 | goals37 | years38 | clubs38 | caps38 | goals38 | years39 | clubs39 | caps39 | goals39 | years40 | clubs40 | caps40 | goals40 | years41 | clubs41 | caps41 | goals41 | years42 | clubs42 | caps42 | goals42 | years43 | clubs43 | caps43 | goals43 | years44 | clubs44 | caps44 | goals44 | years45 | clubs45 | caps45 | goals45 | years46 | clubs46 | caps46 | goals46 | years47 | clubs47 | caps47 | goals47 | years48 | clubs48 | caps48 | goals48 | years49 | clubs49 | caps49 | goals49 | years50 | clubs50 | caps50 | goals50 | years51 | clubs51 | caps51 | goals51 | years52 | clubs52 | caps52 | goals52
| totalcaps | totalgoals
| nationalyears1 | nationalteam1 | nationalcaps1 | nationalgoals1 | nationalyears2 | nationalteam2 | nationalcaps2 | nationalgoals2 | nationalyears3 | nationalteam3 | nationalcaps3 | nationalgoals3 | nationalyears4 | nationalteam4 | nationalcaps4 | nationalgoals4 | nationalyears5 | nationalteam5 | nationalcaps5 | nationalgoals5 | nationalyears6 | nationalteam6 | nationalcaps6 | nationalgoals6 | nationalyears7 | nationalteam7 | nationalcaps7 | nationalgoals7 | nationalyears8 | nationalteam8 | nationalcaps8 | nationalgoals8 | nationalyears9 | nationalteam9 | nationalcaps9 | nationalgoals9 | nationalyears10 | nationalteam10 | nationalcaps10 | nationalgoals10
| manageryears1 | managerclubs1 | manageryears2 | managerclubs2 | manageryears3 | managerclubs3 | manageryears4 | managerclubs4 | manageryears5 | managerclubs5 | manageryears6 | managerclubs6 | manageryears7 | managerclubs7 | manageryears8 | managerclubs8 | manageryears9 | managerclubs9 | manageryears10 | managerclubs10 | manageryears11 | managerclubs11 | manageryears12 | managerclubs12 | manageryears13 | managerclubs13 | manageryears14 | managerclubs14 | manageryears15 | managerclubs15 | manageryears16 | managerclubs16 | manageryears17 | managerclubs17 | manageryears18 | managerclubs18 | manageryears19 | managerclubs19 | manageryears20 | managerclubs20 | manageryears21 | managerclubs21 | manageryears22 | managerclubs22 | manageryears23 | managerclubs23 | manageryears24 | managerclubs24 | manageryears25 | managerclubs25 | manageryears26 | managerclubs26 | manageryears27 | managerclubs27 | manageryears28 | managerclubs28 | manageryears29 | managerclubs29 | manageryears30 | managerclubs30 | manageryears31 | managerclubs31 | manageryears32 | managerclubs32 | manageryears33 | managerclubs33 | manageryears34 | managerclubs34 | manageryears35 | managerclubs35 | manageryears36 | managerclubs36 | manageryears37 | managerclubs37 | manageryears38 | managerclubs38 | manageryears39 | managerclubs39 | manageryears40 | managerclubs40 | manageryears41 | managerclubs41 | manageryears42 | managerclubs42 | manageryears43 | managerclubs43 | manageryears44 | managerclubs44 | manageryears45 | managerclubs45 | manageryears46 | managerclubs46 | manageryears47 | managerclubs47 | manageryears48 | managerclubs48 | manageryears49 | managerclubs49 | manageryears50 | managerclubs50 | manageryears51 | managerclubs51 | manageryears52 | managerclubs52 | manageryears53 | managerclubs53 | manageryears54 | managerclubs54 | manageryears55 | managerclubs55 | manageryears56 | managerclubs56 | manageryears57 | managerclubs57 | manageryears58 | managerclubs58 | manageryears59 | managerclubs59 | manageryears60 | managerclubs60 | manageryears60 | managerclubs60 | manageryears61 | managerclubs61 | manageryears62 | managerclubs62 | manageryears63 | managerclubs63 | manageryears64 | managerclubs64 | manageryears65 | managerclubs65 | manageryears66 | managerclubs66 | manageryears67 | managerclubs67 | manageryears68 | managerclubs68 | manageryears69 | managerclubs69 | manageryears70 | managerclubs70 | manageryears71 | managerclubs71 | manageryears72 | managerclubs72 | manageryears73 | managerclubs73 | manageryears74 | managerclubs74 | manageryears75 | managerclubs75 | manageryears76 | managerclubs76 | manageryears77 | managerclubs77 | manageryears78 | managerclubs78 | manageryears79 | managerclubs79 | manageryears80 | managerclubs80
| medaltemplates | medaltemplates-expand
| module | club-update | nationalteam-update
}}
== Usage ==
Note: all the field names ending in '''1''' should be repeated for each team, e.g. '''youthyears1''' and '''youthclubs1''' should be followed by '''youthyears2''' and '''youthclubs2''' and so on, as needed.
===Current players===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
|embed =
|name =
|image =
|upright =
|alt =
|caption =
|full_name =
|birth_date =
|birth_place =
|height =
|position =
|currentclub =
|clubnumber =
|youthyears1 =
|youthclubs1 =
|collegeyears1 =
|college1 =
|collegecaps1 =
|collegegoals1 =
|years1 =
|clubs1 =
|caps1 =
|goals1 =
|nationalyears1 =
|nationalteam1 =
|nationalcaps1 =
|nationalgoals1 =
|medaltemplates =
|club-update =
|nationalteam-update =
}}
</syntaxhighlight>
===Former players===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
|embed =
|name =
|image =
|upright =
|alt =
|caption =
|full_name =
|birth_date =
|birth_place =
|death_date =
|death_place =
|height =
|position =
|youthyears1 =
|youthclubs1 =
|collegeyears1 =
|college1 =
|collegecaps1 =
|collegegoals1 =
|years1 =
|clubs1 =
|caps1 =
|goals1 =
|totalcaps =
|totalgoals =
|nationalyears1 =
|nationalteam1 =
|nationalcaps1 =
|nationalgoals1 =
|medaltemplates =
}}
</syntaxhighlight>
===Managers who were players===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
|embed =
|name =
|image =
|upright =
|alt =
|caption =
|full_name =
|birth_date =
|birth_place =
|death_date =
|death_place =
|height =
|position =
|currentclub =
|youthyears1 =
|youthclubs1 =
|collegeyears1 =
|college1 =
|collegecaps1 =
|collegegoals1 =
|years1 =
|clubs1 =
|caps1 =
|goals1 =
|totalcaps =
|totalgoals =
|nationalyears1 =
|nationalteam1 =
|nationalcaps1 =
|nationalgoals1 =
|medaltemplates =
|manageryears1 =
|managerclubs1 =
}}
</syntaxhighlight>
===Managers who were not players===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
|embed =
|name =
|image =
|upright =
|caption =
|full_name =
|birth_date =
|birth_place =
|death_date =
|death_place =
|currentclub =
|manageryears1 =
|managerclubs1 =
}}
</syntaxhighlight>
=== Full blank template ===
{{Hidden begin |showhide=left |title=Blank template with all parameters |bodystyle=font-size:105%;}}
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
| embed =
| embed-header =
| header-color =
| name =
| image =
| upright =
| alt =
| caption =
| full_name =
| birth_name =
| birth_date =
| birth_place =
| death_date =
| death_place =
| height =
| position =
| currentclub =
| clubnumber =
| youthyears1 =
| youthclubs1 =
| youthyears2 =
| youthclubs2 =
| youthyears3 =
| youthclubs3 =
| youthyears4 =
| youthclubs4 =
| youthyears5 =
| youthclubs5 =
| youthyears6 =
| youthclubs6 =
| youthyears7 =
| youthclubs7 =
| youthyears8 =
| youthclubs8 =
| youthyears9 =
| youthclubs9 =
| youthyears10 =
| youthclubs10 =
| youthyears11 =
| youthclubs11 =
| youthyears12 =
| youthclubs12 =
| collegeyears1 =
| college1 =
| collegecaps1 =
| collegegoals1 =
| collegeyears2 =
| college2 =
| collegecaps2 =
| collegegoals2 =
| collegeyears3 =
| college3 =
| collegecaps3 =
| collegegoals3 =
| collegeyears4 =
| college4 =
| collegecaps4 =
| collegegoals4 =
| years1 =
| clubs1 =
| caps1 =
| goals1 =
| years2 =
| clubs2 =
| caps2 =
| goals2 =
| years3 =
| clubs3 =
| caps3 =
| goals3 =
| years4 =
| clubs4 =
| caps4 =
| goals4 =
| years5 =
| clubs5 =
| caps5 =
| goals5 =
| years6 =
| clubs6 =
| caps6 =
| goals6 =
| years7 =
| clubs7 =
| caps7 =
| goals7 =
| years8 =
| clubs8 =
| caps8 =
| goals8 =
| years9 =
| clubs9 =
| caps9 =
| goals9 =
| years10 =
| clubs10 =
| caps10 =
| goals10 =
| years11 =
| clubs11 =
| caps11 =
| goals11 =
| years12 =
| clubs12 =
| caps12 =
| goals12 =
| years13 =
| clubs13 =
| caps13 =
| goals13 =
| years14 =
| clubs14 =
| caps14 =
| goals14 =
| years15 =
| clubs15 =
| caps15 =
| goals15 =
| years16 =
| clubs16 =
| caps16 =
| goals16 =
| years17 =
| clubs17 =
| caps17 =
| goals17 =
| years18 =
| clubs18 =
| caps18 =
| goals18 =
| years19 =
| clubs19 =
| caps19 =
| goals19 =
| years20 =
| clubs20 =
| caps20 =
| goals20 =
| years21 =
| clubs21 =
| caps21 =
| goals21 =
| years22 =
| clubs22 =
| caps22 =
| goals22 =
| years23 =
| clubs23 =
| caps23 =
| goals23 =
| years24 =
| clubs24 =
| caps24 =
| goals24 =
| years25 =
| clubs25 =
| caps25 =
| goals25 =
| years26 =
| clubs26 =
| caps26 =
| goals26 =
| years27 =
| clubs27 =
| caps27 =
| goals27 =
| years28 =
| clubs28 =
| caps28 =
| goals28 =
| years29 =
| clubs29 =
| caps29 =
| goals29 =
| years30 =
| clubs30 =
| caps30 =
| goals30 =
| years31 =
| clubs31 =
| caps31 =
| goals31 =
| years32 =
| clubs32 =
| caps32 =
| goals32 =
| years33 =
| clubs33 =
| caps33 =
| goals33 =
| years34 =
| clubs34 =
| caps34 =
| goals34 =
| years35 =
| clubs35 =
| caps35 =
| goals35 =
| years36 =
| clubs36 =
| caps36 =
| goals36 =
| years37 =
| clubs37 =
| caps37 =
| goals37 =
| years38 =
| clubs38 =
| caps38 =
| goals38 =
| years39 =
| clubs39 =
| caps39 =
| goals39 =
| years40 =
| clubs40 =
| caps40 =
| goals40 =
| years41 =
| clubs41 =
| caps41 =
| goals41 =
| years42 =
| clubs42 =
| caps42 =
| goals42 =
| years43 =
| clubs43 =
| caps43 =
| goals43 =
| years44 =
| clubs44 =
| caps44 =
| goals44 =
| years45 =
| clubs45 =
| caps45 =
| goals45 =
| years46 =
| clubs46 =
| caps46 =
| goals46 =
| years47 =
| clubs47 =
| caps47 =
| goals47 =
| years48 =
| clubs48 =
| caps48 =
| goals48 =
| years49 =
| clubs49 =
| caps49 =
| goals49 =
| years50 =
| clubs50 =
| caps50 =
| goals50 =
| years51 =
| clubs51 =
| caps51 =
| goals51 =
| years52 =
| clubs52 =
| caps52 =
| goals52 =
| totalcaps =
| totalgoals =
| nationalyears1 =
| nationalteam1 =
| nationalcaps1 =
| nationalgoals1 =
| nationalyears2 =
| nationalteam2 =
| nationalcaps2 =
| nationalgoals2 =
| nationalyears3 =
| nationalteam3 =
| nationalcaps3 =
| nationalgoals3 =
| nationalyears4 =
| nationalteam4 =
| nationalcaps4 =
| nationalgoals4 =
| nationalyears5 =
| nationalteam5 =
| nationalcaps5 =
| nationalgoals5 =
| nationalyears6 =
| nationalteam6 =
| nationalcaps6 =
| nationalgoals6 =
| nationalyears7 =
| nationalteam7 =
| nationalcaps7 =
| nationalgoals7 =
| nationalyears8 =
| nationalteam8 =
| nationalcaps8 =
| nationalgoals8 =
| nationalyears9 =
| nationalteam9 =
| nationalcaps9 =
| nationalgoals9 =
| nationalyears10 =
| nationalteam10 =
| nationalcaps10 =
| nationalgoals10 =
| manageryears1 =
| managerclubs1 =
| manageryears2 =
| managerclubs2 =
| manageryears3 =
| managerclubs3 =
| manageryears4 =
| managerclubs4 =
| manageryears5 =
| managerclubs5 =
| manageryears6 =
| managerclubs6 =
| manageryears7 =
| managerclubs7 =
| manageryears8 =
| managerclubs8 =
| manageryears9 =
| managerclubs9 =
| manageryears10 =
| managerclubs10 =
| manageryears11 =
| managerclubs11 =
| manageryears12 =
| managerclubs12 =
| manageryears13 =
| managerclubs13 =
| manageryears14 =
| managerclubs14 =
| manageryears15 =
| managerclubs15 =
| manageryears16 =
| managerclubs16 =
| manageryears17 =
| managerclubs17 =
| manageryears18 =
| managerclubs18 =
| manageryears19 =
| managerclubs19 =
| manageryears20 =
| managerclubs20 =
| manageryears21 =
| managerclubs21 =
| manageryears22 =
| managerclubs22 =
| manageryears23 =
| managerclubs23 =
| manageryears24 =
| managerclubs24 =
| manageryears25 =
| managerclubs25 =
| manageryears26 =
| managerclubs26 =
| manageryears27 =
| managerclubs27 =
| manageryears28 =
| managerclubs28 =
| manageryears29 =
| managerclubs29 =
| manageryears30 =
| managerclubs30 =
| manageryears31 =
| managerclubs31 =
| manageryears32 =
| managerclubs32 =
| manageryears33 =
| managerclubs33 =
| manageryears34 =
| managerclubs34 =
| manageryears35 =
| managerclubs35 =
| manageryears36 =
| managerclubs36 =
| manageryears37 =
| managerclubs37 =
| manageryears38 =
| managerclubs38 =
| manageryears39 =
| managerclubs39 =
| manageryears40 =
| managerclubs40 =
| manageryears41 =
| managerclubs41 =
| manageryears42 =
| managerclubs42 =
| manageryears43 =
| managerclubs43 =
| manageryears44 =
| managerclubs44 =
| manageryears45 =
| managerclubs45 =
| manageryears46 =
| managerclubs46 =
| manageryears47 =
| managerclubs47 =
| manageryears48 =
| managerclubs48 =
| manageryears49 =
| managerclubs49 =
| manageryears50 =
| managerclubs50 =
| manageryears51 =
| managerclubs51 =
| manageryears52 =
| managerclubs52 =
| manageryears53 =
| managerclubs53 =
| manageryears54 =
| managerclubs54 =
| manageryears55 =
| managerclubs55 =
| manageryears56 =
| managerclubs56 =
| manageryears57 =
| managerclubs57 =
| manageryears58 =
| managerclubs58 =
| manageryears59 =
| managerclubs59 =
| manageryears60 =
| managerclubs60 =
| manageryears60 =
| managerclubs60 =
| manageryears61 =
| managerclubs61 =
| manageryears62 =
| managerclubs62 =
| manageryears63 =
| managerclubs63 =
| manageryears64 =
| managerclubs64 =
| manageryears65 =
| managerclubs65 =
| manageryears66 =
| managerclubs66 =
| manageryears67 =
| managerclubs67 =
| manageryears68 =
| managerclubs68 =
| manageryears69 =
| managerclubs69 =
| manageryears70 =
| managerclubs70 =
| manageryears71 =
| managerclubs71 =
| manageryears72 =
| managerclubs72 =
| manageryears73 =
| managerclubs73 =
| manageryears74 =
| managerclubs74 =
| manageryears75 =
| managerclubs75 =
| manageryears76 =
| managerclubs76 =
| manageryears77 =
| managerclubs77 =
| manageryears78 =
| managerclubs78 =
| manageryears79 =
| managerclubs79 =
| manageryears80 =
| managerclubs80 =
| medaltemplates =
| medaltemplates-expand =
| module =
| club-update =
| nationalteam-update =
}}
</syntaxhighlight>
{{Hidden end}}
{{Clear}}
== Parameters ==
All parameters are optional.
;{{{embed}}}: Enables the template to be embedded into another template, such as {{tl|Infobox person}}. See [[#Use as a child template|explanation below]].
;{{{embed-header}}}: Allows for a custom heading to the infobox instead of "Association football career" when embedded into another template.
;{{{header-color}}}: Allows a custom [[web color]] to be set for the template's section headings and a divider when embedded into another template.
;{{{name}}}: The commonly used name of the player. If this is omitted, it will be inferred from the title of the article.
;{{{full_name}}}: The player's complete name. Long names will wrap automatically to the width of the infobox, so there's no need to include explicit linebreaks. Alias: '''fullname'''
;{{{image}}}: A picture of the player, ideally on the pitch in the strip of their most recent team (or the team the player is most well known for, in the case of retirees). Images should be given in the format {{mono|<nowiki>Example.jpg</nowiki>}}, rather than {{mono|<nowiki>[[File:Example.jpg]]</nowiki>}}.
;{{{upright}}}: Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%). The use of {{{image_size}}} has been deprecated and should be avoided per [[WP:IMGSIZE]].
;{{{alt}}}: [[WP:ALT|Alternative text]] for the image.
;{{{caption}}}: A caption for the image.
;{{{birth_name}}}: If different from name and full_name.
;{{{birth_date}}}: The player's date of birth. A template ({{Tl|Birth date and age}} for living people; {{tl|Birth year}} or {{Tl|Birth date}} for all others) should be used to add the date, but be sure to use the appropriate parameters to present the date in the same format as used in the text. The date should not be wikilinked.
;{{{birth_place}}}: The location of the player's birth.
;{{{death_date}}}: The player's date of death. The template {{Tl|Death date and age}} should be used to add the date, but be sure to use the appropriate parameters to present the date in the same format as used in the text. The date should not be wikilinked.
;{{{death_place}}}: The location of the player's death.
;{{{height}}}: The player's height in the units most common within the country in which they play, using the format "X m", "X cm", or "X ft Y in". When given in this format, the height will be [[Template:Infobox person/height/doc|automatically converted]]. Note that fractions of an inch can also be added, e.g. "5 ft 8+1/2 in" will output "5 ft {{fraction|8|1|2}} in (1.74 m)".
;{{{position}}}: The player's '''most common''' position or positions. If a player is known for playing in multiple roles then explain the point more fully within the article.
;{{{currentclub}}}: The club for which the player currently plays, or is employed by. If the player now works in a non-playing role at the club, add this after the club in brackets. For retired players and free agents not currently employed by any club or federation, leave blank.
;{{{clubnumber}}}: The shirt number of the player at their current club.
;{{{youthyears1}}}, {{{youthyears2}}}... {{{youthyears12}}}: A list of years that the player has been at each club as a youth, one per attribute, earliest to latest.
;{{{youthclubs1}}}, {{{youthclubs2}}}... {{{youthclubs12}}}: A list of clubs that the player was a member of as a youth, one per attribute, earliest to latest.
;{{{collegeyears1}}}... {{{collegeyears4}}}: A list of years that the player has been at each college team, one per attribute, earliest to latest.
;{{{college1}}}... {{{college4}}}: A list of college teams that the player was a member of, one per attribute, earliest to latest.
;{{{collegecaps1}}}... {{{collegecaps4}}}: A list of appearances that the player has been awarded in '''all competitive matches''' for each college team, one per attribute, earliest to latest.
;{{{collegegoals1}}}... {{{collegegoals4}}}: A list of goals that the player has been awarded in '''all competitive matches''' for each college team, one per attribute, earliest to latest.
;{{{years1}}}, {{{years2}}}... {{{years52}}}: A list of years that the player has been contracted at each club, one per attribute, earliest to latest.
;{{{clubs1}}}, {{{clubs2}}}... {{{clubs52}}}: A list of clubs that the player has been contracted at, one per attribute, earliest to latest.
;{{{caps1}}}, {{{caps2}}}... {{{caps52}}}: A list of appearances that the player has been awarded in '''league competition''' only for each club (note: Playoff matches are '''not''' counted as league matches by most statistical sources (e.g. [http://www.soccerbase.com Soccerbase] and the Sky Sports (Rothmans) Football Yearbook), so they should not be included in this infobox), one per attribute, earliest to latest.
;{{{goals1}}}, {{{goals2}}}... {{{goals52}}}: A list of goals that the player has been awarded in '''league competition''' only for each club (note: Playoff matches are '''not''' counted as league matches by most statistical sources (e.g. [http://www.soccerbase.com Soccerbase] and the Sky Sports (Rothmans) Football Yearbook), so they should not be included in this infobox), one per attribute, earliest to latest.
;{{{totalcaps}}}: The total number of appearances the player has been awarded in '''league competition''' for all clubs.
;{{{totalgoals}}}: The total number of goals the player has scored in '''league competition''' for all clubs.
;{{{nationalyears1}}}, {{{nationalyears2}}}... {{{nationalyears10}}}: A list of years that the player has played for each national team, one per attribute, youngest to oldest level (e.g. U17, U21, Olympic team, B team, senior team).
;{{{nationalteam1}}}, {{{nationalteam2}}}... {{{nationalteam10}}}: A list of international teams that the player has played for, including non-senior teams such as U21, one per attribute, youngest to oldest level (e.g. U17, U21, Olympic team, B team, senior team).
;{{{nationalcaps1}}}, {{{nationalcaps2}}}... {{{nationalcaps10}}}: A list of appearances that the player has been awarded in '''all competitions and friendlies''' for each national team, one per attribute, youngest to oldest level (e.g. U17, U21, Olympic team, B team, senior team).
;{{{nationalgoals1}}}, {{{nationalgoals2}}}... {{{nationalgoals10}}}: A list of goals that the player has been awarded in '''all competitions and friendlies''' for each national team, one per attribute, youngest to oldest level (e.g. U17, U21, Olympic team, B team, senior team).
;{{{manageryears1}}}, {{{manageryears2}}}... {{{manageryears80}}}: A list of years that the person has served within the capacity of manager at each team, one per attribute, earliest to latest.
;{{{managerclubs1}}}, {{{managerclubs2}}}... {{{managerclubs80}}}: A list of clubs that the person has served within the capacity of team manager. Please '''do not''' list positions other than team manager (such as assistant or coach positions, or director of football roles where this role is not considered managerial) unless that position is a significant part of the person's career; this will apply primarily to those with significant or perhaps primary experience in management. Clubs listed can be both local and national and should be restricted to those ordinarily considered notable in themselves.
;{{{medaltemplates}}}: Medals earned in international competition can be added here using the templates {{tl|Medal}}.
;{{{medaltemplates-expand}}}: Expands the medals section to be displayed by default instead of being collapsed.
;{{{club-update}}}: A timestamp at which the player's infobox club statistics are unambiguously correct. The bare date of the last match played should not be used because this is not unambiguous. Dates should use the same format as the rest of the article; use five tildes (<nowiki>~~~~~</nowiki>) to generate the current date/time in dmy format, or {{subst|mdytime}} for mdy format. The parameter is not needed if the player has retired. Alias: '''pcupdate'''
;{{{nationalteam-update}}}: A timestamp at which the player's infobox national team statistics are unambiguously correct. The bare date of the last match played should not be used because this is not unambiguous. Dates should use the same format as the rest of the article; use five tildes (<nowiki>~~~~~</nowiki>) to generate the current date/time in dmy format, or {{subst|mdytime}} for mdy format. The parameter is not needed if the player has retired. Alias: '''ntupdate'''
;{{{module}}}: Enables another template to be embedded into this template, such as {{tl|Infobox military person}}. See [[#Embedding other templates|explanation below]].
=== Use as a child template ===
The '''embed''' parameter is used when embedding this infobox into another.
{{Infobox person module documentation|Infobox football biography|parameter=embed}}
=== Embedding other templates ===
The '''module''' parameter is used for embedding other templates into this infobox (see [[Wikipedia:Infobox modules]] and [[:Category:Biographical templates usable as a module]]).
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
| name =
| <!-- etc. -->
| module =
{{Infobox ABC
| embed = yes <!-- or child=yes / subbox=yes-->
| <!-- etc. -->
}}
}}
</syntaxhighlight>
== Examples ==
=== Independent ===
{{Infobox football biography
|name = Tim Template
|image = Nizar-Khalfan.jpg
|alt = Photo of a player in blue football kit, hair braided.
|caption = Tim Template with the Template Rangers
|full_name = Tim Tenerife Template
|birth_date = {{birth date and age|1975|1|1|df=y}}
|birth_place = Template City, Templatia
|height = 1.75 m
|position = [[Forward (association football)|Striker]]
|currentclub = Template City F.C.
|clubnumber = 9
|youthyears1 = 1985–1987
|youthclubs1 = Template Juniors
|youthyears2 = 1987–1992
|youthclubs2 = Template Youth
|collegeyears1 = 1983–1985
|college1 = Template College
|collegecaps1 = 2
|collegegoals1 = 1
|years1 = 1992–1999
|clubs1 = Template United F.C.
|caps1 = 75
|goals1 = 26
|years2 = 1999–2002
|clubs2 = Template Rangers
|caps2 = 32
|goals2 = 11
|years3 = 2001
|clubs3 = → Example F.C. (loan)
|caps3 = 15
|goals3 = 7
|years4 = 2002–
|clubs4 = Template City F.C.
|caps4 = 113
|goals4 = 46
|nationalyears1 = 1991
|nationalteam1 = Examplia U16
|nationalcaps1 = 1
|nationalgoals1 = 0
|nationalyears2 = 1996–1998
|nationalteam2 = Templatia U21
|nationalcaps2 = 8
|nationalgoals2 = 2
|nationalyears3 = 1999–
|nationalteam3 = Templatia
|nationalcaps3 = 46
|nationalgoals3 = 13
|medaltemplates =
{{Medal|Country|Brazil}}
{{Medal|Competition|FIFA Template Cup}}
{{medal|Winner|2013 FIFA Template Cup|}}
{{medal|3rd|2001 FIFA Template Cup|}}
{{Medal|Competition|[[Football at the Summer Olympics|Summer Olympics]]}}
{{medal|Gold|[[2016 Summer Olympics|2016 Rio de Janeiro]]|[[Football at the 2016 Summer Olympics – Men's tournament|Team]]}}
|club-update = 14:56, 6 October 2014 (UTC)
|nationalteam-update = 14:56, 6 October 2014 (UTC)
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox football biography
|name = Tim Template
|image = Nizar-Khalfan.jpg
|alt = Photo of a player in blue football kit, hair braided.
|caption = Tim Template with the Template Rangers
|full_name = Tim Tenerife Template
|birth_date = {{birth date and age|1975|1|1|df=y}}
|birth_place = Template City, Templatia
|height = 1.75 m
|position = [[Forward (association football)|Striker]]
|currentclub = Template City F.C.
|clubnumber = 9
|youthyears1 = 1985–1987
|youthclubs1 = Template Juniors
|youthyears2 = 1987–1992
|youthclubs2 = Template Youth
|collegeyears1 = 1983–1985
|college1 = Template College
|collegecaps1 = 2
|collegegoals1 = 1
|years1 = 1992–1999
|clubs1 = Template United F.C.
|caps1 = 75
|goals1 = 26
|years2 = 1999–2002
|clubs2 = Template Rangers
|caps2 = 32
|goals2 = 11
|years3 = 2001
|clubs3 = → Example F.C. (loan)
|caps3 = 15
|goals3 = 7
|years4 = 2002–
|clubs4 = Template City F.C.
|caps4 = 113
|goals4 = 46
|nationalyears1 = 1991
|nationalteam1 = Examplia U16
|nationalcaps1 = 1
|nationalgoals1 = 0
|nationalyears2 = 1996–1998
|nationalteam2 = Templatia U21
|nationalcaps2 = 8
|nationalgoals2 = 2
|nationalyears3 = 1999–
|nationalteam3 = Templatia
|nationalcaps3 = 46
|nationalgoals3 = 13
|medaltemplates =
{{Medal|Country|Brazil}}
{{Medal|Competition|FIFA Template Cup}}
{{medal|Winner|2013 FIFA Template Cup|}}
{{medal|3rd|2001 FIFA Template Cup|}}
{{Medal|Competition|[[Football at the Summer Olympics|Summer Olympics]]}}
{{medal|Gold|[[2016 Summer Olympics|2016 Rio de Janeiro]]|[[Football at the 2016 Summer Olympics – Men's tournament|Team]]}}
|club-update = ~~~~~
|nationalteam-update = ~~~~~
}}
</syntaxhighlight> {{clear}}
=== Embedded in a different infobox (embed parameter) ===
{{Infobox person
|name = Tim Template
|image = Nizar-Khalfan.jpg
|alt = Photo of a player in blue football kit, hair braided.
|caption = Tim Template with the Template Rangers
|birth_name = Tim Tenerife Template
|birth_date = {{birth date and age|1975|1|1|df=y}}
|birth_place = Template City, Templatia
|height = 1.75 m
|module =
{{Infobox football biography
|embed = yes
|position = [[Forward (association football)|Striker]]
|currentclub = Template City F.C.
|clubnumber = 9
|youthyears1 = 1985–1987
|youthclubs1 = Template Juniors
|youthyears2 = 1987–1992
|youthclubs2 = Template Youth
|collegeyears1 = 1983-1985
|college1 = Template College
|collegecaps1 = 2
|collegegoals1 = 1
|years1 = 1992–1999
|clubs1 = Template United F.C.
|caps1 = 75
|goals1 = 26
|years2 = 1999–2002
|clubs2 = Template Rangers
|caps2 = 32
|goals2 = 11
|years3 = 2001
|clubs3 = → Example F.C. (loan)
|caps3 = 15
|goals3 = 7
|years4 = 2002–
|clubs4 = Template City F.C.
|caps4 = 113
|goals4 = 46
|nationalyears1 = 1991
|nationalteam1 = Examplia U16
|nationalcaps1 = 1
|nationalgoals1 = 0
|nationalyears2 = 1996–1998
|nationalteam2 = Templatia U21
|nationalcaps2 = 8
|nationalgoals2 = 2
|nationalyears3 = 1999–
|nationalteam3 = Templatia
|nationalcaps3 = 46
|nationalgoals3 = 13
|medaltemplates =
{{Medal|Country|Brazil}}
{{Medal|Competition|FIFA Template Cup}}
{{medal|Winner|2013 FIFA Template Cup|}}
{{medal|3rd|2001 FIFA Template Cup|}}
{{Medal|Competition|[[Football at the Summer Olympics|Summer Olympics]]}}
{{medal|Gold|[[2016 Summer Olympics|2016 Rio de Janeiro]]|[[Football at the 2016 Summer Olympics – Men's tournament|Team]]}}
|club-update = 14:56, 6 October 2014 (UTC)
|nationalteam-update = 14:56, 6 October 2014 (UTC)
}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox person
|name = Tim Template
|image = Nizar-Khalfan.jpg
|alt = Photo of a player in blue football kit, hair braided.
|caption = Tim Template with the Template Rangers
|birth_name = Tim Tenerife Template
|birth_date = {{birth date and age|1975|1|1|df=y}}
|birth_place = Template City, Templatia
|height = 1.75 m
|module =
{{Infobox football biography
|embed = yes
|position = [[Forward (association football)|Striker]]
|currentclub = Template City F.C.
|clubnumber = 9
|youthyears1 = 1985–1987
|youthclubs1 = Template Juniors
|youthyears2 = 1987–1992
|youthclubs2 = Template Youth
|years1 = 1992–1999
|clubs1 = Template United F.C.
|caps1 = 75
|goals1 = 26
|years2 = 1999–2002
|clubs2 = Template Rangers
|caps2 = 32
|goals2 = 11
|years3 = 2001
|clubs3 = → Example F.C. (loan)
|caps3 = 15
|goals3 = 7
|years4 = 2002–
|clubs4 = Template City F.C.
|caps4 = 113
|goals4 = 46
|nationalyears1 = 1991
|nationalteam1 = Examplia U16
|nationalcaps1 = 1
|nationalgoals1 = 0
|nationalyears2 = 1996–1998
|nationalteam2 = Templatia U21
|nationalcaps2 = 8
|nationalgoals2 = 2
|nationalyears3 = 1999–
|nationalteam3 = Templatia
|nationalcaps3 = 46
|nationalgoals3 = 13
|medaltemplates =
{{Medal|Country|{{fb|BRA}}}}
{{Medal|Competition|FIFA Template Cup}}
{{medal|Winner|2013 FIFA Template Cup|}}
{{medal|3rd|2001 FIFA Template Cup|}}
{{Medal|Competition|[[Football at the Summer Olympics|Summer Olympics]]}}
{{medal|Gold|[[2016 Summer Olympics|2016 Rio de Janeiro]]|[[Football at the 2016 Summer Olympics – Men's tournament|Team]]}}
|club-update = ~~~~~
|nationalteam-update = ~~~~~
}}
}}
</syntaxhighlight> {{clear}}
{{Infobox rugby biography
| name = Alev Kelter
| birth_name = Leyla Alev Kelter
| birth_date = {{Birth-date and age|March 21, 1991}}
| birth_place = [[Tampa, Florida]], U.S.
| height = 5 ft 6 in
| ru_position = Centre
| repyears1 = 2016–present
| repteam1 = [[United States women's national rugby union team|United States]]
| repcaps1 = 9
| reppoints1 = 32
| ru_sevensnationalyears1 = 2014
| ru_sevensnationalteam1 = [[United States women's national rugby sevens team|United States]]
| ru_sevensnationalcomp1 = -
| module =
{{Infobox football biography | embed = yes
| position = [[Midfielder]]
| collegeyears1 = 2009–2013
| college1 = [[Wisconsin Badgers women's soccer|Wisconsin Badgers]]
| nationalyears1 = 2009
| nationalteam1 = [[United States women's national under-20 soccer team|United States U20]]
}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox rugby biography
| name = Alev Kelter
| birth_name = Leyla Alev Kelter
| birth_date = {{Birth-date and age|March 21, 1991}}
| birth_place = [[Tampa, Florida]], U.S.
| height = 5 ft 6 in
| ru_position = Centre
| repyears1 = 2016–present
| repteam1 = [[United States women's national rugby union team|United States]]
| repcaps1 = 9
| reppoints1 = 32
| ru_sevensnationalyears1 = 2014
| ru_sevensnationalteam1 = [[United States women's national rugby sevens team|United States]]
| ru_sevensnationalcomp1 = -
| module =
{{Infobox football biography | embed = yes
| position = [[Midfielder]]
| collegeyears1 = 2009–2013
| college1 = [[Wisconsin Badgers women's soccer|Wisconsin Badgers]]
| nationalyears1 = 2009
| nationalteam1 = [[United States women's national under-20 soccer team|United States U20]]
}}
}}
</syntaxhighlight> {{clear}}
=== Embedding other infoboxes (module parameter) ===
{{Infobox football biography
| name = Alev Kelter
| birth_name = Leyla Alev Kelter
| birth_date = {{Birth-date and age|March 21, 1991}}
| birth_place = [[Tampa, Florida]], U.S.
| height = 5 ft 6 in
| position = [[Midfielder]]
| collegeyears1 = 2009–2013
| college1 = [[Wisconsin Badgers women's soccer|Wisconsin Badgers]]
| nationalyears1 = 2009
| nationalteam1 = [[United States women's national under-20 soccer team|United States U20]]
| module =
{{Infobox rugby biography | embed = yes
| ru_position = Centre
| repyears1 = 2016–present
| repteam1 = [[United States women's national rugby union team|United States]]
| repcaps1 = 9
| reppoints1 = 32
| ru_sevensnationalyears1 = 2014
| ru_sevensnationalteam1 = [[United States women's national rugby sevens team|United States]]
| ru_sevensnationalcomp1 = -
}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox football biography
| name = Alev Kelter
| birth_name = Leyla Alev Kelter
| birth_date = {{Birth-date and age|March 21, 1991}}
| birth_place = [[Tampa, Florida]], U.S.
| height = 5 ft 6 in
| position = [[Midfielder]]
| collegeyears1 = 2009–2013
| college1 = [[Wisconsin Badgers women's soccer|Wisconsin Badgers]]
| nationalyears1 = 2009
| nationalteam1 = [[United States women's national under-20 soccer team|United States U20]]
| module =
{{Infobox rugby biography | embed = yes
| ru_position = Centre
| repyears1 = 2016–present
| repteam1 = [[United States women's national rugby union team|United States]]
| repcaps1 = 9
| reppoints1 = 32
| ru_sevensnationalyears1 = 2014
| ru_sevensnationalteam1 = [[United States women's national rugby sevens team|United States]]
| ru_sevensnationalcomp1 = -
}}
}}
</syntaxhighlight> {{clear}}
== Style guide ==
Try to always consider that an infobox exists to support an article and provide a quick synopsis of important facts. This becomes vital when considering that the amount of space available within an infobox is significantly less than that available outside of it.
As per the [[Wikipedia:Manual of Style (links)|manual of style]] entry on linking, years and dates should not be linked as they do not provide much benefit to the user.
Do not add flag icons to the birth_place, death_place, club, national team or other fields. See: [[Wikipedia:Manual of Style (flags)]].
As per the [[Wikipedia:Manual of Style (dates and numbers)|manual of style]] the player's height should be in the units most common in the country in which they play. Units should be abbreviated in the infobox and spelt out in the article text. Measurements should be inputted into the {{para|height}} parameter using the format "X m", "X cm", or "X ft Y in". This will [[Template:Infobox person/height/doc|automatically convert]] units between formats and correctly handle the presentation of units in their short forms. Per [[Wikipedia talk:WikiProject Football/Archive 87#Height|consensus at WikiProject Football]], metric height will then be displayed in metres.
For example:
*{{para|height|1.78 m}} produces 1.78 m (5 ft 10 in)
*{{para|height|178 cm}} produces 1.78 m (5 ft 10 in)
*{{para|height|5 ft 8 in}} produces 5 ft 8 in (1.73 m)
*{{para|height|5 ft 8+1/2 in}} produces 5 ft {{fraction|8|1|2}} in (1.74 m)
Alternatively, the templates {{tl|convert}} and {{tl|height}} may be used for height conversion. This is particularly useful if the more accurate metric height is known but the output should be in feet and inches, or if a fraction is desired for the converted inches.
For example:
*If you have the height in metres, but want to display feet and inches first:
**<code><nowiki>{{convert|1.73|m|order=flip}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.73|m|order=flip}}}}
*If you have the height in metres, but want to display feet and inches first (with precision to the nearest half inch):
**<code><nowiki>{{convert|1.79|m|order=flip|frac=2}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.79|m|order=flip|frac=2}}}}
**<code><nowiki>{{convert|1.79|m|order=flip|round=0.5}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.79|m|order=flip|round=0.5}}}}
*If you have the height in feet and inches (with precision to the nearest half inch), but want to display metres first:
**<code><nowiki>{{convert|5|ft|8+1/2|in|2|order=flip}}</nowiki></code> produces {{#invoke:person height|main|{{convert|5|ft|8+1/2|in|2|order=flip}}}}
**<code><nowiki>{{convert|5|ft|8.5|in|2|order=flip}}</nowiki></code> produces {{#invoke:person height|main|{{convert|5|ft|8.5|in|2|order=flip}}}}
*If you have the height in metres, but want to display the converted feet and inches with precision to the nearest half inch:
**<code><nowiki>{{height|m=1.79}}</nowiki></code> produces {{#invoke:person height|main|{{height|m=1.79}}}}
**<code><nowiki>{{convert|1.79|m|frac=2}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.79|m|frac=2}}}}
**<code><nowiki>{{convert|1.79|m|round=0.5}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.79|m|round=0.5}}}}
== Microformats ==
{{UF-hcard-person}}
==TemplateData==
{{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "This infobox template provides a quick overview of an association football player's or manager's details to enable a reader to extract the most oft-needed information without trawling through the article proper.",
"params": {
"name": {
"type": "string",
"label": "Name",
"description": "The commonly used name of the player. If this is omitted, it will be inferred from the title of the article."
},
"image": {
"type": "wiki-file-name",
"label": "Picture",
"description": "A picture of the player, ideally on the pitch in the strip of their most recent team (or the team the player is most well-known for, in the case of retirees). Use the format Example.jpg, rather than [[File:Example.jpg]]."
},
"upright": {
"type": "number",
"label": "Picture size",
"description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).",
"example": "0.8"
},
"alt": {
"type": "string",
"label": "Picture alt text",
"description": "Alt text for the picture."
},
"caption": {
"type": "string",
"label": "Picture caption",
"description": "A caption for the picture."
},
"full_name": {
"type": "string",
"label": "Full name",
"description": "The player's complete name.",
"aliases": [ "fullname" ]
},
"birth_date": {
"type": "number",
"label": "Birth date",
"description": "The player's date of birth. A template ({{Birth date}}, {{Birth date and age}}) should be used to add the date, but be sure to use the appropriate parameters to present the date in the same format as used in the text. The date should not be wikilinked."
},
"birth_place": {
"type": "string",
"label": "Birth place",
"description": "The location of the player's birth."
},
"death_date": {
"label": "Date of death",
"description": "Use exact date if known, but otherwise as close an approximation as possible. Example: April 27, 1992",
"type": "string",
"required": false
},
"death_place": {
"label": "Place of death",
"description": "Example: Washington, DC, USA",
"type": "string",
"required": false
},
"height": {
"type": "number",
"label": "Height",
"description": "The player's height in the units most common within the country in which they play. The {{height}} template should be used for automatic formatting. The infobox also supports automatic conversion if the height is specified as \"X m\", \"X cm\", or \"X ft Y in\"."
},
"position": {
"type": "string",
"label": "Position",
"description": "The player's most common position or positions. If a player is known for playing in multiple roles then explain the point more fully within the article."
},
"currentclub": {
"type": "string",
"label": "Current club",
"description": "The club for which the player currently plays, or is employed by. If the player now works in a non-playing role at the club, add this after the club in brackets. For retired players and free agents not currently employed by any club or federation, leave blank."
},
"clubnumber": {
"type": "number",
"label": "Number",
"description": "The shirt number of the player at their current club."
},
"youthyears1": {
"type": "number",
"label": "Youth club 1 years",
"description": "The years that the player was at their first youth club. Up to 8 clubs can be added using the parameter names \"youthyears2\", \"youthyears3\", etc."
},
"youthclubs1": {
"type": "string",
"label": "Youth club 1",
"description": "The first club that the player was a member of as a youth. Up to 8 clubs can be added using the parameter names \"youthclubs2\", \"youthclubs3\", etc."
},
"youthyears2": {
"type": "number",
"label": "Youth club 2 years",
"description": "The years that the player was at their second youth club."
},
"youthclubs2": {
"type": "string",
"label": "Youth club 2",
"description": "The second club that the player was a member of as a youth."
},
"youthyears3": {
"type": "number",
"label": "Youth club 3 years",
"description": "The years that the player was at their third youth club."
},
"youthclubs3": {
"type": "string",
"label": "Youth club 3",
"description": "The third club that the player was a member of as a youth."
},
"youthyears4": {
"type": "number",
"label": "Youth club 4 years",
"description": "The years that the player was at their fourth youth club."
},
"youthclubs4": {
"type": "string",
"label": "Youth club 4",
"description": "The fourth club that the player was a member of as a youth."
},
"youthyears5": {
"type": "number",
"label": "Youth club 5 years",
"description": "The years that the player was at their fifth youth club."
},
"youthclubs5": {
"type": "string",
"label": "Youth club 5",
"description": "The fifth club that the player was a member of as a youth."
},
"years1": {
"type": "number",
"label": "Club 1 years",
"description": "The years that the player was at their first club. Up to 39 years can be added using the parameter names \"years2\", \"years3\", etc."
},
"clubs1": {
"type": "string",
"label": "Club 1",
"description": "The first (senior) club that the player has been contracted at. Up to 39 clubs can be added using the parameter names \"clubs2\", \"clubs3\", etc."
},
"caps1": {
"type": "number",
"label": "Club 1 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the first club. Playoff matches should not be included. Up to 39 caps can be added using the parameter names \"caps2\", \"caps3\", etc."
},
"goals1": {
"type": "number",
"label": "Club 1 goals",
"description": "The number of goals that the player has been awarded in league competition for the first club. Playoff matches should not be included. Up to 39 can be added using the parameter names \"goals2\", \"goals3\", etc."
},
"years2": {
"type": "number",
"label": "Club 2 years",
"description": "The years that the player was at their second club."
},
"clubs2": {
"type": "string",
"label": "Club 2",
"description": "The second club that the player has been contracted at."
},
"caps2": {
"type": "number",
"label": "Club 2 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the second club."
},
"goals2": {
"type": "number",
"label": "Club 2 goals",
"description": "The number of goals that the player has been awarded in league competition for the second club."
},
"years3": {
"type": "number",
"label": "Club 3 years",
"description": "The years that the player was at their third club."
},
"clubs3": {
"type": "string",
"label": "Club 3",
"description": "The third club that the player has been contracted at."
},
"caps3": {
"type": "number",
"label": "Club 3 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the third club."
},
"goals3": {
"type": "number",
"label": "Club 3 goals",
"description": "The number of goals that the player has been awarded in league competition for the third club."
},
"years4": {
"type": "number",
"label": "Club 4 years",
"description": "The years that the player was at their fourth club."
},
"clubs4": {
"type": "string",
"label": "Club 4",
"description": "The fourth club that the player has been contracted at."
},
"caps4": {
"type": "number",
"label": "Club 4 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the fourth club."
},
"goals4": {
"type": "number",
"label": "Club 4 goals",
"description": "The number of goals that the player has been awarded in league competition for the fourth club."
},
"years5": {
"type": "number",
"label": "Club 5 years",
"description": "The years that the player was at their fifth club."
},
"clubs5": {
"type": "string",
"label": "Club 5",
"description": "The fifth club that the player has been contracted at."
},
"caps5": {
"type": "number",
"label": "Club 5 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the fifth club."
},
"goals5": {
"type": "number",
"label": "Club 5 goals",
"description": "The number of goals that the player has been awarded in league competition for the fifth club."
},
"years6": {
"type": "number",
"label": "Club 6 years",
"description": "The years that the player was at their sixth club."
},
"clubs6": {
"type": "string",
"label": "Club 6",
"description": "The sixth club that the player has been contracted at."
},
"caps6": {
"type": "number",
"label": "Club 6 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the sixth club."
},
"goals6": {
"type": "number",
"label": "Club 6 goals",
"description": "The number of goals that the player has been awarded in league competition for the sixth club."
},
"years7": {
"type": "number",
"label": "Club 7 years",
"description": "The years that the player was at their seventh club."
},
"clubs7": {
"type": "string",
"label": "Club 7",
"description": "The seventh club that the player has been contracted at."
},
"caps7": {
"type": "number",
"label": "Club 7 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the seventh club."
},
"goals7": {
"type": "number",
"label": "Club 7 goals",
"description": "The number of goals that the player has been awarded in league competition for the seventh club."
},
"years8": {
"type": "number",
"label": "Club 8 years",
"description": "The years that the player was at their eighth club."
},
"clubs8": {
"type": "string",
"label": "Club 8",
"description": "The eighth club that the player has been contracted at."
},
"caps8": {
"type": "number",
"label": "Club 8 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the eighth club."
},
"goals8": {
"type": "number",
"label": "Club 8 goals",
"description": "The number of goals that the player has been awarded in league competition for the eighth club."
},
"years9": {
"type": "number",
"label": "Club 9 years",
"description": "The years that the player was at their ninth club."
},
"clubs9": {
"type": "string",
"label": "Club 9",
"description": "The ninth club that the player has been contracted at."
},
"caps9": {
"type": "number",
"label": "Club 9 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the ninth club."
},
"goals9": {
"type": "number",
"label": "Club 9 goals",
"description": "The number of goals that the player has been awarded in league competition for the ninth club."
},
"years10": {
"type": "number",
"label": "Club 10 years",
"description": "The years that the player was at their tenth club."
},
"clubs10": {
"type": "string",
"label": "Club 10",
"description": "The tenth club that the player has been contracted at."
},
"caps10": {
"type": "number",
"label": "Club 10 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the tenth club."
},
"goals10": {
"type": "number",
"label": "Club 10 goals",
"description": "The number of goals that the player has been awarded in league competition for the tenth club."
},
"totalcaps": {
"type": "number",
"label": "Club appearances total",
"description": "The total number of appearances the player has been awarded in league competition for all non-youth clubs."
},
"totalgoals": {
"label": "Club goals total",
"description": "The total number of goals the player has scored in league competition for all non-youth clubs.",
"type": "number"
},
"nationalyears1": {
"type": "number",
"label": "National team 1 years",
"description": "The years that the player has played for the first national team. Up to 9 years can be added using the parameter names \"nationalyears2\", \"nationalyears3\", etc."
},
"nationalteam1": {
"type": "string",
"label": "National team 1",
"description": "The first national team that the player has played for (including non-senior teams such as U21). Up to 9 teams can be added using the parameter names \"nationalteam2\", \"nationalteam3\", etc."
},
"nationalcaps1": {
"type": "number",
"label": "National team 1 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the first national team. Up to 9 numbers can be added using the parameter names \"nationalcaps2\", \"nationalcaps3\", etc."
},
"nationalgoals1": {
"type": "number",
"label": "National team 1 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the first national team. Up to 9 numbers can be added using the parameter names \"nationalgoals2\", \"nationalgoals3\", etc."
},
"nationalyears2": {
"type": "number",
"label": "National team 2 years",
"description": "The years that the player has played for the second national team."
},
"nationalteam2": {
"type": "string",
"label": "National team 2",
"description": "The second national team that the player has played for."
},
"nationalcaps2": {
"type": "number",
"label": "National team 2 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the second national team."
},
"nationalgoals2": {
"type": "number",
"label": "National team 2 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the second national team."
},
"nationalyears3": {
"type": "number",
"label": "National team 3 years",
"description": "The years that the player has played for the third national team."
},
"nationalteam3": {
"type": "string",
"label": "National team 3",
"description": "The third national team that the player has played for."
},
"nationalcaps3": {
"type": "number",
"label": "National team 3 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the third national team."
},
"nationalgoals3": {
"type": "number",
"label": "National team 3 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the third national team."
},
"nationalyears4": {
"type": "number",
"label": "National team 4 years",
"description": "The years that the player has played for the fourth national team."
},
"nationalteam4": {
"type": "string",
"label": "National team 4",
"description": "The fourth national team that the player has played for."
},
"nationalcaps4": {
"type": "number",
"label": "National team 4 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the fourth national team."
},
"nationalgoals4": {
"type": "number",
"label": "National team 4 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the fourth national team."
},
"nationalyears5": {
"type": "number",
"label": "National team 5 years",
"description": "The years that the player has played for the fifth national team."
},
"nationalteam5": {
"type": "string",
"label": "National team 5",
"description": "The fifth national team that the player has played for."
},
"nationalcaps5": {
"type": "number",
"label": "National team 5 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the fifth national team."
},
"nationalgoals5": {
"type": "number",
"label": "National team 5 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the fifth national team."
},
"manageryears1": {
"type": "number",
"label": "Manager club 1 years",
"description": "The years that the person has served with the first club in the capacity of team manager."
},
"managerclubs1": {
"type": "string",
"label": "Manager club 1",
"description": "The first club that the person has served within the capacity of team manager. Please do not list positions other than team manager (such as assistant or coach positions, or director of football roles where this role is not considered managerial) unless that position is a significant part of the person's career; this will apply primarily to those with significant or perhaps primary experience in management. Clubs listed can be both local and national and should be restricted to those ordinarily considered notable in themselves."
},
"manageryears2": {
"type": "number",
"label": "Manager club 2 years",
"description": "The years that the person has served with the second club in the capacity of team manager. Up to 30 can be added using the parameter names \"manageryears3\", \"manageryears4\", etc."
},
"managerclubs2": {
"type": "string",
"label": "Manager club 2",
"description": "The second club that the person has served within the capacity of team manager. Up to 30 can be added using the parameter names \"managerclubs3\", \"managerclubs4\", etc."
},
"manageryears3": {
"type": "number",
"label": "Manager club 3 years",
"description": "The years that the person has served with the third club in the capacity of team manager."
},
"managerclubs3": {
"type": "string",
"label": "Manager club 3",
"description": "The third club that the person has served within the capacity of team manager."
},
"manageryears4": {
"type": "number",
"label": "Manager club 4 years",
"description": "The years that the person has served with the fourth club in the capacity of team manager."
},
"managerclubs4": {
"type": "string",
"label": "Manager club 4",
"description": "The fourth club that the person has served within the capacity of team manager."
},
"manageryears5": {
"type": "number",
"label": "Manager club 5 years",
"description": "The years that the person has served with the fifth club in the capacity of team manager."
},
"managerclubs5": {
"type": "string",
"label": "Manager club 5",
"description": "The fifth club that the person has served within the capacity of team manager."
},
"manageryears6": {
"type": "number",
"label": "Manager club 6 years",
"description": "The years that the person has served with the sixth club in the capacity of team manager."
},
"managerclubs6": {
"type": "string",
"label": "Manager club 6",
"description": "The sixth club that the person has served within the capacity of team manager."
},
"manageryears7": {
"type": "number",
"label": "Manager club 7 years",
"description": "The years that the person has served with the seventh club in the capacity of team manager."
},
"managerclubs7": {
"type": "string",
"label": "Manager club 7",
"description": "The seventh club that the person has served within the capacity of team manager."
},
"manageryears8": {
"type": "number",
"label": "Manager club 8 years",
"description": "The years that the person has served with the eighth club in the capacity of team manager."
},
"managerclubs8": {
"type": "string",
"label": "Manager club 8",
"description": "The eighth club that the person has served within the capacity of team manager."
},
"manageryears9": {
"type": "number",
"label": "Manager club 9 years",
"description": "The years that the person has served with the ninth club in the capacity of team manager."
},
"managerclubs9": {
"type": "string",
"label": "Manager club 9",
"description": "The ninth club that the person has served within the capacity of team manager."
},
"manageryears10": {
"type": "number",
"label": "Manager club 10 years",
"description": "The years that the person has served with the tenth club in the capacity of team manager."
},
"managerclubs10": {
"type": "string",
"label": "Manager club 10",
"description": "The tenth club that the person has served within the capacity of team manager."
},
"medaltemplates": {
"type": "string",
"label": "Medal templates",
"description": "Honors can be added here using {{Medal}} templates."
},
"club-update": {
"type": "string",
"label": "Club update timestamp",
"description": "A timestamp at which the player's infobox club statistics are unambiguously correct. The bare date of the last match played should not be used because this is not unambiguous. Dates should use the same format as the rest of the article; use five tildes (<nowiki>~~~~~</nowiki>) to generate the current date/time in dmy format, or {{subst:mdytime}} for mdy format. The parameter is not needed if the player has retired.",
"aliases": [ "pcupdate" ]
},
"nationalteam-update": {
"label": "National team update timestamp",
"description": "A timestamp at which the player's infobox national team statistics are unambiguously correct. The bare date of the last match played should not be used because this is not unambiguous. Dates should use the same format as the rest of the article; use five tildes (<nowiki>~~~~~</nowiki>) to generate the current date/time in dmy format, or {{subst:mdytime}} for mdy format. The parameter is not needed if the player has retired.",
"type": "string",
"aliases": [ "ntupdate" ]
}
},
"format": "block"
}
</templatedata>
{{Collapse bottom}}
== Tracking categories ==
{{Infobox tracking cats}}
* {{clc|Pages using infobox football biography with height issues}}
* {{clc|Pages using infobox football biography with invalid clubnumber}}
* {{clc|Pages using infobox football biography with a module}}
* {{clc|Pages using infobox football biography with invalid position}}
* {{clc|Pages using infobox football biography with irregular position}}
* {{clc|Pages using infobox football biography with tags in position parameter}}
* {{clc|No local image but image on Wikidata}} – Used by [[Template:Wikidata image]] to track articles where an infobox has no image but [[Wikidata]] has an image name. To exclude articles from this category, add an image or {{para|nocat_wdimage|yes}} to the infobox.
== Supporting templates ==
The following templates are used directly from this template:
{{Columns-list|colwidth=20em|
* {{ml|Infobox3cols|}}
* {{tl|Abbr}}
* {{tl|Br separated entries}}
* {{tl|Infobox medal templates}}
* {{tl|Infobox person/height}}
* {{tl|Longitem}}
* {{tl|Main other}}
* {{tl|PAGENAMEBASE}}
* {{tl|Wikidata image}}
* {{tl|Yesno}}
}}
<includeonly>{{Basepage subpage|
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Association football infobox templates|Football biography]]
[[Category:Sportsperson infobox templates|Football biography]]
[[Category:Biographical templates usable as a module|Football biography]]
[[Category:Infobox templates with module parameter|Football biography]]
[[Category:Infobox templates with updated parameter]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
ljt4pt7100pfw7jver9jivxcn26i366
73969
73968
2026-07-11T18:59:31Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_football_biography/doc]]
73968
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{Short description|Wikipedia association football template}}
{{For|American football biographies|Template:Infobox gridiron football biography}}
{{High-use}}
{{Tracks Wikidata|P18|cat=No local image but image on Wikidata}}
{{Lua|Module:Infobox3cols|Module:InfoboxImage|Module:Check for unknown parameters|Module:String|Module:Footballer positions|Module:Check height}}
{{tl|Infobox football biography}} is intended to provide a quick overview of an [[association football]] (or [[Variants of association football|football variant]]) player's or manager's details to enable a reader to extract the most oft-needed information without trawling through the article proper.
{{Parameter names example
| name | image | upright | upright | alt | caption | full_name | birth_name | birth_date | birth_place | death_date | death_place | height | position | currentclub | clubnumber
| youthyears1 | youthclubs1 | youthyears2 | youthclubs2 | youthyears3 | youthclubs3 | youthyears4 | youthclubs4 | youthyears5 | youthclubs5 | youthyears6 | youthclubs6 | youthyears7 | youthclubs7 | youthyears8 | youthclubs8 | youthyears9 | youthclubs9 | youthyears10 | youthclubs10 | youthyears11 | youthclubs11 | youthyears12 | youthclubs12
| collegeyears1 | college1 | collegecaps1 | collegegoals1
| collegeyears2 | college2 | collegecaps2 | collegegoals2
| collegeyears3 | college3 | collegecaps3 | collegegoals3
| collegeyears4 | college4 | collegecaps4 | collegegoals4
| years1 | clubs1 | caps1 | goals1 | years2 | clubs2 | caps2 | goals2 | years3 | clubs3 | caps3 | goals3 | years4 | clubs4 | caps4 | goals4 | years5 | clubs5 | caps5 | goals5 | years6 | clubs6 | caps6 | goals6 | years7 | clubs7 | caps7 | goals7 | years8 | clubs8 | caps8 | goals8 | years9 | clubs9 | caps9 | goals9 | years10 | clubs10 | caps10 | goals10 | years11 | clubs11 | caps11 | goals11 | years12 | clubs12 | caps12 | goals12 | years13 | clubs13 | caps13 | goals13 | years14 | clubs14 | caps14 | goals14 | years15 | clubs15 | caps15 | goals15 | years16 | clubs16 | caps16 | goals16 | years17 | clubs17 | caps17 | goals17 | years18 | clubs18 | caps18 | goals18 | years19 | clubs19 | caps19 | goals19 | years20 | clubs20 | caps20 | goals20 | years21 | clubs21 | caps21 | goals21 | years22 | clubs22 | caps22 | goals22 | years23 | clubs23 | caps23 | goals23 | years24 | clubs24 | caps24 | goals24 | years25 | clubs25 | caps25 | goals25 | years26 | clubs26 | caps26 | goals26 | years27 | clubs27 | caps27 | goals27 | years28 | clubs28 | caps28 | goals28 | years29 | clubs29 | caps29 | goals29 | years30 | clubs30 | caps30 | goals30 | years31 | clubs31 | caps31 | goals31 | years32 | clubs32 | caps32 | goals32 | years33 | clubs33 | caps33 | goals33 | years34 | clubs34 | caps34 | goals34 | years35 | clubs35 | caps35 | goals35 | years36 | clubs36 | caps36 | goals36 | years37 | clubs37 | caps37 | goals37 | years38 | clubs38 | caps38 | goals38 | years39 | clubs39 | caps39 | goals39 | years40 | clubs40 | caps40 | goals40 | years41 | clubs41 | caps41 | goals41 | years42 | clubs42 | caps42 | goals42 | years43 | clubs43 | caps43 | goals43 | years44 | clubs44 | caps44 | goals44 | years45 | clubs45 | caps45 | goals45 | years46 | clubs46 | caps46 | goals46 | years47 | clubs47 | caps47 | goals47 | years48 | clubs48 | caps48 | goals48 | years49 | clubs49 | caps49 | goals49 | years50 | clubs50 | caps50 | goals50 | years51 | clubs51 | caps51 | goals51 | years52 | clubs52 | caps52 | goals52
| totalcaps | totalgoals
| nationalyears1 | nationalteam1 | nationalcaps1 | nationalgoals1 | nationalyears2 | nationalteam2 | nationalcaps2 | nationalgoals2 | nationalyears3 | nationalteam3 | nationalcaps3 | nationalgoals3 | nationalyears4 | nationalteam4 | nationalcaps4 | nationalgoals4 | nationalyears5 | nationalteam5 | nationalcaps5 | nationalgoals5 | nationalyears6 | nationalteam6 | nationalcaps6 | nationalgoals6 | nationalyears7 | nationalteam7 | nationalcaps7 | nationalgoals7 | nationalyears8 | nationalteam8 | nationalcaps8 | nationalgoals8 | nationalyears9 | nationalteam9 | nationalcaps9 | nationalgoals9 | nationalyears10 | nationalteam10 | nationalcaps10 | nationalgoals10
| manageryears1 | managerclubs1 | manageryears2 | managerclubs2 | manageryears3 | managerclubs3 | manageryears4 | managerclubs4 | manageryears5 | managerclubs5 | manageryears6 | managerclubs6 | manageryears7 | managerclubs7 | manageryears8 | managerclubs8 | manageryears9 | managerclubs9 | manageryears10 | managerclubs10 | manageryears11 | managerclubs11 | manageryears12 | managerclubs12 | manageryears13 | managerclubs13 | manageryears14 | managerclubs14 | manageryears15 | managerclubs15 | manageryears16 | managerclubs16 | manageryears17 | managerclubs17 | manageryears18 | managerclubs18 | manageryears19 | managerclubs19 | manageryears20 | managerclubs20 | manageryears21 | managerclubs21 | manageryears22 | managerclubs22 | manageryears23 | managerclubs23 | manageryears24 | managerclubs24 | manageryears25 | managerclubs25 | manageryears26 | managerclubs26 | manageryears27 | managerclubs27 | manageryears28 | managerclubs28 | manageryears29 | managerclubs29 | manageryears30 | managerclubs30 | manageryears31 | managerclubs31 | manageryears32 | managerclubs32 | manageryears33 | managerclubs33 | manageryears34 | managerclubs34 | manageryears35 | managerclubs35 | manageryears36 | managerclubs36 | manageryears37 | managerclubs37 | manageryears38 | managerclubs38 | manageryears39 | managerclubs39 | manageryears40 | managerclubs40 | manageryears41 | managerclubs41 | manageryears42 | managerclubs42 | manageryears43 | managerclubs43 | manageryears44 | managerclubs44 | manageryears45 | managerclubs45 | manageryears46 | managerclubs46 | manageryears47 | managerclubs47 | manageryears48 | managerclubs48 | manageryears49 | managerclubs49 | manageryears50 | managerclubs50 | manageryears51 | managerclubs51 | manageryears52 | managerclubs52 | manageryears53 | managerclubs53 | manageryears54 | managerclubs54 | manageryears55 | managerclubs55 | manageryears56 | managerclubs56 | manageryears57 | managerclubs57 | manageryears58 | managerclubs58 | manageryears59 | managerclubs59 | manageryears60 | managerclubs60 | manageryears60 | managerclubs60 | manageryears61 | managerclubs61 | manageryears62 | managerclubs62 | manageryears63 | managerclubs63 | manageryears64 | managerclubs64 | manageryears65 | managerclubs65 | manageryears66 | managerclubs66 | manageryears67 | managerclubs67 | manageryears68 | managerclubs68 | manageryears69 | managerclubs69 | manageryears70 | managerclubs70 | manageryears71 | managerclubs71 | manageryears72 | managerclubs72 | manageryears73 | managerclubs73 | manageryears74 | managerclubs74 | manageryears75 | managerclubs75 | manageryears76 | managerclubs76 | manageryears77 | managerclubs77 | manageryears78 | managerclubs78 | manageryears79 | managerclubs79 | manageryears80 | managerclubs80
| medaltemplates | medaltemplates-expand
| module | club-update | nationalteam-update
}}
== Usage ==
Note: all the field names ending in '''1''' should be repeated for each team, e.g. '''youthyears1''' and '''youthclubs1''' should be followed by '''youthyears2''' and '''youthclubs2''' and so on, as needed.
===Current players===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
|embed =
|name =
|image =
|upright =
|alt =
|caption =
|full_name =
|birth_date =
|birth_place =
|height =
|position =
|currentclub =
|clubnumber =
|youthyears1 =
|youthclubs1 =
|collegeyears1 =
|college1 =
|collegecaps1 =
|collegegoals1 =
|years1 =
|clubs1 =
|caps1 =
|goals1 =
|nationalyears1 =
|nationalteam1 =
|nationalcaps1 =
|nationalgoals1 =
|medaltemplates =
|club-update =
|nationalteam-update =
}}
</syntaxhighlight>
===Former players===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
|embed =
|name =
|image =
|upright =
|alt =
|caption =
|full_name =
|birth_date =
|birth_place =
|death_date =
|death_place =
|height =
|position =
|youthyears1 =
|youthclubs1 =
|collegeyears1 =
|college1 =
|collegecaps1 =
|collegegoals1 =
|years1 =
|clubs1 =
|caps1 =
|goals1 =
|totalcaps =
|totalgoals =
|nationalyears1 =
|nationalteam1 =
|nationalcaps1 =
|nationalgoals1 =
|medaltemplates =
}}
</syntaxhighlight>
===Managers who were players===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
|embed =
|name =
|image =
|upright =
|alt =
|caption =
|full_name =
|birth_date =
|birth_place =
|death_date =
|death_place =
|height =
|position =
|currentclub =
|youthyears1 =
|youthclubs1 =
|collegeyears1 =
|college1 =
|collegecaps1 =
|collegegoals1 =
|years1 =
|clubs1 =
|caps1 =
|goals1 =
|totalcaps =
|totalgoals =
|nationalyears1 =
|nationalteam1 =
|nationalcaps1 =
|nationalgoals1 =
|medaltemplates =
|manageryears1 =
|managerclubs1 =
}}
</syntaxhighlight>
===Managers who were not players===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
|embed =
|name =
|image =
|upright =
|caption =
|full_name =
|birth_date =
|birth_place =
|death_date =
|death_place =
|currentclub =
|manageryears1 =
|managerclubs1 =
}}
</syntaxhighlight>
=== Full blank template ===
{{Hidden begin |showhide=left |title=Blank template with all parameters |bodystyle=font-size:105%;}}
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
| embed =
| embed-header =
| header-color =
| name =
| image =
| upright =
| alt =
| caption =
| full_name =
| birth_name =
| birth_date =
| birth_place =
| death_date =
| death_place =
| height =
| position =
| currentclub =
| clubnumber =
| youthyears1 =
| youthclubs1 =
| youthyears2 =
| youthclubs2 =
| youthyears3 =
| youthclubs3 =
| youthyears4 =
| youthclubs4 =
| youthyears5 =
| youthclubs5 =
| youthyears6 =
| youthclubs6 =
| youthyears7 =
| youthclubs7 =
| youthyears8 =
| youthclubs8 =
| youthyears9 =
| youthclubs9 =
| youthyears10 =
| youthclubs10 =
| youthyears11 =
| youthclubs11 =
| youthyears12 =
| youthclubs12 =
| collegeyears1 =
| college1 =
| collegecaps1 =
| collegegoals1 =
| collegeyears2 =
| college2 =
| collegecaps2 =
| collegegoals2 =
| collegeyears3 =
| college3 =
| collegecaps3 =
| collegegoals3 =
| collegeyears4 =
| college4 =
| collegecaps4 =
| collegegoals4 =
| years1 =
| clubs1 =
| caps1 =
| goals1 =
| years2 =
| clubs2 =
| caps2 =
| goals2 =
| years3 =
| clubs3 =
| caps3 =
| goals3 =
| years4 =
| clubs4 =
| caps4 =
| goals4 =
| years5 =
| clubs5 =
| caps5 =
| goals5 =
| years6 =
| clubs6 =
| caps6 =
| goals6 =
| years7 =
| clubs7 =
| caps7 =
| goals7 =
| years8 =
| clubs8 =
| caps8 =
| goals8 =
| years9 =
| clubs9 =
| caps9 =
| goals9 =
| years10 =
| clubs10 =
| caps10 =
| goals10 =
| years11 =
| clubs11 =
| caps11 =
| goals11 =
| years12 =
| clubs12 =
| caps12 =
| goals12 =
| years13 =
| clubs13 =
| caps13 =
| goals13 =
| years14 =
| clubs14 =
| caps14 =
| goals14 =
| years15 =
| clubs15 =
| caps15 =
| goals15 =
| years16 =
| clubs16 =
| caps16 =
| goals16 =
| years17 =
| clubs17 =
| caps17 =
| goals17 =
| years18 =
| clubs18 =
| caps18 =
| goals18 =
| years19 =
| clubs19 =
| caps19 =
| goals19 =
| years20 =
| clubs20 =
| caps20 =
| goals20 =
| years21 =
| clubs21 =
| caps21 =
| goals21 =
| years22 =
| clubs22 =
| caps22 =
| goals22 =
| years23 =
| clubs23 =
| caps23 =
| goals23 =
| years24 =
| clubs24 =
| caps24 =
| goals24 =
| years25 =
| clubs25 =
| caps25 =
| goals25 =
| years26 =
| clubs26 =
| caps26 =
| goals26 =
| years27 =
| clubs27 =
| caps27 =
| goals27 =
| years28 =
| clubs28 =
| caps28 =
| goals28 =
| years29 =
| clubs29 =
| caps29 =
| goals29 =
| years30 =
| clubs30 =
| caps30 =
| goals30 =
| years31 =
| clubs31 =
| caps31 =
| goals31 =
| years32 =
| clubs32 =
| caps32 =
| goals32 =
| years33 =
| clubs33 =
| caps33 =
| goals33 =
| years34 =
| clubs34 =
| caps34 =
| goals34 =
| years35 =
| clubs35 =
| caps35 =
| goals35 =
| years36 =
| clubs36 =
| caps36 =
| goals36 =
| years37 =
| clubs37 =
| caps37 =
| goals37 =
| years38 =
| clubs38 =
| caps38 =
| goals38 =
| years39 =
| clubs39 =
| caps39 =
| goals39 =
| years40 =
| clubs40 =
| caps40 =
| goals40 =
| years41 =
| clubs41 =
| caps41 =
| goals41 =
| years42 =
| clubs42 =
| caps42 =
| goals42 =
| years43 =
| clubs43 =
| caps43 =
| goals43 =
| years44 =
| clubs44 =
| caps44 =
| goals44 =
| years45 =
| clubs45 =
| caps45 =
| goals45 =
| years46 =
| clubs46 =
| caps46 =
| goals46 =
| years47 =
| clubs47 =
| caps47 =
| goals47 =
| years48 =
| clubs48 =
| caps48 =
| goals48 =
| years49 =
| clubs49 =
| caps49 =
| goals49 =
| years50 =
| clubs50 =
| caps50 =
| goals50 =
| years51 =
| clubs51 =
| caps51 =
| goals51 =
| years52 =
| clubs52 =
| caps52 =
| goals52 =
| totalcaps =
| totalgoals =
| nationalyears1 =
| nationalteam1 =
| nationalcaps1 =
| nationalgoals1 =
| nationalyears2 =
| nationalteam2 =
| nationalcaps2 =
| nationalgoals2 =
| nationalyears3 =
| nationalteam3 =
| nationalcaps3 =
| nationalgoals3 =
| nationalyears4 =
| nationalteam4 =
| nationalcaps4 =
| nationalgoals4 =
| nationalyears5 =
| nationalteam5 =
| nationalcaps5 =
| nationalgoals5 =
| nationalyears6 =
| nationalteam6 =
| nationalcaps6 =
| nationalgoals6 =
| nationalyears7 =
| nationalteam7 =
| nationalcaps7 =
| nationalgoals7 =
| nationalyears8 =
| nationalteam8 =
| nationalcaps8 =
| nationalgoals8 =
| nationalyears9 =
| nationalteam9 =
| nationalcaps9 =
| nationalgoals9 =
| nationalyears10 =
| nationalteam10 =
| nationalcaps10 =
| nationalgoals10 =
| manageryears1 =
| managerclubs1 =
| manageryears2 =
| managerclubs2 =
| manageryears3 =
| managerclubs3 =
| manageryears4 =
| managerclubs4 =
| manageryears5 =
| managerclubs5 =
| manageryears6 =
| managerclubs6 =
| manageryears7 =
| managerclubs7 =
| manageryears8 =
| managerclubs8 =
| manageryears9 =
| managerclubs9 =
| manageryears10 =
| managerclubs10 =
| manageryears11 =
| managerclubs11 =
| manageryears12 =
| managerclubs12 =
| manageryears13 =
| managerclubs13 =
| manageryears14 =
| managerclubs14 =
| manageryears15 =
| managerclubs15 =
| manageryears16 =
| managerclubs16 =
| manageryears17 =
| managerclubs17 =
| manageryears18 =
| managerclubs18 =
| manageryears19 =
| managerclubs19 =
| manageryears20 =
| managerclubs20 =
| manageryears21 =
| managerclubs21 =
| manageryears22 =
| managerclubs22 =
| manageryears23 =
| managerclubs23 =
| manageryears24 =
| managerclubs24 =
| manageryears25 =
| managerclubs25 =
| manageryears26 =
| managerclubs26 =
| manageryears27 =
| managerclubs27 =
| manageryears28 =
| managerclubs28 =
| manageryears29 =
| managerclubs29 =
| manageryears30 =
| managerclubs30 =
| manageryears31 =
| managerclubs31 =
| manageryears32 =
| managerclubs32 =
| manageryears33 =
| managerclubs33 =
| manageryears34 =
| managerclubs34 =
| manageryears35 =
| managerclubs35 =
| manageryears36 =
| managerclubs36 =
| manageryears37 =
| managerclubs37 =
| manageryears38 =
| managerclubs38 =
| manageryears39 =
| managerclubs39 =
| manageryears40 =
| managerclubs40 =
| manageryears41 =
| managerclubs41 =
| manageryears42 =
| managerclubs42 =
| manageryears43 =
| managerclubs43 =
| manageryears44 =
| managerclubs44 =
| manageryears45 =
| managerclubs45 =
| manageryears46 =
| managerclubs46 =
| manageryears47 =
| managerclubs47 =
| manageryears48 =
| managerclubs48 =
| manageryears49 =
| managerclubs49 =
| manageryears50 =
| managerclubs50 =
| manageryears51 =
| managerclubs51 =
| manageryears52 =
| managerclubs52 =
| manageryears53 =
| managerclubs53 =
| manageryears54 =
| managerclubs54 =
| manageryears55 =
| managerclubs55 =
| manageryears56 =
| managerclubs56 =
| manageryears57 =
| managerclubs57 =
| manageryears58 =
| managerclubs58 =
| manageryears59 =
| managerclubs59 =
| manageryears60 =
| managerclubs60 =
| manageryears60 =
| managerclubs60 =
| manageryears61 =
| managerclubs61 =
| manageryears62 =
| managerclubs62 =
| manageryears63 =
| managerclubs63 =
| manageryears64 =
| managerclubs64 =
| manageryears65 =
| managerclubs65 =
| manageryears66 =
| managerclubs66 =
| manageryears67 =
| managerclubs67 =
| manageryears68 =
| managerclubs68 =
| manageryears69 =
| managerclubs69 =
| manageryears70 =
| managerclubs70 =
| manageryears71 =
| managerclubs71 =
| manageryears72 =
| managerclubs72 =
| manageryears73 =
| managerclubs73 =
| manageryears74 =
| managerclubs74 =
| manageryears75 =
| managerclubs75 =
| manageryears76 =
| managerclubs76 =
| manageryears77 =
| managerclubs77 =
| manageryears78 =
| managerclubs78 =
| manageryears79 =
| managerclubs79 =
| manageryears80 =
| managerclubs80 =
| medaltemplates =
| medaltemplates-expand =
| module =
| club-update =
| nationalteam-update =
}}
</syntaxhighlight>
{{Hidden end}}
{{Clear}}
== Parameters ==
All parameters are optional.
;{{{embed}}}: Enables the template to be embedded into another template, such as {{tl|Infobox person}}. See [[#Use as a child template|explanation below]].
;{{{embed-header}}}: Allows for a custom heading to the infobox instead of "Association football career" when embedded into another template.
;{{{header-color}}}: Allows a custom [[web color]] to be set for the template's section headings and a divider when embedded into another template.
;{{{name}}}: The commonly used name of the player. If this is omitted, it will be inferred from the title of the article.
;{{{full_name}}}: The player's complete name. Long names will wrap automatically to the width of the infobox, so there's no need to include explicit linebreaks. Alias: '''fullname'''
;{{{image}}}: A picture of the player, ideally on the pitch in the strip of their most recent team (or the team the player is most well known for, in the case of retirees). Images should be given in the format {{mono|<nowiki>Example.jpg</nowiki>}}, rather than {{mono|<nowiki>[[File:Example.jpg]]</nowiki>}}.
;{{{upright}}}: Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%). The use of {{{image_size}}} has been deprecated and should be avoided per [[WP:IMGSIZE]].
;{{{alt}}}: [[WP:ALT|Alternative text]] for the image.
;{{{caption}}}: A caption for the image.
;{{{birth_name}}}: If different from name and full_name.
;{{{birth_date}}}: The player's date of birth. A template ({{Tl|Birth date and age}} for living people; {{tl|Birth year}} or {{Tl|Birth date}} for all others) should be used to add the date, but be sure to use the appropriate parameters to present the date in the same format as used in the text. The date should not be wikilinked.
;{{{birth_place}}}: The location of the player's birth.
;{{{death_date}}}: The player's date of death. The template {{Tl|Death date and age}} should be used to add the date, but be sure to use the appropriate parameters to present the date in the same format as used in the text. The date should not be wikilinked.
;{{{death_place}}}: The location of the player's death.
;{{{height}}}: The player's height in the units most common within the country in which they play, using the format "X m", "X cm", or "X ft Y in". When given in this format, the height will be [[Template:Infobox person/height/doc|automatically converted]]. Note that fractions of an inch can also be added, e.g. "5 ft 8+1/2 in" will output "5 ft {{fraction|8|1|2}} in (1.74 m)".
;{{{position}}}: The player's '''most common''' position or positions. If a player is known for playing in multiple roles then explain the point more fully within the article.
;{{{currentclub}}}: The club for which the player currently plays, or is employed by. If the player now works in a non-playing role at the club, add this after the club in brackets. For retired players and free agents not currently employed by any club or federation, leave blank.
;{{{clubnumber}}}: The shirt number of the player at their current club.
;{{{youthyears1}}}, {{{youthyears2}}}... {{{youthyears12}}}: A list of years that the player has been at each club as a youth, one per attribute, earliest to latest.
;{{{youthclubs1}}}, {{{youthclubs2}}}... {{{youthclubs12}}}: A list of clubs that the player was a member of as a youth, one per attribute, earliest to latest.
;{{{collegeyears1}}}... {{{collegeyears4}}}: A list of years that the player has been at each college team, one per attribute, earliest to latest.
;{{{college1}}}... {{{college4}}}: A list of college teams that the player was a member of, one per attribute, earliest to latest.
;{{{collegecaps1}}}... {{{collegecaps4}}}: A list of appearances that the player has been awarded in '''all competitive matches''' for each college team, one per attribute, earliest to latest.
;{{{collegegoals1}}}... {{{collegegoals4}}}: A list of goals that the player has been awarded in '''all competitive matches''' for each college team, one per attribute, earliest to latest.
;{{{years1}}}, {{{years2}}}... {{{years52}}}: A list of years that the player has been contracted at each club, one per attribute, earliest to latest.
;{{{clubs1}}}, {{{clubs2}}}... {{{clubs52}}}: A list of clubs that the player has been contracted at, one per attribute, earliest to latest.
;{{{caps1}}}, {{{caps2}}}... {{{caps52}}}: A list of appearances that the player has been awarded in '''league competition''' only for each club (note: Playoff matches are '''not''' counted as league matches by most statistical sources (e.g. [http://www.soccerbase.com Soccerbase] and the Sky Sports (Rothmans) Football Yearbook), so they should not be included in this infobox), one per attribute, earliest to latest.
;{{{goals1}}}, {{{goals2}}}... {{{goals52}}}: A list of goals that the player has been awarded in '''league competition''' only for each club (note: Playoff matches are '''not''' counted as league matches by most statistical sources (e.g. [http://www.soccerbase.com Soccerbase] and the Sky Sports (Rothmans) Football Yearbook), so they should not be included in this infobox), one per attribute, earliest to latest.
;{{{totalcaps}}}: The total number of appearances the player has been awarded in '''league competition''' for all clubs.
;{{{totalgoals}}}: The total number of goals the player has scored in '''league competition''' for all clubs.
;{{{nationalyears1}}}, {{{nationalyears2}}}... {{{nationalyears10}}}: A list of years that the player has played for each national team, one per attribute, youngest to oldest level (e.g. U17, U21, Olympic team, B team, senior team).
;{{{nationalteam1}}}, {{{nationalteam2}}}... {{{nationalteam10}}}: A list of international teams that the player has played for, including non-senior teams such as U21, one per attribute, youngest to oldest level (e.g. U17, U21, Olympic team, B team, senior team).
;{{{nationalcaps1}}}, {{{nationalcaps2}}}... {{{nationalcaps10}}}: A list of appearances that the player has been awarded in '''all competitions and friendlies''' for each national team, one per attribute, youngest to oldest level (e.g. U17, U21, Olympic team, B team, senior team).
;{{{nationalgoals1}}}, {{{nationalgoals2}}}... {{{nationalgoals10}}}: A list of goals that the player has been awarded in '''all competitions and friendlies''' for each national team, one per attribute, youngest to oldest level (e.g. U17, U21, Olympic team, B team, senior team).
;{{{manageryears1}}}, {{{manageryears2}}}... {{{manageryears80}}}: A list of years that the person has served within the capacity of manager at each team, one per attribute, earliest to latest.
;{{{managerclubs1}}}, {{{managerclubs2}}}... {{{managerclubs80}}}: A list of clubs that the person has served within the capacity of team manager. Please '''do not''' list positions other than team manager (such as assistant or coach positions, or director of football roles where this role is not considered managerial) unless that position is a significant part of the person's career; this will apply primarily to those with significant or perhaps primary experience in management. Clubs listed can be both local and national and should be restricted to those ordinarily considered notable in themselves.
;{{{medaltemplates}}}: Medals earned in international competition can be added here using the templates {{tl|Medal}}.
;{{{medaltemplates-expand}}}: Expands the medals section to be displayed by default instead of being collapsed.
;{{{club-update}}}: A timestamp at which the player's infobox club statistics are unambiguously correct. The bare date of the last match played should not be used because this is not unambiguous. Dates should use the same format as the rest of the article; use five tildes (<nowiki>~~~~~</nowiki>) to generate the current date/time in dmy format, or {{subst|mdytime}} for mdy format. The parameter is not needed if the player has retired. Alias: '''pcupdate'''
;{{{nationalteam-update}}}: A timestamp at which the player's infobox national team statistics are unambiguously correct. The bare date of the last match played should not be used because this is not unambiguous. Dates should use the same format as the rest of the article; use five tildes (<nowiki>~~~~~</nowiki>) to generate the current date/time in dmy format, or {{subst|mdytime}} for mdy format. The parameter is not needed if the player has retired. Alias: '''ntupdate'''
;{{{module}}}: Enables another template to be embedded into this template, such as {{tl|Infobox military person}}. See [[#Embedding other templates|explanation below]].
=== Use as a child template ===
The '''embed''' parameter is used when embedding this infobox into another.
{{Infobox person module documentation|Infobox football biography|parameter=embed}}
=== Embedding other templates ===
The '''module''' parameter is used for embedding other templates into this infobox (see [[Wikipedia:Infobox modules]] and [[:Category:Biographical templates usable as a module]]).
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox football biography
| name =
| <!-- etc. -->
| module =
{{Infobox ABC
| embed = yes <!-- or child=yes / subbox=yes-->
| <!-- etc. -->
}}
}}
</syntaxhighlight>
== Examples ==
=== Independent ===
{{Infobox football biography
|name = Tim Template
|image = Nizar-Khalfan.jpg
|alt = Photo of a player in blue football kit, hair braided.
|caption = Tim Template with the Template Rangers
|full_name = Tim Tenerife Template
|birth_date = {{birth date and age|1975|1|1|df=y}}
|birth_place = Template City, Templatia
|height = 1.75 m
|position = [[Forward (association football)|Striker]]
|currentclub = Template City F.C.
|clubnumber = 9
|youthyears1 = 1985–1987
|youthclubs1 = Template Juniors
|youthyears2 = 1987–1992
|youthclubs2 = Template Youth
|collegeyears1 = 1983–1985
|college1 = Template College
|collegecaps1 = 2
|collegegoals1 = 1
|years1 = 1992–1999
|clubs1 = Template United F.C.
|caps1 = 75
|goals1 = 26
|years2 = 1999–2002
|clubs2 = Template Rangers
|caps2 = 32
|goals2 = 11
|years3 = 2001
|clubs3 = → Example F.C. (loan)
|caps3 = 15
|goals3 = 7
|years4 = 2002–
|clubs4 = Template City F.C.
|caps4 = 113
|goals4 = 46
|nationalyears1 = 1991
|nationalteam1 = Examplia U16
|nationalcaps1 = 1
|nationalgoals1 = 0
|nationalyears2 = 1996–1998
|nationalteam2 = Templatia U21
|nationalcaps2 = 8
|nationalgoals2 = 2
|nationalyears3 = 1999–
|nationalteam3 = Templatia
|nationalcaps3 = 46
|nationalgoals3 = 13
|medaltemplates =
{{Medal|Country|Brazil}}
{{Medal|Competition|FIFA Template Cup}}
{{medal|Winner|2013 FIFA Template Cup|}}
{{medal|3rd|2001 FIFA Template Cup|}}
{{Medal|Competition|[[Football at the Summer Olympics|Summer Olympics]]}}
{{medal|Gold|[[2016 Summer Olympics|2016 Rio de Janeiro]]|[[Football at the 2016 Summer Olympics – Men's tournament|Team]]}}
|club-update = 14:56, 6 October 2014 (UTC)
|nationalteam-update = 14:56, 6 October 2014 (UTC)
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox football biography
|name = Tim Template
|image = Nizar-Khalfan.jpg
|alt = Photo of a player in blue football kit, hair braided.
|caption = Tim Template with the Template Rangers
|full_name = Tim Tenerife Template
|birth_date = {{birth date and age|1975|1|1|df=y}}
|birth_place = Template City, Templatia
|height = 1.75 m
|position = [[Forward (association football)|Striker]]
|currentclub = Template City F.C.
|clubnumber = 9
|youthyears1 = 1985–1987
|youthclubs1 = Template Juniors
|youthyears2 = 1987–1992
|youthclubs2 = Template Youth
|collegeyears1 = 1983–1985
|college1 = Template College
|collegecaps1 = 2
|collegegoals1 = 1
|years1 = 1992–1999
|clubs1 = Template United F.C.
|caps1 = 75
|goals1 = 26
|years2 = 1999–2002
|clubs2 = Template Rangers
|caps2 = 32
|goals2 = 11
|years3 = 2001
|clubs3 = → Example F.C. (loan)
|caps3 = 15
|goals3 = 7
|years4 = 2002–
|clubs4 = Template City F.C.
|caps4 = 113
|goals4 = 46
|nationalyears1 = 1991
|nationalteam1 = Examplia U16
|nationalcaps1 = 1
|nationalgoals1 = 0
|nationalyears2 = 1996–1998
|nationalteam2 = Templatia U21
|nationalcaps2 = 8
|nationalgoals2 = 2
|nationalyears3 = 1999–
|nationalteam3 = Templatia
|nationalcaps3 = 46
|nationalgoals3 = 13
|medaltemplates =
{{Medal|Country|Brazil}}
{{Medal|Competition|FIFA Template Cup}}
{{medal|Winner|2013 FIFA Template Cup|}}
{{medal|3rd|2001 FIFA Template Cup|}}
{{Medal|Competition|[[Football at the Summer Olympics|Summer Olympics]]}}
{{medal|Gold|[[2016 Summer Olympics|2016 Rio de Janeiro]]|[[Football at the 2016 Summer Olympics – Men's tournament|Team]]}}
|club-update = ~~~~~
|nationalteam-update = ~~~~~
}}
</syntaxhighlight> {{clear}}
=== Embedded in a different infobox (embed parameter) ===
{{Infobox person
|name = Tim Template
|image = Nizar-Khalfan.jpg
|alt = Photo of a player in blue football kit, hair braided.
|caption = Tim Template with the Template Rangers
|birth_name = Tim Tenerife Template
|birth_date = {{birth date and age|1975|1|1|df=y}}
|birth_place = Template City, Templatia
|height = 1.75 m
|module =
{{Infobox football biography
|embed = yes
|position = [[Forward (association football)|Striker]]
|currentclub = Template City F.C.
|clubnumber = 9
|youthyears1 = 1985–1987
|youthclubs1 = Template Juniors
|youthyears2 = 1987–1992
|youthclubs2 = Template Youth
|collegeyears1 = 1983-1985
|college1 = Template College
|collegecaps1 = 2
|collegegoals1 = 1
|years1 = 1992–1999
|clubs1 = Template United F.C.
|caps1 = 75
|goals1 = 26
|years2 = 1999–2002
|clubs2 = Template Rangers
|caps2 = 32
|goals2 = 11
|years3 = 2001
|clubs3 = → Example F.C. (loan)
|caps3 = 15
|goals3 = 7
|years4 = 2002–
|clubs4 = Template City F.C.
|caps4 = 113
|goals4 = 46
|nationalyears1 = 1991
|nationalteam1 = Examplia U16
|nationalcaps1 = 1
|nationalgoals1 = 0
|nationalyears2 = 1996–1998
|nationalteam2 = Templatia U21
|nationalcaps2 = 8
|nationalgoals2 = 2
|nationalyears3 = 1999–
|nationalteam3 = Templatia
|nationalcaps3 = 46
|nationalgoals3 = 13
|medaltemplates =
{{Medal|Country|Brazil}}
{{Medal|Competition|FIFA Template Cup}}
{{medal|Winner|2013 FIFA Template Cup|}}
{{medal|3rd|2001 FIFA Template Cup|}}
{{Medal|Competition|[[Football at the Summer Olympics|Summer Olympics]]}}
{{medal|Gold|[[2016 Summer Olympics|2016 Rio de Janeiro]]|[[Football at the 2016 Summer Olympics – Men's tournament|Team]]}}
|club-update = 14:56, 6 October 2014 (UTC)
|nationalteam-update = 14:56, 6 October 2014 (UTC)
}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox person
|name = Tim Template
|image = Nizar-Khalfan.jpg
|alt = Photo of a player in blue football kit, hair braided.
|caption = Tim Template with the Template Rangers
|birth_name = Tim Tenerife Template
|birth_date = {{birth date and age|1975|1|1|df=y}}
|birth_place = Template City, Templatia
|height = 1.75 m
|module =
{{Infobox football biography
|embed = yes
|position = [[Forward (association football)|Striker]]
|currentclub = Template City F.C.
|clubnumber = 9
|youthyears1 = 1985–1987
|youthclubs1 = Template Juniors
|youthyears2 = 1987–1992
|youthclubs2 = Template Youth
|years1 = 1992–1999
|clubs1 = Template United F.C.
|caps1 = 75
|goals1 = 26
|years2 = 1999–2002
|clubs2 = Template Rangers
|caps2 = 32
|goals2 = 11
|years3 = 2001
|clubs3 = → Example F.C. (loan)
|caps3 = 15
|goals3 = 7
|years4 = 2002–
|clubs4 = Template City F.C.
|caps4 = 113
|goals4 = 46
|nationalyears1 = 1991
|nationalteam1 = Examplia U16
|nationalcaps1 = 1
|nationalgoals1 = 0
|nationalyears2 = 1996–1998
|nationalteam2 = Templatia U21
|nationalcaps2 = 8
|nationalgoals2 = 2
|nationalyears3 = 1999–
|nationalteam3 = Templatia
|nationalcaps3 = 46
|nationalgoals3 = 13
|medaltemplates =
{{Medal|Country|{{fb|BRA}}}}
{{Medal|Competition|FIFA Template Cup}}
{{medal|Winner|2013 FIFA Template Cup|}}
{{medal|3rd|2001 FIFA Template Cup|}}
{{Medal|Competition|[[Football at the Summer Olympics|Summer Olympics]]}}
{{medal|Gold|[[2016 Summer Olympics|2016 Rio de Janeiro]]|[[Football at the 2016 Summer Olympics – Men's tournament|Team]]}}
|club-update = ~~~~~
|nationalteam-update = ~~~~~
}}
}}
</syntaxhighlight> {{clear}}
{{Infobox rugby biography
| name = Alev Kelter
| birth_name = Leyla Alev Kelter
| birth_date = {{Birth-date and age|March 21, 1991}}
| birth_place = [[Tampa, Florida]], U.S.
| height = 5 ft 6 in
| ru_position = Centre
| repyears1 = 2016–present
| repteam1 = [[United States women's national rugby union team|United States]]
| repcaps1 = 9
| reppoints1 = 32
| ru_sevensnationalyears1 = 2014
| ru_sevensnationalteam1 = [[United States women's national rugby sevens team|United States]]
| ru_sevensnationalcomp1 = -
| module =
{{Infobox football biography | embed = yes
| position = [[Midfielder]]
| collegeyears1 = 2009–2013
| college1 = [[Wisconsin Badgers women's soccer|Wisconsin Badgers]]
| nationalyears1 = 2009
| nationalteam1 = [[United States women's national under-20 soccer team|United States U20]]
}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox rugby biography
| name = Alev Kelter
| birth_name = Leyla Alev Kelter
| birth_date = {{Birth-date and age|March 21, 1991}}
| birth_place = [[Tampa, Florida]], U.S.
| height = 5 ft 6 in
| ru_position = Centre
| repyears1 = 2016–present
| repteam1 = [[United States women's national rugby union team|United States]]
| repcaps1 = 9
| reppoints1 = 32
| ru_sevensnationalyears1 = 2014
| ru_sevensnationalteam1 = [[United States women's national rugby sevens team|United States]]
| ru_sevensnationalcomp1 = -
| module =
{{Infobox football biography | embed = yes
| position = [[Midfielder]]
| collegeyears1 = 2009–2013
| college1 = [[Wisconsin Badgers women's soccer|Wisconsin Badgers]]
| nationalyears1 = 2009
| nationalteam1 = [[United States women's national under-20 soccer team|United States U20]]
}}
}}
</syntaxhighlight> {{clear}}
=== Embedding other infoboxes (module parameter) ===
{{Infobox football biography
| name = Alev Kelter
| birth_name = Leyla Alev Kelter
| birth_date = {{Birth-date and age|March 21, 1991}}
| birth_place = [[Tampa, Florida]], U.S.
| height = 5 ft 6 in
| position = [[Midfielder]]
| collegeyears1 = 2009–2013
| college1 = [[Wisconsin Badgers women's soccer|Wisconsin Badgers]]
| nationalyears1 = 2009
| nationalteam1 = [[United States women's national under-20 soccer team|United States U20]]
| module =
{{Infobox rugby biography | embed = yes
| ru_position = Centre
| repyears1 = 2016–present
| repteam1 = [[United States women's national rugby union team|United States]]
| repcaps1 = 9
| reppoints1 = 32
| ru_sevensnationalyears1 = 2014
| ru_sevensnationalteam1 = [[United States women's national rugby sevens team|United States]]
| ru_sevensnationalcomp1 = -
}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox football biography
| name = Alev Kelter
| birth_name = Leyla Alev Kelter
| birth_date = {{Birth-date and age|March 21, 1991}}
| birth_place = [[Tampa, Florida]], U.S.
| height = 5 ft 6 in
| position = [[Midfielder]]
| collegeyears1 = 2009–2013
| college1 = [[Wisconsin Badgers women's soccer|Wisconsin Badgers]]
| nationalyears1 = 2009
| nationalteam1 = [[United States women's national under-20 soccer team|United States U20]]
| module =
{{Infobox rugby biography | embed = yes
| ru_position = Centre
| repyears1 = 2016–present
| repteam1 = [[United States women's national rugby union team|United States]]
| repcaps1 = 9
| reppoints1 = 32
| ru_sevensnationalyears1 = 2014
| ru_sevensnationalteam1 = [[United States women's national rugby sevens team|United States]]
| ru_sevensnationalcomp1 = -
}}
}}
</syntaxhighlight> {{clear}}
== Style guide ==
Try to always consider that an infobox exists to support an article and provide a quick synopsis of important facts. This becomes vital when considering that the amount of space available within an infobox is significantly less than that available outside of it.
As per the [[Wikipedia:Manual of Style (links)|manual of style]] entry on linking, years and dates should not be linked as they do not provide much benefit to the user.
Do not add flag icons to the birth_place, death_place, club, national team or other fields. See: [[Wikipedia:Manual of Style (flags)]].
As per the [[Wikipedia:Manual of Style (dates and numbers)|manual of style]] the player's height should be in the units most common in the country in which they play. Units should be abbreviated in the infobox and spelt out in the article text. Measurements should be inputted into the {{para|height}} parameter using the format "X m", "X cm", or "X ft Y in". This will [[Template:Infobox person/height/doc|automatically convert]] units between formats and correctly handle the presentation of units in their short forms. Per [[Wikipedia talk:WikiProject Football/Archive 87#Height|consensus at WikiProject Football]], metric height will then be displayed in metres.
For example:
*{{para|height|1.78 m}} produces 1.78 m (5 ft 10 in)
*{{para|height|178 cm}} produces 1.78 m (5 ft 10 in)
*{{para|height|5 ft 8 in}} produces 5 ft 8 in (1.73 m)
*{{para|height|5 ft 8+1/2 in}} produces 5 ft {{fraction|8|1|2}} in (1.74 m)
Alternatively, the templates {{tl|convert}} and {{tl|height}} may be used for height conversion. This is particularly useful if the more accurate metric height is known but the output should be in feet and inches, or if a fraction is desired for the converted inches.
For example:
*If you have the height in metres, but want to display feet and inches first:
**<code><nowiki>{{convert|1.73|m|order=flip}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.73|m|order=flip}}}}
*If you have the height in metres, but want to display feet and inches first (with precision to the nearest half inch):
**<code><nowiki>{{convert|1.79|m|order=flip|frac=2}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.79|m|order=flip|frac=2}}}}
**<code><nowiki>{{convert|1.79|m|order=flip|round=0.5}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.79|m|order=flip|round=0.5}}}}
*If you have the height in feet and inches (with precision to the nearest half inch), but want to display metres first:
**<code><nowiki>{{convert|5|ft|8+1/2|in|2|order=flip}}</nowiki></code> produces {{#invoke:person height|main|{{convert|5|ft|8+1/2|in|2|order=flip}}}}
**<code><nowiki>{{convert|5|ft|8.5|in|2|order=flip}}</nowiki></code> produces {{#invoke:person height|main|{{convert|5|ft|8.5|in|2|order=flip}}}}
*If you have the height in metres, but want to display the converted feet and inches with precision to the nearest half inch:
**<code><nowiki>{{height|m=1.79}}</nowiki></code> produces {{#invoke:person height|main|{{height|m=1.79}}}}
**<code><nowiki>{{convert|1.79|m|frac=2}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.79|m|frac=2}}}}
**<code><nowiki>{{convert|1.79|m|round=0.5}}</nowiki></code> produces {{#invoke:person height|main|{{convert|1.79|m|round=0.5}}}}
== Microformats ==
{{UF-hcard-person}}
==TemplateData==
{{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "This infobox template provides a quick overview of an association football player's or manager's details to enable a reader to extract the most oft-needed information without trawling through the article proper.",
"params": {
"name": {
"type": "string",
"label": "Name",
"description": "The commonly used name of the player. If this is omitted, it will be inferred from the title of the article."
},
"image": {
"type": "wiki-file-name",
"label": "Picture",
"description": "A picture of the player, ideally on the pitch in the strip of their most recent team (or the team the player is most well-known for, in the case of retirees). Use the format Example.jpg, rather than [[File:Example.jpg]]."
},
"upright": {
"type": "number",
"label": "Picture size",
"description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).",
"example": "0.8"
},
"alt": {
"type": "string",
"label": "Picture alt text",
"description": "Alt text for the picture."
},
"caption": {
"type": "string",
"label": "Picture caption",
"description": "A caption for the picture."
},
"full_name": {
"type": "string",
"label": "Full name",
"description": "The player's complete name.",
"aliases": [ "fullname" ]
},
"birth_date": {
"type": "number",
"label": "Birth date",
"description": "The player's date of birth. A template ({{Birth date}}, {{Birth date and age}}) should be used to add the date, but be sure to use the appropriate parameters to present the date in the same format as used in the text. The date should not be wikilinked."
},
"birth_place": {
"type": "string",
"label": "Birth place",
"description": "The location of the player's birth."
},
"death_date": {
"label": "Date of death",
"description": "Use exact date if known, but otherwise as close an approximation as possible. Example: April 27, 1992",
"type": "string",
"required": false
},
"death_place": {
"label": "Place of death",
"description": "Example: Washington, DC, USA",
"type": "string",
"required": false
},
"height": {
"type": "number",
"label": "Height",
"description": "The player's height in the units most common within the country in which they play. The {{height}} template should be used for automatic formatting. The infobox also supports automatic conversion if the height is specified as \"X m\", \"X cm\", or \"X ft Y in\"."
},
"position": {
"type": "string",
"label": "Position",
"description": "The player's most common position or positions. If a player is known for playing in multiple roles then explain the point more fully within the article."
},
"currentclub": {
"type": "string",
"label": "Current club",
"description": "The club for which the player currently plays, or is employed by. If the player now works in a non-playing role at the club, add this after the club in brackets. For retired players and free agents not currently employed by any club or federation, leave blank."
},
"clubnumber": {
"type": "number",
"label": "Number",
"description": "The shirt number of the player at their current club."
},
"youthyears1": {
"type": "number",
"label": "Youth club 1 years",
"description": "The years that the player was at their first youth club. Up to 8 clubs can be added using the parameter names \"youthyears2\", \"youthyears3\", etc."
},
"youthclubs1": {
"type": "string",
"label": "Youth club 1",
"description": "The first club that the player was a member of as a youth. Up to 8 clubs can be added using the parameter names \"youthclubs2\", \"youthclubs3\", etc."
},
"youthyears2": {
"type": "number",
"label": "Youth club 2 years",
"description": "The years that the player was at their second youth club."
},
"youthclubs2": {
"type": "string",
"label": "Youth club 2",
"description": "The second club that the player was a member of as a youth."
},
"youthyears3": {
"type": "number",
"label": "Youth club 3 years",
"description": "The years that the player was at their third youth club."
},
"youthclubs3": {
"type": "string",
"label": "Youth club 3",
"description": "The third club that the player was a member of as a youth."
},
"youthyears4": {
"type": "number",
"label": "Youth club 4 years",
"description": "The years that the player was at their fourth youth club."
},
"youthclubs4": {
"type": "string",
"label": "Youth club 4",
"description": "The fourth club that the player was a member of as a youth."
},
"youthyears5": {
"type": "number",
"label": "Youth club 5 years",
"description": "The years that the player was at their fifth youth club."
},
"youthclubs5": {
"type": "string",
"label": "Youth club 5",
"description": "The fifth club that the player was a member of as a youth."
},
"years1": {
"type": "number",
"label": "Club 1 years",
"description": "The years that the player was at their first club. Up to 39 years can be added using the parameter names \"years2\", \"years3\", etc."
},
"clubs1": {
"type": "string",
"label": "Club 1",
"description": "The first (senior) club that the player has been contracted at. Up to 39 clubs can be added using the parameter names \"clubs2\", \"clubs3\", etc."
},
"caps1": {
"type": "number",
"label": "Club 1 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the first club. Playoff matches should not be included. Up to 39 caps can be added using the parameter names \"caps2\", \"caps3\", etc."
},
"goals1": {
"type": "number",
"label": "Club 1 goals",
"description": "The number of goals that the player has been awarded in league competition for the first club. Playoff matches should not be included. Up to 39 can be added using the parameter names \"goals2\", \"goals3\", etc."
},
"years2": {
"type": "number",
"label": "Club 2 years",
"description": "The years that the player was at their second club."
},
"clubs2": {
"type": "string",
"label": "Club 2",
"description": "The second club that the player has been contracted at."
},
"caps2": {
"type": "number",
"label": "Club 2 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the second club."
},
"goals2": {
"type": "number",
"label": "Club 2 goals",
"description": "The number of goals that the player has been awarded in league competition for the second club."
},
"years3": {
"type": "number",
"label": "Club 3 years",
"description": "The years that the player was at their third club."
},
"clubs3": {
"type": "string",
"label": "Club 3",
"description": "The third club that the player has been contracted at."
},
"caps3": {
"type": "number",
"label": "Club 3 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the third club."
},
"goals3": {
"type": "number",
"label": "Club 3 goals",
"description": "The number of goals that the player has been awarded in league competition for the third club."
},
"years4": {
"type": "number",
"label": "Club 4 years",
"description": "The years that the player was at their fourth club."
},
"clubs4": {
"type": "string",
"label": "Club 4",
"description": "The fourth club that the player has been contracted at."
},
"caps4": {
"type": "number",
"label": "Club 4 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the fourth club."
},
"goals4": {
"type": "number",
"label": "Club 4 goals",
"description": "The number of goals that the player has been awarded in league competition for the fourth club."
},
"years5": {
"type": "number",
"label": "Club 5 years",
"description": "The years that the player was at their fifth club."
},
"clubs5": {
"type": "string",
"label": "Club 5",
"description": "The fifth club that the player has been contracted at."
},
"caps5": {
"type": "number",
"label": "Club 5 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the fifth club."
},
"goals5": {
"type": "number",
"label": "Club 5 goals",
"description": "The number of goals that the player has been awarded in league competition for the fifth club."
},
"years6": {
"type": "number",
"label": "Club 6 years",
"description": "The years that the player was at their sixth club."
},
"clubs6": {
"type": "string",
"label": "Club 6",
"description": "The sixth club that the player has been contracted at."
},
"caps6": {
"type": "number",
"label": "Club 6 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the sixth club."
},
"goals6": {
"type": "number",
"label": "Club 6 goals",
"description": "The number of goals that the player has been awarded in league competition for the sixth club."
},
"years7": {
"type": "number",
"label": "Club 7 years",
"description": "The years that the player was at their seventh club."
},
"clubs7": {
"type": "string",
"label": "Club 7",
"description": "The seventh club that the player has been contracted at."
},
"caps7": {
"type": "number",
"label": "Club 7 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the seventh club."
},
"goals7": {
"type": "number",
"label": "Club 7 goals",
"description": "The number of goals that the player has been awarded in league competition for the seventh club."
},
"years8": {
"type": "number",
"label": "Club 8 years",
"description": "The years that the player was at their eighth club."
},
"clubs8": {
"type": "string",
"label": "Club 8",
"description": "The eighth club that the player has been contracted at."
},
"caps8": {
"type": "number",
"label": "Club 8 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the eighth club."
},
"goals8": {
"type": "number",
"label": "Club 8 goals",
"description": "The number of goals that the player has been awarded in league competition for the eighth club."
},
"years9": {
"type": "number",
"label": "Club 9 years",
"description": "The years that the player was at their ninth club."
},
"clubs9": {
"type": "string",
"label": "Club 9",
"description": "The ninth club that the player has been contracted at."
},
"caps9": {
"type": "number",
"label": "Club 9 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the ninth club."
},
"goals9": {
"type": "number",
"label": "Club 9 goals",
"description": "The number of goals that the player has been awarded in league competition for the ninth club."
},
"years10": {
"type": "number",
"label": "Club 10 years",
"description": "The years that the player was at their tenth club."
},
"clubs10": {
"type": "string",
"label": "Club 10",
"description": "The tenth club that the player has been contracted at."
},
"caps10": {
"type": "number",
"label": "Club 10 appearances",
"description": "The number of appearances that the player has been awarded in league competition for the tenth club."
},
"goals10": {
"type": "number",
"label": "Club 10 goals",
"description": "The number of goals that the player has been awarded in league competition for the tenth club."
},
"totalcaps": {
"type": "number",
"label": "Club appearances total",
"description": "The total number of appearances the player has been awarded in league competition for all non-youth clubs."
},
"totalgoals": {
"label": "Club goals total",
"description": "The total number of goals the player has scored in league competition for all non-youth clubs.",
"type": "number"
},
"nationalyears1": {
"type": "number",
"label": "National team 1 years",
"description": "The years that the player has played for the first national team. Up to 9 years can be added using the parameter names \"nationalyears2\", \"nationalyears3\", etc."
},
"nationalteam1": {
"type": "string",
"label": "National team 1",
"description": "The first national team that the player has played for (including non-senior teams such as U21). Up to 9 teams can be added using the parameter names \"nationalteam2\", \"nationalteam3\", etc."
},
"nationalcaps1": {
"type": "number",
"label": "National team 1 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the first national team. Up to 9 numbers can be added using the parameter names \"nationalcaps2\", \"nationalcaps3\", etc."
},
"nationalgoals1": {
"type": "number",
"label": "National team 1 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the first national team. Up to 9 numbers can be added using the parameter names \"nationalgoals2\", \"nationalgoals3\", etc."
},
"nationalyears2": {
"type": "number",
"label": "National team 2 years",
"description": "The years that the player has played for the second national team."
},
"nationalteam2": {
"type": "string",
"label": "National team 2",
"description": "The second national team that the player has played for."
},
"nationalcaps2": {
"type": "number",
"label": "National team 2 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the second national team."
},
"nationalgoals2": {
"type": "number",
"label": "National team 2 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the second national team."
},
"nationalyears3": {
"type": "number",
"label": "National team 3 years",
"description": "The years that the player has played for the third national team."
},
"nationalteam3": {
"type": "string",
"label": "National team 3",
"description": "The third national team that the player has played for."
},
"nationalcaps3": {
"type": "number",
"label": "National team 3 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the third national team."
},
"nationalgoals3": {
"type": "number",
"label": "National team 3 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the third national team."
},
"nationalyears4": {
"type": "number",
"label": "National team 4 years",
"description": "The years that the player has played for the fourth national team."
},
"nationalteam4": {
"type": "string",
"label": "National team 4",
"description": "The fourth national team that the player has played for."
},
"nationalcaps4": {
"type": "number",
"label": "National team 4 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the fourth national team."
},
"nationalgoals4": {
"type": "number",
"label": "National team 4 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the fourth national team."
},
"nationalyears5": {
"type": "number",
"label": "National team 5 years",
"description": "The years that the player has played for the fifth national team."
},
"nationalteam5": {
"type": "string",
"label": "National team 5",
"description": "The fifth national team that the player has played for."
},
"nationalcaps5": {
"type": "number",
"label": "National team 5 appearances",
"description": "The number of appearances that the player has been awarded in all competitions and friendlies for the fifth national team."
},
"nationalgoals5": {
"type": "number",
"label": "National team 5 goals",
"description": "The number of goals that the player has been awarded in all competitions and friendlies for the fifth national team."
},
"manageryears1": {
"type": "number",
"label": "Manager club 1 years",
"description": "The years that the person has served with the first club in the capacity of team manager."
},
"managerclubs1": {
"type": "string",
"label": "Manager club 1",
"description": "The first club that the person has served within the capacity of team manager. Please do not list positions other than team manager (such as assistant or coach positions, or director of football roles where this role is not considered managerial) unless that position is a significant part of the person's career; this will apply primarily to those with significant or perhaps primary experience in management. Clubs listed can be both local and national and should be restricted to those ordinarily considered notable in themselves."
},
"manageryears2": {
"type": "number",
"label": "Manager club 2 years",
"description": "The years that the person has served with the second club in the capacity of team manager. Up to 30 can be added using the parameter names \"manageryears3\", \"manageryears4\", etc."
},
"managerclubs2": {
"type": "string",
"label": "Manager club 2",
"description": "The second club that the person has served within the capacity of team manager. Up to 30 can be added using the parameter names \"managerclubs3\", \"managerclubs4\", etc."
},
"manageryears3": {
"type": "number",
"label": "Manager club 3 years",
"description": "The years that the person has served with the third club in the capacity of team manager."
},
"managerclubs3": {
"type": "string",
"label": "Manager club 3",
"description": "The third club that the person has served within the capacity of team manager."
},
"manageryears4": {
"type": "number",
"label": "Manager club 4 years",
"description": "The years that the person has served with the fourth club in the capacity of team manager."
},
"managerclubs4": {
"type": "string",
"label": "Manager club 4",
"description": "The fourth club that the person has served within the capacity of team manager."
},
"manageryears5": {
"type": "number",
"label": "Manager club 5 years",
"description": "The years that the person has served with the fifth club in the capacity of team manager."
},
"managerclubs5": {
"type": "string",
"label": "Manager club 5",
"description": "The fifth club that the person has served within the capacity of team manager."
},
"manageryears6": {
"type": "number",
"label": "Manager club 6 years",
"description": "The years that the person has served with the sixth club in the capacity of team manager."
},
"managerclubs6": {
"type": "string",
"label": "Manager club 6",
"description": "The sixth club that the person has served within the capacity of team manager."
},
"manageryears7": {
"type": "number",
"label": "Manager club 7 years",
"description": "The years that the person has served with the seventh club in the capacity of team manager."
},
"managerclubs7": {
"type": "string",
"label": "Manager club 7",
"description": "The seventh club that the person has served within the capacity of team manager."
},
"manageryears8": {
"type": "number",
"label": "Manager club 8 years",
"description": "The years that the person has served with the eighth club in the capacity of team manager."
},
"managerclubs8": {
"type": "string",
"label": "Manager club 8",
"description": "The eighth club that the person has served within the capacity of team manager."
},
"manageryears9": {
"type": "number",
"label": "Manager club 9 years",
"description": "The years that the person has served with the ninth club in the capacity of team manager."
},
"managerclubs9": {
"type": "string",
"label": "Manager club 9",
"description": "The ninth club that the person has served within the capacity of team manager."
},
"manageryears10": {
"type": "number",
"label": "Manager club 10 years",
"description": "The years that the person has served with the tenth club in the capacity of team manager."
},
"managerclubs10": {
"type": "string",
"label": "Manager club 10",
"description": "The tenth club that the person has served within the capacity of team manager."
},
"medaltemplates": {
"type": "string",
"label": "Medal templates",
"description": "Honors can be added here using {{Medal}} templates."
},
"club-update": {
"type": "string",
"label": "Club update timestamp",
"description": "A timestamp at which the player's infobox club statistics are unambiguously correct. The bare date of the last match played should not be used because this is not unambiguous. Dates should use the same format as the rest of the article; use five tildes (<nowiki>~~~~~</nowiki>) to generate the current date/time in dmy format, or {{subst:mdytime}} for mdy format. The parameter is not needed if the player has retired.",
"aliases": [ "pcupdate" ]
},
"nationalteam-update": {
"label": "National team update timestamp",
"description": "A timestamp at which the player's infobox national team statistics are unambiguously correct. The bare date of the last match played should not be used because this is not unambiguous. Dates should use the same format as the rest of the article; use five tildes (<nowiki>~~~~~</nowiki>) to generate the current date/time in dmy format, or {{subst:mdytime}} for mdy format. The parameter is not needed if the player has retired.",
"type": "string",
"aliases": [ "ntupdate" ]
}
},
"format": "block"
}
</templatedata>
{{Collapse bottom}}
== Tracking categories ==
{{Infobox tracking cats}}
* {{clc|Pages using infobox football biography with height issues}}
* {{clc|Pages using infobox football biography with invalid clubnumber}}
* {{clc|Pages using infobox football biography with a module}}
* {{clc|Pages using infobox football biography with invalid position}}
* {{clc|Pages using infobox football biography with irregular position}}
* {{clc|Pages using infobox football biography with tags in position parameter}}
* {{clc|No local image but image on Wikidata}} – Used by [[Template:Wikidata image]] to track articles where an infobox has no image but [[Wikidata]] has an image name. To exclude articles from this category, add an image or {{para|nocat_wdimage|yes}} to the infobox.
== Supporting templates ==
The following templates are used directly from this template:
{{Columns-list|colwidth=20em|
* {{ml|Infobox3cols|}}
* {{tl|Abbr}}
* {{tl|Br separated entries}}
* {{tl|Infobox medal templates}}
* {{tl|Infobox person/height}}
* {{tl|Longitem}}
* {{tl|Main other}}
* {{tl|PAGENAMEBASE}}
* {{tl|Wikidata image}}
* {{tl|Yesno}}
}}
<includeonly>{{Basepage subpage|
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Association football infobox templates|Football biography]]
[[Category:Sportsperson infobox templates|Football biography]]
[[Category:Biographical templates usable as a module|Football biography]]
[[Category:Infobox templates with module parameter|Football biography]]
[[Category:Infobox templates with updated parameter]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
ljt4pt7100pfw7jver9jivxcn26i366
Template:Hidden begin/styles.css
10
8657
73970
2024-03-21T15:54:44Z
Jdlrobson
5566
[[phab:T360582]]
73970
sanitized-css
text/css
/* {{pp-template}} */
.hidden-begin {
box-sizing: border-box;
width: 100%;
padding: 5px;
border: none;
font-size: 95%;
}
.hidden-title {
font-weight: bold;
line-height: 1.6;
text-align: left;
}
.hidden-content {
text-align: left;
}
/* [[phab:T360582]] */
@media all and ( max-width: 500px ) {
.hidden-begin {
width: auto !important;
clear: none !important;
float: none !important;
}
}
b1nhedn00o082mlrogut2z7909uozkh
73971
73970
2026-07-11T18:59:31Z
Robertsky
10424
1 versaun husi [[:en:Template:Hidden_begin/styles.css]]
73970
sanitized-css
text/css
/* {{pp-template}} */
.hidden-begin {
box-sizing: border-box;
width: 100%;
padding: 5px;
border: none;
font-size: 95%;
}
.hidden-title {
font-weight: bold;
line-height: 1.6;
text-align: left;
}
.hidden-content {
text-align: left;
}
/* [[phab:T360582]] */
@media all and ( max-width: 500px ) {
.hidden-begin {
width: auto !important;
clear: none !important;
float: none !important;
}
}
b1nhedn00o082mlrogut2z7909uozkh
Template:Birth date text
10
8658
73972
2025-03-13T14:59:38Z
Gonnym
11662
update unknown checking
73972
wikitext
text/x-wiki
{{#iferror:<span style="display:none">{{#time: Y|{{{1|0009-11}}}}}</span>|Not recognized as a date. Years must have 4 digits (use leading zeros for years < 1000).|{{#iferror:{{Date-mf|{{#ifeq:{{{1| }}}| |{{{ISO8601|{{{dt|}}}}}}|{{{1|}}}}}|{{{2|{{{display|}}}}}}|timezone={{{timezone|{{{tz|}}}}}}
|up-date={{#ifeq:"{{lc:{{{1|0009-11}}}}}"|"{{padleft:{{#expr:{{{1|0009-11}}}}}|4|0}}"|<!--Here if Test1 satisfied: see talk -->{{#time:Y|{{#expr:{{{1|0009-11}}}+3000}}}}//{{#if:{{{BCE|{{{BC|}}}}}}|-1 year, |+1 year, }}|{{#iferror:{{#ifexpr:((abs({{{1|0009-11}}}))< 1900) and ({{#time:Y|{{{1|0009-11}}}}} >1900) | {{#ifexpr:({{#time:Y|{{{1|0009-11}}}}}) <2000|{{#expr:{{#time:Y|{{{1|0009-11}}}}}+1100}}|{{#expr:{{#time:Y|{{{1|0009-11}}}}}+1000}} }} |{{#expr:{{#time:Y|{{{1|0009-11}}}}}+3000}}}}|{{#expr:{{#time:Y|{{{1|0009-11}}}}}+3000}}}}<!--done with year -->{{#ifeq:{{#time:d H:i:s|{{{1|0009-11}}} }}|{{#iferror:{{#ifexpr:{{{1|0009-11}}}|{{#time:d}}}}|01}} 00:00:00|{{#time:-m|{{{1|0009-11}}}}}/-m/+1 month, |{{#ifeq:{{#time:H:i:s|{{{1|0009-11}}}}}|00:00:00|{{#time:-m-d|{{{1|0009-11}}}}}/-m-d/+1 day, |{{#ifeq:{{#time:i:s|{{{1|0009-11}}}}}|00:00|{{#time:-m-d H:00|{{{1|0009-11}}}}}/-m-dTH/+1 hour, |{{#ifeq:{{#time:s|{{{1|0009-11}}}}}|00|{{#time:-m-d H:i|{{{1|0009-11}}}}}/-m-dTH:i/+1 minute, |{{#time:-m-d H:i:s|{{{1|0009-11}}}}}/-m-dTH:i:s/+1 second, }}}}}}}}}}
|BCE={{{BCE|{{{BC|}}}}}}
|ISO8601={{{ISO8601|{{{dt|}}}}}}
|class-extra={{{class-extra|}}} bday<!-- random extra classes to add eg:bday updated -->
|class=dtstart
|test={{{test|}}}
}}|Did not recognize date. Try slightly modifying the date in the first parameter.}}
}}<!-- Tracking categories
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using Birth date text with unknown parameters|_VALUE_]]}}|preview=Page using [[Template:Birth date text]] with unknown parameter "_VALUE_"|showblankpositional=1| 1 | 2 | BC | BCE | class-extra | display | dt | ISO8601 | test | timezone | tz }}<!--
-->{{#ifeq: {{NAMESPACENUMBER}} | 0
| {{#if: {{#invoke:wd|label|raw}}
| {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}}
| {{#if: {{#invoke:wd|properties|raw|P569}}
|
| [[Category:Date of birth not in Wikidata]]
}}
}}
| [[Category:Articles without Wikidata item]]
}}
}}<noinclude>
{{Documentation|Template:Start date text/doc}}
</noinclude>
a3l6s0xst4gswfoxzktpueluj1eeg3p
73973
73972
2026-07-11T18:59:31Z
Robertsky
10424
1 versaun husi [[:en:Template:Birth_date_text]]
73972
wikitext
text/x-wiki
{{#iferror:<span style="display:none">{{#time: Y|{{{1|0009-11}}}}}</span>|Not recognized as a date. Years must have 4 digits (use leading zeros for years < 1000).|{{#iferror:{{Date-mf|{{#ifeq:{{{1| }}}| |{{{ISO8601|{{{dt|}}}}}}|{{{1|}}}}}|{{{2|{{{display|}}}}}}|timezone={{{timezone|{{{tz|}}}}}}
|up-date={{#ifeq:"{{lc:{{{1|0009-11}}}}}"|"{{padleft:{{#expr:{{{1|0009-11}}}}}|4|0}}"|<!--Here if Test1 satisfied: see talk -->{{#time:Y|{{#expr:{{{1|0009-11}}}+3000}}}}//{{#if:{{{BCE|{{{BC|}}}}}}|-1 year, |+1 year, }}|{{#iferror:{{#ifexpr:((abs({{{1|0009-11}}}))< 1900) and ({{#time:Y|{{{1|0009-11}}}}} >1900) | {{#ifexpr:({{#time:Y|{{{1|0009-11}}}}}) <2000|{{#expr:{{#time:Y|{{{1|0009-11}}}}}+1100}}|{{#expr:{{#time:Y|{{{1|0009-11}}}}}+1000}} }} |{{#expr:{{#time:Y|{{{1|0009-11}}}}}+3000}}}}|{{#expr:{{#time:Y|{{{1|0009-11}}}}}+3000}}}}<!--done with year -->{{#ifeq:{{#time:d H:i:s|{{{1|0009-11}}} }}|{{#iferror:{{#ifexpr:{{{1|0009-11}}}|{{#time:d}}}}|01}} 00:00:00|{{#time:-m|{{{1|0009-11}}}}}/-m/+1 month, |{{#ifeq:{{#time:H:i:s|{{{1|0009-11}}}}}|00:00:00|{{#time:-m-d|{{{1|0009-11}}}}}/-m-d/+1 day, |{{#ifeq:{{#time:i:s|{{{1|0009-11}}}}}|00:00|{{#time:-m-d H:00|{{{1|0009-11}}}}}/-m-dTH/+1 hour, |{{#ifeq:{{#time:s|{{{1|0009-11}}}}}|00|{{#time:-m-d H:i|{{{1|0009-11}}}}}/-m-dTH:i/+1 minute, |{{#time:-m-d H:i:s|{{{1|0009-11}}}}}/-m-dTH:i:s/+1 second, }}}}}}}}}}
|BCE={{{BCE|{{{BC|}}}}}}
|ISO8601={{{ISO8601|{{{dt|}}}}}}
|class-extra={{{class-extra|}}} bday<!-- random extra classes to add eg:bday updated -->
|class=dtstart
|test={{{test|}}}
}}|Did not recognize date. Try slightly modifying the date in the first parameter.}}
}}<!-- Tracking categories
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using Birth date text with unknown parameters|_VALUE_]]}}|preview=Page using [[Template:Birth date text]] with unknown parameter "_VALUE_"|showblankpositional=1| 1 | 2 | BC | BCE | class-extra | display | dt | ISO8601 | test | timezone | tz }}<!--
-->{{#ifeq: {{NAMESPACENUMBER}} | 0
| {{#if: {{#invoke:wd|label|raw}}
| {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}}
| {{#if: {{#invoke:wd|properties|raw|P569}}
|
| [[Category:Date of birth not in Wikidata]]
}}
}}
| [[Category:Articles without Wikidata item]]
}}
}}<noinclude>
{{Documentation|Template:Start date text/doc}}
</noinclude>
a3l6s0xst4gswfoxzktpueluj1eeg3p
Template:Birth date and age text
10
8659
73974
2025-09-02T21:58:24Z
Fayenatic london
11766
update category link
73974
wikitext
text/x-wiki
<includeonly>{{Birth date text|dt={{{dt|}}}|{{{gregorian|{{{1|}}}}}}|{{{2|{{{1|}}}}}}}} (age {{Age|{{#ifeq:"{{lc:{{{1|0009-11}}}}}"|"{{padleft:{{#expr:{{{1|0009-11}}}}}|4|0}}"|<!--Here if it is a 4 digit year only-Test1 satisfied: see talk -->{{{1|0009-11}}}|{{#expr: {{#iferror:{{#ifexpr:((abs({{{1|0009-11}}}))< 1900) and ({{#time:Y|{{{1|0009-11}}}}} >1900) | {{#ifexpr:({{#time:Y|{{{1|0009-11}}}}}) <2000|{{#expr:{{#time:Y|{{{1|0009-11}}}}}-1900}}|{{#expr:{{#time:Y|{{{1|0009-11}}}}}-2000}} }} |{{#time:Y|{{{1|0009-11}}}}} }}|{{#time:Y|{{{1|0009-11}}}}} }}{{#switch:{{{bce|}}}|b|bd|d|db=*(-1) +1}}}} }}|{{#time:m|{{{1|}}}}}|{{#time:d|{{{1|}}}}} }})<!-- Tracking categories
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using Birth date and age text with unknown parameters|_VALUE_]]}}|preview=Page using [[Template:Birth-date and age]] with unknown parameter "_VALUE_"|showblankpositional=1| 1 | 2 | bce | dt | gregorian }}</includeonly><noinclude>
{{documentation}}
</noinclude>
8uvmblxgjahrrsmxlhs4n1toxxt2qcd
73975
73974
2026-07-11T18:59:31Z
Robertsky
10424
1 versaun husi [[:en:Template:Birth_date_and_age_text]]
73974
wikitext
text/x-wiki
<includeonly>{{Birth date text|dt={{{dt|}}}|{{{gregorian|{{{1|}}}}}}|{{{2|{{{1|}}}}}}}} (age {{Age|{{#ifeq:"{{lc:{{{1|0009-11}}}}}"|"{{padleft:{{#expr:{{{1|0009-11}}}}}|4|0}}"|<!--Here if it is a 4 digit year only-Test1 satisfied: see talk -->{{{1|0009-11}}}|{{#expr: {{#iferror:{{#ifexpr:((abs({{{1|0009-11}}}))< 1900) and ({{#time:Y|{{{1|0009-11}}}}} >1900) | {{#ifexpr:({{#time:Y|{{{1|0009-11}}}}}) <2000|{{#expr:{{#time:Y|{{{1|0009-11}}}}}-1900}}|{{#expr:{{#time:Y|{{{1|0009-11}}}}}-2000}} }} |{{#time:Y|{{{1|0009-11}}}}} }}|{{#time:Y|{{{1|0009-11}}}}} }}{{#switch:{{{bce|}}}|b|bd|d|db=*(-1) +1}}}} }}|{{#time:m|{{{1|}}}}}|{{#time:d|{{{1|}}}}} }})<!-- Tracking categories
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using Birth date and age text with unknown parameters|_VALUE_]]}}|preview=Page using [[Template:Birth-date and age]] with unknown parameter "_VALUE_"|showblankpositional=1| 1 | 2 | bce | dt | gregorian }}</includeonly><noinclude>
{{documentation}}
</noinclude>
8uvmblxgjahrrsmxlhs4n1toxxt2qcd
Módulo:Footballer positions
828
8660
73976
2025-12-26T21:46:02Z
S.A. Julio
11761
add alias
73976
Scribunto
text/plain
local p = {}
local mHList = require('Module:List')
-- Position definitions: {names/abbrevs}, link, display
-- Use %D for dash placeholder, %C for centre/center placeholder
local positionDefs = {
-- Goalkeepers
{{"goalkeeper", "goalie", "keeper", "gk"}, "Goalkeeper (association football)", "goalkeeper"},
-- Defenders
{{"defender", "defence", "defense", "back", "df"}, "Defender (association football)", "defender"},
{{"centreback", "centralback", "cb"}, "Defender (association football)#Centre-back", "%Ccentre%Dback"},
{{"centredefender"}, "Defender (association football)#Centre-back", "%Ccentre-back"},
{{"centraldefender", "centraldefence", "centraldefense", "cd"}, "Defender (association football)#Centre-back", "central defender"},
{{"centrehalf"}, "Defender (association football)#Centre-back", "%Ccentre%Dhalf"},
{{"fullback", "outsideback", "fb"}, "Defender (association football)#Full-back", "full%Dback"},
{{"wingback", "wb"}, "Defender (association football)#Wing-back", "wing%Dback"},
{{"sweeper", "sw"}, "Defender (association football)#Sweeper", "sweeper"},
{{"libero"}, "Defender (association football)#Sweeper", "libero"},
{{"rightback", "rightdefender", "rb"}, "Defender (association football)#Full-back", "right%Dback"},
{{"rightfullback"}, "Defender (association football)#Full-back", "right full%Dback"},
{{"leftback", "leftdefender", "lb"}, "Defender (association football)#Full-back", "left%Dback"},
{{"leftfullback"}, "Defender (association football)#Full-back", "left full%Dback"},
{{"rightwingback", "rwb"}, "Defender (association football)#Wing-back", "right wing%Dback"},
{{"leftwingback", "lwb"}, "Defender (association football)#Wing-back", "left wing%Dback"},
-- Midfielders
{{"midfielder", "midfield", "mf"}, "Midfielder", "midfielder"},
{{"halfback", "hb"}, "Midfielder", "half%Dback"},
{{"centralmidfielder", "centralmidfield", "cm"}, "Midfielder#Central midfielder", "central midfielder"},
{{"centremidfielder", "centremidfield", "centremid", "centermid"}, "Midfielder#Central midfielder", "%Ccentre midfielder"},
{{"defensivemidfielder", "defendingmidfielder", "defensivemidfield", "dm"}, "Midfielder#Defensive midfielder", "defensive midfielder"},
{{"attackingmidfielder", "attackingmidfield", "offensivemidfielder", "offensivemidfield", "am"}, "Midfielder#Attacking midfielder", "attacking midfielder"},
{{"widemidfielder", "sidemidfielder", "wm"}, "Midfielder#Wide midfielder", "wide midfielder"},
{{"winger", "wi"}, "Midfielder#Winger", "winger"},
{{"wing"}, "Midfielder#Winger", "wing"},
{{"winghalf", "winghalfback", "wh"}, "Midfielder#Wing-half", "wing%Dhalf"},
{{"centraldefensivemidfielder", "cdm"}, "Midfielder#Defensive midfielder", "central defensive midfielder"},
{{"centredefensivemidfielder"}, "Midfielder#Defensive midfielder", "%Ccentre defensive midfielder"},
{{"leftdefensivemidfielder", "ldm"}, "Midfielder#Defensive midfielder", "left defensive midfielder"},
{{"rightdefensivemidfielder", "rdm"}, "Midfielder#Defensive midfielder", "right defensive midfielder"},
{{"centralattackingmidfielder", "cam"}, "Midfielder#Attacking midfielder", "central attacking midfielder"},
{{"centreattackingmidfielder"}, "Midfielder#Attacking midfielder", "%Ccentre attacking midfielder"},
{{"leftattackingmidfielder", "lam"}, "Midfielder#Attacking midfielder", "left attacking midfielder"},
{{"rightattackingmidfielder", "ram"}, "Midfielder#Attacking midfielder", "right attacking midfielder"},
{{"holdingmidfielder", "holdingmidfield", "hm"}, "Midfielder#Defensive midfielder", "holding midfielder"},
{{"rightmidfielder", "rightmidfield", "rm"}, "Midfielder#Wide midfielder", "right midfielder"},
{{"leftmidfielder", "leftmidfield", "lm"}, "Midfielder#Wide midfielder", "left midfielder"},
{{"rightwinger", "rw"}, "Midfielder#Winger", "right winger"},
{{"rightwing"}, "Midfielder#Winger", "right wing"},
{{"leftwinger", "lw"}, "Midfielder#Winger", "left winger"},
{{"leftwing"}, "Midfielder#Winger", "left wing"},
{{"oldcentrehalf", "centrehalfback", "ch"}, "Midfielder#Centre-half", "%Ccentre%Dhalf"},
{{"righthalf", "righthalfback", "rightwinghalf", "rh"}, "Midfielder#Wing-half", "right%Dhalf"},
{{"lefthalf", "lefthalfback", "leftwinghalf", "lh"}, "Midfielder#Wing-half", "left%Dhalf"},
-- Forwards
{{"forward", "attacker", "attack", "fw"}, "Forward (association football)", "forward"},
{{"centreforward", "centralforward", "cf"}, "Forward (association football)#Centre-forward", "%Ccentre%Dforward"},
{{"striker", "st"}, "Forward (association football)#Striker", "striker"},
{{"secondstriker", "secondarystriker", "secondforward", "ss"}, "Forward (association football)#Second striker", "second striker"},
{{"supportingstriker", "supportstriker"}, "Forward (association football)#Second striker", "supporting striker"},
{{"deeplyingstriker", "deeplyingforward"}, "Forward (association football)#Second striker", "deep-lying striker"},
{{"insideforward", "if"}, "Forward (association football)#Inside forward", "inside forward"},
{{"outsideforward", "of"}, "Forward (association football)#Outside forward", "outside forward"},
{{"rightforward", "rf"}, "Forward (association football)", "right forward"},
{{"leftforward", "lf"}, "Forward (association football)", "left forward"},
{{"insideright", "rightinsideforward", "ir"}, "Forward (association football)#Inside forward", "inside right"},
{{"insideleft", "leftinsideforward", "il"}, "Forward (association football)#Inside forward", "inside left"},
{{"outsideright", "rightoutsideforward", "or"}, "Forward (association football)#Outside forward", "outside right"},
{{"outsideleft", "leftoutsideforward", "ol"}, "Forward (association football)#Outside forward", "outside left"},
-- Utility player
{{"utilityplayer", "utility", "ut"}, "Utility player#Association football", "utility player"},
}
-- Build lookup table from definitions
local positionData = {}
for _, def in ipairs(positionDefs) do
local names, link, display = def[1], def[2], def[3]
local data = {link, display}
for _, name in ipairs(names) do
positionData[name] = data
end
end
-- Normalize HTML entities
local function decodeEntities(str)
str = str:gsub(" ", " ")
str = mw.text.decode(str, true)
return str
end
-- Delink wikilinks
local function delink(str)
return str:gsub("%[%[(.-)%]%]", function(match)
local pipePos = match:find("|")
if pipePos then
return match:sub(pipePos + 1)
else
return match
end
end)
end
-- Extract reference placeholders from end of string
local function extractRefs(str)
local refs = ""
-- Pattern for MediaWiki strip markers
local refPattern = "\127'\"`UNIQ%-%-ref.-QINU`\"'\127"
while true do
local s, e = str:find(refPattern .. "%s*$")
if s then
refs = str:sub(s, e):gsub("%s*$", "") .. refs
str = str:sub(1, s - 1)
else
break
end
end
return mw.text.trim(str), refs
end
-- Normalize for lookup: lowercase, remove dashes/spaces, convert center->centre
local function normalizeForLookup(str)
local s = str:lower()
s = s:gsub("[-–—−]", "")
s = s:gsub(" ", "")
s = s:gsub("center", "centre")
return s
end
-- Detect original formatting for centre/center and dash/space
local function detectFormatting(original, normalized)
local usesCenter = original:lower():find("center") ~= nil
-- Check for dash variants
local dashChar = original:match("%-") or original:match("–") or original:match("—") or original:match("−")
-- If no dash found, determine if space or no separator was used
-- Compare lengths: if original (lowercased, center->centre) is longer than normalized,
-- there must be spaces
local spaceInsteadOfDash = false
local noSeparator = false
if not dashChar then
local comparable = original:lower():gsub("center", "centre")
if #comparable > #normalized then
-- Original has extra characters (spaces)
spaceInsteadOfDash = true
elseif #comparable == #normalized and #normalized > 1 then
-- Same length means no separators were used
-- But only set noSeparator if the input looks like a full word (not an abbreviation)
-- Abbreviations are short (2-3 chars) and all letters
local isAbbreviation = original:match("^%a%a%a?$") ~= nil
if not isAbbreviation then
noSeparator = true
end
-- If it's an abbreviation, we fall through to the default dash behavior
end
end
return usesCenter, dashChar, spaceInsteadOfDash, noSeparator
end
-- Apply formatting to display text
local function applyFormatting(display, usesCenter, dashChar, spaceInsteadOfDash, noSeparator)
-- Handle %C placeholder (centre/center)
if usesCenter then
display = display:gsub("%%Ccentre", "center")
else
display = display:gsub("%%C", "")
end
-- Handle %D placeholder (dash)
if dashChar then
display = display:gsub("%%D", "-")
elseif spaceInsteadOfDash then
display = display:gsub("%%D", " ")
elseif noSeparator then
display = display:gsub("%%D", "")
else
display = display:gsub("%%D", "-")
end
return display
end
-- Process a single position
local function processPosition(pos, isFirst, trackingNeeded, linkTargetReplacements, citationNeededTags)
local backup = pos
-- Extract citation needed placeholders and references from end of position
local citationNeeded = ""
local refs = ""
local cnPlaceholderPattern = "\127CITATIONNEEDED%d+\127"
local refPattern = "\127'\"`UNIQ%-%-ref.-QINU`\"'\127"
while true do
local cnStart, cnEnd = pos:find(cnPlaceholderPattern .. "%s*$")
local refStart, refEnd = pos:find(refPattern .. "%s*$")
if cnStart and (not refStart or cnStart > refStart) then
-- Citation needed is at the very end
local placeholder = pos:sub(cnStart, cnEnd):gsub("%s*$", "")
citationNeeded = (citationNeededTags[placeholder] or "") .. citationNeeded
pos = pos:sub(1, cnStart - 1)
elseif refStart then
-- Ref is at the very end
refs = pos:sub(refStart, refEnd):gsub("%s*$", "") .. refs
pos = pos:sub(1, refStart - 1)
else
break
end
end
pos = mw.text.trim(pos)
-- Handle special centre-half wikilink
local lowerPos = pos:lower()
if lowerPos:match("^%[%[midfielder#centre%-half|cent[re][re]%-?%s?half%]%]$") then
pos = "old centre-half"
end
-- Delink
pos = delink(pos)
pos = mw.text.trim(pos)
-- Lookup
local normalized = normalizeForLookup(pos)
local usesCenter, dashChar, spaceInsteadOfDash, noSeparator = detectFormatting(pos, normalized)
local data = positionData[normalized]
local result
local usedBackup = false
if data then
local link, display = data[1], data[2]
display = applyFormatting(display, usesCenter, dashChar, spaceInsteadOfDash, noSeparator)
-- Capitalize first position, lowercase others
if isFirst then
display = display:sub(1, 1):upper() .. display:sub(2):lower()
else
display = display:lower()
end
-- Simplify wikilink if link target equals display text (case insensitive)
if link:lower() == display:lower() then
result = "[[" .. display .. "]]"
else
result = "[[" .. link .. "|" .. display .. "]]"
end
else
-- No match found - check if this came from a link target replacement
if linkTargetReplacements and linkTargetReplacements[pos] then
-- Use the original link with separator
result = linkTargetReplacements[pos]
else
-- Use backup, but restore any citation needed placeholders in it first
result = backup
for placeholder, tag in pairs(citationNeededTags) do
result = result:gsub(placeholder, tag)
end
usedBackup = true -- Set the flag
end
trackingNeeded[1] = true
end
-- Re-add references
if refs ~= "" and not usedBackup then
result = result .. refs
end
-- Re-add citation needed only if we didn't use the backup
-- (backup already contains the citation needed tag)
if citationNeeded ~= "" and not usedBackup then
result = result .. citationNeeded
end
return result
end
function p.main(frame)
local args = frame.args
local input = args[1]
-- If called from a template, get parent args
if input == nil or input == "" then
args = frame:getParent().args
input = args[1]
end
input = input or ""
-- No input = no output
if input == "" or mw.text.trim(input) == "" then
return ""
end
-- Normalize HTML entities
input = decodeEntities(input)
-- Trim
input = mw.text.trim(input)
-- Handle hlist/plainlist input
local tsPattern = "\127'\"`UNIQ%-%-templatestyles%-.-%QINU`\"'\127%s*<div class=\""
local listMatch = input:match(tsPattern .. "hlist[^\"]*\"[^>]*>(.-)</div>") or
input:match(tsPattern .. "plainlist[^\"]*\"[^>]*>(.-)</div>")
if listMatch then
local listPositions = {}
-- Check for HTML list format (<ul><li>...</li></ul>)
if listMatch:match('<ul>') then
for item in listMatch:gmatch('<li>(.-)</li>') do
item = mw.text.trim(item)
if item ~= "" then
table.insert(listPositions, item)
end
end
else
-- Wikitext list format (* item)
for item in listMatch:gmatch('%*%s*([^\n]+)') do
item = mw.text.trim(item)
if item ~= "" then
table.insert(listPositions, item)
end
end
end
-- If we found list items, replace input with comma-separated positions
if #listPositions > 0 then
input = table.concat(listPositions, ", ")
end
end
-- Break tag pattern
local brPattern = "<[bB][rR]%s*/?%s*>"
-- Handle and/or adjacent to break tags (convert to just /)
input = input:gsub("%s+[Aa][Nn][Dd]%s*" .. brPattern, "/")
input = input:gsub("%s+[Oo][Rr]%s*" .. brPattern, "/")
input = input:gsub(brPattern .. "%s*[Aa][Nn][Dd]%s+", "/")
input = input:gsub(brPattern .. "%s*[Oo][Rr]%s+", "/")
-- Replace remaining br tags with /
input = input:gsub(brPattern, "/")
-- Extract citation needed templates and replace with placeholders
-- Match sup tags with Template-Fact class (citation needed)
-- Categories may precede the sup tag, so we handle them together
local citationNeededTags = {}
local citationNeededIndex = 0
-- Process from end to start to avoid position shifting issues
-- First collect all matches, then replace
local matches = {}
local searchPos = 1
while true do
-- Find next sup tag with Template-Fact
local supStart, supEnd = input:find("<sup[^>]*Template%-Fact[^>]*>.-</sup>", searchPos)
if not supStart then break end
-- Look backwards for any immediately preceding categories
local catStart = supStart
local checkPos = supStart
while checkPos > 1 do
-- Get the prefix before current position
local prefix = input:sub(1, checkPos - 1)
-- Try to match a category at the end of prefix (with optional trailing whitespace)
local catMatchStart, catMatchEnd = prefix:find("%[%[Category:[^%]]+%]%]%s*$")
if catMatchStart then
catStart = catMatchStart
checkPos = catMatchStart
else
break
end
end
-- Assign index now (during collection) to preserve order
citationNeededIndex = citationNeededIndex + 1
table.insert(matches, {catStart, supEnd, citationNeededIndex})
searchPos = supEnd + 1
end
-- Replace matches from end to start to preserve positions
for i = #matches, 1, -1 do
local startPos, endPos, idx = matches[i][1], matches[i][2], matches[i][3]
local fullMatch = input:sub(startPos, endPos)
local placeholder = "\127CITATIONNEEDED" .. idx .. "\127"
citationNeededTags[placeholder] = fullMatch
input = input:sub(1, startPos - 1) .. placeholder .. input:sub(endPos + 1)
end
-- Check for tags
if input:match("<[^>]+>") then
-- Add tracking category
local category = frame:expandTemplate{
title = "main other",
args = {"[[Category:Pages using infobox football biography with tags in position parameter]]"}
}
-- Restore citation needed tags before returning
for placeholder, tag in pairs(citationNeededTags) do
input = input:gsub(placeholder, tag)
end
return input .. category
end
-- Replace remaining line breaks with /
input = input:gsub("\n", "/")
-- Check for separators in wikilink display text and delink if found
local hadSeparatorInDisplayText = false
local originalInputBeforeDelink = input
local separatorPattern = "[/,;+&]"
local hasWordSeparator = function(text)
return text:match("%s+[Aa][Nn][Dd]%s+") or text:match("%s+[Oo][Rr]%s+")
end
local linkTargetReplacements = {} -- Track original links that had separators in target
-- Check each wikilink for separators in display text
for wikilink in input:gmatch("%[%[.-%]%]") do
local pipePos = wikilink:find("|")
local textToCheck
if pipePos then
-- Has display text - check the part after the pipe
textToCheck = wikilink:sub(pipePos + 1, -3) -- Extract display text (excluding ]])
-- Also check if separator is in the link target (before pipe)
local linkTarget = wikilink:sub(3, pipePos - 1)
if linkTarget:match(separatorPattern) or hasWordSeparator(linkTarget) then
-- Store the original link and its display text for later restoration if needed
local displayText = textToCheck
linkTargetReplacements[displayText] = wikilink
-- Remove separators from the link target in the input
local cleanedTarget = linkTarget:gsub(separatorPattern, ""):gsub("%s+and%s+", ""):gsub("%s+or%s+", "")
input = input:gsub("%[%[" .. linkTarget:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") .. "|" .. displayText:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") .. "%]%]",
"[[" .. cleanedTarget .. "|" .. displayText .. "]]")
end
else
-- No pipe - check the link target itself (excluding [[]])
textToCheck = wikilink:sub(3, -3)
end
if textToCheck:match(separatorPattern) or hasWordSeparator(textToCheck) then
hadSeparatorInDisplayText = true
end
end
-- If separator found in display text, delink the input
if hadSeparatorInDisplayText then
input = delink(input)
end
-- Convert word separators to / before splitting, but only outside of wikilinks
-- First, temporarily replace wikilinks with placeholders
local wikilinks = {}
local placeholderIndex = 0
input = input:gsub("%[%[.-%]%]", function(wikilink)
placeholderIndex = placeholderIndex + 1
local placeholder = "\127WIKILINK" .. placeholderIndex .. "\127"
wikilinks[placeholder] = wikilink
return placeholder
end)
-- Now convert word separators
input = input:gsub("%s+[Aa][Nn][Dd]%s+", "/")
input = input:gsub("%s+[Oo][Rr]%s+", "/")
-- Restore wikilinks
for placeholder, wikilink in pairs(wikilinks) do
input = input:gsub(placeholder, wikilink)
end
-- Split by separators
local positions = {}
local refPattern = "\127'\"`UNIQ%-%-ref.-QINU`\"'\127"
-- First, split by separators
local rawParts = {}
local lastEnd = 1
for sepStart, sepEnd in input:gmatch("()%s*" .. separatorPattern .. "%s*()") do
table.insert(rawParts, input:sub(lastEnd, sepStart - 1))
lastEnd = sepEnd
end
table.insert(rawParts, input:sub(lastEnd))
-- Now process parts: if a part starts with ref(s) or citation needed, move them to previous position
local cnPlaceholderPattern = "\127CITATIONNEEDED%d+\127"
for i, part in ipairs(rawParts) do
local leadingRefs = ""
local remainder = part
-- Extract leading refs and citation needed placeholders
while true do
local refStart, refEnd = remainder:find("^%s*" .. refPattern)
local cnStart, cnEnd = remainder:find("^%s*" .. cnPlaceholderPattern)
if refStart then
leadingRefs = leadingRefs .. remainder:sub(refStart, refEnd)
remainder = remainder:sub(refEnd + 1)
elseif cnStart then
leadingRefs = leadingRefs .. remainder:sub(cnStart, cnEnd)
remainder = remainder:sub(cnEnd + 1)
else
break
end
end
-- Attach leading refs/citation needed to previous position
if leadingRefs ~= "" and #positions > 0 then
positions[#positions] = positions[#positions] .. leadingRefs
end
-- Add remainder as new position (if not empty)
remainder = mw.text.trim(remainder)
if remainder ~= "" then
table.insert(positions, remainder)
end
end
-- If no positions found, treat whole input as one position
if #positions == 0 then
positions = {mw.text.trim(input)}
end
-- Filter out management/executive positions
local excludeWords = {'retired', 'unknown', '?', 'manager', 'coach', 'trainer', 'director', 'president', 'executive', 'chairman', 'ceo', 'referee'}
local filteredPositions = {}
local hasInvalidPosition = false
for _, pos in ipairs(positions) do
local lowerPos = pos:lower()
local exclude = false
for _, word in ipairs(excludeWords) do
if lowerPos:find(word, 1, true) then
exclude = true
hasInvalidPosition = true
break
end
end
if not exclude then
table.insert(filteredPositions, pos)
end
end
positions = filteredPositions
-- Add tracking category for invalid positions
local invalidCategory = ""
if hasInvalidPosition then
invalidCategory = frame:expandTemplate{
title = "main other",
args = {"[[Category:Pages using infobox football biography with invalid position]]"}
}
mw.addWarning('<span style="color:#d33">Error: One or more of the position(s) listed in the infobox parameter is not an actual role for a footballer\'s playing career.</span>')
end
-- If all positions were filtered out, return only categories
if #positions == 0 then
return invalidCategory
end
-- Process each position
local trackingNeeded = {false}
local results = {}
for i, pos in ipairs(positions) do
table.insert(results, processPosition(pos, i == 1, trackingNeeded, linkTargetReplacements, citationNeededTags))
end
-- Build irregular category if needed
local irregularCategory = ""
if trackingNeeded[1] then
irregularCategory = frame:expandTemplate{
title = "main other",
args = {"[[Category:Pages using infobox football biography with irregular position]]"}
}
mw.addWarning('<span style="color:#d33">Error: One or more of the position(s) listed in the infobox parameter is not a typical position in football.</span>')
end
-- Special handling: if we delinked due to separator in display text,
-- and ANY position didn't match, return original input unchanged
if hadSeparatorInDisplayText and trackingNeeded[1] then
return originalInputBeforeDelink .. invalidCategory .. irregularCategory
end
-- Build output
local output
if #results == 1 then
output = results[1]
else
-- Use Module:List hlist
output = mHList.makeList('horizontal', results)
end
return output .. invalidCategory .. irregularCategory
end
return p
5nz275xnt9nbbq75omsphxpfnhlj9ph
73977
73976
2026-07-11T18:59:32Z
Robertsky
10424
1 versaun husi [[:en:Module:Footballer_positions]]
73976
Scribunto
text/plain
local p = {}
local mHList = require('Module:List')
-- Position definitions: {names/abbrevs}, link, display
-- Use %D for dash placeholder, %C for centre/center placeholder
local positionDefs = {
-- Goalkeepers
{{"goalkeeper", "goalie", "keeper", "gk"}, "Goalkeeper (association football)", "goalkeeper"},
-- Defenders
{{"defender", "defence", "defense", "back", "df"}, "Defender (association football)", "defender"},
{{"centreback", "centralback", "cb"}, "Defender (association football)#Centre-back", "%Ccentre%Dback"},
{{"centredefender"}, "Defender (association football)#Centre-back", "%Ccentre-back"},
{{"centraldefender", "centraldefence", "centraldefense", "cd"}, "Defender (association football)#Centre-back", "central defender"},
{{"centrehalf"}, "Defender (association football)#Centre-back", "%Ccentre%Dhalf"},
{{"fullback", "outsideback", "fb"}, "Defender (association football)#Full-back", "full%Dback"},
{{"wingback", "wb"}, "Defender (association football)#Wing-back", "wing%Dback"},
{{"sweeper", "sw"}, "Defender (association football)#Sweeper", "sweeper"},
{{"libero"}, "Defender (association football)#Sweeper", "libero"},
{{"rightback", "rightdefender", "rb"}, "Defender (association football)#Full-back", "right%Dback"},
{{"rightfullback"}, "Defender (association football)#Full-back", "right full%Dback"},
{{"leftback", "leftdefender", "lb"}, "Defender (association football)#Full-back", "left%Dback"},
{{"leftfullback"}, "Defender (association football)#Full-back", "left full%Dback"},
{{"rightwingback", "rwb"}, "Defender (association football)#Wing-back", "right wing%Dback"},
{{"leftwingback", "lwb"}, "Defender (association football)#Wing-back", "left wing%Dback"},
-- Midfielders
{{"midfielder", "midfield", "mf"}, "Midfielder", "midfielder"},
{{"halfback", "hb"}, "Midfielder", "half%Dback"},
{{"centralmidfielder", "centralmidfield", "cm"}, "Midfielder#Central midfielder", "central midfielder"},
{{"centremidfielder", "centremidfield", "centremid", "centermid"}, "Midfielder#Central midfielder", "%Ccentre midfielder"},
{{"defensivemidfielder", "defendingmidfielder", "defensivemidfield", "dm"}, "Midfielder#Defensive midfielder", "defensive midfielder"},
{{"attackingmidfielder", "attackingmidfield", "offensivemidfielder", "offensivemidfield", "am"}, "Midfielder#Attacking midfielder", "attacking midfielder"},
{{"widemidfielder", "sidemidfielder", "wm"}, "Midfielder#Wide midfielder", "wide midfielder"},
{{"winger", "wi"}, "Midfielder#Winger", "winger"},
{{"wing"}, "Midfielder#Winger", "wing"},
{{"winghalf", "winghalfback", "wh"}, "Midfielder#Wing-half", "wing%Dhalf"},
{{"centraldefensivemidfielder", "cdm"}, "Midfielder#Defensive midfielder", "central defensive midfielder"},
{{"centredefensivemidfielder"}, "Midfielder#Defensive midfielder", "%Ccentre defensive midfielder"},
{{"leftdefensivemidfielder", "ldm"}, "Midfielder#Defensive midfielder", "left defensive midfielder"},
{{"rightdefensivemidfielder", "rdm"}, "Midfielder#Defensive midfielder", "right defensive midfielder"},
{{"centralattackingmidfielder", "cam"}, "Midfielder#Attacking midfielder", "central attacking midfielder"},
{{"centreattackingmidfielder"}, "Midfielder#Attacking midfielder", "%Ccentre attacking midfielder"},
{{"leftattackingmidfielder", "lam"}, "Midfielder#Attacking midfielder", "left attacking midfielder"},
{{"rightattackingmidfielder", "ram"}, "Midfielder#Attacking midfielder", "right attacking midfielder"},
{{"holdingmidfielder", "holdingmidfield", "hm"}, "Midfielder#Defensive midfielder", "holding midfielder"},
{{"rightmidfielder", "rightmidfield", "rm"}, "Midfielder#Wide midfielder", "right midfielder"},
{{"leftmidfielder", "leftmidfield", "lm"}, "Midfielder#Wide midfielder", "left midfielder"},
{{"rightwinger", "rw"}, "Midfielder#Winger", "right winger"},
{{"rightwing"}, "Midfielder#Winger", "right wing"},
{{"leftwinger", "lw"}, "Midfielder#Winger", "left winger"},
{{"leftwing"}, "Midfielder#Winger", "left wing"},
{{"oldcentrehalf", "centrehalfback", "ch"}, "Midfielder#Centre-half", "%Ccentre%Dhalf"},
{{"righthalf", "righthalfback", "rightwinghalf", "rh"}, "Midfielder#Wing-half", "right%Dhalf"},
{{"lefthalf", "lefthalfback", "leftwinghalf", "lh"}, "Midfielder#Wing-half", "left%Dhalf"},
-- Forwards
{{"forward", "attacker", "attack", "fw"}, "Forward (association football)", "forward"},
{{"centreforward", "centralforward", "cf"}, "Forward (association football)#Centre-forward", "%Ccentre%Dforward"},
{{"striker", "st"}, "Forward (association football)#Striker", "striker"},
{{"secondstriker", "secondarystriker", "secondforward", "ss"}, "Forward (association football)#Second striker", "second striker"},
{{"supportingstriker", "supportstriker"}, "Forward (association football)#Second striker", "supporting striker"},
{{"deeplyingstriker", "deeplyingforward"}, "Forward (association football)#Second striker", "deep-lying striker"},
{{"insideforward", "if"}, "Forward (association football)#Inside forward", "inside forward"},
{{"outsideforward", "of"}, "Forward (association football)#Outside forward", "outside forward"},
{{"rightforward", "rf"}, "Forward (association football)", "right forward"},
{{"leftforward", "lf"}, "Forward (association football)", "left forward"},
{{"insideright", "rightinsideforward", "ir"}, "Forward (association football)#Inside forward", "inside right"},
{{"insideleft", "leftinsideforward", "il"}, "Forward (association football)#Inside forward", "inside left"},
{{"outsideright", "rightoutsideforward", "or"}, "Forward (association football)#Outside forward", "outside right"},
{{"outsideleft", "leftoutsideforward", "ol"}, "Forward (association football)#Outside forward", "outside left"},
-- Utility player
{{"utilityplayer", "utility", "ut"}, "Utility player#Association football", "utility player"},
}
-- Build lookup table from definitions
local positionData = {}
for _, def in ipairs(positionDefs) do
local names, link, display = def[1], def[2], def[3]
local data = {link, display}
for _, name in ipairs(names) do
positionData[name] = data
end
end
-- Normalize HTML entities
local function decodeEntities(str)
str = str:gsub(" ", " ")
str = mw.text.decode(str, true)
return str
end
-- Delink wikilinks
local function delink(str)
return str:gsub("%[%[(.-)%]%]", function(match)
local pipePos = match:find("|")
if pipePos then
return match:sub(pipePos + 1)
else
return match
end
end)
end
-- Extract reference placeholders from end of string
local function extractRefs(str)
local refs = ""
-- Pattern for MediaWiki strip markers
local refPattern = "\127'\"`UNIQ%-%-ref.-QINU`\"'\127"
while true do
local s, e = str:find(refPattern .. "%s*$")
if s then
refs = str:sub(s, e):gsub("%s*$", "") .. refs
str = str:sub(1, s - 1)
else
break
end
end
return mw.text.trim(str), refs
end
-- Normalize for lookup: lowercase, remove dashes/spaces, convert center->centre
local function normalizeForLookup(str)
local s = str:lower()
s = s:gsub("[-–—−]", "")
s = s:gsub(" ", "")
s = s:gsub("center", "centre")
return s
end
-- Detect original formatting for centre/center and dash/space
local function detectFormatting(original, normalized)
local usesCenter = original:lower():find("center") ~= nil
-- Check for dash variants
local dashChar = original:match("%-") or original:match("–") or original:match("—") or original:match("−")
-- If no dash found, determine if space or no separator was used
-- Compare lengths: if original (lowercased, center->centre) is longer than normalized,
-- there must be spaces
local spaceInsteadOfDash = false
local noSeparator = false
if not dashChar then
local comparable = original:lower():gsub("center", "centre")
if #comparable > #normalized then
-- Original has extra characters (spaces)
spaceInsteadOfDash = true
elseif #comparable == #normalized and #normalized > 1 then
-- Same length means no separators were used
-- But only set noSeparator if the input looks like a full word (not an abbreviation)
-- Abbreviations are short (2-3 chars) and all letters
local isAbbreviation = original:match("^%a%a%a?$") ~= nil
if not isAbbreviation then
noSeparator = true
end
-- If it's an abbreviation, we fall through to the default dash behavior
end
end
return usesCenter, dashChar, spaceInsteadOfDash, noSeparator
end
-- Apply formatting to display text
local function applyFormatting(display, usesCenter, dashChar, spaceInsteadOfDash, noSeparator)
-- Handle %C placeholder (centre/center)
if usesCenter then
display = display:gsub("%%Ccentre", "center")
else
display = display:gsub("%%C", "")
end
-- Handle %D placeholder (dash)
if dashChar then
display = display:gsub("%%D", "-")
elseif spaceInsteadOfDash then
display = display:gsub("%%D", " ")
elseif noSeparator then
display = display:gsub("%%D", "")
else
display = display:gsub("%%D", "-")
end
return display
end
-- Process a single position
local function processPosition(pos, isFirst, trackingNeeded, linkTargetReplacements, citationNeededTags)
local backup = pos
-- Extract citation needed placeholders and references from end of position
local citationNeeded = ""
local refs = ""
local cnPlaceholderPattern = "\127CITATIONNEEDED%d+\127"
local refPattern = "\127'\"`UNIQ%-%-ref.-QINU`\"'\127"
while true do
local cnStart, cnEnd = pos:find(cnPlaceholderPattern .. "%s*$")
local refStart, refEnd = pos:find(refPattern .. "%s*$")
if cnStart and (not refStart or cnStart > refStart) then
-- Citation needed is at the very end
local placeholder = pos:sub(cnStart, cnEnd):gsub("%s*$", "")
citationNeeded = (citationNeededTags[placeholder] or "") .. citationNeeded
pos = pos:sub(1, cnStart - 1)
elseif refStart then
-- Ref is at the very end
refs = pos:sub(refStart, refEnd):gsub("%s*$", "") .. refs
pos = pos:sub(1, refStart - 1)
else
break
end
end
pos = mw.text.trim(pos)
-- Handle special centre-half wikilink
local lowerPos = pos:lower()
if lowerPos:match("^%[%[midfielder#centre%-half|cent[re][re]%-?%s?half%]%]$") then
pos = "old centre-half"
end
-- Delink
pos = delink(pos)
pos = mw.text.trim(pos)
-- Lookup
local normalized = normalizeForLookup(pos)
local usesCenter, dashChar, spaceInsteadOfDash, noSeparator = detectFormatting(pos, normalized)
local data = positionData[normalized]
local result
local usedBackup = false
if data then
local link, display = data[1], data[2]
display = applyFormatting(display, usesCenter, dashChar, spaceInsteadOfDash, noSeparator)
-- Capitalize first position, lowercase others
if isFirst then
display = display:sub(1, 1):upper() .. display:sub(2):lower()
else
display = display:lower()
end
-- Simplify wikilink if link target equals display text (case insensitive)
if link:lower() == display:lower() then
result = "[[" .. display .. "]]"
else
result = "[[" .. link .. "|" .. display .. "]]"
end
else
-- No match found - check if this came from a link target replacement
if linkTargetReplacements and linkTargetReplacements[pos] then
-- Use the original link with separator
result = linkTargetReplacements[pos]
else
-- Use backup, but restore any citation needed placeholders in it first
result = backup
for placeholder, tag in pairs(citationNeededTags) do
result = result:gsub(placeholder, tag)
end
usedBackup = true -- Set the flag
end
trackingNeeded[1] = true
end
-- Re-add references
if refs ~= "" and not usedBackup then
result = result .. refs
end
-- Re-add citation needed only if we didn't use the backup
-- (backup already contains the citation needed tag)
if citationNeeded ~= "" and not usedBackup then
result = result .. citationNeeded
end
return result
end
function p.main(frame)
local args = frame.args
local input = args[1]
-- If called from a template, get parent args
if input == nil or input == "" then
args = frame:getParent().args
input = args[1]
end
input = input or ""
-- No input = no output
if input == "" or mw.text.trim(input) == "" then
return ""
end
-- Normalize HTML entities
input = decodeEntities(input)
-- Trim
input = mw.text.trim(input)
-- Handle hlist/plainlist input
local tsPattern = "\127'\"`UNIQ%-%-templatestyles%-.-%QINU`\"'\127%s*<div class=\""
local listMatch = input:match(tsPattern .. "hlist[^\"]*\"[^>]*>(.-)</div>") or
input:match(tsPattern .. "plainlist[^\"]*\"[^>]*>(.-)</div>")
if listMatch then
local listPositions = {}
-- Check for HTML list format (<ul><li>...</li></ul>)
if listMatch:match('<ul>') then
for item in listMatch:gmatch('<li>(.-)</li>') do
item = mw.text.trim(item)
if item ~= "" then
table.insert(listPositions, item)
end
end
else
-- Wikitext list format (* item)
for item in listMatch:gmatch('%*%s*([^\n]+)') do
item = mw.text.trim(item)
if item ~= "" then
table.insert(listPositions, item)
end
end
end
-- If we found list items, replace input with comma-separated positions
if #listPositions > 0 then
input = table.concat(listPositions, ", ")
end
end
-- Break tag pattern
local brPattern = "<[bB][rR]%s*/?%s*>"
-- Handle and/or adjacent to break tags (convert to just /)
input = input:gsub("%s+[Aa][Nn][Dd]%s*" .. brPattern, "/")
input = input:gsub("%s+[Oo][Rr]%s*" .. brPattern, "/")
input = input:gsub(brPattern .. "%s*[Aa][Nn][Dd]%s+", "/")
input = input:gsub(brPattern .. "%s*[Oo][Rr]%s+", "/")
-- Replace remaining br tags with /
input = input:gsub(brPattern, "/")
-- Extract citation needed templates and replace with placeholders
-- Match sup tags with Template-Fact class (citation needed)
-- Categories may precede the sup tag, so we handle them together
local citationNeededTags = {}
local citationNeededIndex = 0
-- Process from end to start to avoid position shifting issues
-- First collect all matches, then replace
local matches = {}
local searchPos = 1
while true do
-- Find next sup tag with Template-Fact
local supStart, supEnd = input:find("<sup[^>]*Template%-Fact[^>]*>.-</sup>", searchPos)
if not supStart then break end
-- Look backwards for any immediately preceding categories
local catStart = supStart
local checkPos = supStart
while checkPos > 1 do
-- Get the prefix before current position
local prefix = input:sub(1, checkPos - 1)
-- Try to match a category at the end of prefix (with optional trailing whitespace)
local catMatchStart, catMatchEnd = prefix:find("%[%[Category:[^%]]+%]%]%s*$")
if catMatchStart then
catStart = catMatchStart
checkPos = catMatchStart
else
break
end
end
-- Assign index now (during collection) to preserve order
citationNeededIndex = citationNeededIndex + 1
table.insert(matches, {catStart, supEnd, citationNeededIndex})
searchPos = supEnd + 1
end
-- Replace matches from end to start to preserve positions
for i = #matches, 1, -1 do
local startPos, endPos, idx = matches[i][1], matches[i][2], matches[i][3]
local fullMatch = input:sub(startPos, endPos)
local placeholder = "\127CITATIONNEEDED" .. idx .. "\127"
citationNeededTags[placeholder] = fullMatch
input = input:sub(1, startPos - 1) .. placeholder .. input:sub(endPos + 1)
end
-- Check for tags
if input:match("<[^>]+>") then
-- Add tracking category
local category = frame:expandTemplate{
title = "main other",
args = {"[[Category:Pages using infobox football biography with tags in position parameter]]"}
}
-- Restore citation needed tags before returning
for placeholder, tag in pairs(citationNeededTags) do
input = input:gsub(placeholder, tag)
end
return input .. category
end
-- Replace remaining line breaks with /
input = input:gsub("\n", "/")
-- Check for separators in wikilink display text and delink if found
local hadSeparatorInDisplayText = false
local originalInputBeforeDelink = input
local separatorPattern = "[/,;+&]"
local hasWordSeparator = function(text)
return text:match("%s+[Aa][Nn][Dd]%s+") or text:match("%s+[Oo][Rr]%s+")
end
local linkTargetReplacements = {} -- Track original links that had separators in target
-- Check each wikilink for separators in display text
for wikilink in input:gmatch("%[%[.-%]%]") do
local pipePos = wikilink:find("|")
local textToCheck
if pipePos then
-- Has display text - check the part after the pipe
textToCheck = wikilink:sub(pipePos + 1, -3) -- Extract display text (excluding ]])
-- Also check if separator is in the link target (before pipe)
local linkTarget = wikilink:sub(3, pipePos - 1)
if linkTarget:match(separatorPattern) or hasWordSeparator(linkTarget) then
-- Store the original link and its display text for later restoration if needed
local displayText = textToCheck
linkTargetReplacements[displayText] = wikilink
-- Remove separators from the link target in the input
local cleanedTarget = linkTarget:gsub(separatorPattern, ""):gsub("%s+and%s+", ""):gsub("%s+or%s+", "")
input = input:gsub("%[%[" .. linkTarget:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") .. "|" .. displayText:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") .. "%]%]",
"[[" .. cleanedTarget .. "|" .. displayText .. "]]")
end
else
-- No pipe - check the link target itself (excluding [[]])
textToCheck = wikilink:sub(3, -3)
end
if textToCheck:match(separatorPattern) or hasWordSeparator(textToCheck) then
hadSeparatorInDisplayText = true
end
end
-- If separator found in display text, delink the input
if hadSeparatorInDisplayText then
input = delink(input)
end
-- Convert word separators to / before splitting, but only outside of wikilinks
-- First, temporarily replace wikilinks with placeholders
local wikilinks = {}
local placeholderIndex = 0
input = input:gsub("%[%[.-%]%]", function(wikilink)
placeholderIndex = placeholderIndex + 1
local placeholder = "\127WIKILINK" .. placeholderIndex .. "\127"
wikilinks[placeholder] = wikilink
return placeholder
end)
-- Now convert word separators
input = input:gsub("%s+[Aa][Nn][Dd]%s+", "/")
input = input:gsub("%s+[Oo][Rr]%s+", "/")
-- Restore wikilinks
for placeholder, wikilink in pairs(wikilinks) do
input = input:gsub(placeholder, wikilink)
end
-- Split by separators
local positions = {}
local refPattern = "\127'\"`UNIQ%-%-ref.-QINU`\"'\127"
-- First, split by separators
local rawParts = {}
local lastEnd = 1
for sepStart, sepEnd in input:gmatch("()%s*" .. separatorPattern .. "%s*()") do
table.insert(rawParts, input:sub(lastEnd, sepStart - 1))
lastEnd = sepEnd
end
table.insert(rawParts, input:sub(lastEnd))
-- Now process parts: if a part starts with ref(s) or citation needed, move them to previous position
local cnPlaceholderPattern = "\127CITATIONNEEDED%d+\127"
for i, part in ipairs(rawParts) do
local leadingRefs = ""
local remainder = part
-- Extract leading refs and citation needed placeholders
while true do
local refStart, refEnd = remainder:find("^%s*" .. refPattern)
local cnStart, cnEnd = remainder:find("^%s*" .. cnPlaceholderPattern)
if refStart then
leadingRefs = leadingRefs .. remainder:sub(refStart, refEnd)
remainder = remainder:sub(refEnd + 1)
elseif cnStart then
leadingRefs = leadingRefs .. remainder:sub(cnStart, cnEnd)
remainder = remainder:sub(cnEnd + 1)
else
break
end
end
-- Attach leading refs/citation needed to previous position
if leadingRefs ~= "" and #positions > 0 then
positions[#positions] = positions[#positions] .. leadingRefs
end
-- Add remainder as new position (if not empty)
remainder = mw.text.trim(remainder)
if remainder ~= "" then
table.insert(positions, remainder)
end
end
-- If no positions found, treat whole input as one position
if #positions == 0 then
positions = {mw.text.trim(input)}
end
-- Filter out management/executive positions
local excludeWords = {'retired', 'unknown', '?', 'manager', 'coach', 'trainer', 'director', 'president', 'executive', 'chairman', 'ceo', 'referee'}
local filteredPositions = {}
local hasInvalidPosition = false
for _, pos in ipairs(positions) do
local lowerPos = pos:lower()
local exclude = false
for _, word in ipairs(excludeWords) do
if lowerPos:find(word, 1, true) then
exclude = true
hasInvalidPosition = true
break
end
end
if not exclude then
table.insert(filteredPositions, pos)
end
end
positions = filteredPositions
-- Add tracking category for invalid positions
local invalidCategory = ""
if hasInvalidPosition then
invalidCategory = frame:expandTemplate{
title = "main other",
args = {"[[Category:Pages using infobox football biography with invalid position]]"}
}
mw.addWarning('<span style="color:#d33">Error: One or more of the position(s) listed in the infobox parameter is not an actual role for a footballer\'s playing career.</span>')
end
-- If all positions were filtered out, return only categories
if #positions == 0 then
return invalidCategory
end
-- Process each position
local trackingNeeded = {false}
local results = {}
for i, pos in ipairs(positions) do
table.insert(results, processPosition(pos, i == 1, trackingNeeded, linkTargetReplacements, citationNeededTags))
end
-- Build irregular category if needed
local irregularCategory = ""
if trackingNeeded[1] then
irregularCategory = frame:expandTemplate{
title = "main other",
args = {"[[Category:Pages using infobox football biography with irregular position]]"}
}
mw.addWarning('<span style="color:#d33">Error: One or more of the position(s) listed in the infobox parameter is not a typical position in football.</span>')
end
-- Special handling: if we delinked due to separator in display text,
-- and ANY position didn't match, return original input unchanged
if hadSeparatorInDisplayText and trackingNeeded[1] then
return originalInputBeforeDelink .. invalidCategory .. irregularCategory
end
-- Build output
local output
if #results == 1 then
output = results[1]
else
-- Use Module:List hlist
output = mHList.makeList('horizontal', results)
end
return output .. invalidCategory .. irregularCategory
end
return p
5nz275xnt9nbbq75omsphxpfnhlj9ph
Template:Infobox tracking cats
10
8661
73978
2026-07-10T18:00:01Z
MusikBot II
11671
Protected "[[Template:Infobox tracking cats]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 253 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
73978
wikitext
text/x-wiki
#redirect [[Template:Infobox tracking categories]]
{{R for convenience}}
k924lohln0pw2huxuo2k0k7gyahe3m3
73979
73978
2026-07-11T18:59:32Z
Robertsky
10424
1 versaun husi [[:en:Template:Infobox_tracking_cats]]
73978
wikitext
text/x-wiki
#redirect [[Template:Infobox tracking categories]]
{{R for convenience}}
k924lohln0pw2huxuo2k0k7gyahe3m3
Módulo:Check height
828
8662
73981
2025-12-24T17:01:09Z
S.A. Julio
11761
remove refs
73981
Scribunto
text/plain
-- Validates height formatting in infoboxes and adds error tracking categories when issues are found
local p = {}
-- Default ranges
local DEFAULT_FT_MIN = 4.10
local DEFAULT_FT_MAX = 6.11
local DEFAULT_CM_MIN = 147
local DEFAULT_CM_MAX = 212
-- Helper function to parse and validate ftin_range parameter
local function parseFtInRange(rangeStr)
if not rangeStr or rangeStr == '' then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
-- Pattern: number (with optional decimal) - number (with optional decimal)
local minStr, maxStr = rangeStr:match('^(%d+%.%d+)%-(%d+%.%d+)$')
if not minStr or not maxStr then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
local minVal = tonumber(minStr)
local maxVal = tonumber(maxStr)
if not minVal or not maxVal then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
-- Validate that decimal part is exactly 2 digits and represents inches (00-11)
local minInches = minStr:match('%.(%d+)$')
local maxInches = maxStr:match('%.(%d+)$')
if not minInches or not maxInches then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
-- Check exactly 2 digits
if #minInches ~= 2 or #maxInches ~= 2 then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
-- Check range 00-11
local minInchesNum = tonumber(minInches)
local maxInchesNum = tonumber(maxInches)
if not minInchesNum or not maxInchesNum or
minInchesNum < 0 or minInchesNum > 11 or
maxInchesNum < 0 or maxInchesNum > 11 then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
return minVal, maxVal
end
-- Helper function to parse and validate cm_range parameter
local function parseCmRange(rangeStr)
if not rangeStr or rangeStr == '' then
return DEFAULT_CM_MIN, DEFAULT_CM_MAX
end
-- Pattern: number - number (no decimals allowed)
local minStr, maxStr = rangeStr:match('^(%d+)%-(%d+)$')
if not minStr or not maxStr then
return DEFAULT_CM_MIN, DEFAULT_CM_MAX
end
local minVal = tonumber(minStr)
local maxVal = tonumber(maxStr)
if not minVal or not maxVal then
return DEFAULT_CM_MIN, DEFAULT_CM_MAX
end
return minVal, maxVal
end
-- Helper function to remove fraction HTML markup
local function removeFractionMarkup(str)
if not str then return str end
-- Remove templatestyles strip marker
str = str:gsub("\127'\"`UNIQ%-%-templatestyles.-QINU`\"'\127", '')
-- Remove span tags with specific classes while preserving inner content appropriately
-- For sr-only spans, we want to convert the + to actual +
str = str:gsub('<span class="sr%-only">%+</span>', '+')
-- Remove the frac wrapper span (keep contents)
str = str:gsub('<span class="frac">(.-)</span>', '%1')
-- Remove num spans (keep contents)
str = str:gsub('<span class="num">(.-)</span>', '%1')
-- Remove den spans (keep contents)
str = str:gsub('<span class="den">(.-)</span>', '%1')
return str
end
-- Helper function to remove references/inline tags
local function removeReferences(str)
if not str then return str end
-- Pattern for MediaWiki strip markers (references)
str = str:gsub("\127'\"`UNIQ%-%-ref.-QINU`\"'\127", '')
-- Pattern for inline tags (e.g. citation needed)
str = str:gsub('%[%[Category:.-%</sup>', '')
return str
end
-- Helper function to extract regular and converted heights
local function extractHeights(str)
if not str then return nil, nil, false end
local regular, converted = str:match('^(.-)%s%((.-)%)$')
if not regular or not converted then
return nil, nil, false
end
local reconstructed = str:gsub('^' .. regular:gsub('([%(%)%.%%%+%-%*%?%[%]%^%$])', '%%%1'), '')
local expectedRemainder = ' (' .. converted .. ')'
local actualRemainder = reconstructed
local remainderCheck = actualRemainder:gsub(converted:gsub('([%(%)%.%%%+%-%*%?%[%]%^%$])', '%%%1'), '')
if remainderCheck ~= ' ()' then
return nil, nil, false
end
return regular, converted, true
end
-- Helper function to delink wikilinks
local function delink(str)
if not str then return str end
return str:gsub("%[%[(.-)%]%]", function(match)
local pipePos = match:find("|")
if pipePos then
return match:sub(pipePos + 1)
else
return match
end
end)
end
-- Helper function to check for invalid decimal feet/inches format (e.g., "5.5 ft" instead of "5 ft 6 in")
local function hasDecimalImperial(str)
if not str then return false end
-- Delink the string and convert to lowercase
local testStr = delink(str)
local lowerStr = testStr:lower()
-- Replace with regular space
lowerStr = lowerStr:gsub(' ', ' ')
-- Regex pattern
if lowerStr:match('%d[,.]%d%s*foot') or
lowerStr:match('%d[,.]%d%s*feet') or
lowerStr:match('%d[,.]%d%s*ft') or
lowerStr:match("%d%.%d+%s*[′']") or
lowerStr:match('%d[,.]%d%s*in') then
return true
end
return false
end
-- Helper function to check for parentheses without inside them
local function hasParenWithoutNbsp(str)
if not str then return false end
-- Remove references and inline tags
str = removeReferences(str)
-- Find all parenthetical expressions and check if any lack
for parenContent in str:gmatch('%((.-)%)') do
if not parenContent:find(' ') then
return true
end
end
return false
end
-- Validate imperial height format
local function validateImperial(height, ftMin, ftMax)
if not height then return false end
-- Extract feet and inches parts from the min/max values
local minFeet = math.floor(ftMin)
local minInches = math.floor((ftMin - minFeet) * 100 + 0.5)
local maxFeet = math.floor(ftMax)
local maxInches = math.floor((ftMax - maxFeet) * 100 + 0.5)
-- Pattern 1: X ft Y in (simple)
local feet, inches = height:match('^(%d+) ft (%d+) in$')
if feet and inches then
feet = tonumber(feet)
inches = tonumber(inches)
-- Check if within range
if feet < minFeet or feet > maxFeet then
return false
end
if feet == minFeet and inches < minInches then
return false
end
if feet == maxFeet and inches > maxInches then
return false
end
if inches < 0 or inches > 11 then
return false
end
return true
end
-- Pattern 2a: X ft Y+N⁄D in (whole inches plus fraction, e.g., "6 ft 2+1/2 in")
local feet2, inches2, num2, den2 = height:match('^(%d+) ft (%d+)%+(%d+)⁄(%d+) in$')
if feet2 and inches2 and num2 and den2 then
feet2 = tonumber(feet2)
inches2 = tonumber(inches2)
num2 = tonumber(num2)
den2 = tonumber(den2)
-- Reject "0+" before fraction (should use pattern 2b instead)
if inches2 == 0 then
return false
end
-- Check if within range
if feet2 < minFeet or feet2 > maxFeet then
return false
end
if feet2 == minFeet and inches2 < minInches then
return false
end
if feet2 == maxFeet and inches2 > maxInches then
return false
end
if inches2 < 0 or inches2 > 11 then
return false
end
-- Numerator must be at least 1, denominator must be > 1, and num < den
if num2 < 1 or den2 <= 1 or num2 >= den2 then
return false
end
return true
end
-- Pattern 2b: X ft N⁄D in (fraction only, e.g., "6 ft 1/2 in")
local feet3, num3, den3 = height:match('^(%d+) ft (%d+)⁄(%d+) in$')
if feet3 and num3 and den3 then
feet3 = tonumber(feet3)
num3 = tonumber(num3)
den3 = tonumber(den3)
-- Check if within range (inches = 0 for range checking purposes)
if feet3 < minFeet or feet3 > maxFeet then
return false
end
if feet3 == minFeet and 0 < minInches then
return false
end
if feet3 == maxFeet and 0 > maxInches then
return false
end
-- Numerator must be at least 1, denominator must be > 1, and num < den
if num3 < 1 or den3 <= 1 or num3 >= den3 then
return false
end
return true
end
return false
end
-- Validate metric height format (meters)
local function validateMeters(height, cmMin, cmMax)
if not height then return false end
-- Pattern: X.XX m
local meters = height:match('^(%d+%.%d+) m$')
if meters then
-- Remove decimal point and check value
local metersNoDot = meters:gsub('%.', '')
local numericValue = tonumber(metersNoDot)
if numericValue and numericValue >= cmMin and numericValue <= cmMax then
return true
end
end
return false
end
-- Validate metric height format (centimeters)
local function validateCentimeters(height, cmMin, cmMax)
if not height then return false end
-- Pattern: XXX cm
local cm = height:match('^(%d+) cm$')
if cm then
local numericValue = tonumber(cm)
if numericValue and numericValue >= cmMin and numericValue <= cmMax then
return true
end
end
return false
end
-- Validate metric height based on metric parameter
local function validateMetric(height, metricParam, cmMin, cmMax)
if not height then return false end
metricParam = metricParam or 'both'
if metricParam == 'm' then
return validateMeters(height, cmMin, cmMax)
elseif metricParam == 'cm' then
return validateCentimeters(height, cmMin, cmMax)
else -- 'both' or default
return validateMeters(height, cmMin, cmMax) or validateCentimeters(height, cmMin, cmMax)
end
end
-- Main function
function p.main(frame)
local arguments = require('Module:Arguments')
local personHeight = require('Module:Person height')
local args = arguments.getArgs(frame, {trim = true})
local parentArgs = frame:getParent().args
-- Get parameters
local height = args[1] or parentArgs[1] or ''
local metricParam = args['metric'] or parentArgs['metric'] or 'both'
local catParam = args['cat'] or parentArgs['cat'] or ''
local ftinRangeParam = args['ftin_range'] or parentArgs['ftin_range'] or ''
local cmRangeParam = args['cm_range'] or parentArgs['cm_range'] or ''
-- Parse range parameters
local ftMin, ftMax = parseFtInRange(ftinRangeParam)
local cmMin, cmMax = parseCmRange(cmRangeParam)
-- If no height provided, return empty
if height == '' then
return ''
end
-- Check raw input for invalid decimal feet format (e.g., "5.5 ft" instead of "5 ft 6 in")
if hasDecimalImperial(height) then
mw.addWarning('<span style="color:#d33">Height format error: The raw height input does not match the expected pattern (feet or inches value uses decimal).</span>')
if catParam ~= '' then
return '[[Category:' .. catParam .. ']]'
end
return ''
end
-- Check raw input for parentheses without inside
if hasParenWithoutNbsp(height) then
mw.addWarning('<span style="color:#d33">Height format error: The raw height input should not include the converted height in parentheses (this should be calculated automatically or by a template).</span>')
if catParam ~= '' then
return '[[Category:' .. catParam .. ']]'
end
return ''
end
-- Set enforce based on metric parameter (nil if 'both')
local enforceValue = nil
if metricParam == 'm' then
enforceValue = 'm'
elseif metricParam == 'cm' then
enforceValue = 'cm'
end
local heightArgs = {
[1] = height,
['enforce'] = enforceValue,
['ri'] = 'cmin'
}
-- Use pcall to catch any errors from Module:Person height
local success, formattedHeight = pcall(function()
return personHeight.main(frame:newChild{ args = heightArgs })
end)
-- If Module:Person height produced an error, treat as invalid structure
if not success then
if catParam ~= '' then
return '[[Category:' .. catParam .. ']]'
end
return ''
end
-- Remove fraction markup
local cleanedHeight = removeFractionMarkup(formattedHeight)
-- Trim any trailing whitespace
cleanedHeight = cleanedHeight:gsub('%s+$', '')
-- Remove references and inline tags
cleanedHeight = removeReferences(cleanedHeight)
-- Extract regular and converted heights
local regularHeight, convertedHeight, structureValid = extractHeights(cleanedHeight)
-- Check if structure is valid
if not structureValid then
-- Add error category
mw.addWarning('<span style="color:#d33">Height format error: The height format does not match the expected pattern.</span>')
if catParam ~= '' then
return '[[Category:' .. catParam .. ']]'
end
return ''
end
-- Validate the heights
local regularValid = false
local convertedValid = false
-- Check if regular height is imperial or metric
if validateImperial(regularHeight, ftMin, ftMax) then
regularValid = true
-- If regular is imperial, converted should be metric
convertedValid = validateMetric(convertedHeight, metricParam, cmMin, cmMax)
elseif validateMetric(regularHeight, metricParam, cmMin, cmMax) then
regularValid = true
-- If regular is metric, converted should be imperial
convertedValid = validateImperial(convertedHeight, ftMin, ftMax)
end
-- If validation failed, add error category
if not regularValid or not convertedValid then
if catParam ~= '' then
-- Create dynamic error message based on current ranges
local ftMinFeet = math.floor(ftMin)
local ftMinInches = math.floor((ftMin - ftMinFeet) * 100 + 0.5)
local ftMaxFeet = math.floor(ftMax)
local ftMaxInches = math.floor((ftMax - ftMaxFeet) * 100 + 0.5)
local errorMsg = string.format(
'<span style="color:#d33">Height format error: The height values or format are not within acceptable ranges. Height must be between %d\'%d" and %d\'%d" (%d–%d cm).</span>',
ftMinFeet, ftMinInches, ftMaxFeet, ftMaxInches, cmMin, cmMax
)
mw.addWarning(errorMsg)
return '[[Category:' .. catParam .. ']]'
end
end
-- All checks passed, return empty
return ''
end
return p
eb74gvgfqupswf9dfz675ionoss7l84
73982
73981
2026-07-11T19:04:50Z
Robertsky
10424
1 versaun husi [[:en:Module:Check_height]]
73981
Scribunto
text/plain
-- Validates height formatting in infoboxes and adds error tracking categories when issues are found
local p = {}
-- Default ranges
local DEFAULT_FT_MIN = 4.10
local DEFAULT_FT_MAX = 6.11
local DEFAULT_CM_MIN = 147
local DEFAULT_CM_MAX = 212
-- Helper function to parse and validate ftin_range parameter
local function parseFtInRange(rangeStr)
if not rangeStr or rangeStr == '' then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
-- Pattern: number (with optional decimal) - number (with optional decimal)
local minStr, maxStr = rangeStr:match('^(%d+%.%d+)%-(%d+%.%d+)$')
if not minStr or not maxStr then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
local minVal = tonumber(minStr)
local maxVal = tonumber(maxStr)
if not minVal or not maxVal then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
-- Validate that decimal part is exactly 2 digits and represents inches (00-11)
local minInches = minStr:match('%.(%d+)$')
local maxInches = maxStr:match('%.(%d+)$')
if not minInches or not maxInches then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
-- Check exactly 2 digits
if #minInches ~= 2 or #maxInches ~= 2 then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
-- Check range 00-11
local minInchesNum = tonumber(minInches)
local maxInchesNum = tonumber(maxInches)
if not minInchesNum or not maxInchesNum or
minInchesNum < 0 or minInchesNum > 11 or
maxInchesNum < 0 or maxInchesNum > 11 then
return DEFAULT_FT_MIN, DEFAULT_FT_MAX
end
return minVal, maxVal
end
-- Helper function to parse and validate cm_range parameter
local function parseCmRange(rangeStr)
if not rangeStr or rangeStr == '' then
return DEFAULT_CM_MIN, DEFAULT_CM_MAX
end
-- Pattern: number - number (no decimals allowed)
local minStr, maxStr = rangeStr:match('^(%d+)%-(%d+)$')
if not minStr or not maxStr then
return DEFAULT_CM_MIN, DEFAULT_CM_MAX
end
local minVal = tonumber(minStr)
local maxVal = tonumber(maxStr)
if not minVal or not maxVal then
return DEFAULT_CM_MIN, DEFAULT_CM_MAX
end
return minVal, maxVal
end
-- Helper function to remove fraction HTML markup
local function removeFractionMarkup(str)
if not str then return str end
-- Remove templatestyles strip marker
str = str:gsub("\127'\"`UNIQ%-%-templatestyles.-QINU`\"'\127", '')
-- Remove span tags with specific classes while preserving inner content appropriately
-- For sr-only spans, we want to convert the + to actual +
str = str:gsub('<span class="sr%-only">%+</span>', '+')
-- Remove the frac wrapper span (keep contents)
str = str:gsub('<span class="frac">(.-)</span>', '%1')
-- Remove num spans (keep contents)
str = str:gsub('<span class="num">(.-)</span>', '%1')
-- Remove den spans (keep contents)
str = str:gsub('<span class="den">(.-)</span>', '%1')
return str
end
-- Helper function to remove references/inline tags
local function removeReferences(str)
if not str then return str end
-- Pattern for MediaWiki strip markers (references)
str = str:gsub("\127'\"`UNIQ%-%-ref.-QINU`\"'\127", '')
-- Pattern for inline tags (e.g. citation needed)
str = str:gsub('%[%[Category:.-%</sup>', '')
return str
end
-- Helper function to extract regular and converted heights
local function extractHeights(str)
if not str then return nil, nil, false end
local regular, converted = str:match('^(.-)%s%((.-)%)$')
if not regular or not converted then
return nil, nil, false
end
local reconstructed = str:gsub('^' .. regular:gsub('([%(%)%.%%%+%-%*%?%[%]%^%$])', '%%%1'), '')
local expectedRemainder = ' (' .. converted .. ')'
local actualRemainder = reconstructed
local remainderCheck = actualRemainder:gsub(converted:gsub('([%(%)%.%%%+%-%*%?%[%]%^%$])', '%%%1'), '')
if remainderCheck ~= ' ()' then
return nil, nil, false
end
return regular, converted, true
end
-- Helper function to delink wikilinks
local function delink(str)
if not str then return str end
return str:gsub("%[%[(.-)%]%]", function(match)
local pipePos = match:find("|")
if pipePos then
return match:sub(pipePos + 1)
else
return match
end
end)
end
-- Helper function to check for invalid decimal feet/inches format (e.g., "5.5 ft" instead of "5 ft 6 in")
local function hasDecimalImperial(str)
if not str then return false end
-- Delink the string and convert to lowercase
local testStr = delink(str)
local lowerStr = testStr:lower()
-- Replace with regular space
lowerStr = lowerStr:gsub(' ', ' ')
-- Regex pattern
if lowerStr:match('%d[,.]%d%s*foot') or
lowerStr:match('%d[,.]%d%s*feet') or
lowerStr:match('%d[,.]%d%s*ft') or
lowerStr:match("%d%.%d+%s*[′']") or
lowerStr:match('%d[,.]%d%s*in') then
return true
end
return false
end
-- Helper function to check for parentheses without inside them
local function hasParenWithoutNbsp(str)
if not str then return false end
-- Remove references and inline tags
str = removeReferences(str)
-- Find all parenthetical expressions and check if any lack
for parenContent in str:gmatch('%((.-)%)') do
if not parenContent:find(' ') then
return true
end
end
return false
end
-- Validate imperial height format
local function validateImperial(height, ftMin, ftMax)
if not height then return false end
-- Extract feet and inches parts from the min/max values
local minFeet = math.floor(ftMin)
local minInches = math.floor((ftMin - minFeet) * 100 + 0.5)
local maxFeet = math.floor(ftMax)
local maxInches = math.floor((ftMax - maxFeet) * 100 + 0.5)
-- Pattern 1: X ft Y in (simple)
local feet, inches = height:match('^(%d+) ft (%d+) in$')
if feet and inches then
feet = tonumber(feet)
inches = tonumber(inches)
-- Check if within range
if feet < minFeet or feet > maxFeet then
return false
end
if feet == minFeet and inches < minInches then
return false
end
if feet == maxFeet and inches > maxInches then
return false
end
if inches < 0 or inches > 11 then
return false
end
return true
end
-- Pattern 2a: X ft Y+N⁄D in (whole inches plus fraction, e.g., "6 ft 2+1/2 in")
local feet2, inches2, num2, den2 = height:match('^(%d+) ft (%d+)%+(%d+)⁄(%d+) in$')
if feet2 and inches2 and num2 and den2 then
feet2 = tonumber(feet2)
inches2 = tonumber(inches2)
num2 = tonumber(num2)
den2 = tonumber(den2)
-- Reject "0+" before fraction (should use pattern 2b instead)
if inches2 == 0 then
return false
end
-- Check if within range
if feet2 < minFeet or feet2 > maxFeet then
return false
end
if feet2 == minFeet and inches2 < minInches then
return false
end
if feet2 == maxFeet and inches2 > maxInches then
return false
end
if inches2 < 0 or inches2 > 11 then
return false
end
-- Numerator must be at least 1, denominator must be > 1, and num < den
if num2 < 1 or den2 <= 1 or num2 >= den2 then
return false
end
return true
end
-- Pattern 2b: X ft N⁄D in (fraction only, e.g., "6 ft 1/2 in")
local feet3, num3, den3 = height:match('^(%d+) ft (%d+)⁄(%d+) in$')
if feet3 and num3 and den3 then
feet3 = tonumber(feet3)
num3 = tonumber(num3)
den3 = tonumber(den3)
-- Check if within range (inches = 0 for range checking purposes)
if feet3 < minFeet or feet3 > maxFeet then
return false
end
if feet3 == minFeet and 0 < minInches then
return false
end
if feet3 == maxFeet and 0 > maxInches then
return false
end
-- Numerator must be at least 1, denominator must be > 1, and num < den
if num3 < 1 or den3 <= 1 or num3 >= den3 then
return false
end
return true
end
return false
end
-- Validate metric height format (meters)
local function validateMeters(height, cmMin, cmMax)
if not height then return false end
-- Pattern: X.XX m
local meters = height:match('^(%d+%.%d+) m$')
if meters then
-- Remove decimal point and check value
local metersNoDot = meters:gsub('%.', '')
local numericValue = tonumber(metersNoDot)
if numericValue and numericValue >= cmMin and numericValue <= cmMax then
return true
end
end
return false
end
-- Validate metric height format (centimeters)
local function validateCentimeters(height, cmMin, cmMax)
if not height then return false end
-- Pattern: XXX cm
local cm = height:match('^(%d+) cm$')
if cm then
local numericValue = tonumber(cm)
if numericValue and numericValue >= cmMin and numericValue <= cmMax then
return true
end
end
return false
end
-- Validate metric height based on metric parameter
local function validateMetric(height, metricParam, cmMin, cmMax)
if not height then return false end
metricParam = metricParam or 'both'
if metricParam == 'm' then
return validateMeters(height, cmMin, cmMax)
elseif metricParam == 'cm' then
return validateCentimeters(height, cmMin, cmMax)
else -- 'both' or default
return validateMeters(height, cmMin, cmMax) or validateCentimeters(height, cmMin, cmMax)
end
end
-- Main function
function p.main(frame)
local arguments = require('Module:Arguments')
local personHeight = require('Module:Person height')
local args = arguments.getArgs(frame, {trim = true})
local parentArgs = frame:getParent().args
-- Get parameters
local height = args[1] or parentArgs[1] or ''
local metricParam = args['metric'] or parentArgs['metric'] or 'both'
local catParam = args['cat'] or parentArgs['cat'] or ''
local ftinRangeParam = args['ftin_range'] or parentArgs['ftin_range'] or ''
local cmRangeParam = args['cm_range'] or parentArgs['cm_range'] or ''
-- Parse range parameters
local ftMin, ftMax = parseFtInRange(ftinRangeParam)
local cmMin, cmMax = parseCmRange(cmRangeParam)
-- If no height provided, return empty
if height == '' then
return ''
end
-- Check raw input for invalid decimal feet format (e.g., "5.5 ft" instead of "5 ft 6 in")
if hasDecimalImperial(height) then
mw.addWarning('<span style="color:#d33">Height format error: The raw height input does not match the expected pattern (feet or inches value uses decimal).</span>')
if catParam ~= '' then
return '[[Category:' .. catParam .. ']]'
end
return ''
end
-- Check raw input for parentheses without inside
if hasParenWithoutNbsp(height) then
mw.addWarning('<span style="color:#d33">Height format error: The raw height input should not include the converted height in parentheses (this should be calculated automatically or by a template).</span>')
if catParam ~= '' then
return '[[Category:' .. catParam .. ']]'
end
return ''
end
-- Set enforce based on metric parameter (nil if 'both')
local enforceValue = nil
if metricParam == 'm' then
enforceValue = 'm'
elseif metricParam == 'cm' then
enforceValue = 'cm'
end
local heightArgs = {
[1] = height,
['enforce'] = enforceValue,
['ri'] = 'cmin'
}
-- Use pcall to catch any errors from Module:Person height
local success, formattedHeight = pcall(function()
return personHeight.main(frame:newChild{ args = heightArgs })
end)
-- If Module:Person height produced an error, treat as invalid structure
if not success then
if catParam ~= '' then
return '[[Category:' .. catParam .. ']]'
end
return ''
end
-- Remove fraction markup
local cleanedHeight = removeFractionMarkup(formattedHeight)
-- Trim any trailing whitespace
cleanedHeight = cleanedHeight:gsub('%s+$', '')
-- Remove references and inline tags
cleanedHeight = removeReferences(cleanedHeight)
-- Extract regular and converted heights
local regularHeight, convertedHeight, structureValid = extractHeights(cleanedHeight)
-- Check if structure is valid
if not structureValid then
-- Add error category
mw.addWarning('<span style="color:#d33">Height format error: The height format does not match the expected pattern.</span>')
if catParam ~= '' then
return '[[Category:' .. catParam .. ']]'
end
return ''
end
-- Validate the heights
local regularValid = false
local convertedValid = false
-- Check if regular height is imperial or metric
if validateImperial(regularHeight, ftMin, ftMax) then
regularValid = true
-- If regular is imperial, converted should be metric
convertedValid = validateMetric(convertedHeight, metricParam, cmMin, cmMax)
elseif validateMetric(regularHeight, metricParam, cmMin, cmMax) then
regularValid = true
-- If regular is metric, converted should be imperial
convertedValid = validateImperial(convertedHeight, ftMin, ftMax)
end
-- If validation failed, add error category
if not regularValid or not convertedValid then
if catParam ~= '' then
-- Create dynamic error message based on current ranges
local ftMinFeet = math.floor(ftMin)
local ftMinInches = math.floor((ftMin - ftMinFeet) * 100 + 0.5)
local ftMaxFeet = math.floor(ftMax)
local ftMaxInches = math.floor((ftMax - ftMaxFeet) * 100 + 0.5)
local errorMsg = string.format(
'<span style="color:#d33">Height format error: The height values or format are not within acceptable ranges. Height must be between %d\'%d" and %d\'%d" (%d–%d cm).</span>',
ftMinFeet, ftMinInches, ftMaxFeet, ftMaxInches, cmMin, cmMax
)
mw.addWarning(errorMsg)
return '[[Category:' .. catParam .. ']]'
end
end
-- All checks passed, return empty
return ''
end
return p
eb74gvgfqupswf9dfz675ionoss7l84
Template:Soccerway
10
8663
73983
2026-02-16T15:52:20Z
WOSlinker
2476
bypass redirects
73983
wikitext
text/x-wiki
{{#if: {{{new_id|}}}
| [https://www.soccerway.com/player/{{{new_id}}}/ {{#if: {{{name|}}} | {{{name}}} | {{PAGENAMEBASE}} }}] at Soccerway{{#if: {{{id|}}} | {{#if: {{{archive|}}} |  ([https://web.archive.org/web/{{{archive}}}/https://int.soccerway.com/players/{{#iferror: {{#expr: {{formatnum: {{{id}}} | R }} *0 }} | | -/ }}{{{id}}}/ archive]) }} }}{{#if:{{{access-date|{{{accessdate|}}}}}}|. Retrieved {{{access-date|{{{accessdate}}}}}}.}}{{#ifeq:{{NAMESPACENUMBER}}|0|[[Category:Soccerway template using new ID]]}}{{#ifeq:{{NAMESPACENUMBER}}|0
| {{#ifeq:{{{new_id}}}|{{#invoke:string|match|{{{new_id}}}|[a-z][a-z-]*[0-9]*/[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]}}||[[Category:Soccerway template with ID not matching pattern]]}}
}}
| {{#if: {{{1<includeonly>|</includeonly>}}} {{{id|}}} {{#property:P2369}}
| [{{#if: {{{archive|}}} | https://web.archive.org/web/{{{archive}}}/ }}https://int.soccerway.com/players/{{#iferror: {{#expr: {{formatnum: {{#if: {{{1|{{{id|}}}}}} | {{{1|{{{id}}}}}} | {{#invoke:String|match|s={{#property:P2369}}|^[^,]*}} }} | R }} *0 }} | | -/ }}{{#if: {{{1|{{{id<includeonly>|</includeonly>}}}}}} | {{{1|{{{id}}}}}} | {{#invoke:String|match|s={{#property:P2369}}|^[^,]*}} }}/ {{#if: {{{2|{{{name<includeonly>|</includeonly>}}}}}} | {{{2|{{{name}}}}}} | {{PAGENAMEBASE}} }}] at Soccerway{{#if: {{{archive|}}} |   (archived) }}{{#if:{{{access-date|{{{accessdate|}}}}}}|. Retrieved {{{access-date|{{{accessdate}}}}}}.}}<includeonly>{{Edit at Wikidata|pid=P2369|{{{1|{{{id|}}}}}}}}</includeonly>
| <span class="error">{{[[Template:Soccerway|Soccerway]]}} template missing ID and not present in Wikidata.</span>{{preview warning|1=To find the ID, see [https://int.soccerway.com/players/ Soccerway's players page] or try this [https://www.google.com/search?udm=14&q={{urlencode:{{Remove accents|{{PAGENAMEBASE}}}}}}+site%3Asoccerway.com%2Fplayers%2F Google search].}}{{#ifeq:{{NAMESPACENUMBER}}|0
| [[Category:Soccerway template missing ID and not in Wikidata]]
}}
}}
}}{{#ifeq:{{NAMESPACENUMBER}}|0
| {{#if: {{{1|{{{id|}}}}}}
| {{#iferror: {{#expr: {{formatnum: {{{1|{{{id|}}}}}} | R }} *0 }}
| <!-- [[Category:Soccerway template using non-numeric ID]] -->{{#ifeq:{{{1|{{{id}}}}}}|{{#invoke:string|match|{{{1|{{{id}}}}}}|[a-z-]+/%d+}}||[[Category:Soccerway template with ID not matching pattern]]}}
| <!-- [[Category:Soccerway template using numeric ID]] -->
}}{{Wikidata check|property=P2369|value={{#invoke:String|match|s={{{1|{{{id|}}}}}}|pattern=%d+$|ignore_errors=true}}|category=Soccerway template with ID|namespaces=0|nocatsame=1}}
}}
}}<noinclude>
{{Documentation}}<!-- Please add categories to the /doc subpage & add interwikis to Wikidata. -->
</noinclude>
3npk4r74or1gq5vywd7nklmdvo9ibz0
73984
73983
2026-07-11T19:12:29Z
Robertsky
10424
1 versaun husi [[:en:Template:Soccerway]]
73983
wikitext
text/x-wiki
{{#if: {{{new_id|}}}
| [https://www.soccerway.com/player/{{{new_id}}}/ {{#if: {{{name|}}} | {{{name}}} | {{PAGENAMEBASE}} }}] at Soccerway{{#if: {{{id|}}} | {{#if: {{{archive|}}} |  ([https://web.archive.org/web/{{{archive}}}/https://int.soccerway.com/players/{{#iferror: {{#expr: {{formatnum: {{{id}}} | R }} *0 }} | | -/ }}{{{id}}}/ archive]) }} }}{{#if:{{{access-date|{{{accessdate|}}}}}}|. Retrieved {{{access-date|{{{accessdate}}}}}}.}}{{#ifeq:{{NAMESPACENUMBER}}|0|[[Category:Soccerway template using new ID]]}}{{#ifeq:{{NAMESPACENUMBER}}|0
| {{#ifeq:{{{new_id}}}|{{#invoke:string|match|{{{new_id}}}|[a-z][a-z-]*[0-9]*/[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]}}||[[Category:Soccerway template with ID not matching pattern]]}}
}}
| {{#if: {{{1<includeonly>|</includeonly>}}} {{{id|}}} {{#property:P2369}}
| [{{#if: {{{archive|}}} | https://web.archive.org/web/{{{archive}}}/ }}https://int.soccerway.com/players/{{#iferror: {{#expr: {{formatnum: {{#if: {{{1|{{{id|}}}}}} | {{{1|{{{id}}}}}} | {{#invoke:String|match|s={{#property:P2369}}|^[^,]*}} }} | R }} *0 }} | | -/ }}{{#if: {{{1|{{{id<includeonly>|</includeonly>}}}}}} | {{{1|{{{id}}}}}} | {{#invoke:String|match|s={{#property:P2369}}|^[^,]*}} }}/ {{#if: {{{2|{{{name<includeonly>|</includeonly>}}}}}} | {{{2|{{{name}}}}}} | {{PAGENAMEBASE}} }}] at Soccerway{{#if: {{{archive|}}} |   (archived) }}{{#if:{{{access-date|{{{accessdate|}}}}}}|. Retrieved {{{access-date|{{{accessdate}}}}}}.}}<includeonly>{{Edit at Wikidata|pid=P2369|{{{1|{{{id|}}}}}}}}</includeonly>
| <span class="error">{{[[Template:Soccerway|Soccerway]]}} template missing ID and not present in Wikidata.</span>{{preview warning|1=To find the ID, see [https://int.soccerway.com/players/ Soccerway's players page] or try this [https://www.google.com/search?udm=14&q={{urlencode:{{Remove accents|{{PAGENAMEBASE}}}}}}+site%3Asoccerway.com%2Fplayers%2F Google search].}}{{#ifeq:{{NAMESPACENUMBER}}|0
| [[Category:Soccerway template missing ID and not in Wikidata]]
}}
}}
}}{{#ifeq:{{NAMESPACENUMBER}}|0
| {{#if: {{{1|{{{id|}}}}}}
| {{#iferror: {{#expr: {{formatnum: {{{1|{{{id|}}}}}} | R }} *0 }}
| <!-- [[Category:Soccerway template using non-numeric ID]] -->{{#ifeq:{{{1|{{{id}}}}}}|{{#invoke:string|match|{{{1|{{{id}}}}}}|[a-z-]+/%d+}}||[[Category:Soccerway template with ID not matching pattern]]}}
| <!-- [[Category:Soccerway template using numeric ID]] -->
}}{{Wikidata check|property=P2369|value={{#invoke:String|match|s={{{1|{{{id|}}}}}}|pattern=%d+$|ignore_errors=true}}|category=Soccerway template with ID|namespaces=0|nocatsame=1}}
}}
}}<noinclude>
{{Documentation}}<!-- Please add categories to the /doc subpage & add interwikis to Wikidata. -->
</noinclude>
3npk4r74or1gq5vywd7nklmdvo9ibz0
Módulo:EditAtWikidata
828
8664
73985
2025-10-14T19:53:05Z
Sdkb
11680
Undid revision [[Special:Diff/1316834471|1316834471]] by [[Special:Contributions/Anomie|Anomie]] ([[User talk:Anomie|talk]]) It's now appropriately licensed as PD-simple at Commons. See [[User_talk:Sdkb#File:OOUI_icon_userAdd-ltr.svg]].
73985
Scribunto
text/plain
-- Module to display an icon with a tooltip such as "Edit this at Wikidata".
-- Icon is linked to the Wikidata entry for the article where this is placed.
-- This message is only displayed if a local_parameter is not supplied
-- i.e. when called from a template, it can be coded not to display the message.
-- The qid of a Wikidata entry can optionally be supplied for testing outside the article.
-- Usage:
-- {{#invoke:EditAtWikidata|showMessage|local_parameter}}
-- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}}
local p = {}
local i18n =
{
["message"] = "Edit this at Wikidata"
}
local function trimToNil(text)
-- Return trimmed non-empty text, or nil.
if type(text) == 'string' then
return text:match('(%S.-)%s*$')
end
end
function p._showMessage(args)
local local_parm = trimToNil(args[1])
if local_parm then return "" end
-- Parameter qid=x specifies the Wikidata ID for the article.
-- This is not normally used except for testing outside the article.
local qid = trimToNil(args.qid) or mw.wikibase.getEntityIdForCurrentPage()
if qid and mw.wikibase.entityExists(qid) then
-- Parameter pid=x uses x as an anchor in the link to the Wikidata entry.
local anchor = trimToNil(args.pid)
-- Parameter nbsp replaces the leading space with
local space = trimToNil(args.nbsp) and " " or " "
return
space ..
"[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" ..
"|alt=" .. i18n.message ..
"|link=https://www.wikidata.org/wiki/" .. qid ..
(anchor and ("#" .. anchor) or "") ..
"|class=noprint" ..
"|" .. i18n.message ..
"]]"
end
return ""
end
function p.showMessage(frame)
return p._showMessage(frame.args)
end
return p
hod1hfo0n331jsuhscew67pebepcmju
73986
73985
2026-07-11T19:12:29Z
Robertsky
10424
1 versaun husi [[:en:Module:EditAtWikidata]]
73985
Scribunto
text/plain
-- Module to display an icon with a tooltip such as "Edit this at Wikidata".
-- Icon is linked to the Wikidata entry for the article where this is placed.
-- This message is only displayed if a local_parameter is not supplied
-- i.e. when called from a template, it can be coded not to display the message.
-- The qid of a Wikidata entry can optionally be supplied for testing outside the article.
-- Usage:
-- {{#invoke:EditAtWikidata|showMessage|local_parameter}}
-- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}}
local p = {}
local i18n =
{
["message"] = "Edit this at Wikidata"
}
local function trimToNil(text)
-- Return trimmed non-empty text, or nil.
if type(text) == 'string' then
return text:match('(%S.-)%s*$')
end
end
function p._showMessage(args)
local local_parm = trimToNil(args[1])
if local_parm then return "" end
-- Parameter qid=x specifies the Wikidata ID for the article.
-- This is not normally used except for testing outside the article.
local qid = trimToNil(args.qid) or mw.wikibase.getEntityIdForCurrentPage()
if qid and mw.wikibase.entityExists(qid) then
-- Parameter pid=x uses x as an anchor in the link to the Wikidata entry.
local anchor = trimToNil(args.pid)
-- Parameter nbsp replaces the leading space with
local space = trimToNil(args.nbsp) and " " or " "
return
space ..
"[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" ..
"|alt=" .. i18n.message ..
"|link=https://www.wikidata.org/wiki/" .. qid ..
(anchor and ("#" .. anchor) or "") ..
"|class=noprint" ..
"|" .. i18n.message ..
"]]"
end
return ""
end
function p.showMessage(frame)
return p._showMessage(frame.args)
end
return p
hod1hfo0n331jsuhscew67pebepcmju
Template:Preview warning
10
8665
73987
2025-08-05T05:34:31Z
Theknightwho
11677
Make substable.
73987
wikitext
text/x-wiki
<includeonly>{{safesubst:#invoke:If preview|pwarning}}</includeonly><noinclude>
{{documentation}}
</noinclude>
c6997f5zp58bnd9g47cgo51gl3zmsu2
73988
73987
2026-07-11T19:12:29Z
Robertsky
10424
1 versaun husi [[:en:Template:Preview_warning]]
73987
wikitext
text/x-wiki
<includeonly>{{safesubst:#invoke:If preview|pwarning}}</includeonly><noinclude>
{{documentation}}
</noinclude>
c6997f5zp58bnd9g47cgo51gl3zmsu2
Template:Remove accents
10
8666
73989
2021-10-18T17:59:42Z
MusikBot II
11671
Changed protection settings for "[[Template:Remove accents]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 7163 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
73989
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Latin|removeaccents|{{{1|}}}}}<noinclude>
{{Documentation}}
</noinclude>
3mpbpo1z44u2c8n45260byqikg48q30
73990
73989
2026-07-11T19:12:30Z
Robertsky
10424
1 versaun husi [[:en:Template:Remove_accents]]
73989
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Latin|removeaccents|{{{1|}}}}}<noinclude>
{{Documentation}}
</noinclude>
3mpbpo1z44u2c8n45260byqikg48q30
Módulo:Latin
828
8667
73991
2022-01-12T23:43:23Z
Tol
8371
R: + ꝚⱤɌƦȐȒṘ; r: + ꝛɽɍʀȑȓṙ
73991
Scribunto
text/plain
local p = {}
function p._removeaccents(rv)
rv = mw.ustring.gsub(rv,"[ÁÀÂÄǍĂĀÃÅĄ]","A")
rv = mw.ustring.gsub(rv,"[ÆǢǼ]","Ae")
rv = mw.ustring.gsub(rv,"[ĆĊĈČÇ]","C")
rv = mw.ustring.gsub(rv,"[ĎĐḌÐḐ]","D")
rv = mw.ustring.gsub(rv,"[ÉÈĖÊËĚĔĒẼĘẸƐƎƏỀỂỄẾỆ]","E")
rv = mw.ustring.gsub(rv,"[ĠĜĞĢ]","G")
rv = mw.ustring.gsub(rv,"[ĤĦḤ]","H")
rv = mw.ustring.gsub(rv,"[İÍÌÎÏǏĬĪĨĮỊ]","I")
rv = mw.ustring.gsub(rv,"[Ĵ]","J")
rv = mw.ustring.gsub(rv,"[Ķ]","K")
rv = mw.ustring.gsub(rv,"[ĹĿĽĻŁḶḸ]","L")
rv = mw.ustring.gsub(rv,"[Ṃ]","M")
rv = mw.ustring.gsub(rv,"[ŃŇÑŅṆŊ]","N")
rv = mw.ustring.gsub(rv,"[ÓÒÔÖǑŎŌÕǪỌŐØƆ]","O")
rv = mw.ustring.gsub(rv,"[Œ]","Oe")
rv = mw.ustring.gsub(rv,"[ŔŘŖṚṜꝚⱤɌƦȐȒṘ]","R")
rv = mw.ustring.gsub(rv,"[ŚŜŠŞȘṢ]","S")
rv = mw.ustring.gsub(rv,"[ŤŢȚṬ]","T")
rv = mw.ustring.gsub(rv,"[Þ]","Th")
rv = mw.ustring.gsub(rv,"[ÚÙÛÜǓŬŪŨŮŲỤŰǗǛǙǕ]","U")
rv = mw.ustring.gsub(rv,"[Ŵ]","W")
rv = mw.ustring.gsub(rv,"[ÝŶŸỸȲ]","Y")
rv = mw.ustring.gsub(rv,"[ŹŻŽ]","Z")
rv = mw.ustring.gsub(rv,"[áàâäǎăāãåąắăằắẳẵặâầẩẫấậả]","a")
rv = mw.ustring.gsub(rv,"[æǣǽ]","ae")
rv = mw.ustring.gsub(rv,"[ćċĉčç]","c")
rv = mw.ustring.gsub(rv,"[ďđḍðḑ]","d")
rv = mw.ustring.gsub(rv,"[éèėêëěĕēẽęẹɛǝəềểễếệ]","e")
rv = mw.ustring.gsub(rv,"[ġĝğģ]","g")
rv = mw.ustring.gsub(rv,"[ĥħḥḩ]","h")
rv = mw.ustring.gsub(rv,"[ıíìîïǐĭīĩįị]","i")
rv = mw.ustring.gsub(rv,"[ĵ]","j")
rv = mw.ustring.gsub(rv,"[ķ]","k")
rv = mw.ustring.gsub(rv,"[ĺŀľļłḷḹ]","l")
rv = mw.ustring.gsub(rv,"[ṃ]","m")
rv = mw.ustring.gsub(rv,"[ńňñņṇŋ]","n")
rv = mw.ustring.gsub(rv,"[óòôöǒŏōõǫọőøɔơồ]","o")
rv = mw.ustring.gsub(rv,"[œ]","oe")
rv = mw.ustring.gsub(rv,"[ŕřŗṛṝꝛɽɍʀȑȓṙ]","r")
rv = mw.ustring.gsub(rv,"[śŝšşșṣ]","s")
rv = mw.ustring.gsub(rv,"[ß]","ss")
rv = mw.ustring.gsub(rv,"[ťţțṭ]","t")
rv = mw.ustring.gsub(rv,"[þ]","th")
rv = mw.ustring.gsub(rv,"[úùûüǔŭūũůųụűǘǜǚǖưứừ]","u")
rv = mw.ustring.gsub(rv,"[ŵ]","w")
rv = mw.ustring.gsub(rv,"[ýŷÿỹȳ]","y")
rv = mw.ustring.gsub(rv,"[źżž]","z")
return rv
end
function p.removeaccents(frame)
local rv = mw.ustring.toNFC (frame.args[1])
-- if (true) then return mw.ustring.isutf8 (rv) end
return p._removeaccents(rv)
end
--[[
The next function returns a % encoding concomitant with ISO/IEC 8859-1. It encodes % and any non-reserved and non-unreserved
characters.
Space is currently encoded as an underscore.
Reserved characters are currently not encoded.
]]
function p.urlencodeISO88591(frame)
local rv = mw.ustring.toNFC (frame.args[1])
-- % first to avoid double encoding
rv = mw.ustring.gsub(rv,"%%","%%%%")
-- space to underscore, then punctuation which is not reserved
rv = mw.ustring.gsub(rv," ","_")
rv = mw.ustring.gsub(rv,"\034;","%%22") -- quote mark
rv = mw.ustring.gsub(rv,"<","%%3C")
rv = mw.ustring.gsub(rv,">","%%3E")
rv = mw.ustring.gsub(rv,"\\","%%5C") -- backslash does not work with "\092", "%\" or "\"
rv = mw.ustring.gsub(rv,"%^","%%5E")
rv = mw.ustring.gsub(rv,"`","%%60")
rv = mw.ustring.gsub(rv,"{","%%7B")
rv = mw.ustring.gsub(rv,"|","%%7C")
rv = mw.ustring.gsub(rv,"}","%%7D")
-- all the rest of the codepoints that are printable
rv = mw.ustring.gsub(rv,"\194\160","%%A0")
rv = mw.ustring.gsub(rv,"\194\161","%%A1")
rv = mw.ustring.gsub(rv,"\194\162","%%A2")
rv = mw.ustring.gsub(rv,"\194\163","%%A3")
rv = mw.ustring.gsub(rv,"\194\164","%%A4")
rv = mw.ustring.gsub(rv,"\194\165","%%A5")
rv = mw.ustring.gsub(rv,"\194\166","%%A6")
rv = mw.ustring.gsub(rv,"\194\167","%%A7")
rv = mw.ustring.gsub(rv,"\194\168","%%A8")
rv = mw.ustring.gsub(rv,"\194\169","%%A9")
rv = mw.ustring.gsub(rv,"\194\170","%%AA")
rv = mw.ustring.gsub(rv,"\194\171","%%AB")
rv = mw.ustring.gsub(rv,"\194\172","%%AC")
rv = mw.ustring.gsub(rv,"\194\173","%%AD")
rv = mw.ustring.gsub(rv,"\194\174","%%AE")
rv = mw.ustring.gsub(rv,"\194\175","%%AF")
rv = mw.ustring.gsub(rv,"\194\176","%%B0")
rv = mw.ustring.gsub(rv,"\194\177","%%B1")
rv = mw.ustring.gsub(rv,"\194\178","%%B2")
rv = mw.ustring.gsub(rv,"\194\179","%%B3")
rv = mw.ustring.gsub(rv,"\194\180","%%B4")
rv = mw.ustring.gsub(rv,"\194\181","%%B5")
rv = mw.ustring.gsub(rv,"\194\182","%%B6")
rv = mw.ustring.gsub(rv,"\194\183","%%B7")
rv = mw.ustring.gsub(rv,"\194\184","%%B8")
rv = mw.ustring.gsub(rv,"\194\185","%%B9")
rv = mw.ustring.gsub(rv,"\194\186","%%BA")
rv = mw.ustring.gsub(rv,"\194\187","%%BB")
rv = mw.ustring.gsub(rv,"\194\188","%%BC")
rv = mw.ustring.gsub(rv,"\194\189","%%BD")
rv = mw.ustring.gsub(rv,"\194\190","%%BE")
rv = mw.ustring.gsub(rv,"\194\191","%%BF")
rv = mw.ustring.gsub(rv,"\195\128","%%C0")
rv = mw.ustring.gsub(rv,"\195\129","%%C1")
rv = mw.ustring.gsub(rv,"\195\130","%%C2")
rv = mw.ustring.gsub(rv,"\195\131","%%C3")
rv = mw.ustring.gsub(rv,"\195\132","%%C4")
rv = mw.ustring.gsub(rv,"\195\133","%%C5")
rv = mw.ustring.gsub(rv,"\195\134","%%C6")
rv = mw.ustring.gsub(rv,"\195\135","%%C7")
rv = mw.ustring.gsub(rv,"\195\136","%%C8")
rv = mw.ustring.gsub(rv,"\195\137","%%C9")
rv = mw.ustring.gsub(rv,"\195\138","%%CA")
rv = mw.ustring.gsub(rv,"\195\139","%%CB")
rv = mw.ustring.gsub(rv,"\195\140","%%CC")
rv = mw.ustring.gsub(rv,"\195\141","%%CD")
rv = mw.ustring.gsub(rv,"\195\142","%%CE")
rv = mw.ustring.gsub(rv,"\195\143","%%CF")
rv = mw.ustring.gsub(rv,"\195\144","%%D0")
rv = mw.ustring.gsub(rv,"\195\145","%%D1")
rv = mw.ustring.gsub(rv,"\195\146","%%D2")
rv = mw.ustring.gsub(rv,"\195\147","%%D3")
rv = mw.ustring.gsub(rv,"\195\148","%%D4")
rv = mw.ustring.gsub(rv,"\195\149","%%D5")
rv = mw.ustring.gsub(rv,"\195\150","%%D6")
rv = mw.ustring.gsub(rv,"\195\151","%%D7")
rv = mw.ustring.gsub(rv,"\195\152","%%D8")
rv = mw.ustring.gsub(rv,"\195\153","%%D9")
rv = mw.ustring.gsub(rv,"\195\154","%%DA")
rv = mw.ustring.gsub(rv,"\195\155","%%DB")
rv = mw.ustring.gsub(rv,"\195\156","%%DC")
rv = mw.ustring.gsub(rv,"\195\157","%%DD")
rv = mw.ustring.gsub(rv,"\195\158","%%DE")
rv = mw.ustring.gsub(rv,"\195\159","%%DF")
rv = mw.ustring.gsub(rv,"\195\160","%%E0")
rv = mw.ustring.gsub(rv,"\195\161","%%E1")
rv = mw.ustring.gsub(rv,"\195\162","%%E2")
rv = mw.ustring.gsub(rv,"\195\163","%%E3")
rv = mw.ustring.gsub(rv,"\195\164","%%E4")
rv = mw.ustring.gsub(rv,"\195\165","%%E5")
rv = mw.ustring.gsub(rv,"\195\166","%%E6")
rv = mw.ustring.gsub(rv,"\195\167","%%E7")
rv = mw.ustring.gsub(rv,"\195\168","%%E8")
rv = mw.ustring.gsub(rv,"\195\169","%%E9")
rv = mw.ustring.gsub(rv,"\195\170","%%EA")
rv = mw.ustring.gsub(rv,"\195\171","%%EB")
rv = mw.ustring.gsub(rv,"\195\172","%%EC")
rv = mw.ustring.gsub(rv,"\195\173","%%ED")
rv = mw.ustring.gsub(rv,"\195\174","%%EE")
rv = mw.ustring.gsub(rv,"\195\175","%%EF")
rv = mw.ustring.gsub(rv,"\195\176","%%F0")
rv = mw.ustring.gsub(rv,"\195\177","%%F1")
rv = mw.ustring.gsub(rv,"\195\178","%%F2")
rv = mw.ustring.gsub(rv,"\195\179","%%F3")
rv = mw.ustring.gsub(rv,"\195\180","%%F4")
rv = mw.ustring.gsub(rv,"\195\181","%%F5")
rv = mw.ustring.gsub(rv,"\195\182","%%F6")
rv = mw.ustring.gsub(rv,"\195\183","%%F7")
rv = mw.ustring.gsub(rv,"\195\184","%%F8")
rv = mw.ustring.gsub(rv,"\195\185","%%F9")
rv = mw.ustring.gsub(rv,"\195\186","%%FA")
rv = mw.ustring.gsub(rv,"\195\187","%%FB")
rv = mw.ustring.gsub(rv,"\195\188","%%FC")
rv = mw.ustring.gsub(rv,"\195\189","%%FD")
rv = mw.ustring.gsub(rv,"\195\190","%%FE")
rv = mw.ustring.gsub(rv,"\195\191","%%FF")
return rv
end
return p
qsck6nr4i1hi6qr7ykuie8b008xbuqp
73992
73991
2026-07-11T19:12:31Z
Robertsky
10424
1 versaun husi [[:en:Module:Latin]]
73991
Scribunto
text/plain
local p = {}
function p._removeaccents(rv)
rv = mw.ustring.gsub(rv,"[ÁÀÂÄǍĂĀÃÅĄ]","A")
rv = mw.ustring.gsub(rv,"[ÆǢǼ]","Ae")
rv = mw.ustring.gsub(rv,"[ĆĊĈČÇ]","C")
rv = mw.ustring.gsub(rv,"[ĎĐḌÐḐ]","D")
rv = mw.ustring.gsub(rv,"[ÉÈĖÊËĚĔĒẼĘẸƐƎƏỀỂỄẾỆ]","E")
rv = mw.ustring.gsub(rv,"[ĠĜĞĢ]","G")
rv = mw.ustring.gsub(rv,"[ĤĦḤ]","H")
rv = mw.ustring.gsub(rv,"[İÍÌÎÏǏĬĪĨĮỊ]","I")
rv = mw.ustring.gsub(rv,"[Ĵ]","J")
rv = mw.ustring.gsub(rv,"[Ķ]","K")
rv = mw.ustring.gsub(rv,"[ĹĿĽĻŁḶḸ]","L")
rv = mw.ustring.gsub(rv,"[Ṃ]","M")
rv = mw.ustring.gsub(rv,"[ŃŇÑŅṆŊ]","N")
rv = mw.ustring.gsub(rv,"[ÓÒÔÖǑŎŌÕǪỌŐØƆ]","O")
rv = mw.ustring.gsub(rv,"[Œ]","Oe")
rv = mw.ustring.gsub(rv,"[ŔŘŖṚṜꝚⱤɌƦȐȒṘ]","R")
rv = mw.ustring.gsub(rv,"[ŚŜŠŞȘṢ]","S")
rv = mw.ustring.gsub(rv,"[ŤŢȚṬ]","T")
rv = mw.ustring.gsub(rv,"[Þ]","Th")
rv = mw.ustring.gsub(rv,"[ÚÙÛÜǓŬŪŨŮŲỤŰǗǛǙǕ]","U")
rv = mw.ustring.gsub(rv,"[Ŵ]","W")
rv = mw.ustring.gsub(rv,"[ÝŶŸỸȲ]","Y")
rv = mw.ustring.gsub(rv,"[ŹŻŽ]","Z")
rv = mw.ustring.gsub(rv,"[áàâäǎăāãåąắăằắẳẵặâầẩẫấậả]","a")
rv = mw.ustring.gsub(rv,"[æǣǽ]","ae")
rv = mw.ustring.gsub(rv,"[ćċĉčç]","c")
rv = mw.ustring.gsub(rv,"[ďđḍðḑ]","d")
rv = mw.ustring.gsub(rv,"[éèėêëěĕēẽęẹɛǝəềểễếệ]","e")
rv = mw.ustring.gsub(rv,"[ġĝğģ]","g")
rv = mw.ustring.gsub(rv,"[ĥħḥḩ]","h")
rv = mw.ustring.gsub(rv,"[ıíìîïǐĭīĩįị]","i")
rv = mw.ustring.gsub(rv,"[ĵ]","j")
rv = mw.ustring.gsub(rv,"[ķ]","k")
rv = mw.ustring.gsub(rv,"[ĺŀľļłḷḹ]","l")
rv = mw.ustring.gsub(rv,"[ṃ]","m")
rv = mw.ustring.gsub(rv,"[ńňñņṇŋ]","n")
rv = mw.ustring.gsub(rv,"[óòôöǒŏōõǫọőøɔơồ]","o")
rv = mw.ustring.gsub(rv,"[œ]","oe")
rv = mw.ustring.gsub(rv,"[ŕřŗṛṝꝛɽɍʀȑȓṙ]","r")
rv = mw.ustring.gsub(rv,"[śŝšşșṣ]","s")
rv = mw.ustring.gsub(rv,"[ß]","ss")
rv = mw.ustring.gsub(rv,"[ťţțṭ]","t")
rv = mw.ustring.gsub(rv,"[þ]","th")
rv = mw.ustring.gsub(rv,"[úùûüǔŭūũůųụűǘǜǚǖưứừ]","u")
rv = mw.ustring.gsub(rv,"[ŵ]","w")
rv = mw.ustring.gsub(rv,"[ýŷÿỹȳ]","y")
rv = mw.ustring.gsub(rv,"[źżž]","z")
return rv
end
function p.removeaccents(frame)
local rv = mw.ustring.toNFC (frame.args[1])
-- if (true) then return mw.ustring.isutf8 (rv) end
return p._removeaccents(rv)
end
--[[
The next function returns a % encoding concomitant with ISO/IEC 8859-1. It encodes % and any non-reserved and non-unreserved
characters.
Space is currently encoded as an underscore.
Reserved characters are currently not encoded.
]]
function p.urlencodeISO88591(frame)
local rv = mw.ustring.toNFC (frame.args[1])
-- % first to avoid double encoding
rv = mw.ustring.gsub(rv,"%%","%%%%")
-- space to underscore, then punctuation which is not reserved
rv = mw.ustring.gsub(rv," ","_")
rv = mw.ustring.gsub(rv,"\034;","%%22") -- quote mark
rv = mw.ustring.gsub(rv,"<","%%3C")
rv = mw.ustring.gsub(rv,">","%%3E")
rv = mw.ustring.gsub(rv,"\\","%%5C") -- backslash does not work with "\092", "%\" or "\"
rv = mw.ustring.gsub(rv,"%^","%%5E")
rv = mw.ustring.gsub(rv,"`","%%60")
rv = mw.ustring.gsub(rv,"{","%%7B")
rv = mw.ustring.gsub(rv,"|","%%7C")
rv = mw.ustring.gsub(rv,"}","%%7D")
-- all the rest of the codepoints that are printable
rv = mw.ustring.gsub(rv,"\194\160","%%A0")
rv = mw.ustring.gsub(rv,"\194\161","%%A1")
rv = mw.ustring.gsub(rv,"\194\162","%%A2")
rv = mw.ustring.gsub(rv,"\194\163","%%A3")
rv = mw.ustring.gsub(rv,"\194\164","%%A4")
rv = mw.ustring.gsub(rv,"\194\165","%%A5")
rv = mw.ustring.gsub(rv,"\194\166","%%A6")
rv = mw.ustring.gsub(rv,"\194\167","%%A7")
rv = mw.ustring.gsub(rv,"\194\168","%%A8")
rv = mw.ustring.gsub(rv,"\194\169","%%A9")
rv = mw.ustring.gsub(rv,"\194\170","%%AA")
rv = mw.ustring.gsub(rv,"\194\171","%%AB")
rv = mw.ustring.gsub(rv,"\194\172","%%AC")
rv = mw.ustring.gsub(rv,"\194\173","%%AD")
rv = mw.ustring.gsub(rv,"\194\174","%%AE")
rv = mw.ustring.gsub(rv,"\194\175","%%AF")
rv = mw.ustring.gsub(rv,"\194\176","%%B0")
rv = mw.ustring.gsub(rv,"\194\177","%%B1")
rv = mw.ustring.gsub(rv,"\194\178","%%B2")
rv = mw.ustring.gsub(rv,"\194\179","%%B3")
rv = mw.ustring.gsub(rv,"\194\180","%%B4")
rv = mw.ustring.gsub(rv,"\194\181","%%B5")
rv = mw.ustring.gsub(rv,"\194\182","%%B6")
rv = mw.ustring.gsub(rv,"\194\183","%%B7")
rv = mw.ustring.gsub(rv,"\194\184","%%B8")
rv = mw.ustring.gsub(rv,"\194\185","%%B9")
rv = mw.ustring.gsub(rv,"\194\186","%%BA")
rv = mw.ustring.gsub(rv,"\194\187","%%BB")
rv = mw.ustring.gsub(rv,"\194\188","%%BC")
rv = mw.ustring.gsub(rv,"\194\189","%%BD")
rv = mw.ustring.gsub(rv,"\194\190","%%BE")
rv = mw.ustring.gsub(rv,"\194\191","%%BF")
rv = mw.ustring.gsub(rv,"\195\128","%%C0")
rv = mw.ustring.gsub(rv,"\195\129","%%C1")
rv = mw.ustring.gsub(rv,"\195\130","%%C2")
rv = mw.ustring.gsub(rv,"\195\131","%%C3")
rv = mw.ustring.gsub(rv,"\195\132","%%C4")
rv = mw.ustring.gsub(rv,"\195\133","%%C5")
rv = mw.ustring.gsub(rv,"\195\134","%%C6")
rv = mw.ustring.gsub(rv,"\195\135","%%C7")
rv = mw.ustring.gsub(rv,"\195\136","%%C8")
rv = mw.ustring.gsub(rv,"\195\137","%%C9")
rv = mw.ustring.gsub(rv,"\195\138","%%CA")
rv = mw.ustring.gsub(rv,"\195\139","%%CB")
rv = mw.ustring.gsub(rv,"\195\140","%%CC")
rv = mw.ustring.gsub(rv,"\195\141","%%CD")
rv = mw.ustring.gsub(rv,"\195\142","%%CE")
rv = mw.ustring.gsub(rv,"\195\143","%%CF")
rv = mw.ustring.gsub(rv,"\195\144","%%D0")
rv = mw.ustring.gsub(rv,"\195\145","%%D1")
rv = mw.ustring.gsub(rv,"\195\146","%%D2")
rv = mw.ustring.gsub(rv,"\195\147","%%D3")
rv = mw.ustring.gsub(rv,"\195\148","%%D4")
rv = mw.ustring.gsub(rv,"\195\149","%%D5")
rv = mw.ustring.gsub(rv,"\195\150","%%D6")
rv = mw.ustring.gsub(rv,"\195\151","%%D7")
rv = mw.ustring.gsub(rv,"\195\152","%%D8")
rv = mw.ustring.gsub(rv,"\195\153","%%D9")
rv = mw.ustring.gsub(rv,"\195\154","%%DA")
rv = mw.ustring.gsub(rv,"\195\155","%%DB")
rv = mw.ustring.gsub(rv,"\195\156","%%DC")
rv = mw.ustring.gsub(rv,"\195\157","%%DD")
rv = mw.ustring.gsub(rv,"\195\158","%%DE")
rv = mw.ustring.gsub(rv,"\195\159","%%DF")
rv = mw.ustring.gsub(rv,"\195\160","%%E0")
rv = mw.ustring.gsub(rv,"\195\161","%%E1")
rv = mw.ustring.gsub(rv,"\195\162","%%E2")
rv = mw.ustring.gsub(rv,"\195\163","%%E3")
rv = mw.ustring.gsub(rv,"\195\164","%%E4")
rv = mw.ustring.gsub(rv,"\195\165","%%E5")
rv = mw.ustring.gsub(rv,"\195\166","%%E6")
rv = mw.ustring.gsub(rv,"\195\167","%%E7")
rv = mw.ustring.gsub(rv,"\195\168","%%E8")
rv = mw.ustring.gsub(rv,"\195\169","%%E9")
rv = mw.ustring.gsub(rv,"\195\170","%%EA")
rv = mw.ustring.gsub(rv,"\195\171","%%EB")
rv = mw.ustring.gsub(rv,"\195\172","%%EC")
rv = mw.ustring.gsub(rv,"\195\173","%%ED")
rv = mw.ustring.gsub(rv,"\195\174","%%EE")
rv = mw.ustring.gsub(rv,"\195\175","%%EF")
rv = mw.ustring.gsub(rv,"\195\176","%%F0")
rv = mw.ustring.gsub(rv,"\195\177","%%F1")
rv = mw.ustring.gsub(rv,"\195\178","%%F2")
rv = mw.ustring.gsub(rv,"\195\179","%%F3")
rv = mw.ustring.gsub(rv,"\195\180","%%F4")
rv = mw.ustring.gsub(rv,"\195\181","%%F5")
rv = mw.ustring.gsub(rv,"\195\182","%%F6")
rv = mw.ustring.gsub(rv,"\195\183","%%F7")
rv = mw.ustring.gsub(rv,"\195\184","%%F8")
rv = mw.ustring.gsub(rv,"\195\185","%%F9")
rv = mw.ustring.gsub(rv,"\195\186","%%FA")
rv = mw.ustring.gsub(rv,"\195\187","%%FB")
rv = mw.ustring.gsub(rv,"\195\188","%%FC")
rv = mw.ustring.gsub(rv,"\195\189","%%FD")
rv = mw.ustring.gsub(rv,"\195\190","%%FE")
rv = mw.ustring.gsub(rv,"\195\191","%%FF")
return rv
end
return p
qsck6nr4i1hi6qr7ykuie8b008xbuqp
Template:Highlight
10
8668
73993
2025-06-05T21:11:36Z
Pppery
11644
Clean subst
73993
wikitext
text/x-wiki
{{{{{|safesubst:}}}#if:{{{3|}}}|{{{{{|safesubst:}}}#ifexpr:({{{{{|safesubst:}}}#time:U|{{{3}}}}} - {{{{{|safesubst:}}}#time:U|now}}) > 0|{{{{{|safesubst:}}}highlight/core|{{{1|}}}|{{{{{|safesubst:}}}#ifeq:{{{2|}}}||yellow|{{{2}}}}}}}|{{{1|}}}}}|{{{{{|safesubst:}}}highlight/core|{{{1|}}}|{{{2|yellow}}}}}}}<noinclude>{{documentation}}</noinclude>
m8xos9vxwpnyww39k6bnpxcq61oza0j
73994
73993
2026-07-11T19:12:31Z
Robertsky
10424
1 versaun husi [[:en:Template:Highlight]]
73993
wikitext
text/x-wiki
{{{{{|safesubst:}}}#if:{{{3|}}}|{{{{{|safesubst:}}}#ifexpr:({{{{{|safesubst:}}}#time:U|{{{3}}}}} - {{{{{|safesubst:}}}#time:U|now}}) > 0|{{{{{|safesubst:}}}highlight/core|{{{1|}}}|{{{{{|safesubst:}}}#ifeq:{{{2|}}}||yellow|{{{2}}}}}}}|{{{1|}}}}}|{{{{{|safesubst:}}}highlight/core|{{{1|}}}|{{{2|yellow}}}}}}}<noinclude>{{documentation}}</noinclude>
m8xos9vxwpnyww39k6bnpxcq61oza0j
Template:Highlight/core
10
8669
73995
2025-06-26T12:25:28Z
Xaosflux
5067
use mark element, requested on talk
73995
wikitext
text/x-wiki
<mark style="color:black;background:{{{2|yellow}}}">{{{1}}}</mark><noinclude>
{{Documentation|content=Helper template for [[Template:Highlight]].}}
</noinclude>
6r7z14qo4g655bdav3untstp8euwql3
73996
73995
2026-07-11T19:12:31Z
Robertsky
10424
1 versaun husi [[:en:Template:Highlight/core]]
73995
wikitext
text/x-wiki
<mark style="color:black;background:{{{2|yellow}}}">{{{1}}}</mark><noinclude>
{{Documentation|content=Helper template for [[Template:Highlight]].}}
</noinclude>
6r7z14qo4g655bdav3untstp8euwql3
Template:Wikidata property link
10
8670
73997
2024-12-27T18:00:10Z
MusikBot II
11671
Changed protection settings for "[[Template:Wikidata property link]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2502 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
73997
wikitext
text/x-wiki
<includeonly>{{#switch:{{str left|{{uc:{{{id|}}}}}|1}}
| N <!--none--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}}]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}}]]
}}
| O <!--only--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]
}}
| F <!--first--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|{{uc:{{{1|}}}}}}}|: <small>{{wikidata|label|{{uc:{{{1|}}}}}}}</small>}}
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|P{{uc:{{{1|}}}}}}}|: <small>{{wikidata|label|P{{uc:{{{1|}}}}}}}</small>}}
}}
| #default = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}} <small>({{uc:{{{1|}}}}})</small>]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}} <small>(P{{uc:{{{1|}}}}})</small>]]
}}
}}</includeonly><noinclude>{{Documentation}}</noinclude>
k8jv170qlggs0249fpe48ygwkpgfzbn
73998
73997
2026-07-11T19:12:31Z
Robertsky
10424
1 versaun husi [[:en:Template:Wikidata_property_link]]
73997
wikitext
text/x-wiki
<includeonly>{{#switch:{{str left|{{uc:{{{id|}}}}}|1}}
| N <!--none--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}}]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}}]]
}}
| O <!--only--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]
}}
| F <!--first--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|{{uc:{{{1|}}}}}}}|: <small>{{wikidata|label|{{uc:{{{1|}}}}}}}</small>}}
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|P{{uc:{{{1|}}}}}}}|: <small>{{wikidata|label|P{{uc:{{{1|}}}}}}}</small>}}
}}
| #default = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}} <small>({{uc:{{{1|}}}}})</small>]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}} <small>(P{{uc:{{{1|}}}}})</small>]]
}}
}}</includeonly><noinclude>{{Documentation}}</noinclude>
k8jv170qlggs0249fpe48ygwkpgfzbn
Template:Soccerway/doc
10
8671
73999
2026-03-20T17:31:04Z
Colonies Chris
11770
73999
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
{{High-use}}
{{Template redirect|Soccerway player|Soccerway.com|Soccerway.com player}}
{{Tracks and uses Wikidata|P2369}}
{{Lua|Module:String|Module:EditAtWikidata|Module:WikidataCheck}}
'''{{NAMESPACE}}:{{BASEPAGENAME}}''' displays an external link to an [[association football]] ([[soccer]]) player's profile at [https://int.soccerway.com/ Soccerway.com].
{{ombox|text=In 2025, Soccerway.com switched to the same player ID used at Flashscore.com; see [[Template:Flashscore]] and {{Wikidata property link|P8259}}. Many old Soccerway player IDs redirect to the new ID. The {{para|archive}} parameter may be used to display an archived copy of the original from the [[Internet Archive]].}}
== Usage ==
Omit <var>ID</var> to use the Wikidata property. Omit <var>NAME</var> to use Wikipedia article name as [[link text]].
; External link
: <code><nowiki>* {{</nowiki>Soccerway|new_id=<var>NEWID</var>|name=<var>NAME</var>}}</code>
: <code><nowiki>* {{</nowiki>Soccerway|id=<var>ID</var>|name=<var>NAME</var>}}</code>
: <code><nowiki>* {{</nowiki>Soccerway|<var>ID</var>|<var>NAME</var>}}</code>
; Citation with access date
: <code><nowiki>{{</nowiki>Soccerway|new_id=<var>NEWID</var>|name=<var>NAME</var>|access-date=<var>DATE</var>}}</code>
: <code><nowiki>{{</nowiki>Soccerway|id=<var>ID</var>|name=<var>NAME</var>|access-date=<var>DATE</var>}}</code>
: <code><nowiki>{{</nowiki>Soccerway|<var>ID</var>|<var>NAME</var>|access-date=<var>DATE</var>}}</code>
; Archived external link
: <code><nowiki>{{</nowiki>Soccerway|id=<var>ID</var>|name=<var>NAME</var>|archive=<var>NUMBER</var>}}</code>
: <code><nowiki>{{</nowiki>Soccerway|<var>ID</var>|<var>NAME</var>|archive=<var>NUMBER</var>}}</code>
; Archived citation with access date
: <code><nowiki>{{</nowiki>Soccerway|id=<var>ID</var>|name=<var>NAME</var>|archive=<var>NUMBER</var>|access-date=<var>DATE</var>}}</code>
: <code><nowiki>{{</nowiki>Soccerway|<var>ID</var>|<var>NAME</var>|archive=<var>NUMBER</var>|access-date=<var>DATE</var>}}</code>
== Examples ==
=== External links ===
; Usage in [[Mateja Zver]] with article name as link text
: <code><nowiki>* {{</nowiki>Soccerway|new_id={{Highlight|zver-mateja/p0DFdwlo|lightgreen}}<nowiki>}}</nowiki></code>
: <code><nowiki>* {{</nowiki>Soccerway|new_id={{Highlight|zver-mateja/p0DFdwlo|lightgreen}}|id={{Highlight|mateja-zver/45569}}|archive=20240605050544<nowiki>}}</nowiki></code>
: <code><nowiki>* {{</nowiki>Soccerway|id={{Highlight|mateja-zver/45569}}|archive=20240605050544<nowiki>}}</nowiki></code>
: <code><nowiki>* {{</nowiki>Soccerway|{{Highlight|45569}}<nowiki>}}</nowiki></code>
; Output
:* {{Soccerway|new_id=zver-mateja/p0DFdwlo|name=Mateja Zver}}
:* {{Soccerway|new_id=zver-mateja/p0DFdwlo|name=Mateja Zver|id=mateja-zver/45569|archive=20240605050544}}
:* {{Soccerway|id=mateja-zver/45569|name=Mateja Zver|archive=20240605050544}}
:* {{Soccerway|45569|Mateja Zver}}
; New ID at Soccerway.com
: <kbd>[https://www.soccerway.com/player/zver-mateja/p0DFdwlo/ https://www.'''soccerway'''.com/'''player'''/{{Highlight|zver-mateja/p0DFdwlo|lightgreen}}/]</kbd>
; Old ID at Soccerway.com (redirect to new ID)
: <kbd>[https://int.soccerway.com/players/mateja-zver/45569/ https://int.soccerway.com/'''players'''/{{Highlight|mateja-zver/45569}}/]</kbd> ([https://web.archive.org/web/20240605050544/https://int.soccerway.com/players/mateja-zver/45569/ archive 2024-06-05])
: <kbd>[https://int.soccerway.com/players/-/45569/ https://int.soccerway.com/'''players'''/-/{{Highlight|45569}}/]</kbd> ([https://web.archive.org/web/20250222130153/https://int.soccerway.com/players/-/45569/ archive 2025-02-22])
=== Citation with access date ===
; Usage with parameter as link text
: <code><nowiki>{{</nowiki>Soccerway | new_id= {{Highlight|wong-emily/l8HTsA0Q|lightgreen}} | name= Emily Wong | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} <nowiki>}}</nowiki></code>
: <code><nowiki>{{</nowiki>Soccerway | id= {{Highlight|emily-lauren-wong/875204}} | name= Emily Wong | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} <nowiki>}}</nowiki></code>
: <code><nowiki>{{</nowiki>Soccerway | {{Highlight|875204}} | Emily Wong | access-date= {{CURRENTMONTHNAME}} {{CURRENTDAY}}, {{CURRENTYEAR}} <nowiki>}}</nowiki></code>
; Output
: {{Soccerway | new_id= wong-emily/l8HTsA0Q | name= Emily Wong | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} }}
: {{Soccerway | id= emily-lauren-wong/875204 | name= Emily Wong | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} }}
: {{Soccerway | 875204 | Emily Wong | access-date= {{CURRENTMONTHNAME}} {{CURRENTDAY}}, {{CURRENTYEAR}} }}
; New ID at Soccerway.com
: <kbd>[https://www.soccerway.com/player/wong-emily/l8HTsA0Q/ https://www.'''soccerway'''.com/'''player'''/{{Highlight|wong-emily/l8HTsA0Q|lightgreen}}/]</kbd>
; Old ID at Soccerway.com (redirect to new ID)
: <kbd>[https://int.soccerway.com/players/emily-lauren-wong/875204/ https://int.soccerway.com/'''players'''/{{Highlight|emily-lauren-wong/875204}}/]</kbd> ([https://web.archive.org/web/20240916120214/https://int.soccerway.com/players/emily-lauren-wong/875204/ archive 2024-09-16])
: <kbd>[https://int.soccerway.com/players/-/875204/ https://int.soccerway.com/'''players'''/-/{{Highlight|875204}}/]</kbd>
=== Archived pages ===
; Usage in [[Javier Saviola]] with article name as link text
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | id= {{Highlight|javier-saviola/121|pink}} | archive= {{Highlight|20250220025537|lightblue}} | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} <nowiki>}}</nowiki></code>
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | {{Highlight|121|pink}} | archive= {{Highlight|20250220002921|lightblue}} <nowiki>}}</nowiki></code>
; Output
: {{{{BASEPAGENAME}} | id= javier-saviola/121 | name= Javier Saviola | archive= 20250220025537 | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} }}
: {{{{BASEPAGENAME}} | 121 | Javier Saviola | archive= 20250220002921 }}
; Archived URLs using old ID
: <kbd>[https://web.archive.org/web/20250220025537/https://int.soccerway.com/players/javier-saviola/121/ https://web.archive.org/web/{{Highlight|20250220025537|lightblue}}/https://int.soccerway.com/players/{{Highlight|javier-saviola/121|pink}}/]</kbd>
: <kbd>[https://web.archive.org/web/20250220002921/https://int.soccerway.com/players/-/121/ https://web.archive.org/web/{{Highlight|20250220002921|lightblue}}/https://int.soccerway.com/players/-/{{Highlight|121|pink}}/]</kbd>
=== No parameters and Wikidata property not defined ===
; Usage
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}}<nowiki>}}</nowiki></code>
; Output
: {{ {{BASEPAGENAME}} }}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "This template displays an external link to an association football (soccer) player's profile at Soccerway.com.",
"params": {
"new_id": {
"label": "New ID",
"description": "The ID portion of a new Soccerway player URL, such as https://www.soccerway.com/player/zver-mateja/p0DFdwlo/. This parameter is optional if the Old ID is used or if Wikidata property P2369 exists, but required if not.",
"example": "zver-mateja/p0DFdwlo",
"type": "string",
"required": false
},
"id": {
"label": "Old ID",
"aliases": ["1"],
"description": "The ID portion of an old Soccerway player URL, such as https://int.soccerway.com/players/mateja-zver/45569/ (which as of 2025 redirects to a new URL such as https://www.soccerway.com/player/zver-mateja/p0DFdwlo/). This parameter is optional if the New ID is used or if Wikidata property P2369 exists, but required if not.",
"default": "Wikidata property P2369",
"example": "mateja-zver/45569",
"type": "string",
"required": false
},
"name": {
"label": "Name",
"aliases": ["2"],
"description": "The link text, which should be the name of the player. This parameter is optional; it defaults to the Wikipedia article name, without any disambiguation such as \"(footballer)\" or \"(soccer)\".",
"default": "{{PAGENAMEBASE}}",
"example": "Mateja Zver",
"type": "string",
"required": false
},
"archive": {
"label": "Internet Archive date/time",
"description": "Number representing the date/time in an Internet Archive URL for the soccerway.com link. It causes the template to use an archived URL link starting with https://web.archive.org/web/{{{archive}}}/ and display \"(archived)\".",
"example": "20250220025537",
"type": "number",
"required": false
},
"access-date": {
"label": "Access Date",
"aliases": ["accessdate"],
"description": "The date when the Soccerway profile was last accessed. It allows the template to be used as a reference, rather than as an external link. This parameter is optional.",
"type": "date",
"required": false
}
},
"paramOrder": [
"new_id",
"id",
"name",
"archive",
"access-date"
]
}
</templatedata>
== Tracking categories ==
; new ID using {{para|new_id}} parameter
* {{clc|Soccerway template using new ID}} – {{#invoke:Math|precision_format|{{#expr:{{PAGESINCATEGORY:Soccerway template using new ID|R}}/{{#invoke:Transclusion count|fetch}}}}*100|1}}% of approximately {{formatnum:{{#invoke:Transclusion count|fetch}}}} total [[Help:Transclusion|transclusions]]
; ID not matching pattern or new ID without {{para|new_id}} parameter
* {{clc|Soccerway template with ID not matching pattern}}
; old ID (using {{para|id}} or unnamed first parameter) different from or not in Wikidata property P2369
: Only the number at the end of the template ID is compared with Wikidata
: mateja-zver/45569 → {{#invoke:String|match|s=mateja-zver/45569|pattern=%d+$|ignore_errors=true}}
: 45569 → {{#invoke:String|match|s=45569|pattern=%d+$|ignore_errors=true}}
* {{clc|Soccerway template with ID different from Wikidata}}
* {{clc|Soccerway template with ID not in Wikidata}}
; template missing ID
* {{clc|Soccerway template missing ID and not in Wikidata}}
== See also ==
; Other Soccerway templates
* [[Template:Soccerway coach]] for link to Soccerway.com coach page (archived link)
* [[Template:Soccerway referee]] for link to Soccerway.com referee page (archived link)
; Related templates
* [[Template:Flashscore]] for link to Flashscore.com player page (same ID as new Soccerway.com player page)
* [[Template:Scorebar]] for link to Scorebar.com player page (same ID number as old Soccerway.com player page)
; Association football external link templates which convert ID to number before Wikidata comparison
* {{braces|[[Template:BDFA#Tracking categories|BDFA]]}}
* {{braces|[[Template:BeSoccer#Tracking categories|BeSoccer]]}}
* {{braces|[[Template:ESPN FC#Tracking categories|ESPN FC]]}}
* {{braces|[[Template:FBref player#Tracking categories|FBref player]]}}
* {{braces|[[Template:FootballFacts.ru#Tracking categories|FootballFacts.ru]]}}
* {{braces|[[Template:NFT player#Tracking categories|NFT player]]}}
<includeonly>{{sandbox other||
<!-- Categories go here, and interwikis go in Wikidata -->
[[Category:Association football external link templates]]
[[Category:People and person external link templates]]
[[Category:External link templates with archive parameter]]
[[Category:External link templates with accessdate parameter]]
[[Category:External link templates using Wikidata]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
np92phci128no5rxuwzs02owxoa2t2h
74000
73999
2026-07-11T19:12:32Z
Robertsky
10424
1 versaun husi [[:en:Template:Soccerway/doc]]
73999
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
{{High-use}}
{{Template redirect|Soccerway player|Soccerway.com|Soccerway.com player}}
{{Tracks and uses Wikidata|P2369}}
{{Lua|Module:String|Module:EditAtWikidata|Module:WikidataCheck}}
'''{{NAMESPACE}}:{{BASEPAGENAME}}''' displays an external link to an [[association football]] ([[soccer]]) player's profile at [https://int.soccerway.com/ Soccerway.com].
{{ombox|text=In 2025, Soccerway.com switched to the same player ID used at Flashscore.com; see [[Template:Flashscore]] and {{Wikidata property link|P8259}}. Many old Soccerway player IDs redirect to the new ID. The {{para|archive}} parameter may be used to display an archived copy of the original from the [[Internet Archive]].}}
== Usage ==
Omit <var>ID</var> to use the Wikidata property. Omit <var>NAME</var> to use Wikipedia article name as [[link text]].
; External link
: <code><nowiki>* {{</nowiki>Soccerway|new_id=<var>NEWID</var>|name=<var>NAME</var>}}</code>
: <code><nowiki>* {{</nowiki>Soccerway|id=<var>ID</var>|name=<var>NAME</var>}}</code>
: <code><nowiki>* {{</nowiki>Soccerway|<var>ID</var>|<var>NAME</var>}}</code>
; Citation with access date
: <code><nowiki>{{</nowiki>Soccerway|new_id=<var>NEWID</var>|name=<var>NAME</var>|access-date=<var>DATE</var>}}</code>
: <code><nowiki>{{</nowiki>Soccerway|id=<var>ID</var>|name=<var>NAME</var>|access-date=<var>DATE</var>}}</code>
: <code><nowiki>{{</nowiki>Soccerway|<var>ID</var>|<var>NAME</var>|access-date=<var>DATE</var>}}</code>
; Archived external link
: <code><nowiki>{{</nowiki>Soccerway|id=<var>ID</var>|name=<var>NAME</var>|archive=<var>NUMBER</var>}}</code>
: <code><nowiki>{{</nowiki>Soccerway|<var>ID</var>|<var>NAME</var>|archive=<var>NUMBER</var>}}</code>
; Archived citation with access date
: <code><nowiki>{{</nowiki>Soccerway|id=<var>ID</var>|name=<var>NAME</var>|archive=<var>NUMBER</var>|access-date=<var>DATE</var>}}</code>
: <code><nowiki>{{</nowiki>Soccerway|<var>ID</var>|<var>NAME</var>|archive=<var>NUMBER</var>|access-date=<var>DATE</var>}}</code>
== Examples ==
=== External links ===
; Usage in [[Mateja Zver]] with article name as link text
: <code><nowiki>* {{</nowiki>Soccerway|new_id={{Highlight|zver-mateja/p0DFdwlo|lightgreen}}<nowiki>}}</nowiki></code>
: <code><nowiki>* {{</nowiki>Soccerway|new_id={{Highlight|zver-mateja/p0DFdwlo|lightgreen}}|id={{Highlight|mateja-zver/45569}}|archive=20240605050544<nowiki>}}</nowiki></code>
: <code><nowiki>* {{</nowiki>Soccerway|id={{Highlight|mateja-zver/45569}}|archive=20240605050544<nowiki>}}</nowiki></code>
: <code><nowiki>* {{</nowiki>Soccerway|{{Highlight|45569}}<nowiki>}}</nowiki></code>
; Output
:* {{Soccerway|new_id=zver-mateja/p0DFdwlo|name=Mateja Zver}}
:* {{Soccerway|new_id=zver-mateja/p0DFdwlo|name=Mateja Zver|id=mateja-zver/45569|archive=20240605050544}}
:* {{Soccerway|id=mateja-zver/45569|name=Mateja Zver|archive=20240605050544}}
:* {{Soccerway|45569|Mateja Zver}}
; New ID at Soccerway.com
: <kbd>[https://www.soccerway.com/player/zver-mateja/p0DFdwlo/ https://www.'''soccerway'''.com/'''player'''/{{Highlight|zver-mateja/p0DFdwlo|lightgreen}}/]</kbd>
; Old ID at Soccerway.com (redirect to new ID)
: <kbd>[https://int.soccerway.com/players/mateja-zver/45569/ https://int.soccerway.com/'''players'''/{{Highlight|mateja-zver/45569}}/]</kbd> ([https://web.archive.org/web/20240605050544/https://int.soccerway.com/players/mateja-zver/45569/ archive 2024-06-05])
: <kbd>[https://int.soccerway.com/players/-/45569/ https://int.soccerway.com/'''players'''/-/{{Highlight|45569}}/]</kbd> ([https://web.archive.org/web/20250222130153/https://int.soccerway.com/players/-/45569/ archive 2025-02-22])
=== Citation with access date ===
; Usage with parameter as link text
: <code><nowiki>{{</nowiki>Soccerway | new_id= {{Highlight|wong-emily/l8HTsA0Q|lightgreen}} | name= Emily Wong | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} <nowiki>}}</nowiki></code>
: <code><nowiki>{{</nowiki>Soccerway | id= {{Highlight|emily-lauren-wong/875204}} | name= Emily Wong | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} <nowiki>}}</nowiki></code>
: <code><nowiki>{{</nowiki>Soccerway | {{Highlight|875204}} | Emily Wong | access-date= {{CURRENTMONTHNAME}} {{CURRENTDAY}}, {{CURRENTYEAR}} <nowiki>}}</nowiki></code>
; Output
: {{Soccerway | new_id= wong-emily/l8HTsA0Q | name= Emily Wong | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} }}
: {{Soccerway | id= emily-lauren-wong/875204 | name= Emily Wong | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} }}
: {{Soccerway | 875204 | Emily Wong | access-date= {{CURRENTMONTHNAME}} {{CURRENTDAY}}, {{CURRENTYEAR}} }}
; New ID at Soccerway.com
: <kbd>[https://www.soccerway.com/player/wong-emily/l8HTsA0Q/ https://www.'''soccerway'''.com/'''player'''/{{Highlight|wong-emily/l8HTsA0Q|lightgreen}}/]</kbd>
; Old ID at Soccerway.com (redirect to new ID)
: <kbd>[https://int.soccerway.com/players/emily-lauren-wong/875204/ https://int.soccerway.com/'''players'''/{{Highlight|emily-lauren-wong/875204}}/]</kbd> ([https://web.archive.org/web/20240916120214/https://int.soccerway.com/players/emily-lauren-wong/875204/ archive 2024-09-16])
: <kbd>[https://int.soccerway.com/players/-/875204/ https://int.soccerway.com/'''players'''/-/{{Highlight|875204}}/]</kbd>
=== Archived pages ===
; Usage in [[Javier Saviola]] with article name as link text
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | id= {{Highlight|javier-saviola/121|pink}} | archive= {{Highlight|20250220025537|lightblue}} | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} <nowiki>}}</nowiki></code>
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | {{Highlight|121|pink}} | archive= {{Highlight|20250220002921|lightblue}} <nowiki>}}</nowiki></code>
; Output
: {{{{BASEPAGENAME}} | id= javier-saviola/121 | name= Javier Saviola | archive= 20250220025537 | access-date= {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} }}
: {{{{BASEPAGENAME}} | 121 | Javier Saviola | archive= 20250220002921 }}
; Archived URLs using old ID
: <kbd>[https://web.archive.org/web/20250220025537/https://int.soccerway.com/players/javier-saviola/121/ https://web.archive.org/web/{{Highlight|20250220025537|lightblue}}/https://int.soccerway.com/players/{{Highlight|javier-saviola/121|pink}}/]</kbd>
: <kbd>[https://web.archive.org/web/20250220002921/https://int.soccerway.com/players/-/121/ https://web.archive.org/web/{{Highlight|20250220002921|lightblue}}/https://int.soccerway.com/players/-/{{Highlight|121|pink}}/]</kbd>
=== No parameters and Wikidata property not defined ===
; Usage
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}}<nowiki>}}</nowiki></code>
; Output
: {{ {{BASEPAGENAME}} }}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "This template displays an external link to an association football (soccer) player's profile at Soccerway.com.",
"params": {
"new_id": {
"label": "New ID",
"description": "The ID portion of a new Soccerway player URL, such as https://www.soccerway.com/player/zver-mateja/p0DFdwlo/. This parameter is optional if the Old ID is used or if Wikidata property P2369 exists, but required if not.",
"example": "zver-mateja/p0DFdwlo",
"type": "string",
"required": false
},
"id": {
"label": "Old ID",
"aliases": ["1"],
"description": "The ID portion of an old Soccerway player URL, such as https://int.soccerway.com/players/mateja-zver/45569/ (which as of 2025 redirects to a new URL such as https://www.soccerway.com/player/zver-mateja/p0DFdwlo/). This parameter is optional if the New ID is used or if Wikidata property P2369 exists, but required if not.",
"default": "Wikidata property P2369",
"example": "mateja-zver/45569",
"type": "string",
"required": false
},
"name": {
"label": "Name",
"aliases": ["2"],
"description": "The link text, which should be the name of the player. This parameter is optional; it defaults to the Wikipedia article name, without any disambiguation such as \"(footballer)\" or \"(soccer)\".",
"default": "{{PAGENAMEBASE}}",
"example": "Mateja Zver",
"type": "string",
"required": false
},
"archive": {
"label": "Internet Archive date/time",
"description": "Number representing the date/time in an Internet Archive URL for the soccerway.com link. It causes the template to use an archived URL link starting with https://web.archive.org/web/{{{archive}}}/ and display \"(archived)\".",
"example": "20250220025537",
"type": "number",
"required": false
},
"access-date": {
"label": "Access Date",
"aliases": ["accessdate"],
"description": "The date when the Soccerway profile was last accessed. It allows the template to be used as a reference, rather than as an external link. This parameter is optional.",
"type": "date",
"required": false
}
},
"paramOrder": [
"new_id",
"id",
"name",
"archive",
"access-date"
]
}
</templatedata>
== Tracking categories ==
; new ID using {{para|new_id}} parameter
* {{clc|Soccerway template using new ID}} – {{#invoke:Math|precision_format|{{#expr:{{PAGESINCATEGORY:Soccerway template using new ID|R}}/{{#invoke:Transclusion count|fetch}}}}*100|1}}% of approximately {{formatnum:{{#invoke:Transclusion count|fetch}}}} total [[Help:Transclusion|transclusions]]
; ID not matching pattern or new ID without {{para|new_id}} parameter
* {{clc|Soccerway template with ID not matching pattern}}
; old ID (using {{para|id}} or unnamed first parameter) different from or not in Wikidata property P2369
: Only the number at the end of the template ID is compared with Wikidata
: mateja-zver/45569 → {{#invoke:String|match|s=mateja-zver/45569|pattern=%d+$|ignore_errors=true}}
: 45569 → {{#invoke:String|match|s=45569|pattern=%d+$|ignore_errors=true}}
* {{clc|Soccerway template with ID different from Wikidata}}
* {{clc|Soccerway template with ID not in Wikidata}}
; template missing ID
* {{clc|Soccerway template missing ID and not in Wikidata}}
== See also ==
; Other Soccerway templates
* [[Template:Soccerway coach]] for link to Soccerway.com coach page (archived link)
* [[Template:Soccerway referee]] for link to Soccerway.com referee page (archived link)
; Related templates
* [[Template:Flashscore]] for link to Flashscore.com player page (same ID as new Soccerway.com player page)
* [[Template:Scorebar]] for link to Scorebar.com player page (same ID number as old Soccerway.com player page)
; Association football external link templates which convert ID to number before Wikidata comparison
* {{braces|[[Template:BDFA#Tracking categories|BDFA]]}}
* {{braces|[[Template:BeSoccer#Tracking categories|BeSoccer]]}}
* {{braces|[[Template:ESPN FC#Tracking categories|ESPN FC]]}}
* {{braces|[[Template:FBref player#Tracking categories|FBref player]]}}
* {{braces|[[Template:FootballFacts.ru#Tracking categories|FootballFacts.ru]]}}
* {{braces|[[Template:NFT player#Tracking categories|NFT player]]}}
<includeonly>{{sandbox other||
<!-- Categories go here, and interwikis go in Wikidata -->
[[Category:Association football external link templates]]
[[Category:People and person external link templates]]
[[Category:External link templates with archive parameter]]
[[Category:External link templates with accessdate parameter]]
[[Category:External link templates using Wikidata]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
np92phci128no5rxuwzs02owxoa2t2h
Template:Tracks and uses Wikidata
10
8672
74001
2025-01-24T02:22:18Z
Shkuru Afshar
11682
74001
wikitext
text/x-wiki
<onlyinclude><includeonly>{{sister project
|position = {{{position|}}}
|image = [[File:Wikidata-logo-without-paddings.svg|30px|class=noviewer|alt=|link=]]
|text = This {{module other|module|template}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] and uses<!--
--> {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§ {{{section}}}]] for details.<!--
--> | [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|usesProperty}} }}
}}{{#switch:{{SUBPAGENAME}}|sandbox|testcases|doc=<!--nocat-->|#default={{#ifeq:{{PAGENAME}}|Uses Wikidata|<!--
-->|{{module other|[[Category:Modules using data from Wikidata]] [[Category:Modules tracking Wikidata]]<!--
-->|{{template other|[[Category:Templates using data from Wikidata]] [[Category:Templates tracking Wikidata]]}} }}
}}
}}</includeonly></onlyinclude>
{{documentation}}<!--Please add any categories to the /doc page -->
6uvnokzdq5e1ms430yp6aot8x2we1ne
74002
74001
2026-07-11T19:12:32Z
Robertsky
10424
1 versaun husi [[:en:Template:Tracks_and_uses_Wikidata]]
74001
wikitext
text/x-wiki
<onlyinclude><includeonly>{{sister project
|position = {{{position|}}}
|image = [[File:Wikidata-logo-without-paddings.svg|30px|class=noviewer|alt=|link=]]
|text = This {{module other|module|template}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] and uses<!--
--> {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§ {{{section}}}]] for details.<!--
--> | [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|usesProperty}} }}
}}{{#switch:{{SUBPAGENAME}}|sandbox|testcases|doc=<!--nocat-->|#default={{#ifeq:{{PAGENAME}}|Uses Wikidata|<!--
-->|{{module other|[[Category:Modules using data from Wikidata]] [[Category:Modules tracking Wikidata]]<!--
-->|{{template other|[[Category:Templates using data from Wikidata]] [[Category:Templates tracking Wikidata]]}} }}
}}
}}</includeonly></onlyinclude>
{{documentation}}<!--Please add any categories to the /doc page -->
6uvnokzdq5e1ms430yp6aot8x2we1ne
Template:Edit at Wikidata
10
8673
74003
2026-01-22T14:02:30Z
MSGJ
11655
MSGJ moved page [[Template:EditAtWikidata]] to [[Template:Edit at Wikidata]]: plain English
74003
wikitext
text/x-wiki
{{#invoke:EditAtWikidata |showMessage |qid={{{qid|}}} |pid={{{pid|}}} |nbsp={{{nbsp|}}} |{{{1|}}} }}<noinclude>
{{documentation}}
</noinclude>
k3dnbwgfi8ka45sgpcor4r8i5d2lmjb
74004
74003
2026-07-11T19:12:32Z
Robertsky
10424
1 versaun husi [[:en:Template:Edit_at_Wikidata]]
74003
wikitext
text/x-wiki
{{#invoke:EditAtWikidata |showMessage |qid={{{qid|}}} |pid={{{pid|}}} |nbsp={{{nbsp|}}} |{{{1|}}} }}<noinclude>
{{documentation}}
</noinclude>
k3dnbwgfi8ka45sgpcor4r8i5d2lmjb
Template:Updated
10
8674
74005
2024-11-04T11:53:24Z
Spike 'em
11771
Reverted [[WP:AGF|good faith]] edits by [[Special:Contributions/Pppery|Pppery]] ([[User talk:Pppery|talk]]): Per talk page : revert until assessment of reference usage done.
74005
wikitext
text/x-wiki
: ''As of {{#if:{{{1|}}}|{{{1}}}|<noinclude>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}</noinclude><includeonly>[[Category:Pages using updated template with missing date]]</includeonly>}}{{#if:{{{2|}}}|{{{2}}}}}''{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using updated template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Updated]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 }}<noinclude>
{{documentation}}
</noinclude>
ps7j3vwprbetaqd62lx5qaayeckrbqx
74006
74005
2026-07-11T19:13:01Z
Robertsky
10424
1 versaun husi [[:en:Template:Updated]]
74005
wikitext
text/x-wiki
: ''As of {{#if:{{{1|}}}|{{{1}}}|<noinclude>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}</noinclude><includeonly>[[Category:Pages using updated template with missing date]]</includeonly>}}{{#if:{{{2|}}}|{{{2}}}}}''{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using updated template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Updated]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 }}<noinclude>
{{documentation}}
</noinclude>
ps7j3vwprbetaqd62lx5qaayeckrbqx
Módulo:Transclusion count/data/U
828
8675
74007
2026-07-05T05:15:23Z
Ahechtbot
11697
[[Wikipedia:BOT|Bot]]: Updated page.
74007
Scribunto
text/plain
return {
["U"] = 278000,
["U.S._Coast_Guard_Cutter"] = 2800,
["U.S._House_of_Representatives_abbreviation"] = 17000,
["UAF_player"] = 2700,
["UCI_team_code"] = 14000,
["UEFA_player"] = 5900,
["UK"] = 4300,
["UK-LEG"] = 2800,
["UKR"] = 15000,
["UK_legislation"] = 3500,
["URL"] = 433000,
["URL2"] = 21000,
["URS"] = 7300,
["URY"] = 2400,
["US$"] = 7400,
["US-railway-routemap"] = 2100,
["US20_Invite"] = 3700,
["USA"] = 45000,
["USBill"] = 2500,
["USCGC"] = 2800,
["USCongRep-end"] = 5400,
["USCongRep-row"] = 5900,
["USCongRep-start"] = 5400,
["USCongressOrdinal"] = 6400,
["USCongressOrdinal/code"] = 6400,
["USD"] = 6400,
["USGS_gazetteer"] = 5600,
["USGovernment"] = 2100,
["USNS"] = 3500,
["USN_flag"] = 10000,
["USPL"] = 2300,
["USRaceRating"] = 2900,
["USS"] = 39000,
["USSR"] = 2200,
["USStat"] = 2500,
["US_Census_population"] = 41000,
["US_Census_population/styles.css"] = 41000,
["US_House_succession_box"] = 8200,
["US_State_Abbrev"] = 18000,
["US_county_navigation_box"] = 99000,
["US_dollar"] = 14000,
["US_government_sources"] = 2700,
["US_patent"] = 2900,
["US_political_race_rating"] = 2900,
["US_state_abbreviation_to_name"] = 18000,
["US_state_disestablishment_category"] = 5200,
["US_state_disestablishment_category/core"] = 5200,
["US_state_establishment_category"] = 10000,
["US_state_establishment_category/core"] = 10000,
["US_state_navigation_box"] = 16000,
["US_state_sports_year_category"] = 6600,
["US_state_sports_year_category/core"] = 6600,
["UTRS"] = 8800,
["UTRS-unblock-user"] = 4900,
["UTZ"] = 4300,
["UZB"] = 3000,
["Ubl"] = 264000,
["Ubli"] = 5900,
["Ublist"] = 7200,
["Ucat"] = 42000,
["Uir"] = 32000,
["Ul"] = 5900,
["Ulist"] = 7800,
["Umbox"] = 80000,
["Umbox/styles.css"] = 80000,
["Unassessed-Class"] = 12000,
["Unblock-auto_reviewed"] = 5500,
["Unblock-spamun_reviewed"] = 5300,
["Unblock-un_reviewed"] = 21000,
["Unblock_reviewed"] = 81000,
["Unblock_wizard_link"] = 5300,
["Unbulleted_indent_list"] = 7800,
["Unbulleted_list"] = 737000,
["Unbulleted_list_citebundle"] = 2500,
["Under_construction"] = 2600,
["Underline"] = 4800,
["Undisclosed_paid"] = 2900,
["Unindent"] = 4600,
["United_States_Code"] = 3700,
["United_States_Naval_Ship"] = 3500,
["United_States_Ship"] = 39000,
["United_States_presidential_election_results_table_footer"] = 3300,
["United_States_presidential_election_results_table_header"] = 3900,
["United_States_presidential_election_results_table_row"] = 3900,
["United_States_topic"] = 6000,
["Unknown"] = 3500,
["Unknown-Class"] = 13000,
["Unlikely"] = 2300,
["Unlink"] = 22000,
["Unreferenced"] = 94000,
["Unreferenced_section"] = 42000,
["Unrelated"] = 6200,
["Unreliable_source?"] = 14000,
["Unreliable_sources"] = 10000,
["Unsourced"] = 2500,
["Unsourced_section"] = 2400,
["Update"] = 36000,
["Update_after"] = 4200,
["Update_inline"] = 9300,
["Update_inline_span"] = 2500,
["Update_section"] = 5300,
["Update_span"] = 2600,
["Updated"] = 71000,
["Uploader_information"] = 155000,
["Url"] = 62000,
["Use_American_English"] = 587000,
["Use_Australian_English"] = 141000,
["Use_British_English"] = 427000,
["Use_Canadian_English"] = 60000,
["Use_Hiberno-English"] = 35000,
["Use_Hong_Kong_English"] = 4900,
["Use_Indian_English"] = 173000,
["Use_Irish_English"] = 11000,
["Use_New_Zealand_English"] = 39000,
["Use_Nigerian_English"] = 8900,
["Use_Oxford_spelling"] = 4900,
["Use_Pakistani_English"] = 9800,
["Use_Philippine_English"] = 11000,
["Use_South_African_English"] = 12000,
["Use_dmy_dates"] = 1970000,
["Use_list-defined_references"] = 6400,
["Use_mdy_dates"] = 1090000,
["Use_shortened_footnotes"] = 2900,
["User"] = 717000,
["User-generated_source"] = 4700,
["User-multi"] = 395000,
["User0"] = 42000,
["User19"] = 11000,
["User2"] = 3900,
["User21"] = 60000,
["User3"] = 284000,
["User4"] = 4000,
["User5"] = 7000,
["UserSummary"] = 125000,
["User_American"] = 2400,
["User_COI"] = 39000,
["User_Copy_Edit"] = 2600,
["User_Firefox"] = 6100,
["User_HTML"] = 3000,
["User_OS:Dos/style.css"] = 2200,
["User_QAIbox"] = 7200,
["User_QAIbox/auto"] = 4900,
["User_Translator"] = 2500,
["User_UN"] = 2400,
["User_WP"] = 20000,
["User_WP/switch"] = 20000,
["User_Wikipedia"] = 2700,
["User_Wikipedia/RC_Patrol"] = 3900,
["User_Wikipedia/Rollback"] = 2400,
["User_Wikipedia/WikiGnome"] = 2900,
["User_Wikipedia_reference"] = 2800,
["User_Wikipedian_For"] = 11000,
["User_Wikipedian_for"] = 17000,
["User_Wikipediholic"] = 2500,
["User_category_header"] = 2200,
["User_committed_identity"] = 2400,
["User_contrib"] = 5300,
["User_current_age"] = 2500,
["User_current_age/days"] = 2500,
["User_current_age/months"] = 2500,
["User_current_age/years"] = 2500,
["User_de"] = 5900,
["User_de-1"] = 8100,
["User_de-2"] = 4700,
["User_de-3"] = 2400,
["User_en"] = 42000,
["User_en-1"] = 2500,
["User_en-2"] = 7900,
["User_en-3"] = 16000,
["User_en-4"] = 9900,
["User_en-5"] = 7200,
["User_en-N"] = 5400,
["User_en-us"] = 2200,
["User_es"] = 4000,
["User_es-1"] = 7600,
["User_es-2"] = 5100,
["User_es-3"] = 2800,
["User_fr"] = 4300,
["User_fr-1"] = 9500,
["User_fr-2"] = 6800,
["User_fr-3"] = 4000,
["User_html"] = 2700,
["User_in_region"] = 32000,
["User_in_the_United_Kingdom"] = 2300,
["User_in_the_United_States"] = 5000,
["User_infobox"] = 3100,
["User_instrument"] = 2900,
["User_invitation"] = 5900,
["User_iso15924"] = 2600,
["User_iso15924/level-text"] = 3100,
["User_iso15924/user_script_catlink"] = 3000,
["User_it"] = 2000,
["User_it-1"] = 2900,
["User_ja-1"] = 3200,
["User_la-1"] = 2800,
["User_link"] = 284000,
["User_lives_in"] = 7200,
["User_male"] = 2800,
["User_oops"] = 2500,
["User_other"] = 619000,
["User_page"] = 47000,
["User_precious"] = 2100,
["User_proud"] = 5700,
["User_rights"] = 5700,
["User_ru"] = 3200,
["User_ru-1"] = 2200,
["User_sandbox"] = 236000,
["User_summary"] = 125000,
["User_talk_other"] = 82000,
["User_time_zone"] = 4300,
["User_visited"] = 6700,
["User_wikipedia"] = 2200,
["User_wikipedia/RC_Patrol"] = 3500,
["User_wikipedia/WikiGnome"] = 2900,
["User_wishes_to_visit"] = 6200,
["User_x"] = 2100,
["User_zh"] = 2500,
["Userbox"] = 342000,
["Userbox-2"] = 37000,
["Userbox-level"] = 110000,
["Userbox-r"] = 6800,
["Userbox/styles.css"] = 349000,
["UserboxCOI"] = 38000,
["Userbox_table_bottom"] = 11000,
["Userbox_table_category"] = 2400,
["Userbox_table_top"] = 11000,
["Userbox_table_userbox"] = 11000,
["Userboxbottom"] = 56000,
["Userboxtop"] = 62000,
["Usercheck-short"] = 3900,
["Userlinks"] = 35000,
["Userpage"] = 31000,
["Userpage_blanked"] = 11000,
["Userspace_draft"] = 37000,
["Userspace_file"] = 2200,
["Usertalk_other"] = 2300,
["Uses_TemplateStyles"] = 2400,
["Usgs-gazetteer"] = 5600,
["Ushr"] = 17000,
["Ussc"] = 6100,
["Usurped"] = 64000,
["Utrs"] = 5300,
["Uwl"] = 5300,
["Module:URL"] = 671000,
["Module:Unicode_data"] = 1710000,
["Module:Unicode_data/scripts"] = 396000,
["Module:Unstrip"] = 139000,
["Module:Unsubst"] = 14600000,
["Module:Unsubst-infobox"] = 207000,
["Module:Urldecode"] = 9400,
["Module:User"] = 717000,
["Module:User:AnomieBOT/Auto-G8"] = 516000,
["Module:UserLinks"] = 1100000,
["Module:UserLinks/config"] = 1100000,
["Module:UserLinks/extra"] = 23000,
["Module:UserLinks/shared"] = 1100000,
["Module:User_contrib"] = 5300,
["Module:Userbox"] = 349000,
["Module:Uses_TemplateStyles"] = 2400,
["Module:Uses_TemplateStyles/config"] = 2400,
["Module:Uses_Wikidata"] = 3600,
["Module:Ustring"] = 813000,
}
owlcybuec4g13p5dy36nmef9ey2gyxb
74008
74007
2026-07-11T19:13:01Z
Robertsky
10424
1 versaun husi [[:en:Module:Transclusion_count/data/U]]
74007
Scribunto
text/plain
return {
["U"] = 278000,
["U.S._Coast_Guard_Cutter"] = 2800,
["U.S._House_of_Representatives_abbreviation"] = 17000,
["UAF_player"] = 2700,
["UCI_team_code"] = 14000,
["UEFA_player"] = 5900,
["UK"] = 4300,
["UK-LEG"] = 2800,
["UKR"] = 15000,
["UK_legislation"] = 3500,
["URL"] = 433000,
["URL2"] = 21000,
["URS"] = 7300,
["URY"] = 2400,
["US$"] = 7400,
["US-railway-routemap"] = 2100,
["US20_Invite"] = 3700,
["USA"] = 45000,
["USBill"] = 2500,
["USCGC"] = 2800,
["USCongRep-end"] = 5400,
["USCongRep-row"] = 5900,
["USCongRep-start"] = 5400,
["USCongressOrdinal"] = 6400,
["USCongressOrdinal/code"] = 6400,
["USD"] = 6400,
["USGS_gazetteer"] = 5600,
["USGovernment"] = 2100,
["USNS"] = 3500,
["USN_flag"] = 10000,
["USPL"] = 2300,
["USRaceRating"] = 2900,
["USS"] = 39000,
["USSR"] = 2200,
["USStat"] = 2500,
["US_Census_population"] = 41000,
["US_Census_population/styles.css"] = 41000,
["US_House_succession_box"] = 8200,
["US_State_Abbrev"] = 18000,
["US_county_navigation_box"] = 99000,
["US_dollar"] = 14000,
["US_government_sources"] = 2700,
["US_patent"] = 2900,
["US_political_race_rating"] = 2900,
["US_state_abbreviation_to_name"] = 18000,
["US_state_disestablishment_category"] = 5200,
["US_state_disestablishment_category/core"] = 5200,
["US_state_establishment_category"] = 10000,
["US_state_establishment_category/core"] = 10000,
["US_state_navigation_box"] = 16000,
["US_state_sports_year_category"] = 6600,
["US_state_sports_year_category/core"] = 6600,
["UTRS"] = 8800,
["UTRS-unblock-user"] = 4900,
["UTZ"] = 4300,
["UZB"] = 3000,
["Ubl"] = 264000,
["Ubli"] = 5900,
["Ublist"] = 7200,
["Ucat"] = 42000,
["Uir"] = 32000,
["Ul"] = 5900,
["Ulist"] = 7800,
["Umbox"] = 80000,
["Umbox/styles.css"] = 80000,
["Unassessed-Class"] = 12000,
["Unblock-auto_reviewed"] = 5500,
["Unblock-spamun_reviewed"] = 5300,
["Unblock-un_reviewed"] = 21000,
["Unblock_reviewed"] = 81000,
["Unblock_wizard_link"] = 5300,
["Unbulleted_indent_list"] = 7800,
["Unbulleted_list"] = 737000,
["Unbulleted_list_citebundle"] = 2500,
["Under_construction"] = 2600,
["Underline"] = 4800,
["Undisclosed_paid"] = 2900,
["Unindent"] = 4600,
["United_States_Code"] = 3700,
["United_States_Naval_Ship"] = 3500,
["United_States_Ship"] = 39000,
["United_States_presidential_election_results_table_footer"] = 3300,
["United_States_presidential_election_results_table_header"] = 3900,
["United_States_presidential_election_results_table_row"] = 3900,
["United_States_topic"] = 6000,
["Unknown"] = 3500,
["Unknown-Class"] = 13000,
["Unlikely"] = 2300,
["Unlink"] = 22000,
["Unreferenced"] = 94000,
["Unreferenced_section"] = 42000,
["Unrelated"] = 6200,
["Unreliable_source?"] = 14000,
["Unreliable_sources"] = 10000,
["Unsourced"] = 2500,
["Unsourced_section"] = 2400,
["Update"] = 36000,
["Update_after"] = 4200,
["Update_inline"] = 9300,
["Update_inline_span"] = 2500,
["Update_section"] = 5300,
["Update_span"] = 2600,
["Updated"] = 71000,
["Uploader_information"] = 155000,
["Url"] = 62000,
["Use_American_English"] = 587000,
["Use_Australian_English"] = 141000,
["Use_British_English"] = 427000,
["Use_Canadian_English"] = 60000,
["Use_Hiberno-English"] = 35000,
["Use_Hong_Kong_English"] = 4900,
["Use_Indian_English"] = 173000,
["Use_Irish_English"] = 11000,
["Use_New_Zealand_English"] = 39000,
["Use_Nigerian_English"] = 8900,
["Use_Oxford_spelling"] = 4900,
["Use_Pakistani_English"] = 9800,
["Use_Philippine_English"] = 11000,
["Use_South_African_English"] = 12000,
["Use_dmy_dates"] = 1970000,
["Use_list-defined_references"] = 6400,
["Use_mdy_dates"] = 1090000,
["Use_shortened_footnotes"] = 2900,
["User"] = 717000,
["User-generated_source"] = 4700,
["User-multi"] = 395000,
["User0"] = 42000,
["User19"] = 11000,
["User2"] = 3900,
["User21"] = 60000,
["User3"] = 284000,
["User4"] = 4000,
["User5"] = 7000,
["UserSummary"] = 125000,
["User_American"] = 2400,
["User_COI"] = 39000,
["User_Copy_Edit"] = 2600,
["User_Firefox"] = 6100,
["User_HTML"] = 3000,
["User_OS:Dos/style.css"] = 2200,
["User_QAIbox"] = 7200,
["User_QAIbox/auto"] = 4900,
["User_Translator"] = 2500,
["User_UN"] = 2400,
["User_WP"] = 20000,
["User_WP/switch"] = 20000,
["User_Wikipedia"] = 2700,
["User_Wikipedia/RC_Patrol"] = 3900,
["User_Wikipedia/Rollback"] = 2400,
["User_Wikipedia/WikiGnome"] = 2900,
["User_Wikipedia_reference"] = 2800,
["User_Wikipedian_For"] = 11000,
["User_Wikipedian_for"] = 17000,
["User_Wikipediholic"] = 2500,
["User_category_header"] = 2200,
["User_committed_identity"] = 2400,
["User_contrib"] = 5300,
["User_current_age"] = 2500,
["User_current_age/days"] = 2500,
["User_current_age/months"] = 2500,
["User_current_age/years"] = 2500,
["User_de"] = 5900,
["User_de-1"] = 8100,
["User_de-2"] = 4700,
["User_de-3"] = 2400,
["User_en"] = 42000,
["User_en-1"] = 2500,
["User_en-2"] = 7900,
["User_en-3"] = 16000,
["User_en-4"] = 9900,
["User_en-5"] = 7200,
["User_en-N"] = 5400,
["User_en-us"] = 2200,
["User_es"] = 4000,
["User_es-1"] = 7600,
["User_es-2"] = 5100,
["User_es-3"] = 2800,
["User_fr"] = 4300,
["User_fr-1"] = 9500,
["User_fr-2"] = 6800,
["User_fr-3"] = 4000,
["User_html"] = 2700,
["User_in_region"] = 32000,
["User_in_the_United_Kingdom"] = 2300,
["User_in_the_United_States"] = 5000,
["User_infobox"] = 3100,
["User_instrument"] = 2900,
["User_invitation"] = 5900,
["User_iso15924"] = 2600,
["User_iso15924/level-text"] = 3100,
["User_iso15924/user_script_catlink"] = 3000,
["User_it"] = 2000,
["User_it-1"] = 2900,
["User_ja-1"] = 3200,
["User_la-1"] = 2800,
["User_link"] = 284000,
["User_lives_in"] = 7200,
["User_male"] = 2800,
["User_oops"] = 2500,
["User_other"] = 619000,
["User_page"] = 47000,
["User_precious"] = 2100,
["User_proud"] = 5700,
["User_rights"] = 5700,
["User_ru"] = 3200,
["User_ru-1"] = 2200,
["User_sandbox"] = 236000,
["User_summary"] = 125000,
["User_talk_other"] = 82000,
["User_time_zone"] = 4300,
["User_visited"] = 6700,
["User_wikipedia"] = 2200,
["User_wikipedia/RC_Patrol"] = 3500,
["User_wikipedia/WikiGnome"] = 2900,
["User_wishes_to_visit"] = 6200,
["User_x"] = 2100,
["User_zh"] = 2500,
["Userbox"] = 342000,
["Userbox-2"] = 37000,
["Userbox-level"] = 110000,
["Userbox-r"] = 6800,
["Userbox/styles.css"] = 349000,
["UserboxCOI"] = 38000,
["Userbox_table_bottom"] = 11000,
["Userbox_table_category"] = 2400,
["Userbox_table_top"] = 11000,
["Userbox_table_userbox"] = 11000,
["Userboxbottom"] = 56000,
["Userboxtop"] = 62000,
["Usercheck-short"] = 3900,
["Userlinks"] = 35000,
["Userpage"] = 31000,
["Userpage_blanked"] = 11000,
["Userspace_draft"] = 37000,
["Userspace_file"] = 2200,
["Usertalk_other"] = 2300,
["Uses_TemplateStyles"] = 2400,
["Usgs-gazetteer"] = 5600,
["Ushr"] = 17000,
["Ussc"] = 6100,
["Usurped"] = 64000,
["Utrs"] = 5300,
["Uwl"] = 5300,
["Module:URL"] = 671000,
["Module:Unicode_data"] = 1710000,
["Module:Unicode_data/scripts"] = 396000,
["Module:Unstrip"] = 139000,
["Module:Unsubst"] = 14600000,
["Module:Unsubst-infobox"] = 207000,
["Module:Urldecode"] = 9400,
["Module:User"] = 717000,
["Module:User:AnomieBOT/Auto-G8"] = 516000,
["Module:UserLinks"] = 1100000,
["Module:UserLinks/config"] = 1100000,
["Module:UserLinks/extra"] = 23000,
["Module:UserLinks/shared"] = 1100000,
["Module:User_contrib"] = 5300,
["Module:Userbox"] = 349000,
["Module:Uses_TemplateStyles"] = 2400,
["Module:Uses_TemplateStyles/config"] = 2400,
["Module:Uses_Wikidata"] = 3600,
["Module:Ustring"] = 813000,
}
owlcybuec4g13p5dy36nmef9ey2gyxb
Template:Updated/doc
10
8676
74009
2026-06-18T19:26:29Z
Uzume
1172
[[Module:Check for unknown parameters]]
74009
wikitext
text/x-wiki
{{Documentation subpage}}
{{high use}}
{{lua|Module:Check for unknown parameters}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
This template should be used as a [[WP:HAT|hatnote]] for sections in articles which may require frequent updating. See [[Wikipedia:As of]] for details on why this may be useful.
===Usage===
{{Tlx|Updated|date|<nowiki><ref>reference</ref></nowiki>}}
If the required <var>date</var> is omitted, a hidden tracking category will appear on the page. To remove the hidden category, provide the date on which the page or section was updated.
===Maintenance categories===
* {{clc|Pages using updated template with unknown parameters}}
* {{clc|Pages using updated template with missing date}}
===See also===
*{{Tlx|Complete list}}
*{{tlx|Update}}
*{{tlx|Update inline}}
*{{tlx|As of}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES HERE, THANKS -->
[[Category:Typing-aid templates]]
[[Category:Association football templates|Updated]]
}}</includeonly>
gvqp0ki01c4ls4pc86ckcho6yfv6ac5
74010
74009
2026-07-11T19:13:02Z
Robertsky
10424
1 versaun husi [[:en:Template:Updated/doc]]
74009
wikitext
text/x-wiki
{{Documentation subpage}}
{{high use}}
{{lua|Module:Check for unknown parameters}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
This template should be used as a [[WP:HAT|hatnote]] for sections in articles which may require frequent updating. See [[Wikipedia:As of]] for details on why this may be useful.
===Usage===
{{Tlx|Updated|date|<nowiki><ref>reference</ref></nowiki>}}
If the required <var>date</var> is omitted, a hidden tracking category will appear on the page. To remove the hidden category, provide the date on which the page or section was updated.
===Maintenance categories===
* {{clc|Pages using updated template with unknown parameters}}
* {{clc|Pages using updated template with missing date}}
===See also===
*{{Tlx|Complete list}}
*{{tlx|Update}}
*{{tlx|Update inline}}
*{{tlx|As of}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES HERE, THANKS -->
[[Category:Typing-aid templates]]
[[Category:Association football templates|Updated]]
}}</includeonly>
gvqp0ki01c4ls4pc86ckcho6yfv6ac5
Template:NFT player
10
8677
74011
2023-09-11T10:11:42Z
Zyxw
953
If template is substituted, don't include tracking categories. Tested first with [[/sandbox]].
74011
wikitext
text/x-wiki
{{{{{|safesubst:}}}#if: {{{1<includeonly>|</includeonly>}}} {{{pid|}}} {{{id|}}} {{{{{|safesubst:}}}#property:P2574}}
| {{{{{|safesubst:}}}#if:{{{access-date|{{{accessdate|{{{citation|}}}}}}}}}
| {{cite web |url=https://www.national-football-teams.com/player/{{{{{|safesubst:}}}#if: {{{1<includeonly>|{{{pid|{{{id|}}}}}}</includeonly>}}}
| {{{1|{{{pid|{{{id}}}}}}}}}
| {{{{{|safesubst:}}}#property:P2574}}
}}.html |title={{{{{|safesubst:}}}#if: {{{2<includeonly>|{{{name|}}}</includeonly>}}}
| {{{2|{{{name}}}}}}
| {{{{{|safesubst:}}}PAGENAMEBASE}}
}} |website=National Football Teams |publisher=Benjamin Strack-Zimmermann |access-date={{{access-date|{{{accessdate|}}}}}} }}
| [https://www.national-football-teams.com/player/{{{{{|safesubst:}}}#if: {{{1<includeonly>|{{{pid|{{{id|}}}}}}</includeonly>}}}
| {{{1|{{{pid|{{{id}}}}}}}}}
| {{{{{|safesubst:}}}#property:P2574}}
}}.html {{{{{|safesubst:}}}#if: {{{2<includeonly>|{{{name|}}}</includeonly>}}}
| {{{2|{{{name}}}}}}
| {{{{{|safesubst:}}}PAGENAMEBASE}}
}}] at National-Football-Teams.com<includeonly>{{{{{|safesubst:}}}#invoke:EditAtWikidata|showMessage|pid=P2574|{{{id|{{{pid|{{{1|}}}}}}}}}}}</includeonly>
}}
| <span class="error">{{[[Template:NFT player|NFT player]]}} template missing ID and not present in Wikidata.</span>
}}{{{{{|safesubst:}}}#ifeq: {{{{{|safesubst:}}}NAMESPACE}} | {{NAMESPACE}}
| {{{{{|safesubst:}}}#if: {{{id|{{{pid|{{{1|}}}}}}}}}
| {{{{{|safesubst:}}}#invoke:WikidataCheck|wikidatacheck|property=P2574|value={{{{{|safesubst:}}}#invoke:String|match|s={{{id|{{{pid|{{{1|}}}}}}}}}|pattern=^[^/]*}}|category=NFT template with ID|namespaces=0|nocatsame=1}}
| {{{{{|safesubst:}}}#ifeq: {{{{{|safesubst:}}}NAMESPACENUMBER}} | 0
| {{{{{|safesubst:}}}#if: {{{{{|safesubst:}}}#property:P2574}}
|
| [[Category:NFT template missing ID and not in Wikidata]]
}}
}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
idwe3zzi7pazfjjf2o08bx4a7a5w28f
74012
74011
2026-07-11T19:14:39Z
Robertsky
10424
1 versaun husi [[:en:Template:NFT_player]]
74011
wikitext
text/x-wiki
{{{{{|safesubst:}}}#if: {{{1<includeonly>|</includeonly>}}} {{{pid|}}} {{{id|}}} {{{{{|safesubst:}}}#property:P2574}}
| {{{{{|safesubst:}}}#if:{{{access-date|{{{accessdate|{{{citation|}}}}}}}}}
| {{cite web |url=https://www.national-football-teams.com/player/{{{{{|safesubst:}}}#if: {{{1<includeonly>|{{{pid|{{{id|}}}}}}</includeonly>}}}
| {{{1|{{{pid|{{{id}}}}}}}}}
| {{{{{|safesubst:}}}#property:P2574}}
}}.html |title={{{{{|safesubst:}}}#if: {{{2<includeonly>|{{{name|}}}</includeonly>}}}
| {{{2|{{{name}}}}}}
| {{{{{|safesubst:}}}PAGENAMEBASE}}
}} |website=National Football Teams |publisher=Benjamin Strack-Zimmermann |access-date={{{access-date|{{{accessdate|}}}}}} }}
| [https://www.national-football-teams.com/player/{{{{{|safesubst:}}}#if: {{{1<includeonly>|{{{pid|{{{id|}}}}}}</includeonly>}}}
| {{{1|{{{pid|{{{id}}}}}}}}}
| {{{{{|safesubst:}}}#property:P2574}}
}}.html {{{{{|safesubst:}}}#if: {{{2<includeonly>|{{{name|}}}</includeonly>}}}
| {{{2|{{{name}}}}}}
| {{{{{|safesubst:}}}PAGENAMEBASE}}
}}] at National-Football-Teams.com<includeonly>{{{{{|safesubst:}}}#invoke:EditAtWikidata|showMessage|pid=P2574|{{{id|{{{pid|{{{1|}}}}}}}}}}}</includeonly>
}}
| <span class="error">{{[[Template:NFT player|NFT player]]}} template missing ID and not present in Wikidata.</span>
}}{{{{{|safesubst:}}}#ifeq: {{{{{|safesubst:}}}NAMESPACE}} | {{NAMESPACE}}
| {{{{{|safesubst:}}}#if: {{{id|{{{pid|{{{1|}}}}}}}}}
| {{{{{|safesubst:}}}#invoke:WikidataCheck|wikidatacheck|property=P2574|value={{{{{|safesubst:}}}#invoke:String|match|s={{{id|{{{pid|{{{1|}}}}}}}}}|pattern=^[^/]*}}|category=NFT template with ID|namespaces=0|nocatsame=1}}
| {{{{{|safesubst:}}}#ifeq: {{{{{|safesubst:}}}NAMESPACENUMBER}} | 0
| {{{{{|safesubst:}}}#if: {{{{{|safesubst:}}}#property:P2574}}
|
| [[Category:NFT template missing ID and not in Wikidata]]
}}
}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
idwe3zzi7pazfjjf2o08bx4a7a5w28f
Módulo:WikidataCheck
828
8678
74013
2023-11-30T11:27:19Z
Zyxw
953
adding bug fix for prior edit request, see discussion at [[Template talk:WikidataCheck#Checking sourced properties only?]]
74013
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
74014
74013
2026-07-11T19:14:39Z
Robertsky
10424
1 versaun husi [[:en:Module:WikidataCheck]]
74013
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
Módulo:Transclusion count/data/N
828
8679
74015
2026-07-05T05:14:13Z
Ahechtbot
11697
[[Wikipedia:BOT|Bot]]: Updated page.
74015
Scribunto
text/plain
return {
["N"] = 3100,
["N.b."] = 2900,
["N/A"] = 23000,
["N/a"] = 65000,
["NA"] = 2400,
["NA-Class"] = 15000,
["NASCAR_next_race"] = 2400,
["NASTRO_comment"] = 33000,
["NBA_Draft_template_list"] = 3600,
["NBA_Year"] = 6100,
["NBA_color"] = 3800,
["NBA_color_cell"] = 4600,
["NBA_color_cell2"] = 3600,
["NBA_player_statistics_legend"] = 5900,
["NBA_player_statistics_start"] = 5000,
["NBA_roster_footer"] = 2300,
["NBA_roster_header"] = 2200,
["NCAA_color_cell"] = 12000,
["NCAA_secondary_color_cell"] = 5000,
["NCES_District_ID"] = 3500,
["NED"] = 11000,
["NEXTYEAR"] = 9900,
["NFLAltPrimaryStyle"] = 2600,
["NFLPrimaryStyle"] = 28000,
["NFLSecondaryColor"] = 16000,
["NFL_Year"] = 30000,
["NFL_predraft"] = 10000,
["NFL_predraft/check"] = 10000,
["NFL_predraft/ftin"] = 10000,
["NFLplayer"] = 2300,
["NFPA_704_diamond"] = 2000,
["NFPA_704_diamond/styles.css"] = 2000,
["NFPA_704_diamond/text"] = 2000,
["NFT"] = 7800,
["NFT_player"] = 33000,
["NGA"] = 3500,
["NGR"] = 2700,
["NHLE"] = 23000,
["NHLS_url"] = 2100,
["NLD"] = 13000,
["NLM_content"] = 2800,
["NOINDEX"] = 510000,
["NOMIS2011"] = 2200,
["NOR"] = 10000,
["NPG_name"] = 2200,
["NRDB_species"] = 7200,
["NRHPGoogleMapFootnote"] = 2500,
["NRHP_Focus"] = 74000,
["NRHP_color"] = 3700,
["NRHP_date_for_lists"] = 3100,
["NRHP_date_for_lists/dates"] = 3100,
["NRHP_header"] = 3400,
["NRHP_navigation_box"] = 17000,
["NRHP_row"] = 3400,
["NRHP_style"] = 72000,
["NRHP_url"] = 30000,
["NRHP_url/core"] = 32000,
["NRISref"] = 74000,
["NRT"] = 2300,
["NSWcity"] = 2000,
["NSWcity/core"] = 2000,
["NUMBEROFSECTIONS"] = 4900,
["NYCS_br"] = 2700,
["NYCS_time_2"] = 3200,
["NZL"] = 7300,
["NZ_electorate_link"] = 2500,
["Na"] = 4400,
["Nac"] = 4000,
["Namespace_detect"] = 476000,
["Namespace_detect_showall"] = 12000,
["Nastaliq"] = 11000,
["Nat_fs_end"] = 2900,
["NationalArchivesNote"] = 8100,
["National_Film_Awards/style"] = 2100,
["National_Heritage_List_for_England"] = 27000,
["National_Register_of_Historic_Places"] = 22000,
["National_Register_of_Historic_Places_in_New_York"] = 4800,
["National_Register_of_Historic_Places_in_Pennsylvania"] = 3300,
["National_Register_of_Historic_Places_in_Virginia"] = 3100,
["National_basketball_squad"] = 3200,
["National_field_hockey_squad"] = 4500,
["National_football_squad_start/styles.css"] = 2600,
["National_men's_basketball_team"] = 4200,
["National_men's_cricket_team"] = 4900,
["National_men's_cricket_team_right"] = 2400,
["National_men's_ice_hockey_team"] = 8100,
["National_men's_volleyball_team"] = 2500,
["National_rugby_union_team"] = 6600,
["National_squad"] = 45000,
["National_squad_no_numbers"] = 16000,
["National_women's_volleyball_team"] = 2100,
["Native_name"] = 37000,
["Native_name_checker"] = 86000,
["Native_name_list"] = 5400,
["Nav_year_links"] = 2500,
["Naval"] = 5500,
["Naval/core"] = 5500,
["Navbar"] = 42000,
["Navbar-collapsible"] = 2900,
["Navbar-header"] = 17000,
["Navbar-header/styles.css"] = 17000,
["Navbox"] = 3060000,
["Navbox_GR_munic"] = 3700,
["Navbox_Musical_artist"] = 9800,
["Navbox_Ukraine_district"] = 2500,
["Navbox_bottom"] = 17000,
["Navbox_decade_list"] = 12000,
["Navbox_documentation"] = 55000,
["Navbox_ice_hockey"] = 3400,
["Navbox_musical_artist"] = 246000,
["Navbox_musical_artist/styles.css"] = 246000,
["Navbox_rugby_league_squad"] = 5100,
["Navbox_season_by_team"] = 3300,
["Navbox_top"] = 17000,
["Navbox_visibility"] = 55000,
["Navbox_with_collapsible_groups"] = 150000,
["Navbox_with_collapsible_sections"] = 3000,
["Navbox_with_columns"] = 26000,
["Navboxes"] = 68000,
["Navboxes_colour"] = 2100,
["Navseasoncats"] = 124000,
["Navseasoncats_with_centuries_below_decade"] = 6600,
["Navseasoncats_with_decades_below_year"] = 16000,
["Navsource"] = 5400,
["Navy"] = 20000,
["Navy/core"] = 20000,
["Nay"] = 6800,
["Nbay"] = 6100,
["Nbh"] = 2100,
["Nbnd"] = 2700,
["Nbs"] = 19000,
["Nbsp"] = 548000,
["Nbsp_to_space"] = 25000,
["Ndash"] = 30000,
["Nee"] = 17000,
["NeilBrownPlayers"] = 3100,
["Net_register_tonnage"] = 2300,
["Netflix_title"] = 2300,
["New_user_bar"] = 57000,
["Newbot"] = 4500,
["Next_period"] = 26000,
["Nfly"] = 2500,
["Nihongo"] = 108000,
["Nihongo2"] = 13000,
["Nihongo_foot"] = 4000,
["No"] = 12000,
["No."] = 15000,
["No2"] = 13000,
["NoSpam"] = 4000,
["NoSpamEmail"] = 17000,
["No_bold"] = 3000,
["No_col_break"] = 2700,
["No_col_break/styles.css"] = 2700,
["No_documentation"] = 3700,
["No_footnotes"] = 55000,
["No_ping"] = 415000,
["No_ping2"] = 2200,
["No_plot"] = 12000,
["No_redirect"] = 722000,
["No_significant_coverage_(sports)"] = 5200,
["No_spam"] = 329000,
["No_wrap"] = 8400,
["Nobold"] = 475000,
["Nobold/styles.css"] = 476000,
["Nobr"] = 7200,
["Nobreak"] = 969000,
["Nochange"] = 3000,
["Noindex"] = 4900,
["Noitalic"] = 5600,
["Noitalic/styles.css"] = 5600,
["Nom"] = 47000,
["Nominated"] = 54000,
["Non-English-language_text_category"] = 3800,
["Non-admin_closure"] = 4200,
["Non-admin_closure_(requested_moves)"] = 4600,
["Non-admin_comment"] = 3600,
["Non-album_single"] = 4200,
["Non-album_singles"] = 3100,
["Non-diffusing"] = 4600,
["Non-diffusing_parent_category"] = 4400,
["Non-diffusing_subcategory"] = 36000,
["Non-free_2D_art"] = 7700,
["Non-free_3D_art"] = 2700,
["Non-free_album_cover"] = 222000,
["Non-free_audio_sample"] = 8900,
["Non-free_biog-pic"] = 37000,
["Non-free_book_cover"] = 64000,
["Non-free_character"] = 3200,
["Non-free_comic"] = 11000,
["Non-free_fair_use"] = 15000,
["Non-free_fair_use_in"] = 12000,
["Non-free_file_with_no_commercial_use_license"] = 2500,
["Non-free_film_poster"] = 104000,
["Non-free_film_screenshot"] = 4800,
["Non-free_game_cover"] = 8600,
["Non-free_game_screenshot"] = 5500,
["Non-free_historic_image"] = 18000,
["Non-free_image_data"] = 8100,
["Non-free_image_rationale"] = 9000,
["Non-free_logo"] = 161000,
["Non-free_magazine_cover"] = 9800,
["Non-free_media"] = 819000,
["Non-free_media_data"] = 9500,
["Non-free_media_rationale"] = 11000,
["Non-free_music_video_screenshot"] = 2100,
["Non-free_newspaper_image"] = 2200,
["Non-free_poster"] = 23000,
["Non-free_promotional"] = 6000,
["Non-free_school_logo"] = 11000,
["Non-free_seal"] = 9200,
["Non-free_symbol"] = 5800,
["Non-free_television_screenshot"] = 12000,
["Non-free_title-card"] = 12000,
["Non-free_use_rationale"] = 765000,
["Non-free_use_rationale/styles.css"] = 774000,
["Non-free_use_rationale_2"] = 241000,
["Non-free_use_rationale_album_cover"] = 151000,
["Non-free_use_rationale_biog"] = 2700,
["Non-free_use_rationale_book_cover"] = 20000,
["Non-free_use_rationale_logo"] = 127000,
["Non-free_use_rationale_poster"] = 62000,
["Non-free_use_rationale_title-card"] = 4600,
["Non-free_use_rationale_video_cover"] = 6500,
["Non-free_use_rationale_video_game_cover"] = 11000,
["Non-free_video_cover"] = 17000,
["Non-free_video_game_cover"] = 23000,
["Non-free_video_game_cover/platform"] = 23000,
["Non-free_video_game_screenshot"] = 12000,
["Non-free_video_game_screenshot/platform"] = 11000,
["Non-free_with_NC"] = 2300,
["Non_breaking_en_dash"] = 2800,
["Non_breaking_hyphen"] = 3100,
["Nonumtoc"] = 3200,
["Nonumtoc/styles.css"] = 3200,
["Noping"] = 387000,
["Noprint"] = 2400,
["Noredirect"] = 8800,
["Normal"] = 9700,
["Normalwraplink"] = 7100,
["North_America_topic"] = 3800,
["Nospam"] = 5400,
["Not-PD-US-expired-min-year"] = 64000,
["Not_a_ballot"] = 8500,
["Not_a_typo"] = 14000,
["Not_around"] = 11000,
["Not_done"] = 29000,
["Notability"] = 59000,
["Notavote"] = 2300,
["Notdone"] = 6200,
["Note"] = 27000,
["NoteFoot"] = 5600,
["NoteTag"] = 6000,
["Note_label"] = 9500,
["Notelist"] = 328000,
["Notelist-lr"] = 5100,
["Notelist-talk"] = 2000,
["Notelist-ua"] = 9300,
["Notes"] = 4200,
["Noteslist"] = 4800,
["Notice"] = 120000,
["Nowiki_="] = 2300,
["Nowrap"] = 1900000,
["Np"] = 5700,
["Npby"] = 2900,
["Nq"] = 4700,
["Nrut"] = 6600,
["Ns"] = 3200,
["Ns0"] = 86000,
["Ns_has_subpages"] = 3790000,
["Nsmdns"] = 3100,
["Nts"] = 22000,
["Ntsh"] = 3700,
["Number_table_sorting"] = 41000,
["Number_table_sorting_hidden"] = 3700,
["Numero"] = 4500,
["Nutshell"] = 5000,
["Nw="] = 2300,
["Née"] = 4100,
["Module:NUMBEROFSECTIONS"] = 4900,
["Module:Namespace_detect"] = 541000,
["Module:Namespace_detect/config"] = 5200000,
["Module:Namespace_detect/data"] = 5200000,
["Module:National_squad"] = 59000,
["Module:Native_name"] = 121000,
["Module:Navbar"] = 5180000,
["Module:Navbar/configuration"] = 5180000,
["Module:Navbar/styles.css"] = 5180000,
["Module:Navbox"] = 4840000,
["Module:Navbox/configuration"] = 4840000,
["Module:Navbox/styles.css"] = 4840000,
["Module:Navbox_ice_hockey"] = 3400,
["Module:Navbox_top_and_bottom"] = 17000,
["Module:Navbox_with_collapsible_groups"] = 15000,
["Module:Navboxes"] = 70000,
["Module:Nihongo"] = 112000,
["Module:No_ping"] = 498000,
["Module:Noinclude"] = 86000,
["Module:Normalize_volume_and_edition"] = 3600,
["Module:Ns_has_subpages"] = 3790000,
["Module:Number_table_sorting"] = 43000,
}
9716v8rngbityj0og14xf7s245zdmh2
74016
74015
2026-07-11T19:14:40Z
Robertsky
10424
1 versaun husi [[:en:Module:Transclusion_count/data/N]]
74015
Scribunto
text/plain
return {
["N"] = 3100,
["N.b."] = 2900,
["N/A"] = 23000,
["N/a"] = 65000,
["NA"] = 2400,
["NA-Class"] = 15000,
["NASCAR_next_race"] = 2400,
["NASTRO_comment"] = 33000,
["NBA_Draft_template_list"] = 3600,
["NBA_Year"] = 6100,
["NBA_color"] = 3800,
["NBA_color_cell"] = 4600,
["NBA_color_cell2"] = 3600,
["NBA_player_statistics_legend"] = 5900,
["NBA_player_statistics_start"] = 5000,
["NBA_roster_footer"] = 2300,
["NBA_roster_header"] = 2200,
["NCAA_color_cell"] = 12000,
["NCAA_secondary_color_cell"] = 5000,
["NCES_District_ID"] = 3500,
["NED"] = 11000,
["NEXTYEAR"] = 9900,
["NFLAltPrimaryStyle"] = 2600,
["NFLPrimaryStyle"] = 28000,
["NFLSecondaryColor"] = 16000,
["NFL_Year"] = 30000,
["NFL_predraft"] = 10000,
["NFL_predraft/check"] = 10000,
["NFL_predraft/ftin"] = 10000,
["NFLplayer"] = 2300,
["NFPA_704_diamond"] = 2000,
["NFPA_704_diamond/styles.css"] = 2000,
["NFPA_704_diamond/text"] = 2000,
["NFT"] = 7800,
["NFT_player"] = 33000,
["NGA"] = 3500,
["NGR"] = 2700,
["NHLE"] = 23000,
["NHLS_url"] = 2100,
["NLD"] = 13000,
["NLM_content"] = 2800,
["NOINDEX"] = 510000,
["NOMIS2011"] = 2200,
["NOR"] = 10000,
["NPG_name"] = 2200,
["NRDB_species"] = 7200,
["NRHPGoogleMapFootnote"] = 2500,
["NRHP_Focus"] = 74000,
["NRHP_color"] = 3700,
["NRHP_date_for_lists"] = 3100,
["NRHP_date_for_lists/dates"] = 3100,
["NRHP_header"] = 3400,
["NRHP_navigation_box"] = 17000,
["NRHP_row"] = 3400,
["NRHP_style"] = 72000,
["NRHP_url"] = 30000,
["NRHP_url/core"] = 32000,
["NRISref"] = 74000,
["NRT"] = 2300,
["NSWcity"] = 2000,
["NSWcity/core"] = 2000,
["NUMBEROFSECTIONS"] = 4900,
["NYCS_br"] = 2700,
["NYCS_time_2"] = 3200,
["NZL"] = 7300,
["NZ_electorate_link"] = 2500,
["Na"] = 4400,
["Nac"] = 4000,
["Namespace_detect"] = 476000,
["Namespace_detect_showall"] = 12000,
["Nastaliq"] = 11000,
["Nat_fs_end"] = 2900,
["NationalArchivesNote"] = 8100,
["National_Film_Awards/style"] = 2100,
["National_Heritage_List_for_England"] = 27000,
["National_Register_of_Historic_Places"] = 22000,
["National_Register_of_Historic_Places_in_New_York"] = 4800,
["National_Register_of_Historic_Places_in_Pennsylvania"] = 3300,
["National_Register_of_Historic_Places_in_Virginia"] = 3100,
["National_basketball_squad"] = 3200,
["National_field_hockey_squad"] = 4500,
["National_football_squad_start/styles.css"] = 2600,
["National_men's_basketball_team"] = 4200,
["National_men's_cricket_team"] = 4900,
["National_men's_cricket_team_right"] = 2400,
["National_men's_ice_hockey_team"] = 8100,
["National_men's_volleyball_team"] = 2500,
["National_rugby_union_team"] = 6600,
["National_squad"] = 45000,
["National_squad_no_numbers"] = 16000,
["National_women's_volleyball_team"] = 2100,
["Native_name"] = 37000,
["Native_name_checker"] = 86000,
["Native_name_list"] = 5400,
["Nav_year_links"] = 2500,
["Naval"] = 5500,
["Naval/core"] = 5500,
["Navbar"] = 42000,
["Navbar-collapsible"] = 2900,
["Navbar-header"] = 17000,
["Navbar-header/styles.css"] = 17000,
["Navbox"] = 3060000,
["Navbox_GR_munic"] = 3700,
["Navbox_Musical_artist"] = 9800,
["Navbox_Ukraine_district"] = 2500,
["Navbox_bottom"] = 17000,
["Navbox_decade_list"] = 12000,
["Navbox_documentation"] = 55000,
["Navbox_ice_hockey"] = 3400,
["Navbox_musical_artist"] = 246000,
["Navbox_musical_artist/styles.css"] = 246000,
["Navbox_rugby_league_squad"] = 5100,
["Navbox_season_by_team"] = 3300,
["Navbox_top"] = 17000,
["Navbox_visibility"] = 55000,
["Navbox_with_collapsible_groups"] = 150000,
["Navbox_with_collapsible_sections"] = 3000,
["Navbox_with_columns"] = 26000,
["Navboxes"] = 68000,
["Navboxes_colour"] = 2100,
["Navseasoncats"] = 124000,
["Navseasoncats_with_centuries_below_decade"] = 6600,
["Navseasoncats_with_decades_below_year"] = 16000,
["Navsource"] = 5400,
["Navy"] = 20000,
["Navy/core"] = 20000,
["Nay"] = 6800,
["Nbay"] = 6100,
["Nbh"] = 2100,
["Nbnd"] = 2700,
["Nbs"] = 19000,
["Nbsp"] = 548000,
["Nbsp_to_space"] = 25000,
["Ndash"] = 30000,
["Nee"] = 17000,
["NeilBrownPlayers"] = 3100,
["Net_register_tonnage"] = 2300,
["Netflix_title"] = 2300,
["New_user_bar"] = 57000,
["Newbot"] = 4500,
["Next_period"] = 26000,
["Nfly"] = 2500,
["Nihongo"] = 108000,
["Nihongo2"] = 13000,
["Nihongo_foot"] = 4000,
["No"] = 12000,
["No."] = 15000,
["No2"] = 13000,
["NoSpam"] = 4000,
["NoSpamEmail"] = 17000,
["No_bold"] = 3000,
["No_col_break"] = 2700,
["No_col_break/styles.css"] = 2700,
["No_documentation"] = 3700,
["No_footnotes"] = 55000,
["No_ping"] = 415000,
["No_ping2"] = 2200,
["No_plot"] = 12000,
["No_redirect"] = 722000,
["No_significant_coverage_(sports)"] = 5200,
["No_spam"] = 329000,
["No_wrap"] = 8400,
["Nobold"] = 475000,
["Nobold/styles.css"] = 476000,
["Nobr"] = 7200,
["Nobreak"] = 969000,
["Nochange"] = 3000,
["Noindex"] = 4900,
["Noitalic"] = 5600,
["Noitalic/styles.css"] = 5600,
["Nom"] = 47000,
["Nominated"] = 54000,
["Non-English-language_text_category"] = 3800,
["Non-admin_closure"] = 4200,
["Non-admin_closure_(requested_moves)"] = 4600,
["Non-admin_comment"] = 3600,
["Non-album_single"] = 4200,
["Non-album_singles"] = 3100,
["Non-diffusing"] = 4600,
["Non-diffusing_parent_category"] = 4400,
["Non-diffusing_subcategory"] = 36000,
["Non-free_2D_art"] = 7700,
["Non-free_3D_art"] = 2700,
["Non-free_album_cover"] = 222000,
["Non-free_audio_sample"] = 8900,
["Non-free_biog-pic"] = 37000,
["Non-free_book_cover"] = 64000,
["Non-free_character"] = 3200,
["Non-free_comic"] = 11000,
["Non-free_fair_use"] = 15000,
["Non-free_fair_use_in"] = 12000,
["Non-free_file_with_no_commercial_use_license"] = 2500,
["Non-free_film_poster"] = 104000,
["Non-free_film_screenshot"] = 4800,
["Non-free_game_cover"] = 8600,
["Non-free_game_screenshot"] = 5500,
["Non-free_historic_image"] = 18000,
["Non-free_image_data"] = 8100,
["Non-free_image_rationale"] = 9000,
["Non-free_logo"] = 161000,
["Non-free_magazine_cover"] = 9800,
["Non-free_media"] = 819000,
["Non-free_media_data"] = 9500,
["Non-free_media_rationale"] = 11000,
["Non-free_music_video_screenshot"] = 2100,
["Non-free_newspaper_image"] = 2200,
["Non-free_poster"] = 23000,
["Non-free_promotional"] = 6000,
["Non-free_school_logo"] = 11000,
["Non-free_seal"] = 9200,
["Non-free_symbol"] = 5800,
["Non-free_television_screenshot"] = 12000,
["Non-free_title-card"] = 12000,
["Non-free_use_rationale"] = 765000,
["Non-free_use_rationale/styles.css"] = 774000,
["Non-free_use_rationale_2"] = 241000,
["Non-free_use_rationale_album_cover"] = 151000,
["Non-free_use_rationale_biog"] = 2700,
["Non-free_use_rationale_book_cover"] = 20000,
["Non-free_use_rationale_logo"] = 127000,
["Non-free_use_rationale_poster"] = 62000,
["Non-free_use_rationale_title-card"] = 4600,
["Non-free_use_rationale_video_cover"] = 6500,
["Non-free_use_rationale_video_game_cover"] = 11000,
["Non-free_video_cover"] = 17000,
["Non-free_video_game_cover"] = 23000,
["Non-free_video_game_cover/platform"] = 23000,
["Non-free_video_game_screenshot"] = 12000,
["Non-free_video_game_screenshot/platform"] = 11000,
["Non-free_with_NC"] = 2300,
["Non_breaking_en_dash"] = 2800,
["Non_breaking_hyphen"] = 3100,
["Nonumtoc"] = 3200,
["Nonumtoc/styles.css"] = 3200,
["Noping"] = 387000,
["Noprint"] = 2400,
["Noredirect"] = 8800,
["Normal"] = 9700,
["Normalwraplink"] = 7100,
["North_America_topic"] = 3800,
["Nospam"] = 5400,
["Not-PD-US-expired-min-year"] = 64000,
["Not_a_ballot"] = 8500,
["Not_a_typo"] = 14000,
["Not_around"] = 11000,
["Not_done"] = 29000,
["Notability"] = 59000,
["Notavote"] = 2300,
["Notdone"] = 6200,
["Note"] = 27000,
["NoteFoot"] = 5600,
["NoteTag"] = 6000,
["Note_label"] = 9500,
["Notelist"] = 328000,
["Notelist-lr"] = 5100,
["Notelist-talk"] = 2000,
["Notelist-ua"] = 9300,
["Notes"] = 4200,
["Noteslist"] = 4800,
["Notice"] = 120000,
["Nowiki_="] = 2300,
["Nowrap"] = 1900000,
["Np"] = 5700,
["Npby"] = 2900,
["Nq"] = 4700,
["Nrut"] = 6600,
["Ns"] = 3200,
["Ns0"] = 86000,
["Ns_has_subpages"] = 3790000,
["Nsmdns"] = 3100,
["Nts"] = 22000,
["Ntsh"] = 3700,
["Number_table_sorting"] = 41000,
["Number_table_sorting_hidden"] = 3700,
["Numero"] = 4500,
["Nutshell"] = 5000,
["Nw="] = 2300,
["Née"] = 4100,
["Module:NUMBEROFSECTIONS"] = 4900,
["Module:Namespace_detect"] = 541000,
["Module:Namespace_detect/config"] = 5200000,
["Module:Namespace_detect/data"] = 5200000,
["Module:National_squad"] = 59000,
["Module:Native_name"] = 121000,
["Module:Navbar"] = 5180000,
["Module:Navbar/configuration"] = 5180000,
["Module:Navbar/styles.css"] = 5180000,
["Module:Navbox"] = 4840000,
["Module:Navbox/configuration"] = 4840000,
["Module:Navbox/styles.css"] = 4840000,
["Module:Navbox_ice_hockey"] = 3400,
["Module:Navbox_top_and_bottom"] = 17000,
["Module:Navbox_with_collapsible_groups"] = 15000,
["Module:Navboxes"] = 70000,
["Module:Nihongo"] = 112000,
["Module:No_ping"] = 498000,
["Module:Noinclude"] = 86000,
["Module:Normalize_volume_and_edition"] = 3600,
["Module:Ns_has_subpages"] = 3790000,
["Module:Number_table_sorting"] = 43000,
}
9716v8rngbityj0og14xf7s245zdmh2
Template:Tlcw
10
8680
74017
2024-07-14T15:01:40Z
HouseBlaster
9261
HouseBlaster moved page [[Template:Tlcw]] to [[Template:Template link code with whitespace]]: expand template name per [[WP:TPN]]
74017
wikitext
text/x-wiki
#REDIRECT [[Template:Template link code with whitespace]]
{{Redirect category shell|
{{R from move}}
}}
sttibx5goxexffye9cd07t7kkuyisql
74018
74017
2026-07-11T19:14:40Z
Robertsky
10424
1 versaun husi [[:en:Template:Tlcw]]
74017
wikitext
text/x-wiki
#REDIRECT [[Template:Template link code with whitespace]]
{{Redirect category shell|
{{R from move}}
}}
sttibx5goxexffye9cd07t7kkuyisql
Template:NFT player/doc
10
8681
74019
2025-11-19T13:14:39Z
Zyxw
953
/* See also */ update
74019
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata -->
<div style="font-size: 110%;">{{Template shortcut|NFT}}</div>
{{Lua|Module:EditAtWikidata|Module:WikidataCheck}}
{{Tracks and uses Wikidata|P2574}}
'''{{NAMESPACE}}:{{BASEPAGENAME}}''' displays an [[Wikipedia:External links|external link]] or [[Wikipedia:Citing sources|citation]] for an [[association football]] (soccer) player's statistics at [https://www.national-football-teams.com/ National-Football-Teams.com].
== Usage ==
=== External link ===
; ID without name (uses Wikipedia article name as link text)
: {{tlcw|{{BASEPAGENAME}} | <var>ID</var> }}
: {{tlcw|{{BASEPAGENAME}} | id {{=}} <var>ID</var> }}
; ID with name
: {{tlcw|{{BASEPAGENAME}} | <var>ID</var> | <var>NAME</var> }}
: {{tlcw|{{BASEPAGENAME}} | id {{=}} <var>ID</var> | name {{=}} <var>NAME</var> }}
; Using [[Wikidata]] property [[d:Property:P2574|P2574]]
: {{tlcw|{{BASEPAGENAME}}}}
: {{tlcw|{{BASEPAGENAME}} | name {{=}} <var>NAME</var> }}
=== Citation with access-date ===
; ID without name (uses Wikipedia article name as link text)
: {{tlcw|{{BASEPAGENAME}} | <var>ID</var> | access-date {{=}} <var>DATE</var> }}
: {{tlcw|{{BASEPAGENAME}} | id {{=}} <var>ID</var> | access-date {{=}} <var>DATE</var> }}
; ID with name
: {{tlcw|{{BASEPAGENAME}} | <var>ID</var> | <var>NAME</var> | access-date {{=}} <var>DATE</var> }}
: {{tlcw|{{BASEPAGENAME}} | id {{=}} <var>ID</var> | name {{=}} <var>NAME</var> | access-date {{=}} <var>DATE</var> }}
; Using Wikidata property P2574
: {{tlcw|{{BASEPAGENAME}} | access-date {{=}} <var>DATE</var> }}
: {{tlcw|{{BASEPAGENAME}} | name {{=}} <var>NAME</var> | access-date {{=}} <var>DATE</var> }}
== Examples ==
=== As external link ===
; URLs
: <kbd>[https://www.national-football-teams.com/player/2456/Zinedine_Zidane.html https://www.national-football-teams.com/player/{{Highlight|2456/Zinedine_Zidane}}.html]</kbd> ([https://web.archive.org/web/20250514170322/https://www.national-football-teams.com/player/2456/Zinedine_Zidane.html archive 2025-05-14])
: <kbd>[https://www.national-football-teams.com/player/2456.html https://www.national-football-teams.com/player/{{Highlight|2456}}.html]</kbd> (redirects to URL above)
; ID without name (uses Wikipedia article name as link text)
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} | 2456/Zinedine_Zidane }}</code>
:* {{{{BASEPAGENAME}} | 2456/Zinedine_Zidane }}
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} | id = 2456 }}</code>
:* {{{{BASEPAGENAME}} | id = 2456 }}
; ID with name
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} | 2456/Zinedine_Zidane | Zinedine Zidane }}</code>
:* {{{{BASEPAGENAME}} | 2456/Zinedine_Zidane | Zinedine Zidane }}
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} | id = 2456 | name = Zinedine Zidane }}</code>
:* {{{{BASEPAGENAME}} | id = 2456 | name = Zinedine Zidane }}
; Missing ID and Wikidata property not defined
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} }}</code>
:* {{{{BASEPAGENAME}} }}
=== As citation with access-date ===
; URLs
: <kbd>[https://www.national-football-teams.com/player/11881/Brad_Davis.html https://www.national-football-teams.com/player/{{Highlight|11881/Brad_Davis}}.html]</kbd> ([https://web.archive.org/web/20250427082458/https://www.national-football-teams.com/player/11881/Brad_Davis.html archive 2025-04-27])
: <kbd>[https://www.national-football-teams.com/player/11881.html https://www.national-football-teams.com/player/{{Highlight|11881}}.html]</kbd> (redirects to URL above)
; ID without name (uses Wikipedia article name as link text)
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | 11881/Brad_Davis | accessdate = 17 August 2014 }}</code>
: {{{{BASEPAGENAME}} | 11881/Brad_Davis | accessdate = 17 August 2014 }}
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | id = 11881 | access-date = 17 August 2014 }}</code>
: {{{{BASEPAGENAME}} | id = 11881 | access-date = 17 August 2014 }}
; ID with name
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | 11881/Brad_Davis | Brad Davis | accessdate = 2014-08-17 }}</code>
: {{{{BASEPAGENAME}} | 11881/Brad_Davis | Brad Davis | accessdate = 2014-08-17 }}
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | id = 11881 | name = Brad Davis | access-date = 2014-08-17 }}</code>
: {{{{BASEPAGENAME}} | id = 11881 | name = Brad Davis | access-date = 2014-08-17 }}
; Citation without date
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | 11881/Brad_Davis | Brad Davis | citation = yes }}</code>
: {{{{BASEPAGENAME}} | 11881/Brad_Davis | Brad Davis | citation = yes }}
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | id = 11881 | name = Brad Davis | citation = yes }}</code>
: {{{{BASEPAGENAME}} | id = 11881 | name = Brad Davis | citation = yes }}
; Missing ID and Wikidata property not defined
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | access-date = 2014-08-17 }}</code>
: {{{{BASEPAGENAME}} | access-date = 2014-08-17 }}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "This template displays an external link or citation for an association football (soccer) player's statistics at National-Football-Teams.com.",
"params": {
"1": {
"label": "Player ID",
"aliases": ["id","pid"],
"description": "ID portion of the URL for player's profile at National-Football-Teams.com. Example: 2456 is the ID portion of https://www.national-football-teams.com/player/2456.html or https://www.national-football-teams.com/player/2456/Zinedine_Zidane.html. This parameter is optional if Wikidata property P2574 exists, but required if not.",
"type": "number",
"required": false,
"default": "Wikidata property P2574"
},
"2": {
"label": "Player Name",
"aliases": ["name"],
"description": "Name of the player. This parameter is optional; it defaults to the Wikipedia article name, without any disambiguation such as \"(footballer)\" or \"(soccer)\".",
"type": "string",
"required": false,
"default": "{{PAGENAMEBASE}}"
},
"access-date": {
"label": "Access Date",
"aliases": ["accessdate"],
"description": "Date that the URL was accessed. If specified, the output is formatted as a web citation.",
"type": "date",
"required": false
},
"citation": {
"label": "Citation",
"description": "If a value is given, the output is formatted as a web citation. Useful when a citation is needed without an access date.",
"type": "string",
"required": false
}
},
"paramOrder": [
"1",
"2",
"access-date",
"citation"
]
}
</templatedata>
== Tracking categories ==
; template with ID
: Only the number at the start of the template ID is compared with Wikidata
: 11881/Brad_Davis → {{#invoke:String|match|s=11881/Brad_Davis|pattern=^[^/]*}}
: 11881 → {{#invoke:String|match|s=11881|pattern=^[^/]*}}
* {{clc|NFT template with ID different from Wikidata}}
* {{clc|NFT template with ID not in Wikidata}}
; template missing ID
* {{clc|NFT template missing ID and not in Wikidata}}
== See also ==
; Association football external link templates which convert ID to number before Wikidata comparison
* {{braces|[[Template:BDFA#Tracking categories|BDFA]]}}
* {{braces|[[Template:BeSoccer#Tracking categories|BeSoccer]]}}
* {{braces|[[Template:ESPN FC#Tracking categories|ESPN FC]]}}
* {{braces|[[Template:FBref player#Tracking categories|FBref player]]}}
* {{braces|[[Template:FootballFacts.ru#Tracking categories|FootballFacts.ru]]}}
* {{braces|[[Template:Soccerway#Tracking categories|Soccerway]]}}
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Association football external link templates]]
[[Category:People and person external link templates]]
[[Category:External link templates with accessdate parameter]]
[[Category:External link templates using Wikidata]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that wrap Cite web]]
}}</includeonly>
31g7cbezkhagoono5qdt7b8zxoknazl
74020
74019
2026-07-11T19:14:41Z
Robertsky
10424
1 versaun husi [[:en:Template:NFT_player/doc]]
74019
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata -->
<div style="font-size: 110%;">{{Template shortcut|NFT}}</div>
{{Lua|Module:EditAtWikidata|Module:WikidataCheck}}
{{Tracks and uses Wikidata|P2574}}
'''{{NAMESPACE}}:{{BASEPAGENAME}}''' displays an [[Wikipedia:External links|external link]] or [[Wikipedia:Citing sources|citation]] for an [[association football]] (soccer) player's statistics at [https://www.national-football-teams.com/ National-Football-Teams.com].
== Usage ==
=== External link ===
; ID without name (uses Wikipedia article name as link text)
: {{tlcw|{{BASEPAGENAME}} | <var>ID</var> }}
: {{tlcw|{{BASEPAGENAME}} | id {{=}} <var>ID</var> }}
; ID with name
: {{tlcw|{{BASEPAGENAME}} | <var>ID</var> | <var>NAME</var> }}
: {{tlcw|{{BASEPAGENAME}} | id {{=}} <var>ID</var> | name {{=}} <var>NAME</var> }}
; Using [[Wikidata]] property [[d:Property:P2574|P2574]]
: {{tlcw|{{BASEPAGENAME}}}}
: {{tlcw|{{BASEPAGENAME}} | name {{=}} <var>NAME</var> }}
=== Citation with access-date ===
; ID without name (uses Wikipedia article name as link text)
: {{tlcw|{{BASEPAGENAME}} | <var>ID</var> | access-date {{=}} <var>DATE</var> }}
: {{tlcw|{{BASEPAGENAME}} | id {{=}} <var>ID</var> | access-date {{=}} <var>DATE</var> }}
; ID with name
: {{tlcw|{{BASEPAGENAME}} | <var>ID</var> | <var>NAME</var> | access-date {{=}} <var>DATE</var> }}
: {{tlcw|{{BASEPAGENAME}} | id {{=}} <var>ID</var> | name {{=}} <var>NAME</var> | access-date {{=}} <var>DATE</var> }}
; Using Wikidata property P2574
: {{tlcw|{{BASEPAGENAME}} | access-date {{=}} <var>DATE</var> }}
: {{tlcw|{{BASEPAGENAME}} | name {{=}} <var>NAME</var> | access-date {{=}} <var>DATE</var> }}
== Examples ==
=== As external link ===
; URLs
: <kbd>[https://www.national-football-teams.com/player/2456/Zinedine_Zidane.html https://www.national-football-teams.com/player/{{Highlight|2456/Zinedine_Zidane}}.html]</kbd> ([https://web.archive.org/web/20250514170322/https://www.national-football-teams.com/player/2456/Zinedine_Zidane.html archive 2025-05-14])
: <kbd>[https://www.national-football-teams.com/player/2456.html https://www.national-football-teams.com/player/{{Highlight|2456}}.html]</kbd> (redirects to URL above)
; ID without name (uses Wikipedia article name as link text)
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} | 2456/Zinedine_Zidane }}</code>
:* {{{{BASEPAGENAME}} | 2456/Zinedine_Zidane }}
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} | id = 2456 }}</code>
:* {{{{BASEPAGENAME}} | id = 2456 }}
; ID with name
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} | 2456/Zinedine_Zidane | Zinedine Zidane }}</code>
:* {{{{BASEPAGENAME}} | 2456/Zinedine_Zidane | Zinedine Zidane }}
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} | id = 2456 | name = Zinedine Zidane }}</code>
:* {{{{BASEPAGENAME}} | id = 2456 | name = Zinedine Zidane }}
; Missing ID and Wikidata property not defined
: <code><nowiki>* {{</nowiki>{{BASEPAGENAME}} }}</code>
:* {{{{BASEPAGENAME}} }}
=== As citation with access-date ===
; URLs
: <kbd>[https://www.national-football-teams.com/player/11881/Brad_Davis.html https://www.national-football-teams.com/player/{{Highlight|11881/Brad_Davis}}.html]</kbd> ([https://web.archive.org/web/20250427082458/https://www.national-football-teams.com/player/11881/Brad_Davis.html archive 2025-04-27])
: <kbd>[https://www.national-football-teams.com/player/11881.html https://www.national-football-teams.com/player/{{Highlight|11881}}.html]</kbd> (redirects to URL above)
; ID without name (uses Wikipedia article name as link text)
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | 11881/Brad_Davis | accessdate = 17 August 2014 }}</code>
: {{{{BASEPAGENAME}} | 11881/Brad_Davis | accessdate = 17 August 2014 }}
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | id = 11881 | access-date = 17 August 2014 }}</code>
: {{{{BASEPAGENAME}} | id = 11881 | access-date = 17 August 2014 }}
; ID with name
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | 11881/Brad_Davis | Brad Davis | accessdate = 2014-08-17 }}</code>
: {{{{BASEPAGENAME}} | 11881/Brad_Davis | Brad Davis | accessdate = 2014-08-17 }}
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | id = 11881 | name = Brad Davis | access-date = 2014-08-17 }}</code>
: {{{{BASEPAGENAME}} | id = 11881 | name = Brad Davis | access-date = 2014-08-17 }}
; Citation without date
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | 11881/Brad_Davis | Brad Davis | citation = yes }}</code>
: {{{{BASEPAGENAME}} | 11881/Brad_Davis | Brad Davis | citation = yes }}
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | id = 11881 | name = Brad Davis | citation = yes }}</code>
: {{{{BASEPAGENAME}} | id = 11881 | name = Brad Davis | citation = yes }}
; Missing ID and Wikidata property not defined
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} | access-date = 2014-08-17 }}</code>
: {{{{BASEPAGENAME}} | access-date = 2014-08-17 }}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "This template displays an external link or citation for an association football (soccer) player's statistics at National-Football-Teams.com.",
"params": {
"1": {
"label": "Player ID",
"aliases": ["id","pid"],
"description": "ID portion of the URL for player's profile at National-Football-Teams.com. Example: 2456 is the ID portion of https://www.national-football-teams.com/player/2456.html or https://www.national-football-teams.com/player/2456/Zinedine_Zidane.html. This parameter is optional if Wikidata property P2574 exists, but required if not.",
"type": "number",
"required": false,
"default": "Wikidata property P2574"
},
"2": {
"label": "Player Name",
"aliases": ["name"],
"description": "Name of the player. This parameter is optional; it defaults to the Wikipedia article name, without any disambiguation such as \"(footballer)\" or \"(soccer)\".",
"type": "string",
"required": false,
"default": "{{PAGENAMEBASE}}"
},
"access-date": {
"label": "Access Date",
"aliases": ["accessdate"],
"description": "Date that the URL was accessed. If specified, the output is formatted as a web citation.",
"type": "date",
"required": false
},
"citation": {
"label": "Citation",
"description": "If a value is given, the output is formatted as a web citation. Useful when a citation is needed without an access date.",
"type": "string",
"required": false
}
},
"paramOrder": [
"1",
"2",
"access-date",
"citation"
]
}
</templatedata>
== Tracking categories ==
; template with ID
: Only the number at the start of the template ID is compared with Wikidata
: 11881/Brad_Davis → {{#invoke:String|match|s=11881/Brad_Davis|pattern=^[^/]*}}
: 11881 → {{#invoke:String|match|s=11881|pattern=^[^/]*}}
* {{clc|NFT template with ID different from Wikidata}}
* {{clc|NFT template with ID not in Wikidata}}
; template missing ID
* {{clc|NFT template missing ID and not in Wikidata}}
== See also ==
; Association football external link templates which convert ID to number before Wikidata comparison
* {{braces|[[Template:BDFA#Tracking categories|BDFA]]}}
* {{braces|[[Template:BeSoccer#Tracking categories|BeSoccer]]}}
* {{braces|[[Template:ESPN FC#Tracking categories|ESPN FC]]}}
* {{braces|[[Template:FBref player#Tracking categories|FBref player]]}}
* {{braces|[[Template:FootballFacts.ru#Tracking categories|FootballFacts.ru]]}}
* {{braces|[[Template:Soccerway#Tracking categories|Soccerway]]}}
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Association football external link templates]]
[[Category:People and person external link templates]]
[[Category:External link templates with accessdate parameter]]
[[Category:External link templates using Wikidata]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that wrap Cite web]]
}}</includeonly>
31g7cbezkhagoono5qdt7b8zxoknazl
Template:Template link code with whitespace
10
8682
74021
2024-07-14T15:19:56Z
HouseBlaster
9261
yesno
74021
wikitext
text/x-wiki
{{#if:{{yesno|1={{{wrap|}}}}}|<span style="white-space: nowrap;">}}<code>{{#if:{{yesno|1={{{a|}}}}}|<nowiki>* </nowiki>}}{{{{#if:{{{1<includeonly>|</includeonly>}}}|{{{1}}}}}<!--
-->{{#ifeq:{{{2|<includeonly>x</includeonly>}}}|{{{2|}}}| | {{trim|{{{2}}}}}}}<!--
-->{{#ifeq:{{{3|<includeonly>x</includeonly>}}}|{{{3|}}}| | {{trim|{{{3}}}}}}}<!--
-->{{#ifeq:{{{4|<includeonly>x</includeonly>}}}|{{{4|}}}| | {{trim|{{{4}}}}}}}<!--
-->{{#ifeq:{{{5|<includeonly>x</includeonly>}}}|{{{5|}}}| | {{trim|{{{5}}}}}}}<!--
-->{{#ifeq:{{{6|<includeonly>x</includeonly>}}}|{{{6|}}}| | {{trim|{{{6}}}}}}}<!--
-->{{#ifeq:{{{7|<includeonly>x</includeonly>}}}|{{{7|}}}| | {{trim|{{{7}}}}}}}<!--
-->{{#ifeq:{{{8|<includeonly>x</includeonly>}}}|{{{8|}}}| | {{trim|{{{8}}}}}}}<!--
-->{{#ifeq:{{{9|<includeonly>x</includeonly>}}}|{{{9|}}}| | {{trim|{{{9}}}}}}}<!--
-->{{#if:{{{2<includeonly>|</includeonly>}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}}| }}}}</code>{{#if:{{yesno|1={{{wrap|}}}}}|</span>}}<noinclude>
{{Documentation}}<!-- Please add categories to the /doc subpage & add interwikis to Wikidata. -->
</noinclude>
quyarxv2fh5tr470rz7p3l8ysogfqwo
74022
74021
2026-07-11T19:14:41Z
Robertsky
10424
1 versaun husi [[:en:Template:Template_link_code_with_whitespace]]
74021
wikitext
text/x-wiki
{{#if:{{yesno|1={{{wrap|}}}}}|<span style="white-space: nowrap;">}}<code>{{#if:{{yesno|1={{{a|}}}}}|<nowiki>* </nowiki>}}{{{{#if:{{{1<includeonly>|</includeonly>}}}|{{{1}}}}}<!--
-->{{#ifeq:{{{2|<includeonly>x</includeonly>}}}|{{{2|}}}| | {{trim|{{{2}}}}}}}<!--
-->{{#ifeq:{{{3|<includeonly>x</includeonly>}}}|{{{3|}}}| | {{trim|{{{3}}}}}}}<!--
-->{{#ifeq:{{{4|<includeonly>x</includeonly>}}}|{{{4|}}}| | {{trim|{{{4}}}}}}}<!--
-->{{#ifeq:{{{5|<includeonly>x</includeonly>}}}|{{{5|}}}| | {{trim|{{{5}}}}}}}<!--
-->{{#ifeq:{{{6|<includeonly>x</includeonly>}}}|{{{6|}}}| | {{trim|{{{6}}}}}}}<!--
-->{{#ifeq:{{{7|<includeonly>x</includeonly>}}}|{{{7|}}}| | {{trim|{{{7}}}}}}}<!--
-->{{#ifeq:{{{8|<includeonly>x</includeonly>}}}|{{{8|}}}| | {{trim|{{{8}}}}}}}<!--
-->{{#ifeq:{{{9|<includeonly>x</includeonly>}}}|{{{9|}}}| | {{trim|{{{9}}}}}}}<!--
-->{{#if:{{{2<includeonly>|</includeonly>}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}}| }}}}</code>{{#if:{{yesno|1={{{wrap|}}}}}|</span>}}<noinclude>
{{Documentation}}<!-- Please add categories to the /doc subpage & add interwikis to Wikidata. -->
</noinclude>
quyarxv2fh5tr470rz7p3l8ysogfqwo
UNMISET
0
8683
74025
2026-07-11T20:58:53Z
Robertsky
10424
Robertsky moveu [[UNMISET]] para [[Misaun Apoiu Nasoens Unidas nian ba Timor Leste]]
74025
wikitext
text/x-wiki
#REDIRECIONAMENTO [[Misaun Apoiu Nasoens Unidas nian ba Timor Leste]]
4l28dpmtnxetoegai3qdtlwcpi72yg7
Template:Presiza sitasaun/doc
10
8684
74032
2026-07-07T13:11:59Z
en>PrimeHunter
0
/* Notes */ < and > must be encoded within the |reason= parameter
74032
wikitext
text/x-wiki
{{Redirect|Template:Proveit|the template about the referencing gadget|Template:User ProveIt}}
{{Documentation subpage}}
{{High-use}}
{{cascade-protected template}}
{{Notice|An introductory version of this documentation is provided at [[Wikipedia:Citation needed]].}}
{{Template shortcut|cn|fact}}
{{Lua|Module:Unsubst|Module:Check for unknown parameters}}
<noinclude>{{pp-semi-indef}}<!--persistent vandalism from anon users--></noinclude>
[[File:Webcomic xkcd - Wikipedian protester - English.svg|thumb|right|alt=xkcd comic "Wikipedian Protestor": as a politician addresses a crowd, a protestor within the crowd holds up a sign reading "[CITATION NEEDED]".|[[[Wikipedia:citation needed|citation needed]]]]]
{{Tlb|Citation needed}} is a [[Help:Template|template]] used to identify claims in articles, particularly if questionable, that need a [[Wikipedia:Citing sources|citation]] to a [[WP:Reliable sources|reliable source]]. This template produces the superscripted message {{citation needed|date=May 2013|reason=example}} and is installed with no spaces directly after punctuation.
== Usage ==
* {{tnull|Citation needed|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
* {{tnull|Citation needed|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|reason{{=}}''Your explanation here''}}
== Notes ==
* The {{para|date}} parameter consists of the full English name of the current month (with initial capital and rest lowercase), a space, and the year. For example, "{{xt|January 2013}}" but not "{{!xt|jan13}}" or "{{!xt|January 23, 2013}}". Deviation from this rule will place the article in [[:Category:Articles with invalid date parameter in template]].
** To automatically add the current date, you can use [[Help:Substitution|substitution]] like this: <syntaxhighlight lang="wikitext" inline>{{subst:Citation needed}}</syntaxhighlight>.
** If the {{para|date}} parameter is not given, a [[Wikipedia:Bots|bot]] will soon add it ([[User:AnomieBOT|AnomieBOT]]'s TagDater task) but it's better if you add it yourself to avoid an extra edit to the article's history.
* The {{para|reason}} parameter is for an explanation why you think the material needs a source. It is optional but very helpful. It is displayed as a [[tooltip]] in some browsers (hover the mouse here {{Citation needed|reason=If this text is displayed, the reason parameter is working in your browser|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} to check behaviour of your browser). For example, the following usage might be appropriate to the claim that "Humphrey Bogart was an avid snooker player": <br/> <syntaxhighlight lang="wikitext" inline>{{Citation needed|reason=This claim needs a reliable source; Bogart was a famous actor but his major biographies don't mention snooker.|date=July 2024}}</syntaxhighlight>
** Use only [[plain text]] for the {{para|reason}} parameter. It does not support [[Help:Wiki markup|wiki markup]] like wikilinks, which can mess up the tooltip.
** Some characters must be [[List of XML and HTML character entity references#List of character entity references in HTML|encoded]] within the {{para|reason}} parameter. Encode a double quotation mark <code>"</code> as <code>&quot;</code> or use a single quote <code>'</code> instead. Encode <code><</code> as <code>&lt;</code>, and <code>></code> as <code>&gt;</code>.
** If omitted, the tooltip "This claim needs references to reliable sources." is used by default.
* This template should usually be installed directly ''after'' punctuation, such as a full stop (period) or a comma.
* Use of this template places the article into [[:Category:All articles with unsourced statements]] and [[:Category:Articles with unsourced statements from {{CURRENTMONTHNAME}} {{CURRENTYEAR}}]] (example; past months are listed in [[:Category:Articles with unsourced statements]]).
* Remove the template when you append a citation to a statement, or when removing the statement.
== Examples ==
=== Example 1 ===
This sentence shows the template used at the end.<syntaxhighlight lang="wikitext" inline>{{Citation needed|reason=Reliable source needed for the whole sentence|date=July 2004}}</syntaxhighlight>
This wikitext will be rendered as follows:
:This sentence shows the template used at the end.{{Citation needed|reason=Reliable source needed for the whole sentence|date=July 2004}}
=== Example 2 ===
:[[Humphrey Bogart]] was an avid snooker player.<syntaxhighlight lang="wikitext" inline>{{Citation needed|date=July 2004}}</syntaxhighlight>
The template indicates that it may be that Humphrey Bogart played snooker at some point and it may be that he was enthusiastic about the game but no ''reliable'', ''published'' sources were given to verify it and the information is not considered [[common knowledge]].
:[[Humphrey Bogart]] was an avid snooker player.{{Citation needed|date=July 2004}}
=== Example 3 ===
If it is considered that he might have played snooker but was not an avid player, a reason for the need of a citation may be given, displayed as a tooltip when the mouse hovers on "citation needed":
:[[Humphrey Bogart]] was an avid snooker player.<syntaxhighlight lang="wikitext" inline>{{Citation needed|date=July 2004|reason=Only aware he was photographed playing once. Not aware of any source that claims he played a lot.}}</syntaxhighlight>
:[[Humphrey Bogart]] was an avid snooker player.{{Citation needed|date=July 2004|reason=Only aware he was photographed playing once. Not aware of any source that claims he played a lot.}}
In this example, it may be better to use the {{tl|Citation needed span}} template, which has slightly different syntax, to highlight the word "avid".
== When not to use this template ==
Contentious material about [[Wikipedia:Biographies of living persons|living persons]] that is unsourced or poorly sourced should be '''removed immediately'''. Do not tag it; immediately remove it. This includes material that is disparaging, misrepresentative, insulting, harmful, or possibly [[libelous]]. For some policy about this, see the sections [[Wikipedia:Biographies of living persons#Remove contentious material that is unsourced or poorly sourced|"Remove contentious material that is unsourced or poorly sourced"]] at [[Wikipedia:Biographies of living persons]] and [[Wikipedia:Verifiability#Burden of evidence|"Burden of evidence"]] at [[Wikipedia:Verifiability]].
The {{tlf|Citation needed}} template is intended for use when there is a general question of the verifiability of a statement, or when an editor believes that a reference verifying the statement should be provided. Other templates are available for other or more specific issues; see the [[#Article_message_box_templates|list of inline templates]]. For example, claims that you think are incorrect should be tagged with {{Tl|Dubious}}, and those which represent a non-neutral view should be tagged with {{Tl|POV statement}}. Being specific about the nature of the problem will help other editors correct it.
Within a [[Wikipedia:lead section|lead section]] that is clearly written as a summary of a substantially sourced article:
* statements that are supported with citations within the body of the article should not be tagged
* statements that are {{em|not}} supported in the article body should be tagged with {{tl|Not verified in body}}
* statements that are not even {{em|mentioned}} in the article body should be tagged with {{tl|Lead extra info}}
If you have the time and ability to find an authoritative reference, please do so. Then add the citation yourself, or correct the article text. After all, the ultimate goal is not to merely identify problems, but to fix them.
While an editor may add this template to any uncited passage for any reason, many editors object to what they perceive as overuse of this tag, particularly in what is known as "[[drive-by]]" tagging, which is applying the tag without attempting to address the issues at all. Consider whether adding this tag in an article is the best approach before using it, and use it judiciously. Wikipedia's [[WP:Verifiability|verifiability policy]] requires neither reliable sources for [[Common knowledge|common well-known facts]] (e.g., "the Moon orbits the Earth"), nor that citations be repeated through every sentence in a paragraph. All direct quotations and facts whose accuracy might be challenged (e.g., statistics) require citations. See [[WP:MINREF]] for the list of material that is absolutely required to be followed by an [[Wikipedia:Inline citation|inline citation]], rather than a [[Wikipedia:General references|general reference]] or no citation at all. Also note that the [[WP:BURDEN|burden of evidence]] lies with the editor who adds or restores material.
This template is intended for specific passages that need citation. For entire articles or sections that contain significant material lacking citations (rather than just specific short passages), there are other, more appropriate templates, such as {{Tl|Unreferenced}} and {{Tl|More citations needed}} (for whole articles) as well as {{Tl|Unreferenced section}} and {{Tl|More citations needed section}} (for sections of articles).
Do not use this template to tag policies or guidelines.
== How to respond to this tag ==
The addition of this tag is a request for an inline citation to support the tagged statement. If you are able to provide a citation to support the claim, then please do so.
Except for [[WP:Biographies of living persons|contentious claims about living people]], which should be immediately removed if not cited, there is [[WP:There is no deadline|no specific deadline]] for providing citations. Please do not delete information that you believe is correct solely because no one has provided a citation within an arbitrary time limit. If there is some uncertainty about its accuracy, most editors are willing to wait at least a month to see whether a citation can be provided.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "The template is used to identify claims in articles, particularly if questionable, that lack a citation to a reliable source.",
"params": {
"date": {
"label": "Month and year",
"description": "Provides the month and year of the citation request; e.g., 'January 2013', but not 'jan13'",
"type": "string",
"autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}",
"suggested": true
},
"reason": {
"label": "Reason for citation",
"description": "A reason as to why, or for what content, the citation is needed; use single quotes, if any",
"type": "string"
}
}
}
</templatedata>
== Tracking categories ==
* {{clc|Pages containing citation needed template with unsupported parameters}} – a hidden maintenance/tracking category which is added to pages using this template with unsupported parameters
* {{clc|All articles with unsourced statements}}
== See also ==
* [[Citation needed]], Wikipedia's mainspace article about this template
* [[Template:Citation needed span]], variant of this template that explicitly attaches to a portion of text
* [[Template:Not verified in body]], a similar template specifically for the lead of articles
* [[Template:Medical citation needed]]
* [[Template:More citations needed]]
* [[Wikipedia:Citing sources]], especially [[Wikipedia:Citing sources#Unsourced material|Unsourced material]]
* [[Wikipedia:Reliable sources]]
* [[Wikipedia:Template index/Cleanup#Verifiability and sources]]
* [[Wikipedia:Template index/Sources of articles]]
* [[Wikipedia:Verifiability]]
=== Article message box templates ===
* {{Tl|Cite check}}: article or section may have inappropriate or misinterpreted citations.
* {{Tl|More citations needed}}: article or section has weak or incomplete sources, references, or citations.
* {{Tl|Unreferenced}} and {{Tl|Unreferenced section}}: article or section has no sources, references, or citations given at all.
* Citation method and style
** {{Tl|Citation style}}
** {{Tl|No footnotes}}
{{Inline cleanup tags}}
<includeonly>{{Sandbox other||
<!-- Template categories -->
[[Category:Inline citation and verifiability dispute templates]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
171pxd9hlzup7dhw6aj8rovk7cztb9m
74033
74032
2026-07-12T11:00:22Z
Robertsky
10424
1 versaun husi [[:en:Template:Citation_needed/doc]]
74032
wikitext
text/x-wiki
{{Redirect|Template:Proveit|the template about the referencing gadget|Template:User ProveIt}}
{{Documentation subpage}}
{{High-use}}
{{cascade-protected template}}
{{Notice|An introductory version of this documentation is provided at [[Wikipedia:Citation needed]].}}
{{Template shortcut|cn|fact}}
{{Lua|Module:Unsubst|Module:Check for unknown parameters}}
<noinclude>{{pp-semi-indef}}<!--persistent vandalism from anon users--></noinclude>
[[File:Webcomic xkcd - Wikipedian protester - English.svg|thumb|right|alt=xkcd comic "Wikipedian Protestor": as a politician addresses a crowd, a protestor within the crowd holds up a sign reading "[CITATION NEEDED]".|[[[Wikipedia:citation needed|citation needed]]]]]
{{Tlb|Citation needed}} is a [[Help:Template|template]] used to identify claims in articles, particularly if questionable, that need a [[Wikipedia:Citing sources|citation]] to a [[WP:Reliable sources|reliable source]]. This template produces the superscripted message {{citation needed|date=May 2013|reason=example}} and is installed with no spaces directly after punctuation.
== Usage ==
* {{tnull|Citation needed|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
* {{tnull|Citation needed|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|reason{{=}}''Your explanation here''}}
== Notes ==
* The {{para|date}} parameter consists of the full English name of the current month (with initial capital and rest lowercase), a space, and the year. For example, "{{xt|January 2013}}" but not "{{!xt|jan13}}" or "{{!xt|January 23, 2013}}". Deviation from this rule will place the article in [[:Category:Articles with invalid date parameter in template]].
** To automatically add the current date, you can use [[Help:Substitution|substitution]] like this: <syntaxhighlight lang="wikitext" inline>{{subst:Citation needed}}</syntaxhighlight>.
** If the {{para|date}} parameter is not given, a [[Wikipedia:Bots|bot]] will soon add it ([[User:AnomieBOT|AnomieBOT]]'s TagDater task) but it's better if you add it yourself to avoid an extra edit to the article's history.
* The {{para|reason}} parameter is for an explanation why you think the material needs a source. It is optional but very helpful. It is displayed as a [[tooltip]] in some browsers (hover the mouse here {{Citation needed|reason=If this text is displayed, the reason parameter is working in your browser|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} to check behaviour of your browser). For example, the following usage might be appropriate to the claim that "Humphrey Bogart was an avid snooker player": <br/> <syntaxhighlight lang="wikitext" inline>{{Citation needed|reason=This claim needs a reliable source; Bogart was a famous actor but his major biographies don't mention snooker.|date=July 2024}}</syntaxhighlight>
** Use only [[plain text]] for the {{para|reason}} parameter. It does not support [[Help:Wiki markup|wiki markup]] like wikilinks, which can mess up the tooltip.
** Some characters must be [[List of XML and HTML character entity references#List of character entity references in HTML|encoded]] within the {{para|reason}} parameter. Encode a double quotation mark <code>"</code> as <code>&quot;</code> or use a single quote <code>'</code> instead. Encode <code><</code> as <code>&lt;</code>, and <code>></code> as <code>&gt;</code>.
** If omitted, the tooltip "This claim needs references to reliable sources." is used by default.
* This template should usually be installed directly ''after'' punctuation, such as a full stop (period) or a comma.
* Use of this template places the article into [[:Category:All articles with unsourced statements]] and [[:Category:Articles with unsourced statements from {{CURRENTMONTHNAME}} {{CURRENTYEAR}}]] (example; past months are listed in [[:Category:Articles with unsourced statements]]).
* Remove the template when you append a citation to a statement, or when removing the statement.
== Examples ==
=== Example 1 ===
This sentence shows the template used at the end.<syntaxhighlight lang="wikitext" inline>{{Citation needed|reason=Reliable source needed for the whole sentence|date=July 2004}}</syntaxhighlight>
This wikitext will be rendered as follows:
:This sentence shows the template used at the end.{{Citation needed|reason=Reliable source needed for the whole sentence|date=July 2004}}
=== Example 2 ===
:[[Humphrey Bogart]] was an avid snooker player.<syntaxhighlight lang="wikitext" inline>{{Citation needed|date=July 2004}}</syntaxhighlight>
The template indicates that it may be that Humphrey Bogart played snooker at some point and it may be that he was enthusiastic about the game but no ''reliable'', ''published'' sources were given to verify it and the information is not considered [[common knowledge]].
:[[Humphrey Bogart]] was an avid snooker player.{{Citation needed|date=July 2004}}
=== Example 3 ===
If it is considered that he might have played snooker but was not an avid player, a reason for the need of a citation may be given, displayed as a tooltip when the mouse hovers on "citation needed":
:[[Humphrey Bogart]] was an avid snooker player.<syntaxhighlight lang="wikitext" inline>{{Citation needed|date=July 2004|reason=Only aware he was photographed playing once. Not aware of any source that claims he played a lot.}}</syntaxhighlight>
:[[Humphrey Bogart]] was an avid snooker player.{{Citation needed|date=July 2004|reason=Only aware he was photographed playing once. Not aware of any source that claims he played a lot.}}
In this example, it may be better to use the {{tl|Citation needed span}} template, which has slightly different syntax, to highlight the word "avid".
== When not to use this template ==
Contentious material about [[Wikipedia:Biographies of living persons|living persons]] that is unsourced or poorly sourced should be '''removed immediately'''. Do not tag it; immediately remove it. This includes material that is disparaging, misrepresentative, insulting, harmful, or possibly [[libelous]]. For some policy about this, see the sections [[Wikipedia:Biographies of living persons#Remove contentious material that is unsourced or poorly sourced|"Remove contentious material that is unsourced or poorly sourced"]] at [[Wikipedia:Biographies of living persons]] and [[Wikipedia:Verifiability#Burden of evidence|"Burden of evidence"]] at [[Wikipedia:Verifiability]].
The {{tlf|Citation needed}} template is intended for use when there is a general question of the verifiability of a statement, or when an editor believes that a reference verifying the statement should be provided. Other templates are available for other or more specific issues; see the [[#Article_message_box_templates|list of inline templates]]. For example, claims that you think are incorrect should be tagged with {{Tl|Dubious}}, and those which represent a non-neutral view should be tagged with {{Tl|POV statement}}. Being specific about the nature of the problem will help other editors correct it.
Within a [[Wikipedia:lead section|lead section]] that is clearly written as a summary of a substantially sourced article:
* statements that are supported with citations within the body of the article should not be tagged
* statements that are {{em|not}} supported in the article body should be tagged with {{tl|Not verified in body}}
* statements that are not even {{em|mentioned}} in the article body should be tagged with {{tl|Lead extra info}}
If you have the time and ability to find an authoritative reference, please do so. Then add the citation yourself, or correct the article text. After all, the ultimate goal is not to merely identify problems, but to fix them.
While an editor may add this template to any uncited passage for any reason, many editors object to what they perceive as overuse of this tag, particularly in what is known as "[[drive-by]]" tagging, which is applying the tag without attempting to address the issues at all. Consider whether adding this tag in an article is the best approach before using it, and use it judiciously. Wikipedia's [[WP:Verifiability|verifiability policy]] requires neither reliable sources for [[Common knowledge|common well-known facts]] (e.g., "the Moon orbits the Earth"), nor that citations be repeated through every sentence in a paragraph. All direct quotations and facts whose accuracy might be challenged (e.g., statistics) require citations. See [[WP:MINREF]] for the list of material that is absolutely required to be followed by an [[Wikipedia:Inline citation|inline citation]], rather than a [[Wikipedia:General references|general reference]] or no citation at all. Also note that the [[WP:BURDEN|burden of evidence]] lies with the editor who adds or restores material.
This template is intended for specific passages that need citation. For entire articles or sections that contain significant material lacking citations (rather than just specific short passages), there are other, more appropriate templates, such as {{Tl|Unreferenced}} and {{Tl|More citations needed}} (for whole articles) as well as {{Tl|Unreferenced section}} and {{Tl|More citations needed section}} (for sections of articles).
Do not use this template to tag policies or guidelines.
== How to respond to this tag ==
The addition of this tag is a request for an inline citation to support the tagged statement. If you are able to provide a citation to support the claim, then please do so.
Except for [[WP:Biographies of living persons|contentious claims about living people]], which should be immediately removed if not cited, there is [[WP:There is no deadline|no specific deadline]] for providing citations. Please do not delete information that you believe is correct solely because no one has provided a citation within an arbitrary time limit. If there is some uncertainty about its accuracy, most editors are willing to wait at least a month to see whether a citation can be provided.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "The template is used to identify claims in articles, particularly if questionable, that lack a citation to a reliable source.",
"params": {
"date": {
"label": "Month and year",
"description": "Provides the month and year of the citation request; e.g., 'January 2013', but not 'jan13'",
"type": "string",
"autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}",
"suggested": true
},
"reason": {
"label": "Reason for citation",
"description": "A reason as to why, or for what content, the citation is needed; use single quotes, if any",
"type": "string"
}
}
}
</templatedata>
== Tracking categories ==
* {{clc|Pages containing citation needed template with unsupported parameters}} – a hidden maintenance/tracking category which is added to pages using this template with unsupported parameters
* {{clc|All articles with unsourced statements}}
== See also ==
* [[Citation needed]], Wikipedia's mainspace article about this template
* [[Template:Citation needed span]], variant of this template that explicitly attaches to a portion of text
* [[Template:Not verified in body]], a similar template specifically for the lead of articles
* [[Template:Medical citation needed]]
* [[Template:More citations needed]]
* [[Wikipedia:Citing sources]], especially [[Wikipedia:Citing sources#Unsourced material|Unsourced material]]
* [[Wikipedia:Reliable sources]]
* [[Wikipedia:Template index/Cleanup#Verifiability and sources]]
* [[Wikipedia:Template index/Sources of articles]]
* [[Wikipedia:Verifiability]]
=== Article message box templates ===
* {{Tl|Cite check}}: article or section may have inappropriate or misinterpreted citations.
* {{Tl|More citations needed}}: article or section has weak or incomplete sources, references, or citations.
* {{Tl|Unreferenced}} and {{Tl|Unreferenced section}}: article or section has no sources, references, or citations given at all.
* Citation method and style
** {{Tl|Citation style}}
** {{Tl|No footnotes}}
{{Inline cleanup tags}}
<includeonly>{{Sandbox other||
<!-- Template categories -->
[[Category:Inline citation and verifiability dispute templates]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
171pxd9hlzup7dhw6aj8rovk7cztb9m
74040
74033
2026-07-12T11:00:54Z
Robertsky
10424
Robertsky moveu [[Template:Citation needed/doc]] para [[Template:Presiza sitasaun/doc]]
74032
wikitext
text/x-wiki
{{Redirect|Template:Proveit|the template about the referencing gadget|Template:User ProveIt}}
{{Documentation subpage}}
{{High-use}}
{{cascade-protected template}}
{{Notice|An introductory version of this documentation is provided at [[Wikipedia:Citation needed]].}}
{{Template shortcut|cn|fact}}
{{Lua|Module:Unsubst|Module:Check for unknown parameters}}
<noinclude>{{pp-semi-indef}}<!--persistent vandalism from anon users--></noinclude>
[[File:Webcomic xkcd - Wikipedian protester - English.svg|thumb|right|alt=xkcd comic "Wikipedian Protestor": as a politician addresses a crowd, a protestor within the crowd holds up a sign reading "[CITATION NEEDED]".|[[[Wikipedia:citation needed|citation needed]]]]]
{{Tlb|Citation needed}} is a [[Help:Template|template]] used to identify claims in articles, particularly if questionable, that need a [[Wikipedia:Citing sources|citation]] to a [[WP:Reliable sources|reliable source]]. This template produces the superscripted message {{citation needed|date=May 2013|reason=example}} and is installed with no spaces directly after punctuation.
== Usage ==
* {{tnull|Citation needed|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
* {{tnull|Citation needed|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|reason{{=}}''Your explanation here''}}
== Notes ==
* The {{para|date}} parameter consists of the full English name of the current month (with initial capital and rest lowercase), a space, and the year. For example, "{{xt|January 2013}}" but not "{{!xt|jan13}}" or "{{!xt|January 23, 2013}}". Deviation from this rule will place the article in [[:Category:Articles with invalid date parameter in template]].
** To automatically add the current date, you can use [[Help:Substitution|substitution]] like this: <syntaxhighlight lang="wikitext" inline>{{subst:Citation needed}}</syntaxhighlight>.
** If the {{para|date}} parameter is not given, a [[Wikipedia:Bots|bot]] will soon add it ([[User:AnomieBOT|AnomieBOT]]'s TagDater task) but it's better if you add it yourself to avoid an extra edit to the article's history.
* The {{para|reason}} parameter is for an explanation why you think the material needs a source. It is optional but very helpful. It is displayed as a [[tooltip]] in some browsers (hover the mouse here {{Citation needed|reason=If this text is displayed, the reason parameter is working in your browser|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} to check behaviour of your browser). For example, the following usage might be appropriate to the claim that "Humphrey Bogart was an avid snooker player": <br/> <syntaxhighlight lang="wikitext" inline>{{Citation needed|reason=This claim needs a reliable source; Bogart was a famous actor but his major biographies don't mention snooker.|date=July 2024}}</syntaxhighlight>
** Use only [[plain text]] for the {{para|reason}} parameter. It does not support [[Help:Wiki markup|wiki markup]] like wikilinks, which can mess up the tooltip.
** Some characters must be [[List of XML and HTML character entity references#List of character entity references in HTML|encoded]] within the {{para|reason}} parameter. Encode a double quotation mark <code>"</code> as <code>&quot;</code> or use a single quote <code>'</code> instead. Encode <code><</code> as <code>&lt;</code>, and <code>></code> as <code>&gt;</code>.
** If omitted, the tooltip "This claim needs references to reliable sources." is used by default.
* This template should usually be installed directly ''after'' punctuation, such as a full stop (period) or a comma.
* Use of this template places the article into [[:Category:All articles with unsourced statements]] and [[:Category:Articles with unsourced statements from {{CURRENTMONTHNAME}} {{CURRENTYEAR}}]] (example; past months are listed in [[:Category:Articles with unsourced statements]]).
* Remove the template when you append a citation to a statement, or when removing the statement.
== Examples ==
=== Example 1 ===
This sentence shows the template used at the end.<syntaxhighlight lang="wikitext" inline>{{Citation needed|reason=Reliable source needed for the whole sentence|date=July 2004}}</syntaxhighlight>
This wikitext will be rendered as follows:
:This sentence shows the template used at the end.{{Citation needed|reason=Reliable source needed for the whole sentence|date=July 2004}}
=== Example 2 ===
:[[Humphrey Bogart]] was an avid snooker player.<syntaxhighlight lang="wikitext" inline>{{Citation needed|date=July 2004}}</syntaxhighlight>
The template indicates that it may be that Humphrey Bogart played snooker at some point and it may be that he was enthusiastic about the game but no ''reliable'', ''published'' sources were given to verify it and the information is not considered [[common knowledge]].
:[[Humphrey Bogart]] was an avid snooker player.{{Citation needed|date=July 2004}}
=== Example 3 ===
If it is considered that he might have played snooker but was not an avid player, a reason for the need of a citation may be given, displayed as a tooltip when the mouse hovers on "citation needed":
:[[Humphrey Bogart]] was an avid snooker player.<syntaxhighlight lang="wikitext" inline>{{Citation needed|date=July 2004|reason=Only aware he was photographed playing once. Not aware of any source that claims he played a lot.}}</syntaxhighlight>
:[[Humphrey Bogart]] was an avid snooker player.{{Citation needed|date=July 2004|reason=Only aware he was photographed playing once. Not aware of any source that claims he played a lot.}}
In this example, it may be better to use the {{tl|Citation needed span}} template, which has slightly different syntax, to highlight the word "avid".
== When not to use this template ==
Contentious material about [[Wikipedia:Biographies of living persons|living persons]] that is unsourced or poorly sourced should be '''removed immediately'''. Do not tag it; immediately remove it. This includes material that is disparaging, misrepresentative, insulting, harmful, or possibly [[libelous]]. For some policy about this, see the sections [[Wikipedia:Biographies of living persons#Remove contentious material that is unsourced or poorly sourced|"Remove contentious material that is unsourced or poorly sourced"]] at [[Wikipedia:Biographies of living persons]] and [[Wikipedia:Verifiability#Burden of evidence|"Burden of evidence"]] at [[Wikipedia:Verifiability]].
The {{tlf|Citation needed}} template is intended for use when there is a general question of the verifiability of a statement, or when an editor believes that a reference verifying the statement should be provided. Other templates are available for other or more specific issues; see the [[#Article_message_box_templates|list of inline templates]]. For example, claims that you think are incorrect should be tagged with {{Tl|Dubious}}, and those which represent a non-neutral view should be tagged with {{Tl|POV statement}}. Being specific about the nature of the problem will help other editors correct it.
Within a [[Wikipedia:lead section|lead section]] that is clearly written as a summary of a substantially sourced article:
* statements that are supported with citations within the body of the article should not be tagged
* statements that are {{em|not}} supported in the article body should be tagged with {{tl|Not verified in body}}
* statements that are not even {{em|mentioned}} in the article body should be tagged with {{tl|Lead extra info}}
If you have the time and ability to find an authoritative reference, please do so. Then add the citation yourself, or correct the article text. After all, the ultimate goal is not to merely identify problems, but to fix them.
While an editor may add this template to any uncited passage for any reason, many editors object to what they perceive as overuse of this tag, particularly in what is known as "[[drive-by]]" tagging, which is applying the tag without attempting to address the issues at all. Consider whether adding this tag in an article is the best approach before using it, and use it judiciously. Wikipedia's [[WP:Verifiability|verifiability policy]] requires neither reliable sources for [[Common knowledge|common well-known facts]] (e.g., "the Moon orbits the Earth"), nor that citations be repeated through every sentence in a paragraph. All direct quotations and facts whose accuracy might be challenged (e.g., statistics) require citations. See [[WP:MINREF]] for the list of material that is absolutely required to be followed by an [[Wikipedia:Inline citation|inline citation]], rather than a [[Wikipedia:General references|general reference]] or no citation at all. Also note that the [[WP:BURDEN|burden of evidence]] lies with the editor who adds or restores material.
This template is intended for specific passages that need citation. For entire articles or sections that contain significant material lacking citations (rather than just specific short passages), there are other, more appropriate templates, such as {{Tl|Unreferenced}} and {{Tl|More citations needed}} (for whole articles) as well as {{Tl|Unreferenced section}} and {{Tl|More citations needed section}} (for sections of articles).
Do not use this template to tag policies or guidelines.
== How to respond to this tag ==
The addition of this tag is a request for an inline citation to support the tagged statement. If you are able to provide a citation to support the claim, then please do so.
Except for [[WP:Biographies of living persons|contentious claims about living people]], which should be immediately removed if not cited, there is [[WP:There is no deadline|no specific deadline]] for providing citations. Please do not delete information that you believe is correct solely because no one has provided a citation within an arbitrary time limit. If there is some uncertainty about its accuracy, most editors are willing to wait at least a month to see whether a citation can be provided.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "The template is used to identify claims in articles, particularly if questionable, that lack a citation to a reliable source.",
"params": {
"date": {
"label": "Month and year",
"description": "Provides the month and year of the citation request; e.g., 'January 2013', but not 'jan13'",
"type": "string",
"autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}",
"suggested": true
},
"reason": {
"label": "Reason for citation",
"description": "A reason as to why, or for what content, the citation is needed; use single quotes, if any",
"type": "string"
}
}
}
</templatedata>
== Tracking categories ==
* {{clc|Pages containing citation needed template with unsupported parameters}} – a hidden maintenance/tracking category which is added to pages using this template with unsupported parameters
* {{clc|All articles with unsourced statements}}
== See also ==
* [[Citation needed]], Wikipedia's mainspace article about this template
* [[Template:Citation needed span]], variant of this template that explicitly attaches to a portion of text
* [[Template:Not verified in body]], a similar template specifically for the lead of articles
* [[Template:Medical citation needed]]
* [[Template:More citations needed]]
* [[Wikipedia:Citing sources]], especially [[Wikipedia:Citing sources#Unsourced material|Unsourced material]]
* [[Wikipedia:Reliable sources]]
* [[Wikipedia:Template index/Cleanup#Verifiability and sources]]
* [[Wikipedia:Template index/Sources of articles]]
* [[Wikipedia:Verifiability]]
=== Article message box templates ===
* {{Tl|Cite check}}: article or section may have inappropriate or misinterpreted citations.
* {{Tl|More citations needed}}: article or section has weak or incomplete sources, references, or citations.
* {{Tl|Unreferenced}} and {{Tl|Unreferenced section}}: article or section has no sources, references, or citations given at all.
* Citation method and style
** {{Tl|Citation style}}
** {{Tl|No footnotes}}
{{Inline cleanup tags}}
<includeonly>{{Sandbox other||
<!-- Template categories -->
[[Category:Inline citation and verifiability dispute templates]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
171pxd9hlzup7dhw6aj8rovk7cztb9m
Template:Pp-semi-indef
10
8685
74034
2017-03-25T12:38:46Z
en>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Pp-semi-indef]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor acces...
74034
wikitext
text/x-wiki
<includeonly>{{#invoke:Protection banner|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
5t6lal9n9hcpwsso2obr7pcyjbg26xc
74035
74034
2026-07-12T11:00:22Z
Robertsky
10424
1 versaun husi [[:en:Template:Pp-semi-indef]]
74034
wikitext
text/x-wiki
<includeonly>{{#invoke:Protection banner|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
5t6lal9n9hcpwsso2obr7pcyjbg26xc
Template:Citation needed
10
8686
74039
2026-07-12T11:00:54Z
Robertsky
10424
Robertsky moveu [[Template:Citation needed]] para [[Template:Presiza sitasaun]]
74039
wikitext
text/x-wiki
#REDIRECIONAMENTO [[Template:Presiza sitasaun]]
3wjyvlhu5l8zddoftjn9ffty52n090i
Template:Citation needed/doc
10
8687
74041
2026-07-12T11:00:55Z
Robertsky
10424
Robertsky moveu [[Template:Citation needed/doc]] para [[Template:Presiza sitasaun/doc]]
74041
wikitext
text/x-wiki
#REDIRECIONAMENTO [[Template:Presiza sitasaun/doc]]
89hf2suy5uakvdtt9b8i8vyi2qdewp3
Módulo:Webarchive/data
828
8688
74046
2026-02-23T22:15:39Z
en>Chaotic Enby
0
might need service id
74046
Scribunto
text/plain
--[[--------------------------< C O N F I G U R A T I O N >----------------------------------------------------
global configuration settings
]]
local config = {
maxurls = 10, -- Max number of URLs allowed.
tname = 'Webarchive', -- name of calling template. Change if template rename.
verifydates = true, -- See documentation. Set false to disable.
}
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
List of namespaces that should not be included in citation error categories.
Note: Namespace names should use underscores instead of spaces.
]]
local uncategorized_namespaces = { -- same list as specified at [[Module:Citation/CS1/Configuration]]
['User']=true, ['Talk']=true, ['User_talk']=true, ['Wikipedia_talk']=true, ['File_talk']=true,
['Template_talk']=true, ['Help_talk']=true, ['Category_talk']=true, ['Portal_talk']=true,
['Book_talk']=true, ['Draft_talk']=true, ['Module_talk']=true,
['MediaWiki_talk']=true,
}
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; -- list of Lua patterns found in page names of pages we should not categorize
local excepted_pages = { -- these pages will be categorized if set true; set to nil to disable
['Module talk:Webarchive/testcases'] = true, -- test cases pages used during development
['Template:Webarchive/testcases/Production'] = true,
}
--[[--------------------------< C A T E G O R I E S >----------------------------------------------------------
this is a table of all categories supported by Module:Webarchive
]]
local categories = {
archiveis = 'Category:Webarchive template archiveis links',
error = 'Category:Webarchive template errors',
other = 'Category:Webarchive template other archives',
unknown = 'Category:Webarchive template unknown archives',
warning = 'Category:Webarchive template warnings',
wayback = 'Category:Webarchive template wayback links',
webcite = 'Category:Webarchive template webcite links',
}
--[[--------------------------< P R E F I X E S >--------------------------------------------------------------
used only with serviceName(), this table holds the two generic tail-text prefixes specified by services['<service name>'][1]
]]
local prefixes = {
at = 'at',
atthe = 'at the',
}
--[=[-------------------------< S E R V I C E S >--------------------------------------------------------------
this is a table of tables for archive services. Each service table has:
[1]=prefix; may be boolean true or false, or text string where:
true indicates that the prefix is taken from prefixes.atthe
false indicates that the prefix is taken from prefixes.at
'text string' is used in lieu of the typical 'at' or 'at the' prefix
[2]=wikilink target article that describes the service; set to nil if not used
[3]=wikilink label; the label in [[target|label]]; set to nil if not used; when there is not article ([2] is nil) use this to name the service; see wikiwix in the table
[4]=service ID; set to nil if not used
[5]=tracking category key from the categories table; set to nil if not used
[6]=postfix; text string to be appended at the end of the tail string - see webarchive.loc.gov in the table
]=]
local services = {
['archive.ec'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.fo'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.is'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.li'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.md'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.org'] = {true, 'Wayback Machine', nil, 'wayback', categories.wayback},
['archive.ph'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.today'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.vn'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive-it.org'] = {false, 'Archive-It', nil, 'archiveit'},
['arquivo.pt'] = {true, nil, 'Portuguese Web Archive'},
['bibalex.org'] = {false, 'Bibliotheca Alexandrina#Internet Archive partnership', 'Bibliotheca Alexandrina'},
['collectionscanada'] = {true, 'Canadian Government Web Archive'},
['conifer.rhizome.org'] = {false, 'Rhizome_(organization)#Digital_Preservation_Program', 'Conifer Rhizome'},
['europarchive.org'] = {true, 'National Library of Ireland'},
['freezepage.com'] = {false, nil, 'Freezepage'},
['ghostarchive.org'] = {false, nil, 'Ghost Archive'},
['haw.nsk'] = {true, 'Croatian Web Archive (HAW)'},
['langzeitarchivierung.bib-bvb.de'] = {false, 'Bavarian State Library'},
['loc.gov'] = {true, 'Library of Congress'},
['megalodon.jp'] = {false, 'Megalodon (website)', 'megalodon.jp', 'megalodon'},
['nationalarchives.gov.uk'] = {true, 'UK Government Web Archive', nil, 'ukgwa'},
['nlb.gov.sg'] = {false, 'Web Archive Singapore'},
['parliament.uk'] = {true, 'UK Parliament\'s Web Archive'},
['perma.cc'] = {false, 'Perma.cc'},
['perma-archives.cc'] = {false, 'Perma.cc'},
['proni.gov'] = {true, 'Public Record Office of Northern Ireland'},
['screenshots.com'] = {false, nil, 'Screenshots'},
['stanford.edu'] = {true, 'Stanford University Libraries', 'Stanford Web Archive'},
['timetravel.mementoweb.org'] = {false, 'Memento Project'},
['uni-lj.si'] = {true, nil, 'Slovenian Web Archive'},
['veebiarhiiv.digar.ee'] = {true, nil, 'Estonian Web Archive'},
['vefsafn.is'] = {true, 'National and University Library of Iceland'},
['webarchive.bac-lac.gc.ca'] = {false, 'Library and Archives Canada'},
['webarchive.loc.gov'] = {true, 'Library of Congress', nil, 'locwebarchives', nil, 'Web Archives'},
['webarchive.nla.gov.au'] = {true, 'Australian Web Archive'},
['webarchive.org.uk'] = {true, 'UK Web Archive'},
['webcache.googleusercontent.com'] = {false, nil, 'Google Cache'},
['webcitation.org'] = {false, 'WebCite', nil, 'webcite', categories.webcite},
['webharvest.gov'] = {true, 'National Archives and Records Administration'},
['webrecorder.io'] = {false, 'webrecorder.io'},
['wikiwix.com'] = {false, nil, 'Wikiwix'},
['yorku.ca'] = {false, 'York University Libraries', 'York University Digital Library'},
}
--[[--------------------------< S T A T I C T E X T >--------------------------------------------------------
for internationalzation
]]
local s_text = {
addlarchives = 'Additional archives',
addlpages = 'Additional pages archived on', -- TODO why the there? replace with regular space?
Archive_index = 'Archive index',
Archived = 'Archived',
archived = 'archived',
archive = 'archive',
Page = 'Page',
deprecated = '[[Wikipedia:Archive.today guidance|Deprecated link]]'
}
--[[--------------------------< E R R _ W A R N _ M S G S >----------------------------------------------------
these tables hold error and warning message text
]]
local err_warn_msgs = {
date_err = '(Date error)', -- decodeWebciteDate, decodeWaybackDate, decodeArchiveisDate
date_miss = '(Date missing)', -- parseExtraArgs
deprecated = '(Error: Deprecated archiving service)', -- See [[Wikipedia:Archive.today guidance]]
ts_short = '(Timestamp date length)', -- decodeWaybackDate timestamp less than 8 digits
ts_date = '(Timestamp date invalid)', -- decodeWaybackDate timestamp not a valid date
unknown_url = '(Error: unknown archive URL)', -- serviceName
unnamed_params = '(Positional parameters ignored)',
--warnings
mismatch = '<sup>(Date mismatch)</sup>', -- webarchive
ts_len = '<sup>(Timestamp length)</sup>', -- decodeWaybackDate, decodeArchiveisDate timestamp not 14 digits
ts_cal = '<sup>(Calendar)</sup>', -- decodeWaybackDate timestamp has trailing splat
}
local crit_err_msgs = { -- critical error messages
conflicting = 'Conflicting |$1= and |$2=',
empty = 'Empty url',
-- iabot1 = 'https://web.http', -- TODO: these iabot bugs perportedly fixed; removing these causes lua script error
-- iabot2 = 'Invalid URL', -- at Template:Webarchive/testcases/Production; resolve that before deleting these messages
invalid_url = 'Invalid URL',
ts_nan = 'Timestamp not a number',
unknown = 'Unknown problem. Please report on template talk page',
}
--[[--------------------------< D A T E I N T E R N A T I O N A L I Z A T I O N >----------------------------
these tables hold data that is used when converting date formats from non-English languages (because mw.language.getContentLanguage:formatDate()
doesn't understand non-English month names)
]]
local month_num = { -- retain English language names even though they may not be strictly required on the local wiki
['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12,
['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12,
-- add local wiki month-names to number translation here
-- [''] = 1, [''] = 2, [''] = 3, [''] = 4, [''] = 5, [''] = 6, [''] = 7, [''] = 8, [''] = 9, [''] = 10, [''] = 11, [''] = 12,
};
-- when the local wiki uses non-western digits in dates, local wiki digits must be
-- translated to western digits; lua only understands western digits
local digits = { -- use this table to aid translation
-- [''] = 0, [''] = 1, [''] = 2, [''] = 3, [''] = 4, [''] = 5, [''] = 6, [''] = 7, [''] = 8, [''] = 9, -- fill these table indexes with local digits
enable = false -- set to true to enable local-digit to western-digit translation
};
--[[--------------------------< P A R A M E T E R I N T E R N A T I O N A L I Z A T I O N >------------------
this table holds tables of parameter names and their non-English aliases. In the enum_params table '#' is a single
character placeholder for 1 or more digit characters
parameter names in this table shall be lowercase
]]
local params = {
['url'] = {'url'},
['date'] = {'date', 'datum'},
['title'] = {'title', 'titel'},
['nolink'] = {'nolink'},
['format'] = {'format'}
}
local enum_params = {
['url#'] = {'url#'},
['date#'] = {'date#', 'datum#'},
['title#'] = {'title#', 'titel#'},
}
local format_vals = { -- |format= accepts two values; add local language variants here
['addlpages'] = {'addlpages'},
['addlarchives'] = {'addlarchives'},
}
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
categories = categories,
config = config,
crit_err_msgs = crit_err_msgs,
digits = digits,
enum_params = enum_params,
err_warn_msgs = err_warn_msgs,
excepted_pages = excepted_pages,
format_vals = format_vals,
month_num = month_num,
params = params,
prefixes = prefixes,
services = services,
s_text = s_text,
uncategorized_namespaces = uncategorized_namespaces,
uncategorized_subpages = uncategorized_subpages,
}
snj0coaylefgrnbrxw6287n56cu8bh3
74047
74046
2026-07-12T11:06:54Z
Robertsky
10424
1 versaun husi [[:en:Module:Webarchive/data]]
74046
Scribunto
text/plain
--[[--------------------------< C O N F I G U R A T I O N >----------------------------------------------------
global configuration settings
]]
local config = {
maxurls = 10, -- Max number of URLs allowed.
tname = 'Webarchive', -- name of calling template. Change if template rename.
verifydates = true, -- See documentation. Set false to disable.
}
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
List of namespaces that should not be included in citation error categories.
Note: Namespace names should use underscores instead of spaces.
]]
local uncategorized_namespaces = { -- same list as specified at [[Module:Citation/CS1/Configuration]]
['User']=true, ['Talk']=true, ['User_talk']=true, ['Wikipedia_talk']=true, ['File_talk']=true,
['Template_talk']=true, ['Help_talk']=true, ['Category_talk']=true, ['Portal_talk']=true,
['Book_talk']=true, ['Draft_talk']=true, ['Module_talk']=true,
['MediaWiki_talk']=true,
}
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; -- list of Lua patterns found in page names of pages we should not categorize
local excepted_pages = { -- these pages will be categorized if set true; set to nil to disable
['Module talk:Webarchive/testcases'] = true, -- test cases pages used during development
['Template:Webarchive/testcases/Production'] = true,
}
--[[--------------------------< C A T E G O R I E S >----------------------------------------------------------
this is a table of all categories supported by Module:Webarchive
]]
local categories = {
archiveis = 'Category:Webarchive template archiveis links',
error = 'Category:Webarchive template errors',
other = 'Category:Webarchive template other archives',
unknown = 'Category:Webarchive template unknown archives',
warning = 'Category:Webarchive template warnings',
wayback = 'Category:Webarchive template wayback links',
webcite = 'Category:Webarchive template webcite links',
}
--[[--------------------------< P R E F I X E S >--------------------------------------------------------------
used only with serviceName(), this table holds the two generic tail-text prefixes specified by services['<service name>'][1]
]]
local prefixes = {
at = 'at',
atthe = 'at the',
}
--[=[-------------------------< S E R V I C E S >--------------------------------------------------------------
this is a table of tables for archive services. Each service table has:
[1]=prefix; may be boolean true or false, or text string where:
true indicates that the prefix is taken from prefixes.atthe
false indicates that the prefix is taken from prefixes.at
'text string' is used in lieu of the typical 'at' or 'at the' prefix
[2]=wikilink target article that describes the service; set to nil if not used
[3]=wikilink label; the label in [[target|label]]; set to nil if not used; when there is not article ([2] is nil) use this to name the service; see wikiwix in the table
[4]=service ID; set to nil if not used
[5]=tracking category key from the categories table; set to nil if not used
[6]=postfix; text string to be appended at the end of the tail string - see webarchive.loc.gov in the table
]=]
local services = {
['archive.ec'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.fo'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.is'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.li'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.md'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.org'] = {true, 'Wayback Machine', nil, 'wayback', categories.wayback},
['archive.ph'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.today'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive.vn'] = {false, 'archive.today', nil, 'archiveis', categories.archiveis},
['archive-it.org'] = {false, 'Archive-It', nil, 'archiveit'},
['arquivo.pt'] = {true, nil, 'Portuguese Web Archive'},
['bibalex.org'] = {false, 'Bibliotheca Alexandrina#Internet Archive partnership', 'Bibliotheca Alexandrina'},
['collectionscanada'] = {true, 'Canadian Government Web Archive'},
['conifer.rhizome.org'] = {false, 'Rhizome_(organization)#Digital_Preservation_Program', 'Conifer Rhizome'},
['europarchive.org'] = {true, 'National Library of Ireland'},
['freezepage.com'] = {false, nil, 'Freezepage'},
['ghostarchive.org'] = {false, nil, 'Ghost Archive'},
['haw.nsk'] = {true, 'Croatian Web Archive (HAW)'},
['langzeitarchivierung.bib-bvb.de'] = {false, 'Bavarian State Library'},
['loc.gov'] = {true, 'Library of Congress'},
['megalodon.jp'] = {false, 'Megalodon (website)', 'megalodon.jp', 'megalodon'},
['nationalarchives.gov.uk'] = {true, 'UK Government Web Archive', nil, 'ukgwa'},
['nlb.gov.sg'] = {false, 'Web Archive Singapore'},
['parliament.uk'] = {true, 'UK Parliament\'s Web Archive'},
['perma.cc'] = {false, 'Perma.cc'},
['perma-archives.cc'] = {false, 'Perma.cc'},
['proni.gov'] = {true, 'Public Record Office of Northern Ireland'},
['screenshots.com'] = {false, nil, 'Screenshots'},
['stanford.edu'] = {true, 'Stanford University Libraries', 'Stanford Web Archive'},
['timetravel.mementoweb.org'] = {false, 'Memento Project'},
['uni-lj.si'] = {true, nil, 'Slovenian Web Archive'},
['veebiarhiiv.digar.ee'] = {true, nil, 'Estonian Web Archive'},
['vefsafn.is'] = {true, 'National and University Library of Iceland'},
['webarchive.bac-lac.gc.ca'] = {false, 'Library and Archives Canada'},
['webarchive.loc.gov'] = {true, 'Library of Congress', nil, 'locwebarchives', nil, 'Web Archives'},
['webarchive.nla.gov.au'] = {true, 'Australian Web Archive'},
['webarchive.org.uk'] = {true, 'UK Web Archive'},
['webcache.googleusercontent.com'] = {false, nil, 'Google Cache'},
['webcitation.org'] = {false, 'WebCite', nil, 'webcite', categories.webcite},
['webharvest.gov'] = {true, 'National Archives and Records Administration'},
['webrecorder.io'] = {false, 'webrecorder.io'},
['wikiwix.com'] = {false, nil, 'Wikiwix'},
['yorku.ca'] = {false, 'York University Libraries', 'York University Digital Library'},
}
--[[--------------------------< S T A T I C T E X T >--------------------------------------------------------
for internationalzation
]]
local s_text = {
addlarchives = 'Additional archives',
addlpages = 'Additional pages archived on', -- TODO why the there? replace with regular space?
Archive_index = 'Archive index',
Archived = 'Archived',
archived = 'archived',
archive = 'archive',
Page = 'Page',
deprecated = '[[Wikipedia:Archive.today guidance|Deprecated link]]'
}
--[[--------------------------< E R R _ W A R N _ M S G S >----------------------------------------------------
these tables hold error and warning message text
]]
local err_warn_msgs = {
date_err = '(Date error)', -- decodeWebciteDate, decodeWaybackDate, decodeArchiveisDate
date_miss = '(Date missing)', -- parseExtraArgs
deprecated = '(Error: Deprecated archiving service)', -- See [[Wikipedia:Archive.today guidance]]
ts_short = '(Timestamp date length)', -- decodeWaybackDate timestamp less than 8 digits
ts_date = '(Timestamp date invalid)', -- decodeWaybackDate timestamp not a valid date
unknown_url = '(Error: unknown archive URL)', -- serviceName
unnamed_params = '(Positional parameters ignored)',
--warnings
mismatch = '<sup>(Date mismatch)</sup>', -- webarchive
ts_len = '<sup>(Timestamp length)</sup>', -- decodeWaybackDate, decodeArchiveisDate timestamp not 14 digits
ts_cal = '<sup>(Calendar)</sup>', -- decodeWaybackDate timestamp has trailing splat
}
local crit_err_msgs = { -- critical error messages
conflicting = 'Conflicting |$1= and |$2=',
empty = 'Empty url',
-- iabot1 = 'https://web.http', -- TODO: these iabot bugs perportedly fixed; removing these causes lua script error
-- iabot2 = 'Invalid URL', -- at Template:Webarchive/testcases/Production; resolve that before deleting these messages
invalid_url = 'Invalid URL',
ts_nan = 'Timestamp not a number',
unknown = 'Unknown problem. Please report on template talk page',
}
--[[--------------------------< D A T E I N T E R N A T I O N A L I Z A T I O N >----------------------------
these tables hold data that is used when converting date formats from non-English languages (because mw.language.getContentLanguage:formatDate()
doesn't understand non-English month names)
]]
local month_num = { -- retain English language names even though they may not be strictly required on the local wiki
['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12,
['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12,
-- add local wiki month-names to number translation here
-- [''] = 1, [''] = 2, [''] = 3, [''] = 4, [''] = 5, [''] = 6, [''] = 7, [''] = 8, [''] = 9, [''] = 10, [''] = 11, [''] = 12,
};
-- when the local wiki uses non-western digits in dates, local wiki digits must be
-- translated to western digits; lua only understands western digits
local digits = { -- use this table to aid translation
-- [''] = 0, [''] = 1, [''] = 2, [''] = 3, [''] = 4, [''] = 5, [''] = 6, [''] = 7, [''] = 8, [''] = 9, -- fill these table indexes with local digits
enable = false -- set to true to enable local-digit to western-digit translation
};
--[[--------------------------< P A R A M E T E R I N T E R N A T I O N A L I Z A T I O N >------------------
this table holds tables of parameter names and their non-English aliases. In the enum_params table '#' is a single
character placeholder for 1 or more digit characters
parameter names in this table shall be lowercase
]]
local params = {
['url'] = {'url'},
['date'] = {'date', 'datum'},
['title'] = {'title', 'titel'},
['nolink'] = {'nolink'},
['format'] = {'format'}
}
local enum_params = {
['url#'] = {'url#'},
['date#'] = {'date#', 'datum#'},
['title#'] = {'title#', 'titel#'},
}
local format_vals = { -- |format= accepts two values; add local language variants here
['addlpages'] = {'addlpages'},
['addlarchives'] = {'addlarchives'},
}
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
categories = categories,
config = config,
crit_err_msgs = crit_err_msgs,
digits = digits,
enum_params = enum_params,
err_warn_msgs = err_warn_msgs,
excepted_pages = excepted_pages,
format_vals = format_vals,
month_num = month_num,
params = params,
prefixes = prefixes,
services = services,
s_text = s_text,
uncategorized_namespaces = uncategorized_namespaces,
uncategorized_subpages = uncategorized_subpages,
}
snj0coaylefgrnbrxw6287n56cu8bh3
Template:Webarchive/doc
10
8689
74050
2026-04-12T14:37:56Z
en>W.andrea
0
/* Configuration: verifydates */ format code as code
74050
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-risk}}
{{Notice|1=This template is intended for [[Wikipedia:External links|external links]]. It is not designed for use as a [[Wikipedia:Citation templates|citation template]].}}
{{Bot use warning|bots=[[User:KiranBOT|KiranBOT]]}}
{{lua|Module:Webarchive}}
{{tl|{{BASEPAGENAME}}}} is for linking to web archiving services such as the [[Wayback Machine]] and [[List of Web archiving initiatives|all other web archiving services]].
This template is a replacement for {{tld|wayback}}, {{tld|webcite}}, {{tld|memento}}, and {{tld|cite archives}}, as decided in [[Wikipedia:Templates for discussion/Log/2016 October 24#Template:Wayback|this discussion]].
Note: The most common method for linking a web archive are the CS1|2 templates such as {{tld|cite web}} with the {{para|archive-url}}, {{para|archive-date}}, and {{para|url-status}} parameters. Please be aware of [[WP:CITEVAR]] before converting this template to a CS1|2 template.
== Usage ==
In most cases the template needs only two parameters, the archive {{para|url}} and archive {{para|date}}. It is also common to include a {{para|title}}. For some URLs, the template can automatically display the date. To prevent the template from adding a [[Help:wikilink|wikilink]] to the name of the [[web archiving]] site, use the {{para|nolink}} parameter with any value.
; Usage with {{para|url}} and {{para|date}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=2 August 2016}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=2 August 2016}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=12 February 2009}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=12 February 2009}}
; Usage with {{para|url}} and {{para|title}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |title=Page Title}}
; Usage with {{para|url}}, {{para|date}}, and {{para|title}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=February 12, 2009 |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=February 12, 2009 |title=Page Title}}
; Usage with {{para|url}}, {{para|date}}, and {{para|nolink}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |nolink=y}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |nolink=y}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=February 12, 2009 |nolink=1}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=February 12, 2009 |nolink=1}}
== Multiple URLs ==
The template optionally supports multiple URLs (up to 10) for linking to multiple archiving services for the same source link. The first url argument is {{para|url}} then {{para|url2}} .. {{para|url10}}. Each URL can have its own date and title argument, thus {{para|date2}} .. {{para|date10}} and {{para|title2}} .. {{para|title10}}.
== Parameters ==
===Main parameters===
;url..url10: The URL(s) to the archive service. There should always be a {{para|url}} which counts as the first url. Each {{para|url#}} can have its own numbered corresponding {{para|date#}} and {{para|title#}}. Matching of URL with date and title is done by numbers, not position. Numbers do not need to be in sequence, for example {{para|url2}} followed by {{para|url5}} works.
;date..date10: The date the page was archived. The date format displayed is the same as entered. If {{para|date}} is missing the template will make a best effort to find the date by decoding the archive URL (wayback and webcite for example provide this data in the URL), and will display the date in iso format by default. However including a date is recommended for date formatting reasons, and because other tools may not have the ability to decode the date from the URL.
;title..title10: The text displayed for the link. If no {{para|title}} is provided then {{para|date}} is displayed. Otherwise {{para|title}} takes precedence if both are set.
===Secondary parameters===
;nolink: If set to any value, the archive service name will not be wikilinked.
;format: This is a special option to support the merger of {{tld|cite archives}}. It may be deprecated in the future. Because CS1|2 templates do not currently support more than one archive link, this template will tack on additional archive links to the end of a CS1|2 template output. It takes two values: {{para|format|addlarchives}} or {{para|format|addlpages}}. ''Addlarchives'' will display output appropriate for linking to multiple web archiving services. ''Addlpages'' will display output appropriate for linking to multiple pages at the same archive.
==Examples==
The number of possible examples is extensive depending on the mix of options. Some common cases follow. For more extensive testing see the [[Template:Webarchive/testcases|testcases page]].
; Single link at the [[Wayback Machine]] with date and title (<em>recommended method</em>)
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |title=Page Title}}
; Single link at the Wayback Machine with date only
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 1, 2016}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016}}
; Single link at the Wayback Machine with title; date extracted from URL
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=mdy}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=mdy}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=dmy}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=dmy}}
; Single link at [[WebCite]] with title; date extracted from URL
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title |date=mdy}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title |date=mdy}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title |date=dmy}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title |date=dmy}}
<!--; Single link at [[archive.today]] with title; date extracted from URL
: <code><nowiki>{{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title |date=mdy}}</nowiki></code>
: {{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title |date=mdy}}
: <code><nowiki>{{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title |date=dmy}}</nowiki></code>
: {{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title |date=dmy}}-->
; Multi-link at the Wayback Machine with dates and titles (<em>recommended method</em>)
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=August 2, 2016 |url2=https://web.archive.org/web/20160902000046/http://example.com/ |title2=Page2 Title |date2=September 2, 2016}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=August 2, 2016 |url2=https://web.archive.org/web/20160902000046/http://example.com/ |title2=Page2 Title |date2=September 2, 2016}}
; Multi-link at the Wayback Machine with dates only
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |url2=https://web.archive.org/web/20160902000046/http://example.com/ |date2=September 2, 2016}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |url2=https://web.archive.org/web/20160902000046/http://example.com/ |date2=September 2, 2016}}
; Multi-link at the Wayback Machine with titles only
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |url2=https://web.archive.org/web/20160902000046/http://example.com/ |title2=Page2 Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |url2=https://web.archive.org/web/20160902000046/http://example.com/ |title2=Page2 Title}}
; Additional archives format
: <code><nowiki>{{webarchive |format=addlarchives |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=12 February 2009}}</nowiki></code>
: {{webarchive |format=addlarchives |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=12 February 2009}}
; Additional pages format
: <code><nowiki>{{webarchive |format=addlpages |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |url2=https://web.archive.org/web/20160902000046/http://example.com/ |date=12 February 2009}}</nowiki></code>
: {{webarchive |format=addlpages |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |url2=https://web.archive.org/web/20160902000046/http://example.com/ |date=12 February 2009}}
== Tracking categories ==
The template has a number of hidden tracking categories which may be added (via [[Module:Webarchive]]):
===Tracking archive sites===
* {{clc|Webarchive template wayback links}}: links to the Wayback Machine
* {{clc|Webarchive template archiveis links}}: links to Archive.today
* {{clc|Webarchive template webcite links}}: links to WebCite
* {{clc|Webarchive template other archives}}: links to known archive sites that don't have their own tracking category
* {{clc|Webarchive template unknown archives}}: the template doesn't recognize the archive URL; this may indicate an error in the data; or the template itself needs updating to reflect a new archive site
===Tracking warnings and errors===
* {{clc|Webarchive template warnings}}: soft errors that do not prevent the template from working but leave a red message
* {{clc|Webarchive template errors}}: errors typically requiring human intervention
== Template maintenance ==
The following can be done to maintain the template.
===Monitor tracking categories===
* The tracking categories for "warnings" and "errors" can be monitored to alert for any problems in the data.
* The tracking category for "unknown archives" may indicate a problem in the data; for example an editor used the source URL instead of the archive URL in the {{para|url}} field.
===Monitor template argument usage===
[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template=Webarchive This tool] shows which instances of the template are using which arguments—it might show, for example, that {{para|access-date}} is being used by five instances in five articles. Since this is an error (the template does not support {{para|access-date}}) those five template instances should be fixed to remove the {{para|access-date}}.
===Configuration: verifydates===
The template can verify that dates in URLs for Wayback and WebCite match the date in the {{para|date}} argument (same for Archive.is, but [[WP:Archive.is|usage of that site is deprecated]]). If the dates do not match, it will display the date from the URL, add a red warning message "date mismatch", and add the article to the warning tracking category.
Because the verification function adds some overhead to the template, it can optionally be globally disabled by setting the variable <code>verifydates = no</code> (see the Module source in function <code>p.webarchive()</code>). (After setting to "yes", it can take a week or more for the tracking category to be fully populated. Set to "yes" if you are searching for problems in the data that need fixing (they'll show up in the tracking category).)
===Configuration: maxurls===
The max number of URLs is 10 but this can be changed by setting the "maxurls" variable in the p.webarchive() function. This is a global variable that will affect all instances of the template, use with caution. Reducing the number will increase the template speed and reduce resource use.
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"description": "A template for linking to offsite archives such as Wayback, WebCite, etc.. ",
"params": {
"url": {
"label": "Archive URL",
"description": "URL to the archive.",
"type": "string",
"example": "https://web.archive.org/web/20160802001301/http://example.com/",
"required": true
},
"date": {
"label": "Archive date",
"description": "Date of the archive.",
"type": "string",
"example": "August 2, 2016",
"suggested": true
},
"title": {
"label": "Archive title",
"description": "Title (or text) displayed on the Wiki page for the link.",
"type": "string",
"suggested": true,
"example": "Example website",
"default": "Date argument, or the word 'Archive'"
},
"nolink": {
"label": "Wikilink",
"description": "Wikilink to the archive's page in the rendering. Any value including blank means no wikilink.",
"type": "string"
},
"format": {
"label": "Format of template rendering",
"description": "For multi-URL instances, render display in one of two formats.",
"type": "string"
}
}
}
</templatedata>
== See also ==
* {{tl|Link with archives}}
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Internet Archive templates]]
[[Category:Templates that add a tracking category]]
[[Category:Web archive external link templates]]
}}</includeonly>
gak3l3q8ssquoudpi2msryvvqg0ffww
74051
74050
2026-07-12T11:06:54Z
Robertsky
10424
1 versaun husi [[:en:Template:Webarchive/doc]]
74050
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-risk}}
{{Notice|1=This template is intended for [[Wikipedia:External links|external links]]. It is not designed for use as a [[Wikipedia:Citation templates|citation template]].}}
{{Bot use warning|bots=[[User:KiranBOT|KiranBOT]]}}
{{lua|Module:Webarchive}}
{{tl|{{BASEPAGENAME}}}} is for linking to web archiving services such as the [[Wayback Machine]] and [[List of Web archiving initiatives|all other web archiving services]].
This template is a replacement for {{tld|wayback}}, {{tld|webcite}}, {{tld|memento}}, and {{tld|cite archives}}, as decided in [[Wikipedia:Templates for discussion/Log/2016 October 24#Template:Wayback|this discussion]].
Note: The most common method for linking a web archive are the CS1|2 templates such as {{tld|cite web}} with the {{para|archive-url}}, {{para|archive-date}}, and {{para|url-status}} parameters. Please be aware of [[WP:CITEVAR]] before converting this template to a CS1|2 template.
== Usage ==
In most cases the template needs only two parameters, the archive {{para|url}} and archive {{para|date}}. It is also common to include a {{para|title}}. For some URLs, the template can automatically display the date. To prevent the template from adding a [[Help:wikilink|wikilink]] to the name of the [[web archiving]] site, use the {{para|nolink}} parameter with any value.
; Usage with {{para|url}} and {{para|date}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=2 August 2016}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=2 August 2016}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=12 February 2009}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=12 February 2009}}
; Usage with {{para|url}} and {{para|title}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |title=Page Title}}
; Usage with {{para|url}}, {{para|date}}, and {{para|title}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=February 12, 2009 |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=February 12, 2009 |title=Page Title}}
; Usage with {{para|url}}, {{para|date}}, and {{para|nolink}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |nolink=y}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |nolink=y}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=February 12, 2009 |nolink=1}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=February 12, 2009 |nolink=1}}
== Multiple URLs ==
The template optionally supports multiple URLs (up to 10) for linking to multiple archiving services for the same source link. The first url argument is {{para|url}} then {{para|url2}} .. {{para|url10}}. Each URL can have its own date and title argument, thus {{para|date2}} .. {{para|date10}} and {{para|title2}} .. {{para|title10}}.
== Parameters ==
===Main parameters===
;url..url10: The URL(s) to the archive service. There should always be a {{para|url}} which counts as the first url. Each {{para|url#}} can have its own numbered corresponding {{para|date#}} and {{para|title#}}. Matching of URL with date and title is done by numbers, not position. Numbers do not need to be in sequence, for example {{para|url2}} followed by {{para|url5}} works.
;date..date10: The date the page was archived. The date format displayed is the same as entered. If {{para|date}} is missing the template will make a best effort to find the date by decoding the archive URL (wayback and webcite for example provide this data in the URL), and will display the date in iso format by default. However including a date is recommended for date formatting reasons, and because other tools may not have the ability to decode the date from the URL.
;title..title10: The text displayed for the link. If no {{para|title}} is provided then {{para|date}} is displayed. Otherwise {{para|title}} takes precedence if both are set.
===Secondary parameters===
;nolink: If set to any value, the archive service name will not be wikilinked.
;format: This is a special option to support the merger of {{tld|cite archives}}. It may be deprecated in the future. Because CS1|2 templates do not currently support more than one archive link, this template will tack on additional archive links to the end of a CS1|2 template output. It takes two values: {{para|format|addlarchives}} or {{para|format|addlpages}}. ''Addlarchives'' will display output appropriate for linking to multiple web archiving services. ''Addlpages'' will display output appropriate for linking to multiple pages at the same archive.
==Examples==
The number of possible examples is extensive depending on the mix of options. Some common cases follow. For more extensive testing see the [[Template:Webarchive/testcases|testcases page]].
; Single link at the [[Wayback Machine]] with date and title (<em>recommended method</em>)
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |title=Page Title}}
; Single link at the Wayback Machine with date only
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 1, 2016}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016}}
; Single link at the Wayback Machine with title; date extracted from URL
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=mdy}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=mdy}}
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=dmy}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=dmy}}
; Single link at [[WebCite]] with title; date extracted from URL
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title |date=mdy}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title |date=mdy}}
: <code><nowiki>{{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title |date=dmy}}</nowiki></code>
: {{webarchive |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com |title=Page Title |date=dmy}}
<!--; Single link at [[archive.today]] with title; date extracted from URL
: <code><nowiki>{{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title}}</nowiki></code>
: {{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title}}
: <code><nowiki>{{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title |date=mdy}}</nowiki></code>
: {{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title |date=mdy}}
: <code><nowiki>{{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title |date=dmy}}</nowiki></code>
: {{webarchive |url=https://archive.today/2016.08.08-112330/http://example.com |title=Page Title |date=dmy}}-->
; Multi-link at the Wayback Machine with dates and titles (<em>recommended method</em>)
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=August 2, 2016 |url2=https://web.archive.org/web/20160902000046/http://example.com/ |title2=Page2 Title |date2=September 2, 2016}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |date=August 2, 2016 |url2=https://web.archive.org/web/20160902000046/http://example.com/ |title2=Page2 Title |date2=September 2, 2016}}
; Multi-link at the Wayback Machine with dates only
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |url2=https://web.archive.org/web/20160902000046/http://example.com/ |date2=September 2, 2016}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |date=August 2, 2016 |url2=https://web.archive.org/web/20160902000046/http://example.com/ |date2=September 2, 2016}}
; Multi-link at the Wayback Machine with titles only
: <code><nowiki>{{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |url2=https://web.archive.org/web/20160902000046/http://example.com/ |title2=Page2 Title}}</nowiki></code>
: {{webarchive |url=https://web.archive.org/web/20160802001301/http://example.com/ |title=Page Title |url2=https://web.archive.org/web/20160902000046/http://example.com/ |title2=Page2 Title}}
; Additional archives format
: <code><nowiki>{{webarchive |format=addlarchives |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=12 February 2009}}</nowiki></code>
: {{webarchive |format=addlarchives |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |date=12 February 2009}}
; Additional pages format
: <code><nowiki>{{webarchive |format=addlpages |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |url2=https://web.archive.org/web/20160902000046/http://example.com/ |date=12 February 2009}}</nowiki></code>
: {{webarchive |format=addlpages |url=https://www.webcitation.org/5eWaHRbn4?url=http://www.example.com/ |url2=https://web.archive.org/web/20160902000046/http://example.com/ |date=12 February 2009}}
== Tracking categories ==
The template has a number of hidden tracking categories which may be added (via [[Module:Webarchive]]):
===Tracking archive sites===
* {{clc|Webarchive template wayback links}}: links to the Wayback Machine
* {{clc|Webarchive template archiveis links}}: links to Archive.today
* {{clc|Webarchive template webcite links}}: links to WebCite
* {{clc|Webarchive template other archives}}: links to known archive sites that don't have their own tracking category
* {{clc|Webarchive template unknown archives}}: the template doesn't recognize the archive URL; this may indicate an error in the data; or the template itself needs updating to reflect a new archive site
===Tracking warnings and errors===
* {{clc|Webarchive template warnings}}: soft errors that do not prevent the template from working but leave a red message
* {{clc|Webarchive template errors}}: errors typically requiring human intervention
== Template maintenance ==
The following can be done to maintain the template.
===Monitor tracking categories===
* The tracking categories for "warnings" and "errors" can be monitored to alert for any problems in the data.
* The tracking category for "unknown archives" may indicate a problem in the data; for example an editor used the source URL instead of the archive URL in the {{para|url}} field.
===Monitor template argument usage===
[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template=Webarchive This tool] shows which instances of the template are using which arguments—it might show, for example, that {{para|access-date}} is being used by five instances in five articles. Since this is an error (the template does not support {{para|access-date}}) those five template instances should be fixed to remove the {{para|access-date}}.
===Configuration: verifydates===
The template can verify that dates in URLs for Wayback and WebCite match the date in the {{para|date}} argument (same for Archive.is, but [[WP:Archive.is|usage of that site is deprecated]]). If the dates do not match, it will display the date from the URL, add a red warning message "date mismatch", and add the article to the warning tracking category.
Because the verification function adds some overhead to the template, it can optionally be globally disabled by setting the variable <code>verifydates = no</code> (see the Module source in function <code>p.webarchive()</code>). (After setting to "yes", it can take a week or more for the tracking category to be fully populated. Set to "yes" if you are searching for problems in the data that need fixing (they'll show up in the tracking category).)
===Configuration: maxurls===
The max number of URLs is 10 but this can be changed by setting the "maxurls" variable in the p.webarchive() function. This is a global variable that will affect all instances of the template, use with caution. Reducing the number will increase the template speed and reduce resource use.
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"description": "A template for linking to offsite archives such as Wayback, WebCite, etc.. ",
"params": {
"url": {
"label": "Archive URL",
"description": "URL to the archive.",
"type": "string",
"example": "https://web.archive.org/web/20160802001301/http://example.com/",
"required": true
},
"date": {
"label": "Archive date",
"description": "Date of the archive.",
"type": "string",
"example": "August 2, 2016",
"suggested": true
},
"title": {
"label": "Archive title",
"description": "Title (or text) displayed on the Wiki page for the link.",
"type": "string",
"suggested": true,
"example": "Example website",
"default": "Date argument, or the word 'Archive'"
},
"nolink": {
"label": "Wikilink",
"description": "Wikilink to the archive's page in the rendering. Any value including blank means no wikilink.",
"type": "string"
},
"format": {
"label": "Format of template rendering",
"description": "For multi-URL instances, render display in one of two formats.",
"type": "string"
}
}
}
</templatedata>
== See also ==
* {{tl|Link with archives}}
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Internet Archive templates]]
[[Category:Templates that add a tracking category]]
[[Category:Web archive external link templates]]
}}</includeonly>
gak3l3q8ssquoudpi2msryvvqg0ffww
Template:Ti
10
8690
74054
2024-07-07T18:58:47Z
en>HouseBlaster
0
HouseBlaster moved page [[Template:Ti]] to [[Template:Template information]]: expand template name per [[WP:TPN]]
74054
wikitext
text/x-wiki
#REDIRECT [[Template:Template information]]
{{Redirect category shell|
{{R from move}}
}}
abr3w4rmk7n0axootdj9wefs8hghnxb
74055
74054
2026-07-12T11:09:54Z
Robertsky
10424
1 versaun husi [[:en:Template:Ti]]
74054
wikitext
text/x-wiki
#REDIRECT [[Template:Template information]]
{{Redirect category shell|
{{R from move}}
}}
abr3w4rmk7n0axootdj9wefs8hghnxb
Template:Template information
10
8691
74056
2024-07-07T18:58:47Z
en>HouseBlaster
0
HouseBlaster moved page [[Template:Ti]] to [[Template:Template information]]: expand template name per [[WP:TPN]]
74056
wikitext
text/x-wiki
'''[[Template:{{{1}}}]]''' ([[Template talk:{{{1}}}|talk]]{{int:dot-separator}}[[Special:Whatlinkshere/Template:{{{1}}}|links]]{{int:dot-separator}}[{{SERVER}}{{localurl:Template:{{{1}}}|action=edit}} edit])<noinclude>
{{Documentation}}
</noinclude>
dgn75l4v01qr6tv5qnl9qa5djw7v17h
74057
74056
2026-07-12T11:09:54Z
Robertsky
10424
1 versaun husi [[:en:Template:Template_information]]
74056
wikitext
text/x-wiki
'''[[Template:{{{1}}}]]''' ([[Template talk:{{{1}}}|talk]]{{int:dot-separator}}[[Special:Whatlinkshere/Template:{{{1}}}|links]]{{int:dot-separator}}[{{SERVER}}{{localurl:Template:{{{1}}}|action=edit}} edit])<noinclude>
{{Documentation}}
</noinclude>
dgn75l4v01qr6tv5qnl9qa5djw7v17h