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 &#124; 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&nbsp;|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 &#124; 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 &#124; 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 &#124; 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>&#93; 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&nbsp;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, '&#32;('); -- 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, '&#32;('); -- 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'] = '&nbsp;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&nbsp;$3)</span>', ['txt-dda'] = '$2<span style="display:none">($1)</span> (aged&nbsp;$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) ~= '&nbsp;' 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 = '&nbsp;', 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 = '&nbsp;', 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'] = '&nbsp;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&nbsp;$3)</span>', ['txt-dda'] = '$2<span style="display:none">($1)</span> (aged&nbsp;$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) ~= '&nbsp;' 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 = '&nbsp;', 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 = '&nbsp;', 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 '&nbsp;') .. (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 '&nbsp;') .. 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('&nbsp;', ' '):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 '&nbsp;') .. (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 '&nbsp;') .. 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('&nbsp;', ' '):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]] &bull; [[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]] &bull; [[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]] &bull; [[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]] &bull; [[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]] &bull; [[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]] &bull; [[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]] &bull; [[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&nbsp;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&nbsp;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&nbsp;mater | data25 = {{{alma_mater|}}} | label26 = Occupation{{Pluralize from text|{{{occupation|}}}|plural=s}} | data26 = {{{occupation|}}} | class26 = role | label27 = Years&nbsp;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&nbsp;for | data32 = {{{known_for|}}} | label33 = Works | data33 = {{{works|}}} | label34 = Notable&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;mater | data25 = {{{alma_mater|}}} | label26 = Occupation{{Pluralize from text|{{{occupation|}}}|plural=s}} | data26 = {{{occupation|}}} | class26 = role | label27 = Years&nbsp;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&nbsp;for | data32 = {{{known_for|}}} | label33 = Works | data33 = {{{works|}}} | label34 = Notable&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;mater | data25 = {{{alma_mater|}}} | label26 = Occupation{{Pluralize from text|{{{occupation|}}}|plural=s}} | data26 = {{{occupation|}}} | class26 = role | label27 = Years&nbsp;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&nbsp;for | data32 = {{{known_for|}}} | label33 = Works | data33 = {{{works|}}} | label34 = Notable&nbsp;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&nbsp;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&nbsp;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&nbsp;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">&#8203;</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">&#8203;</div>}} |{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}} |<div class="marriage-line-margin2px">&#8203;</div> |{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2=20 |3=<div class="marriage-line-margin2px">&#8203;</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">&#8203;</div> |{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}} |3=<div class="marriage-line-margin2px">&#8203;</div>}}}} }}}}}}&#32;<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;}}}}}}}}">&#8203;</div>&#40;<!-- -->{{#if:{{{2|}}} |{{#ifeq:{{{end|{{{reason|+}}}}}}| |{{#switch:{{{3|}}} | = after&nbsp;}} |{{abbr|m.|married}}&nbsp;}}{{#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&nbsp;{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} |{{error-small|date missing}}}}}}<!-- -->{{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}{{{3|}}}|&#44;&#32;}}}}}} }}{{#if:{{{3|}}} |{{#ifeq:{{{end|{{{reason|}}}}}}| |{{#if:{{{2|}}}|&#x2060;&#8211;&#x2060;|{{#ifeq:{{{end|+}}}|{{{end|-}}} |{{#ifeq:{{{end|+}}}|{{{end|-}}} | until | before }} |{{#ifeq:{{{reason|+}}}|{{{reason|-}}} | until | before }}}}&nbsp;}} |{{#if:{{{2|}}} |&#59;&#32; }}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}} | d | d. | died = died&nbsp;<!-- this used to be {{abbr|d.|died}} but caused confusion with "divorced" --> | div | div. | divorce | divorced = {{abbr|div.|divorced}}&nbsp; | sep | sep. | separated = {{abbr|sep.|separated}}&nbsp; <!-- commonly used reason for end --> | ann | ann. | annulled | annulment = {{abbr|ann.|annulled}}&nbsp; <!-- commonly used reason for end --> | she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died&nbsp;|{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead.}}&nbsp;}} | he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died&nbsp;|{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead.}}&nbsp;}} | w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason}}&nbsp; | = <!--(reason marriage ended not supplied)--> | #default = {{{end|{{{reason|}}}}}}&nbsp; }} }}{{#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|}}}}}}|&#44;&#32;|}} }}{{#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&nbsp}} | = <!--(reason marriage ended not supplied)--> | #default = {{{end|{{{reason|}}}}}} }} }}&#41;<wbr />&#8203;</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">&#8203;</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">&#8203;</div>}} |{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}} |<div class="marriage-line-margin2px">&#8203;</div> |{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2=20 |3=<div class="marriage-line-margin2px">&#8203;</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">&#8203;</div> |{{str ≥ len|1={{#invoke:delink|delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}} |3=<div class="marriage-line-margin2px">&#8203;</div>}}}} }}}}}}&#32;<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;}}}}}}}}">&#8203;</div>&#40;<!-- -->{{#if:{{{2|}}} |{{#ifeq:{{{end|{{{reason|+}}}}}}| |{{#switch:{{{3|}}} | = after&nbsp;}} |{{abbr|m.|married}}&nbsp;}}{{#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&nbsp;{{#invoke:WikidataIB|getValue|P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} |{{error-small|date missing}}}}}}<!-- -->{{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}{{{3|}}}|&#44;&#32;}}}}}} }}{{#if:{{{3|}}} |{{#ifeq:{{{end|{{{reason|}}}}}}| |{{#if:{{{2|}}}|&#x2060;&#8211;&#x2060;|{{#ifeq:{{{end|+}}}|{{{end|-}}} |{{#ifeq:{{{end|+}}}|{{{end|-}}} | until | before }} |{{#ifeq:{{{reason|+}}}|{{{reason|-}}} | until | before }}}}&nbsp;}} |{{#if:{{{2|}}} |&#59;&#32; }}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}} | d | d. | died = died&nbsp;<!-- this used to be {{abbr|d.|died}} but caused confusion with "divorced" --> | div | div. | divorce | divorced = {{abbr|div.|divorced}}&nbsp; | sep | sep. | separated = {{abbr|sep.|separated}}&nbsp; <!-- commonly used reason for end --> | ann | ann. | annulled | annulment = {{abbr|ann.|annulled}}&nbsp; <!-- commonly used reason for end --> | she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died&nbsp;|{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead.}}&nbsp;}} | he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died&nbsp;|{{main other|[[Category:Marriage template errors|X{{PAGENAME}}]]}}{{error-small|"{{lc:{{{end|{{{reason|}}}}}}}}" is deprecated; use "died" instead.}}&nbsp;}} | w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason}}&nbsp; | = <!--(reason marriage ended not supplied)--> | #default = {{{end|{{{reason|}}}}}}&nbsp; }} }}{{#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|}}}}}}|&#44;&#32;|}} }}{{#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&nbsp}} | = <!--(reason marriage ended not supplied)--> | #default = {{{end|{{{reason|}}}}}} }} }}&#41;<wbr />&#8203;</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&nbsp;cm') s = mw.ustring.gsub(s, '(%d)%s+[Mm]', '%1&nbsp;m') s = mw.ustring.gsub(s, '(%d)%s+[Ff][Tt]', '%1&nbsp;ft') s = mw.ustring.gsub(s, '(%d)%s+[Ii][Nn]', '%1&nbsp;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, '★', '&nbsp;') 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&nbsp;cm') s = mw.ustring.gsub(s, '(%d)%s+[Mm]', '%1&nbsp;m') s = mw.ustring.gsub(s, '(%d)%s+[Ff][Tt]', '%1&nbsp;ft') s = mw.ustring.gsub(s, '(%d)%s+[Ii][Nn]', '%1&nbsp;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, '★', '&nbsp;') 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}}.&nbsp;<!--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}}.&nbsp; ({{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}}.&nbsp; ({{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}}.&nbsp; ({{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}}.&nbsp; ({{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/>&nbsp;&nbsp;{{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&nbsp;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}}.&nbsp;<!--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}}.&nbsp; ({{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}}.&nbsp; ({{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}}.&nbsp; ({{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}}.&nbsp; ({{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/>&nbsp;&nbsp;{{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&nbsp;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|}}}|&nbsp;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|}}}|&nbsp;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 = " {{!}} &#32; {{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 = " {{!}} &#32; {{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">&#160;(<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">&#160;(<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>&frasl;<span class="den">{{{3}}}</span><!-- then 1 2/3 -->|{{#if:{{{2|}}}<!-- elseif 2 -->|<span class="num">{{{1}}}</span>&frasl;<span class="den">{{{2}}}</span><!-- then 1/2 -->|{{#if:{{{1|}}}<!-- elseif 1 -->|<span class="num">1</span>&frasl;<span class="den">{{{1}}}</span><!-- then 1/1 -->|&frasl;<!-- 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>&frasl;<span class="den">{{{3}}}</span><!-- then 1 2/3 -->|{{#if:{{{2|}}}<!-- elseif 2 -->|<span class="num">{{{1}}}</span>&frasl;<span class="den">{{{2}}}</span><!-- then 1/2 -->|{{#if:{{{1|}}}<!-- elseif 1 -->|<span class="num">1</span>&frasl;<span class="den">{{{1}}}</span><!-- then 1/1 -->|&frasl;<!-- 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]]|&#32;}}<!-- 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]]|&#32;}}<!-- 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|}}&nbsp;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|}}&nbsp;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 &#123;&#123;subst:{{#if:{{{1|}}}|[[Template:{{{1}}}|{{{1}}}]]}}&#125;&#125;<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 &#123;&#123;subst:{{#if:{{{1|}}}|[[Template:{{{1}}}|{{{1}}}]]}}&#125;&#125;<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&nbsp;{{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&nbsp;{{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("&nbsp;", " ") 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("&nbsp;", " ") 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 &nbsp; with regular space lowerStr = lowerStr:gsub('&nbsp;', ' ') -- 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 &nbsp; 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 &nbsp; for parenContent in str:gmatch('%((.-)%)') do if not parenContent:find('&nbsp;') 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&nbsp;ft Y&nbsp;in (simple) local feet, inches = height:match('^(%d+)&nbsp;ft (%d+)&nbsp;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&nbsp;ft Y+N&frasl;D&nbsp;in (whole inches plus fraction, e.g., "6 ft 2+1/2 in") local feet2, inches2, num2, den2 = height:match('^(%d+)&nbsp;ft (%d+)%+(%d+)&frasl;(%d+)&nbsp;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&nbsp;ft N&frasl;D&nbsp;in (fraction only, e.g., "6 ft 1/2 in") local feet3, num3, den3 = height:match('^(%d+)&nbsp;ft (%d+)&frasl;(%d+)&nbsp;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&nbsp;m local meters = height:match('^(%d+%.%d+)&nbsp;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&nbsp;cm local cm = height:match('^(%d+)&nbsp;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 &nbsp; 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 &nbsp; with regular space lowerStr = lowerStr:gsub('&nbsp;', ' ') -- 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 &nbsp; 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 &nbsp; for parenContent in str:gmatch('%((.-)%)') do if not parenContent:find('&nbsp;') 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&nbsp;ft Y&nbsp;in (simple) local feet, inches = height:match('^(%d+)&nbsp;ft (%d+)&nbsp;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&nbsp;ft Y+N&frasl;D&nbsp;in (whole inches plus fraction, e.g., "6 ft 2+1/2 in") local feet2, inches2, num2, den2 = height:match('^(%d+)&nbsp;ft (%d+)%+(%d+)&frasl;(%d+)&nbsp;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&nbsp;ft N&frasl;D&nbsp;in (fraction only, e.g., "6 ft 1/2 in") local feet3, num3, den3 = height:match('^(%d+)&nbsp;ft (%d+)&frasl;(%d+)&nbsp;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&nbsp;m local meters = height:match('^(%d+%.%d+)&nbsp;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&nbsp;cm local cm = height:match('^(%d+)&nbsp;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 &nbsp; 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|}}} | &#32;([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|}}} | &#32; (archived) }}{{#if:{{{access-date|{{{accessdate|}}}}}}|. Retrieved {{{access-date|{{{accessdate}}}}}}.}}<includeonly>{{Edit at Wikidata|pid=P2369|{{{1|{{{id|}}}}}}}}</includeonly> | <span class="error">&#123;&#123;[[Template:Soccerway|Soccerway]]&#125;&#125; 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|}}} | &#32;([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|}}} | &#32; (archived) }}{{#if:{{{access-date|{{{accessdate|}}}}}}|. Retrieved {{{access-date|{{{accessdate}}}}}}.}}<includeonly>{{Edit at Wikidata|pid=P2369|{{{1|{{{id|}}}}}}}}</includeonly> | <span class="error">&#123;&#123;[[Template:Soccerway|Soccerway]]&#125;&#125; 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 &nbsp; local space = trimToNil(args.nbsp) and "&nbsp;" 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 &nbsp; local space = trimToNil(args.nbsp) and "&nbsp;" 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|}}}}}}}|&#58; <small>{{wikidata|label|{{uc:{{{1|}}}}}}}</small>}} | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|P{{uc:{{{1|}}}}}}}|&#58; <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|}}}}}}}|&#58; <small>{{wikidata|label|{{uc:{{{1|}}}}}}}</small>}} | [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|P{{uc:{{{1|}}}}}}}|&#58; <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}}&nbsp;{{CURRENTMONTHNAME}}&nbsp;{{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}}&nbsp;{{CURRENTMONTHNAME}}&nbsp;{{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}}&nbsp;{{CURRENTMONTHNAME}}&nbsp;{{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}}&nbsp;{{CURRENTMONTHNAME}}&nbsp;{{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}}}|§&nbsp;{{{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}}}|§&nbsp;{{{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">&#123;&#123;[[Template:NFT player|NFT player]]&#125;&#125; 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">&#123;&#123;[[Template:NFT player|NFT player]]&#125;&#125; 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>}}&#123;&#123;{{#if:{{{1<includeonly>|</includeonly>}}}|{{{1}}}}}<!-- -->{{#ifeq:{{{2|<includeonly>x</includeonly>}}}|{{{2|}}}|&nbsp;&#124;&nbsp;{{trim|{{{2}}}}}}}<!-- -->{{#ifeq:{{{3|<includeonly>x</includeonly>}}}|{{{3|}}}|&nbsp;&#124;&nbsp;{{trim|{{{3}}}}}}}<!-- -->{{#ifeq:{{{4|<includeonly>x</includeonly>}}}|{{{4|}}}|&nbsp;&#124;&nbsp;{{trim|{{{4}}}}}}}<!-- -->{{#ifeq:{{{5|<includeonly>x</includeonly>}}}|{{{5|}}}|&nbsp;&#124;&nbsp;{{trim|{{{5}}}}}}}<!-- -->{{#ifeq:{{{6|<includeonly>x</includeonly>}}}|{{{6|}}}|&nbsp;&#124;&nbsp;{{trim|{{{6}}}}}}}<!-- -->{{#ifeq:{{{7|<includeonly>x</includeonly>}}}|{{{7|}}}|&nbsp;&#124;&nbsp;{{trim|{{{7}}}}}}}<!-- -->{{#ifeq:{{{8|<includeonly>x</includeonly>}}}|{{{8|}}}|&nbsp;&#124;&nbsp;{{trim|{{{8}}}}}}}<!-- -->{{#ifeq:{{{9|<includeonly>x</includeonly>}}}|{{{9|}}}|&nbsp;&#124;&nbsp;{{trim|{{{9}}}}}}}<!-- -->{{#if:{{{2<includeonly>|</includeonly>}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}}|&nbsp;}}&#125;&#125;</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>}}&#123;&#123;{{#if:{{{1<includeonly>|</includeonly>}}}|{{{1}}}}}<!-- -->{{#ifeq:{{{2|<includeonly>x</includeonly>}}}|{{{2|}}}|&nbsp;&#124;&nbsp;{{trim|{{{2}}}}}}}<!-- -->{{#ifeq:{{{3|<includeonly>x</includeonly>}}}|{{{3|}}}|&nbsp;&#124;&nbsp;{{trim|{{{3}}}}}}}<!-- -->{{#ifeq:{{{4|<includeonly>x</includeonly>}}}|{{{4|}}}|&nbsp;&#124;&nbsp;{{trim|{{{4}}}}}}}<!-- -->{{#ifeq:{{{5|<includeonly>x</includeonly>}}}|{{{5|}}}|&nbsp;&#124;&nbsp;{{trim|{{{5}}}}}}}<!-- -->{{#ifeq:{{{6|<includeonly>x</includeonly>}}}|{{{6|}}}|&nbsp;&#124;&nbsp;{{trim|{{{6}}}}}}}<!-- -->{{#ifeq:{{{7|<includeonly>x</includeonly>}}}|{{{7|}}}|&nbsp;&#124;&nbsp;{{trim|{{{7}}}}}}}<!-- -->{{#ifeq:{{{8|<includeonly>x</includeonly>}}}|{{{8|}}}|&nbsp;&#124;&nbsp;{{trim|{{{8}}}}}}}<!-- -->{{#ifeq:{{{9|<includeonly>x</includeonly>}}}|{{{9|}}}|&nbsp;&#124;&nbsp;{{trim|{{{9}}}}}}}<!-- -->{{#if:{{{2<includeonly>|</includeonly>}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}}|&nbsp;}}&#125;&#125;</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]".|&lsqb;[[Wikipedia:citation needed|citation needed]]&rsqb;]] {{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&nbsp;{{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>&amp;quot;</code> or use a single quote <code>'</code> instead. Encode <code><</code> as <code>&amp;lt;</code>, and <code>></code> as <code>&amp;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]".|&lsqb;[[Wikipedia:citation needed|citation needed]]&rsqb;]] {{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&nbsp;{{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>&amp;quot;</code> or use a single quote <code>'</code> instead. Encode <code><</code> as <code>&amp;lt;</code>, and <code>></code> as <code>&amp;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]".|&lsqb;[[Wikipedia:citation needed|citation needed]]&rsqb;]] {{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&nbsp;{{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>&amp;quot;</code> or use a single quote <code>'</code> instead. Encode <code><</code> as <code>&amp;lt;</code>, and <code>></code> as <code>&amp;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&nbsp;on', -- TODO why the &nbsp; 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&nbsp;on', -- TODO why the &nbsp; 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}}}]]'''&nbsp;([[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}}}]]'''&nbsp;([[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