Wikipedia
zuwiki
https://zu.wikipedia.org/wiki/Ikhasi_Elikhulu
MediaWiki 1.47.0-wmf.10
first-letter
Media
Special
Talk
User
User talk
Wikipedia
Wikipedia talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
TimedText
TimedText talk
Module
Module talk
Event
Event talk
INyanga
0
4296
126077
124218
2026-07-15T08:43:34Z
Fongcwele
16873
126077
wikitext
text/x-wiki
{{Lowercase title}}
{{infobox planet
| name = Moon
| apsis = gee
| symbol = [[File:Moon decrescent symbol (bold).svg|24px|☾|class=skin-invert]] or [[File:Moon crescent symbol (bold).svg|24px|☽|class=skin-invert]]
| image = FullMoon2010.jpg
| image_alt = Full Moon in the darkness of the night sky. It is patterned with a mix of light-tone regions and darker, irregular blotches, and scattered with varied circles surrounded by out-thrown rays of bright ejecta: impact craters.
| caption = The [[near side of the Moon]] with the [[lunar north pole]] at the top
| background = #fcbba9
| mpc_name = Earth I
| alt_names = {{hlist |[[Luna (goddess)|Luna]] |{{nowrap|[[Selene]] (poetic)}}|{{nowrap|[[wikt:Cynthia|Cynthia]] (poetic)}}}}
| adjectives =
| periapsis = {{gaps |362 |600}} km<br />({{gaps |356 |400}}–{{gaps |370 |400}} km)
| apoapsis = {{gaps |405 |400}} km<br />({{gaps |404 |000}}–{{gaps |406 |700}} km)
| mean_orbit_radius = {{val |384784|u=km}}<ref name="NASAfactsheet" /><br/>({{val |1.28 |u=[[light-second|ls]]}}; 1/384 [[Astronomical unit|AU]]; {{val |1.001|ul=LD}})
| semimajor = {{val |384399 |u=km}}{{nbsp |2}}({{val |1.28 |u=[[light-second|ls]]}}; 1/389 [[Astronomical unit|AU]]; {{val |1 |ul=LD}})<ref name="W06"/>
| eccentricity = {{val |0.0549}}<ref name="W06"/>
| period = {{longitem |{{val|27.321661 |ul=d}}<br />(27 d 7 h 43 min 11.5 s<ref name="W06"/>)}}
| synodic_period = {{longitem|{{val |29.530589 |u=d}}<br />(29 d 12 h 44 min 2.9 s)}}
| avg_speed = {{val|1.022|ul=km/s}}
| inclination = 5.145° to the [[ecliptic]]<ref name="Lang2011"/>{{efn|name=inclination|Between 18.29° and 28.58° to Earth's [[equator]]<ref name="W06"/><!--Wieczorek et al. 2006; 18.29° when the longitude of the Moon's ascending node is 180°, 28.58° when it is 0°-->}}
| asc_node = {{longitem|[[Lunar precession#Nodal precession|Regressing]] by one revolution in 18.61 years}}
| arg_peri = {{longitem|[[Lunar precession#Apsidal precession|Progressing]] by one<br /> revolution in 8.85 years}}
| satellite_of = [[Earth]]{{efn|name=near-Earth asteroids}}<ref name="Morais2002"/>
| flattening = {{val|0.0012}}<ref name="NSSDC"/>
| equatorial_radius = {{val|1738.1 |u=km}}{{nbsp |2}}<br />(0.2725 of Earth's)<ref name="NSSDC"/>
| polar_radius = {{val|1736.0|u=km}}{{nbsp|2}}<br />(0.2731 of Earth's)<ref name="NSSDC"/>
| mean_radius = {{val|1737.4|u=km}}{{nbsp|2}}<br />(0.2727 of Earth's)<ref name="W06"/><ref name="NSSDC"/><ref>{{cite journal |last1=Smith |first1=David E. |last2=Zuber |first2=Maria T. |last3=Neumann |first3=Gregory A. |last4=Lemoine |first4=Frank G. |title=Topography of the Moon from the Clementine lidar |journal=[[Journal of Geophysical Research]] |date=1997 |volume=102 |issue=E1 |page=1601 |doi=10.1029/96JE02940 |bibcode=1997JGR...102.1591S |hdl=2060/19980018849 |hdl-access=free }}</ref>
| circumference = {{val|10921|u=km}}{{nbsp |2}}([[equator]]ial)
| surface_area = {{val|3.793|e=7|u=km2}}{{nbsp|2}}<br />(0.074 of Earth's)
| volume = {{val|2.1958|e=10|u=km3}}{{nbsp |2}}<br />(0.02 of Earth's)<ref name="NSSDC"/>
| mass = {{val|7.346|e=22|u=kg}}{{nbsp |2}}<br />({{val|0.0123}} of Earth's)<ref name="W06"/><ref name="NSSDC"/><ref>{{cite book |title=Top 10 of Everything |first=Paul |last=Terry |publisher=Octopus Publishing Group Ltd |year=2013 |isbn=978-0-600-62887-3 |page=226}}</ref>
| density = {{val|3.344|ul=g/cm3}}<ref name="W06"/><ref name="NSSDC"/><br />{{val|0.606}} × Earth
| surface_grav = {{cvt|1.622|m/s2|ft/s2}}<ref name="NSSDC"/><br />{{cvt|1.622|m/s2|g0|disp=out|lk=out}}
| moment_of_inertia_factor = {{val|0.3929|0.0009}}<ref name="Williams1996" />
| escape_velocity = {{convert|2.38|km/s|km/h mph|comma=gaps|abbr=on|disp=x|<br />(|)}}
| rotation = {{longitem|{{val|29.530589|u=d}}<br />(29 d 12 h 44 min 2.9 s; [[synodic day|synodic; solar day]]) ([[tidal locking|spin-orbit locked]])}}
| sidereal_day = {{val|27.321661|u=d}}{{nbsp|2}}(spin-orbit locked)
<!-- Wieczorek et al. 2006 -->| rot_velocity = {{nowrap|4.627 m/s}}
| axial_tilt = {{ublist|1.5424° to [[ecliptic]]<ref name="SolarViews" /><!--1.533° according to Conn 2007-->|6.687° to [[Orbital plane (astronomy)|orbit plane]]<ref name="Lang2011"/><!--6.4° according to Grego;<ref name="Grego2005">Grego, Peter, [https://books.google.com/books?id=z6Pgt9xEW9gC&pg=PA48 ''The Moon and How to Observe It''], Springer, 2005</ref> 6.6783° according to Conn.<ref name="Conn2007">Conn, David (2007); ''Lednorf's Dilemma'', AuthorHouse, Bloomington (IN)</ref>-->|24° to Earth's equator<ref>{{cite journal |last=Makemson |first=Maud W. |year=1971 |title=Determination of selenographic positions |journal=The Moon |volume=2 |issue=3 |pages=293–308 |doi=10.1007/BF00561882 |bibcode=1971Moon....2..293M }}</ref>}}
| epoch = [[J2000]]
| uncertainty = 0
| right_asc_north_pole = {{plainlist|
* {{RA|17|47|26}}
* 266.86°<ref name="report">{{cite journal |last1=Archinal |first1=B.A. |last2=A'Hearn |first2=M.F. |last3=Bowell |first3=E. |last4=Conrad |first4=A. |last5=Consolmagno |first5=G.J. |last6=Courtin |first6=R. |last7=Fukushima |first7=T. |last8=Hestroffer |first8=D. |last9=Hilton |first9=J.L. |last10=Krasinsky |first10=G.A. |last11=Neumann |first11=G. |last12=Oberst |first12=J. |last13=Seidelmann |first13=P. K. |last14=Stooke |first14=P. |last15=Tholen |first15=D.J. |last16=Thomas |first16=P.C. |last17=Williams |first17=I.P. |title=Report of the IAU Working Group on Cartographic Coordinates and Rotational Elements: 2009 |journal=Celestial Mechanics and Dynamical Astronomy |volume=109 |issue=2 |pages=101–135 |date=February 2011 |bibcode=2011CeMDA.109..101A |doi=10.1007/s10569-010-9320-4}}</ref>
}}
| declination = 65.64°<ref name="report" />
| albedo = {{val|0.136}}<ref name="Saari"/>
| temp_name1 = Equator
| min_temp_1 = 100 [[Kelvin|K]]<ref name=Bugby_et_al_2010/>
| mean_temp_1 = 250 K
| max_temp_1 = 390 K<ref name=Bugby_et_al_2010>{{cite conference |last1=Bugby |first1=D.C. |last2=Farmer |first2=J.T. |last3=O'Connor |first3=B.F. |last4=Wirzburger |first4=M.J. |last5=Abel |first5=E.D. |last6=Stouffer |first6=C.J. |title=Two-Phase Thermal Switching System for a Small, Extended Duration Lunar Surface Science Platform |series=AIP Conference Proceedings |volume=1208 |pages=76–83 |date=January 2010 |bibcode=2010AIPC.1208...76B |hdl=2060/20100009810 |hdl-access=free |doi=10.1063/1.3326291}}</ref>
| temp_name2 = 85°N
| min_temp_2 =
| mean_temp_2 = 150 K
| max_temp_2 = 230 K<ref name="Vasavada1999"/>
| surface_equivalent_dose_rate = {{convert |1.369 |mSv/d |μSv/h |disp=out}}<br />(during lunar daytime)<ref name="surface-radiation">{{Cite journal |vauthors=Zhang S, Wimmer-Schweingruber RF, Yu J, Wang C, Fu Q, Zou Y, Sun Y, Wang C, Hou D, Böttcher SI, Burmeister S |display-authors=6 |title=First measurements of the radiation dose on the lunar surface |journal=Science Advances |year=2020 |volume=6 |issue=39 |article-number=eaaz1334 |doi=10.1126/sciadv.aaz1334 |pmc=7518862 |pmid=32978156 |bibcode=2020SciA....6.1334Z |quote=We measured an average total absorbed dose rate in silicon of 13.2 ± 1 μGy/hour ... LND measured an average dose equivalent of 1369 μSv/day on the surface of the Moon}}</ref>
| surface_absorbed_dose_rate = 13.2 μGy/h<br />(during lunar [[daytime]])<ref name="surface-radiation"/>
| magnitude = {{ublist|−2.5 to −12.9{{efn |name=maxval}}|−12.74{{nbsp |2}}(mean [[full moon]])<ref name="NSSDC"/>}}
| abs_magnitude = 0.2<ref name="IMCCE">{{cite web |title=Encyclopedia – the brightest bodies |website=IMCCE |url=https://promenade.imcce.fr/en/pages1/101.html |access-date=June 1, 2023 |archive-date=March 21, 2023 |archive-url=https://web.archive.org/web/20230321023334/https://promenade.imcce.fr/en/pages1/101.html |url-status=live}}</ref>
| angular_size = 29.3 to 34.1 [[arcminutes]]<ref name="NSSDC"/>{{efn |name=angular size}}
| atmosphere = trace
| atmosphere_ref = <ref name="L06"/>
| surface_pressure = {{ublist |10{{sup |−7}} [[Pascal (unit)|Pa]] (1 [[picobar]]){{nbsp |2}}(day) |10{{sup |−10}} Pa (1 femtobar) {{nbsp |2}} <br />(night){{efn |name=pressure explanation}}}}
| atmosphere_composition = {{hlist|[[Helium|He]]|[[Argon|Ar]]|[[Neon|Ne]]|[[Sodium|Na]]|[[Potassium|K]]|[[Hydrogen|H]]}}
}}
[[File:Full_Moon_Luc_Viatour.jpg|thumb|iNyanga edilingene]]
'''iNyanga''' (uphawu: [[file:Moon decrescent symbol (bold).svg|16px|☾]]) iwukuphela [[Iduna|kweduna]] elizungeza [[uMhlaba]]. INyanga izungeza uMhlaba isebangeni elingamakhilomitha ayizi-384,399. INyanga iqeda uzungezo lwayo ngesikhathi esiyinyanga eyodwa, noma ngezinsuku ezingama-29.5. INyanga noMhlaba zibanjwe ukuheha [[UmNyondo|komnyondo]] onamandla emacaleni azo abukene. Lokhu kwenza kube neziphoqi zamabuya okuyizona ezidala amabuya eMhlabeni, futhi zadonsa iNyanga ukuba ibuke uMhlaba ngohlangothi olulodwa kuphela. Lokhu kukhweqa kwamabuya ngokomphumela kwenza uzungezo lweNyanga (usuku lwayo) ukuba luhambisane nenkathi ezungeza ngayo uMhlaba (inyanga eyodwa).
[[Uzungezohlelo lweLanga|Kuzungezohlelo lweLanga]], iNyanga iyiduna elikhulu nelinesisindo ukwedlula [[Umzulane oyisichwe|nemizulane esichwe]] eyaziwayo, futhi iyiduna lesihlanu elikhulu. Umnyondo wobuso bayo ulingana nengxenye eyodwa yesithupha yomnyondo woMhlaba, okuyisigamu somnyondo kaNotshezi, futhi ungowesibili omkhulu ezinyageni zozungezohlelo lweLanga kulandela inyanga kaMkhulukhulwana ebizwa uSontshaba. Umzimba weNyanga umahlukohluko futhi uhlabathi, unengcosana yamanzimbulunga, umoyambulunga newonga. Ubuso benyanga bumbozw nge-regolith, equkethe izincushuzo eziphafuke egobohleni ngenxa yokugadlazeke. Ingakho kuthiwa umaqubintuli, futhi igobohla lakhe [[Isigqabhozi sokugadlazeka|linezigqabhozi zokugadlazeka]] eziningi. Inyanga yake yaba nobuqhebeqhebe bezintshabamlilo eminyakeni eyisigidinqindi (1.2 billion) edlule. Indabuko yeNyanga ayaziwa, kodwa kukhona abahlawumbisela ukuthi yabumbeka ngezithako zoMhlaba, ezaphafuka lapho ugadlazwa indikimba elingana noNotshezi ebizwa gokuthi uThiyana eminyakeni eyizigidinqindi ezi-4.51 edlule, ngemva kokubumbeka koMhlaba.
Ebangeni elikuyo, izimo zobusuku nemini zikamaqubintuli thina sizibona [[Izimo zenyanga|kuyizimo zenyanga]], nalapho iNyanga idlula ethunzini loMhlaba kuba [[UNyezibomvu|noNyezibomvu]]. Ubungako obubonwayo beNyanga esibhakabhakeni cishe balingana nobeLanga, okwenza ukwazi ukulisitheza ngokugcwele lapho [[Insitholanga|kunensitholanga]] egcwele. INyanga iyindikimba eqhakazayo ebusuku ngenxa yokulwentuza ukukhanya.
INyanga ibilokhu ingumthombo obalulekile wogqozi nolwazi emlandweni ikakhulu kwezenkolo, ubuciko, [[Inzululwazi yemvelo]], nokundiza emkhathini. Izindizamkhathi zokuqala ezaya endikimbeni esemkhathini zaya eNyangeni, kusuka ngowe-1959 lapho kuyingeleza i-Luna 1 (eyathunyelwa i Soviet Union), Kanye ne- Luna 2 yaba nohlonze emhlabeni wonke, ezalandelwa ngowe-1966 umcababalo othambile we- Luna 9 nozungezo lwe- Luna 10. Abantu baqala ukunyatuela ebusweni heNyanga ngo July 20, 1969, besebenzisa indizamkhathi i-Apollo 11. Ngowe-1972, kwase kuthunyelwe izindizamkhathi iziyisithupha, kwacababala abantu abayishumi nambili eNyangeni. Maduze kulindelwe ukuba uhlelo lwe-Artemis lubuyosele abantu eNyangeni.
==uMsukagama==
Igama lesiZulu elithi ''inyanga'' liyibizonto leduna loMhlaba elibonakala ngonyezi ebusuku. Aligcini ekubeni igama lendikimba esemkhathini njengoba kubalwa isikhathi ngokuhambisana nozungezo lwayo. Uzungezo olulodwa lezinsuku ezingama-29 lubizwa iNyanga.
Umsuka walo usolimini olwandulela isintu kwelithi -mʊ̀gàngà elisebenza kokubili [[Inyanga (umelaphi)|kumuntu owelaphayo]] nasendikimbeni esemkhathini.
Ngokwesichazamazwi sikaVilakazi elinye igama lenyanga nguMaqibuntuli. Elithi 'unyezi' libhekisela ekukhanyeni kwayo ebusuku, lihlobene nesijobelelo esithi ''nyezi'' esisemagameni inkanyezi, ubhaqanyezi, iqhumanyezi.
Igama lesiZulu lokuhlonipha lenyanga elithi impengu nelithi inelekehle.
==uMlando wendalo==
=== Ukubumbeka kwayo ===
[[File:Big Splash Theia.gif|thumb|Umdwebo onyakazayo obonisa ukubumbeka kwenyanga lapho umzulane, obizwa uNomthiya, olingana noNotshezi ungqubuzana noMhlaba.]]
Ukuhlolwa kwamachembe ezangulo zenyanga kusikisela ukuthi inyanga yabumbeka eminyakeni eyizigidi ezingama-50 ngemuva kokuvela [[Uzungezohlelo lweLanga|kozungezohlelo lweLanga]].<ref>{{cite journal |title=Early Moon formation inferred from hafnium-tungsten systematics |last1=Thiemens |first1=Maxwell M. |last2=Sprung |first2=Peter |last3=Fonseca |first3=Raúl O. C. |last4=Leitzke |first4=Felipe P. |last5=Münker |first5=Carsten |journal=Nature Geoscience |volume=12 |issue=9 |pages=696–700 |date=July 2019 |doi=10.1038/s41561-019-0398-3 |pmid=39649009 |bibcode=2019NatGe..12..696T |pmc=7617097}}</ref><ref name="Age">{{cite news |url=https://www.universetoday.com/143025/the-moon-is-older-than-scientists-thought/ |title=The Moon is older than scientists thought |website=Universe Today |access-date=August 3, 2019 |archive-date=August 3, 2019 |archive-url=https://web.archive.org/web/20190803125139/https://www.universetoday.com/143025/the-moon-is-older-than-scientists-thought/ |url-status=live}}</ref> Ngokomlando, kunezindlela ezimbalwa eziphakanyiswayo zokubumbeka kwayo,<ref>{{cite journal |doi=10.1126/sciadv.1602365 |pmid=28097222 |pmc=5226643 |journal=Science Advances |date=2017 |volume=3 |issue=1 |title=Early formation of the Moon 4.51 billion years ago |last=Barboni |first=M. |author2=Boehnke, P. |author3=Keller, C. B. |author4=Kohl, I. E. |author5=Schoene, B. |author6=Young, E. D. |author7=McKeegan, K. D. |article-number=e1602365 |bibcode=2017SciA....3E2365B}}</ref> kodwa ayikho enencazelo echaza izici zohlelo lwenyanga-nomhlaba ngokukholisayo. Abanye bathi inyanga iwucezu olwaklewuka eMhlabeni endulo, abanye bathi inyanga yayizidlulela emkhathini yabanjwa umnyondo woMhlaba, abanye bona bathi uMhlaba nenyanga zadalwa ngesikhathi esisodwa. Kodwa asikho kuzo zonke lezi zihlawumbiselo, esichaza ngengoni yomjijiyane wohlelo lenyanga-nomhlaba.<ref>{{cite journal |last=Stevenson |first=D. J. |title=Origin of the moon–The collision hypothesis |journal=[[Annual Review of Earth and Planetary Sciences]] |date=1987 |volume=15 |issue=1 |pages=271–315 |bibcode=1987AREPS..15..271S |doi=10.1146/annurev.ea.15.050187.001415 }}</ref>
Umchachiso oseqhulwini wohlelo lwenyanga-nomhlaba uthi inyanga yabumbeka lapho uMhlaba wanguna ugadlazwa indikimba ewumzulane olingana [[UNotshezi|noNotshezi]], ebizwa uNomthiya. Lokhu kugadlazeka kwaqhumisa futhi kwasakaza izingcezu zoMhlaba esibhakabhakeni futhi zaqala ukuzungeza uMhlaba futhi ihlumelelo lazo labumba inyanga<ref name="taylor1998" /><ref>{{cite web |url=http://news.nationalgeographic.com/2015/04/150416-asteroids-scars-moon-formation-space/ |title=Asteroids Bear Scars of Moon's Violent Formation |date=April 16, 2015 |archive-url=https://web.archive.org/web/20161008160812/http://news.nationalgeographic.com/2015/04/150416-asteroids-scars-moon-formation-space/ |archive-date=October 8, 2016}}</ref> eduze nomngcele kaRoche.<ref>{{cite journal |title=Scaling in global tidal dissipation of the Earth–Moon system |last=van Putten |first=Maurice H. P. M. |journal=New Astronomy |volume=54 |pages=115–121 |date=July 2017 |doi=10.1016/j.newast.2017.01.012 |arxiv=1609.07474 |bibcode=2017NewA...54..115V }}</ref>
Kuthiwa ukugadlazeka kwaloluhlobo kwakuyinsakavukela ezinsukwini zokuqala [[Uzungezohlelo lweLanga|kozungezohlelo lweLanga]]. Imifefenyeko yesicikizi yalokhu kungqubuzana iveza iziphumo ezifanayo futhi ezihambisana nesisindo sikaMaqubintuli nengoni yomjijiyane wohlelo lwenyanga-noMhlaba. Le [[UmFefenyeko|mifefenyeko]] ibonisa ukuthi iningi lezakhi zenyanga livela endikimbeni eyagadlaza uMhlaba wanguna..<ref>{{cite journal |last=Canup |first=R. |author1-link=Robin Canup |author2=Asphaug, E. |title=Origin of the Moon in a giant impact near the end of Earth's formation |journal=[[Nature (journal)|Nature]] |volume=412 |pages=708–712 |date=2001 |doi=10.1038/35089010 |pmid=11507633 |issue=6848 |bibcode=2001Natur.412..708C }}</ref> Kodwa, izinongo zowezi-2007 nakamuva zisikisela ukuthi ucezu olukhulu lwenyaga lwaluvela eMhlabeni wanguna.<ref>{{cite magazine |url=http://news.nationalgeographic.com/news/2007/12/071219-moon-collision.html |title=Earth–Asteroid Collision Formed Moon Later Than Thought |magazine=[[National Geographic]] |date=October 28, 2010 |access-date=May 7, 2012 |archive-url=https://web.archive.org/web/20090418171528/http://news.nationalgeographic.com/news/2007/12/071219-moon-collision.html |archive-date=April 18, 2009}}</ref><ref>{{cite journal |title=2008 Pellas-Ryder Award for Mathieu Touboul |journal=Meteoritics and Planetary Science |volume=43 |issue=S7 |pages=A11–A12 |date=2008 |bibcode=2008M&PS...43...11K |last1=Kleine |first1=Thorsten |doi=10.1111/j.1945-5100.2008.tb00709.x }}</ref><ref>{{cite journal |doi=10.1038/nature06428 |title=Late formation and prolonged differentiation of the Moon inferred from W isotopes in lunar metals |date=2007 |last1=Touboul |first1=M. |last2=Kleine |first2=T. |last3=Bourdon |first3=B. |last4=Palme |first4=H. |last5=Wieler |first5=R. |journal=[[Nature (journal)|Nature]] |volume=450 |issue=7173 |pages=1206–1209 |pmid=18097403 |bibcode=2007Natur.450.1206T }}</ref><ref>{{cite magazine |url=http://news.nationalgeographic.com/2015/04/150408-moon-form-giant-impact-earth |title=Flying Oceans of Magma Help Demystify the Moon's Creation |magazine=[[National Geographic]] |date=April 8, 2015 |archive-url=https://web.archive.org/web/20150409220422/http://news.nationalgeographic.com/2015/04/150408-moon-form-giant-impact-earth/ |archive-date=April 9, 2015}}</ref> Ezinye izindikimba zozungezohlelo lweLanga ezifana noNotshezi noma umhlabana obizwa uNovolo (Vesta), ngokweziphololwane ezikuyo, zinezigubo [[IChembe|zamachembe]] wesOhwe nomZithowe ahlukile kunawoMhlaba. Kodwa uMhlaba kanye neNyanga ziqukethe izigubo ezicishe zifana ncamashi. Ukulingana kwamachembe wohlelo lwenyanga-noMhlaba kungachazwa ngokokuxubana kwezithako ezihwamukeli okwenzeka emva kokungqubuzana, nakuba kunempikiswano ngalomchachiso.<ref>{{cite magazine |last=Nield |first=Ted |title=Moonwalk (summary of meeting at Meteoritical Society's 72nd Annual Meeting, Nancy, France) |magazine=[[Geoscientist (magazine)|Geoscientist]] |volume=19 |page=8 |date=2009 |url=http://www.geolsoc.org.uk/gsl/geoscientist/geonews/page6072.html |archive-url=https://web.archive.org/web/20120927034348/http://www.geolsoc.org.uk/gsl/geoscientist/geonews/page6072.html |archive-date=September 27, 2012}}</ref>
Ukugadlazeka koMhlaba kwadedela isidlakalasi esanele ukuba siketshezise (liquefy) kokubili ezingcezu ezivela eMhlabeni kanye negobohla loMhlaba, kanjalo kwabumbeka ulwandle lwentshekeza (magma).<ref name="Warren1985" /><ref>{{cite journal |last=Tonks |first=W. Brian |author2=Melosh, H. Jay |date=1993 |title=Magma ocean formation due to giant impacts |journal=[[Journal of Geophysical Research]] |volume=98 |issue=E3 |pages=5319–5333 |bibcode=1993JGR....98.5319T |doi=10.1029/92JE02726}}</ref> Inyanga esanda kubunjwa kungenzeka yayinolwayo ulwandle lomtshekeza.
Nakuba lo mchachiso wokugadlazeka uchaza ngendlela eyenza umqondo ubufakazi obukhona, kusanemibuzo engakaphendulwa iningi layo ethinta isigubo senyanga.<ref>{{cite journal |journal=[[Science (journal)|Science]] |author=Daniel Clery |title=Impact Theory Gets Whacked |volume=342 |pages=183–185 |date=October 11, 2013 |doi=10.1126/science.342.6155.183 |bibcode=2013Sci...342..183C |issue=6155 |pmid=24115419}}</ref> Izinongo ezithi iNyanga yakhiwe ngoMhlaba wanguna zikuthola kunzima ukucacisa imininingo yezinhlwa zevange ezifana neZambedu, isOhwe,, iSiphemba nezinye.<ref>{{cite journal |title=Zirconium isotope constraints on the composition of Theia and current Moon-forming theories |first1=W. |last1=Akram |first2=M. |last2=Schönbächler |journal=Earth and Planetary Science Letters |volume=449 |date=September 1, 2016 |pages=302–310 |doi=10.1016/j.epsl.2016.05.022 |bibcode=2016E&PSL.449..302A |doi-access=free |hdl=20.500.11850/117905 |hdl-access=free}}</ref> Ucwaningo lowezi-2022, olwasebenzisa umfefenyeko womgqamophezulu lwathola ukuthi ukugadlazeka okunjalo kunamandla wokudala iduna elinesisindo nesiqikili sensimbi esingangesinyanga emkhathini ukuba lizungeze uMhlaba likude nomngcele kaRoche. Ngisho [[Isivoko|nezivoko]] ezidlula emngceleni kaRoche ziyakwazi ukuqhubeka zisebenza.<ref>{{cite journal |last1=Kegerreis |first1=J.A. |last2=Ruiz-Bonilla |first2=S. |last3=Eke |first3=V.R. |last4=Massey |first4=R.J. |last5=Sandnes |first5=T.D. |last6=Teodoro |first6=L.F.A. |display-authors=1 |date=October 4, 2022 |title=Immediate Origin of the Moon as a Post-impact Satellite |journal=The Astrophysical Journal Letters |volume=937 |issue=L40 |pages=L40 |doi=10.3847/2041-8213/ac8d96 |arxiv=2210.01814 |bibcode=2022ApJ...937L..40K |doi-access=free}}</ref>
Mhla zil-1 kuNovemba wezi-2023, osonzululwazi babika ukuthi ngokwemifefenyeko yesicikizi, izinsalela zikaNomthiya kungenzeka zisekhona eMhlabeni.<ref name="NYT-20231101">{{cite news |last=Chang |first=Kenneth |title=A 'Big Whack' Formed the Moon and Left Traces Deep in Earth, a Study Suggests – Two enormous blobs deep inside Earth could be remnants of the birth of the moon. |url=https://www.nytimes.com/2023/11/01/science/moon-formation-theia.html |date=November 1, 2023 |work=[[The New York Times]] |url-status=live |archive-url=https://web.archive.org/web/20231101164127/https://www.nytimes.com/2023/11/01/science/moon-formation-theia.html |archive-date=November 1, 2023 |access-date=February 23, 2026}}</ref><ref name="NAT-20231101">{{cite journal |last1=Yuan |first1=Qian |last2=Li |first2=Mingming |last3=Desch |first3=Steven J. |last4=Ko |first4=Byeongkwan |last5=Deng |first5=Hongping |last6=Garnero |first6=Edward J. |last7=Gabriel |first7=Travis S. J. |last8=Kegerreis |first8=Jacob A. |last9=Miyazaki |first9=Yoshinori |last10=Eke |first10=Vincent |last11=Asimow |first11=Paul D. |title=Moon-forming impactor as a source of Earth's basal mantle anomalies |journal=Nature |date=2 November 2023 |volume=623 |issue=7985 |pages=95–99 |doi=10.1038/s41586-023-06589-1 |pmid=37914947 |bibcode=2023Natur.623...95Y }}</ref>
<gallery>
File:NASA-Apollo8-Dec24-Earthrise.jpg|Umhlaba enyanga ngoKhisimusi 1968
File:Aldrin Apollo 11 original.jpg|Abahambi amafu: u[[Neil Armstrong]] ubethatha isithombe ngo-[[Buzz Aldrin]] enyanga, 1969
File:Solar_eclipse_1999_4_NR.jpg|Ukuhlwa kwelanga ngo-1999
File:STEREO-B solar eclipse.jpg|Inyanga phambi kwelanga ngo-2007<ref>Tony Phillips [https://science.nasa.gov/Science@NASA]{{Dead link|date=August 2021 |bot=InternetArchiveBot |fix-attempted=yes }} Stereo Eclipse 12 March 2007|17 March 2010|[https://science.nasa.gov/headlines/y2007/12mar_stereoeclipse.htm http://science.nasa.gov/headlines/y2007/12mar_stereoeclipse.htm] {{Webarchive|url=https://web.archive.org/web/20080610082213/http://science.nasa.gov/headlines/y2007/12mar_stereoeclipse.htm |date=2008-06-10 }}</ref>
File:Main lunar core en.jpg|Amaqeqeba wenyanga
File:Lunar libration with phase Oct 2007 (continuous loop).gif|Izikhathi wenyanga
</gallery>
==References==
{{reflist}}
[[Category:Uhambo amafu]]
[[Category:Ukufunda umkhathi]]
bsklf5po67yhz7i4tjpoq2o1vvvup8o
126098
126077
2026-07-15T11:23:45Z
Fongcwele
16873
126098
wikitext
text/x-wiki
{{Lowercase title}}
{{infobox planet
| name = Inyanga
| apsis = gee
| symbol = [[File:Moon decrescent symbol (bold).svg|24px|☾|class=skin-invert]] or [[File:Moon crescent symbol (bold).svg|24px|☽|class=skin-invert]]
| image = FullMoon2010.jpg
| image_alt = Full Moon in the darkness of the night sky. It is patterned with a mix of light-tone regions and darker, irregular blotches, and scattered with varied circles surrounded by out-thrown rays of bright ejecta: impact craters.
| caption = Uhlangothi lwenyanga esilubonayo
| background = #fcbba9
| mpc_name = UMaqubituli
| alt_names = {{hlist |{{nowrap|INelekehle (isihlonipho)}}|{{nowrap|Impengu (isihlonipho)}}}}
| adjectives =
| periapsis = {{gaps |362 |600}} km<br />({{gaps |356 |400}}–{{gaps |370 |400}} km)
| apoapsis = {{gaps |405 |400}} km<br />({{gaps |404 |000}}–{{gaps |406 |700}} km)
| mean_orbit_radius = {{val |384784|u=km}}<ref name="NASAfactsheet" /><br/>({{val |1.28 |u=[[light-second|ls]]}}; 1/384 [[Astronomical unit|AU]]; {{val |1.001|ul=LD}})
| semimajor = {{val |384399 |u=km}}{{nbsp |2}}({{val |1.28 |u=[[light-second|ls]]}}; 1/389 [[Astronomical unit|AU]]; {{val |1 |ul=LD}})<ref name="W06"/>
| eccentricity = {{val |0.0549}}<ref name="W06"/>
| period = {{longitem |{{val|27.321661 |ul=d}}<br />(27 d 7 h 43 min 11.5 s<ref name="W06"/>)}}
| synodic_period = {{longitem|{{val |29.530589 |u=d}}<br />(29 d 12 h 44 min 2.9 s)}}
| avg_speed = {{val|1.022|ul=km/s}}
| inclination = 5.145° to the [[ecliptic]]<ref name="Lang2011"/>{{efn|name=inclination|Between 18.29° and 28.58° to Earth's [[equator]]<ref name="W06"/><!--Wieczorek et al. 2006; 18.29° when the longitude of the Moon's ascending node is 180°, 28.58° when it is 0°-->}}
| asc_node = {{longitem|[[Lunar precession#Nodal precession|Regressing]] by one revolution in 18.61 years}}
| arg_peri = {{longitem|[[Lunar precession#Apsidal precession|Progressing]] by one<br /> revolution in 8.85 years}}
| satellite_of = [[Earth]]{{efn|name=near-Earth asteroids}}<ref name="Morais2002"/>
| flattening = {{val|0.0012}}<ref name="NSSDC"/>
| equatorial_radius = {{val|1738.1 |u=km}}{{nbsp |2}}<br />(0.2725 of Earth's)<ref name="NSSDC"/>
| polar_radius = {{val|1736.0|u=km}}{{nbsp|2}}<br />(0.2731 of Earth's)<ref name="NSSDC"/>
| mean_radius = {{val|1737.4|u=km}}{{nbsp|2}}<br />(0.2727 of Earth's)<ref name="W06"/><ref name="NSSDC"/><ref>{{cite journal |last1=Smith |first1=David E. |last2=Zuber |first2=Maria T. |last3=Neumann |first3=Gregory A. |last4=Lemoine |first4=Frank G. |title=Topography of the Moon from the Clementine lidar |journal=[[Journal of Geophysical Research]] |date=1997 |volume=102 |issue=E1 |page=1601 |doi=10.1029/96JE02940 |bibcode=1997JGR...102.1591S |hdl=2060/19980018849 |hdl-access=free }}</ref>
| circumference = {{val|10921|u=km}}{{nbsp |2}}([[equator]]ial)
| surface_area = {{val|3.793|e=7|u=km2}}{{nbsp|2}}<br />(0.074 of Earth's)
| volume = {{val|2.1958|e=10|u=km3}}{{nbsp |2}}<br />(0.02 of Earth's)<ref name="NSSDC"/>
| mass = {{val|7.346|e=22|u=kg}}{{nbsp |2}}<br />({{val|0.0123}} of Earth's)<ref name="W06"/><ref name="NSSDC"/><ref>{{cite book |title=Top 10 of Everything |first=Paul |last=Terry |publisher=Octopus Publishing Group Ltd |year=2013 |isbn=978-0-600-62887-3 |page=226}}</ref>
| density = {{val|3.344|ul=g/cm3}}<ref name="W06"/><ref name="NSSDC"/><br />{{val|0.606}} × Earth
| surface_grav = {{cvt|1.622|m/s2|ft/s2}}<ref name="NSSDC"/><br />{{cvt|1.622|m/s2|g0|disp=out|lk=out}}
| moment_of_inertia_factor = {{val|0.3929|0.0009}}<ref name="Williams1996" />
| escape_velocity = {{convert|2.38|km/s|km/h mph|comma=gaps|abbr=on|disp=x|<br />(|)}}
| rotation = {{longitem|{{val|29.530589|u=d}}<br />(29 d 12 h 44 min 2.9 s; [[synodic day|synodic; solar day]]) ([[tidal locking|spin-orbit locked]])}}
| sidereal_day = {{val|27.321661|u=d}}{{nbsp|2}}(spin-orbit locked)
<!-- Wieczorek et al. 2006 -->| rot_velocity = {{nowrap|4.627 m/s}}
| axial_tilt = {{ublist|1.5424° to [[ecliptic]]<ref name="SolarViews" /><!--1.533° according to Conn 2007-->|6.687° to [[Orbital plane (astronomy)|orbit plane]]<ref name="Lang2011"/><!--6.4° according to Grego;<ref name="Grego2005">Grego, Peter, [https://books.google.com/books?id=z6Pgt9xEW9gC&pg=PA48 ''The Moon and How to Observe It''], Springer, 2005</ref> 6.6783° according to Conn.<ref name="Conn2007">Conn, David (2007); ''Lednorf's Dilemma'', AuthorHouse, Bloomington (IN)</ref>-->|24° to Earth's equator<ref>{{cite journal |last=Makemson |first=Maud W. |year=1971 |title=Determination of selenographic positions |journal=The Moon |volume=2 |issue=3 |pages=293–308 |doi=10.1007/BF00561882 |bibcode=1971Moon....2..293M }}</ref>}}
| epoch = [[J2000]]
| uncertainty = 0
| right_asc_north_pole = {{plainlist|
* {{RA|17|47|26}}
* 266.86°<ref name="report">{{cite journal |last1=Archinal |first1=B.A. |last2=A'Hearn |first2=M.F. |last3=Bowell |first3=E. |last4=Conrad |first4=A. |last5=Consolmagno |first5=G.J. |last6=Courtin |first6=R. |last7=Fukushima |first7=T. |last8=Hestroffer |first8=D. |last9=Hilton |first9=J.L. |last10=Krasinsky |first10=G.A. |last11=Neumann |first11=G. |last12=Oberst |first12=J. |last13=Seidelmann |first13=P. K. |last14=Stooke |first14=P. |last15=Tholen |first15=D.J. |last16=Thomas |first16=P.C. |last17=Williams |first17=I.P. |title=Report of the IAU Working Group on Cartographic Coordinates and Rotational Elements: 2009 |journal=Celestial Mechanics and Dynamical Astronomy |volume=109 |issue=2 |pages=101–135 |date=February 2011 |bibcode=2011CeMDA.109..101A |doi=10.1007/s10569-010-9320-4}}</ref>
}}
| declination = 65.64°<ref name="report" />
| albedo = {{val|0.136}}<ref name="Saari"/>
| temp_name1 = Equator
| min_temp_1 = 100 [[Kelvin|K]]<ref name=Bugby_et_al_2010/>
| mean_temp_1 = 250 K
| max_temp_1 = 390 K<ref name=Bugby_et_al_2010>{{cite conference |last1=Bugby |first1=D.C. |last2=Farmer |first2=J.T. |last3=O'Connor |first3=B.F. |last4=Wirzburger |first4=M.J. |last5=Abel |first5=E.D. |last6=Stouffer |first6=C.J. |title=Two-Phase Thermal Switching System for a Small, Extended Duration Lunar Surface Science Platform |series=AIP Conference Proceedings |volume=1208 |pages=76–83 |date=January 2010 |bibcode=2010AIPC.1208...76B |hdl=2060/20100009810 |hdl-access=free |doi=10.1063/1.3326291}}</ref>
| temp_name2 = 85°N
| min_temp_2 =
| mean_temp_2 = 150 K
| max_temp_2 = 230 K<ref name="Vasavada1999"/>
| surface_equivalent_dose_rate = {{convert |1.369 |mSv/d |μSv/h |disp=out}}<br />(during lunar daytime)<ref name="surface-radiation">{{Cite journal |vauthors=Zhang S, Wimmer-Schweingruber RF, Yu J, Wang C, Fu Q, Zou Y, Sun Y, Wang C, Hou D, Böttcher SI, Burmeister S |display-authors=6 |title=First measurements of the radiation dose on the lunar surface |journal=Science Advances |year=2020 |volume=6 |issue=39 |article-number=eaaz1334 |doi=10.1126/sciadv.aaz1334 |pmc=7518862 |pmid=32978156 |bibcode=2020SciA....6.1334Z |quote=We measured an average total absorbed dose rate in silicon of 13.2 ± 1 μGy/hour ... LND measured an average dose equivalent of 1369 μSv/day on the surface of the Moon}}</ref>
| surface_absorbed_dose_rate = 13.2 μGy/h<br />(during lunar [[daytime]])<ref name="surface-radiation"/>
| magnitude = {{ublist|−2.5 to −12.9{{efn |name=maxval}}|−12.74{{nbsp |2}}(mean [[full moon]])<ref name="NSSDC"/>}}
| abs_magnitude = 0.2<ref name="IMCCE">{{cite web |title=Encyclopedia – the brightest bodies |website=IMCCE |url=https://promenade.imcce.fr/en/pages1/101.html |access-date=June 1, 2023 |archive-date=March 21, 2023 |archive-url=https://web.archive.org/web/20230321023334/https://promenade.imcce.fr/en/pages1/101.html |url-status=live}}</ref>
| angular_size = 29.3 to 34.1 [[arcminutes]]<ref name="NSSDC"/>{{efn |name=angular size}}
| atmosphere = trace
| atmosphere_ref = <ref name="L06"/>
| surface_pressure = {{ublist |10{{sup |−7}} [[Pascal (unit)|Pa]] (1 [[picobar]]){{nbsp |2}}(day) |10{{sup |−10}} Pa (1 femtobar) {{nbsp |2}} <br />(night){{efn |name=pressure explanation}}}}
| atmosphere_composition = {{hlist|[[Helium|He]]|[[Argon|Ar]]|[[Neon|Ne]]|[[Sodium|Na]]|[[Potassium|K]]|[[Hydrogen|H]]}}
}}
[[File:Full_Moon_Luc_Viatour.jpg|thumb|iNyanga edilingene]]
'''iNyanga''' (uphawu: [[file:Moon decrescent symbol (bold).svg|16px|☾]]) iwukuphela [[Iduna|kweduna]] elizungeza [[uMhlaba]]. INyanga izungeza uMhlaba isebangeni elingamakhilomitha ayizi-384,399. INyanga iqeda uzungezo lwayo ngesikhathi esiyinyanga eyodwa, noma ngezinsuku ezingama-29.5. INyanga noMhlaba zibanjwe ukuheha [[UmNyondo|komnyondo]] onamandla emacaleni azo abukene. Lokhu kwenza kube neziphoqi zamabuya okuyizona ezidala amabuya eMhlabeni, futhi zadonsa iNyanga ukuba ibuke uMhlaba ngohlangothi olulodwa kuphela. Lokhu kukhweqa kwamabuya ngokomphumela kwenza uzungezo lweNyanga (usuku lwayo) ukuba luhambisane nenkathi ezungeza ngayo uMhlaba (inyanga eyodwa).
[[Uzungezohlelo lweLanga|Kuzungezohlelo lweLanga]], iNyanga iyiduna elikhulu nelinesisindo ukwedlula [[Umzulane oyisichwe|nemizulane esichwe]] eyaziwayo, futhi iyiduna lesihlanu elikhulu. Umnyondo wobuso bayo ulingana nengxenye eyodwa yesithupha yomnyondo woMhlaba, okuyisigamu somnyondo kaNotshezi, futhi ungowesibili omkhulu ezinyageni zozungezohlelo lweLanga kulandela inyanga kaMkhulukhulwana ebizwa uSontshaba. Umzimba weNyanga umahlukohluko futhi uhlabathi, unengcosana yamanzimbulunga, umoyambulunga newonga. Ubuso benyanga bumbozw nge-regolith, equkethe izincushuzo eziphafuke egobohleni ngenxa yokugadlazeke. Ingakho kuthiwa umaqubintuli, futhi igobohla lakhe [[Isigqabhozi sokugadlazeka|linezigqabhozi zokugadlazeka]] eziningi. Inyanga yake yaba nobuqhebeqhebe bezintshabamlilo eminyakeni eyisigidinqindi (1.2 billion) edlule. Indabuko yeNyanga ayaziwa, kodwa kukhona abahlawumbisela ukuthi yabumbeka ngezithako zoMhlaba, ezaphafuka lapho ugadlazwa indikimba elingana noNotshezi ebizwa gokuthi uThiyana eminyakeni eyizigidinqindi ezi-4.51 edlule, ngemva kokubumbeka koMhlaba.
Ebangeni elikuyo, izimo zobusuku nemini zikamaqubintuli thina sizibona [[Izimo zenyanga|kuyizimo zenyanga]], nalapho iNyanga idlula ethunzini loMhlaba kuba [[UNyezibomvu|noNyezibomvu]]. Ubungako obubonwayo beNyanga esibhakabhakeni cishe balingana nobeLanga, okwenza ukwazi ukulisitheza ngokugcwele lapho [[Insitholanga|kunensitholanga]] egcwele. INyanga iyindikimba eqhakazayo ebusuku ngenxa yokulwentuza ukukhanya.
INyanga ibilokhu ingumthombo obalulekile wogqozi nolwazi emlandweni ikakhulu kwezenkolo, ubuciko, [[Inzululwazi yemvelo]], nokundiza emkhathini. Izindizamkhathi zokuqala ezaya endikimbeni esemkhathini zaya eNyangeni, kusuka ngowe-1959 lapho kuyingeleza i-Luna 1 (eyathunyelwa i Soviet Union), Kanye ne- Luna 2 yaba nohlonze emhlabeni wonke, ezalandelwa ngowe-1966 umcababalo othambile we- Luna 9 nozungezo lwe- Luna 10. Abantu baqala ukunyatuela ebusweni heNyanga ngo July 20, 1969, besebenzisa indizamkhathi i-Apollo 11. Ngowe-1972, kwase kuthunyelwe izindizamkhathi iziyisithupha, kwacababala abantu abayishumi nambili eNyangeni. Maduze kulindelwe ukuba uhlelo lwe-Artemis lubuyosele abantu eNyangeni.
==uMsukagama==
Igama lesiZulu elithi ''inyanga'' liyibizonto leduna loMhlaba elibonakala ngonyezi ebusuku. Aligcini ekubeni igama lendikimba esemkhathini njengoba kubalwa isikhathi ngokuhambisana nozungezo lwayo. Uzungezo olulodwa lezinsuku ezingama-29 lubizwa iNyanga.
Umsuka walo usolimini olwandulela isintu kwelithi -mʊ̀gàngà elisebenza kokubili [[Inyanga (umelaphi)|kumuntu owelaphayo]] nasendikimbeni esemkhathini.
Ngokwesichazamazwi sikaVilakazi elinye igama lenyanga nguMaqibuntuli. Elithi 'unyezi' libhekisela ekukhanyeni kwayo ebusuku, lihlobene nesijobelelo esithi ''nyezi'' esisemagameni inkanyezi, ubhaqanyezi, iqhumanyezi.
Igama lesiZulu lokuhlonipha lenyanga elithi impengu nelithi inelekehle.
==uMlando wendalo==
=== Ukubumbeka kwayo ===
[[File:Big Splash Theia.gif|thumb|Umdwebo onyakazayo obonisa ukubumbeka kwenyanga lapho umzulane, obizwa uNomthiya, olingana noNotshezi ungqubuzana noMhlaba.]]
Ukuhlolwa kwamachembe ezangulo zenyanga kusikisela ukuthi inyanga yabumbeka eminyakeni eyizigidi ezingama-50 ngemuva kokuvela [[Uzungezohlelo lweLanga|kozungezohlelo lweLanga]].<ref>{{cite journal |title=Early Moon formation inferred from hafnium-tungsten systematics |last1=Thiemens |first1=Maxwell M. |last2=Sprung |first2=Peter |last3=Fonseca |first3=Raúl O. C. |last4=Leitzke |first4=Felipe P. |last5=Münker |first5=Carsten |journal=Nature Geoscience |volume=12 |issue=9 |pages=696–700 |date=July 2019 |doi=10.1038/s41561-019-0398-3 |pmid=39649009 |bibcode=2019NatGe..12..696T |pmc=7617097}}</ref><ref name="Age">{{cite news |url=https://www.universetoday.com/143025/the-moon-is-older-than-scientists-thought/ |title=The Moon is older than scientists thought |website=Universe Today |access-date=August 3, 2019 |archive-date=August 3, 2019 |archive-url=https://web.archive.org/web/20190803125139/https://www.universetoday.com/143025/the-moon-is-older-than-scientists-thought/ |url-status=live}}</ref> Ngokomlando, kunezindlela ezimbalwa eziphakanyiswayo zokubumbeka kwayo,<ref>{{cite journal |doi=10.1126/sciadv.1602365 |pmid=28097222 |pmc=5226643 |journal=Science Advances |date=2017 |volume=3 |issue=1 |title=Early formation of the Moon 4.51 billion years ago |last=Barboni |first=M. |author2=Boehnke, P. |author3=Keller, C. B. |author4=Kohl, I. E. |author5=Schoene, B. |author6=Young, E. D. |author7=McKeegan, K. D. |article-number=e1602365 |bibcode=2017SciA....3E2365B}}</ref> kodwa ayikho enencazelo echaza izici zohlelo lwenyanga-nomhlaba ngokukholisayo. Abanye bathi inyanga iwucezu olwaklewuka eMhlabeni endulo, abanye bathi inyanga yayizidlulela emkhathini yabanjwa umnyondo woMhlaba, abanye bona bathi uMhlaba nenyanga zadalwa ngesikhathi esisodwa. Kodwa asikho kuzo zonke lezi zihlawumbiselo, esichaza ngengoni yomjijiyane wohlelo lenyanga-nomhlaba.<ref>{{cite journal |last=Stevenson |first=D. J. |title=Origin of the moon–The collision hypothesis |journal=[[Annual Review of Earth and Planetary Sciences]] |date=1987 |volume=15 |issue=1 |pages=271–315 |bibcode=1987AREPS..15..271S |doi=10.1146/annurev.ea.15.050187.001415 }}</ref>
Umchachiso oseqhulwini wohlelo lwenyanga-nomhlaba uthi inyanga yabumbeka lapho uMhlaba wanguna ugadlazwa indikimba ewumzulane olingana [[UNotshezi|noNotshezi]], ebizwa uNomthiya. Lokhu kugadlazeka kwaqhumisa futhi kwasakaza izingcezu zoMhlaba esibhakabhakeni futhi zaqala ukuzungeza uMhlaba futhi ihlumelelo lazo labumba inyanga<ref name="taylor1998" /><ref>{{cite web |url=http://news.nationalgeographic.com/2015/04/150416-asteroids-scars-moon-formation-space/ |title=Asteroids Bear Scars of Moon's Violent Formation |date=April 16, 2015 |archive-url=https://web.archive.org/web/20161008160812/http://news.nationalgeographic.com/2015/04/150416-asteroids-scars-moon-formation-space/ |archive-date=October 8, 2016}}</ref> eduze nomngcele kaRoche.<ref>{{cite journal |title=Scaling in global tidal dissipation of the Earth–Moon system |last=van Putten |first=Maurice H. P. M. |journal=New Astronomy |volume=54 |pages=115–121 |date=July 2017 |doi=10.1016/j.newast.2017.01.012 |arxiv=1609.07474 |bibcode=2017NewA...54..115V }}</ref>
Kuthiwa ukugadlazeka kwaloluhlobo kwakuyinsakavukela ezinsukwini zokuqala [[Uzungezohlelo lweLanga|kozungezohlelo lweLanga]]. Imifefenyeko yesicikizi yalokhu kungqubuzana iveza iziphumo ezifanayo futhi ezihambisana nesisindo sikaMaqubintuli nengoni yomjijiyane wohlelo lwenyanga-noMhlaba. Le [[UmFefenyeko|mifefenyeko]] ibonisa ukuthi iningi lezakhi zenyanga livela endikimbeni eyagadlaza uMhlaba wanguna..<ref>{{cite journal |last=Canup |first=R. |author1-link=Robin Canup |author2=Asphaug, E. |title=Origin of the Moon in a giant impact near the end of Earth's formation |journal=[[Nature (journal)|Nature]] |volume=412 |pages=708–712 |date=2001 |doi=10.1038/35089010 |pmid=11507633 |issue=6848 |bibcode=2001Natur.412..708C }}</ref> Kodwa, izinongo zowezi-2007 nakamuva zisikisela ukuthi ucezu olukhulu lwenyaga lwaluvela eMhlabeni wanguna.<ref>{{cite magazine |url=http://news.nationalgeographic.com/news/2007/12/071219-moon-collision.html |title=Earth–Asteroid Collision Formed Moon Later Than Thought |magazine=[[National Geographic]] |date=October 28, 2010 |access-date=May 7, 2012 |archive-url=https://web.archive.org/web/20090418171528/http://news.nationalgeographic.com/news/2007/12/071219-moon-collision.html |archive-date=April 18, 2009}}</ref><ref>{{cite journal |title=2008 Pellas-Ryder Award for Mathieu Touboul |journal=Meteoritics and Planetary Science |volume=43 |issue=S7 |pages=A11–A12 |date=2008 |bibcode=2008M&PS...43...11K |last1=Kleine |first1=Thorsten |doi=10.1111/j.1945-5100.2008.tb00709.x }}</ref><ref>{{cite journal |doi=10.1038/nature06428 |title=Late formation and prolonged differentiation of the Moon inferred from W isotopes in lunar metals |date=2007 |last1=Touboul |first1=M. |last2=Kleine |first2=T. |last3=Bourdon |first3=B. |last4=Palme |first4=H. |last5=Wieler |first5=R. |journal=[[Nature (journal)|Nature]] |volume=450 |issue=7173 |pages=1206–1209 |pmid=18097403 |bibcode=2007Natur.450.1206T }}</ref><ref>{{cite magazine |url=http://news.nationalgeographic.com/2015/04/150408-moon-form-giant-impact-earth |title=Flying Oceans of Magma Help Demystify the Moon's Creation |magazine=[[National Geographic]] |date=April 8, 2015 |archive-url=https://web.archive.org/web/20150409220422/http://news.nationalgeographic.com/2015/04/150408-moon-form-giant-impact-earth/ |archive-date=April 9, 2015}}</ref> Ezinye izindikimba zozungezohlelo lweLanga ezifana noNotshezi noma umhlabana obizwa uNovolo (Vesta), ngokweziphololwane ezikuyo, zinezigubo [[IChembe|zamachembe]] wesOhwe nomZithowe ahlukile kunawoMhlaba. Kodwa uMhlaba kanye neNyanga ziqukethe izigubo ezicishe zifana ncamashi. Ukulingana kwamachembe wohlelo lwenyanga-noMhlaba kungachazwa ngokokuxubana kwezithako ezihwamukeli okwenzeka emva kokungqubuzana, nakuba kunempikiswano ngalomchachiso.<ref>{{cite magazine |last=Nield |first=Ted |title=Moonwalk (summary of meeting at Meteoritical Society's 72nd Annual Meeting, Nancy, France) |magazine=[[Geoscientist (magazine)|Geoscientist]] |volume=19 |page=8 |date=2009 |url=http://www.geolsoc.org.uk/gsl/geoscientist/geonews/page6072.html |archive-url=https://web.archive.org/web/20120927034348/http://www.geolsoc.org.uk/gsl/geoscientist/geonews/page6072.html |archive-date=September 27, 2012}}</ref>
Ukugadlazeka koMhlaba kwadedela isidlakalasi esanele ukuba siketshezise (liquefy) kokubili ezingcezu ezivela eMhlabeni kanye negobohla loMhlaba, kanjalo kwabumbeka ulwandle lwentshekeza (magma).<ref name="Warren1985" /><ref>{{cite journal |last=Tonks |first=W. Brian |author2=Melosh, H. Jay |date=1993 |title=Magma ocean formation due to giant impacts |journal=[[Journal of Geophysical Research]] |volume=98 |issue=E3 |pages=5319–5333 |bibcode=1993JGR....98.5319T |doi=10.1029/92JE02726}}</ref> Inyanga esanda kubunjwa kungenzeka yayinolwayo ulwandle lomtshekeza.
Nakuba lo mchachiso wokugadlazeka uchaza ngendlela eyenza umqondo ubufakazi obukhona, kusanemibuzo engakaphendulwa iningi layo ethinta isigubo senyanga.<ref>{{cite journal |journal=[[Science (journal)|Science]] |author=Daniel Clery |title=Impact Theory Gets Whacked |volume=342 |pages=183–185 |date=October 11, 2013 |doi=10.1126/science.342.6155.183 |bibcode=2013Sci...342..183C |issue=6155 |pmid=24115419}}</ref> Izinongo ezithi iNyanga yakhiwe ngoMhlaba wanguna zikuthola kunzima ukucacisa imininingo yezinhlwa zevange ezifana neZambedu, isOhwe,, iSiphemba nezinye.<ref>{{cite journal |title=Zirconium isotope constraints on the composition of Theia and current Moon-forming theories |first1=W. |last1=Akram |first2=M. |last2=Schönbächler |journal=Earth and Planetary Science Letters |volume=449 |date=September 1, 2016 |pages=302–310 |doi=10.1016/j.epsl.2016.05.022 |bibcode=2016E&PSL.449..302A |doi-access=free |hdl=20.500.11850/117905 |hdl-access=free}}</ref> Ucwaningo lowezi-2022, olwasebenzisa umfefenyeko womgqamophezulu lwathola ukuthi ukugadlazeka okunjalo kunamandla wokudala iduna elinesisindo nesiqikili sensimbi esingangesinyanga emkhathini ukuba lizungeze uMhlaba likude nomngcele kaRoche. Ngisho [[Isivoko|nezivoko]] ezidlula emngceleni kaRoche ziyakwazi ukuqhubeka zisebenza.<ref>{{cite journal |last1=Kegerreis |first1=J.A. |last2=Ruiz-Bonilla |first2=S. |last3=Eke |first3=V.R. |last4=Massey |first4=R.J. |last5=Sandnes |first5=T.D. |last6=Teodoro |first6=L.F.A. |display-authors=1 |date=October 4, 2022 |title=Immediate Origin of the Moon as a Post-impact Satellite |journal=The Astrophysical Journal Letters |volume=937 |issue=L40 |pages=L40 |doi=10.3847/2041-8213/ac8d96 |arxiv=2210.01814 |bibcode=2022ApJ...937L..40K |doi-access=free}}</ref>
Mhla zil-1 kuNovemba wezi-2023, osonzululwazi babika ukuthi ngokwemifefenyeko yesicikizi, izinsalela zikaNomthiya kungenzeka zisekhona eMhlabeni.<ref name="NYT-20231101">{{cite news |last=Chang |first=Kenneth |title=A 'Big Whack' Formed the Moon and Left Traces Deep in Earth, a Study Suggests – Two enormous blobs deep inside Earth could be remnants of the birth of the moon. |url=https://www.nytimes.com/2023/11/01/science/moon-formation-theia.html |date=November 1, 2023 |work=[[The New York Times]] |url-status=live |archive-url=https://web.archive.org/web/20231101164127/https://www.nytimes.com/2023/11/01/science/moon-formation-theia.html |archive-date=November 1, 2023 |access-date=February 23, 2026}}</ref><ref name="NAT-20231101">{{cite journal |last1=Yuan |first1=Qian |last2=Li |first2=Mingming |last3=Desch |first3=Steven J. |last4=Ko |first4=Byeongkwan |last5=Deng |first5=Hongping |last6=Garnero |first6=Edward J. |last7=Gabriel |first7=Travis S. J. |last8=Kegerreis |first8=Jacob A. |last9=Miyazaki |first9=Yoshinori |last10=Eke |first10=Vincent |last11=Asimow |first11=Paul D. |title=Moon-forming impactor as a source of Earth's basal mantle anomalies |journal=Nature |date=2 November 2023 |volume=623 |issue=7985 |pages=95–99 |doi=10.1038/s41586-023-06589-1 |pmid=37914947 |bibcode=2023Natur.623...95Y }}</ref>
<gallery>
File:NASA-Apollo8-Dec24-Earthrise.jpg|Umhlaba enyanga ngoKhisimusi 1968
File:Aldrin Apollo 11 original.jpg|Abahambi amafu: u[[Neil Armstrong]] ubethatha isithombe ngo-[[Buzz Aldrin]] enyanga, 1969
File:Solar_eclipse_1999_4_NR.jpg|Ukuhlwa kwelanga ngo-1999
File:STEREO-B solar eclipse.jpg|Inyanga phambi kwelanga ngo-2007<ref>Tony Phillips [https://science.nasa.gov/Science@NASA]{{Dead link|date=August 2021 |bot=InternetArchiveBot |fix-attempted=yes }} Stereo Eclipse 12 March 2007|17 March 2010|[https://science.nasa.gov/headlines/y2007/12mar_stereoeclipse.htm http://science.nasa.gov/headlines/y2007/12mar_stereoeclipse.htm] {{Webarchive|url=https://web.archive.org/web/20080610082213/http://science.nasa.gov/headlines/y2007/12mar_stereoeclipse.htm |date=2008-06-10 }}</ref>
File:Main lunar core en.jpg|Amaqeqeba wenyanga
File:Lunar libration with phase Oct 2007 (continuous loop).gif|Izikhathi wenyanga
</gallery>
==References==
{{reflist}}
[[Category:Uhambo amafu]]
[[Category:Ukufunda umkhathi]]
9c6cx4ypg2tkojmki957oa1imppsl2u
Template:Convert
10
4607
126097
27458
2026-07-15T11:01:31Z
Fongcwele
16873
126097
wikitext
text/x-wiki
<includeonly>{{{{{♥|safesubst:}}}#invoke:convert|convert}}</includeonly><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
hf9zof3enslixmyfgs0toady52qiq06
User:GerardM/Members of the Senate of Zimbabwe
2
9791
126068
125971
2026-07-15T00:55:36Z
ListeriaBot
10758
Wikidata list updated [V2]
126068
wikitext
text/x-wiki
This list is not ready for use on Wikipedia because a Member of the Senate of Zimbabwe who was a member twice does not show twice.
{{Wikidata list
|sparql=SELECT ?item WHERE { ?item wdt:P39 wd:Q21295155 }
|section=
|sort=P39/Q21295155/P580
|sort_order=desc
|columns=label:Article,description,P27:Country,P39/Q21295155/P580:Start date,P39/Q21295155/P582:End date,P18:Image
|thumb=128
|min_section=2
}}
{| class='wikitable sortable'
! Article
! description
! Country
! Start date
! End date
! Image
|-
| ''[[:d:Q443215|Garfield Todd]]''
|
| [[IZimbabwe]]<br/>[[INyuzilandi]]
|
|
| [[File:Garfield todd.jpg|center|128px]]
|-
| ''[[:d:Q514464|Simbarashe Mumbengegwi]]''
|
| [[IZimbabwe]]
|
|
| [[File:Simbarashe Mumbengegwi.jpg|center|128px]]
|-
| ''[[:d:Q1399766|Joseph Msika]]''
|
| [[IZimbabwe]]
|
|
| [[File:Joseph Msika.jpg|center|128px]]
|-
| ''[[:d:Q2011278|Obert Mpofu]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q3133488|Herbert Murerwa]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q3274147|John Nkomo]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q3369338|Patrick Chinamasa]]''
|
| [[IZimbabwe]]
|
|
| [[File:Patrick Chinamasa.png|center|128px]]
|-
| ''[[:d:Q5017585|Cain Mathema]]''
|
| [[IZimbabwe]]
|
|
| [[File:Minister Cain Mathema.jpg|center|128px]]
|-
| ''[[:d:Q5091394|Chenhanho Chimutengwende]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q5232494|David Coltart]]''
|
| [[IZimbabwe]]
|
|
| [[File:David Coltart.JPG|center|128px]]
|-
| ''[[:d:Q5238373|David Parirenyatwa]]''
|
| [[IZimbabwe]]
|
|
| [[File:David Parirenyatwa (cropped).png|center|128px]]
|-
| ''[[:d:Q5301822|Douglas Mombeshora]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q5340066|Edna Madzongwe]]''
|
| [[IZimbabwe]]
|
|
| [[File:Edna Madzongwe at the 53rd Commonwealth Parliamentary Conference, in New Delhi on September 22, 2007.jpg|center|128px]]
|-
| ''[[:d:Q5360562|Elias Mudzuri]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q5427612|Faber Chidarikire]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q5460278|Flora Buka]]''
|
| [[IZimbabwe]]
|
|
|
|-
| [[Gibson Sibanda]]
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q5576402|Godfrey Chidyausiku]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q5622273|Guy Georgias]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q5725372|Henry Madzorera]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q6217016|Johannes Tomana]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q6775305|Martin Dinha]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q6848219|Mike Nyambuya]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q7088073|Olivia Muchena]]''
|
| [[IZimbabwe]]
|
|
| [[File:Olivia muchena.jpg|center|128px]]
|-
| ''[[:d:Q7146962|Patrick Kombayi]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q7317489|Reuben Marumahoko]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q7412244|Samuel Mumbengegwi]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q7412644|Samuel Sipepa Nkomo]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q7447116|Sekai Holland]]''
|
| [[IZimbabwe]]
|
|
| [[File:Sekai Holland.jpg|center|128px]]
|-
| ''[[:d:Q7550235|Sobusa Gula-Ndebele]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q7660136|Sydney Sekeramayi]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q7936864|Vitalis Zvinavashe]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q8003386|Willard Chiwewe]]''
|
| [[IZimbabwe]]
|
|
|
|-
| [[Thokozani Khuphe]]
|
| [[IZimbabwe]]
|
|
| [[File:Thokozani Khuphe.jpg|center|128px]]
|-
| ''[[:d:Q16011177|Jeremiah Chirau]]''
|
| [[IZimbabwe]]<br/>''[[:d:Q217169|Rhodesia]]''
|
|
| [[File:Internal Settlement.jpg|center|128px]]
|-
| ''[[:d:Q16091552|Naison Ndlovu]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q16136022|Morgan Femai]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q16733075|Tracy Mutinhiri]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q16866539|Simon Khaya-Moyo]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q16886031|Lutho Tapela]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q20872132|Prisca Mupfumira]]''
|
| [[IZimbabwe]]
|
|
| [[File:Prisca Mupfumira - 2018 (cropped).jpg|center|128px]]
|-
| ''[[:d:Q25697807|Kumbirai Kangai]]''
|
| [[IZimbabwe]]
|
|
| [[File:Independence Day Celebrations at the Ambassador's Residence, Harare, Zimbabwe. Guests at the function included Deputy Speaker of Parliament, Kumbirai Kangai.jpg|center|128px]]
|-
| ''[[:d:Q85118775|Monica Mutsvangwa]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q94704254|Jock Alves]]''
|
|
|
|
|
|-
| ''[[:d:Q106269407|Ellen Gwaradzimba]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q107491736|Peter Haritatos]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q107534597|Bekithemba Mpofu]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111281646|Getrude Chibagu]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111281682|Lovemore Matuke]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111281756|Tendayi Makunde]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111282851|Annah Rungani]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111282876|Lwazi Sibanda]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111282883|Miriam Chikukwa]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111282888|Sabina Thembani]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111282889|Sibusisiwe Budha]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111282890|Sikhanyisiwe Mpofu]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283546|Address Matiirira]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283547|Agnes Sibanda]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283548|Alice Chimbudzi]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283549|Alma Mkhwebu]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283551|Alphina Juba]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283552|Angelina Masuku]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283554|Charles Tawengwa]]''
|
|
|
|
|
|-
| ''[[:d:Q111283555|Damian D. E. Mumvuri]]''
|
|
|
|
|
|-
| ''[[:d:Q111283556|Dorothy Tholakele Khumalo]]''
|
|
|
|
|
|-
| ''[[:d:Q111283557|Dzikamai Calisto Mavhaire]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283558|Farirai Ethel Mabhungu]]''
|
|
|
|
|
|-
| ''[[:d:Q111283559|Grace Tsitsi Jadagu]]''
|
|
|
|
|
|-
| ''[[:d:Q111283560|Herbert M. Sinampande]]''
|
|
|
|
|
|-
| ''[[:d:Q111283561|Jaison Max Korerai Machaya]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283562|James Makore]]''
|
|
|
|
|
|-
| ''[[:d:Q111283563|Jane Chifamba]]''
|
|
|
|
|
|-
| ''[[:d:Q111283564|Jenia Manyeruke]]''
|
|
|
|
|
|-
| ''[[:d:Q111283565|Josiah D. Hungwe]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283566|Joyce Ndhlovu]]''
|
|
|
|
|
|-
| ''[[:d:Q111283567|Judith Mawire]]''
|
|
|
|
|
|-
| ''[[:d:Q111283568|Keresina Chabuka]]''
|
|
|
|
|
|-
| ''[[:d:Q111283569|Lilian Timveos]]''
|
|
|
|
|
|-
| ''[[:d:Q111283571|Martha Muronzi]]''
|
|
|
|
|
|-
| ''[[:d:Q111283572|Matson M. Hlalo]]''
|
|
|
|
|
|-
| ''[[:d:Q111283573|Medelina Bhebhe]]''
|
|
|
|
|
|-
| ''[[:d:Q111283574|Michael Norman Carter]]''
|
|
|
|
|
|-
| ''[[:d:Q111283575|Mike M. Byton]]''
|
|
|
|
|
|-
| ''[[:d:Q111283576|Misheck Marava]]''
|
|
|
|
|
|-
| ''[[:d:Q111283577|Mlotshwa Sithembile]]''
|
|
|
|
|
|-
| ''[[:d:Q111283578|Molly Mkandla]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283579|Monicah Mavhunga]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283580|Morgen Komichi]]''
|
|
|
|
|
|-
| ''[[:d:Q111283581|Muhlava Otilia Maluleke]]''
|
|
|
|
|
|-
| ''[[:d:Q111283582|Patrick Chitaka]]''
|
|
|
|
|
|-
| ''[[:d:Q111283583|Rorana Muchihwa]]''
|
|
|
|
|
|-
| ''[[:d:Q111283584|Rosemary Goto]]''
|
|
|
|
|
|-
| ''[[:d:Q111283585|Rosemary Nyathi]]''
|
|
|
|
|
|-
| ''[[:d:Q111283586|Ruth Mafoko Labode]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283587|Shuvai Ben Mahofa]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283588|Siphiwe Ncube]]''
|
|
|
|
|
|-
| ''[[:d:Q111283590|Tapera Machingaifa]]''
|
|
|
|
|
|-
| ''[[:d:Q111283592|Thokozile A. Mathuthu]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283594|Tsitsi Veronica Muzenda]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283595|Violet Moeketsi]]''
|
|
|
|
|
|-
| ''[[:d:Q111283596|Virginia Muchenje]]''
|
|
|
|
|
|-
| ''[[:d:Q111283597|Watchy Sibanda]]''
|
|
|
|
|
|-
| ''[[:d:Q111283842|Annah Shiri]]''
|
|
|
|
|
|-
| ''[[:d:Q111283843|Ashel Sithole]]''
|
|
|
|
|
|-
| ''[[:d:Q111283844|Clemence Nembire]]''
|
|
|
|
|
|-
| ''[[:d:Q111283845|Cleveria Chizema]]''
|
|
|
|
|
|-
| ''[[:d:Q111283846|Daniel Gwenzi]]''
|
|
|
|
|
|-
| ''[[:d:Q111283847|Daster Chisunga]]''
|
|
|
|
|
|-
| ''[[:d:Q111283848|Enos Masakwa]]''
|
|
|
|
|
|-
| ''[[:d:Q111283849|Feleni Chauke]]''
|
|
|
|
|
|-
| ''[[:d:Q111283850|Fortune Charumbira]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111283851|Joseph Mudhe]]''
|
|
|
|
|
|-
| ''[[:d:Q111283852|Mike Musaka]]''
|
|
|
|
|
|-
| ''[[:d:Q111283853|Milton Ntabeni]]''
|
|
|
|
|
|-
| ''[[:d:Q111283854|Mtshane Khumalo]]''
|
|
|
|
|
|-
| ''[[:d:Q111283855|Ndabazekhaya Matema]]''
|
|
|
|
|
|-
| ''[[:d:Q111283857|Nkathazo Siansole]]''
|
|
|
|
|
|-
| ''[[:d:Q111283858|Nyamayabo Mashavakure]]''
|
|
|
|
|
|-
| ''[[:d:Q111283859|Rivai Mbaimbai]]''
|
|
|
|
|
|-
| ''[[:d:Q111283860|Samson Katsande]]''
|
|
|
|
|
|-
| ''[[:d:Q111283861|Sindalizwe Dube]]''
|
|
|
|
|
|-
| ''[[:d:Q111283863|Tambudzani Mohadi]]''
|
|
|
|
|
|-
| ''[[:d:Q111283865|Try Manyepa]]''
|
|
|
|
|
|-
| ''[[:d:Q111283866|Vuyani Ndiweni]]''
|
|
|
|
|
|-
| ''[[:d:Q111283867|Wilson Nebiri]]''
|
|
|
|
|
|-
| ''[[:d:Q111283868|Zama Mkhwananzi]]''
|
|
|
|
|
|-
| ''[[:d:Q111291735|Alice Dube]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111291737|Angeline Tongogara]]''
|
|
|
|
|
|-
| ''[[:d:Q111291738|Annias Mapungwana]]''
|
|
|
|
|
|-
| ''[[:d:Q111291739|Aplonia Munzverengwi]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111291740|Bybit Tsomondo]]''
|
|
|
|
|
|-
| ''[[:d:Q111291741|Christine Rambanepasi]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111291742|Clara Shumba]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111291744|Douglas Mwonzora]]''
|
| [[IZimbabwe]]
|
|
| [[File:Image of Douglas Mwonzora seated in Formal lounge.jpg|center|128px]]
|-
| ''[[:d:Q111291745|Esnath Rwambiwa]]''
|
|
|
|
|
|-
| ''[[:d:Q111291746|Gideon Shoko]]''
|
|
|
|
|
|-
| ''[[:d:Q111291747|Helen Zivira]]''
|
|
|
|
|
|-
| ''[[:d:Q111291750|Joseph Madziva]]''
|
|
|
|
|
|-
| ''[[:d:Q111291751|Joshua Teke Malinga]]''
|
|
|
|
|
|-
| ''[[:d:Q111291753|Kerina Gweshe]]''
|
|
|
|
|
|-
| ''[[:d:Q111291754|Langton Chikukwa]]''
|
|
|
|
|
|-
| ''[[:d:Q111291755|Larry Mavhima]]''
|
|
|
|
|
|-
| ''[[:d:Q111291756|Maybe Mbowa]]''
|
|
|
|
|
|-
| ''[[:d:Q111291757|Meliwe Phuthi]]''
|
|
|
|
|
|-
| ''[[:d:Q111291758|Mildred Reason Dube]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111291759|Molly Ndlovu]]''
|
|
|
|
|
|-
| ''[[:d:Q111291761|Morgan Komichi]]''
|
|
|
|
|
|-
| ''[[:d:Q111291762|Oliver Chidawu]]''
|
|
|
|
|
|-
| ''[[:d:Q111291764|Phyllis Ndlovu]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111291765|Rejoice Timire]]''
|
| [[IZimbabwe]]
| 2018-08
|
|
|-
| ''[[:d:Q111291766|Shephered Chengeta Gundu]]''
|
|
|
|
|
|-
| ''[[:d:Q111291767|Sikelela Gumpo]]''
|
|
|
|
|
|-
| ''[[:d:Q111291768|Spinani Hungwe]]''
|
|
|
|
|
|-
| ''[[:d:Q111291769|Tambudzani Moyo]]''
|
|
|
|
|
|-
| ''[[:d:Q111291770|Tapfumanei Wunganayi]]''
|
|
|
|
|
|-
| ''[[:d:Q111291771|Themba Mathuthu]]''
|
|
|
|
|
|-
| ''[[:d:Q111291772|Theresa Maonei Makone]]''
|
|
|
|
|
|-
| ''[[:d:Q111291774|Tichinani Mavetera]]''
|
|
|
|
|
|-
| ''[[:d:Q111291775|Voice Chinake]]''
|
|
|
|
|
|-
| ''[[:d:Q111291776|Watson Khupe]]''
|
|
|
|
|
|-
| ''[[:d:Q111291777|Witness Bungu]]''
|
|
|
|
|
|-
| ''[[:d:Q111295117|Shaddy Sai]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111313041|Jefta Chindanya]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111313199|Phone Madiro]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111313735|Agnes Dete]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111313737|Edmund Jacob]]''
|
|
|
|
|
|-
| ''[[:d:Q111313738|Enna Chitsa]]''
|
|
|
|
|
|-
| ''[[:d:Q111313740|Gladys Dube]]''
|
|
|
|
|
|-
| ''[[:d:Q111313741|Gladys Mabhiza]]''
|
|
|
|
|
|-
| ''[[:d:Q111313742|Josiah Rimbi]]''
|
|
|
|
|
|-
| ''[[:d:Q111313743|Matson Mpofu]]''
|
|
|
|
|
|-
| ''[[:d:Q111313745|Misheck Chando]]''
|
|
|
|
|
|-
| ''[[:d:Q111313746|Monica Mustvangwa]]''
|
|
|
|
|
|-
| ''[[:d:Q111313747|Obert Gutu]]''
|
|
|
|
|
|-
| ''[[:d:Q111313748|Oriah Kabayanjiri]]''
|
|
|
|
|
|-
| ''[[:d:Q111313749|Rutendo Chikukwa]]''
|
|
|
|
|
|-
| ''[[:d:Q111313750|Samuel Tsungirirai]]''
|
|
|
|
|
|-
| ''[[:d:Q111313751|Stanley Sakupwanya]]''
|
|
|
|
|
|-
| ''[[:d:Q111313752|Sydney Sekeremayi]]''
|
|
|
|
|
|-
| ''[[:d:Q111313822|Ananias Nyathi]]''
|
|
|
|
|
|-
| ''[[:d:Q111313824|Betty Chikava]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111313825|Cephas Chikwanha]]''
|
|
|
|
|
|-
| ''[[:d:Q111313827|Chiratidzo Gava]]''
|
|
|
|
|
|-
| ''[[:d:Q111313828|Clarissa Muchengeti]]''
|
|
|
|
|
|-
| ''[[:d:Q111313829|Dalumuzi Khumalo]]''
|
|
|
|
|
|-
| ''[[:d:Q111313830|Diamond Mumvuri]]''
|
|
|
|
|
|-
| ''[[:d:Q111313832|Edmond Jacob]]''
|
|
|
|
|
|-
| ''[[:d:Q111313833|Egneti Makono]]''
|
|
|
|
|
|-
| ''[[:d:Q111313834|Eunice Sandi]]''
|
|
|
|
|
|-
| ''[[:d:Q111313835|Fanuel Bayayi]]''
|
|
|
|
|
|-
| ''[[:d:Q111313836|Forbes Magadu]]''
|
|
|
|
|
|-
| ''[[:d:Q111313837|Grace Dube]]''
|
|
|
|
|
|-
| ''[[:d:Q111313838|Greenfield Nyoni]]''
|
|
|
|
|
|-
| ''[[:d:Q111313839|Henry Chikumbiro]]''
|
|
|
|
|
|-
| ''[[:d:Q111313840|Josephine Moyo]]''
|
|
|
|
|
|-
| ''[[:d:Q111313841|Kantibhai Patel]]''
|
| [[IZimbabwe]]
| 2005-04-12<br/>1985
| 2008-03-28<br/>1990
| [[File:The Vice President, Shri M. Venkaiah Naidu at the Samadhi of Kantibhai Govardhanbhai Patel who had migrated to Zimbabwe in 1961 and rose to become a senator and was elected as Member of Parliament, in Harare, Zimbabwe.JPG|center|128px]]
|-
| ''[[:d:Q111313842|Leonard Munotengwa]]''
|
|
|
|
|
|-
| ''[[:d:Q111313843|Livia Gumbura]]''
|
|
|
|
|
|-
| ''[[:d:Q111313844|Lot Mbambo]]''
|
|
|
|
|
|-
| ''[[:d:Q111313845|Mandy Chimene]]''
|
|
|
|
|
|-
| ''[[:d:Q111313846|Oria Kabayanjiri]]''
|
|
|
|
|
|-
| ''[[:d:Q111313847|Richard Hove]]''
|
| [[IZimbabwe]]
|
|
|
|-
| ''[[:d:Q111313848|Rittah Ndlovu]]''
|
|
|
|
|
|-
| ''[[:d:Q111313849|Sheila Mahere]]''
|
|
|
|
|
|-
| ''[[:d:Q111313850|Sibangilizwe Msipa]]''
|
|
|
|
|
|-
| ''[[:d:Q111313851|Siriro Majuru]]''
|
|
|
|
|
|-
| ''[[:d:Q111313852|Stefano Mukusha]]''
|
|
|
|
|
|-
| ''[[:d:Q111313853|Tazvitya Mapfumo]]''
|
|
|
|
|
|-
| ''[[:d:Q111313854|Thabiso Ndlovu]]''
|
|
|
|
|
|-
| ''[[:d:Q111313855|Tobias Matanga]]''
|
|
|
|
|
|-
| ''[[:d:Q111313857|Virginia Muchengeti]]''
|
|
|
|
|
|-
| ''[[:d:Q111313858|Vivian Muchicho]]''
|
|
|
|
|
|}
{{Wikidata list end}}
6lf00wkgqtcbiljoqb5o5afgzc1tdge
User:GerardM/Members of the Parliament of Uganda
2
9949
126066
125970
2026-07-14T21:40:45Z
ListeriaBot
10758
Wikidata list updated [V2]
126066
wikitext
text/x-wiki
This list is not ready for use on Wikipedia because a Member of the Parliament of Uganda who was a member twice does not show twice.
{{Wikidata list
|sparql=SELECT ?item WHERE { ?item wdt:P39 wd:Q21296005 }
|section=
|sort=P39/Q21296005/P580
|sort_order=desc
|columns=label:Article,description,P27:Country,P39/Q21296005/P580:Start date,P39/Q21296005/P582:End date,P18:Image
|thumb=128
|min_section=2
}}
{| class='wikitable sortable'
! Article
! description
! Country
! Start date
! End date
! Image
|-
| ''[[:d:Q21759|Winnie Byanyima]]''
|
| [[IYuganda]]
|
|
| [[File:Winnie Byanyima, directrice exécutive d'Oxfam international.jpg|center|128px]]
|-
| ''[[:d:Q49253|Irene Muloni]]''
|
| [[IYuganda]]
|
|
| [[File:Irene Muloni - 2018 (cropped).jpg|center|128px]]
|-
| ''[[:d:Q57873|Amama Mbabazi]]''
|
| [[IYuganda]]
| 2003-02-11
| 2016-02-18
| [[File:The Minister of Security, Uganda, Mr. Amama Mbabazi meeting with the Minister of State for External Affairs Shri Anand Sharma, in New Delhi on August 28, 2007.jpg|center|128px]]
|-
| ''[[:d:Q58240|Sam Kutesa]]''
|
| [[IYuganda]]
|
|
| [[File:Sam Kutesa - 2018 (32521275868) (cropped).jpg|center|128px]]
|-
| ''[[:d:Q393388|Aggrey Awori]]''
|
| [[IYuganda]]
| 2001
| 2006
| [[File:Aggrey-awori.jpg|center|128px]]
|-
| ''[[:d:Q486859|Paul Ssemogerere]]''
|
| [[IYuganda]]
|
|
| [[File:Paul Kawanga Ssemogerere (cropped).jpg|center|128px]]
|-
| ''[[:d:Q1026465|Rebecca Kadaga]]''
|
| [[IYuganda]]
|
|
| [[File:Kadaga Rebecca 2.jpg|center|128px]]
|-
| ''[[:d:Q1173623|David Bahati]]''
|
| [[IYuganda]]
|
|
| [[File:Bahati David.jpg|center|128px]]
|-
| ''[[:d:Q1307960|Ken Lukyamuzi]]''
|
| [[IYuganda]]
|
| 2016
| [[File:Ken Lukyamuzi.jpg|center|128px]]
|-
| ''[[:d:Q1354926|Eriya Kategaya]]''
|
| [[IYuganda]]
|
|
| [[File:The Right Honorable Eriya Kategaya (cropped).jpg|center|128px]]
|-
| ''[[:d:Q1441372|Francis Ayume]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q1740843|Ruhakana Rugunda]]''
|
| [[IYuganda]]
|
|
| [[File:Prime Minister Rugunda.png|center|128px]]
|-
| ''[[:d:Q1949128|Moses Ali]]''
|
| [[IYuganda]]
|
|
| [[File:Ali Moses.jpg|center|128px]]
|-
| ''[[:d:Q2605033|Betty Oyella Bigombe]]''
|
| [[IYuganda]]
|
|
| [[File:Bigombe Betty Atuku.jpg|center|128px]]
|-
| ''[[:d:Q3105642|Gilbert Bukenya]]''
|
| [[IYuganda]]
|
|
| [[File:Dr. Gilbert Balibaseka Bukenya (cropped).jpg|center|128px]]
|-
| ''[[:d:Q3784984|Henry Oryem Okello]]''
|
| [[IYuganda]]
|
|
| [[File:Acting Foreign Minister Okello Oryem (cropped).jpg|center|128px]]
|-
| ''[[:d:Q4280983|Norbert Mao]]''
|
| [[IYuganda]]
|
|
| [[File:Norbert Mao (cropped).jpg|center|128px]]
|-
| ''[[:d:Q4665198|Abdu Katuntu]]''
|
| [[IYuganda]]
| 2021
|
| [[File:Abdul-Katuntu1.jpg|center|128px]]
|-
| ''[[:d:Q4684139|Adolf Mwesige]]''
|
| [[IYuganda]]
|
|
| [[File:Mwesige Adolf.jpg|center|128px]]
|-
| ''[[:d:Q4693003|Agnes Akiror]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q4696656|Aidah Nantaba]]''
|
| [[IYuganda]]
|
|
| [[File:Nantaba Idah Erios.jpg|center|128px]]
|-
| ''[[:d:Q4700611|Akena p'Ojok]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q4716143|Alengot Oromait]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q4717580|Alex Onzima]]''
|
| [[IYuganda]]
|
|
| [[File:Aadroa Alex Onzima.jpg|center|128px]]
|-
| ''[[:d:Q4726787|Alintuma Nsambu]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q4742276|Amelia Kyambadde]]''
|
| [[IYuganda]]
| 2021
|
| [[File:Amelia Kyambadde.jpg|center|128px]]
|-
| ''[[:d:Q4795550|Aronda Nyakairima]]''
|
| [[IYuganda]]
|
|
| [[File:Gen. Nyakayirima Aronda (cropped).jpg|center|128px]]
|-
| ''[[:d:Q4810985|Aston Kajara]]''
|
| [[IYuganda]]
|
|
| [[File:Kajara Aston Peterson.jpg|center|128px]]
|-
| ''[[:d:Q4811869|Asuman Kiyingi]]''
|
| [[IYuganda]]
|
|
| [[File:Mohd. Hamid Ansari with the Minister of State for Regional Cooperation & Acting Foreign Minister of Uganda, Mr. Asuman Kiyingi, on his arrival at Entebbe International Airport, Uganda on July 08, 2011 (cropped).jpg|center|128px]]
|-
| ''[[:d:Q4859206|Barbara Oundo Nekesa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q4877118|Beatrice Atim Anywar]]''
|
| [[IYuganda]]
|
|
| [[File:Atim Beatrice Anywar.jpg|center|128px]]
|-
| ''[[:d:Q4877205|Beatrice Wabudeya]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q4935806|Bobi Wine]]''
|
| [[IYuganda]]
| 2017-07-11
| 2021
| [[File:Bobi Wine 2024.png|center|128px]]
|-
| ''[[:d:Q5045178|Caroline Okao Amali]]''
|
| [[IYuganda]]
|
|
| [[File:Amali, Caroline Okao.jpg|center|128px]]
|-
| ''[[:d:Q5064251|Cerinah Nebanda]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5075388|Charles Bakkabulindi]]''
|
| [[IYuganda]]
|
|
| [[File:Bakkabulindi Charles.jpg|center|128px]]
|-
| ''[[:d:Q5110904|Christine Amongin Aporu]]''
|
| [[IYuganda]]
|
|
| [[File:Amongin, Christine Aporu Hellen.jpg|center|128px]]
|-
| ''[[:d:Q5186066|Crispus Kiyonga]]''
|
| [[IYuganda]]
|
|
| [[File:Hon. Dr. Cryspus Kiyonga, minister of Defence speaking during the AMISOM Retreat in Kampala- Uganda (16220704751).jpg|center|128px]]
|-
| ''[[:d:Q5227877|Daudi Migereko]]''
|
| [[IYuganda]]
|
|
| [[File:Migereko Daudi.jpg|center|128px]]
|-
| ''[[:d:Q5240436|David Tinyefunza]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5240772|David Wakikona]]''
|
| [[IYuganda]]
|
|
| [[File:Wakikona Wandendeya David.jpg|center|128px]]
|-
| ''[[:d:Q5345394|Edward Ssekandi]]''
|
| [[IYuganda]]
|
|
| [[File:Edward Ssekandi.jpg|center|128px]]
|-
| ''[[:d:Q5366225|Elly Tumwine]]''
|
| [[IYuganda]]
|
|
| [[File:General Elly Tumwine.jpg|center|128px]]
|-
| ''[[:d:Q5373324|Emmanuel Otala]]''
|
| [[IYuganda]]
|
|
| [[File:Otiam Emmanuel Otaala.jpg|center|128px]]
|-
| ''[[:d:Q5377366|Abner Nangwale]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5382289|Ephraim Kamuntu]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5385927|Erias Lukwago]]''
|
| [[IYuganda]]
|
|
| [[File:Independence Cup.jpg|center|128px]]
|-
| ''[[:d:Q5393381|Ernest Kiiza]]''
|
| [[IYuganda]]
|
|
| [[File:Kiiza, Monday Ernest Apuuli.jpg|center|128px]]
|-
| ''[[:d:Q5458060|Flavia Nabugere Munaaba]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5490025|Frank Tumwebaze]]''
|
| [[IYuganda]]
|
|
| [[File:Tumwebaze Frank Kagyigyi.jpg|center|128px]]
|-
| ''[[:d:Q5495976|Fred Mukisa]]''
|
| [[IYuganda]]
|
|
| [[File:Fred Mukisa.jpg|center|128px]]
|-
| ''[[:d:Q5496029|Fred Omach]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5496187|Fred Ruhindi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5515776|Gabriel Opio]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5549595|Gerald Ssendaula]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q5590968|Grace Akello]]''
|
| [[IYuganda]]
| 1996
| 2006
| [[File:Grace Akello, Ausschnitt aus dem Foto von Filo gèn'.jpg|center|128px]]
|-
| ''[[:d:Q5717682|Henry Bagiire]]''
|
| [[IYuganda]]
|
|
| [[File:Bagiire Aggrey Henry.jpg|center|128px]]
|-
| ''[[:d:Q5717757|Henry Banyenzaki]]''
|
| [[IYuganda]]
|
|
| [[File:Banyenzaki Henry.jpg|center|128px]]
|-
| ''[[:d:Q5724197|Henry Kajura]]''
|
| [[IYuganda]]
|
|
| [[File:Kajura, Henry Muganwa.jpg|center|128px]]
|-
| ''[[:d:Q5761037|Hilary Onek]]''
|
| [[IYuganda]]
|
|
| [[File:Hilary Onek (cropped).jpg|center|128px]]
|-
| ''[[:d:Q6076821|Isaac Musumba]]''
|
| [[IYuganda]]
| 1996
| 2011
| [[File:Salaamu Musumba.jpg|center|128px]]
|-
| ''[[:d:Q6087896|Israel Kibirige Ssebunya]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q6096678|Ivan Koreta]]''
|
| [[IYuganda]]
|
|
| [[File:Ivan Koreta Atlas Drop 11, Soroti, Uganda, April 2011.jpg|center|128px]]
|-
| ''[[:d:Q6119076|Jacob Oulanyah]]''
|
| [[IYuganda]]
| 2011
|
| [[File:Jacoub Oulanyah (cropped).jpg|center|128px]]
|-
| ''[[:d:Q6129213|James Baba]]''
|
| [[IYuganda]]
|
|
| [[File:James Boliba Baba (cropped).jpg|center|128px]]
|-
| ''[[:d:Q6140211|James Mutende]]''
|
| [[IYuganda]]
|
|
| [[File:2013-Uganda's Minister of State for Industry Shinyabulo-Mutende (cropped).jpg|center|128px]]
|-
| ''[[:d:Q6140434|James Nsaba Buturo]]''
|
| [[IYuganda]]
|
|
| [[File:Buturo Nsaba.jpg|center|128px]]
|-
| ''[[:d:Q6150822|Janat Mukwaya]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q6176542|Jeje Odongo]]''
|
| [[IYuganda]]
| 2006
|
| [[File:Jeje Odongo (cropped).jpg|center|128px]]
|-
| ''[[:d:Q6180999|Jeremiah Twa-Twa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q6187188|Jessica Eriyo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q6224194|John Byabagambi]]''
|
| [[IYuganda]]
|
|
| [[File:Byabagambi John.jpg|center|128px]]
|-
| ''[[:d:Q6226097|John Chrysostom Muyingo]]''
|
| [[IYuganda]]
|
|
| [[File:Muyingo John Chrysestom.jpg|center|128px]]
|-
| ''[[:d:Q6250155|John Nasasira]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q6287007|James Simpson]]''
|
| [[IYuganda]]
|
|
| [[File:James-Simpson-1962.jpg|center|128px]]
|-
| ''[[:d:Q6318370|Justine Lumumba Kasule]]''
|
| [[IYuganda]]
|
|
| [[File:Kasule, Justine Lumumba.jpg|center|128px]]
|-
| ''[[:d:Q6343791|Kabakumba Masiko]]''
|
| [[IYuganda]]
|
|
| [[File:Kabakumba, Masiko Labwoni.jpg|center|128px]]
|-
| ''[[:d:Q6346972|Kahinda Otafiire]]''
|
| [[IYuganda]]
|
|
| [[File:Kahinda Otafiire (cropped).jpg|center|128px]]
|-
| ''[[:d:Q6378429|Katumba Wamala]]''
|
| [[IYuganda]]
|
|
| [[File:Katumba Wamala.jpg|center|128px]]
|-
| ''[[:d:Q6404722|Kiddu Makubuya]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q6414662|Kipoi Tonny Nsubuga]]''
|
| [[IYuganda]]
| 2011
| 2014
| [[File:Kipoi Tonny Nsubuga.jpg|center|128px]]
|-
| ''[[:d:Q6702541|Lukia Isanga Nakadama]]''
|
| [[IYuganda]]
|
|
| [[File:Lukia Nakadama Isanga.jpg|center|128px]]
|-
| ''[[:d:Q6702958|Lulume Bayiga]]''
|
| [[IYuganda]]
| 2007
| 2016
| [[File:Bayigga Michael Philip Lulume.jpg|center|128px]]
|-
| ''[[:d:Q6761446|Maria Mutagamba]]''
|
| [[IYuganda]]
|
|
| [[File:Hon Dr Maria Emily Lubega Mutagamba, Minister of Tourism, Uganda (26294629095).jpg|center|128px]]
|-
| ''[[:d:Q6779980|Mary Karooro Okurut]]''
|
| [[IYuganda]]
| 2006
| 2021
| [[File:Mary Karooro Okurut (cropped) (cropped).jpg|center|128px]]
|-
| ''[[:d:Q6787393|Matia Kasaija]]''
|
| [[IYuganda]]
|
|
| [[File:Matia Kasaija profile.jpg|center|128px]]
|-
| ''[[:d:Q6847499|Mike Kennedy Sebalu]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q6873258|Miria Matembe]]''
|
| [[IYuganda]]
| 1996
| 2006
| [[File:Miria-Matembe.png|center|128px]]
|-
| ''[[:d:Q6932197|Mugisha Muntu]]''
|
| [[IYuganda]]
|
|
| [[File:Mugisha Muntu 2020.jpg|center|128px]]
|-
| ''[[:d:Q6939908|Musa Ecweru]]''
|
| [[IYuganda]]
| 2011
|
| [[File:Ecweru Musa Francis.jpg|center|128px]]
|-
| ''[[:d:Q6944303|Muyanja Mbabaali]]''
|
| [[IYuganda]]
|
|
| [[File:Mbabaali, Muyanja.jpg|center|128px]]
|-
| ''[[:d:Q6944729|Mwesigwa Rukutana]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q6961899|Namirembe Bitamazire]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7045634|Nobel Mayombo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7070387|Nusura Tiperu]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7089874|Omara Atubo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7175509|Peter Lokeris]]''
|
| [[IYuganda]]
|
|
| [[File:Lokeris Teko Peter.jpg|center|128px]]
|-
| ''[[:d:Q7176147|Peter Nyombi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7301855|Rebecca Otengo Amuge]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7328008|Richard Nduhura]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7329499|Richard Todwong]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7365019|Ronald Kibuule]]''
|
| [[IYuganda]]
|
|
| [[File:Kibuule, Ronald.jpg|center|128px]]
|-
| ''[[:d:Q7367874|Rose Namayanja]]''
|
| [[IYuganda]]
| 2006-05
| 2016-02
|
|-
| ''[[:d:Q7368409|Rosemary Najjemba]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7378868|Rukiya Chekamondo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7383142|Ruth Nankabirwa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7403915|Saleh Kamba]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7407448|Sam Engola]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7417487|Sandy Stevens Tickodri-Togboa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7422470|Sarah Kataike]]''
|
| [[IYuganda]]
|
|
| [[File:Kataike, Sarah Ndoboli.jpg|center|128px]]
|-
| ''[[:d:Q7422653|Sarah Opendi Achieng]]''
|
| [[IYuganda]]
|
|
| [[File:Achieng Sarah Opendi.jpg|center|128px]]
|-
| ''[[:d:Q7452728|Serapio Rukundo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7459446|Sezi Mbaguta]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7518558|Simon D'Ujanga]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7518688|Simon Ejua]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7519223|Simon Lokodo]]''
|
| [[IYuganda]]
|
|
| [[File:Lokodo simon.jpg|center|128px]]
|-
| ''[[:d:Q7608889|Stephen Chebrot]]''
|
| [[IYuganda]]
|
|
| [[File:Chebrot Stephen Chemoiko.jpg|center|128px]]
|-
| ''[[:d:Q7635964|Sulaiman Kyebakoze Madada]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7659743|Syda Bbumba]]''
|
| [[IYuganda]]
|
|
| [[File:Bbumba Syda Namirembe.jpg|center|128px]]
|-
| ''[[:d:Q7686751|Tarsis Kabwegyere]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7781207|Thembo Nyombi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7815151|Tom Butime]]''
|
| [[IYuganda]]
|
|
| [[File:Butime Tom Ateenyi.jpg|center|128px]]
|-
| ''[[:d:Q7838817|Tress Bucyanayandi]]''
|
| [[IYuganda]]
|
|
| [[File:Bucyanayandi Tress.jpg|center|128px]]
|-
| ''[[:d:Q7900065|Urban Tibamanya]]''
|
| [[IYuganda]]
|
|
| [[File:Urban Tibamanya.jpg|center|128px]]
|-
| ''[[:d:Q7927031|Victoria Sekitoleko]]''
|
| [[IYuganda]]
|
|
| [[File:Victoria Sekitoleko.jpg|center|128px]]
|-
| ''[[:d:Q7931970|Vincent Nyanzi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q7983291|Werikhe Kafabusa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q8023150|Wilson Muruuli Mukasa]]''
|
| [[IYuganda]]
|
|
| [[File:Mukasa Muruuli Wilson.jpg|center|128px]]
|-
| ''[[:d:Q8069664|Zerubabel Nyiira]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q15993247|Stephen Mallinga]]''
|
| [[IYuganda]]
|
|
| [[File:Mallinga Stephen Oscar.jpg|center|128px]]
|-
| ''[[:d:Q16145569|Jim Muhwezi]]''
|
| [[IYuganda]]
|
|
| [[File:Muhwezi Jim Katugugu.jpg|center|128px]]
|-
| ''[[:d:Q16148125|Charles Angina]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q16186459|Bright Rwamirama]]''
|
| [[IYuganda]]
|
|
| [[File:Rwamirama Bright Kanyontore.jpg|center|128px]]
|-
| ''[[:d:Q16187230|Hope Mwesigye]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q16193010|Kamanda Bataringaya]]''
|
| [[IYuganda]]
|
|
| [[File:Kamanda, Cos Bataringaya.jpg|center|128px]]
|-
| ''[[:d:Q16194600|Dorothy Samali Hyuha]]''
|
| [[IYuganda]]
|
|
| [[File:Dorothy Hyuha (cropped).jpg|center|128px]]
|-
| ''[[:d:Q16194624|James Kakooza]]''
|
| [[IYuganda]]
|
|
| [[File:Kakooza James.jpg|center|128px]]
|-
| ''[[:d:Q16196528|Evelyn Kaabule]]''
|
| [[IYuganda]]
|
|
| [[File:Kaabule, Evelyn Naome Mpagi N.jpg|center|128px]]
|-
| ''[[:d:Q16200545|Jennifer Namuyangu]]''
|
| [[IYuganda]]
|
|
| [[File:Namuyangu Kacha Jenipher.jpg|center|128px]]
|-
| ''[[:d:Q16203636|Abraham Byandaala]]''
|
| [[IYuganda]]
|
|
| [[File:Byandala Abraham James.jpg|center|128px]]
|-
| ''[[:d:Q16203647|Henry Musasizi]]''
|
| [[IYuganda]]
|
|
| [[File:Musasizi Dec 2015.jpg|center|128px]]
|-
| ''[[:d:Q16727764|Loyce Biira Bwambale]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q16745020|Stanislaus Okurut]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q16751154|Phillip Wafula Ogutu]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q16875907|Chris Baryomunsi]]''
|
| [[IYuganda]]
| 2006
|
| [[File:Chris Baryomunsi.jpg|center|128px]]
|-
| ''[[:d:Q17020396|Oliver Wonekha]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q18683782|Concy Aciro]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q18764172|Judith Babirye]]''
|
| [[IYuganda]]
|
|
| [[File:Judith-babirye.jpg|center|128px]]
|-
| ''[[:d:Q18977763|Jaberi Bidandi Ssali]]''
|
| [[IYuganda]]
|
|
| [[File:Jaberi Bidandi Ssali.jpg|center|128px]]
|-
| ''[[:d:Q19276819|Cecilia Ogwal]]''
|
| [[IYuganda]]
| 1994<br/>2011
| 2006<br/>2016
| [[File:Atim Ogwal Cecilia Barbara.jpg|center|128px]]
|-
| ''[[:d:Q19364579|Sam Otada]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q19609598|Evelyn Anite]]''
|
| [[IYuganda]]
|
|
| [[File:Anite Evelyn.jpg|center|128px]]
|-
| ''[[:d:Q19609616|Gabriel Ajedra Aridru]]''
|
| [[IYuganda]]
|
|
| [[File:Ajedra Gabriel Gadison Aridru.jpg|center|128px]]
|-
| ''[[:d:Q19666374|Vincent Ssempijja]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q19666505|Mariam Nalubega]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q19667631|Elioda Tumwesigye]]''
|
| [[IYuganda]]
|
|
| [[File:Elioda.jpg|center|128px]]
|-
| ''[[:d:Q19667761|Innocent Oula]]''
|
| [[IYuganda]]
|
|
| [[File:Innocent Oula.jpg|center|128px]]
|-
| ''[[:d:Q19668408|Adison Kakuru]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q19668441|Ibrahim Ssemujju Nganda]]''
|
| [[IYuganda]]
|
|
| [[File:Ssemujju Ibrahim.jpg|center|128px]]
|-
| ''[[:d:Q19668599|Beti Kamya-Turwomwe]]''
|
| [[IYuganda]]
|
|
| [[File:Beti Kamya 2015.jpg|center|128px]]
|-
| ''[[:d:Q19892030|Shem Bageine]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q19893338|Philemon Mateke]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q19893521|Mike Mukula]]''
|
| [[IYuganda]]
|
|
| [[File:AF6A9993.png|center|128px]]
|-
| ''[[:d:Q20684666|Nandala Mafabi]]''
|
| [[IYuganda]]
|
|
| [[File:Nandala Mafabi Nathan James.jpg|center|128px]]
|-
| ''[[:d:Q20684950|Florence Nebanda]]''
|
| [[IYuganda]]
|
|
| [[File:Nebanda Andiru Florence.jpg|center|128px]]
|-
| ''[[:d:Q20810576|Dora Byamukama]]''
|
|
|
|
|
|-
| ''[[:d:Q21062725|Patrick Mutono]]''
|
| [[IYuganda]]
|
|
| [[File:Mutono Patrick Lodoi.jpg|center|128px]]
|-
| ''[[:d:Q22007122|Betty Nambooze]]''
|
| [[IYuganda]]
|
|
| [[File:Betty Nambooze.webp|center|128px]]
|-
| ''[[:d:Q24565103|Dennis Galabuzi Ssozi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24565843|Sam Cheptoris]]''
|
| [[IYuganda]]
|
|
| [[File:Cheptoris Sam Mangusho.jpg|center|128px]]
|-
| ''[[:d:Q24565855|Monica Azuba Ntege]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24565886|Baltazar Kasirivu-Atwooki]]''
|
| [[IYuganda]]
|
|
| [[File:Kasirivu, Atwoki.jpg|center|128px]]
|-
| ''[[:d:Q24572355|Kevinah Taaka Wanaha Wandera]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572616|Jane Aceng]]''
|
| [[IYuganda]]
| 2016
|
| [[File:Ugandan Health Minister Dr. Jane Aceng (37922701691).jpg|center|128px]]
|-
| ''[[:d:Q24572619|Betty Amongi]]''
|
| [[IYuganda]]
|
|
| [[File:Hon Betty Amongi Ongom WE4D Launch WE4D Launch 2024-306 4.jpg|center|128px]]
|-
| ''[[:d:Q24572620|Florence Nakiwala Kiyingi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572629|Abdul Nadduli]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572632|William Byaruhanga]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572633|Esther Mbulakubuza Mbayo]]''
|
| [[IYuganda]]
|
|
| [[File:Mbayo.png|center|128px]]
|-
| ''[[:d:Q24572652|Grace Kwiyucwiny]]''
|
| [[IYuganda]]
|
|
| [[File:Kwiyucwiny Grace Freedom.jpg|center|128px]]
|-
| ''[[:d:Q24572655|Joyce Moriku]]''
|
| [[IYuganda]]
|
|
| [[File:Moriku Joyce Kaducu.jpg|center|128px]]
|-
| ''[[:d:Q24572657|Julius Wandera Maganda]]''
|
| [[IYuganda]]
|
|
| [[File:Maganda Julius Samia.jpg|center|128px]]
|-
| ''[[:d:Q24572671|Harriet Ntabazi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572683|Moses Kizige]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572701|David Karubanga]]''
|
| [[IYuganda]]
|
|
| [[File:Karubanga David.jpg|center|128px]]
|-
| ''[[:d:Q24572708|Joy Kabatsi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572730|Ruth Achieng]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572733|Persis Princess Namuganza]]''
|
| [[IYuganda]]
|
|
| [[File:Namuganza Persis Princess.jpg|center|128px]]
|-
| ''[[:d:Q24572738|Mary Goretti Kitutu]]''
|
| [[IYuganda]]
|
|
| [[File:Kitutu Mary Goretti Kimono.jpg|center|128px]]
|-
| ''[[:d:Q24572740|Christopher Kibanzanga]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572753|Rosemary Seninde]]''
|
| [[IYuganda]]
|
|
| [[File:Rosemary Seninde.jpg|center|128px]]
|-
| ''[[:d:Q24572755|Benna Namugwanya]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572836|Adrian Tibaleka]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572839|Aggrey Bagiire]]''
|
| [[IYuganda]]
|
|
| [[File:Bagiire Aggrey Henry.jpg|center|128px]]
|-
| ''[[:d:Q24572841|Haruna Kasolo Kyeyune]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24572842|Ismael Orot]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q24668795|Peace Mutuuzo]]''
|
| [[IYuganda]]
|
|
| [[File:Mutuuzo Peace Regis.jpg|center|128px]]
|-
| ''[[:d:Q24851611|Frederick Ngobi Gume]]''
|
| [[IYuganda]]
|
|
| [[File:Frederick Ngobi Gume (cropped).jpg|center|128px]]
|-
| ''[[:d:Q24851613|Godfrey Kiwanda]]''
|
| [[IYuganda]]
|
|
| [[File:Godfrey Kiwanda (cropped).jpg|center|128px]]
|-
| ''[[:d:Q24851618|Kania Obiga]]''
|
| [[IYuganda]]
|
|
| [[File:Obiga Kania.jpg|center|128px]]
|-
| ''[[:d:Q24851651|Charles Engola]]''
|
| [[IYuganda]]
|
|
| [[File:Okello Charles Patrick Engola Macodwogo.jpg|center|128px]]
|-
| ''[[:d:Q24896277|Herbert Kabafunzaki]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q25755641|Felix Kulayigye]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q27688647|Nabilah Naggayi Sempala]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q27973946|Jacob Marksons Oboth]]''
|
| [[IYuganda]]
|
|
| [[File:Oboth Marksons Jacob.jpg|center|128px]]
|-
| ''[[:d:Q28136300|Kirya Balaki Kebba]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q29618018|Alex Ruhunda]]''
|
| [[IYuganda]]
|
|
| [[File:Ruhunda Alex.jpg|center|128px]]
|-
| ''[[:d:Q29898231|Vincent Woboya]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q29913996|Andrew Baryayanga]]''
|
| [[IYuganda]]
|
|
| [[File:Baryayanga Andrew Aja.jpg|center|128px]]
|-
| ''[[:d:Q29917557|Paul Amoru]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q29947195|Makmot Otto]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q29963755|Michael Tusiime]]''
|
| [[IYuganda]]
|
|
| [[File:Tusiime.jpg|center|128px]]
|-
| ''[[:d:Q30070354|Mariam Naigaga]]''
|
| [[IYuganda]]
|
|
| [[File:Mariam naigaga.jpg|center|128px]]
|-
| ''[[:d:Q30091390|Allan Ssewanyana]]''
|
| [[IYuganda]]
|
|
| [[File:Allan Ssewanyana.jpg|center|128px]]
|-
| ''[[:d:Q30110261|Lawrence Akugizibwe]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q30150061|Richard Gafabusa]]''
|
| [[IYuganda]]
|
|
| [[File:Gafabusa.jpg|center|128px]]
|-
| ''[[:d:Q30228752|Deo Rwabiita]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q30234278|Daudi Ochieng]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q30302621|Jack Sabiiti]]''
|
| [[IYuganda]]
|
|
| [[File:Jack Sabiiti.jpg|center|128px]]
|-
| ''[[:d:Q30323559|Sam Bitangaro]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q30323636|Sam Byibesho]]''
|
| [[IYuganda]]
|
|
| [[File:Byibesho.jpg|center|128px]]
|-
| ''[[:d:Q30323658|Jacklet Atuhaire]]''
|
| [[IYuganda]]
|
|
| [[File:Atuhaire.jpg|center|128px]]
|-
| ''[[:d:Q30323685|Boaz Ninsiima]]''
|
| [[IYuganda]]
|
|
| [[File:Ninsiima Boaz Kasirabo.jpg|center|128px]]
|-
| ''[[:d:Q30899710|Jastine Ayebazibwe]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q30945317|Rosemary Tumusiime]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q31153326|Ismail Ogama]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q31213353|Moses Adome]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q32538609|Beatrice Rwakimari]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q32540570|Paulson Luttamaguzi]]''
|
| [[IYuganda]]
|
|
| [[File:Luttamaguzi Semakula Paulson.jpg|center|128px]]
|-
| ''[[:d:Q33125043|Kassiano Wadri]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q33978057|John Bosco Ikojo]]''
|
| [[IYuganda]]
|
|
| [[File:Ikojo John Bosco.jpg|center|128px]]
|-
| ''[[:d:Q34345403|Simon Mulongo]]''
|
| [[IYuganda]]
|
|
| [[File:Simon Mulongo.jpg|center|128px]]
|-
| ''[[:d:Q36490457|Okin Ojara]]''
|
| [[IYuganda]]
|
|
| [[File:Okin P.P Ojara.jpg|center|128px]]
|-
| ''[[:d:Q36824970|Lawrence Mangusho]]''
|
| [[IYuganda]]
|
|
| [[File:Mangusho EBB 278.jpg|center|128px]]
|-
| ''[[:d:Q37122067|Emma Boona]]''
|
| [[IYuganda]]
|
|
| [[File:HON.BOONA EMMA.jpg|center|128px]]
|-
| ''[[:d:Q38587500|Andrew Kaluya]]''
|
| [[IYuganda]]
|
|
| [[File:Andrew Kaluya Cropped.jpg|center|128px]]
|-
| ''[[:d:Q39059042|Augustine Nshimye]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q39073765|Isaac Mulindwa]]''
|
| [[IYuganda]]
|
|
| [[File:Isaac Mulindwa.jpg|center|128px]]
|-
| ''[[:d:Q41693469|Molly Kamukama]]''
|
|
|
|
|
|-
| ''[[:d:Q41768539|Agnes Atim Apea]]''
|
| [[IYuganda]]
|
|
| [[File:Atim Agnes Apea.jpg|center|128px]]
|-
| ''[[:d:Q42122025|Doreen Amule]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q42664267|Winnie Kiiza]]''
|
| [[IYuganda]]
| 2006
| 2021
| [[File:Winnie Kiiza.jpg|center|128px]]
|-
| ''[[:d:Q42759362|Angelline Osegge]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q42820085|Anna Ebaju Adeke]]''
|
| [[IYuganda]]
|
|
| [[File:Adeke Anna Ebaju.jpg|center|128px]]
|-
| ''[[:d:Q42868219|Grace Tubwita]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q43267627|Joy Atim]]''
|
| [[IYuganda]]
| 2011
| 2021
|
|-
| ''[[:d:Q43375707|Lucy Akello]]''
|
| [[IYuganda]]
|
|
| [[File:Akello Lucy.jpg|center|128px]]
|-
| ''[[:d:Q44231567|Lillian Nakate]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q47130307|James Makumbi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q50146409|Florence Alice Lubega]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q51844074|Hellen Kahunde]]''
|
| [[IYuganda]]
|
|
| [[File:Kahunde Helen.jpg|center|128px]]
|-
| ''[[:d:Q52615829|Judith Nabakooba]]''
|
| [[IYuganda]]
|
|
| [[File:Judith Nabakooba.jpg|center|128px]]
|-
| ''[[:d:Q53707363|Jacqueline Amongin]]''
|
| [[IYuganda]]
|
|
| [[File:Honorable Jacqueline Amongin (cropped).jpg|center|128px]]
|-
| ''[[:d:Q54233287|Agnes Nandutu]]''
|
| [[IYuganda]]
| 2021
|
| [[File:Nandutu Agnes.jpg|center|128px]]
|-
| ''[[:d:Q54233867|Victoria Mwaka]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q54874973|Ibrahim Abiriga]]''
|
| [[IYuganda]]
| 2016
| 2018-06-08
|
|-
| ''[[:d:Q55583703|Joyce Mpanga]]''
|
| [[IYuganda]]
| 1996
| 2001
| [[File:Hon. Joyce Mpanga (cropped).jpg|center|128px]]
|-
| ''[[:d:Q55584067|Sylvia Rwabogo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q56043365|Betty Aol Ochan]]''
|
| [[IYuganda]]
| 2006
| 2026
| [[File:Betty Aol Ocan.jpg|center|128px]]
|-
| ''[[:d:Q56949745|Sylvia Nayebale]]''
|
| [[IYuganda]]
|
|
| [[File:Nayebale Sylvia.jpg|center|128px]]
|-
| ''[[:d:Q57824490|Rosette Kajungu Mutambi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q57825185|Sheila Mwine Kabaije]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q57825198|Adoa Hellen Abeku]]''
|
| [[IYuganda]]
|
|
| [[File:Adoa Hellen.jpg|center|128px]]
|-
| ''[[:d:Q57825270|Molly Lanyero]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q57825400|Idah Nabayiga]]''
|
| [[IYuganda]]
| 2016<br/>2026-07-08
| 2021
|
|-
| ''[[:d:Q57825425|Tophace Kaahwa]]''
|
| [[IYuganda]]
|
|
| [[File:Kaahwa, Tophace Byagira.jpg|center|128px]]
|-
| ''[[:d:Q57826830|Margaret Komuhangi]]''
|
| [[IYuganda]]
|
|
| [[File:Komuhangi Margaret.jpg|center|128px]]
|-
| ''[[:d:Q57828013|Lilly Adong]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q57828421|Ajilo Elogu Maria Goretti]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q57828565|Jesca Ababiku]]''
|
| [[IYuganda]]
| 2021
|
| [[File:Ababiku Jessica 1.jpg|center|128px]]
|-
| ''[[:d:Q57828964|Achiro Lucy Otim]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q57829630|Alum Sandra Ogwang Santa]]''
|
| [[IYuganda]]
| 2016
|
| [[File:Alum Santa Sandra.jpg|center|128px]]
|-
| ''[[:d:Q57829781|Margaret Aachilla Aleper]]''
|
| [[IYuganda]]
|
|
| [[File:Aleper, Margaret Achilla.jpg|center|128px]]
|-
| ''[[:d:Q57829968|Faith Alupo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q57830246|Alyek Judith]]''
|
| [[IYuganda]]
| 2016
|
| [[File:Alyek Judith.jpg|center|128px]]
|-
| ''[[:d:Q58003275|Evarlyne Buregyeya Asiimwe]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q58003644|Jane Avur Pacuto]]''
|
| [[IYuganda]]
|
|
| [[File:Avur Jane Pacuto.jpg|center|128px]]
|-
| ''[[:d:Q58003789|Betty Awori Engola]]''
|
| [[IYuganda]]
|
|
| [[File:Awor Betty Engola.jpg|center|128px]]
|-
| ''[[:d:Q58041073|Davinia Esther Anyakun]]''
|
| [[IYuganda]]
|
|
| [[File:Esther Davinia Anyakun.jpg|center|128px]]
|-
| ''[[:d:Q58041343|Rama Jacqueline Aol]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q58041487|Rose Atima Ayaka]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q58042010|Margaret Baba Diri]]''
|
| [[IYuganda]]
|
|
| [[File:Baba Diri Margaret.jpg|center|128px]]
|-
| ''[[:d:Q58042319|Breeze Sarah Babirye Kityo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q58042467|Mary Babirye Kabanda]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q58042684|Veronica Babirye Kadogo]]''
|
| [[IYuganda]]
|
|
| [[File:Babirye Veronica Kadogo.jpg|center|128px]]
|-
| ''[[:d:Q60467181|Anita Among]]''
|
| [[IYuganda]]
|
|
| [[File:Anita Annet Among.jpg|center|128px]]
|-
| ''[[:d:Q60643201|Abigaba Cuthbert Mirembe]]''
|
| [[IYuganda]]
|
|
| [[File:Abigaba Cuthbert Mirembe.jpg|center|128px]]
|-
| ''[[:d:Q60745744|Basil Kiiza Bataringaya]]''
|
| [[IYuganda]]
|
|
| [[File:Basil Kiiza Bataringaya, 1964.jpg|center|128px]]
|-
| ''[[:d:Q61662345|Flavia Byekwaso]]''
|
|
|
|
| [[File:Brig. Gen Flavia Byekwaso.jpg|center|128px]]
|-
| ''[[:d:Q61696432|Susan Lakot]]''
|
|
|
|
|
|-
| ''[[:d:Q62060614|Zaitun Driwaru]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q62067646|Veronica Isala Eragu Bichetero]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q62067701|Pamela Nasiyo Kamugo]]''
|
| [[IYuganda]]
|
|
| [[File:Kamugo Pamela Nasiyo.jpg|center|128px]]
|-
| ''[[:d:Q62068243|Elizabeth Beikiriize Karungi]]''
|
| [[IYuganda]]
|
|
| [[File:Karungi, Elizabeth.jpg|center|128px]]
|-
| ''[[:d:Q62099508|Susan Amero]]''
|
| [[IYuganda]]
| 2011
| 2026
| [[File:Amero Susan.jpg|center|128px]]
|-
| ''[[:d:Q62099975|Loy Katali]]''
|
| [[IYuganda]]
| 2016
| 2021
|
|-
| ''[[:d:Q62100397|Oliver Katwesigye Koyekyenga]]''
|
| [[IYuganda]]
|
|
| [[File:Katwesigye Oliver Koyekyanga.jpg|center|128px]]
|-
| ''[[:d:Q62100579|Pauline Kemirembe Kyaka]]''
|
| [[IYuganda]]
| 2016
|
| [[File:Kemirembe Pauline Kyaka.jpg|center|128px]]
|-
| ''[[:d:Q62100890|Grace Kesande Bataringaya]]''
|
| [[IYuganda]]
|
|
| [[File:Kesande Grace Bataringaya.jpg|center|128px]]
|-
| ''[[:d:Q62129102|Caroline Kamusiime]]''
|
| [[IYuganda]]
|
|
| [[File:Kamusiime Caroline.jpg|center|128px]]
|-
| ''[[:d:Q62129115|Naome Kibaaju]]''
|
| [[IYuganda]]
|
|
| [[File:Kibaaju Naome.jpg|center|128px]]
|-
| ''[[:d:Q62129125|Noeline Kisembo Basemera]]''
|
| [[IYuganda]]
|
|
| [[File:Kisembo Basemera Noeline.jpg|center|128px]]
|-
| ''[[:d:Q62129153|Agnes Kunihira]]''
|
| [[IYuganda]]
|
|
| [[File:Abwoli Kunihira Agnes.jpg|center|128px]]
|-
| ''[[:d:Q62129230|Margaret Mbeiza Kisira]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q62129269|Lydia Daphine Mirembe]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q62480234|Stella Namoe Nyomera]]''
|
| [[IYuganda]]
|
|
| [[File:Barnabas Nawangwe.jpg|center|128px]]
|-
| ''[[:d:Q62480909|Julie Mukoda Zabwe]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q62481397|Robinah Nabbanja]]''
|
| [[IYuganda]]
| 2011
|
| [[File:Robinah Nabbanja.jpg|center|128px]]
|-
| ''[[:d:Q62487344|Sarah Najjuma]]''
|
| [[IYuganda]]
|
|
| [[File:Najjuma Sarah.jpg|center|128px]]
|-
| ''[[:d:Q63004552|Wilberforce Kisamba Mugerwa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q63228590|Beatrice Byenkya]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q63249359|Odonga Otto]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q63314320|Gad Gasatura]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q64495988|Agnes Ameede]]''
|
| [[IYuganda]]
|
|
| [[File:Ameede Agnes.jpg|center|128px]]
|-
| ''[[:d:Q65984578|Catheline Ndamira Atwakiire]]''
|
| [[IYuganda]]
|
|
| [[File:Atwakiire Catheline Ndamira.jpg|center|128px]]
|-
| ''[[:d:Q67080123|Everlyn Chemutai]]''
|
| [[IYuganda]]
|
|
| [[File:Chemutai Everlyn.jpg|center|128px]]
|-
| ''[[:d:Q67080169|Robina Hope Mukisa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q67500811|Margaret Lamwaka]]''
|
| [[IYuganda]]
|
|
| [[File:Lamwaka Margaret.jpg|center|128px]]
|-
| ''[[:d:Q77586230|Francis Takirwa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q84558223|Peter Ogwang]]''
|
| [[IYuganda]]
|
|
| [[File:Peter Ogwang (cropped).jpg|center|128px]]
|-
| ''[[:d:Q84702556|Denis Obua]]''
|
| [[IYuganda]]
| 2021<br/>2016
| 2026<br/>2021
| [[File:Obua Denis Hamson.jpg|center|128px]]
|-
| ''[[:d:Q84755125|Jackson Kafuuzi]]''
|
| [[IYuganda]]
|
|
| [[File:Kafuuzi Jackson Karugaba.jpg|center|128px]]
|-
| ''[[:d:Q89370497|Rose Kabagyeni]]''
|
| [[IYuganda]]
| 2016
| 2021
|
|-
| ''[[:d:Q89876044|Michael Mawanda]]''
|
| [[IYuganda]]
|
|
| [[File:Mawanda Micheal Maranga.jpg|center|128px]]
|-
| ''[[:d:Q90805964|Hellen Grace Asamo]]''
|
| [[IYuganda]]
|
|
| [[File:Asamo, Hellen Grace.jpg|center|128px]]
|-
| ''[[:d:Q90914975|Safia Juuko Nalule]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q90916518|Aisha Sekindi]]''
|
| [[IYuganda]]
|
|
| [[File:Sekindi Aisha.jpg|center|128px]]
|-
| ''[[:d:Q90920801|Rosemary Nauwat]]''
|
| [[IYuganda]]
| 2011
| 2016
|
|-
| ''[[:d:Q90923330|Norah Nyendwoha Bigirwa]]''
|
| [[IYuganda]]
|
|
| [[File:Bigirwa Norah Nyendwoha.jpg|center|128px]]
|-
| ''[[:d:Q90924025|Milly Mugeni]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q90926112|Christine Nakwang Tubo]]''
|
| [[IYuganda]]
|
|
| [[File:Nakwang Christine Tubo.jpg|center|128px]]
|-
| ''[[:d:Q90927411|Spellanza Baguma Muhenda]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q90929827|Mourine Osoru]]''
|
|
|
|
| [[File:Osoru Mourine.jpg|center|128px]]
|-
| ''[[:d:Q90931389|Sarah Nakawunde]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q90932356|Bangirana Kawooya Anifa]]''
|
| [[IYuganda]]
|
|
| [[File:Bangirana Anifa Kawooya.jpg|center|128px]]
|-
| ''[[:d:Q90932931|Jovrine Kaliisa Kyomukama]]''
|
| [[IYuganda]]
| 2016
| 2021
| [[File:The Honourable Jovrine Kyomukama Kaliisa.jpg|center|128px]]
|-
| ''[[:d:Q90934802|Ann Maria Nankabirwa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q95451495|Mwine Mpaka Rwamirama]]''
|
| [[IYuganda]]
|
|
| [[File:Mwine Mpaka Rwamirama.jpg|center|128px]]
|-
| ''[[:d:Q95918194|Janet Grace Akech Okori-Moe]]''
|
| [[IYuganda]]
|
|
| [[File:Okori Moe Janet Grace Akech.jpg|center|128px]]
|-
| ''[[:d:Q96769674|Thomas Tayebwa]]''
|
| [[IYuganda]]
|
|
| [[File:Tayebwa Thomas.jpg|center|128px]]
|-
| ''[[:d:Q105666074|Rosemary Nyakikongoro]]''
|
| [[IYuganda]]
|
|
| [[File:Nyakikongoro Rosemary.jpg|center|128px]]
|-
| ''[[:d:Q105759499|Ricky Richard Anywar]]''
|
| [[IYuganda]]
|
|
| [[File:Ricky Richard Anywar ,.jpg|center|128px]]
|-
| ''[[:d:Q105759689|Dorcus Acen]]''
|
| [[IYuganda]]
| 2016
|
| [[File:Acan Dorcas.jpg|center|128px]]
|-
| ''[[:d:Q105825933|Cissy Dionizia Namujju]]''
|
| [[IYuganda]]
|
|
| [[File:Namujju Cissy Dionizia.jpg|center|128px]]
|-
| ''[[:d:Q105890715|Esther Afoyochan]]''
|
| [[IYuganda]]
|
|
| [[File:Hon Esther Afoyochan.jpg|center|128px]]
|-
| ''[[:d:Q105903344|Jennifer Ayoo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105906038|Naima Melsa Gule Avako]]''
|
| [[IYuganda]]
|
|
| [[File:Avako Melsa Naima Gule.jpg|center|128px]]
|-
| ''[[:d:Q105906548|Betty Esther Naluyima]]''
|
| [[IYuganda]]
| 2026
|
| [[File:Naluyima Betty Ethel.jpg|center|128px]]
|-
| ''[[:d:Q105942517|Jacinta Athieno Ayo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105942809|Rose Obigah]]''
|
| [[IYuganda]]
|
|
| [[File:Rose Obinga.jpg|center|128px]]
|-
| ''[[:d:Q105944500|Florence Nambozo Wamala]]''
|
| [[IYuganda]]
|
|
| [[File:Wamala Nambozo Florence.jpg|center|128px]]
|-
| ''[[:d:Q105944681|Mary Begumisa]]''
|
| [[IYuganda]]
|
|
| [[File:Begumisa Mary.jpg|center|128px]]
|-
| ''[[:d:Q105945785|Stella Isodo Apolot]]''
|
| [[IYuganda]]
|
|
| [[File:Stella Apolot Isodo.jpg|center|128px]]
|-
| ''[[:d:Q105956270|Nancy Acora]]''
|
| [[IYuganda]]
|
|
| [[File:Acora Nancy.jpg|center|128px]]
|-
| ''[[:d:Q105956412|Brenda Nabukenya]]''
|
| [[IYuganda]]
|
|
| [[File:Nabukenya Brenda.jpg|center|128px]]
|-
| ''[[:d:Q105956578|Jennifer Driwaru]]''
|
| [[IYuganda]]
|
|
| [[File:Driwaru Jennifer.jpg|center|128px]]
|-
| ''[[:d:Q105956689|Juliet Kakande Nakabuye]]''
|
| [[IYuganda]]
|
|
| [[File:Nakabuye Juliet Kakande.jpg|center|128px]]
|-
| ''[[:d:Q105958189|Molly Musiime Asiimwe]]''
|
| [[IYuganda]]
|
|
| [[File:Asiimwe Musiime Molly.jpg|center|128px]]
|-
| ''[[:d:Q105958498|Medius Kaharata Natukunda]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105962114|Prossy Akampurira]]''
|
| [[IYuganda]]
|
|
| [[File:Akampurira Prossy Mbabazi.jpg|center|128px]]
|-
| ''[[:d:Q105962464|Juliet Kyinyamatama Suubi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105964879|Annet Nyakecho]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105964981|Joan Acom Alobo]]''
|
| [[IYuganda]]
|
|
| [[File:Acom Joan Alobo.jpg|center|128px]]
|-
| ''[[:d:Q105965184|Gorreth Namugga]]''
|
| [[IYuganda]]
|
|
| [[File:Namugga Gorreth.jpg|center|128px]]
|-
| ''[[:d:Q105965226|Shartsi Musherure Kuteesa]]''
|
| [[IYuganda]]
|
|
| [[File:Musherure Shartsi Nayebare Kutesa.jpg|center|128px]]
|-
| ''[[:d:Q105965509|Kevin Ojinga Kaala]]''
|
| [[IYuganda]]
|
|
| [[File:Kaala Kevin Ojinga.jpg|center|128px]]
|-
| ''[[:d:Q105965895|Santa Okot]]''
|
| [[IYuganda]]
|
|
| [[File:Okot Santa.jpg|center|128px]]
|-
| ''[[:d:Q105965987|Suzan Jolly Abeja]]''
|
| [[IYuganda]]
|
|
| [[File:Abeja Susan Jolly.jpg|center|128px]]
|-
| ''[[:d:Q105966087|Zomura Manezo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105966150|Judith Peace Achan]]''
|
| [[IYuganda]]
|
|
| [[File:Achan Judith Peace.jpg|center|128px]]
|-
| ''[[:d:Q105966258|Josyline Kamateneti]]''
|
| [[IYuganda]]
|
|
| [[File:Kamateneti Josyline.jpg|center|128px]]
|-
| ''[[:d:Q105966331|Kabasharira Naome]]''
|
| [[IYuganda]]
|
|
| [[File:Kabasharira, Naome.jpg|center|128px]]
|-
| ''[[:d:Q105966392|Anne Mary Kobugabe Tumwine]]''
|
| [[IYuganda]]
|
|
| [[File:Tumwine Anne Mary.jpg|center|128px]]
|-
| ''[[:d:Q105966555|Faith Nakut]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105966644|Sarah Kayaki Netalisile]]''
|
| [[IYuganda]]
|
|
| [[File:Kayagi Sarah Netalisire.jpg|center|128px]]
|-
| ''[[:d:Q105966714|Margret Okunga Makoha]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105966758|Victorious Zawedde]]''
|
| [[IYuganda]]
|
|
| [[File:Zawedde Victorious.jpg|center|128px]]
|-
| ''[[:d:Q105966807|Sylvia Vicky Awas]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q105966841|Remigio Achia]]''
|
| [[IYuganda]]
|
|
| [[File:Achia Remigio.jpg|center|128px]]
|-
| ''[[:d:Q106263496|Christine Ayo Achen]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q106338475|Margaret Rwabushaija]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q106612689|Irene Linda Mugisha]]''
|
| [[IYuganda]]
|
|
| [[File:Linda Irene.jpg|center|128px]]
|-
| ''[[:d:Q108336637|Moses Okot Jr]]''
|
| [[IYuganda]]
| 2021
| 2026
| [[File:Hon. Bitek Junior.png|center|128px]]
|-
| ''[[:d:Q108760136|Moses Ogwal]]''
|
| [[IYuganda]]
| 2021
|
| [[File:Ogwal Moses Goli.jpg|center|128px]]
|-
| ''[[:d:Q111094566|Godfrey Pereza Ahabwe]]''
|
| [[IYuganda]]
| 2001
| 2011
|
|-
| ''[[:d:Q111181361|Huda Abason Oleru]]''
|
| [[IYuganda]]
|
|
| [[File:Oleru Huda Abason.jpg|center|128px]]
|-
| ''[[:d:Q111442160|Wilfred Niwagaba]]''
|
| [[IYuganda]]
| 2021
| 2026
|
|-
| ''[[:d:Q111462677|Joy Ruth Acheng]]''
|
| [[IYuganda]]<br/>[[IKhanada]]
|
|
| [[File:Acheng Joy Ruth.jpg|center|128px]]
|-
| ''[[:d:Q111530547|Phiona Nyamutoro]]''
|
| [[IYuganda]]
|
|
| [[File:Phiona Nyamutooro 01.jpg|center|128px]]
|-
| ''[[:d:Q113376149|Mathias Mpuuga]]''
|
| [[IYuganda]]
| 2010
| 2026
| [[File:Mathias Mpuuga.jpg|center|128px]]
|-
| ''[[:d:Q116547881|Beatrice Kiraso]]''
|
| [[IYuganda]]
| 1996
| 2006
|
|-
| ''[[:d:Q116602976|Anthony Okello]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q116604844|Beatrice Amongi Lagada]]''
|
| [[IYuganda]]
| 2011
| 2016
|
|-
| ''[[:d:Q116605534|Silvia Akello]]''
|
| [[IYuganda]]
| 2016
| 2021
|
|-
| ''[[:d:Q116638520|Godfrey Taire Idhwege]]''
|
| [[IYuganda]]
| 1996
| 2001
|
|-
| ''[[:d:Q116638598|Festo Higiro Semajege]]''
|
|
| 1989
| 1996
|
|-
| ''[[:d:Q125750508|Joan Namutaawe]]''
|
| [[IYuganda]]
|
|
| [[File:Namutaawe Joan.jpg|center|128px]]
|-
| ''[[:d:Q130742217|Paul Kwizera Bucyana]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q130742354|John Nizeyimana Kamara]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q130742642|Alex Niyonsaba]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q130742745|Eddie Wa-Gahungu Kwizera]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q130750970|Nicholas Thadeus Kamara]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q132129979|Geoffrey Mutiwa]]''
|
| [[IYuganda]]
| 2021
|
|
|-
| ''[[:d:Q133502704|Betty Muzanira]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q134732645|Godfrey Kabbyanga]]''
|
| [[IYuganda]]
| 2016
|
|
|-
| ''[[:d:Q136682385|Tibasiimwa Joram Ruranga]]''
|
| [[IYuganda]]
| 2021
|
|
|-
| ''[[:d:Q136682386|Simon Peter Opolot]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682387|Ayoo Tonny]]''
|
| [[IYuganda]]
| 2011
|
| [[File:Ayoo Tonny.jpg|center|128px]]
|-
| ''[[:d:Q136682452|Henry Maurice Kibalya]]''
|
| [[IYuganda]]
| 2021
| 2026
| [[File:Kibalya Henry Maurice.jpg|center|128px]]
|-
| ''[[:d:Q136682453|Wilson Kajwengye]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682531|Simon Peter Wokorach]]''
|
| [[IYuganda]]
| 2021
| 2026
| [[File:Wokorach Simon Peter.jpg|center|128px]]
|-
| ''[[:d:Q136682532|Lubega Bashir Ssempa]]''
|
| [[IYuganda]]
| 2021
| 2026
| [[File:Lubega Bashir Ssempa.jpg|center|128px]]
|-
| ''[[:d:Q136682546|Alex Bakunda Byarugaba]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682547|Achayo Juliet Lodou]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682548|Hassan Kirumira]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682549|Charles Tebandeke]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682572|Komol Joseph Midi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682575|Twinomujuni Francis Kazini]]''
|
| [[IYuganda]]
| 2021
|
|
|-
| ''[[:d:Q136682581|Peggy Joy Waako]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682582|Midius Natukunda]]''
|
| [[IYuganda]]
|
|
| [[File:Natukunda Midius.jpg|center|128px]]
|-
| ''[[:d:Q136682587|Grace Aulo Mbabazi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682588|Janat Akorimoe Akech]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682593|Katabaazi Francis Katongole]]''
|
| [[IYuganda]]
| 2021
|
| [[File:Katabaazi Francis Katongole.jpg|center|128px]]
|-
| ''[[:d:Q136682624|David Kaggwa]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136682647|Beatrice Akello]]''
|
| [[IYuganda]]
| 2021
|
|
|-
| ''[[:d:Q136682664|Lokwang Hillary]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q136768743|Muhamad Ssentayi]]''
|
| [[IYuganda]]
| 2021
| 2026
| [[File:Ssentayi Muhamad.jpg|center|128px]]
|-
| ''[[:d:Q136768744|Sanon Nadeeba Bwiire]]''
|
| [[IYuganda]]
| 2021
| 2026
|
|-
| ''[[:d:Q136768745|Sam Otukol]]''
|
| [[IYuganda]]
| 2021
| 2026
| [[File:Otukol Sam.jpg|center|128px]]
|-
| ''[[:d:Q136956452|Kagabo Twaha Mzee]]''
|
| [[IYuganda]]
|
|
| [[File:Kagabo Twaha Mzee.jpg|center|128px]]
|-
| ''[[:d:Q136956453|Ssejjoba Isaac]]''
|
| [[IYuganda]]
|
|
| [[File:Ssejjoba Isaac.jpg|center|128px]]
|-
| ''[[:d:Q137821107|Josephat Tumwesigye]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q137991462|Christine Lanyero Awany]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q137993772|Pamela Annet Kirungi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q137994155|Atukunda Rebecca]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q137994254|Enid Origumisiriza]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q137995601|Ibaseret Josephine]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q137996715|Ayoo Phoebe Obol]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q137999672|Loyda Kyarikunda Twinomujuni]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138001320|Esther Lucy Acom]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138001597|Harriet Nalweende]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138001782|Harriet Anyimo]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138024590|Justine Nameere]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138127838|Jeniva Arinaitwe]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161330|Sarah Nanyonga]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161331|Prossy Nanyonga]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161332|Resty Nanyonga]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161334|Brenda Aciro]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161336|Betty Aciro]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161337|Janet Chebet]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161339|Prossy Namusisi]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161340|Sarah Nabirye]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161342|Ruth Namutaawe]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161343|Sarah Akol]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161345|Brenda Achieng]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161346|Prossy Katusiime]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161349|Hellen Kyomugisha]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161350|Sarah Tumwine]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161351|Q138161351]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161352|Joan Kansiime]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161354|Prossy Kabugho]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161355|Janet Kyaligonza]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161356|Ruth Kyomugisha]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138161357|Grace Nyakato]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138539067|George Didi Bhoka]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q138751304|Acan Joyce Okeny]]''
|
| [[IYuganda]]
|
|
| [[File:Acan Joyce Okeny.jpg|center|128px]]
|-
| ''[[:d:Q138819084|Lilian Nakate]]''
|
| [[IYuganda]]
| 2016
| 2021
|
|-
| ''[[:d:Q139554877|Kanaabi Jimmy]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q139554958|Modoi Isaac]]''
|
| [[IYuganda]]
|
|
| [[File:Modoi Isaac.jpg|center|128px]]
|-
| ''[[:d:Q139719426|Wasswa Lule]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q139752461|Okupa Elijah]]''
|
| [[IYuganda]]
|
|
| [[File:Okupa Elijah,.jpg|center|128px]]
|-
| ''[[:d:Q139752949|Twesigye Nathan Itungo]]''
|
| [[IYuganda]]
|
|
| [[File:Twesigye Nathan Itungo.jpg|center|128px]]
|-
| ''[[:d:Q139753935|Businge Joab]]''
|
| [[IYuganda]]
|
|
| [[File:Businge Joab.jpg|center|128px]]
|-
| ''[[:d:Q139754316|Biyika Lawrence Songa]]''
|
| [[IYuganda]]
|
|
| [[File:Biyika Lawrence Songa.jpg|center|128px]]
|-
| ''[[:d:Q139763956|Byakatonda Abdulhu]]''
|
| [[IYuganda]]
|
|
| [[File:Byakatonda Abdulhu.jpg|center|128px]]
|-
| ''[[:d:Q139764000|Byamukama Nulu]]''
|
| [[IYuganda]]
|
|
| [[File:Byamukama Nulu Joseph.jpg|center|128px]]
|-
| ''[[:d:Q139780066|Chelangat Alinga Solomon]]''
|
| [[IYuganda]]
|
|
| [[File:Chelangat Alinga Solomon.jpg|center|128px]]
|-
| ''[[:d:Q139780080|Chemaswet Abdi Fadhil Kisos]]''
|
| [[IYuganda]]
|
|
| [[File:Chemaswet Abdi Fadhil Kisos.jpg|center|128px]]
|-
| ''[[:d:Q139780114|Afidra Ronald Olema]]''
|
| [[IYuganda]]
|
|
| [[File:Afidra Olema Ronald.jpg|center|128px]]
|-
| ''[[:d:Q139780160|Akamba Paul]]''
|
| [[IYuganda]]
|
|
| [[File:Akamba Paul Busiki.jpg|center|128px]]
|-
| ''[[:d:Q139780202|Aleper Moses]]''
|
| [[IYuganda]]
|
|
| [[File:Aleper Moses.jpg|center|128px]]
|-
| ''[[:d:Q139780242|Nsabimana Paul Asaba]]''
|
| [[IYuganda]]
|
|
| [[File:Paul Asaba Nsabimana.jpg|center|128px]]
|-
| ''[[:d:Q139780260|Aseera Stephen Itaza]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q139780288|Asiimwe Enos Kinywamachunda]]''
|
| [[IYuganda]]
|
|
|
|-
| ''[[:d:Q139782548|Atima Jackson Lee Buti]]''
|
| [[IYuganda]]
|
|
| [[File:Atima Jackson Lee Buti, Arua Central Division, Arua City (NRM).jpg|center|128px]]
|-
| ''[[:d:Q139782619|Baka Stephen Mugabi]]''
|
| [[IYuganda]]
|
|
| [[File:Baka Stephen Mugabi.jpg|center|128px]]
|-
| ''[[:d:Q139782798|Ekanya Geofrey]]''
|
| [[IYuganda]]
|
|
| [[File:Ekanya Geofrey.jpg|center|128px]]
|-
| ''[[:d:Q139782828|Ekudo Tom Julius]]''
|
| [[IYuganda]]
|
|
| [[File:Ekudo Tom Julius.jpg|center|128px]]
|}
{{Wikidata list end}}
fbaf84rz1q84isk3zsjg651e6pv4qnt
User:GerardM/Fellows of the Royal Society of South Africa
2
11116
126069
125972
2026-07-15T01:28:53Z
ListeriaBot
10758
Wikidata list updated [V2]
126069
wikitext
text/x-wiki
[https://tools.wmflabs.org/reasonator/?q=Q60986464 Fellows of the Royal Society of South Africa]
{{Wikidata list
|sparql=
SELECT
DISTINCT ?item
(COUNT(DISTINCT ?publications) AS ?count)
(REPLACE(STR(?item), ".*Q", "Q") AS ?qid)
(CONCAT( "[[toolforge:scholia/author/", ?qid , "|", ENCODE_FOR_URI(?count), "]] / ", "[[toolforge:scholia/author/", ?qid , "/missing{{!}}📖]]") AS ?scholia)
WHERE {
?item wdt:P166 wd:Q60986464 .
OPTIONAL { ?publications wdt:P50 ?item }
}
GROUP BY ?item|section=
|sort=P166/Q60986464/P585
|sort_order=desc
|columns=label:Article,P106,P496,P1960,P214,P166/Q60986464/P585:Date conferred,P18:Image,?scholia:Publications (known/missing)
|thumb=128
|min_section=2
}}
{| class='wikitable sortable'
! Article
! occupation
! ORCID
! Google Scholar author ID
! VIAF
! Date conferred
! Image
! Publications (known/missing)
|-
| ''[[:d:Q81710423|Joseph P. Michael]]''
|
|
|
|
| 2001
|
| [[toolforge:scholia/author/Q81710423|0]] / [[toolforge:scholia/author/Q81710423/missing|📖]]
|-
| ''[[:d:Q80701780|Donald A. Cowan]]''
|
|
|
|
| 2005
|
| [[toolforge:scholia/author/Q80701780|0]] / [[toolforge:scholia/author/Q80701780/missing|📖]]
|-
| ''[[:d:Q21448010|Tebello Nyokong]]''
| ''[[:d:Q593644|chemist]]''<br/>[[USolwazi]]<br/>''[[:d:Q1162163|director]]''
| [https://orcid.org/0000-0002-4590-9926 0000-0002-4590-9926]
| [https://scholar.google.com/citations?user=QUpAXHcAAAAJ QUpAXHcAAAAJ]
| [https://viaf.org/en/viaf/6031160486121605180005 6031160486121605180005]
| 2001
|
| [[toolforge:scholia/author/Q21448010|0]] / [[toolforge:scholia/author/Q21448010/missing|📖]]
|-
| ''[[:d:Q81711757|Graham Mitchell]]''
|
|
|
|
| 2001
|
| [[toolforge:scholia/author/Q81711757|0]] / [[toolforge:scholia/author/Q81711757/missing|📖]]
|-
| ''[[:d:Q42931372|Bert Klumperman]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-1561-274X 0000-0003-1561-274X]
|
| [https://viaf.org/en/viaf/313554514 313554514]
| 2008
|
| [[toolforge:scholia/author/Q42931372|0]] / [[toolforge:scholia/author/Q42931372/missing|📖]]
|-
| ''[[:d:Q77820561|Fazal M. Mahomed]]''
| ''[[:d:Q72271334|professor of mathematics]]''
| [https://orcid.org/0000-0002-6995-5820 0000-0002-6995-5820]
| [https://scholar.google.com/citations?user=phJrkvwAAAAJ phJrkvwAAAAJ]
|
| 2010
|
| [[toolforge:scholia/author/Q77820561|0]] / [[toolforge:scholia/author/Q77820561/missing|📖]]
|-
| ''[[:d:Q1267093|Elisabeth Vrba]]''
| ''[[:d:Q1662561|paleontologist]]''<br/>''[[:d:Q350979|zoologist]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/85250115 85250115]<br/>[https://viaf.org/en/viaf/93322823 93322823]
| 1985
| [[File:Elisabeth Vrba 2009-02.JPG|center|128px]]
| [[toolforge:scholia/author/Q1267093|2]] / [[toolforge:scholia/author/Q1267093/missing|📖]]
|-
| ''[[:d:Q83012615|Nikolaas J van der Merwe]]''
|
|
|
|
| 1984
|
| [[toolforge:scholia/author/Q83012615|0]] / [[toolforge:scholia/author/Q83012615/missing|📖]]
|-
| ''[[:d:Q20731808|Grae Worster]]''
| [[umfundindalo]]
|
|
|
| 2017
|
| [[toolforge:scholia/author/Q20731808|0]] / [[toolforge:scholia/author/Q20731808/missing|📖]]
|-
| ''[[:d:Q83158893|David Woods]]''
|
|
|
|
| 1987
|
| [[toolforge:scholia/author/Q83158893|0]] / [[toolforge:scholia/author/Q83158893/missing|📖]]
|-
| ''[[:d:Q28086200|Geoff Garrett]]''
|
|
|
| [https://viaf.org/en/viaf/52270408 52270408]
| 2000
| [[File:Geoff Garrett CS6 270116-lg.jpg|center|128px]]
| [[toolforge:scholia/author/Q28086200|0]] / [[toolforge:scholia/author/Q28086200/missing|📖]]
|-
| ''[[:d:Q83159139|Walter Zucchini]]''
| ''[[:d:Q2732142|statistician]]''<br/>''[[:d:Q864503|biologist]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/2722490 2722490]
| 2005
|
| [[toolforge:scholia/author/Q83159139|0]] / [[toolforge:scholia/author/Q83159139/missing|📖]]
|-
| ''[[:d:Q5019897|Calie Pistorius]]''
| ''[[:d:Q3400985|academic]]''
|
|
|
| 2002
| [[File:Calie Pistorius.jpg|center|128px]]
| [[toolforge:scholia/author/Q5019897|0]] / [[toolforge:scholia/author/Q5019897/missing|📖]]
|-
| ''[[:d:Q61679353|Dudley Shallcross]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-7614-9221 0000-0001-7614-9221]
| [https://scholar.google.com/citations?user=igQanooAAAAJ igQanooAAAAJ]
|
| 2013
|
| [[toolforge:scholia/author/Q61679353|0]] / [[toolforge:scholia/author/Q61679353/missing|📖]]
|-
| ''[[:d:Q58220468|Francesco Petruccione]]''
| [[umfundindalo]]<br/>[[Usonzululwazi|imfundondalo]]<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0002-8604-0913 0000-0002-8604-0913]
| [https://scholar.google.com/citations?user=chM4fT4AAAAJ chM4fT4AAAAJ]
| [https://viaf.org/en/viaf/51907883 51907883]
| 2013
| [[File:Francesco Petruccione blazer.jpg|center|128px]]
| [[toolforge:scholia/author/Q58220468|1]] / [[toolforge:scholia/author/Q58220468/missing|📖]]
|-
| ''[[:d:Q61104159|Duncan Mitchell]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-8989-4773 0000-0001-8989-4773]
|
|
| 1984
|
| [[toolforge:scholia/author/Q61104159|0]] / [[toolforge:scholia/author/Q61104159/missing|📖]]
|-
| ''[[:d:Q81144632|Arnold Knopfmacher]]''
| ''[[:d:Q1650915|umcwaningi]]''
|
|
|
| 2010
|
| [[toolforge:scholia/author/Q81144632|0]] / [[toolforge:scholia/author/Q81144632/missing|📖]]
|-
| ''[[:d:Q80568773|Ronald J. Clarke]]''
|
|
|
|
| 2002
|
| [[toolforge:scholia/author/Q80568773|0]] / [[toolforge:scholia/author/Q80568773/missing|📖]]
|-
| ''[[:d:Q80569011|John D. Clemens]]''
|
|
|
|
| 2013
|
| [[toolforge:scholia/author/Q80569011|0]] / [[toolforge:scholia/author/Q80569011/missing|📖]]
|-
| ''[[:d:Q80569202|T. Eugene Cloete]]''
|
|
| [https://scholar.google.com/citations?user=fOUypFkAAAAJ fOUypFkAAAAJ]
|
| 2012
|
| [[toolforge:scholia/author/Q80569202|0]] / [[toolforge:scholia/author/Q80569202/missing|📖]]
|-
| ''[[:d:Q81146665|Rosina C. Krecek]]''
|
|
|
|
| 2003
|
| [[toolforge:scholia/author/Q81146665|0]] / [[toolforge:scholia/author/Q81146665/missing|📖]]
|-
| ''[[:d:Q81147058|Peter G.L. Leach]]''
|
|
|
|
| 1998
|
| [[toolforge:scholia/author/Q81147058|0]] / [[toolforge:scholia/author/Q81147058/missing|📖]]
|-
| ''[[:d:Q81147828|Richard H. Lemmer]]''
| [[umfundindalo]]
|
|
|
| 1989
|
| [[toolforge:scholia/author/Q81147828|0]] / [[toolforge:scholia/author/Q81147828/missing|📖]]
|-
| ''[[:d:Q15839341|Jill Farrant]]''
| ''[[:d:Q15839136|cell biologist]]''<br/>''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0002-1450-7967 0000-0002-1450-7967]
| [https://scholar.google.com/citations?user=OIeulVQAAAAJ OIeulVQAAAAJ]
| [https://viaf.org/en/viaf/275262507 275262507]
| 2005
|
| [[toolforge:scholia/author/Q15839341|1]] / [[toolforge:scholia/author/Q15839341/missing|📖]]
|-
| ''[[:d:Q56065756|Shabir A. Madhi]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-7629-0636 0000-0002-7629-0636]
|
|
| 2016
| [[File:Shabir Madhi for Fundación Civio.jpg|center|128px]]
| [[toolforge:scholia/author/Q56065756|0]] / [[toolforge:scholia/author/Q56065756/missing|📖]]
|-
| ''[[:d:Q6759640|Margaret Levyns]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q1907198|taxonomist]]''<br/>''[[:d:Q47825396|phytogeographer]]''<br/>''[[:d:Q2083925|botanical collector]]''<br/>''[[:d:Q98544732|scientific collector]]''
|
|
| [https://viaf.org/en/viaf/76028114 76028114]
|
| [[File:Margaret Rutherford Bryan Levyns.jpg|center|128px]]
| [[toolforge:scholia/author/Q6759640|0]] / [[toolforge:scholia/author/Q6759640/missing|📖]]
|-
| ''[[:d:Q79853945|Theodor John Stewart]]''
| ''[[:d:Q2732142|statistician]]''<br/>''[[:d:Q170790|mathematician]]''
| [https://orcid.org/0000-0002-2107-5955 0000-0002-2107-5955]
|
| [https://viaf.org/en/viaf/15146153191805252771 15146153191805252771]
| 2005
|
| [[toolforge:scholia/author/Q79853945|0]] / [[toolforge:scholia/author/Q79853945/missing|📖]]
|-
| ''[[:d:Q82016605|Harald Pasch]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q593644|chemist]]''
| [https://orcid.org/0000-0003-1132-3393 0000-0003-1132-3393]
|
| [https://viaf.org/en/viaf/116848382 116848382]
| 2013
|
| [[toolforge:scholia/author/Q82016605|0]] / [[toolforge:scholia/author/Q82016605/missing|📖]]
|-
| ''[[:d:Q23772750|Herbert Basil Sutton Cooke]]''
| ''[[:d:Q1662561|paleontologist]]''<br/>''[[:d:Q520549|geologist]]''
|
|
| [https://viaf.org/en/viaf/79388488 79388488]
| 1946
|
| [[toolforge:scholia/author/Q23772750|0]] / [[toolforge:scholia/author/Q23772750/missing|📖]]
|-
| ''[[:d:Q2150124|Richard M. Cowling]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0003-3514-2685 0000-0003-3514-2685]
| [https://scholar.google.com/citations?user=eH34bIQAAAAJ eH34bIQAAAAJ]
| [https://viaf.org/en/viaf/34611234 34611234]
| 2015
|
| [[toolforge:scholia/author/Q2150124|0]] / [[toolforge:scholia/author/Q2150124/missing|📖]]
|-
| ''[[:d:Q57078993|Claude Carignan]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>[[Ugqayinyanga]]<br/>''[[:d:Q752129|astrophysicist]]''
| [https://orcid.org/0000-0001-9089-6151 0000-0001-9089-6151]
|
| [https://viaf.org/en/viaf/232336283 232336283]
| 2014
|
| [[toolforge:scholia/author/Q57078993|0]] / [[toolforge:scholia/author/Q57078993/missing|📖]]
|-
| ''[[:d:Q81732311|Luigi R. Nassimbeni]]''
|
|
|
|
| 1993
|
| [[toolforge:scholia/author/Q81732311|0]] / [[toolforge:scholia/author/Q81732311/missing|📖]]
|-
| ''[[:d:Q80435053|Janine B. Adams]]''
|
|
|
|
| 2011
|
| [[toolforge:scholia/author/Q80435053|0]] / [[toolforge:scholia/author/Q80435053/missing|📖]]
|-
| ''[[:d:Q80435477|Christopher C. Appleton]]''
| ''[[:d:Q12773412|parasitologist]]''
|
|
|
| 2015
|
| [[toolforge:scholia/author/Q80435477|0]] / [[toolforge:scholia/author/Q80435477/missing|📖]]
|-
| ''[[:d:Q80435992|D. Margaret Avery]]''
| ''[[:d:Q16831394|mammalogist]]''<br/>''[[:d:Q1662561|paleontologist]]''
| [https://orcid.org/0000-0003-0784-7047 0000-0003-0784-7047]
|
| [https://viaf.org/en/viaf/311367956 311367956]
| 2001
|
| [[toolforge:scholia/author/Q80435992|0]] / [[toolforge:scholia/author/Q80435992/missing|📖]]
|-
| ''[[:d:Q80436020|Len J. Barbour]]''
|
|
|
|
| 2008
|
| [[toolforge:scholia/author/Q80436020|0]] / [[toolforge:scholia/author/Q80436020/missing|📖]]
|-
| ''[[:d:Q81733608|Vernon M. Neppe]]''
|
|
|
|
| 2002
|
| [[toolforge:scholia/author/Q81733608|0]] / [[toolforge:scholia/author/Q81733608/missing|📖]]
|-
| ''[[:d:Q23777458|Patricia Berjak]]''
| ''[[:d:Q2374149|botanist]]''
|
|
| [https://viaf.org/en/viaf/43105677 43105677]
| 1996
|
| [[toolforge:scholia/author/Q23777458|0]] / [[toolforge:scholia/author/Q23777458/missing|📖]]
|-
| ''[[:d:Q81013097|Peter W. Froneman]]''
|
|
|
|
| 2011
|
| [[toolforge:scholia/author/Q81013097|0]] / [[toolforge:scholia/author/Q81013097/missing|📖]]
|-
| ''[[:d:Q4891802|Beric Skews]]''
| ''[[:d:Q3400985|academic]]''
|
|
|
| 1997
|
| [[toolforge:scholia/author/Q4891802|0]] / [[toolforge:scholia/author/Q4891802/missing|📖]]
|-
| ''[[:d:Q32860776|Felix Dapare Dakora]]''
| ''[[:d:Q2374149|botanist]]''
| [https://orcid.org/0000-0002-9070-6896 0000-0002-9070-6896]
| [https://scholar.google.com/citations?user=DW22bZEAAAAJ DW22bZEAAAAJ]
| [https://viaf.org/en/viaf/9379653 9379653]
| 2007
|
| [[toolforge:scholia/author/Q32860776|0]] / [[toolforge:scholia/author/Q32860776/missing|📖]]
|-
| ''[[:d:Q79427702|Keith P. Klugman]]''
| [[Inyanga (umelaphi)|inyanga]]<br/>''[[:d:Q12765408|epidemiologist]]''
| [https://orcid.org/0000-0001-6637-728X 0000-0001-6637-728X]
| [https://scholar.google.com/citations?user=T-mgWmkAAAAJ T-mgWmkAAAAJ]
| [https://viaf.org/en/viaf/5261457 5261457]
| 1996
|
| [[toolforge:scholia/author/Q79427702|0]] / [[toolforge:scholia/author/Q79427702/missing|📖]]
|-
| ''[[:d:Q23778547|Peter B. Best]]''
| ''[[:d:Q350979|zoologist]]''
|
|
| [https://viaf.org/en/viaf/16138947 16138947]
| 2004
|
| [[toolforge:scholia/author/Q23778547|1]] / [[toolforge:scholia/author/Q23778547/missing|📖]]
|-
| ''[[:d:Q712043|Arthur William Rogers]]''
| ''[[:d:Q520549|geologist]]''<br/>''[[:d:Q18805|naturalist]]''
|
|
| [https://viaf.org/en/viaf/17978036 17978036]
|
|
| [[toolforge:scholia/author/Q712043|1]] / [[toolforge:scholia/author/Q712043/missing|📖]]
|-
| ''[[:d:Q80438063|Guy C. Bate]]''
|
|
|
|
| 1997
|
| [[toolforge:scholia/author/Q80438063|0]] / [[toolforge:scholia/author/Q80438063/missing|📖]]
|-
| ''[[:d:Q81014873|Andrew K. Galwey]]''
|
|
|
|
| 2002
|
| [[toolforge:scholia/author/Q81014873|0]] / [[toolforge:scholia/author/Q81014873/missing|📖]]
|-
| ''[[:d:Q81015192|Christoph F. Garbers]]''
|
|
|
|
| 1990
|
| [[toolforge:scholia/author/Q81015192|0]] / [[toolforge:scholia/author/Q81015192/missing|📖]]
|-
| ''[[:d:Q75969884|Ahmed C. Bawa]]''
| [[umfundindalo]]
|
|
| [https://viaf.org/en/viaf/249897491 249897491]
| 1997
|
| [[toolforge:scholia/author/Q75969884|0]] / [[toolforge:scholia/author/Q75969884/missing|📖]]
|-
| ''[[:d:Q52758677|Susan W. Nicolson]]''
| ''[[:d:Q350979|zoologist]]''<br/>''[[:d:Q864503|biologist]]''
| [https://orcid.org/0000-0001-6024-9383 0000-0001-6024-9383]
|
| [https://viaf.org/en/viaf/19932833 19932833]
| 2010
|
| [[toolforge:scholia/author/Q52758677|0]] / [[toolforge:scholia/author/Q52758677/missing|📖]]
|-
| ''[[:d:Q42666979|Steven L. Chown]]''
| ''[[:d:Q15839134|ecologist]]''
| [https://orcid.org/0000-0001-6069-5105 0000-0001-6069-5105]
|
| [https://viaf.org/en/viaf/64258857 64258857]
| 2005
|
| [[toolforge:scholia/author/Q42666979|1]] / [[toolforge:scholia/author/Q42666979/missing|📖]]
|-
| ''[[:d:Q29981691|Nigel C. Bennett]]''
| ''[[:d:Q350979|zoologist]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-9748-2947 0000-0001-9748-2947]
|
|
| 2002
|
| [[toolforge:scholia/author/Q29981691|0]] / [[toolforge:scholia/author/Q29981691/missing|📖]]
|-
| ''[[:d:Q22340726|Jennifer Thomson]]''
| ''[[:d:Q3779582|microbiologist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0002-2243-0357 0000-0002-2243-0357]
|
| [https://viaf.org/en/viaf/54380859 54380859]
| 2000
|
| [[toolforge:scholia/author/Q22340726|0]] / [[toolforge:scholia/author/Q22340726/missing|📖]]
|-
| ''[[:d:Q60834357|Brian Warner]]''
| [[Ugqayinyanga]]<br/>[[umbhali]]<br/>''[[:d:Q16063546|historian of science]]''
|
|
| [https://viaf.org/en/viaf/109805982 109805982]
| 1976
|
| [[toolforge:scholia/author/Q60834357|0]] / [[toolforge:scholia/author/Q60834357/missing|📖]]
|-
| ''[[:d:Q18161438|Salim Abdool Karim]]''
| ''[[:d:Q12765408|epidemiologist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0002-4986-2133 0000-0002-4986-2133]
| [https://scholar.google.com/citations?user=Xh1qaJ4AAAAJ Xh1qaJ4AAAAJ]
| [https://viaf.org/en/viaf/273180719 273180719]
| 2003
| [[File:Slim portrait 2020.jpg|center|128px]]
| [[toolforge:scholia/author/Q18161438|2]] / [[toolforge:scholia/author/Q18161438/missing|📖]]
|-
| ''[[:d:Q20756981|Peter Vale]]''
| ''[[:d:Q1238570|political scientist]]''
| [https://orcid.org/0000-0003-0805-9325 0000-0003-0805-9325]
|
| [https://viaf.org/en/viaf/39521399 39521399]
| 2005
|
| [[toolforge:scholia/author/Q20756981|0]] / [[toolforge:scholia/author/Q20756981/missing|📖]]
|-
| ''[[:d:Q80444317|Kanti D. Bhoola]]''
|
|
|
|
| 1996
|
| [[toolforge:scholia/author/Q80444317|0]] / [[toolforge:scholia/author/Q80444317/missing|📖]]
|-
| ''[[:d:Q71650707|Hendrik B. Geyer]]''
| ''[[:d:Q1650915|umcwaningi]]''
|
|
|
| 2004
|
| [[toolforge:scholia/author/Q71650707|0]] / [[toolforge:scholia/author/Q71650707/missing|📖]]
|-
| ''[[:d:Q82175664|Michael Perrin]]''
|
|
|
|
| 2010
|
| [[toolforge:scholia/author/Q82175664|0]] / [[toolforge:scholia/author/Q82175664/missing|📖]]
|-
| ''[[:d:Q6775598|Martin Hall]]''
| ''[[:d:Q4773904|anthropologist]]''<br/>''[[:d:Q3621491|archaeologist]]''
|
|
| [https://viaf.org/en/viaf/117559096 117559096]
| 2001
| [[File:Professor Martin Hall.jpg|center|128px]]
| [[toolforge:scholia/author/Q6775598|1]] / [[toolforge:scholia/author/Q6775598/missing|📖]]
|-
| ''[[:d:Q80447055|R.D. Bigalke]]''
| ''[[:d:Q202883|veterinarian]]''
|
|
| [https://viaf.org/en/viaf/287462074 287462074]
| 2004
|
| [[toolforge:scholia/author/Q80447055|0]] / [[toolforge:scholia/author/Q80447055/missing|📖]]
|-
| ''[[:d:Q1586575|Harry Irving]]''
| ''[[:d:Q593644|chemist]]''
|
|
| [https://viaf.org/en/viaf/422145857117322922525 422145857117322922525]<br/>[https://viaf.org/en/viaf/91856523 91856523]
|
|
| [[toolforge:scholia/author/Q1586575|0]] / [[toolforge:scholia/author/Q1586575/missing|📖]]
|-
| ''[[:d:Q61993822|David Glasser]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-9510-722X 0000-0001-9510-722X]
| [https://scholar.google.com/citations?user=G8kEvt8AAAAJ G8kEvt8AAAAJ]
| [https://viaf.org/en/viaf/121088199 121088199]
| 1997
|
| [[toolforge:scholia/author/Q61993822|0]] / [[toolforge:scholia/author/Q61993822/missing|📖]]
|-
| ''[[:d:Q61993821|Diane Hildebrandt]]''
| ''[[:d:Q7888586|chemical engineer]]''
| [https://orcid.org/0000-0001-7873-8855 0000-0001-7873-8855]
| [https://scholar.google.com/citations?user=2SQ-120AAAAJ 2SQ-120AAAAJ]
| [https://viaf.org/en/viaf/34119349 34119349]
| 2001
|
| [[toolforge:scholia/author/Q61993821|0]] / [[toolforge:scholia/author/Q61993821/missing|📖]]
|-
| ''[[:d:Q80447621|Judy M. Bishop]]''
| ''[[:d:Q82594|computer scientist]]''
| [https://orcid.org/0000-0001-9986-7269 0000-0001-9986-7269]
| [https://scholar.google.com/citations?user=fTryeZAAAAAJ fTryeZAAAAAJ]
| [https://viaf.org/en/viaf/111091523 111091523]
| 2006
|
| [[toolforge:scholia/author/Q80447621|0]] / [[toolforge:scholia/author/Q80447621/missing|📖]]
|-
| ''[[:d:Q71654754|Andries Johannes van der Walt]]''
| ''[[:d:Q2325224|constitutional lawyer]]''<br/>''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q185351|jurist]]''
|
|
| [https://viaf.org/en/viaf/58628637 58628637]
| 2008
|
| [[toolforge:scholia/author/Q71654754|0]] / [[toolforge:scholia/author/Q71654754/missing|📖]]
|-
| ''[[:d:Q2165640|Ronald J. Clarke]]''
| ''[[:d:Q3621491|archaeologist]]''<br/>''[[:d:Q4773904|anthropologist]]''<br/>''[[:d:Q17488316|prehistorian]]''<br/>''[[:d:Q2145981|restorer]]''<br/>''[[:d:Q21272406|paleoanthropologist]]''
|
|
| [https://viaf.org/en/viaf/147008726 147008726]
|
| [[File:Ronald Clarke.jpg|center|128px]]
| [[toolforge:scholia/author/Q2165640|0]] / [[toolforge:scholia/author/Q2165640/missing|📖]]
|-
| ''[[:d:Q38640649|Andrew E. McKechnie]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-1524-1021 0000-0002-1524-1021]
|
|
| 2017
|
| [[toolforge:scholia/author/Q38640649|0]] / [[toolforge:scholia/author/Q38640649/missing|📖]]
|-
| ''[[:d:Q15429379|Paul Cilliers]]''
| ''[[:d:Q81096|engineer]]''<br/>''[[:d:Q4964182|philosopher]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/328371 328371]
|
|
| [[toolforge:scholia/author/Q15429379|0]] / [[toolforge:scholia/author/Q15429379/missing|📖]]
|-
| ''[[:d:Q21340974|Bruce S. Rubidge]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-2477-1873 0000-0003-2477-1873]
| [https://scholar.google.com/citations?user=Z7edricAAAAJ Z7edricAAAAJ]
| [https://viaf.org/en/viaf/147053915 147053915]<br/>[https://viaf.org/en/viaf/475150323917709972010 475150323917709972010]
| 2003
|
| [[toolforge:scholia/author/Q21340974|0]] / [[toolforge:scholia/author/Q21340974/missing|📖]]
|-
| ''[[:d:Q82901586|Stuart J. Saunders]]''
| ''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/38148628 38148628]
| 1992
| [[File:Stuart Saunders, Vice-chancellor of UCT.jpg|center|128px]]
| [[toolforge:scholia/author/Q82901586|0]] / [[toolforge:scholia/author/Q82901586/missing|📖]]
|-
| ''[[:d:Q21341244|Ansie Dippenaar-Schoeman]]''
| ''[[:d:Q17344952|arachnologist]]''
| [https://orcid.org/0000-0003-1532-1379 0000-0003-1532-1379]
|
| [https://viaf.org/en/viaf/68612009 68612009]
| 2006
|
| [[toolforge:scholia/author/Q21341244|1]] / [[toolforge:scholia/author/Q21341244/missing|📖]]
|-
| ''[[:d:Q81027633|Andre Goosen]]''
|
|
|
|
| 1993
|
| [[toolforge:scholia/author/Q81027633|0]] / [[toolforge:scholia/author/Q81027633/missing|📖]]
|-
| ''[[:d:Q21341400|Maureen Coetzee]]''
| ''[[:d:Q3055126|entomologist]]''<br/>''[[:d:Q107292086|medical entomologist]]''
| [https://orcid.org/0000-0003-2019-866X 0000-0003-2019-866X]
| [https://scholar.google.com/citations?user=jbWH4QUAAAAJ jbWH4QUAAAAJ]
|
| 2011
|
| [[toolforge:scholia/author/Q21341400|0]] / [[toolforge:scholia/author/Q21341400/missing|📖]]
|-
| ''[[:d:Q26820569|John Francis Thackeray]]''
| ''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q1662561|paleontologist]]''
| [https://orcid.org/0000-0001-6884-382X 0000-0001-6884-382X]
| [https://scholar.google.com/citations?user=SMN_CbwAAAAJ SMN_CbwAAAAJ]
| [https://viaf.org/en/viaf/56318959 56318959]
| 2009
| [[File:Koenigswald-Lecture 2016 John Francis Thackeray 01.jpg|center|128px]]
| [[toolforge:scholia/author/Q26820569|2]] / [[toolforge:scholia/author/Q26820569/missing|📖]]
|-
| ''[[:d:Q81028595|John J. Gurney]]''
|
|
|
|
| 1989
|
| [[toolforge:scholia/author/Q81028595|0]] / [[toolforge:scholia/author/Q81028595/missing|📖]]
|-
| ''[[:d:Q5340086|Edna P. Plumstead]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q1662561|paleontologist]]''<br/>''[[:d:Q30059961|paleobotanist]]''
|
|
| [https://viaf.org/en/viaf/23411195 23411195]
|
|
| [[toolforge:scholia/author/Q5340086|0]] / [[toolforge:scholia/author/Q5340086/missing|📖]]
|-
| ''[[:d:Q81029575|Friedrich W. Hahne]]''
|
|
|
|
| 1991
|
| [[toolforge:scholia/author/Q81029575|0]] / [[toolforge:scholia/author/Q81029575/missing|📖]]
|-
| ''[[:d:Q82903855|Louis Scott]]''
|
|
|
|
| 2009
|
| [[toolforge:scholia/author/Q82903855|0]] / [[toolforge:scholia/author/Q82903855/missing|📖]]
|-
| ''[[:d:Q49168166|Terence J. Robinson]]''
| ''[[:d:Q350979|zoologist]]''
| [https://orcid.org/0000-0002-4298-4891 0000-0002-4298-4891]
| [https://scholar.google.com/citations?user=LLaJvSEAAAAJ LLaJvSEAAAAJ]
|
| 2003
|
| [[toolforge:scholia/author/Q49168166|0]] / [[toolforge:scholia/author/Q49168166/missing|📖]]
|-
| ''[[:d:Q78434764|David Mason]]''
| ''[[:d:Q1650915|umcwaningi]]''
|
|
|
| 1998
|
| [[toolforge:scholia/author/Q78434764|0]] / [[toolforge:scholia/author/Q78434764/missing|📖]]
|-
| ''[[:d:Q82904164|Michael S. Scurrell]]''
|
|
|
|
| 2006
|
| [[toolforge:scholia/author/Q82904164|0]] / [[toolforge:scholia/author/Q82904164/missing|📖]]
|-
| ''[[:d:Q81030104|Raymond J. Haines]]''
|
|
|
|
| 1990
|
| [[toolforge:scholia/author/Q81030104|0]] / [[toolforge:scholia/author/Q81030104/missing|📖]]
|-
| ''[[:d:Q60991028|George Ekama]]''
| ''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q81096|engineer]]''
|
| [https://scholar.google.com/citations?user=PWje2ogAAAAJ PWje2ogAAAAJ]
| [https://viaf.org/en/viaf/311249909 311249909]
| 1993
|
| [[toolforge:scholia/author/Q60991028|0]] / [[toolforge:scholia/author/Q60991028/missing|📖]]
|-
| ''[[:d:Q81031522|Eric H. Harley]]''
|
|
|
|
| 2005
|
| [[toolforge:scholia/author/Q81031522|0]] / [[toolforge:scholia/author/Q81031522/missing|📖]]
|-
| ''[[:d:Q7793599|Thomas Robertson Sim]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q16334507|bryologist]]''<br/>''[[:d:Q11900058|explorer]]''<br/>''[[:d:Q2083925|botanical collector]]''
|
|
| [https://viaf.org/en/viaf/20209164 20209164]
|
| [[File:Tr sim00.JPG|center|128px]]
| [[toolforge:scholia/author/Q7793599|3]] / [[toolforge:scholia/author/Q7793599/missing|📖]]
|-
| ''[[:d:Q81176926|Steven J. Lennon]]''
|
|
|
|
| 2002
|
| [[toolforge:scholia/author/Q81176926|0]] / [[toolforge:scholia/author/Q81176926/missing|📖]]
|-
| ''[[:d:Q76419491|Jan-Hendrik S. Hofmeyr]]''
| ''[[:d:Q2919046|biochemist]]''
|
|
|
| 2003
|
| [[toolforge:scholia/author/Q76419491|0]] / [[toolforge:scholia/author/Q76419491/missing|📖]]
|-
| ''[[:d:Q76419567|Igor Barashenkov]]''
|
|
|
|
| 2008
|
| [[toolforge:scholia/author/Q76419567|0]] / [[toolforge:scholia/author/Q76419567/missing|📖]]
|-
| ''[[:d:Q81177218|Owen A.M. Lewis]]''
|
|
|
|
| 1980
|
| [[toolforge:scholia/author/Q81177218|0]] / [[toolforge:scholia/author/Q81177218/missing|📖]]
|-
| ''[[:d:Q77717266|Michael Charles Kew]]''
| ''[[:d:Q1650915|umcwaningi]]''
|
|
|
| 1987
|
| [[toolforge:scholia/author/Q77717266|0]] / [[toolforge:scholia/author/Q77717266/missing|📖]]
|-
| ''[[:d:Q81177625|James D. Lewis-Williams]]''
|
|
|
|
| 1993
|
| [[toolforge:scholia/author/Q81177625|0]] / [[toolforge:scholia/author/Q81177625/missing|📖]]
|-
| ''[[:d:Q11256815|David Mark Richardson]]''
| ''[[:d:Q15839134|ecologist]]''
| [https://orcid.org/0000-0001-9574-8297 0000-0001-9574-8297]
| [https://scholar.google.com/citations?user=Rdfu4uoAAAAJ Rdfu4uoAAAAJ]
| [https://viaf.org/en/viaf/85249968 85249968]
| 2008
|
| [[toolforge:scholia/author/Q11256815|5]] / [[toolforge:scholia/author/Q11256815/missing|📖]]
|-
| ''[[:d:Q42830282|Peter Henzi]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-6175-1674 0000-0001-6175-1674]
|
|
| 2011
|
| [[toolforge:scholia/author/Q42830282|0]] / [[toolforge:scholia/author/Q42830282/missing|📖]]
|-
| ''[[:d:Q15438215|Walter Wargau]]''
| [[Ugqayinyanga]]<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/72240426 72240426]
|
| [[File:Walter Wargau (Student).jpg|center|128px]]
| [[toolforge:scholia/author/Q15438215|0]] / [[toolforge:scholia/author/Q15438215/missing|📖]]
|-
| ''[[:d:Q79306387|Norman Pammenter]]''
|
|
|
|
| 2011
|
| [[toolforge:scholia/author/Q79306387|0]] / [[toolforge:scholia/author/Q79306387/missing|📖]]
|-
| ''[[:d:Q81036719|William F. Harris]]''
| ''[[:d:Q7888586|chemical engineer]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
|
| 2001
|
| [[toolforge:scholia/author/Q81036719|0]] / [[toolforge:scholia/author/Q81036719/missing|📖]]
|-
| ''[[:d:Q42544590|Daniela Cristina Stefan]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q1919436|pediatrician]]''<br/>''[[:d:Q16062369|oncologist]]''
| [https://orcid.org/0000-0001-5740-1209 0000-0001-5740-1209]
|
|
| 2015
|
| [[toolforge:scholia/author/Q42544590|0]] / [[toolforge:scholia/author/Q42544590/missing|📖]]
|-
| ''[[:d:Q82912218|Yackoob K. Seedat]]''
|
|
|
|
| 1995
|
| [[toolforge:scholia/author/Q82912218|0]] / [[toolforge:scholia/author/Q82912218/missing|📖]]
|-
| ''[[:d:Q81038008|Walter D. Heiss]]''
|
|
|
|
| 1998
|
| [[toolforge:scholia/author/Q81038008|0]] / [[toolforge:scholia/author/Q81038008/missing|📖]]
|-
| ''[[:d:Q82912585|Mary K. Seely]]''
| ''[[:d:Q15839134|ecologist]]''
|
|
|
| 1991
|
| [[toolforge:scholia/author/Q82912585|0]] / [[toolforge:scholia/author/Q82912585/missing|📖]]
|-
| ''[[:d:Q82912954|Milton Shain]]''
|
|
|
|
| 2014
|
| [[toolforge:scholia/author/Q82912954|0]] / [[toolforge:scholia/author/Q82912954/missing|📖]]
|-
| ''[[:d:Q37643854|Gregory L. Blatch]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-0778-8577 0000-0003-0778-8577]
|
| [https://viaf.org/en/viaf/272043681 272043681]
| 2008
|
| [[toolforge:scholia/author/Q37643854|0]] / [[toolforge:scholia/author/Q37643854/missing|📖]]
|-
| ''[[:d:Q19623171|Clarence Van Riet Lowe]]''
| ''[[:d:Q3621491|archaeologist]]''<br/>''[[:d:Q13582652|civil engineer]]''
|
|
| [https://viaf.org/en/viaf/62837606 62837606]
|
|
| [[toolforge:scholia/author/Q19623171|0]] / [[toolforge:scholia/author/Q19623171/missing|📖]]
|-
| ''[[:d:Q82914193|Vere Shannon]]''
| ''[[:d:Q3546255|oceanographer]]''
|
|
|
| 1993
|
| [[toolforge:scholia/author/Q82914193|0]] / [[toolforge:scholia/author/Q82914193/missing|📖]]
|-
| ''[[:d:Q43267916|Susan A. Bourne]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-2491-2843 0000-0002-2491-2843]
| [https://scholar.google.com/citations?user=OlFQMW4AAAAJ OlFQMW4AAAAJ]
|
| 2011
|
| [[toolforge:scholia/author/Q43267916|0]] / [[toolforge:scholia/author/Q43267916/missing|📖]]
|-
| ''[[:d:Q82915241|Merwyn Shear]]''
|
|
|
|
| 1978
|
| [[toolforge:scholia/author/Q82915241|0]] / [[toolforge:scholia/author/Q82915241/missing|📖]]
|-
| ''[[:d:Q450598|Lee Berger]]''
| ''[[:d:Q21272406|paleoanthropologist]]''<br/>''[[:d:Q4773904|anthropologist]]''<br/>''[[:d:Q205375|inventor]]''<br/>''[[:d:Q3621491|archaeologist]]''<br/>''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q239272|Australopithecus africanus]]''
| [https://orcid.org/0000-0002-0367-7629 0000-0002-0367-7629]
| [https://scholar.google.com/citations?user=PpW_J88AAAAJ PpW_J88AAAAJ]
| [https://viaf.org/en/viaf/6169562 6169562]
| 2011
| [[File:Lee Berger image 2006.JPG|center|128px]]
| [[toolforge:scholia/author/Q450598|9]] / [[toolforge:scholia/author/Q450598/missing|📖]]
|-
| ''[[:d:Q76716731|Thomas Ford]]''
|
|
|
|
| 1998
|
| [[toolforge:scholia/author/Q76716731|0]] / [[toolforge:scholia/author/Q76716731/missing|📖]]
|-
| ''[[:d:Q7660145|Sydney Skaife]]''
| ''[[:d:Q3055126|entomologist]]''<br/>''[[:d:Q18805|naturalist]]''<br/>''[[:d:Q864503|biologist]]''
|
|
| [https://viaf.org/en/viaf/117949603 117949603]<br/>[https://viaf.org/en/viaf/86323194 86323194]
|
| [[File:Hendrik Brand.jpg|center|128px]]
| [[toolforge:scholia/author/Q7660145|1]] / [[toolforge:scholia/author/Q7660145/missing|📖]]
|-
| ''[[:d:Q82917146|Peter E. Spargo]]''
|
|
|
|
| 1986
|
| [[toolforge:scholia/author/Q82917146|0]] / [[toolforge:scholia/author/Q82917146/missing|📖]]
|-
| ''[[:d:Q52353159|Stephanie G. Burton]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-3094-8420 0000-0002-3094-8420]
|
|
| 2011
|
| [[toolforge:scholia/author/Q52353159|0]] / [[toolforge:scholia/author/Q52353159/missing|📖]]
|-
| ''[[:d:Q73836164|Perry T. Kaye]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-5997-8121 0000-0002-5997-8121]
|
|
| 1998
|
| [[toolforge:scholia/author/Q73836164|0]] / [[toolforge:scholia/author/Q73836164/missing|📖]]
|-
| ''[[:d:Q70377150|Lynn Morris]]''
| ''[[:d:Q15634281|virologist]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-1836-8415 0000-0002-1836-8415]<br/>[https://orcid.org/0000-0003-3961-7828 0000-0003-3961-7828]
| [https://scholar.google.com/citations?user=atnn-0AAAAAJ atnn-0AAAAAJ]
|
| 2015
|
| [[toolforge:scholia/author/Q70377150|0]] / [[toolforge:scholia/author/Q70377150/missing|📖]]
|-
| ''[[:d:Q54086671|Norman Owen-Smith]]''
| ''[[:d:Q15839134|ecologist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0001-8429-1201 0000-0001-8429-1201]
| [https://scholar.google.com/citations?user=BoSadf0AAAAJ BoSadf0AAAAJ]
| [https://viaf.org/en/viaf/29615824 29615824]<br/>[https://viaf.org/en/viaf/496166656941922710006 496166656941922710006]
| 2003
|
| [[toolforge:scholia/author/Q54086671|2]] / [[toolforge:scholia/author/Q54086671/missing|📖]]
|-
| ''[[:d:Q5213742|Dan J. Stein]]''
| ''[[:d:Q211346|psychiatrist]]''<br/>[[USolwazi]]<br/>''[[:d:Q1622272|university teacher]]''<br/>[[Inyanga (umelaphi)|inyanga]]
| [https://orcid.org/0000-0001-7218-7810 0000-0001-7218-7810]
| [https://scholar.google.com/citations?user=LOHkEw8AAAAJ LOHkEw8AAAAJ]
| [https://viaf.org/en/viaf/39468370 39468370]
| 2012
| [[File:Dan-Stein-20130904.jpg|center|128px]]
| [[toolforge:scholia/author/Q5213742|29]] / [[toolforge:scholia/author/Q5213742/missing|📖]]
|-
| ''[[:d:Q17612495|Quarraisha Karim]]''
| ''[[:d:Q12765408|epidemiologist]]''<br/>''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-0985-477X 0000-0002-0985-477X]
| [https://scholar.google.com/citations?user=ARaZ9-MAAAAJ ARaZ9-MAAAAJ]
| [https://viaf.org/en/viaf/24336962 24336962]
| 2014
| [[File:Quarraisha Abdool Karim.jpg|center|128px]]
| [[toolforge:scholia/author/Q17612495|1]] / [[toolforge:scholia/author/Q17612495/missing|📖]]
|-
| ''[[:d:Q57259567|Charles B. de Koning]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-4525-5130 0000-0003-4525-5130]
|
|
| 2013
|
| [[toolforge:scholia/author/Q57259567|0]] / [[toolforge:scholia/author/Q57259567/missing|📖]]
|-
| ''[[:d:Q15451201|Geoffrey Blight]]''
| ''[[:d:Q11424604|earth scientist]]''
|
|
| [https://viaf.org/en/viaf/63422447 63422447]
| 1991
| [[File:Geoff Blight.jpg|center|128px]]
| [[toolforge:scholia/author/Q15451201|0]] / [[toolforge:scholia/author/Q15451201/missing|📖]]
|-
| ''[[:d:Q2043552|Johannes van Staden]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-0515-1281 0000-0003-0515-1281]
|
| [https://viaf.org/en/viaf/562159234013403370477 562159234013403370477]
| 1990
| [[File:Prof johannes van staden-1595341335.jpg|center|128px]]
| [[toolforge:scholia/author/Q2043552|0]] / [[toolforge:scholia/author/Q2043552/missing|📖]]
|-
| ''[[:d:Q80761328|W.P.M. de Ruijter]]''
| ''[[:d:Q3546255|oceanographer]]''
|
| [https://scholar.google.com/citations?user=N6GAWu8AAAAJ N6GAWu8AAAAJ]
| [https://viaf.org/en/viaf/55454984 55454984]
| 2001
|
| [[toolforge:scholia/author/Q80761328|0]] / [[toolforge:scholia/author/Q80761328/missing|📖]]
|-
| ''[[:d:Q81915116|Haralambos Parolis]]''
|
|
|
|
| 1995
|
| [[toolforge:scholia/author/Q81915116|0]] / [[toolforge:scholia/author/Q81915116/missing|📖]]
|-
| ''[[:d:Q80762518|Cesáreo A. Dominguez]]''
|
|
| [https://scholar.google.com/citations?user=AynPRjkAAAAJ AynPRjkAAAAJ]
| [https://viaf.org/en/viaf/76115383 76115383]
| 1996
|
| [[toolforge:scholia/author/Q80762518|0]] / [[toolforge:scholia/author/Q80762518/missing|📖]]
|-
| ''[[:d:Q80762761|Siegfried E. Drewes]]''
|
|
|
|
| 1990
|
| [[toolforge:scholia/author/Q80762761|0]] / [[toolforge:scholia/author/Q80762761/missing|📖]]
|-
| ''[[:d:Q71104683|Willem Albert Hanekom]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-6788-1645 0000-0002-6788-1645]
| [https://scholar.google.com/citations?user=GNFho0kAAAAJ GNFho0kAAAAJ]
|
| 2013
|
| [[toolforge:scholia/author/Q71104683|0]] / [[toolforge:scholia/author/Q71104683/missing|📖]]
|-
| ''[[:d:Q5074942|Charles Abercrombie Smith]]''
| [[Usonzululwazi|imfundondalo]]<br/>[[Usopolitiki|usombusazwe]]
|
|
|
|
| [[File:Sir Charles Abercrombie Smith - Scientist and politician - Cape Colony.png|center|128px]]
| [[toolforge:scholia/author/Q5074942|0]] / [[toolforge:scholia/author/Q5074942/missing|📖]]
|-
| ''[[:d:Q53952047|William J. Bond]]''
| ''[[:d:Q15839134|ecologist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0002-3441-2084 0000-0002-3441-2084]
| [https://scholar.google.com/citations?user=8vuc6rIAAAAJ 8vuc6rIAAAAJ]
| [https://viaf.org/en/viaf/279051097 279051097]
| 1998
|
| [[toolforge:scholia/author/Q53952047|0]] / [[toolforge:scholia/author/Q53952047/missing|📖]]
|-
| ''[[:d:Q53808040|Michael T Davies-Coleman]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-5344-894X 0000-0001-5344-894X]
|
| [https://viaf.org/en/viaf/85647578 85647578]
| 2008
|
| [[toolforge:scholia/author/Q53808040|0]] / [[toolforge:scholia/author/Q53808040/missing|📖]]
|-
| ''[[:d:Q81056277|Michael J.R. Hoch]]''
|
|
|
|
| 1995
|
| [[toolforge:scholia/author/Q81056277|0]] / [[toolforge:scholia/author/Q81056277/missing|📖]]
|-
| ''[[:d:Q15459092|Charles K. Brain]]''
| ''[[:d:Q1662561|paleontologist]]''
|
|
| [https://viaf.org/en/viaf/30825610 30825610]
| 1976
|
| [[toolforge:scholia/author/Q15459092|1]] / [[toolforge:scholia/author/Q15459092/missing|📖]]
|-
| ''[[:d:Q81056623|Alan N. Hodgson]]''
|
|
|
|
| 2008
|
| [[toolforge:scholia/author/Q81056623|0]] / [[toolforge:scholia/author/Q81056623/missing|📖]]
|-
| ''[[:d:Q42420373|Guy F. Midgley]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-8264-0869 0000-0001-8264-0869]
|
| [https://viaf.org/en/viaf/53146094231500331476 53146094231500331476]
| 2014
|
| [[toolforge:scholia/author/Q42420373|0]] / [[toolforge:scholia/author/Q42420373/missing|📖]]
|-
| ''[[:d:Q56406446|Alan K. Whitfield]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-1452-7367 0000-0003-1452-7367]
| [https://scholar.google.com/citations?user=NIDj1ksAAAAJ NIDj1ksAAAAJ]
|
| 2005
|
| [[toolforge:scholia/author/Q56406446|2]] / [[toolforge:scholia/author/Q56406446/missing|📖]]
|-
| ''[[:d:Q81060675|Leon C. Isaacson]]''
|
|
|
|
| 1975
|
| [[toolforge:scholia/author/Q81060675|0]] / [[toolforge:scholia/author/Q81060675/missing|📖]]
|-
| ''[[:d:Q81060977|Tom Jarrett]]''
| [[Ugqayinyanga]]
|
|
|
| 2015
|
| [[toolforge:scholia/author/Q81060977|0]] / [[toolforge:scholia/author/Q81060977/missing|📖]]
|-
| ''[[:d:Q61598221|Chaudry Masood Khalique]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-1986-4859 0000-0002-1986-4859]
| [https://scholar.google.com/citations?user=4ILEyUYAAAAJ 4ILEyUYAAAAJ]
|
| 2016
|
| [[toolforge:scholia/author/Q61598221|0]] / [[toolforge:scholia/author/Q61598221/missing|📖]]
|-
| ''[[:d:Q78610632|Ebrahim Momoniat]]''
| ''[[:d:Q170790|mathematician]]''
|
|
|
| 2017
|
| [[toolforge:scholia/author/Q78610632|0]] / [[toolforge:scholia/author/Q78610632/missing|📖]]
|-
| ''[[:d:Q5084053|Charles van Onselen]]''
| ''[[:d:Q201788|historian]]''<br/>''[[:d:Q864380|biographer]]''
| [https://orcid.org/0000-0002-3903-8052 0000-0002-3903-8052]
|
| [https://viaf.org/en/viaf/64050944 64050944]
| 1998
|
| [[toolforge:scholia/author/Q5084053|1]] / [[toolforge:scholia/author/Q5084053/missing|📖]]
|-
| ''[[:d:Q26998207|Athelstan Cornish-Bowden]]''
|
|
|
|
|
| [[File:Athelstan Hall Cornish-Bowden in about 1885.jpg|center|128px]]
| [[toolforge:scholia/author/Q26998207|0]] / [[toolforge:scholia/author/Q26998207/missing|📖]]
|-
| ''[[:d:Q60590121|Robin Wood]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-4276-7117 0000-0002-4276-7117]
|
|
| 2013
|
| [[toolforge:scholia/author/Q60590121|0]] / [[toolforge:scholia/author/Q60590121/missing|📖]]
|-
| ''[[:d:Q21664327|Lawrence Crawford]]''
| ''[[:d:Q170790|mathematician]]''
|
|
|
|
|
| [[toolforge:scholia/author/Q21664327|0]] / [[toolforge:scholia/author/Q21664327/missing|📖]]
|-
| ''[[:d:Q80053967|Peter Doughtrey Tyson]]''
|
|
|
|
| 1989
|
| [[toolforge:scholia/author/Q80053967|0]] / [[toolforge:scholia/author/Q80053967/missing|📖]]
|-
| ''[[:d:Q20656400|Hoosen Coovadia]]''
| [[Inyanga (umelaphi)|inyanga]]<br/>''[[:d:Q134284649|anti-apartheid activist]]''
|
|
|
| 2003
|
| [[toolforge:scholia/author/Q20656400|0]] / [[toolforge:scholia/author/Q20656400/missing|📖]]
|-
| ''[[:d:Q70827557|Simon Henry Connell]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-6000-7245 0000-0001-6000-7245]
| [https://scholar.google.com/citations?user=pVS2ZiMAAAAJ pVS2ZiMAAAAJ]
|
| 2006
|
| [[toolforge:scholia/author/Q70827557|0]] / [[toolforge:scholia/author/Q70827557/missing|📖]]
|-
| ''[[:d:Q81064210|Graham I.H. Kerley]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-2702-5200 0000-0003-2702-5200]
|
|
| 2017
|
| [[toolforge:scholia/author/Q81064210|1]] / [[toolforge:scholia/author/Q81064210/missing|📖]]
|-
| ''[[:d:Q42571640|Jane Carruthers]]''
| ''[[:d:Q201788|historian]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0001-8210-4599 0000-0001-8210-4599]
|
| [https://viaf.org/en/viaf/4128165628894642480006 4128165628894642480006]<br/>[https://viaf.org/en/viaf/48310877 48310877]
| 2005
|
| [[toolforge:scholia/author/Q42571640|0]] / [[toolforge:scholia/author/Q42571640/missing|📖]]
|-
| ''[[:d:Q21522991|Richard N. Pienaar]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q12358881|phycologist]]''
|
|
| [https://viaf.org/en/viaf/187578662 187578662]
| 2002
|
| [[toolforge:scholia/author/Q21522991|0]] / [[toolforge:scholia/author/Q21522991/missing|📖]]
|-
| ''[[:d:Q42572405|Marion Bamford]]''
| ''[[:d:Q30059961|paleobotanist]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-0667-130X 0000-0003-0667-130X]
| [https://scholar.google.com/citations?user=WT8NxO0AAAAJ WT8NxO0AAAAJ]
|
| 2006
| [[File:Prof. Marion Bamford.jpg|center|128px]]
| [[toolforge:scholia/author/Q42572405|0]] / [[toolforge:scholia/author/Q42572405/missing|📖]]
|-
| ''[[:d:Q5236554|David Lewis-Williams]]''
| ''[[:d:Q4773904|anthropologist]]''<br/>''[[:d:Q3621491|archaeologist]]''<br/>''[[:d:Q1371378|ethnologist]]''
|
|
| [https://viaf.org/en/viaf/14885319 14885319]
|
|
| [[toolforge:scholia/author/Q5236554|2]] / [[toolforge:scholia/author/Q5236554/missing|📖]]
|-
| ''[[:d:Q56849521|Leon M.T. Dicks]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-5157-9046 0000-0002-5157-9046]
|
|
| 2013
|
| [[toolforge:scholia/author/Q56849521|0]] / [[toolforge:scholia/author/Q56849521/missing|📖]]
|-
| ''[[:d:Q5092799|Cheryl de la Rey]]''
| ''[[:d:Q212980|psychologist]]''
|
|
|
| 2010
| [[File:Cheryl de la Rey.jpg|center|128px]]
| [[toolforge:scholia/author/Q5092799|0]] / [[toolforge:scholia/author/Q5092799/missing|📖]]
|-
| ''[[:d:Q54254936|Kelly Chibale]]''
| ''[[:d:Q3400985|academic]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-4541-646X 0000-0002-4541-646X]
| [https://scholar.google.com/citations?user=BAk6GbcAAAAJ BAk6GbcAAAAJ]
|
| 2009
| [[File:2025UniLeiden450-4.jpg|center|128px]]
| [[toolforge:scholia/author/Q54254936|0]] / [[toolforge:scholia/author/Q54254936/missing|📖]]
|-
| ''[[:d:Q81791833|Darragh O’Donoghue]]''
|
|
|
| [https://viaf.org/en/viaf/315709107 315709107]
| 2005
|
| [[toolforge:scholia/author/Q81791833|0]] / [[toolforge:scholia/author/Q81791833/missing|📖]]
|-
| ''[[:d:Q1348676|Sydney Samuel Hough]]''
| [[Ugqayinyanga]]<br/>''[[:d:Q170790|mathematician]]''<br/>[[umfundindalo]]
|
|
| [https://viaf.org/en/viaf/35236785 35236785]
|
|
| [[toolforge:scholia/author/Q1348676|0]] / [[toolforge:scholia/author/Q1348676/missing|📖]]
|-
| ''[[:d:Q42293328|Patricia Ann Whitelock]]''
| ''[[:d:Q752129|astrophysicist]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-4678-4432 0000-0002-4678-4432]
|
| [https://viaf.org/en/viaf/24755014 24755014]
| 2000
|
| [[toolforge:scholia/author/Q42293328|1]] / [[toolforge:scholia/author/Q42293328/missing|📖]]
|-
| ''[[:d:Q22109577|Richard S. K. Barnes]]''
| ''[[:d:Q350979|zoologist]]''<br/>''[[:d:Q16868721|carcinologist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0002-5773-5994 0000-0002-5773-5994]
|
| [https://viaf.org/en/viaf/64066109 64066109]
| 2013
|
| [[toolforge:scholia/author/Q22109577|0]] / [[toolforge:scholia/author/Q22109577/missing|📖]]
|-
| ''[[:d:Q7837812|Trefor Jenkins]]''
| ''[[:d:Q3126128|geneticist]]''
|
|
| [https://viaf.org/en/viaf/46916068 46916068]
| 1975
| [[File:Trefor Jenkins00.jpg|center|128px]]
| [[toolforge:scholia/author/Q7837812|0]] / [[toolforge:scholia/author/Q7837812/missing|📖]]
|-
| ''[[:d:Q22112378|Roger M. H. Smith]]''
| ''[[:d:Q1662561|paleontologist]]''
|
| [https://scholar.google.com/citations?user=NlTbMPoAAAAJ NlTbMPoAAAAJ]
|
| 2008
|
| [[toolforge:scholia/author/Q22112378|0]] / [[toolforge:scholia/author/Q22112378/missing|📖]]
|-
| ''[[:d:Q71274564|Fazal Mahmood Mahomed]]''
| ''[[:d:Q1650915|umcwaningi]]''
|
|
|
| 2010
|
| [[toolforge:scholia/author/Q71274564|0]] / [[toolforge:scholia/author/Q71274564/missing|📖]]
|-
| ''[[:d:Q19661724|Lyn Wadley]]''
| ''[[:d:Q3621491|archaeologist]]''
| [https://orcid.org/0000-0003-0053-0813 0000-0003-0053-0813]
| [https://scholar.google.com/citations?user=bK8F68UAAAAJ bK8F68UAAAAJ]
| [https://viaf.org/en/viaf/59117828 59117828]
| 2014
|
| [[toolforge:scholia/author/Q19661724|2]] / [[toolforge:scholia/author/Q19661724/missing|📖]]
|-
| ''[[:d:Q21392406|Richard Vernon Dingle]]''
| ''[[:d:Q21484199|ostracodologist]]''<br/>''[[:d:Q1662561|paleontologist]]''
|
|
|
| 1983
|
| [[toolforge:scholia/author/Q21392406|0]] / [[toolforge:scholia/author/Q21392406/missing|📖]]
|-
| ''[[:d:Q81511934|Marcelo P. Loewe]]''
|
|
|
|
| 2010
|
| [[toolforge:scholia/author/Q81511934|0]] / [[toolforge:scholia/author/Q81511934/missing|📖]]
|-
| ''[[:d:Q81512201|John E. Lowther]]''
|
|
|
|
| 2005
|
| [[toolforge:scholia/author/Q81512201|0]] / [[toolforge:scholia/author/Q81512201/missing|📖]]
|-
| ''[[:d:Q19519928|Henda C. Swart]]''
| ''[[:d:Q170790|mathematician]]''
|
|
| [https://viaf.org/en/viaf/7895173973184923810009 7895173973184923810009]
| 1996
|
| [[toolforge:scholia/author/Q19519928|0]] / [[toolforge:scholia/author/Q19519928/missing|📖]]
|-
| ''[[:d:Q21394246|William Wardlaw Thompson]]''
| ''[[:d:Q4205432|ichthyologist]]''
|
|
|
|
|
| [[toolforge:scholia/author/Q21394246|0]] / [[toolforge:scholia/author/Q21394246/missing|📖]]
|-
| ''[[:d:Q78629970|Vincent Clifford Moran]]''
|
|
|
|
| 1991
|
| [[toolforge:scholia/author/Q78629970|0]] / [[toolforge:scholia/author/Q78629970/missing|📖]]
|-
| ''[[:d:Q80936790|Paul de Villiers du Plessis]]''
|
|
|
|
| 1993
|
| [[toolforge:scholia/author/Q80936790|0]] / [[toolforge:scholia/author/Q80936790/missing|📖]]
|-
| ''[[:d:Q80937821|Patrick G. Eriksson]]''
| ''[[:d:Q1650915|umcwaningi]]''
|
|
|
| 2010
|
| [[toolforge:scholia/author/Q80937821|0]] / [[toolforge:scholia/author/Q80937821/missing|📖]]
|-
| ''[[:d:Q80938027|Arthur G. Every]]''
|
|
|
|
| 1997
|
| [[toolforge:scholia/author/Q80938027|0]] / [[toolforge:scholia/author/Q80938027/missing|📖]]
|-
| ''[[:d:Q80938181|Melvin Faierman]]''
|
|
|
|
| 1999
|
| [[toolforge:scholia/author/Q80938181|0]] / [[toolforge:scholia/author/Q80938181/missing|📖]]
|-
| ''[[:d:Q43165660|Edward Rybicki]]''
| ''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0001-8024-9911 0000-0001-8024-9911]
|
| [https://viaf.org/en/viaf/8027168049010038410006 8027168049010038410006]
| 2002
|
| [[toolforge:scholia/author/Q43165660|0]] / [[toolforge:scholia/author/Q43165660/missing|📖]]
|-
| ''[[:d:Q15485098|Michael William Feast]]''
| [[Ugqayinyanga]]<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-8908-1630 0000-0002-8908-1630]
|
| [https://viaf.org/en/viaf/34323769 34323769]
| 1982
|
| [[toolforge:scholia/author/Q15485098|0]] / [[toolforge:scholia/author/Q15485098/missing|📖]]
|-
| ''[[:d:Q60610431|Brian R. Allanson]]''
| ''[[:d:Q3640160|marine biologist]]''<br/>''[[:d:Q350979|zoologist]]''<br/>''[[:d:Q3644587|hydrologist]]''
|
|
| [https://viaf.org/en/viaf/45581243 45581243]
| 1968
|
| [[toolforge:scholia/author/Q60610431|1]] / [[toolforge:scholia/author/Q60610431/missing|📖]]
|-
| ''[[:d:Q80939015|John G. Field]]''
| ''[[:d:Q3546255|oceanographer]]''
|
|
|
| 1989
|
| [[toolforge:scholia/author/Q80939015|0]] / [[toolforge:scholia/author/Q80939015/missing|📖]]
|-
| ''[[:d:Q80939244|John S. Field]]''
|
|
|
|
| 1989
|
| [[toolforge:scholia/author/Q80939244|0]] / [[toolforge:scholia/author/Q80939244/missing|📖]]
|-
| ''[[:d:Q80939459|Peter I. Folb]]''
| [[Inyanga (umelaphi)|inyanga]]<br/>''[[:d:Q2114605|pharmacologist]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/10782647 10782647]
| 1998
|
| [[toolforge:scholia/author/Q80939459|0]] / [[toolforge:scholia/author/Q80939459/missing|📖]]
|-
| ''[[:d:Q348933|Isaac Schapera]]''
| ''[[:d:Q4773904|anthropologist]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/108544741 108544741]
|
| [[File:Isaac Schapera, c1950s.jpg|center|128px]]
| [[toolforge:scholia/author/Q348933|0]] / [[toolforge:scholia/author/Q348933/missing|📖]]
|-
| ''[[:d:Q80653014|John D. Comins]]''
|
|
|
|
| 1996
|
| [[toolforge:scholia/author/Q80653014|0]] / [[toolforge:scholia/author/Q80653014/missing|📖]]
|-
| ''[[:d:Q61046038|Pieter Steyn]]''
| ''[[:d:Q593644|chemist]]''
|
|
|
| 1996
|
| [[toolforge:scholia/author/Q61046038|0]] / [[toolforge:scholia/author/Q61046038/missing|📖]]
|-
| ''[[:d:Q61046041|Douglas Butterworth]]''
|
|
|
|
| 2001
|
| [[toolforge:scholia/author/Q61046041|0]] / [[toolforge:scholia/author/Q61046041/missing|📖]]
|-
| ''[[:d:Q61046058|Lionel Opie]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>[[Inyanga (umelaphi)|inyanga]]<br/>''[[:d:Q3264451|cardiologist]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/59161562 59161562]
| 1983
|
| [[toolforge:scholia/author/Q61046058|0]] / [[toolforge:scholia/author/Q61046058/missing|📖]]
|-
| ''[[:d:Q61046066|B. Daya Reddy]]''
| ''[[:d:Q81096|engineer]]''<br/>''[[:d:Q170790|mathematician]]''
| [https://orcid.org/0000-0002-8250-4821 0000-0002-8250-4821]
|
| [https://viaf.org/en/viaf/108617120 108617120]
| 1992
| [[File:Daya Reddy 2018.jpg|center|128px]]
| [[toolforge:scholia/author/Q61046066|0]] / [[toolforge:scholia/author/Q61046066/missing|📖]]
|-
| ''[[:d:Q4819906|Chris Brink]]''
| ''[[:d:Q170790|mathematician]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/62228603 62228603]
| 1995
|
| [[toolforge:scholia/author/Q4819906|0]] / [[toolforge:scholia/author/Q4819906/missing|📖]]
|-
| ''[[:d:Q82533058|Raymond Pollard]]''
|
|
|
|
| 2001
|
| [[toolforge:scholia/author/Q82533058|0]] / [[toolforge:scholia/author/Q82533058/missing|📖]]
|-
| ''[[:d:Q80082536|Brian W. Van Wilgen]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q15839134|ecologist]]''
| [https://orcid.org/0000-0002-1536-7521 0000-0002-1536-7521]
| [https://scholar.google.com/citations?user=5FfLX_4AAAAJ 5FfLX_4AAAAJ]
|
| 2014
|
| [[toolforge:scholia/author/Q80082536|1]] / [[toolforge:scholia/author/Q80082536/missing|📖]]
|-
| ''[[:d:Q71576562|Neil John Coville]]''
| ''[[:d:Q1650915|umcwaningi]]''
|
|
|
| 1997
|
| [[toolforge:scholia/author/Q71576562|0]] / [[toolforge:scholia/author/Q71576562/missing|📖]]
|-
| ''[[:d:Q20831540|Judith Sealy]]''
| ''[[:d:Q3621491|archaeologist]]''
| [https://orcid.org/0000-0001-5071-8211 0000-0001-5071-8211]
| [https://scholar.google.com/citations?user=hjy8MDAAAAAJ hjy8MDAAAAAJ]
| [https://viaf.org/en/viaf/27100360 27100360]
| 2006
|
| [[toolforge:scholia/author/Q20831540|0]] / [[toolforge:scholia/author/Q20831540/missing|📖]]
|-
| ''[[:d:Q80520476|Michael E. Brown]]''
| ''[[:d:Q104693589|chemistry teacher]]''<br/>''[[:d:Q593644|chemist]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
|
| 1988
|
| [[toolforge:scholia/author/Q80520476|0]] / [[toolforge:scholia/author/Q80520476/missing|📖]]
|-
| ''[[:d:Q80521092|Michael N. Bruton]]''
|
|
|
|
| 1992
|
| [[toolforge:scholia/author/Q80521092|0]] / [[toolforge:scholia/author/Q80521092/missing|📖]]
|-
| ''[[:d:Q29052586|Brenda Wingfield]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q3126128|geneticist]]''
| [https://orcid.org/0000-0002-6189-1519 0000-0002-6189-1519]
|
|
| 2007
|
| [[toolforge:scholia/author/Q29052586|1]] / [[toolforge:scholia/author/Q29052586/missing|📖]]
|-
| ''[[:d:Q82539949|Roger E. Raab]]''
| [[umfundindalo]]<br/>''[[:d:Q1622272|university teacher]]''
|
|
|
| 1992
|
| [[toolforge:scholia/author/Q82539949|0]] / [[toolforge:scholia/author/Q82539949/missing|📖]]
|-
| ''[[:d:Q80521586|James R. Bull]]''
|
|
|
|
| 1991
|
| [[toolforge:scholia/author/Q80521586|0]] / [[toolforge:scholia/author/Q80521586/missing|📖]]
|-
| ''[[:d:Q80522068|Mino R. Caira]]''
|
|
|
|
| 2010
|
| [[toolforge:scholia/author/Q80522068|0]] / [[toolforge:scholia/author/Q80522068/missing|📖]]
|-
| ''[[:d:Q79946604|Edward Sturrock]]''
|
|
|
|
| 2006
|
| [[toolforge:scholia/author/Q79946604|0]] / [[toolforge:scholia/author/Q79946604/missing|📖]]
|-
| ''[[:d:Q70720643|Mike Wingfield]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q2487799|mycologist]]''<br/>''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q864503|biologist]]''
| [https://orcid.org/0000-0001-9346-2009 0000-0001-9346-2009]
| [https://scholar.google.com/citations?user=wT4V7isAAAAJ wT4V7isAAAAJ]
| [https://viaf.org/en/viaf/14989035 14989035]<br/>[https://viaf.org/en/viaf/22155914471039401883 22155914471039401883]
| 1998
|
| [[toolforge:scholia/author/Q70720643|0]] / [[toolforge:scholia/author/Q70720643/missing|📖]]
|-
| ''[[:d:Q77803|Selmar Schonland]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q2083925|botanical collector]]''
|
|
| [https://viaf.org/en/viaf/40795045 40795045]
|
| [[File:Schonland Pretoria.jpg|center|128px]]
| [[toolforge:scholia/author/Q77803|1]] / [[toolforge:scholia/author/Q77803/missing|📖]]
|-
| ''[[:d:Q59187857|Douglas E. Rawlings]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-2521-8167 0000-0002-2521-8167]
|
|
| 1993
|
| [[toolforge:scholia/author/Q59187857|0]] / [[toolforge:scholia/author/Q59187857/missing|📖]]
|-
| ''[[:d:Q79660900|Roland Schulze]]''
| ''[[:d:Q3644587|hydrologist]]''
|
|
|
| 1993
|
| [[toolforge:scholia/author/Q79660900|0]] / [[toolforge:scholia/author/Q79660900/missing|📖]]
|-
| ''[[:d:Q52701989|Robin M Crewe]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q3055126|entomologist]]''<br/>''[[:d:Q864503|biologist]]''
| [https://orcid.org/0000-0003-4398-8250 0000-0003-4398-8250]
|
| [https://viaf.org/en/viaf/172379736 172379736]
| 1990
|
| [[toolforge:scholia/author/Q52701989|0]] / [[toolforge:scholia/author/Q52701989/missing|📖]]
|-
| ''[[:d:Q42178276|Renée Kraan-Korteweg]]''
| [[Ugqayinyanga]]
| [https://orcid.org/0000-0002-0202-6250 0000-0002-0202-6250]
|
| [https://viaf.org/en/viaf/272584657 272584657]
| 2012
|
| [[toolforge:scholia/author/Q42178276|1]] / [[toolforge:scholia/author/Q42178276/missing|📖]]
|-
| ''[[:d:Q43188044|Willem Heber van Zyl]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-8195-353X 0000-0001-8195-353X]
|
|
| 2014
|
| [[toolforge:scholia/author/Q43188044|0]] / [[toolforge:scholia/author/Q43188044/missing|📖]]
|-
| ''[[:d:Q60055963|João P. Rodrigues]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-1980-3845 0000-0002-1980-3845]
|
|
| 2005
|
| [[toolforge:scholia/author/Q60055963|0]] / [[toolforge:scholia/author/Q60055963/missing|📖]]
|-
| ''[[:d:Q91052641|John Parkington]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q3621491|archaeologist]]''
| [https://orcid.org/0000-0001-6127-6826 0000-0001-6127-6826]
| [https://scholar.google.com/citations?user=tk-A4MsAAAAJ tk-A4MsAAAAJ]
| [https://viaf.org/en/viaf/36952076 36952076]
|
|
| [[toolforge:scholia/author/Q91052641|11]] / [[toolforge:scholia/author/Q91052641/missing|📖]]
|-
| ''[[:d:Q59624330|Paul R. Manger]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-1881-2854 0000-0002-1881-2854]
|
|
| 2013
|
| [[toolforge:scholia/author/Q59624330|0]] / [[toolforge:scholia/author/Q59624330/missing|📖]]
|-
| ''[[:d:Q76926947|Ronald Harley]]''
| ''[[:d:Q1326886|electrical engineer]]''
|
|
| [https://viaf.org/en/viaf/192970031 192970031]
| 1990
|
| [[toolforge:scholia/author/Q76926947|0]] / [[toolforge:scholia/author/Q76926947/missing|📖]]
|-
| ''[[:d:Q82549683|Laurence J. Robb]]''
|
|
|
|
|
|
| [[toolforge:scholia/author/Q82549683|0]] / [[toolforge:scholia/author/Q82549683/missing|📖]]
|-
| ''[[:d:Q51697828|Kathryn H. Myburgh]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-4501-2120 0000-0003-4501-2120]
| [https://scholar.google.com/citations?user=DXNUiEEAAAAJ DXNUiEEAAAAJ]
| [https://viaf.org/en/viaf/205963403 205963403]
| 2017
|
| [[toolforge:scholia/author/Q51697828|0]] / [[toolforge:scholia/author/Q51697828/missing|📖]]
|-
| ''[[:d:Q23008763|Johann Carl Vogel]]''
| ''[[:d:Q1622272|university teacher]]''<br/>[[umfundindalo]]<br/>''[[:d:Q3621491|archaeologist]]''
|
|
| [https://viaf.org/en/viaf/171593751 171593751]
|
|
| [[toolforge:scholia/author/Q23008763|0]] / [[toolforge:scholia/author/Q23008763/missing|📖]]
|-
| ''[[:d:Q77793537|Horst Helmut Klump]]''
|
|
|
|
| 2000
|
| [[toolforge:scholia/author/Q77793537|0]] / [[toolforge:scholia/author/Q77793537/missing|📖]]
|-
| ''[[:d:Q77793851|Klaus Koch]]''
| ''[[:d:Q593644|chemist]]''
| [https://orcid.org/0000-0003-3845-4406 0000-0003-3845-4406]
|
|
| 2002
|
| [[toolforge:scholia/author/Q77793851|0]] / [[toolforge:scholia/author/Q77793851/missing|📖]]
|-
| ''[[:d:Q82984689|Rudolph J van Aarde]]''
|
|
|
|
| 2004
|
| [[toolforge:scholia/author/Q82984689|0]] / [[toolforge:scholia/author/Q82984689/missing|📖]]
|-
| ''[[:d:Q80533870|Philip Charles]]''
|
|
|
|
| 2008
|
| [[toolforge:scholia/author/Q80533870|0]] / [[toolforge:scholia/author/Q80533870/missing|📖]]
|-
| ''[[:d:Q80534086|Robert W. Charlton]]''
|
|
|
|
| 1991
|
| [[toolforge:scholia/author/Q80534086|0]] / [[toolforge:scholia/author/Q80534086/missing|📖]]
|-
| ''[[:d:Q18685421|Anusuya Chinsamy-Turan]]''
| ''[[:d:Q1662561|paleontologist]]''<br/>''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-9786-5080 0000-0002-9786-5080]
|
| [https://viaf.org/en/viaf/27342603 27342603]
| 2006
| [[File:Anusuya Chinsamy-Turan, West Coast Fossil Park tour.jpg|center|128px]]
| [[toolforge:scholia/author/Q18685421|0]] / [[toolforge:scholia/author/Q18685421/missing|📖]]
|-
| ''[[:d:Q82985262|Jan van den Ende]]''
|
|
|
|
| 1995
|
| [[toolforge:scholia/author/Q82985262|0]] / [[toolforge:scholia/author/Q82985262/missing|📖]]
|-
| ''[[:d:Q82553257|Allen L. Rodgers]]''
|
|
|
|
| 2010
|
| [[toolforge:scholia/author/Q82553257|0]] / [[toolforge:scholia/author/Q82553257/missing|📖]]
|-
| ''[[:d:Q76931737|Manfred Armin Hellberg]]''
|
|
|
|
| 1992
|
| [[toolforge:scholia/author/Q76931737|0]] / [[toolforge:scholia/author/Q76931737/missing|📖]]
|-
| ''[[:d:Q51846346|Renfrew Christie]]''
| ''[[:d:Q134284649|anti-apartheid activist]]''<br/>''[[:d:Q20826540|scholar]]''
|
|
| [https://viaf.org/en/viaf/62928676 62928676]
| 2003
|
| [[toolforge:scholia/author/Q51846346|0]] / [[toolforge:scholia/author/Q51846346/missing|📖]]
|-
| ''[[:d:Q1387629|George F. R. Ellis]]''
| [[umfundindalo]]<br/>''[[:d:Q170790|mathematician]]''<br/>''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q15980158|non-fiction writer]]''<br/>[[Ugqayinyanga]]
| [https://orcid.org/0000-0001-8484-0629 0000-0001-8484-0629]
|
| [https://viaf.org/en/viaf/109637661 109637661]
| 1983
| [[File:George Ellis 0040.jpg|center|128px]]
| [[toolforge:scholia/author/Q1387629|4]] / [[toolforge:scholia/author/Q1387629/missing|📖]]
|-
| ''[[:d:Q83132581|Albertus S. van Jaarsveld]]''
|
|
|
|
| 2005
|
| [[toolforge:scholia/author/Q83132581|0]] / [[toolforge:scholia/author/Q83132581/missing|📖]]
|-
| ''[[:d:Q524221|John Hewitt]]''
| ''[[:d:Q4773904|anthropologist]]''<br/>''[[:d:Q3621491|archaeologist]]''<br/>''[[:d:Q350979|zoologist]]''<br/>''[[:d:Q16271064|herpetologist]]''<br/>''[[:d:Q17344952|arachnologist]]''
|
|
|
|
|
| [[toolforge:scholia/author/Q524221|0]] / [[toolforge:scholia/author/Q524221/missing|📖]]
|-
| ''[[:d:Q58336810|Andrew Cooper]]''
| ''[[:d:Q11424604|earth scientist]]''
| [https://orcid.org/0000-0003-4972-8812 0000-0003-4972-8812]
| [https://scholar.google.com/citations?user=wck4s-UAAAAJ wck4s-UAAAAJ]
| [https://viaf.org/en/viaf/55808460 55808460]
|
|
| [[toolforge:scholia/author/Q58336810|0]] / [[toolforge:scholia/author/Q58336810/missing|📖]]
|-
| ''[[:d:Q83134393|Johan van Zyl]]''
|
|
|
|
| 1997
|
| [[toolforge:scholia/author/Q83134393|0]] / [[toolforge:scholia/author/Q83134393/missing|📖]]
|-
| ''[[:d:Q2976150|John Jackson]]''
| [[Ugqayinyanga]]<br/>''[[:d:Q752129|astrophysicist]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/51317806 51317806]
| 1934
| [[File:JohnJackson(astronomer).jpg|center|128px]]
| [[toolforge:scholia/author/Q2976150|0]] / [[toolforge:scholia/author/Q2976150/missing|📖]]
|-
| ''[[:d:Q22006961|Valerie Mizrahi]]''
| ''[[:d:Q864503|biologist]]''<br/>''[[:d:Q15839206|molecular biologist]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-4824-9115 0000-0003-4824-9115]
|
| [https://viaf.org/en/viaf/8150380426913370197 8150380426913370197]
| 2000
|
| [[toolforge:scholia/author/Q22006961|0]] / [[toolforge:scholia/author/Q22006961/missing|📖]]
|-
| ''[[:d:Q81549700|Adolf Conrad Matthee]]''
|
|
|
|
| 2014
|
| [[toolforge:scholia/author/Q81549700|0]] / [[toolforge:scholia/author/Q81549700/missing|📖]]
|-
| ''[[:d:Q83135813|Morris J. Viljoen]]''
| ''[[:d:Q520549|geologist]]''
|
|
| [https://viaf.org/en/viaf/29202617 29202617]
| 1994
|
| [[toolforge:scholia/author/Q83135813|0]] / [[toolforge:scholia/author/Q83135813/missing|📖]]
|-
| ''[[:d:Q39885100|Aletta E. Schutte]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0001-9217-4937 0000-0001-9217-4937]
| [https://scholar.google.com/citations?user=f1oels0AAAAJ f1oels0AAAAJ]
|
| 2015
|
| [[toolforge:scholia/author/Q39885100|0]] / [[toolforge:scholia/author/Q39885100/missing|📖]]
|-
| ''[[:d:Q5861359|John Patrick Rourke]]''
| ''[[:d:Q2374149|botanist]]''
|
|
| [https://viaf.org/en/viaf/33298739 33298739]
| 1995
|
| [[toolforge:scholia/author/Q5861359|0]] / [[toolforge:scholia/author/Q5861359/missing|📖]]
|-
| ''[[:d:Q83137250|Richard P. Viljoen]]''
|
|
|
|
| 1998
|
| [[toolforge:scholia/author/Q83137250|0]] / [[toolforge:scholia/author/Q83137250/missing|📖]]
|-
| ''[[:d:Q1681675|Jan C. A. Boeyens]]''
| ''[[:d:Q593644|chemist]]''<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/29820137 29820137]
| 1988
|
| [[toolforge:scholia/author/Q1681675|0]] / [[toolforge:scholia/author/Q1681675/missing|📖]]
|-
| ''[[:d:Q96489|Achim Richter]]''
| ''[[:d:Q16742096|nuclear physicist]]''<br/>''[[:d:Q1622272|university teacher]]''<br/>[[umfundindalo]]
|
| [https://scholar.google.com/citations?user=WU_HsKkAAAAJ WU_HsKkAAAAJ]
| [https://viaf.org/en/viaf/232819266 232819266]
|
|
| [[toolforge:scholia/author/Q96489|0]] / [[toolforge:scholia/author/Q96489/missing|📖]]
|-
| ''[[:d:Q1971138|Mary Agard Pocock]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q12358881|phycologist]]''<br/>''[[:d:Q11900058|explorer]]''<br/>''[[:d:Q3148760|botanical illustrator]]''<br/>[[UMfundisi]]<br/>''[[:d:Q2083925|botanical collector]]''<br/>''[[:d:Q98544732|scientific collector]]''
|
|
| [https://viaf.org/en/viaf/16153470956745082416 16153470956745082416]
|
|
| [[toolforge:scholia/author/Q1971138|1]] / [[toolforge:scholia/author/Q1971138/missing|📖]]
|-
| ''[[:d:Q25615160|Paul Daniel Hahn]]''
| ''[[:d:Q593644|chemist]]''<br/>''[[:d:Q5428874|academic staff]]''
|
|
|
|
| [[File:Prof Paul Daniel Hahn.jpg|center|128px]]
| [[toolforge:scholia/author/Q25615160|0]] / [[toolforge:scholia/author/Q25615160/missing|📖]]
|-
| ''[[:d:Q38304462|Robert P. Millar]]''
| ''[[:d:Q2919046|biochemist]]''<br/>''[[:d:Q350979|zoologist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0003-3606-2708 0000-0003-3606-2708]
|
| [https://viaf.org/en/viaf/94387090 94387090]
| 2008
|
| [[toolforge:scholia/author/Q38304462|0]] / [[toolforge:scholia/author/Q38304462/missing|📖]]
|-
| ''[[:d:Q38305842|Wayne M. Getz]]''
| ''[[:d:Q170790|mathematician]]''<br/>''[[:d:Q864503|biologist]]''<br/>''[[:d:Q12765408|epidemiologist]]''<br/>''[[:d:Q3055126|entomologist]]''<br/>''[[:d:Q61791734|biomathematician]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0001-8784-9354 0000-0001-8784-9354]
|
| [https://viaf.org/en/viaf/93683896 93683896]
| 2003
|
| [[toolforge:scholia/author/Q38305842|0]] / [[toolforge:scholia/author/Q38305842/missing|📖]]
|-
| ''[[:d:Q81701088|Terence S. McCarthy]]''
| ''[[:d:Q520549|geologist]]''
|
| [https://scholar.google.com/citations?user=8nW-dTkAAAAJ 8nW-dTkAAAAJ]
| [https://viaf.org/en/viaf/11612688 11612688]<br/>[https://viaf.org/en/viaf/65534637 65534637]
| 1994
|
| [[toolforge:scholia/author/Q81701088|0]] / [[toolforge:scholia/author/Q81701088/missing|📖]]
|-
| ''[[:d:Q63391519|Sunil D. Maharaj]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0002-1967-2849 0000-0002-1967-2849]
|
|
| 2011
|
| [[toolforge:scholia/author/Q63391519|0]] / [[toolforge:scholia/author/Q63391519/missing|📖]]
|-
| ''[[:d:Q81701559|Anton McLachlan]]''
|
|
|
|
| 1992
|
| [[toolforge:scholia/author/Q81701559|0]] / [[toolforge:scholia/author/Q81701559/missing|📖]]
|-
| ''[[:d:Q43496916|Michael J. Samways]]''
| ''[[:d:Q3055126|entomologist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0003-4237-6025 0000-0003-4237-6025]
|
| [https://viaf.org/en/viaf/94489949 94489949]
| 1999
|
| [[toolforge:scholia/author/Q43496916|1]] / [[toolforge:scholia/author/Q43496916/missing|📖]]
|-
| ''[[:d:Q40902255|Julia Lee-Thorp]]''
| ''[[:d:Q3621491|archaeologist]]''<br/>''[[:d:Q1622272|university teacher]]''
| [https://orcid.org/0000-0002-3291-0258 0000-0002-3291-0258]
|
| [https://viaf.org/en/viaf/36637061 36637061]
| 2004
|
| [[toolforge:scholia/author/Q40902255|0]] / [[toolforge:scholia/author/Q40902255/missing|📖]]
|-
| ''[[:d:Q28648152|Martin P. Hill]]''
| ''[[:d:Q3055126|entomologist]]''<br/>''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-0579-5298 0000-0003-0579-5298]
| [https://scholar.google.com/citations?user=GKGAgoUAAAAJ GKGAgoUAAAAJ]
|
| 2016
|
| [[toolforge:scholia/author/Q28648152|0]] / [[toolforge:scholia/author/Q28648152/missing|📖]]
|-
| ''[[:d:Q81702755|David S. McLachlan]]''
|
| [https://orcid.org/0000-0002-1560-1293 0000-0002-1560-1293]
|
|
| 1997
|
| [[toolforge:scholia/author/Q81702755|0]] / [[toolforge:scholia/author/Q81702755/missing|📖]]
|-
| ''[[:d:Q81702888|Chrisopher D. McQuaid]]''
|
|
|
|
| 1999
|
| [[toolforge:scholia/author/Q81702888|0]] / [[toolforge:scholia/author/Q81702888/missing|📖]]
|-
| ''[[:d:Q55175748|Helder M. Marques]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q593644|chemist]]''
| [https://orcid.org/0000-0003-1675-3835 0000-0003-1675-3835]
|
|
| 2004
|
| [[toolforge:scholia/author/Q55175748|0]] / [[toolforge:scholia/author/Q55175748/missing|📖]]
|-
| ''[[:d:Q63764|Harriet Margaret Louisa Bolus]]''
| ''[[:d:Q2374149|botanist]]''<br/>''[[:d:Q2083925|botanical collector]]''<br/>''[[:d:Q19507792|scientific illustrator]]''<br/>''[[:d:Q674426|curator]]''<br/>''[[:d:Q1907198|taxonomist]]''<br/>''[[:d:Q98544732|scientific collector]]''
|
|
| [https://viaf.org/en/viaf/171765397 171765397]
|
| [[File:Harriet Margaret Louisa Bolus.jpg|center|128px]]
| [[toolforge:scholia/author/Q63764|1]] / [[toolforge:scholia/author/Q63764/missing|📖]]
|-
| ''[[:d:Q64835914|Karl Schilcher]]''
| [[umfundindalo]]<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/59603504 59603504]
| 2012
|
| [[toolforge:scholia/author/Q64835914|0]] / [[toolforge:scholia/author/Q64835914/missing|📖]]
|-
| ''[[:d:Q69449514|Mary Scholes]]''
| ''[[:d:Q1650915|umcwaningi]]''<br/>''[[:d:Q60244908|plant physiologist]]''
| [https://orcid.org/0000-0001-5762-9537 0000-0001-5762-9537]
| [https://scholar.google.com/citations?user=qNlkIIMAAAAJ qNlkIIMAAAAJ]
| [https://viaf.org/en/viaf/177145857889223021078 177145857889223021078]
| 2003
|
| [[toolforge:scholia/author/Q69449514|0]] / [[toolforge:scholia/author/Q69449514/missing|📖]]
|-
| ''[[:d:Q48256805|Gordon D Brown]]''
| ''[[:d:Q1650915|umcwaningi]]''
| [https://orcid.org/0000-0003-4922-936X 0000-0003-4922-936X]
|
|
| 2012
|
| [[toolforge:scholia/author/Q48256805|0]] / [[toolforge:scholia/author/Q48256805/missing|📖]]
|-
| ''[[:d:Q42778663|Robert J. Scholes]]''
| ''[[:d:Q15839134|ecologist]]''<br/>''[[:d:Q1622272|university teacher]]''<br/>''[[:d:Q2374149|botanist]]''
| [https://orcid.org/0000-0001-5537-6935 0000-0001-5537-6935]
| [https://scholar.google.com/citations?user=WR7VpKUAAAAJ WR7VpKUAAAAJ]
| [https://viaf.org/en/viaf/71468733 71468733]
| 1999
|
| [[toolforge:scholia/author/Q42778663|0]] / [[toolforge:scholia/author/Q42778663/missing|📖]]
|-
| ''[[:d:Q20721396|Anna-Lise Williamson]]''
| ''[[:d:Q15634281|virologist]]''
| [https://orcid.org/0000-0002-5467-1200 0000-0002-5467-1200]
|
|
| 2005
|
| [[toolforge:scholia/author/Q20721396|0]] / [[toolforge:scholia/author/Q20721396/missing|📖]]
|-
| ''[[:d:Q81707103|Barry V. Mendelow]]''
|
|
|
|
| 1995
|
| [[toolforge:scholia/author/Q81707103|0]] / [[toolforge:scholia/author/Q81707103/missing|📖]]
|-
| ''[[:d:Q37736202|John Morrison]]''
| ''[[:d:Q170790|mathematician]]''<br/>[[umfundindalo]]<br/>''[[:d:Q1622272|university teacher]]''
|
|
| [https://viaf.org/en/viaf/3862173124540430300008 3862173124540430300008]
|
|
| [[toolforge:scholia/author/Q37736202|0]] / [[toolforge:scholia/author/Q37736202/missing|📖]]
|-
| ''[[:d:Q83150510|Anthony D. M. Walker]]''
|
|
|
|
| 1988
|
| [[toolforge:scholia/author/Q83150510|0]] / [[toolforge:scholia/author/Q83150510/missing|📖]]
|-
| ''[[:d:Q79402317|Otto Walter Prozesky]]''
|
|
|
|
| 1989
|
| [[toolforge:scholia/author/Q79402317|0]] / [[toolforge:scholia/author/Q79402317/missing|📖]]
|-
| ''[[:d:Q83150751|Heribert Weigert]]''
|
|
|
|
| 2015
|
| [[toolforge:scholia/author/Q83150751|0]] / [[toolforge:scholia/author/Q83150751/missing|📖]]
|-
| ''[[:d:Q80700386|Lesley A. Cornish]]''
|
|
|
|
| 2009
|
| [[toolforge:scholia/author/Q80700386|0]] / [[toolforge:scholia/author/Q80700386/missing|📖]]
|-
| ''[[:d:Q12364088|Hugh Paterson]]''
| ''[[:d:Q3055126|entomologist]]''<br/>''[[:d:Q16063497|evolutionary biologist]]''
|
|
| [https://viaf.org/en/viaf/35854115 35854115]
| 1980
|
| [[toolforge:scholia/author/Q12364088|0]] / [[toolforge:scholia/author/Q12364088/missing|📖]]
|-
| ''[[:d:Q42784019|Kevin J. Naidoo]]''
| ''[[:d:Q593644|chemist]]''
| [https://orcid.org/0000-0002-9898-3708 0000-0002-9898-3708]
|
| [https://viaf.org/en/viaf/65994373 65994373]
| 2015
|
| [[toolforge:scholia/author/Q42784019|0]] / [[toolforge:scholia/author/Q42784019/missing|📖]]
|-
| ''[[:d:Q57777886|Michael Meadows]]''
| ''[[:d:Q2560911|physical geographer]]''<br/>''[[:d:Q333634|umhumushi]]''
| [https://orcid.org/0000-0001-8322-3055 0000-0001-8322-3055]
| [https://scholar.google.com/citations?user=EufqPQMAAAAJ EufqPQMAAAAJ]
| [https://viaf.org/en/viaf/78996 78996]
| 2015
|
| [[toolforge:scholia/author/Q57777886|0]] / [[toolforge:scholia/author/Q57777886/missing|📖]]
|}
{{Wikidata list end}}
az7tsob8o40h76pibf6flw4n14e0m5f
Module:Location map
828
13435
126080
117985
2026-07-15T10:23:44Z
Fongcwele
16873
126080
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('The name of the location map definition to use must be specified', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error(string.format('%q is not a valid name for a location map definition', map), 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'Module:Location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
else
error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2)
end
end
function p.data(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2)
elseif minutes then
error('Minutes can only be provided with DMS degrees for ' .. direction, 2)
elseif seconds then
error('Seconds can only be provided with DMS degrees for ' .. direction, 2)
elseif hemisphere then
error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not minutes then
error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2)
elseif not degrees then
if minutes then
error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2)
elseif hemisphere then
error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2)
elseif minutes and not tonumber(minutes) then
error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not tonumber(seconds) then
error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>')
if lat then
return tonumber(para == 'longitude' and long or lat)
end
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]')
if para == 'longitude' then result = {result[3], result[4]} end
if not tonumber(result[1]) or not result[2] then
mw.log('Malformed coordinates value')
mw.logObject(para, 'para')
mw.logObject(coord, 'coord')
return error('Malformed coordinates value', 2)
end
return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief then
local digits = mw.ustring.match(args.relief,'^[1-9][0-9]?$') or '1' -- image1 to image99
if map('image' .. digits) ~= '' then
return map('image' .. digits)
end
end
return map('image')
end
function p.top(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local width
local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*"))
if not args.width then
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
if width_as_number == 0 then
-- check to see if width is junk. If it is, then use default calculation
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
end
if args.max_width ~= "" and args.max_width ~= nil then
-- check to see if width bigger than max_width
local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0;
if width_as_number>max_as_number and max_as_number>0 then
width = args.max_width;
end
end
local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}}
if args.float == 'center' then
retval = retval .. '<div class="center">'
end
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="locmap noresize thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'floatleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'floatright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
local currentTitle = mw.title.getCurrentTitle()
retval = string.format(
'%s[[File:%s|%spx|%s%s|class=notpageimage noviewer]]',
retval,
image,
width,
args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.caption and args.caption ~= '' then
if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then
retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]'
end
end
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage noviewer]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
local currentTitle = mw.title.getCurrentTitle()
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div style="padding-top:0.2em">'
else
retval = retval .. '<div style="font-size:91%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('Removed parameter caption_undefined used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]'
end
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log('Removed parameter used in map definition ' .. map())
if currentTitle.namespace == 0 then
local key = (map('skew') ~= '' and 'skew' or '') ..
(map('lat_skew') ~= '' and 'lat_skew' or '') ..
(map('crosses180') ~= '' and 'crosses180' or '') ..
(map('type') ~= '' and 'type' or '')
retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]'
end
end
if string.find(map('name'), '|', 1, true) then
mw.log('Pipe used in name of map definition ' .. map())
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with a name containing a pipe]]'
end
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv, label_size)
return mw.html.create('div')
:addClass('od')
:addClass('notheme') -- T236137
:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%;font-size:' .. label_size .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:addClass('id')
:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage noviewer]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):addClass('l0'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
if position == 'top' then -- specified top
builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'bottom' then -- specified bottom
builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:addClass('pl'):cssText('right:' .. distance .. 'px')
else -- specified right or autodetected to right
builder:addClass('pr'):cssText('left:' .. distance .. 'px')
end
builder = builder:tag('div')
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map~'})
end
local mapnames = {}
if not map then
if args[1] then
map = {}
for mapname in mw.text.gsplit(args[1], '#', true) do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
mapnames[#mapnames + 1] = mapname
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
args[1] = 'World'
end
end
if type(map) == 'table' then
local outputs = {}
local oldargs = args[1]
for k,v in ipairs(map) do
args[1] = mapnames[k]
outputs[k] = tostring(p.mark(frame, args, v))
end
args[1] = oldargs
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.excludefrom then
-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
-- Check if this map is excluded. If so, return an empty string.
if args[1] == exclusionmap then
return ''
end
end
end
local builder = mw.html.create()
local currentTitle = mw.title.getCurrentTitle()
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
if args.link and (currentTitle.namespace == 0) then
builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]')
end
end
if not longitude then
error('No value was provided for longitude')
elseif not latitude then
error('No value was provided for latitude')
end
if currentTitle.namespace > 0 then
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]')
end
end
if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('Removed parameter used in invocation.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = (args.skew and 'skew' or '') ..
(args.lon_shift and 'lon_shift' or '') ..
(args.markhigh and 'markhigh' or '')
builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]')
end
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = currentTitle.prefixedText
builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]')
end
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local label_size = args.label_size or 91
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, label_size, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv, label_size))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.infobox_pushpin_map(frame)
--This function is designed to be invoked from an infobox template
--* Some parameters (generally starting with "pushpin_") are meant to be exposed as parameters
-- in the outer infobox, settable by editors
--* Others are meant to be "hidden" (e.g., only set inside the infobox template code)
-- First get the combined arguments from both parent and invocation frame
local raw_args = getArgs(frame)
--If no map is supplied, return.
if not raw_args['pushpin_map'] then
return
end
--If no coordinates supplied, return.
if not raw_args['coordinates'] then
return
end
-- Now get arguments from just the invocation frame
local frame_args = getArgs(frame,{frameOnly=true})
-- parsed_args will have the resulting merged parameters
local parsed_args = {}
-- Parse the arguments
parsed_args[1] = raw_args['pushpin_map']
parsed_args.float = frame_args.float or 'center'
parsed_args.border = frame_args.border or 'infobox'
parsed_args.default_width = frame_args.default_width
parsed_args.max_width = frame_args.max_width
parsed_args.coordinates = raw_args['coordinates']
parsed_args.caption = raw_args['pushpin_caption']
parsed_args.relief = raw_args['pushpin_relief']
parsed_args.label = raw_args['pushpin_label']
parsed_args.label_size = raw_args['pushpin_label_size']
parsed_args.position = raw_args['pushpin_label_position']
parsed_args.mark = raw_args['pushpin_mark']
parsed_args.marksize = raw_args['pushpin_mark_size']
parsed_args.alt = raw_args['pushpin_alt']
parsed_args.background = raw_args['pushpin_background']
parsed_args.width = raw_args['pushpin_map_size']
local map = {}
local caption_list = {}
for mapname in string.gmatch(parsed_args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if parsed_args['caption'] then
for caption in mw.text.gsplit(parsed_args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
if #map == 1 then
map = map[1]
if not parsed_args.caption then
parsed_args.caption = 'Location within ' .. map('name')
end
end
if type(map) == 'table' then
mw.log('----')
mw.logObject(map)
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
elseif not parsed_args.caption then
-- Set a default caption for each of the multiple maps
for i=1, #map do
caption_list[#caption_list + 1] = 'Location within '.. map[i]('name')
end
end
local outputs = {}
parsed_args.autoSwitcherLabel = true
for k,v in ipairs(map) do
parsed_args.caption = caption_list[k]
outputs[k] = p.main(frame, parsed_args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, parsed_args, map) .. tostring( p.mark(frame, parsed_args, map) ) .. p.bottom(frame, parsed_args, map)
end
end
function p.main(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc})
end
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
cpcmh096iw3rqpvhf6kk0zdva3ovzd5
Template:Location map Khongo-Brazzaville
10
14817
126067
65565
2026-07-14T22:21:03Z
Milenioscuro
6214
126067
wikitext
text/x-wiki
{{#switch:{{{1}}}
| name = Khongo-Brazzaville
| top = 3.736
| bottom = -5.76
| left = 10.29
| right = 19.126
| image = Congo adm location map.svg
| image1 = Congo physical map.svg
}}<noinclude>
{{Location map/Info}}
{{Documentation}}
[[Category:Location map by country templates|IKhongo-Brazzaville]]
</noinclude>
skey6ef6mtma2aekrzk4ebb0lwnyohk
Template:Location map Eritrea
10
17092
126070
69873
2026-07-15T04:23:03Z
Milenioscuro
6214
126070
wikitext
text/x-wiki
{{#switch:{{{1}}}
| name = I-Eritrea
| top = 18.4
| bottom = 12.0
| left = 36.0
| right = 43.8
| image = Eritrea adm location map.svg
| image1 = Eritrea relief location map.svg
}}<noinclude>
{{Location map/Info}}
{{Documentation}}
[[Category:Location map by country templates|I-Eritrea]]
</noinclude>
ryemt5vw77keske13z633txmei1r5wv
Module:Infobox
828
18175
126076
72231
2026-07-15T08:39:31Z
Fongcwele
16873
126076
Scribunto
text/plain
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local yesno = require("Module:Yesno")
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
local function isUntitledChildBox(sval)
return sval and ( sval:match( '^%s*<%s*[Tt][Rr]' ) or sval:match( '^%s*\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127%s*<%s*[Tt][Rr]' ) )
end
local function fixChildBoxes(sval, tt)
local function notempty( s ) return s and s:match( '%S' ) end
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
-- start moving templatestyles and categories inside of table rows
local slast = ''
while slast ~= s do
slast = s
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
end
-- end moving templatestyles and categories inside of table rows
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- [[Special:Diff/849054481]]
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
-- Cleans empty tables
local function cleanInfobox()
root = tostring(root)
if has_rows == false then
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
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)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
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 and rowArgs.header ~= '_BLANK_' then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })
root
:tag('tr')
:addClass(rowArgs.rowclass)
:addClass( isUntitledChildBox( rowArgs.header ) and 'infobox-hiddenrow' or nil )
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '2')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data and not yesno(args.decat) then
root:wikitext(
'[[Category:Pages using infobox templates with ignored data cells]]'
)
end
elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class })
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
-- @deprecated next; target .infobox-<name> .infobox-label
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
else
row:addClass( isUntitledChildBox( rowArgs.data ) and 'infobox-hiddenrow' or nil )
end
local dataCell = row:tag('td')
dataCell
:attr('colspan', not rowArgs.label and '2' or nil)
:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox(-full)-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
else
table.insert(empty_row_categories, rowArgs.data or '')
end
end
local function renderTitle()
if not args.title then return end
has_rows = true
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_rows = true
has_list_class({ args.aboveclass })
root
:tag('tr')
:addClass( isUntitledChildBox( args.above ) and 'infobox-hiddenrow' or nil )
:tag('th')
:attr('colspan', '2')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
has_rows = true
has_list_class({ args.belowclass })
root
:tag('tr')
:addClass( isUntitledChildBox( args.below ) and 'infobox-hiddenrow' or nil )
:tag('td')
:attr('colspan', '2')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function addSubheaderRow(subheaderArgs)
if subheaderArgs.data and
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
row:addClass( isUntitledChildBox( subheaderArgs.data ) and 'infobox-hiddenrow' or nil )
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
else
table.insert(empty_row_categories, subheaderArgs.data or '')
end
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 imageArgs.data and
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ imageArgs.rowclass, imageArgs.class })
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
row:addClass( isUntitledChildBox( imageArgs.data ) and 'infobox-hiddenrow' or nil )
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:wikitext(fixChildBoxes(imageArgs.data, 'td'))
else
table.insert(empty_row_categories, imageArgs.data or '')
end
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
-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
if not args.autoheaders then return end
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and
args['data' .. tostring(num)]:gsub(
category_in_empty_row_pattern, ''
):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
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'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
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
has_rows = true
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
: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
-- Categories in otherwise empty rows are collected in empty_row_categories.
-- This function adds them to the module output. It is not affected by
-- args.decat because this module should not prevent module-external categories
-- from rendering.
local function renderEmptyRowCategories()
for _, s in ipairs(empty_row_categories) do
root:wikitext(s)
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
if yesno(args.decat) then return end
if args.child == 'yes' then
if args.title then
root:wikitext(
'[[Category:Pages using embedded infobox templates with the title parameter]]'
)
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
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()
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
has_list_class({ args.bodyclass })
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
structure_infobox_common()
return loadTemplateStyles() .. 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 = 1 -- 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)
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)
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('autoheaders')
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')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
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')
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)
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
kueb5p6xeoq6x7bxu2zyyl7pmxgesrs
Impango yasePhalaphala yangowezi-2020
0
30687
126082
104052
2026-07-15T10:26:42Z
Fongcwele
16873
126082
wikitext
text/x-wiki
{{Infobox event
| image =
| date = 9 February 2020
| location = Epulazini lasePhala Phala lezinyamazane
| motive = Ukuphangwa
| outcome = Kwebiwa isamba semali engaziwa
}}
'''Ukuphangwa ePhalaPhala ngowezi-2020''' noma '''impango yasePhalaphala yowezi-2020''' kwaba ukugqekezwa kwepulazi elisisulu likaMengameli waseNingizimu Afrika [[Cyril Ramaphosa|uCyril Ramaphosa]] iPhalaPhala ngaseBela [[IBela-Bela|-Bela]], [[ILimpopo|eLimpopo]], [[IRiphabhuliki yaseNingizimu Afrika|eNingizimu Afrika]].<ref>{{Cite web |last=Sadike |first=Mashudu |title=Cyril Ramaphosa denies involvement in crime after R60m stolen from his Phala Phala farm |url=https://www.iol.co.za/pretoria-news/news/cyril-ramaphosa-denies-involvement-in-crime-after-r60m-stolen-from-his-phala-phala-farm-12a87167-b949-47c1-ac32-34f82d475d1c |access-date=2022-06-08 |website=www.iol.co.za |language=en}}</ref><ref>{{Cite web |last=Davis |first=Rebecca |date=2022-06-07 |title=SPIES R US EXPLAINER: Unpacking the Cyril Ramaphosa home robbery story, and why you should care |url=https://www.dailymaverick.co.za/article/2022-06-08-unpacking-the-cyril-ramaphosa-home-robbery-story-and-why-you-should-care/ |access-date=2022-06-08 |website=Daily Maverick |language=en}}</ref><ref>{{Cite web |last=Ndenze |first=Babalo |title=Cele: Presidential Protection Unit head knew about robbery at Ramaphosa farm |url=https://ewn.co.za/2022/06/07/cele-presidential-protection-unit-head-knew-about-robbery-at-ramaphosa-farm |access-date=2022-06-08 |website=ewn.co.za |language=en-US}}</ref> Lesigameko senzeka mhla ziyi-9 kuNhlolanja 2020 lapho okwebiwa khona isamba semali esingaziwa. UMnumzane Arthur Fraser, owangumphathi-jikelele womnyango wokuhlumeleliswa kwesimilo namajele wathi kwebiwa imali engamadola waseMelika ayizigidi ezi-4 (izigidi ezingama-60 zamarandi aseNingizimu afrika) eyayingabikiwe ukuthi ikuleli.<ref>{{Cite web |title=Hawks take over the probe into the burglary at Ramaphosa's game farm |url=https://www.businesslive.co.za/amp/bd/national/2022-06-07-hawks-take-over-the-probe-into-the-burglary-at-ramaphosas-game-farm/ |access-date=2022-06-08 |website=BusinessLIVE |language=en-ZA}}</ref><ref>{{Cite web |date=2022-06-07 |title=Ramaphosa to appear before ANC after farm robbery |url=https://www.moneyweb.co.za/news/south-africa/ramaphosa-to-appear-before-anc-after-farm-robbery/ |access-date=2022-06-08 |website=Moneyweb |language=en}}</ref><ref>{{Cite web |title=Ramaphosa Farm Theft. Give police space to investigate: Cele |url=https://www.enca.com/news/ramaphosa-farm-theft-give-police-space-investigate-cele |access-date=2022-06-08 |website=www.enca.com |language=en |archive-date=2022-06-17 |archive-url=https://web.archive.org/web/20220617003022/https://www.enca.com/news/ramaphosa-farm-theft-give-police-space-investigate-cele |dead-url=yes }}</ref> Kodwa, imibiko eyalandela yakhomba ukuthi imali eyebiwe kwakungamadola ayisamba esingama- $580 000<ref>[https://www.news24.com/news24/investigations/phala-phala-mystery-sudanese-businessman-paid-580-000-to-ramaphosas-farmhand-45-days-before-theft-20220906-2]</ref> URamaphosa waphika wama- ngekhanda,<ref name="guardianLegalAction">[https://www.theguardian.com/world/2022/dec/03/south-africa-president-to-mount-legal-action-in-face-of-impeachment-threat-cyril-ramaphosa]</ref> futhi wathi uzodlulisa umbiko wethimba eliqokwe iphalemende ukuze ubuyekezwe ngokomthetho. Lombiko wakhululwa ngowezi-2022 futhi wamsola "ngokungaziphathi ngendlela efanele isikhundla sakhe." <ref name="guardianLegalAction"/>
== uMongo ==
Mhla zilu-1 kuNhlaba 2022, lowo oyengumphathi-jikelele wezokuVikelwa komBuso, uArthur Fraser,<ref>{{Cite web |date=2022-06-15 |title=Furore over a theft bedevils the ANC |url=https://www.moneyweb.co.za/news/south-africa/furore-over-a-theft-bedevils-the-anc/ |access-date=2022-06-15 |website=Moneyweb |language=en}}</ref> wafaka isimangalo secala ngokumelene no-Cyril Ramaphosa ngokuphazamisa ingalo yomthetho ngokuthi ephule UMthetho wokuvinjwa kobuGebengu obuhleliwe wangowe-1998, kanye nomthetho wokuvinjwa kwezenzo zokukhwabanisa wongowezi-2004.<ref name="Daniels">{{Cite web |last=Daniels |first=Nicola |title=Sars, Reserve Bank mum on Ramaphosa's farmgate |url=https://www.iol.co.za/capetimes/news/sars-reserve-bank-mum-on-ramaphosas-farmgate-f16ce460-5b8a-4e70-9c71-8d5706f757c4 |access-date=2022-06-15 |website=www.iol.co.za |language=en}}</ref> Isimangalo sika-Fraser saveza ukuthi isamba samadola ayizigidi ezi-4 (ezilingana namarandi ayizigidi ezingama-62)<ref name=":1">{{Cite web |last=Haffajee |first=Ferial |date=2022-06-02 |title=SPIES R US: Why Ramaphosa (apparently) kept mum about multimillion-dollar robbery at his farm |url=https://www.dailymaverick.co.za/article/2022-06-02-why-ramaphosa-apparently-kept-mum-about-multimillion-dollar-robbery-at-his-farm/ |access-date=2022-06-15 |website=Daily Maverick |language=en}}</ref> eyayigxishwe ngaphakathi kosofa zebiwa emzini ka-Ramaphosa osepulazini elisePhalaPhala elikumkhandlu wesifunda i-Waterberg ,<ref>{{Cite web |last=Gerber |first=Jan |title=ANC does not want to 'interfere' with investigations into 'Rama-Phala Phala' |url=https://www.news24.com/news24/southafrica/politics/anc-does-not-want-to-interfere-with-investigations-into-rama-phala-phala-20220615-2 |access-date=2022-06-15 |website=News24 |language=en-US}}</ref> “cishe" ngomhla ziyi-9 kuNhlolanja 2020.<ref name=":0">{{Cite web |last=O’Regan |first=Victoria |date=2022-06-12 |title=SPIES R US: Ramaphosa's Farmgate scandal – a timeline of what we know (and don't know) so far |url=https://www.dailymaverick.co.za/article/2022-06-12-ramaphosas-farmgate-scandal-a-timeline-of-what-we-know-and-dont-know-so-far/ |access-date=2022-06-15 |website=Daily Maverick |language=en}}</ref> Saqhubeka saveza nokuthi [[Umongameli waseNingizimu Afrika|umengameli]] akawabikelanga amaphoyisa ngalobulelesi nokuthi ukuba khona kwesamba esikhulu salenkece yangaphandle kwakungabikiwe kwibhangengodla ngokulandela umthetho. Isimangalo sikaFraser saveza nokuthi abasolwa abahileleke ekwebeni bathunjwa ukuze bayohlonywa ngemibuzo.<ref name="Daniels" /> epulazini<ref>{{Cite web |last=Bhengu |first=Cebelihle |date=15 June 2022 |title='We have sides hidden under a mattress. It's a steal' — Nando's throws jab at Ramaphosa's 'farmgate' scandal |url=https://www.timeslive.co.za/news/south-africa/2022-06-15-we-have-sides-hidden-under-a-mattress-its-a-steal-nandos-throws-jab-at-ramaphosas-farmgate-scandal/ |access-date=2022-06-15 |website=TimesLIVE |language=en-ZA}}</ref> futhi bakhokhelwa ukuba bangasithi vo! nakancane kunoma ubani lesehlakalo.<ref name=":1" /> Abasemagunyeni eNamibiya bahlonza abasolwa ababandakanyeka ekwebeni lungakaziwa loludaba kodwa baluthalalisa emva kwezicelo zezingede zokuvikela zaseNingizimu afrika..<ref>{{Cite web |title=Ramaphosa 'Farmgate': What we know, what we don't know and why you should care |url=https://www.msn.com/en-za/news/other/ramaphosa-farmgate-what-we-know-what-we-don-t-know-and-why-you-should-care/ar-AAYjlfL |access-date=2022-06-15 |website=MSN |language=en-ZA}}</ref>
Imithombo eseduze nomengameli yona yaveza ukuthi nakuba ukwebiwa kwemali kwenzeka epulazini, isamba semali esibandakanyekayo sasiphansi kunaleso esivezwa uFraser nokuthi yonke leyomali yazuzwa ngokusemthethweni kolundela ukudayiswa kwezinkomo zama-ankole.<ref name=":1" /> URamaposa wathi akasibikanga lesigameko sokweba ukuze agweme ukuba imbangela yokuyaluza emphakathini wabalimi kodwa kunalokho kwaba ngcono ukuba abophiko labalindi bakamongameli kube yibo abaphenya lesehlakalo sokweba.<ref name=":1" />
== Ukugqekezwa okusolwayo kwangowezi-2020 ==
Kusuka ezinsolweni nasemacaleni avulwa ngu-Arthur Fraser, nazi izehlakalo ezenzeka: umsebenzi wasendlini oqashwe epulazini ePhala Phala wavubukula inkece yangaphandle kwezwe ithukuswe empahleni yasendlini.<ref name="ST01">{{Cite news |last1=Jika |first1=Thanduxolo |last2=Makinana |first2=Andisiwe |last3=Nombembe |first3=Philani |date=5 June 2022 |title=Did the president break the law? |pages=1–5 |work=Sunday Times (South Africa)}}</ref> Lomsebenzi ube hlala ngaphandle kwepulazi emzini wase-Cyferskyl.<ref name=ST01/> Kunesibalo esikhulu sabantu baseNamibiya esihlala kulomuzi futhi badabuka kulabo ababelwa besohlangothini loMbutho wezokuVikela wasNingizimu Afrika ngesikhathi seMpi yaseNingizimu Afrika yaseMgceleni bagcina sebehlala kuleli ngemuva konyaka we-1989.<ref name=ST01/> Waxoxa ngakutholile nabanye bomakhelwane bakhe abamxhumanisa nabanye abantu baseNamibiya abahlala [[IKapa|eKapa]], abangamsiza.<ref name=ST01/> Ukugqekezwa kwenzeka ngobusuku bukaNhlolanja 9 2020, ngehora le-10. U-Fraser uthi sonke lesenzakalo saqoshwa uhlelo lwe-CCTV.<ref name=ST01/> Abagqekezi ekuqaleni bagqekeza bangena egumbini okungelona futhi kwadingeka basizwe ngomsebenzi wasendlini ukuba hate egumbini elifanele.<ref name=ST01/> Emva kokugqekezwa, khona babalekela eKapa.<ref name=ST01/> Lapho kutholakala ukuthi kugqekeziwe, inhloko yophiko lwezoVikelwa kukaMongameli uJenene-nduna u-Wally Rhoode kuthiwa wabandkanyeka, eyalezwe nguMengameli Cyril Ramaphosa ukuba aphenye.<ref name=ST01/> Ekugcineni abasolwa batholwa eKapa ngemuva kokuhlonywa ngemibuzo lomsebenzi wasendlini nasekuhlolweni kukamakhalekhikhini wakhe ukuba awunayo yini imiyalezo nabagqekezi.<ref name=ST01/> eKapa, abagqekezi bashintsha inkece yangaphandle kwaba ngamaRandi waseNingizimu Afrika endaweni yokuNana imali yamaShayina.<ref>{{Cite web |last=Daniels |first=Nicola |title=Ramaphosa's farmgate loot splurged in Cape Town |url=https://www.iol.co.za/capetimes/news/ramaphosas-farmgate-loot-splurged-in-cape-town-07c23aea-e100-4989-b7de-7346cfb69e21 |access-date=2022-06-18 |website=www.iol.co.za |language=en}}</ref> U-Fraser uthi abasolwa bahlonywa imibuzo, futhi imali eyayisele yabuyiswa, futhi abagqekezi bakhokhelwa ngemali eyizi-R150,000.<ref name=ST01/> Ngokungenani oyedwa wabagqekezi wahlonywa imibuzo ngo-Rhoode ekwelaseNamibiya.<ref name=ST01/> Lokhu kwenzeka ngenxa yokungenelela kukaRamaphosa kanye noMengameli waseNamibiya uHage Geingob. Umsebenzi wasendlini yena kusolwa ukuthi waxoshwa khona kamuva waqashwa futhi wayesekhokhelwa imali engamadola angu-$150,000.
kvn56n2kh2cjhdjcz41gqxd1bk9ftn2
126083
126082
2026-07-15T10:26:44Z
KiranBOT
23584
removed AMP tracking from URLs ([[:m:User:KiranBOT/AMP|details]]) ([[User talk:Usernamekiran|report error]]) v2.2.9s
126083
wikitext
text/x-wiki
{{Infobox event
| image =
| date = 9 February 2020
| location = Epulazini lasePhala Phala lezinyamazane
| motive = Ukuphangwa
| outcome = Kwebiwa isamba semali engaziwa
}}
'''Ukuphangwa ePhalaPhala ngowezi-2020''' noma '''impango yasePhalaphala yowezi-2020''' kwaba ukugqekezwa kwepulazi elisisulu likaMengameli waseNingizimu Afrika [[Cyril Ramaphosa|uCyril Ramaphosa]] iPhalaPhala ngaseBela [[IBela-Bela|-Bela]], [[ILimpopo|eLimpopo]], [[IRiphabhuliki yaseNingizimu Afrika|eNingizimu Afrika]].<ref>{{Cite web |last=Sadike |first=Mashudu |title=Cyril Ramaphosa denies involvement in crime after R60m stolen from his Phala Phala farm |url=https://www.iol.co.za/pretoria-news/news/cyril-ramaphosa-denies-involvement-in-crime-after-r60m-stolen-from-his-phala-phala-farm-12a87167-b949-47c1-ac32-34f82d475d1c |access-date=2022-06-08 |website=www.iol.co.za |language=en}}</ref><ref>{{Cite web |last=Davis |first=Rebecca |date=2022-06-07 |title=SPIES R US EXPLAINER: Unpacking the Cyril Ramaphosa home robbery story, and why you should care |url=https://www.dailymaverick.co.za/article/2022-06-08-unpacking-the-cyril-ramaphosa-home-robbery-story-and-why-you-should-care/ |access-date=2022-06-08 |website=Daily Maverick |language=en}}</ref><ref>{{Cite web |last=Ndenze |first=Babalo |title=Cele: Presidential Protection Unit head knew about robbery at Ramaphosa farm |url=https://ewn.co.za/2022/06/07/cele-presidential-protection-unit-head-knew-about-robbery-at-ramaphosa-farm |access-date=2022-06-08 |website=ewn.co.za |language=en-US}}</ref> Lesigameko senzeka mhla ziyi-9 kuNhlolanja 2020 lapho okwebiwa khona isamba semali esingaziwa. UMnumzane Arthur Fraser, owangumphathi-jikelele womnyango wokuhlumeleliswa kwesimilo namajele wathi kwebiwa imali engamadola waseMelika ayizigidi ezi-4 (izigidi ezingama-60 zamarandi aseNingizimu afrika) eyayingabikiwe ukuthi ikuleli.<ref>{{Cite web |title=Hawks take over the probe into the burglary at Ramaphosa's game farm |url=https://www.businesslive.co.za/bd/national/2022-06-07-hawks-take-over-the-probe-into-the-burglary-at-ramaphosas-game-farm/ |access-date=2022-06-08 |website=BusinessLIVE |language=en-ZA}}</ref><ref>{{Cite web |date=2022-06-07 |title=Ramaphosa to appear before ANC after farm robbery |url=https://www.moneyweb.co.za/news/south-africa/ramaphosa-to-appear-before-anc-after-farm-robbery/ |access-date=2022-06-08 |website=Moneyweb |language=en}}</ref><ref>{{Cite web |title=Ramaphosa Farm Theft. Give police space to investigate: Cele |url=https://www.enca.com/news/ramaphosa-farm-theft-give-police-space-investigate-cele |access-date=2022-06-08 |website=www.enca.com |language=en |archive-date=2022-06-17 |archive-url=https://web.archive.org/web/20220617003022/https://www.enca.com/news/ramaphosa-farm-theft-give-police-space-investigate-cele |dead-url=yes }}</ref> Kodwa, imibiko eyalandela yakhomba ukuthi imali eyebiwe kwakungamadola ayisamba esingama- $580 000<ref>[https://www.news24.com/news24/investigations/phala-phala-mystery-sudanese-businessman-paid-580-000-to-ramaphosas-farmhand-45-days-before-theft-20220906-2]</ref> URamaphosa waphika wama- ngekhanda,<ref name="guardianLegalAction">[https://www.theguardian.com/world/2022/dec/03/south-africa-president-to-mount-legal-action-in-face-of-impeachment-threat-cyril-ramaphosa]</ref> futhi wathi uzodlulisa umbiko wethimba eliqokwe iphalemende ukuze ubuyekezwe ngokomthetho. Lombiko wakhululwa ngowezi-2022 futhi wamsola "ngokungaziphathi ngendlela efanele isikhundla sakhe." <ref name="guardianLegalAction"/>
== uMongo ==
Mhla zilu-1 kuNhlaba 2022, lowo oyengumphathi-jikelele wezokuVikelwa komBuso, uArthur Fraser,<ref>{{Cite web |date=2022-06-15 |title=Furore over a theft bedevils the ANC |url=https://www.moneyweb.co.za/news/south-africa/furore-over-a-theft-bedevils-the-anc/ |access-date=2022-06-15 |website=Moneyweb |language=en}}</ref> wafaka isimangalo secala ngokumelene no-Cyril Ramaphosa ngokuphazamisa ingalo yomthetho ngokuthi ephule UMthetho wokuvinjwa kobuGebengu obuhleliwe wangowe-1998, kanye nomthetho wokuvinjwa kwezenzo zokukhwabanisa wongowezi-2004.<ref name="Daniels">{{Cite web |last=Daniels |first=Nicola |title=Sars, Reserve Bank mum on Ramaphosa's farmgate |url=https://www.iol.co.za/capetimes/news/sars-reserve-bank-mum-on-ramaphosas-farmgate-f16ce460-5b8a-4e70-9c71-8d5706f757c4 |access-date=2022-06-15 |website=www.iol.co.za |language=en}}</ref> Isimangalo sika-Fraser saveza ukuthi isamba samadola ayizigidi ezi-4 (ezilingana namarandi ayizigidi ezingama-62)<ref name=":1">{{Cite web |last=Haffajee |first=Ferial |date=2022-06-02 |title=SPIES R US: Why Ramaphosa (apparently) kept mum about multimillion-dollar robbery at his farm |url=https://www.dailymaverick.co.za/article/2022-06-02-why-ramaphosa-apparently-kept-mum-about-multimillion-dollar-robbery-at-his-farm/ |access-date=2022-06-15 |website=Daily Maverick |language=en}}</ref> eyayigxishwe ngaphakathi kosofa zebiwa emzini ka-Ramaphosa osepulazini elisePhalaPhala elikumkhandlu wesifunda i-Waterberg ,<ref>{{Cite web |last=Gerber |first=Jan |title=ANC does not want to 'interfere' with investigations into 'Rama-Phala Phala' |url=https://www.news24.com/news24/southafrica/politics/anc-does-not-want-to-interfere-with-investigations-into-rama-phala-phala-20220615-2 |access-date=2022-06-15 |website=News24 |language=en-US}}</ref> “cishe" ngomhla ziyi-9 kuNhlolanja 2020.<ref name=":0">{{Cite web |last=O’Regan |first=Victoria |date=2022-06-12 |title=SPIES R US: Ramaphosa's Farmgate scandal – a timeline of what we know (and don't know) so far |url=https://www.dailymaverick.co.za/article/2022-06-12-ramaphosas-farmgate-scandal-a-timeline-of-what-we-know-and-dont-know-so-far/ |access-date=2022-06-15 |website=Daily Maverick |language=en}}</ref> Saqhubeka saveza nokuthi [[Umongameli waseNingizimu Afrika|umengameli]] akawabikelanga amaphoyisa ngalobulelesi nokuthi ukuba khona kwesamba esikhulu salenkece yangaphandle kwakungabikiwe kwibhangengodla ngokulandela umthetho. Isimangalo sikaFraser saveza nokuthi abasolwa abahileleke ekwebeni bathunjwa ukuze bayohlonywa ngemibuzo.<ref name="Daniels" /> epulazini<ref>{{Cite web |last=Bhengu |first=Cebelihle |date=15 June 2022 |title='We have sides hidden under a mattress. It's a steal' — Nando's throws jab at Ramaphosa's 'farmgate' scandal |url=https://www.timeslive.co.za/news/south-africa/2022-06-15-we-have-sides-hidden-under-a-mattress-its-a-steal-nandos-throws-jab-at-ramaphosas-farmgate-scandal/ |access-date=2022-06-15 |website=TimesLIVE |language=en-ZA}}</ref> futhi bakhokhelwa ukuba bangasithi vo! nakancane kunoma ubani lesehlakalo.<ref name=":1" /> Abasemagunyeni eNamibiya bahlonza abasolwa ababandakanyeka ekwebeni lungakaziwa loludaba kodwa baluthalalisa emva kwezicelo zezingede zokuvikela zaseNingizimu afrika..<ref>{{Cite web |title=Ramaphosa 'Farmgate': What we know, what we don't know and why you should care |url=https://www.msn.com/en-za/news/other/ramaphosa-farmgate-what-we-know-what-we-don-t-know-and-why-you-should-care/ar-AAYjlfL |access-date=2022-06-15 |website=MSN |language=en-ZA}}</ref>
Imithombo eseduze nomengameli yona yaveza ukuthi nakuba ukwebiwa kwemali kwenzeka epulazini, isamba semali esibandakanyekayo sasiphansi kunaleso esivezwa uFraser nokuthi yonke leyomali yazuzwa ngokusemthethweni kolundela ukudayiswa kwezinkomo zama-ankole.<ref name=":1" /> URamaposa wathi akasibikanga lesigameko sokweba ukuze agweme ukuba imbangela yokuyaluza emphakathini wabalimi kodwa kunalokho kwaba ngcono ukuba abophiko labalindi bakamongameli kube yibo abaphenya lesehlakalo sokweba.<ref name=":1" />
== Ukugqekezwa okusolwayo kwangowezi-2020 ==
Kusuka ezinsolweni nasemacaleni avulwa ngu-Arthur Fraser, nazi izehlakalo ezenzeka: umsebenzi wasendlini oqashwe epulazini ePhala Phala wavubukula inkece yangaphandle kwezwe ithukuswe empahleni yasendlini.<ref name="ST01">{{Cite news |last1=Jika |first1=Thanduxolo |last2=Makinana |first2=Andisiwe |last3=Nombembe |first3=Philani |date=5 June 2022 |title=Did the president break the law? |pages=1–5 |work=Sunday Times (South Africa)}}</ref> Lomsebenzi ube hlala ngaphandle kwepulazi emzini wase-Cyferskyl.<ref name=ST01/> Kunesibalo esikhulu sabantu baseNamibiya esihlala kulomuzi futhi badabuka kulabo ababelwa besohlangothini loMbutho wezokuVikela wasNingizimu Afrika ngesikhathi seMpi yaseNingizimu Afrika yaseMgceleni bagcina sebehlala kuleli ngemuva konyaka we-1989.<ref name=ST01/> Waxoxa ngakutholile nabanye bomakhelwane bakhe abamxhumanisa nabanye abantu baseNamibiya abahlala [[IKapa|eKapa]], abangamsiza.<ref name=ST01/> Ukugqekezwa kwenzeka ngobusuku bukaNhlolanja 9 2020, ngehora le-10. U-Fraser uthi sonke lesenzakalo saqoshwa uhlelo lwe-CCTV.<ref name=ST01/> Abagqekezi ekuqaleni bagqekeza bangena egumbini okungelona futhi kwadingeka basizwe ngomsebenzi wasendlini ukuba hate egumbini elifanele.<ref name=ST01/> Emva kokugqekezwa, khona babalekela eKapa.<ref name=ST01/> Lapho kutholakala ukuthi kugqekeziwe, inhloko yophiko lwezoVikelwa kukaMongameli uJenene-nduna u-Wally Rhoode kuthiwa wabandkanyeka, eyalezwe nguMengameli Cyril Ramaphosa ukuba aphenye.<ref name=ST01/> Ekugcineni abasolwa batholwa eKapa ngemuva kokuhlonywa ngemibuzo lomsebenzi wasendlini nasekuhlolweni kukamakhalekhikhini wakhe ukuba awunayo yini imiyalezo nabagqekezi.<ref name=ST01/> eKapa, abagqekezi bashintsha inkece yangaphandle kwaba ngamaRandi waseNingizimu Afrika endaweni yokuNana imali yamaShayina.<ref>{{Cite web |last=Daniels |first=Nicola |title=Ramaphosa's farmgate loot splurged in Cape Town |url=https://www.iol.co.za/capetimes/news/ramaphosas-farmgate-loot-splurged-in-cape-town-07c23aea-e100-4989-b7de-7346cfb69e21 |access-date=2022-06-18 |website=www.iol.co.za |language=en}}</ref> U-Fraser uthi abasolwa bahlonywa imibuzo, futhi imali eyayisele yabuyiswa, futhi abagqekezi bakhokhelwa ngemali eyizi-R150,000.<ref name=ST01/> Ngokungenani oyedwa wabagqekezi wahlonywa imibuzo ngo-Rhoode ekwelaseNamibiya.<ref name=ST01/> Lokhu kwenzeka ngenxa yokungenelela kukaRamaphosa kanye noMengameli waseNamibiya uHage Geingob. Umsebenzi wasendlini yena kusolwa ukuthi waxoshwa khona kamuva waqashwa futhi wayesekhokhelwa imali engamadola angu-$150,000.
r1lta61zfap976pu9iqczlmzv3h0z9e
Mhlengikhona/Draft4/Okusalungiswa5
0
34488
126071
125181
2026-07-15T05:16:03Z
Mhlengukhona
25426
umlando wakwaGina
126071
wikitext
text/x-wiki
UMLANDO WAKWAGINA
[[File:Traditional Zulu house, South Africa (1588615030).jpg|thumb|Isithombe Sendlu yaMakhosi]]
Umlando wakwaGina uxhumene eduze nendabuko yamaNguni.Isibongo sakwaGina sitholakala kakhulu Kwazulu-Natal baziwa kakhulu njengabantu abahlonishwayo nasebukhosini, nase zindaweni ezahlukene futhi imvelaphi yabo ivame ukulandelwa ezizweni ezinkulu zaseNyakatho naseMpumalanga yeNingizimu Afrika.<ref>https://www.familysearch.org/en/surname</ref> Mhlungu wasendlukulu iNkosana kaNdaba uMjokwana yahlaselwa yizitha zashisa umuzi wayo , yase iyabaleka yayocasha nomndeni wayo kodwa yamxaka impilo wabuyela emanxiweni lapho kwaku shiswe khona .Omunye wamakhosikazi khe wayezithwele , bathi befika wabeletha wazala umfana.Lapho kwakushe khona kwasukumila IHLUNGU wase emqamba ngokuthi uMhlungu nguye umhlungu owazala uGina yena wazala uMagadlela yena wazala uBukhosini.<ref>https://izithakazelo.blog/surnames-and-their-clan-names/#google_vignette</ref> Izithakazelo zakwaGina oMagadlela, Mhlungu Wasendlunkulu, Bukhosini,Ncama Ngethusi ,Mageza Ngobisi.
== UMTHOMBO ==
6cgrcb24kmnf2ks5n916yeeq7hg4rye
Umlando wakwaGina
0
34719
126072
2026-07-15T05:20:08Z
Mhlengukhona
25426
Umlando WakwaGina
126072
wikitext
text/x-wiki
UMLANDO WAKWAGINA
[[File:Traditional_Zulu_house,_South_Africa_(1588615030).jpg|thumb|Isithombe Sendlu yaMakhosi]]
Umlando wakwaGina uxhumene eduze nendabuko yamaNguni.Isibongo sakwaGina sitholakala kakhulu Kwazulu-Natal baziwa kakhulu njengabantu abahlonishwayo nasebukhosini, nase zindaweni ezahlukene futhi imvelaphi yabo ivame ukulandelwa ezizweni ezinkulu zaseNyakatho naseMpumalanga yeNingizimu Afrika.<ref>https://www.familysearch.org/en/surname</ref> Mhlungu wasendlukulu iNkosana kaNdaba uMjokwana yahlaselwa yizitha zashisa umuzi wayo , yase iyabaleka yayocasha nomndeni wayo kodwa yamxaka impilo wabuyela emanxiweni lapho kwaku shiswe khona .Omunye wamakhosikazi khe wayezithwele , bathi befika wabeletha wazala umfana.Lapho kwakushe khona kwasukumila IHLUNGU wase emqamba ngokuthi uMhlungu nguye umhlungu owazala uGina yena wazala uMagadlela yena wazala uBukhosini.<ref>https://izithakazelo.blog/surnames-and-their-clan-names/#google_vignette</ref> Izithakazelo zakwaGina oMagadlela, Mhlungu Wasendlunkulu, Bukhosini,Ncama Ngethusi ,Mageza Ngobisi.
== UMTHOMBO ==
im5pqoquf0d6cxlafijqzotg81sucmn
Umlando wokwakhiwa kwesikole uHhoye
0
34720
126073
2026-07-15T05:26:34Z
Mhlengukhona
25426
Umlando wokwakhiwa kwesikole u Hhoye Secondary School
126073
wikitext
text/x-wiki
[[File:Vaajakosken_kouluparakki.JPG|thumb|Isikole]]
UMLANDO WOKWAKHIWA KWESIKOLE U HHOYE SECONDARY SCHOOL
Isikole uHhoye Secondary school isikole esaziwa khakhulu ngokuzimisela ezifundweni nokuphasa kahle.Lesisikole sitholakala Kwazulu-Natal ngaphansi koMkhanyakude District , <ref>https://www.ukdm.gov.za/</ref>endaweni yaseBhambanana. Lesi sikole saqala ukufundisa ngonyaka ka- sifundisela ethendeni lomphakathi lelithende lalifakwa ngamalungu oMphakathi njalo ngeSonto liphinde likhishwe ngoLwesihlanu.Lesi sikole saqalwa uMphakathi , uMphakathi waqale wathola indawo emndenini wakwaNdlazi bathi sebayitholile indawo iNduna yabacela ukuba balule isandla ukusiza ukuba lendawo iheshwe ukuze izingane zingeke zihambe ibanga elide ukuya esikoleni zisuka oNaleni ziya ePhungaza High School. Kwathi sekuheshiwe kwakhiwa amagumbi amathathu okwakuyigumbi loThisha kanye namaKilasi amabili okufundela abanye baqhubeka bafundela ethendeni kanye naphansi kwezihlahla.
Ngemuva kwesikhathi kwangezwa ngeKilasi lesithathu, kwathi sekubonakala ukuthi isikole sesinezingane eziningi kwalethwa lezizindlu zamagogogo (Container) lesisikole besinamabanga agcina kweleshumi nanye (Grade11)<ref>https://www.education.gov.za/</ref>.Kwase kwathi ngonyaka ka-2015 ilapho okwaqala khona ukuba nomaTikuletsheni (Matric) umaTikuletsheni waphasa kahle.Kwase kwathi ngonyaka ka-2016 wphasakahle kakhulu kwase kwaqalwa ukwakhiwa lesisikole ngoba sisihle kangaka.
== Umthombo ==
hra76h314y0r6nvdnmcafpjg55l5ux9
Ingqibamasondo
0
34721
126074
2026-07-15T06:15:09Z
Mhlengukhona
25426
inqibamasondo
126074
wikitext
text/x-wiki
'''INQIBAMASONDO'''
INqibamasondo usiko lwesintu samaZulu lapho umakoti esuke ehambisa khona umbondo emzini.Lomcimbi wenzeka ngemuva kokuba abakamkhwenyana sebelobolile kwamakoti ,yingakho lolusiko lubizwa ngenqibamasondo ngoba basuke bayogqiba amasondo ezinkomo zomkhwenyana.Abakwa makoti bayahamba ke baye kamkhwenyana ukuyoqgiba amasondo baphatha umbondo wokudla okuhlukahlukene kungaba izithelo, utshwala besiZulu, izitshalo ezifana nobhathanathi kanye nokudla kwesizulu okufana namadumbe.Abakwamakoti uma bafika emzini babahlabisa inkomo okusuke kungeyabo bodwa kuba kubo ukuthi bayabapha yini abakamkhwenyana.<ref>https://www.southafrica.net/in/en/travel/article/ceremonies-and-traditions-food-of-south-africa</ref>
[[File:Women's_Ritual_Preparation_Space,_Ancestral_Ceremony.jpg|thumb|Ukudla kweSintu]]
Uma kufikwa emzini umakoti usuke ephelezelwe izintombi zangakubo kufike kuculwe kusinwe ngaphandle kwamasango kamkhwenyana.Umakoti uma esengena kwamkhwenyana uphosa amaswidi ebaleni abakamkhwenyana babese bawacoshe izintombi ziqhubeke zisine kuthokozwe ,umakoti uphatha noma uthwala ubhasikidi kamamezala wakhe ogcwele ukudla noma amaswidi ukukhombisa ukuthi ngoba esefikile kulelikhaya ngeke asalamba noma ashele emabhodweni.<ref>https://www.southafrica.net/in/en/travel/article/ceremonies-and-traditions-food-of-south-africa</ref>Inhloso yalelisiko ukukhombisa ukuthi umakoti ukhuliswe kahle noma usuka ekhaya elinomthetho.Lokhu kuveza ukuthi umakoti uzihlonipha zombili izinhlangothi zomndeni.Abanye ke lolusiko bayalwenza noma sebashadile.
== UMTHOMBO: ==
9e945iq6l54pj1jy8crgno5eafaskki
Template:Infobox planet
10
34722
126075
2026-07-15T08:33:31Z
Fongcwele
16873
Created page with "{{#invoke:infobox|infoboxTemplate | class = vcard | titleclass = fn org | title = {{{name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|upright={{if empty|{{{image_scale|}}}|1.1}}|alt={{{image_alt|}}}}} | caption = {{{caption|}}} | headerstyle = {{#if:{{{background|}}}{{{bgcolour|}}}|background-color:{{if empty|{{{background|}}}|{{{bgcolour|}}}}}|background-color:#E0CCFF}}; color:inh..."
126075
wikitext
text/x-wiki
{{#invoke:infobox|infoboxTemplate
| class = vcard
| titleclass = fn org
| title = {{{name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|upright={{if empty|{{{image_scale|}}}|1.1}}|alt={{{image_alt|}}}}}
| caption = {{{caption|}}}
| headerstyle = {{#if:{{{background|}}}{{{bgcolour|}}}|background-color:{{if empty|{{{background|}}}|{{{bgcolour|}}}}}|background-color:#E0CCFF}}; color:inherit;
| labelstyle = max-width:{{if empty|{{{label_width|}}}|11em}};
| autoheaders = y
| header1 = Discovery{{{discovery_ref|}}}
| label2 = [[List of minor planet discoverers|Discovered by]]
| data2 = {{{discoverer|}}}
| label3 = Indawo yokuvubukulwa
| data3 = {{{discovery_site|}}}
| label4 = Usuku lokuvubukulwa
| data4 = {{{discovered|}}}
| label5 = {{longitem|Indlela yokusihlonga}}
| data5 = {{{discovery_method|}}}
| header10 = {{#if:{{{extrasolarplanet|}}}{{{Imizulendle|}}}|[[Exoplanet#Nomenclature|Designations]]|Amagama}}
| label11 = {{longitem|{{#if:{{{minorplanet|}}}|<!--[[Minor-planet designation|MPC designation]]-->|Igama}}}}
| data11 = {{#if:{{{minorplanet|}}}||{{if empty|{{{mpc_name|}}}|{{{mp_name|}}}}}}}
| label12 = Ukuphinyiswa
| data12 = {{if empty|{{{pronounce|}}}|{{{pronounced|}}}}}
| label13 = {{longitem|Eqanjwe ngakho}}
| data13 = {{{named_after|}}}
| label14 = {{longitem|{{#if:{{{minorplanet|}}}|[[Provisional designation in astronomy|Alternative designations]]|[[Provisional designation in astronomy|Amanye amagama]]}}}}
| data14 = {{{alt_names|}}}
| label15 = {{longitem|[[Minor planet#Populations|Minor planet category]]}}
| data15 = {{{mp_category|}}}
| label16 = [[List of adjectivals and demonyms of astronomical bodies|Iziphawulo]]
| data16 = {{if empty|{{{adjectives|}}}|{{{adjective|}}}}}
| label17 = [[Planet symbols|Uphawu]]
| data17 = {{{symbol|}}}
| header20 = [[Osculating orbit|Izinkondolo zozungezo]]{{#ifeq:{{{barycentric|}}}|yes| [[Barycenter#Inside or outside the Sun?|(barycentric)]]}}{{{orbit_ref|}}}
| data21 = {{{orbit_diagram|}}}
| data22 = {{#if:{{{epoch|}}} |[[Epoch (astronomy)|Ikhathi]] {{{epoch}}}}}
| data23 = {{#if:{{{uncertainty|}}} | [[Uncertainty parameter]] {{{uncertainty}}}}}
| label24 = [[Observation arc]]
| data24 = {{{observation_arc|}}}
| label25 = Usuku langaphambilini
| data25 = {{{earliest_precovery_date|}}}
| label26 = {{#switch:{{{apsis}}} |apsis|gee|barion|center|centre|(apsis)=[[Apsis|Apo{{{apsis}}}]] |[[Perihelion and aphelion|Ku{{if empty|{{{apsis|}}}|dana}}]]}}
| data26 = {{{aphelion|}}}
| label27 = [[Perihelion and aphelion|Fuphi{{if empty|{{{apsis|}}}|nelanga}}]]
| data27 = {{{perihelion|}}}
| label28 = [[Apsis|Fuphinejika]]
| data28 = {{{periapsis|}}}
| label29 = {{#switch:{{{apsis}}} |helion|astron=[[Apsis|Ap{{{apsis}}}]] |[[Apsis|Apo{{if empty|{{{apsis|}}}|apsis}}]]}}
| data29 = {{{apoapsis|}}}
| label30 = [[Apsis|Periastron]]
| data30 = {{{periastron|}}}
| label31 = [[Apsis|Apoastron]]
| data31 = {{{apoastron|}}}
| label32 = {{longitem|[[Semi-major and semi-minor axes|Semi-major axis]]}}
| data32 = {{{semimajor|}}}
| label33 = {{longitem|Mean orbit [[radius]]}}
| data33 = {{{mean_orbit_radius|}}}
| label34 = [[Orbital eccentricity|Ubukhophelana]]
| data34 = {{{eccentricity|}}}
| label35 = {{longitem|[[Orbital period|Inkathi yozungezo (sidereal)]]}}
| data35 = {{{period|}}}
| label36 = {{longitem|[[Orbital period|Orbital period (synodic)]]}}
| data36 = {{{synodic_period|}}}
| label37 = {{longitem|Average [[orbital speed]]}}
| data37 = {{{avg_speed|}}}
| label38 = {{longitem|[[Mean anomaly#Mean anomaly at epoch|Mean anomaly]]}}
| data38 = {{{mean_anomaly|}}}
| label39 = {{longitem|[[Mean motion]]}}
| data39 = {{{mean_motion|}}}
| label40 = [[Orbital inclination|Inclination]]
| data40 = {{{inclination|}}}
| label41 = {{longitem|[[Angular distance]]}}
| data41 = {{{angular_dist|}}}
| label42 = {{longitem|[[Longitude of the ascending node|Longitude of ascending node]]}}
| data42 = {{{asc_node|}}}
| label43 = {{longitem|[[Longitude of the periapsis|Longitude of]] [[Apsis|peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data43 = {{{long_periastron|}}}
| label44 = {{longitem|[[Apsis|Time of peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data44 = {{{time_periastron|}}}
| label45 = {{longitem|[[Argument of periapsis|Argument of peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data45 = {{{arg_peri|}}}
| label46 = {{nowrap|[[Amplitude|Semi-amplitude]]}}
| data46 = {{{semi-amplitude|}}}
| label47 = [[Natural satellite|Satellite of]]
| data47 = {{{satellite_of|}}}
| label48 = [[Irregular moon#Group|Group]]
| data48 = {{{group|}}}
| label49 = {{#switch:{{{allsatellites|}}} |yes|true=[[Natural satellite|Satellite]]s |Known [[Natural satellite|satellite]]s}}
| data49 = {{{satellites|}}}
| label50 = Star
| data50 = {{{star|}}}
| label51 = Earth [[Minimum orbit intersection distance|MOID]]
| data51 = {{{moid|}}}
| label52 = Mercury [[Minimum orbit intersection distance|MOID]]
| data52 = {{{mercury_moid|}}}
| label53 = Venus [[Minimum orbit intersection distance|MOID]]
| data53 = {{{venus_moid|}}}
| label54 = Mars [[Minimum orbit intersection distance|MOID]]
| data54 = {{{mars_moid|}}}
| label55 = Jupiter [[Minimum orbit intersection distance|MOID]]
| data55 = {{{jupiter_moid|}}}
| label56 = Saturn [[Minimum orbit intersection distance|MOID]]
| data56 = {{{saturn_moid|}}}
| label57 = Uranus [[Minimum orbit intersection distance|MOID]]
| data57 = {{{uranus_moid|}}}
| label58 = Neptune [[Minimum orbit intersection distance|MOID]]
| data58 = {{{neptune_moid|}}}
| label59 = [[Tisserand's parameter|T<sub>Jupiter</sub>]]
| data59 = {{{tisserand|}}}
| header60 = [[Proper orbital elements]]{{{p_orbit_ref|}}}
| label61 = {{longitem|Proper [[Semi-major and semi-minor axes|semi-major axis]]}}
| data61 = {{#if:{{{p_semimajor|}}} |{{{p_semimajor}}} [[Astronomical unit|AU]]}}
| label62 = {{longitem|Proper [[Semi-major and semi-minor axes|semi-major axis]]}}
| data62 = {{{p_semimajor_unitless|}}}
| label63 = {{longitem|Proper [[Orbital eccentricity|eccentricity]]}}
| data63 = {{{p_eccentricity|}}}
| label64 = {{longitem|Proper [[Orbital inclination|inclination]]}}
| data64 = {{{p_inclination|}}}
| label65 = {{longitem|Proper [[mean motion]]}}
| data65 = {{#if:{{{p_mean_motion|}}} |{{{p_mean_motion}}} [[Degree (angle)|deg]]{{\}}[[Julian year (astronomy)|yr]]}}
| label66 = {{longitem|Proper [[orbital period]]}}
| data66 = {{#if:{{{p_mean_motion|}}}|{{#expr:360/{{if empty|{{{p_mean_motion|}}}|1}} round 5}} [[Julian year (astronomy)|yr]]<br />({{#expr:365.25*360/{{if empty|{{{p_mean_motion|}}}|1}} round 3}} [[day|d]]) }}
| label67 = {{longitem|Proper [[orbital period]]}}
| data67 = {{{p_period_unitless|}}}
| label68 = {{longitem|Precession of [[longitude of periapsis|perihelion long.]]}}
| data68 = {{#if:{{{perihelion_rate|}}}|{{{perihelion_rate}}} [[Arcsecond|arcsec]]{{\}}[[Julian year (astronomy)|yr]] }}
| label69 = {{longitem|Precession of [[Longitude of the ascending node|asc. node]]}}
| data69 = {{#if:{{{node_rate|}}}|{{{node_rate}}} [[Arcsecond|arcsec]]{{\}}[[Julian year (astronomy)|yr]]}}
| header70 = {{anchor|Infobox Physical characteristics}}{{#if:{{{minorplanet|}}}| [[Standard asteroid physical characteristics|Physical characteristics]]|Physical characteristics}}{{{physical_ref|}}}
| label71 = [[Mean radius (astronomy)|Dimensions]]
| data71 = {{{dimensions|}}}
| label72 = {{longitem|[[Mean radius (astronomy)|Mean diameter]]}}
| data72 = {{{mean_diameter|}}}
| label73 = {{longitem|[[Mean radius (astronomy)|Mean radius]]}}
| data73 = {{{mean_radius|}}}
| label74 = {{longitem|[[Equator]]ial radius}}
| data74 = {{{equatorial_radius|}}}
| label75 = {{longitem|[[Geographical pole|Polar]] radius}}
| data75 = {{{polar_radius|}}}
| label76 = [[Flattening]]
| data76 = {{{flattening|}}}
| label77 = Circumference
| data77 = {{{circumference|}}}
| label78 = {{longitem|[[Spheroid#Area|Surface area]]}}
| data78 = {{{surface_area|}}}
| label79 = [[Volume]]
| data79 = {{{volume|}}}
| label80 = [[Mass]]
| data80 = {{{mass|}}}
| label81 = {{longitem|Mean [[density]]}}
| data81 = {{{density|}}}
| label82 = {{longitem|{{#if:{{{minorplanet|}}}|Equatorial [[Standard asteroid physical characteristics#Surface gravity|surface gravity]]|[[Surface gravity]]}}}}
| data82 = {{{surface_grav|}}}
| label83 = {{longitem|[[Moment of inertia factor]]}}
| data83 = {{{moment_of_inertia_factor|}}}
| label84 = {{longitem|{{#if:{{{minorplanet|}}} |Equatorial [[escape velocity]] |[[Escape velocity]]}}}}
| data84 = {{{escape_velocity|}}}
| label85 = {{longitem|[[Synodic rotation period]]}}
| data85 = {{{rotation|}}}
| label86 = {{longitem|[[Sidereal rotation period]]}}
| data86 = {{{sidereal_day|}}}
| label87 = {{longitem|Equatorial rotation velocity}}
| data87 = {{{rot_velocity|}}}
| label88 = {{longitem|[[Axial tilt]]}}
| data88 = {{{axial_tilt|}}}
| label89 = {{longitem|North pole {{nowrap|[[right ascension]]}}}}
| data89 = {{{right_asc_north_pole|}}}
| label90 = {{longitem|North pole [[declination]]}}
| data90 = {{{declination|}}}
| label91 = {{longitem|Pole [[Ecliptic coordinate system|ecliptic longitude]]}}
| data91 = {{{pole_ecliptic_lon|}}}
| label92 = {{longitem|Pole [[Ecliptic coordinate system|ecliptic latitude]]}}
| data92 = {{{pole_ecliptic_lat|}}}
| label93 = {{#if:{{{minorplanet|}}} |{{longitem|[[Geometric albedo]]}} |[[Albedo]]}}
| data93 = {{{albedo|}}}
| label94 = [[Temperature]]
| data94 = {{{single_temperature|}}}
| data100 = {{#if:{{{temp_name1|}}}{{{temp_name2|}}}{{{temp_name3|}}}{{{temp_name4|}}}|
<table style="border-spacing: 0px; width:100%; border:none; margin:0; line-height:1.2em; white-space:nowrap"><tr>
<th style="width:33%; padding-right:0.25em; text-align:left">Surface [[temperature|temp.]]</th>
<th style="padding-right:0.25em; text-align:center">min</th>
<th style="padding-right:0.25em; text-align:center">mean</th>
<th style="padding-right:0.25em; text-align:center">max</th>
</tr>{{#if:{{{temp_name1|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name1}}}</th>
<td style="text-align:center">{{{min_temp_1|}}}</td>
<td style="text-align:center">{{{mean_temp_1|}}}</td>
<td style="text-align:center">{{{max_temp_1|}}}</td>
</tr>}}{{#if:{{{temp_name2|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name2}}}</th>
<td style="text-align:center">{{{min_temp_2|}}}</td>
<td style="text-align:center">{{{mean_temp_2|}}}</td>
<td style="text-align:center">{{{max_temp_2|}}}</td>
</tr>}}{{#if:{{{temp_name3|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name3}}}</th>
<td style="text-align:center">{{{min_temp_3|}}}</td>
<td style="text-align:center">{{{mean_temp_3|}}}</td>
<td style="text-align:center">{{{max_temp_3|}}}</td>
</tr>}}{{#if:{{{temp_name4|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name4}}}</th>
<td style="text-align:center">{{{min_temp_4|}}}</td>
<td style="text-align:center">{{{mean_temp_4|}}}</td>
<td style="text-align:center">{{{max_temp_4|}}}</td>
</tr>}}
</table>}}
| label101 = Surface [[absorbed dose]] [[Dose rate|rate]]
| data101 = {{{surface_absorbed_dose_rate|}}}
| label102 = Surface [[equivalent dose]] [[Dose rate|rate]]
| data102 = {{{surface_equivalent_dose_rate|}}}
| label103 = {{longitem|{{#if:{{{minorplanet|}}}|[[Asteroid spectral types|Spectral type]]|Spectral type}}}}
| data103 = {{{spectral_type|}}}
| label104 = {{longitem|[[Asteroid family]]}}
| data104 = {{{family|}}}
| label105 = {{longitem|[[Apparent magnitude]]}}
| data105 = {{{magnitude|}}}
| label106 = {{longitem|[[Absolute magnitude#Solar System bodies (H)|Absolute magnitude ''(H)'']]}}
| data106 = {{{abs_magnitude|}}}
| label107 = {{longitem|[[Angular diameter]]}}
| data107 = {{{angular_size|}}}
| header110 = Atmosphere{{{atmosphere_ref|}}}
| label111 = {{longitem|Surface [[Atmospheric pressure|pressure]]}}
| data111 = {{{surface_pressure|}}}
| label112 = {{longitem|[[Scale height]]}}
| data112 = {{{scale_height|}}}
| label113 = [[Atmospheric chemistry#Atmospheric composition|Composition by volume]]
| data113 = {{{atmosphere_composition|}}}
| below = <includeonly>{{#if:{{{note|}}}||{{reflist|group="note"}} }}</includeonly>
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox planet with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox planet]] with unknown parameter "_VALUE_"|ignoreblank=y| abs_magnitude | adjective | adjectives | albedo | allsatellites | alt_names | angular_dist | angular_size | aphelion | apoapsis | apsis | apoastron | arg_peri | asc_node | atmosphere | atmosphere_composition | atmosphere_ref | avg_speed | axial_tilt | background | barycentric | bgcolour | caption | circumference | declination | density | dimensions | discovered | discoverer | discovery_method | discovery_ref | discovery_site | earliest_precovery_date | eccentricity | epoch | equatorial_radius | escape_velocity | exosolar planets | extrasolarplanet | family | flattening | group | image | image_alt | image_scale | inclination | jupiter_moid | label_width | long_periastron | magnitude | mars_moid | mass | max_temp_1 | max_temp_2 | max_temp_3 | max_temp_4 | mean_anomaly | mean_diameter | mean_motion | mean_orbit_radius | mean_radius | mean_temp_1 | mean_temp_2 | mean_temp_3 | mean_temp_4 | mercury_moid | min_temp_1 | min_temp_2 | min_temp_3 | min_temp_4 | minorplanet | moid | moment_of_inertia_factor | mp_category | mp_name | mpc_name | name | named_after | neptune_moid | node_rate | note | observation_arc | orbit_diagram | orbit_ref | p_eccentricity | p_inclination | p_mean_motion | p_orbit_ref | p_period_unitless | p_semimajor | p_semimajor_unitless | periapsis | periastron | perihelion | perihelion_rate | period | physical_ref | polar_radius | pole_ecliptic_lat | pole_ecliptic_lon | pronounce | pronounced | right_asc_north_pole | rot_velocity | rotation | satellite_of | satellites | saturn_moid | scale_height | semi-amplitude | semimajor | sidereal_day | single_temperature | spectral_type | star | surface_area | surface_grav | surface_pressure | surface_absorbed_dose_rate | surface_equivalent_dose_rate | symbol | synodic_period | temp_name1 | temp_name2 | temp_name3 | temp_name4 | time_periastron | tisserand | uncertainty | uranus_moid | venus_moid | volume }}{{#invoke:Check for conflicting parameters|check
| template = [[Template:Infobox planet]]
| cat = {{main other|Category:Pages using infobox planet with conflicting parameters}}
| background; bgcolour
| mpc_name; mp_name
| pronounce; pronounced
| adjectives; adjective
| p_semimajor; p_semimajor_unitless
| p_mean_motion; p_period_unitless
}}<noinclude>
{{documentation}}
</noinclude>
sj2aaac509rnxddk76kizfc52qicdg4
126088
126075
2026-07-15T10:44:09Z
Fongcwele
16873
126088
wikitext
text/x-wiki
{{#invoke:infobox|infoboxTemplate
| class = vcard
| titleclass = fn org
| title = {{{name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|upright={{if empty|{{{image_scale|}}}|1.1}}|alt={{{image_alt|}}}}}
| caption = {{{caption|}}}
| headerstyle = {{#if:{{{background|}}}{{{bgcolour|}}}|background-color:{{if empty|{{{background|}}}|{{{bgcolour|}}}}}|background-color:#E0CCFF}}; color:inherit;
| labelstyle = max-width:{{if empty|{{{label_width|}}}|11em}};
| autoheaders = y
| header1 = Discovery{{{discovery_ref|}}}
| label2 = [[List of minor planet discoverers|Discovered by]]
| data2 = {{{discoverer|}}}
| label3 = Indawo yokuvubukulwa
| data3 = {{{discovery_site|}}}
| label4 = Usuku lokuvubukulwa
| data4 = {{{discovered|}}}
| label5 = {{longitem|Indlela yokusihlonga}}
| data5 = {{{discovery_method|}}}
| header10 = {{#if:{{{extrasolarplanet|}}}{{{Imizulendle|}}}|[[Exoplanet#Nomenclature|Designations]]|Amagama}}
| label11 = {{longitem|{{#if:{{{minorplanet|}}}|<!--[[Minor-planet designation|MPC designation]]-->|Igama}}}}
| data11 = {{#if:{{{minorplanet|}}}||{{if empty|{{{mpc_name|}}}|{{{mp_name|}}}}}}}
| label12 = Ukuphinyiswa
| data12 = {{if empty|{{{pronounce|}}}|{{{pronounced|}}}}}
| label13 = {{longitem|Eqanjwe ngakho}}
| data13 = {{{named_after|}}}
| label14 = {{longitem|{{#if:{{{minorplanet|}}}|[[Provisional designation in astronomy|Alternative designations]]|[[Provisional designation in astronomy|Amanye amagama]]}}}}
| data14 = {{{alt_names|}}}
| label15 = {{longitem|[[Minor planet#Populations|Minor planet category]]}}
| data15 = {{{mp_category|}}}
| label16 = [[List of adjectivals and demonyms of astronomical bodies|Iziphawulo]]
| data16 = {{if empty|{{{adjectives|}}}|{{{adjective|}}}}}
| label17 = [[Planet symbols|Uphawu]]
| data17 = {{{symbol|}}}
| header20 = [[Osculating orbit|Izinkondolo zozungezo]]{{#ifeq:{{{barycentric|}}}|yes| [[Barycenter#Inside or outside the Sun?|(barycentric)]]}}{{{orbit_ref|}}}
| data21 = {{{orbit_diagram|}}}
| data22 = {{#if:{{{epoch|}}} |[[Epoch (astronomy)|Ikhathi]] {{{epoch}}}}}
| data23 = {{#if:{{{uncertainty|}}} | [[Uncertainty parameter]] {{{uncertainty}}}}}
| label24 = [[Observation arc]]
| data24 = {{{observation_arc|}}}
| label25 = Usuku langaphambilini
| data25 = {{{earliest_precovery_date|}}}
| label26 = {{#switch:{{{apsis}}} |apsis|gee|barion|center|centre|(apsis)=[[Apsis|Apo{{{apsis}}}]] |[[Perihelion and aphelion|Ku{{if empty|{{{apsis|}}}|dana}}]]}}
| data26 = {{{aphelion|}}}
| label27 = [[Perihelion and aphelion|Fuphi{{if empty|{{{apsis|}}}|nelanga}}]]
| data27 = {{{perihelion|}}}
| label28 = [[Apsis|eFuphi]]
| data28 = {{{periapsis|}}}
| label29 = Fuphinelanga
| data29 = {{{apoapsis|}}}
| label30 = [[Apsis|Periastron]]
| data30 = {{{periastron|}}}
| label31 = [[Apsis|Apoastron]]
| data31 = {{{apoastron|}}}
| label32 = {{longitem|[[Semi-major and semi-minor axes|Ibanga elilangiselwe]]}}
| data32 = {{{semimajor|}}}
| label33 = {{longitem|Mean orbit [[radius]]}}
| data33 = {{{mean_orbit_radius|}}}
| label34 = [[Orbital eccentricity|Ubukhophelana]]
| data34 = {{{eccentricity|}}}
| label35 = {{longitem|[[Orbital period|Inkathi yozungezo (sidereal)]]}}
| data35 = {{{period|}}}
| label36 = {{longitem|[[Orbital period|Orbital period (synodic)]]}}
| data36 = {{{synodic_period|}}}
| label37 = {{longitem|Average [[orbital speed]]}}
| data37 = {{{avg_speed|}}}
| label38 = {{longitem|[[Mean anomaly#Mean anomaly at epoch|Mean anomaly]]}}
| data38 = {{{mean_anomaly|}}}
| label39 = {{longitem|[[Mean motion]]}}
| data39 = {{{mean_motion|}}}
| label40 = [[Orbital inclination|Inclination]]
| data40 = {{{inclination|}}}
| label41 = {{longitem|[[Angular distance]]}}
| data41 = {{{angular_dist|}}}
| label42 = {{longitem|[[Longitude of the ascending node|Longitude of ascending node]]}}
| data42 = {{{asc_node|}}}
| label43 = {{longitem|[[Longitude of the periapsis|Longitude of]] [[Apsis|peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data43 = {{{long_periastron|}}}
| label44 = {{longitem|[[Apsis|Time of peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data44 = {{{time_periastron|}}}
| label45 = {{longitem|[[Argument of periapsis|Argument of peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data45 = {{{arg_peri|}}}
| label46 = {{nowrap|[[Amplitude|Semi-amplitude]]}}
| data46 = {{{semi-amplitude|}}}
| label47 = [[Natural satellite|Satellite of]]
| data47 = {{{satellite_of|}}}
| label48 = [[Irregular moon#Group|Group]]
| data48 = {{{group|}}}
| label49 = {{#switch:{{{allsatellites|}}} |yes|true=[[Natural satellite|Satellite]]s |Known [[Natural satellite|satellite]]s}}
| data49 = {{{satellites|}}}
| label50 = Star
| data50 = {{{star|}}}
| label51 = Earth [[Minimum orbit intersection distance|MOID]]
| data51 = {{{moid|}}}
| label52 = Mercury [[Minimum orbit intersection distance|MOID]]
| data52 = {{{mercury_moid|}}}
| label53 = Venus [[Minimum orbit intersection distance|MOID]]
| data53 = {{{venus_moid|}}}
| label54 = Mars [[Minimum orbit intersection distance|MOID]]
| data54 = {{{mars_moid|}}}
| label55 = Jupiter [[Minimum orbit intersection distance|MOID]]
| data55 = {{{jupiter_moid|}}}
| label56 = Saturn [[Minimum orbit intersection distance|MOID]]
| data56 = {{{saturn_moid|}}}
| label57 = Uranus [[Minimum orbit intersection distance|MOID]]
| data57 = {{{uranus_moid|}}}
| label58 = Neptune [[Minimum orbit intersection distance|MOID]]
| data58 = {{{neptune_moid|}}}
| label59 = [[Tisserand's parameter|T<sub>Jupiter</sub>]]
| data59 = {{{tisserand|}}}
| header60 = [[Proper orbital elements]]{{{p_orbit_ref|}}}
| label61 = {{longitem|Proper [[Semi-major and semi-minor axes|semi-major axis]]}}
| data61 = {{#if:{{{p_semimajor|}}} |{{{p_semimajor}}} [[Astronomical unit|AU]]}}
| label62 = {{longitem|Proper [[Semi-major and semi-minor axes|semi-major axis]]}}
| data62 = {{{p_semimajor_unitless|}}}
| label63 = {{longitem|Proper [[Orbital eccentricity|eccentricity]]}}
| data63 = {{{p_eccentricity|}}}
| label64 = {{longitem|Proper [[Orbital inclination|inclination]]}}
| data64 = {{{p_inclination|}}}
| label65 = {{longitem|Proper [[mean motion]]}}
| data65 = {{#if:{{{p_mean_motion|}}} |{{{p_mean_motion}}} [[Degree (angle)|deg]]{{\}}[[Julian year (astronomy)|yr]]}}
| label66 = {{longitem|Proper [[orbital period]]}}
| data66 = {{#if:{{{p_mean_motion|}}}|{{#expr:360/{{if empty|{{{p_mean_motion|}}}|1}} round 5}} [[Julian year (astronomy)|yr]]<br />({{#expr:365.25*360/{{if empty|{{{p_mean_motion|}}}|1}} round 3}} [[day|d]]) }}
| label67 = {{longitem|Proper [[orbital period]]}}
| data67 = {{{p_period_unitless|}}}
| label68 = {{longitem|Precession of [[longitude of periapsis|perihelion long.]]}}
| data68 = {{#if:{{{perihelion_rate|}}}|{{{perihelion_rate}}} [[Arcsecond|arcsec]]{{\}}[[Julian year (astronomy)|yr]] }}
| label69 = {{longitem|Precession of [[Longitude of the ascending node|asc. node]]}}
| data69 = {{#if:{{{node_rate|}}}|{{{node_rate}}} [[Arcsecond|arcsec]]{{\}}[[Julian year (astronomy)|yr]]}}
| header70 = {{anchor|Infobox Physical characteristics}}{{#if:{{{minorplanet|}}}| [[Standard asteroid physical characteristics|Physical characteristics]]|Physical characteristics}}{{{physical_ref|}}}
| label71 = [[Mean radius (astronomy)|Dimensions]]
| data71 = {{{dimensions|}}}
| label72 = {{longitem|[[Mean radius (astronomy)|Mean diameter]]}}
| data72 = {{{mean_diameter|}}}
| label73 = {{longitem|[[Mean radius (astronomy)|Mean radius]]}}
| data73 = {{{mean_radius|}}}
| label74 = {{longitem|[[Equator]]ial radius}}
| data74 = {{{equatorial_radius|}}}
| label75 = {{longitem|[[Geographical pole|Polar]] radius}}
| data75 = {{{polar_radius|}}}
| label76 = [[Flattening]]
| data76 = {{{flattening|}}}
| label77 = Circumference
| data77 = {{{circumference|}}}
| label78 = {{longitem|[[Spheroid#Area|Surface area]]}}
| data78 = {{{surface_area|}}}
| label79 = [[Volume]]
| data79 = {{{volume|}}}
| label80 = [[Mass]]
| data80 = {{{mass|}}}
| label81 = {{longitem|Mean [[density]]}}
| data81 = {{{density|}}}
| label82 = {{longitem|{{#if:{{{minorplanet|}}}|Equatorial [[Standard asteroid physical characteristics#Surface gravity|surface gravity]]|[[Surface gravity]]}}}}
| data82 = {{{surface_grav|}}}
| label83 = {{longitem|[[Moment of inertia factor]]}}
| data83 = {{{moment_of_inertia_factor|}}}
| label84 = {{longitem|{{#if:{{{minorplanet|}}} |Equatorial [[escape velocity]] |[[Escape velocity]]}}}}
| data84 = {{{escape_velocity|}}}
| label85 = {{longitem|[[Synodic rotation period]]}}
| data85 = {{{rotation|}}}
| label86 = {{longitem|[[Sidereal rotation period]]}}
| data86 = {{{sidereal_day|}}}
| label87 = {{longitem|Equatorial rotation velocity}}
| data87 = {{{rot_velocity|}}}
| label88 = {{longitem|[[Axial tilt]]}}
| data88 = {{{axial_tilt|}}}
| label89 = {{longitem|North pole {{nowrap|[[right ascension]]}}}}
| data89 = {{{right_asc_north_pole|}}}
| label90 = {{longitem|North pole [[declination]]}}
| data90 = {{{declination|}}}
| label91 = {{longitem|Pole [[Ecliptic coordinate system|ecliptic longitude]]}}
| data91 = {{{pole_ecliptic_lon|}}}
| label92 = {{longitem|Pole [[Ecliptic coordinate system|ecliptic latitude]]}}
| data92 = {{{pole_ecliptic_lat|}}}
| label93 = {{#if:{{{minorplanet|}}} |{{longitem|[[Geometric albedo]]}} |[[Albedo]]}}
| data93 = {{{albedo|}}}
| label94 = [[Temperature]]
| data94 = {{{single_temperature|}}}
| data100 = {{#if:{{{temp_name1|}}}{{{temp_name2|}}}{{{temp_name3|}}}{{{temp_name4|}}}|
<table style="border-spacing: 0px; width:100%; border:none; margin:0; line-height:1.2em; white-space:nowrap"><tr>
<th style="width:33%; padding-right:0.25em; text-align:left">Surface [[temperature|temp.]]</th>
<th style="padding-right:0.25em; text-align:center">min</th>
<th style="padding-right:0.25em; text-align:center">mean</th>
<th style="padding-right:0.25em; text-align:center">max</th>
</tr>{{#if:{{{temp_name1|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name1}}}</th>
<td style="text-align:center">{{{min_temp_1|}}}</td>
<td style="text-align:center">{{{mean_temp_1|}}}</td>
<td style="text-align:center">{{{max_temp_1|}}}</td>
</tr>}}{{#if:{{{temp_name2|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name2}}}</th>
<td style="text-align:center">{{{min_temp_2|}}}</td>
<td style="text-align:center">{{{mean_temp_2|}}}</td>
<td style="text-align:center">{{{max_temp_2|}}}</td>
</tr>}}{{#if:{{{temp_name3|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name3}}}</th>
<td style="text-align:center">{{{min_temp_3|}}}</td>
<td style="text-align:center">{{{mean_temp_3|}}}</td>
<td style="text-align:center">{{{max_temp_3|}}}</td>
</tr>}}{{#if:{{{temp_name4|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name4}}}</th>
<td style="text-align:center">{{{min_temp_4|}}}</td>
<td style="text-align:center">{{{mean_temp_4|}}}</td>
<td style="text-align:center">{{{max_temp_4|}}}</td>
</tr>}}
</table>}}
| label101 = Surface [[absorbed dose]] [[Dose rate|rate]]
| data101 = {{{surface_absorbed_dose_rate|}}}
| label102 = Surface [[equivalent dose]] [[Dose rate|rate]]
| data102 = {{{surface_equivalent_dose_rate|}}}
| label103 = {{longitem|{{#if:{{{minorplanet|}}}|[[Asteroid spectral types|Spectral type]]|Spectral type}}}}
| data103 = {{{spectral_type|}}}
| label104 = {{longitem|[[Asteroid family]]}}
| data104 = {{{family|}}}
| label105 = {{longitem|[[Apparent magnitude]]}}
| data105 = {{{magnitude|}}}
| label106 = {{longitem|[[Absolute magnitude#Solar System bodies (H)|Absolute magnitude ''(H)'']]}}
| data106 = {{{abs_magnitude|}}}
| label107 = {{longitem|[[Angular diameter]]}}
| data107 = {{{angular_size|}}}
| header110 = Atmosphere{{{atmosphere_ref|}}}
| label111 = {{longitem|Surface [[Atmospheric pressure|pressure]]}}
| data111 = {{{surface_pressure|}}}
| label112 = {{longitem|[[Scale height]]}}
| data112 = {{{scale_height|}}}
| label113 = [[Atmospheric chemistry#Atmospheric composition|Composition by volume]]
| data113 = {{{atmosphere_composition|}}}
| below = <includeonly>{{#if:{{{note|}}}||{{reflist|group="note"}} }}</includeonly>
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox planet with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox planet]] with unknown parameter "_VALUE_"|ignoreblank=y| abs_magnitude | adjective | adjectives | albedo | allsatellites | alt_names | angular_dist | angular_size | aphelion | apoapsis | apsis | apoastron | arg_peri | asc_node | atmosphere | atmosphere_composition | atmosphere_ref | avg_speed | axial_tilt | background | barycentric | bgcolour | caption | circumference | declination | density | dimensions | discovered | discoverer | discovery_method | discovery_ref | discovery_site | earliest_precovery_date | eccentricity | epoch | equatorial_radius | escape_velocity | exosolar planets | extrasolarplanet | family | flattening | group | image | image_alt | image_scale | inclination | jupiter_moid | label_width | long_periastron | magnitude | mars_moid | mass | max_temp_1 | max_temp_2 | max_temp_3 | max_temp_4 | mean_anomaly | mean_diameter | mean_motion | mean_orbit_radius | mean_radius | mean_temp_1 | mean_temp_2 | mean_temp_3 | mean_temp_4 | mercury_moid | min_temp_1 | min_temp_2 | min_temp_3 | min_temp_4 | minorplanet | moid | moment_of_inertia_factor | mp_category | mp_name | mpc_name | name | named_after | neptune_moid | node_rate | note | observation_arc | orbit_diagram | orbit_ref | p_eccentricity | p_inclination | p_mean_motion | p_orbit_ref | p_period_unitless | p_semimajor | p_semimajor_unitless | periapsis | periastron | perihelion | perihelion_rate | period | physical_ref | polar_radius | pole_ecliptic_lat | pole_ecliptic_lon | pronounce | pronounced | right_asc_north_pole | rot_velocity | rotation | satellite_of | satellites | saturn_moid | scale_height | semi-amplitude | semimajor | sidereal_day | single_temperature | spectral_type | star | surface_area | surface_grav | surface_pressure | surface_absorbed_dose_rate | surface_equivalent_dose_rate | symbol | synodic_period | temp_name1 | temp_name2 | temp_name3 | temp_name4 | time_periastron | tisserand | uncertainty | uranus_moid | venus_moid | volume }}{{#invoke:Check for conflicting parameters|check
| template = [[Template:Infobox planet]]
| cat = {{main other|Category:Pages using infobox planet with conflicting parameters}}
| background; bgcolour
| mpc_name; mp_name
| pronounce; pronounced
| adjectives; adjective
| p_semimajor; p_semimajor_unitless
| p_mean_motion; p_period_unitless
}}<noinclude>
{{documentation}}
</noinclude>
89s24qrum5ygnlqo17intsvi7gxorf0
126099
126088
2026-07-15T11:24:19Z
Fongcwele
16873
126099
wikitext
text/x-wiki
{{#invoke:infobox|infoboxTemplate
| class = vcard
| titleclass = fn org
| title = {{{name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|upright={{if empty|{{{image_scale|}}}|1.1}}|alt={{{image_alt|}}}}}
| caption = {{{caption|}}}
| headerstyle = {{#if:{{{background|}}}{{{bgcolour|}}}|background-color:{{if empty|{{{background|}}}|{{{bgcolour|}}}}}|background-color:#E0CCFF}}; color:inherit;
| labelstyle = max-width:{{if empty|{{{label_width|}}}|11em}};
| autoheaders = y
| header1 = Discovery{{{discovery_ref|}}}
| label2 = [[List of minor planet discoverers|Discovered by]]
| data2 = {{{discoverer|}}}
| label3 = Indawo yokuvubukulwa
| data3 = {{{discovery_site|}}}
| label4 = Usuku lokuvubukulwa
| data4 = {{{discovered|}}}
| label5 = {{longitem|Indlela yokusihlonga}}
| data5 = {{{discovery_method|}}}
| header10 = {{#if:{{{extrasolarplanet|}}}{{{Imizulendle|}}}|[[Exoplanet#Nomenclature|Designations]]|Amagama}}
| label11 = {{longitem|{{#if:{{{minorplanet|}}}|<!--[[Minor-planet designation|MPC designation]]-->|Igama}}}}
| data11 = {{#if:{{{minorplanet|}}}||{{if empty|{{{mpc_name|}}}|{{{mp_name|}}}}}}}
| label12 = Ukuphinyiswa
| data12 = {{if empty|{{{pronounce|}}}|{{{pronounced|}}}}}
| label13 = {{longitem|Eqanjwe ngakho}}
| data13 = {{{named_after|}}}
| label14 = {{longitem|{{#if:{{{minorplanet|}}}|[[Provisional designation in astronomy|Alternative designations]]|[[Provisional designation in astronomy|Amanye amagama]]}}}}
| data14 = {{{alt_names|}}}
| label15 = {{longitem|[[Minor planet#Populations|Minor planet category]]}}
| data15 = {{{mp_category|}}}
| label16 = [[List of adjectivals and demonyms of astronomical bodies|Iziphawulo]]
| data16 = {{if empty|{{{adjectives|}}}|{{{adjective|}}}}}
| label17 = [[Planet symbols|Uphawu]]
| data17 = {{{symbol|}}}
| header20 = [[Osculating orbit|Izinkondolo zozungezo]]{{#ifeq:{{{barycentric|}}}|yes| [[Barycenter#Inside or outside the Sun?|(barycentric)]]}}{{{orbit_ref|}}}
| data21 = {{{orbit_diagram|}}}
| data22 = {{#if:{{{epoch|}}} |[[Epoch (astronomy)|Ikhathi]] {{{epoch}}}}}
| data23 = {{#if:{{{uncertainty|}}} | [[Uncertainty parameter]] {{{uncertainty}}}}}
| label24 = [[Observation arc]]
| data24 = {{{observation_arc|}}}
| label25 = Usuku langaphambilini
| data25 = {{{earliest_precovery_date|}}}
| label26 = {{#switch:{{{apsis}}} |apsis|gee|barion|center|centre|(apsis)=[[Apsis|Apo{{{apsis}}}]] |[[Perihelion and aphelion|Ku{{if empty|{{{apsis|}}}|dana}}]]}}
| data26 = {{{aphelion|}}}
| label27 = [[Perihelion and aphelion|Fuphi{{if empty|{{{apsis|}}}|nelanga}}]]
| data27 = {{{perihelion|}}}
| label28 = [[Apsis|eFuphi]]
| data28 = {{{periapsis|}}}
| label29 = Kude nomhlaba
| data29 = {{{apoapsis|}}}
| label30 = [[Apsis|Periastron]]
| data30 = {{{periastron|}}}
| label31 = [[Apsis|Apoastron]]
| data31 = {{{apoastron|}}}
| label32 = {{longitem|[[Semi-major and semi-minor axes|Ibanga elilangiselwe]]}}
| data32 = {{{semimajor|}}}
| label33 = {{longitem|Umugqazinga wozungezo}}
| data33 = {{{mean_orbit_radius|}}}
| label34 = Ubukhophelana
| data34 = {{{eccentricity|}}}
| label35 = {{longitem|[[Orbital period|Inkathi yozungezo (elangeni)]]}}
| data35 = {{{period|}}}
| label36 = {{longitem|[[Orbital period|Orbital period (kobukayo)]]}}
| data36 = {{{synodic_period|}}}
| label37 = {{longitem|Average [[orbital speed]]}}
| data37 = {{{avg_speed|}}}
| label38 = {{longitem|[[Mean anomaly#Mean anomaly at epoch|Mean anomaly]]}}
| data38 = {{{mean_anomaly|}}}
| label39 = {{longitem|[[Mean motion]]}}
| data39 = {{{mean_motion|}}}
| label40 = [[Orbital inclination|Umthambeko]]
| data40 = {{{inclination|}}}
| label41 = {{longitem|[[Ibanga lengoni]]}}
| data41 = {{{angular_dist|}}}
| label42 = {{longitem|[[Longitude of the ascending node|Longitude of ascending node]]}}
| data42 = {{{asc_node|}}}
| label43 = {{longitem|[[Longitude of the periapsis|Longitude of]] [[Apsis|peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data43 = {{{long_periastron|}}}
| label44 = {{longitem|[[Apsis|Time of peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data44 = {{{time_periastron|}}}
| label45 = {{longitem|[[Argument of periapsis|Argument of peri{{if empty|{{{apsis|}}}|helion}}]]}}
| data45 = {{{arg_peri|}}}
| label46 = {{nowrap|[[Amplitude|Semi-amplitude]]}}
| data46 = {{{semi-amplitude|}}}
| label47 = [[Iduna|Idunanbsp;lawo]]
| data47 = {{{satellite_of|}}}
| label48 = [[Irregular moon#Group|Group]]
| data48 = {{{group|}}}
| label49 = {{#switch:{{{allsatellites|}}} |yes|true=[[Iduna|Iduna]]|[[Iduna|Aduna]]aziwayo}}
| data49 = {{{satellites|}}}
| label50 = Inkanyezi
| data50 = {{{star|}}}
| label51 = Earth [[Minimum orbit intersection distance|MOID]]
| data51 = {{{moid|}}}
| label52 = Mercury [[Minimum orbit intersection distance|MOID]]
| data52 = {{{mercury_moid|}}}
| label53 = Venus [[Minimum orbit intersection distance|MOID]]
| data53 = {{{venus_moid|}}}
| label54 = Mars [[Minimum orbit intersection distance|MOID]]
| data54 = {{{mars_moid|}}}
| label55 = Jupiter [[Minimum orbit intersection distance|MOID]]
| data55 = {{{jupiter_moid|}}}
| label56 = Saturn [[Minimum orbit intersection distance|MOID]]
| data56 = {{{saturn_moid|}}}
| label57 = Uranus [[Minimum orbit intersection distance|MOID]]
| data57 = {{{uranus_moid|}}}
| label58 = Neptune [[Minimum orbit intersection distance|MOID]]
| data58 = {{{neptune_moid|}}}
| label59 = [[Tisserand's parameter|T<sub>Jupiter</sub>]]
| data59 = {{{tisserand|}}}
| header60 = [[Proper orbital elements]]{{{p_orbit_ref|}}}
| label61 = {{longitem|Proper [[Semi-major and semi-minor axes|semi-major axis]]}}
| data61 = {{#if:{{{p_semimajor|}}} |{{{p_semimajor}}} [[Astronomical unit|AU]]}}
| label62 = {{longitem|Proper [[Semi-major and semi-minor axes|semi-major axis]]}}
| data62 = {{{p_semimajor_unitless|}}}
| label63 = {{longitem|Proper [[Orbital eccentricity|eccentricity]]}}
| data63 = {{{p_eccentricity|}}}
| label64 = {{longitem|Proper [[Orbital inclination|inclination]]}}
| data64 = {{{p_inclination|}}}
| label65 = {{longitem|Proper [[mean motion]]}}
| data65 = {{#if:{{{p_mean_motion|}}} |{{{p_mean_motion}}} [[Degree (angle)|deg]]{{\}}[[Julian year (astronomy)|yr]]}}
| label66 = {{longitem|Proper [[orbital period]]}}
| data66 = {{#if:{{{p_mean_motion|}}}|{{#expr:360/{{if empty|{{{p_mean_motion|}}}|1}} round 5}} [[Julian year (astronomy)|yr]]<br />({{#expr:365.25*360/{{if empty|{{{p_mean_motion|}}}|1}} round 3}} [[day|d]]) }}
| label67 = {{longitem|Proper [[orbital period]]}}
| data67 = {{{p_period_unitless|}}}
| label68 = {{longitem|Precession of [[longitude of periapsis|perihelion long.]]}}
| data68 = {{#if:{{{perihelion_rate|}}}|{{{perihelion_rate}}} [[Arcsecond|arcsec]]{{\}}[[Julian year (astronomy)|yr]] }}
| label69 = {{longitem|Precession of [[Longitude of the ascending node|asc. node]]}}
| data69 = {{#if:{{{node_rate|}}}|{{{node_rate}}} [[Arcsecond|arcsec]]{{\}}[[Julian year (astronomy)|yr]]}}
| header70 = {{anchor|Infobox Physical characteristics}}{{#if:{{{minorplanet|}}}| [[Standard asteroid physical characteristics|Izinkondolo zoqobo]]|Physical characteristics}}{{{physical_ref|}}}
| label71 = [[Mean radius (astronomy)|Imingako]]
| data71 = {{{dimensions|}}}
| label72 = {{longitem|[[Mean radius (astronomy)|Ibangandilinga]]}}
| data72 = {{{mean_diameter|}}}
| label73 = {{longitem|[[Mean radius (astronomy)|Umugqazinga ophakathi]]}}
| data73 = {{{mean_radius|}}}
| label74 = {{longitem|Umugqazinga wenkabazwe}}
| data74 = {{{equatorial_radius|}}}
| label75 = {{longitem|Umugqazinga wechopho}}
| data75 = {{{polar_radius|}}}
| label76 = Isicaba
| data76 = {{{flattening|}}}
| label77 = Ubundilinga
| data77 = {{{circumference|}}}
| label78 = {{longitem|[[Spheroid#Area|Ububanzi bobuso]]}}
| data78 = {{{surface_area|}}}
| label79 = [[Ummumatho]]
| data79 = {{{volume|}}}
| label80 = [[Isisindo]]
| data80 = {{{mass|}}}
| label81 = {{longitem|Mean [[density]]}}
| data81 = {{{density|}}}
| label82 = {{longitem|{{#if:{{{minorplanet|}}}|Equatorial [[Standard asteroid physical characteristics#Surface gravity|surface gravity]]|[[Surface gravity]]}}}}
| data82 = {{{surface_grav|}}}
| label83 = {{longitem|[[Moment of inertia factor]]}}
| data83 = {{{moment_of_inertia_factor|}}}
| label84 = {{longitem|{{#if:{{{minorplanet|}}} |Equatorial [[escape velocity]] |[[Escape velocity]]}}}}
| data84 = {{{escape_velocity|}}}
| label85 = {{longitem|[[Synodic rotation period]]}}
| data85 = {{{rotation|}}}
| label86 = {{longitem|[[Sidereal rotation period]]}}
| data86 = {{{sidereal_day|}}}
| label87 = {{longitem|Equatorial rotation velocity}}
| data87 = {{{rot_velocity|}}}
| label88 = {{longitem|[[Axial tilt]]}}
| data88 = {{{axial_tilt|}}}
| label89 = {{longitem|North pole {{nowrap|[[right ascension]]}}}}
| data89 = {{{right_asc_north_pole|}}}
| label90 = {{longitem|North pole [[declination]]}}
| data90 = {{{declination|}}}
| label91 = {{longitem|Pole [[Ecliptic coordinate system|ecliptic longitude]]}}
| data91 = {{{pole_ecliptic_lon|}}}
| label92 = {{longitem|Pole [[Ecliptic coordinate system|ecliptic latitude]]}}
| data92 = {{{pole_ecliptic_lat|}}}
| label93 = {{#if:{{{minorplanet|}}} |{{longitem|[[Geometric albedo]]}} |[[Albedo]]}}
| data93 = {{{albedo|}}}
| label94 = [[Temperature]]
| data94 = {{{single_temperature|}}}
| data100 = {{#if:{{{temp_name1|}}}{{{temp_name2|}}}{{{temp_name3|}}}{{{temp_name4|}}}|
<table style="border-spacing: 0px; width:100%; border:none; margin:0; line-height:1.2em; white-space:nowrap"><tr>
<th style="width:33%; padding-right:0.25em; text-align:left">Surface [[temperature|temp.]]</th>
<th style="padding-right:0.25em; text-align:center">min</th>
<th style="padding-right:0.25em; text-align:center">mean</th>
<th style="padding-right:0.25em; text-align:center">max</th>
</tr>{{#if:{{{temp_name1|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name1}}}</th>
<td style="text-align:center">{{{min_temp_1|}}}</td>
<td style="text-align:center">{{{mean_temp_1|}}}</td>
<td style="text-align:center">{{{max_temp_1|}}}</td>
</tr>}}{{#if:{{{temp_name2|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name2}}}</th>
<td style="text-align:center">{{{min_temp_2|}}}</td>
<td style="text-align:center">{{{mean_temp_2|}}}</td>
<td style="text-align:center">{{{max_temp_2|}}}</td>
</tr>}}{{#if:{{{temp_name3|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name3}}}</th>
<td style="text-align:center">{{{min_temp_3|}}}</td>
<td style="text-align:center">{{{mean_temp_3|}}}</td>
<td style="text-align:center">{{{max_temp_3|}}}</td>
</tr>}}{{#if:{{{temp_name4|}}}|<tr>
<th style="padding-left:1.0em">{{{temp_name4}}}</th>
<td style="text-align:center">{{{min_temp_4|}}}</td>
<td style="text-align:center">{{{mean_temp_4|}}}</td>
<td style="text-align:center">{{{max_temp_4|}}}</td>
</tr>}}
</table>}}
| label101 = Surface [[absorbed dose]] [[Dose rate|rate]]
| data101 = {{{surface_absorbed_dose_rate|}}}
| label102 = Surface [[equivalent dose]] [[Dose rate|rate]]
| data102 = {{{surface_equivalent_dose_rate|}}}
| label103 = {{longitem|{{#if:{{{minorplanet|}}}|[[Asteroid spectral types|Spectral type]]|Spectral type}}}}
| data103 = {{{spectral_type|}}}
| label104 = {{longitem|[[Asteroid family]]}}
| data104 = {{{family|}}}
| label105 = {{longitem|[[Apparent magnitude]]}}
| data105 = {{{magnitude|}}}
| label106 = {{longitem|[[Absolute magnitude#Solar System bodies (H)|Absolute magnitude ''(H)'']]}}
| data106 = {{{abs_magnitude|}}}
| label107 = {{longitem|[[Angular diameter]]}}
| data107 = {{{angular_size|}}}
| header110 = Atmosphere{{{atmosphere_ref|}}}
| label111 = {{longitem|Surface [[Atmospheric pressure|pressure]]}}
| data111 = {{{surface_pressure|}}}
| label112 = {{longitem|[[Scale height]]}}
| data112 = {{{scale_height|}}}
| label113 = [[Atmospheric chemistry#Atmospheric composition|Composition by volume]]
| data113 = {{{atmosphere_composition|}}}
| below = <includeonly>{{#if:{{{note|}}}||{{reflist|group="note"}} }}</includeonly>
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox planet with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox planet]] with unknown parameter "_VALUE_"|ignoreblank=y| abs_magnitude | adjective | adjectives | albedo | allsatellites | alt_names | angular_dist | angular_size | aphelion | apoapsis | apsis | apoastron | arg_peri | asc_node | atmosphere | atmosphere_composition | atmosphere_ref | avg_speed | axial_tilt | background | barycentric | bgcolour | caption | circumference | declination | density | dimensions | discovered | discoverer | discovery_method | discovery_ref | discovery_site | earliest_precovery_date | eccentricity | epoch | equatorial_radius | escape_velocity | exosolar planets | extrasolarplanet | family | flattening | group | image | image_alt | image_scale | inclination | jupiter_moid | label_width | long_periastron | magnitude | mars_moid | mass | max_temp_1 | max_temp_2 | max_temp_3 | max_temp_4 | mean_anomaly | mean_diameter | mean_motion | mean_orbit_radius | mean_radius | mean_temp_1 | mean_temp_2 | mean_temp_3 | mean_temp_4 | mercury_moid | min_temp_1 | min_temp_2 | min_temp_3 | min_temp_4 | minorplanet | moid | moment_of_inertia_factor | mp_category | mp_name | mpc_name | name | named_after | neptune_moid | node_rate | note | observation_arc | orbit_diagram | orbit_ref | p_eccentricity | p_inclination | p_mean_motion | p_orbit_ref | p_period_unitless | p_semimajor | p_semimajor_unitless | periapsis | periastron | perihelion | perihelion_rate | period | physical_ref | polar_radius | pole_ecliptic_lat | pole_ecliptic_lon | pronounce | pronounced | right_asc_north_pole | rot_velocity | rotation | satellite_of | satellites | saturn_moid | scale_height | semi-amplitude | semimajor | sidereal_day | single_temperature | spectral_type | star | surface_area | surface_grav | surface_pressure | surface_absorbed_dose_rate | surface_equivalent_dose_rate | symbol | synodic_period | temp_name1 | temp_name2 | temp_name3 | temp_name4 | time_periastron | tisserand | uncertainty | uranus_moid | venus_moid | volume }}{{#invoke:Check for conflicting parameters|check
| template = [[Template:Infobox planet]]
| cat = {{main other|Category:Pages using infobox planet with conflicting parameters}}
| background; bgcolour
| mpc_name; mp_name
| pronounce; pronounced
| adjectives; adjective
| p_semimajor; p_semimajor_unitless
| p_mean_motion; p_period_unitless
}}<noinclude>
{{documentation}}
</noinclude>
2rratysc0htll9b8dttoepbnz8xcqwt
Template:Infobox event
10
34723
126078
2026-07-15T10:14:39Z
Fongcwele
16873
Created page with "{{#invoke:infobox|infoboxTemplate | bodyclass = {{#if:{{{nongregorian|}}}||vevent}} | subheader = {{#if:{{{part_of|}}}|Part of {{{part_of|}}}}} | child = {{if empty|{{{child|}}}|no}} | titleclass = summary | title = {{if empty | {{{name|}}} | {{#ifeq:{{{child|}}}|yes||{{PAGENAMEBASE}}}} }} | image1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|sizedefault=frameless|maxsize=300|size={{{logo_size|}}}|upright={{if empty|{{{logo_upright|}}}|1}}|al..."
126078
wikitext
text/x-wiki
{{#invoke:infobox|infoboxTemplate
| bodyclass = {{#if:{{{nongregorian|}}}||vevent}}
| subheader = {{#if:{{{part_of|}}}|Part of {{{part_of|}}}}}
| child = {{if empty|{{{child|}}}|no}}
| titleclass = summary
| title = {{if empty | {{{name|}}} | {{#ifeq:{{{child|}}}|yes||{{PAGENAMEBASE}}}} }}
| image1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|sizedefault=frameless|maxsize=300|size={{{logo_size|}}}|upright={{if empty|{{{logo_upright|}}}|1}}|alt={{{logo_alt|}}}}}
| caption1 = {{{logo_caption|}}}
| image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{if empty|{{{image_upright|}}}|1.1}}|thumbtime={{{thumbtime|}}}|alt={{{image_alt|}}}}}
| caption2 = {{{image_caption|}}}
| imagestyle = {{#if:{{{image_caption|}}}|border-bottom:#aaa solid 1px}}
| image3 = {{#invoke:InfoboxImage|InfoboxImage |image={{{map|}}} |size={{{map_size|}}} |sizedefault=250px |alt={{{map_alt|}}} }}
| caption3 = {{{map_caption|}}}
| image4 = {{#invoke:Location map|infobox_pushpin_map
| pushpin_label = {{if empty | {{{pushpin_label|}}} | {{{name|}}} | {{PAGENAMEBASE}} }}
| pushpin_mark = Blue_pog.svg
| pushpin_mark_size = 9
| coordinates = {{if empty|{{{coordinates|}}}|{{#property:P625}}}}
}}
| image5 = {{#invoke:Infobox mapframe|autoWithCaption
| onByDefault = {{#if:{{{map|}}}{{{pushpin_map|}}}{{{child|}}}|no|yes}}
}}
| datastyle = text-align: left;
| headerstyle = background-color:lavender;color:inherit;
| label1 = Native name
| data1 = {{#if:{{{native_name|}}}|<span {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}> {{{native_name}}}</span>}}
| label2 = English name
| data2 = {{{english_name|}}}
| label3 = Usuku
| data3 = {{{date|}}}
| label4 = Isikhathi
| data4 = {{{time|}}} {{#if:{{{timezone|}}}|({{{timezone}}})}}
| label5 = Ubude besehlakalo
| data5 = {{{duration|}}}
| label6 = Indawo
| data6 = {{{venue|}}}
| label7 = Indawo
| class7 = location
| data7 = {{ubl
| {{{location|}}}
| {{{coordinates|}}}
}}
| label9 = Saziwa nangokuthi
| data9 = {{{also_known_as|}}}
| label10 = Uhlobo
| data10 = {{{type|}}}
| label11 = Ingqikithi
| data11 = {{{theme|}}}
| label12 = Imbangela
| data12 = {{{cause|}}}
| label13 = Isisusa
| data13 = {{{motive|}}}
| label14 = Ingcwimbi
| data14 = {{{target|}}}
| label15 = Umgili{{pluralize from text|{{{Abagili|}}}|plural=}}
| data15 = {{{perpetrator|}}}
| label16 = {{#if:{{{reporter|}}}|Umbiki|First reporter}}
| data16 = {{if empty|{{{reporter|}}}|{{{first_reporter|}}}}}
| label17 = Isabelomali
| data17 = {{{budget|}}}
| label18 = Isihameli{{pluralize from text|{{{Izihambeli|}}}|plural=}}
| data18 = {{{patrons|}}}
| label19 = {{#if:{{{organisers|}}}|Organised|Organized}} by
| data19 = {{if empty|{{{organisers|}}}|{{{organizers|}}}}}
| label20 = Sathwetshulwa ngu
| data20 = {{{filmed_by|}}}
| label21 = Abahlanganyeli
| data21 = {{{participants|}}}
| class21 = attendee
| label22 = Iziphumo
| data22 = {{{outcome|}}}
| class22 = description
| label26 = Abagilwa
| data26 = {{{casualties|}}}
| label27 = Abashona
| data27 = {{{deaths|}}}
| label28 = Abalimala
| data28 = {{{injuries|}}}
| label29 = Abalahleka
| data29 = {{{missing|}}}
| label30 = {{longitem|Umonakalo wempahla}}
| data30 = {{{property_damage|}}}
| label31 = Umgcwabo
| data31 = {{{burial|}}}
| label32 = Abakhwebuka
| data32 = {{{displaced|}}}
| label33 = Inquiries
| data33 = {{{inquiries|}}}
| label34 = Inquest
| data34 = {{{inquest|}}}
| label35 = Coroner
| data35 = {{{coroner|}}}
| label36 = Ababoshwa
| data36 = {{{arrests|}}}
| label37 = Abasolwayo
| data37 = {{{suspects|}}}
| label38 = Abamanglelwa
| data38 = {{{accused|}}}
| label39 = Abalahlwa icala
| data39 = {{{convicted|}}}
| label40 = Amacala
| data40 = {{{charges|}}}
| label41 = Ukuqulwa kwecala
| data41 = {{{trial|}}}
| label42 = Isigibo
| data42 = {{{verdict|}}}
| label43 = Agwetshiwe
| data43 = {{{convictions|}}}
| label44 = Isigwebo
| data44 = {{{sentence|}}}
| label45 = Publication bans
| data45 = {{{publication_bans|}}}
| label46 = Litigation
| data46 = {{{litigation|}}}
| label47 = Izindodo
| data47 = {{{awards|}}}
| label48 = Footage
| data48 = {{{footage|}}}
| label49 = {{{custom_label|}}}
| data49 = {{#if:{{{custom_label|}}}|{{{custom_data|}}}}}
| label50 = {{{custom_label1|}}}
| data50 = {{#if:{{{custom_label1|}}}|{{{custom_data1|}}}}}
| label51 = {{{custom_label2|}}}
| data51 = {{#if:{{{custom_label2|}}}|{{{custom_data2|}}}}}
| label52 = Isizindalwebu
| data52 = {{{website|}}}
| data53 = {{{module|}}}
| belowstyle = border-top: #aaa 1px solid;
| below = {{{notes|}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox event with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox event]] with unknown parameter "_VALUE_"|ignoreblank=y|mapframe_args=y|pushpin_map_args=y| accused | also_known_as | arrests | awards | budget | burial | casualties | cause | charges | child | convicted | convictions | coordinates | coroner | custom_data | custom_data1 | custom_data2 | custom_label | custom_label1 | custom_label2 | date | deaths | displaced | duration | english_name | filmed_by | first_reporter | footage | image | image_alt | image_caption | image_size | image_upright | injuries | inquest | inquiries | litigation | location | logo | logo_alt | logo_caption | logo_size | logo_upright | map | map_alt | map_caption | map_size | missing | module | motive | name | native_name | native_name_lang | nongregorian | notes | organisers | organizers | outcome | part_of | participants | patrons | perpetrator | property_damage | publication_bans | reporter | sentence | suspects | target | theme | thumbtime | time | timezone | trial | type | venue | verdict | website }}{{#invoke:Check for conflicting parameters|check
| template = [[Template:Infobox event]]
| cat = {{main other|Category:Pages using infobox event with conflicting parameters}}
| reporter; first_reporter
| organisers; organizers
}}<noinclude>
{{Documentation}}
<!-- please add category links to the /doc sub-page, not here -->
</noinclude>
qdek1vgv2ow7uu8dylwknlyx90la070
Module:Mapframe
828
34724
126079
2026-07-15T10:17:06Z
Fongcwele
16873
Created page with "-- Note: Originally written on English Wikipedia at https://en.wikipedia.org/wiki/Module:Mapframe --[[---------------------------------------------------------------------------- ##### Localisation (L10n) settings ##### Replace values in quotes ("") with localised values ----------------------------------------------------------------------------]]-- local L10n = {} local wb = mw.wikibase -- Modue dependencies local parser -- local copy of https://www.mediawiki.org/w..."
126079
Scribunto
text/plain
-- Note: Originally written on English Wikipedia at https://en.wikipedia.org/wiki/Module:Mapframe
--[[----------------------------------------------------------------------------
##### Localisation (L10n) settings #####
Replace values in quotes ("") with localised values
----------------------------------------------------------------------------]]--
local L10n = {}
local wb = mw.wikibase
-- Modue dependencies
local parser -- local copy of https://www.mediawiki.org/wiki/Module:WikitextParser loaded lazily
-- "strict" should not be used, at least until all other modules which require this module are not using globals.
-- Template parameter names (unnumbered versions only)
-- Specify each as either a single string, or a table of strings (aliases)
-- Aliases are checked left-to-right, i.e. `{ "one", "two" }` is equivalent to using `{{{one| {{{two|}}} }}}` in a template
L10n.para = {
display = "display",
type = "type",
id = { "id", "ids" },
from = "from",
raw = "raw",
title = "title",
description = "description",
strokeColor = { "stroke-color", "stroke-colour" },
strokeWidth = "stroke-width",
strokeOpacity = "stroke-opacity",
fill = "fill",
fillOpacity = "fill-opacity",
coord = "coord",
marker = "marker",
markerColor = { "marker-color", "marker-colour" },
markerSize = "marker-size",
radius = { "radius", "radius_m" },
radiusKm = "radius_km",
radiusFt = "radius_ft",
radiusMi = "radius_mi",
edges = "edges",
text = "text",
icon = "icon",
zoom = "zoom",
frame = "frame",
plain = "plain",
frameWidth = "frame-width",
frameHeight = "frame-height",
frameCoordinates= { "frame-coordinates", "frame-coord" },
frameLatitude = { "frame-lat", "frame-latitude" },
frameLongitude = { "frame-long", "frame-longitude" },
frameAlign = "frame-align",
switch = "switch",
overlay = "overlay",
overlayBorder = "overlay-border",
overlayHorizontalAlignment = "overlay-horizontal-alignment",
overlayVerticalAlignment = "overlay-vertical-alignment",
overlayHorizontalOffset = "overlay-horizontal-offset",
overlayVerticalOffset = "overlay-vertical-offset"
}
-- Names of other templates this module can extract coordinates from
L10n.template = {
templates = { -- The coord template, as well as templates with output that contains {{coord}}
"Coord", "Coord/sandbox",
"NRHP row", "NRHP row/sandbox",
"WikidataCoord", "WikidataCoord/sandbox", "Wikidatacoord", "Wikidata coord"
},
modules = { -- The coordinates module, as well as modules with output that contains {{coord}}
"Coordinates", "Coordinates/sandbox",
"WikidataCoord", "WikidataCoord/sandbox"
}
}
-- Error messages
L10n.error = {
badDisplayPara = "Invalid display parameter",
noCoords = "Coordinates must be specified on Wikidata or in |" .. ( type(L10n.para.coord)== 'table' and L10n.para.coord[1] or L10n.para.coord ) .. "=",
wikidataCoords = "Coordinates not found on Wikidata",
noCircleCoords = "Circle centre coordinates must be specified, or available via Wikidata",
negativeRadius = "Circle radius must be a positive number",
noRadius = "Circle radius must be specified",
negativeEdges = "Circle edges must be a positive number",
noSwitchPara = "Found only one switch value in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=",
oneSwitchLabel = "Found only one label in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=",
noSwitchLists = "At least one parameter must have a SWITCH: list",
switchMismatches = "All SWITCH: lists must have the same number of values",
-- "%s" and "%d" tokens will be replaced with strings and numbers when used
oneSwitchValue = "Found only one switch value in |%s=",
fewerSwitchLabels = "Found %d switch values but only %d labels in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=",
noNamedCoords = "No named coordinates found in %s"
}
-- Other strings
L10n.str = {
-- valid values for display parameter, e.g. (|display=inline) or (|display=title) or (|display=inline,title) or (|display=title,inline)
inline = "inline",
title = "title",
dsep = ",", -- separator between inline and title (comma in the example above)
-- valid values for type parameter
line = "line", -- geoline feature (e.g. a road)
shape = "shape", -- geoshape feature (e.g. a state or province)
shapeInverse = "shape-inverse", -- geomask feature (the inverse of a geoshape)
data = "data", -- geoJSON data page on Commons
point = "point", -- single point feature (coordinates)
circle = "circle", -- circular area around a point
named = "named", -- all named coordinates in an article or section
-- Keyword to indicate a switch list. Must NOT use the special characters ^$()%.[]*+-?
switch = "SWITCH",
-- valid values for icon, frame, and plain parameters
affirmedWords = ' '..table.concat({
"add",
"added",
"affirm",
"affirmed",
"include",
"included",
"on",
"true",
"yes",
"y"
}, ' ')..' ',
declinedWords = ' '..table.concat({
"decline",
"declined",
"exclude",
"excluded",
"false",
"none",
"not",
"no",
"n",
"off",
"omit",
"omitted",
"remove",
"removed"
}, ' ')..' '
}
-- Default values for parameters
L10n.defaults = {
display = L10n.str.inline,
text = "Map",
frameWidth = "300",
frameHeight = "200",
frameAlign = "right",
markerColor = "5E74F3",
markerSize = nil,
strokeColor = "#ff0000",
strokeWidth = 6,
edges = 32, -- number of edges used to approximate a circle
overlayBorder = "1px solid white",
overlayHorizontalAlignment = "right",
overlayHorizontalOffset = "0",
overlayVerticalAlignment = "bottom",
overlayVerticalOffset = "0"
}
-- #### End of L10n settings ####
--[[----------------------------------------------------------------------------
Utility methods
----------------------------------------------------------------------------]]--
local util = {}
--[[
Looks up a parameter value based on the id (a key from the L10n.para table) and
optionally a suffix, for parameters that can be suffixed (e.g. type2 is type
with suffix 2).
@param {table} args key-value pairs of parameter names and their values
@param {string} param_id id for parameter name (key from the L10n.para table)
@param {string} [suffix] suffix for parameter name
@returns {string|nil} parameter value if found, or nil if not found
]]--
function util.getParameterValue(args, param_id, suffix)
suffix = suffix or ''
if type( L10n.para[param_id] ) ~= 'table' then
return args[L10n.para[param_id]..suffix]
end
for _i, paramAlias in ipairs(L10n.para[param_id]) do
if args[paramAlias..suffix] then
return args[paramAlias..suffix]
end
end
return nil
end
--[[
Trim whitespace from args, and remove empty args. Also fix control characters.
@param {table} argsTable
@returns {table} trimmed args table
]]--
function util.trimArgs(argsTable)
local cleanArgs = {}
for key, val in pairs(argsTable) do
if type(key) == 'string' and type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val ~= '' then
-- control characters inside json need to be escaped, but stripping them is simpler
-- See also T214984
-- However, *don't* strip control characters from wikitext (text or description parameters) or you'll break strip markers
-- Alternatively it might be better to only strip control char from raw parameter content
if util.matchesParam('text', key) or util.matchesParam('description', key, key:gsub('^%D+(%d+)$', '%1') ) then
cleanArgs[key] = val
else
cleanArgs[key] = val:gsub('%c',' ')
end
end
else
cleanArgs[key] = val
end
end
return cleanArgs
end
--[[
Check if a parameter name matches an unlocalized parameter key
@param {string} key - the unlocalized parameter name to search through
@param {string} name - the localized parameter name to check
@param {string|nil} - an optional suffix to apply to the value(s) from the localization key
@returns {boolean} true if the name matches the parameter, false otherwise
]]--
function util.matchesParam(key, name, suffix)
local param = L10n.para[key]
suffix = suffix or ''
if type(param) == 'table' then
for _, v in pairs(param) do
if (v .. suffix) == name then return true end
end
return false
end
return ((param .. suffix) == name)
end
--[[
Check if a value is affirmed (one of the values in L10n.str.affirmedWords)
@param {string} val Value to be checked
@returns {boolean} true if affirmed, false otherwise
]]--
function util.isAffirmed(val)
if not(val) then return false end
return string.find(L10n.str.affirmedWords, ' '..val..' ', 1, true ) and true or false
end
--[[
Check if a value is declined (one of the values in L10n.str.declinedWords)
@param {string} val Value to be checked
@returns {boolean} true if declined, false otherwise
]]--
function util.isDeclined(val)
if not(val) then return false end
return string.find(L10n.str.declinedWords , ' '..val..' ', 1, true ) and true or false
end
--[[
Check if the name of a template matches the known coord templates or wrappers
(in L10n.template.templates and L10n.template.modules). The name is normalised
when checked, so e.g. the names "Coord", "coord", and " Coord" all return true.
@param {string} name
@returns {boolean} true if it is a coord template or wrapper, false otherwise
]]--
function util.isCoordTemplateOrWrapper(name)
name = mw.text.trim(name)
local modName = mw.ustring.gsub(name, '#invoke:', '')
local inputTitle = mw.title.new(modName, (name ~= modName) and 'Module' or 'Template')
if not inputTitle then
return false
end
-- Create (or reuse) mw.title objects for each known coord template/wrapper.
-- Stored in L10n.template.title so that they don't need to be recreated
-- each time this function is called
if not L10n.template.titles then
L10n.template.titles = {}
for _, v in pairs(L10n.template.templates) do
table.insert(L10n.template.titles, mw.title.new(v, 'Template'))
end
for _, v in pairs(L10n.template.modules) do
table.insert(L10n.template.titles, mw.title.new(v, 'Module'))
end
end
for _, templateTitle in pairs(L10n.template.titles) do
if mw.title.equals(inputTitle, templateTitle) then
return true
end
end
return false
end
--[[
Recursively extract coord templates which have a name parameter.
@param {string} wikitext
@returns {table} table sequence of coord templates
]]--
function util.extractCoordTemplates(wikitext)
local output = {}
local templates = mw.ustring.gmatch(wikitext, '{%b{}}')
for template in templates do
local templateName = mw.ustring.match(template, '{{([^}|]+)')
local nameParam = mw.ustring.match(template, "|%s*name%s*=%s*[^}|]+")
if util.isCoordTemplateOrWrapper(templateName) then
if nameParam then table.insert(output, template) end
elseif mw.ustring.find(mw.ustring.sub(template, 2), "{{") then
local subOutput = util.extractCoordTemplates(mw.ustring.sub(template, 2))
for _, t in pairs(subOutput) do
table.insert(output, t)
end
end
end
-- ensure coords are not using title display
for k, v in pairs(output) do
output[k] = mw.ustring.gsub(v, "|%s*display%s*=[^|}]+", "|display=inline")
end
return output
end
--[[
Gets all named coordiates from a page or a section of a page.
@param {string|nil} page Page name, or name#section, to get named coordinates
from. If the name is omitted, i.e. #section or nil or empty string, then
the current page will be used.
@returns {table} sequence of {coord, name, description} tables where coord is
the coordinates in a format suitable for #util.parseCoords, name is a string,
and description is a string (coordinates in a format suitable for displaying
to the reader). If for some reason the name can't be found, the description
is nil and the name contains display-format coordinates.
@throws {L10n.error.noNamedCoords} if no named coordinates are found.
]]--
function util.getNamedCoords(page)
local parts = mw.text.split(page or "", "#", true)
local name = parts[1] == "" and mw.title.getCurrentTitle().prefixedText or parts[1]
local section = parts[2]
local title = mw.title.new(name)
if title.isRedirect then
title = title.redirectTarget
end
local pageWikitext = title:getContent()
if section then
if parser == nil then
-- load [[Module:WikitextParser]] lazily so it is only transcluded on pages that use it
parser = require("Module:WikitextParser")
end
pageWikitext = parser.getSection(pageWikitext, section) or ''
end
local coordTemplates = util.extractCoordTemplates(pageWikitext)
if #coordTemplates == 0 then error(string.format(L10n.error.noNamedCoords, page or name), 0) end
local frame = mw.getCurrentFrame()
local sep = "________"
local expandedContent = frame:preprocess(table.concat(coordTemplates, sep))
local expandedTemplates = mw.text.split(expandedContent, sep)
local namedCoords = {}
for _, expandedTemplate in pairs(expandedTemplates) do
local coord = mw.ustring.match(expandedTemplate, "<span class=\"geo%-dec\".->(.-)</span>")
if coord then
local coordname = (
-- name specified by a wrapper template, e.g [[Article|Name]]
mw.ustring.match(expandedTemplate, "<span class=\"mapframe%-coord%-name\">(.-)</span>") or
-- name passed into coord template
mw.ustring.match(expandedTemplate, "<span class=\"fn org\">(.-)</span>") or
-- default to the coordinates if the name can't be retrieved
coord
)
local description = coordname ~= coord and coord
table.insert(namedCoords, {
coord=mw.ustring.gsub(coord, "[° ]", "_"),
name=coordname, description=description
})
end
end
if #namedCoords == 0 then error(string.format(L10n.error.noNamedCoords, page or name), 0) end
return namedCoords
end
--[[
Parse coordinate values from the params passed in a GeoHack url (such as
//tools.wmflabs.org/geohack/geohack.php?pagename=Example¶ms=1_2_N_3_4_W_ or
//tools.wmflabs.org/geohack/geohack.php?pagename=Example¶ms=1.23_S_4.56_E_ )
or non-url string in the same format (such as `1_2_N_3_4_W_` or `1.23_S_4.56_E_`)
@param {string} coords string containing coordinates
@returns {number, number} latitude, longitude
]]--
function util.parseCoords(coords)
local coordsPatt
if mw.ustring.find(coords, "params=", 1, true) then
-- prevent false matches from page name, e.g. ?pagename=Lorem_S._Ipsum
coordsPatt = 'params=([_%.%d]+[NS][_%.%d]+[EW])'
else
-- not actually a geohack url, just the same format
coordsPatt = '[_%.%d]+[NS][_%.%d]+[EW]'
end
local parts = mw.text.split((mw.ustring.match(coords, coordsPatt) or ''), '_')
local lat_d = tonumber(parts[1])
assert(lat_d, "Unable to get latitude from input '"..coords.."'.")
local lat_m = tonumber(parts[2]) -- nil if coords are in decimal format
local lat_s = lat_m and tonumber(parts[3]) -- nil if coords are either in decimal format or degrees and minutes only
local lat = lat_d + (lat_m or 0)/60 + (lat_s or 0)/3600
if parts[#parts/2] == 'S' then
lat = lat * -1
end
local long_d = tonumber(parts[1+#parts/2])
assert(long_d, "Unable to get longitude from input '"..coords.."'.")
local long_m = tonumber(parts[2+#parts/2]) -- nil if coords are in decimal format
local long_s = long_m and tonumber(parts[3+#parts/2]) -- nil if coords are either in decimal format or degrees and minutes only
local long = long_d + (long_m or 0)/60 + (long_s or 0)/3600
if parts[#parts] == 'W' then
long = long * -1
end
return lat, long
end
--[[
Get coordinates from a Wikidata item
@param {string} item_id Wikidata item id (Q number)
@returns {number, number} latitude, longitude
@throws {L10n.error.noCoords} if item_id is invalid or the item does not exist
@throws {L10n.error.wikidataCoords} if the the item does not have a P625
statement (coordinates), or it is set to "no value"
]]--
function util.wikidataCoords(item_id)
if not (item_id and wb.isValidEntityId(item_id) and wb.entityExists(item_id)) then
error(L10n.error.noCoords, 0)
end
local coordStatements = wb.getBestStatements(item_id, 'P625')
if not coordStatements or #coordStatements == 0 then
error(L10n.error.wikidataCoords, 0)
end
local hasNoValue = ( coordStatements[1].mainsnak and (coordStatements[1].mainsnak.snaktype == 'novalue' or coordStatements[1].mainsnak.snaktype == 'somevalue') )
if hasNoValue then
error(L10n.error.wikidataCoords, 0)
end
local wdCoords = coordStatements[1]['mainsnak']['datavalue']['value']
return tonumber(wdCoords['latitude']), tonumber(wdCoords['longitude'])
end
--[[
Creates a polygon that approximates a circle
@param {number} lat Latitude
@param {number} long Longitude
@param {number} radius Radius in metres
@param {number} n Number of edges for the polygon
@returns {table} sequence of {latitude, longitude} table sequences, where
latitude and longitude are both numbers
]]--
function util.circleToPolygon(lat, long, radius, n) -- n is number of edges
-- Based on https://github.com/gabzim/circle-to-polygon, ISC licence
local function offset(cLat, cLon, distance, bearing)
local lat1 = math.rad(cLat)
local lon1 = math.rad(cLon)
local dByR = distance / 6378137 -- distance divided by 6378137 (radius of the earth) wgs84
local offet_lat = math.asin(
math.sin(lat1) * math.cos(dByR) +
math.cos(lat1) * math.sin(dByR) * math.cos(bearing)
)
local offet_lon = lon1 + math.atan2(
math.sin(bearing) * math.sin(dByR) * math.cos(lat1),
math.cos(dByR) - math.sin(lat1) * math.sin(offet_lat)
)
return {math.deg(offet_lon), math.deg(offet_lat)}
end
local coordinates = {};
local i = 0;
while i < n do
table.insert(coordinates,
offset(lat, long, radius, (2*math.pi*i*-1)/n)
)
i = i + 1
end
table.insert(coordinates, offset(lat, long, radius, 0))
return coordinates
end
--[[
Get the number of key-value pairs in a table, which might not be a sequence.
@param {table} t
@returns {number} count of key-value pairs
]]--
function util.tableCount(t)
local count = 0
for k, v in pairs(t) do
count = count + 1
end
return count
end
--[[
For a table where the values are all tables, returns either the util.tableCount
of the subtables if they are all the same, or nil if they are not all the same.
@param {table} t
@returns {number|nil} count of key-value pairs of subtable, or nil if subtables
have different counts
]]--
function util.subTablesCount(t)
local count = nil
for k, v in pairs(t) do
if count == nil then
count = util.tableCount(v)
elseif count ~= util.tableCount(v) then
return nil
end
end
return count
end
--[[
Splits a list into a table sequence. The items in the list may be separated by
commas, or by semicolons (if items may contain commas), or by "###" (if items
may contain semicolons).
@param {string} listString
@returns {table} sequence of list items
]]--
function util.tableFromList(listString)
if type(listString) ~= "string" or listString == "" then return nil end
local separator = (mw.ustring.find(listString, "###", 0, true ) and "###") or
(mw.ustring.find(listString, ";", 0, true ) and ";") or ","
local pattern = "%s*"..separator.."%s*"
return mw.text.split(listString, pattern)
end
-- Boolean in outer scope indicating if Kartographer should be able to
-- automatically calculate coordinates (see phab:T227402)
local coordsDerivedFromFeatures = false;
--[[----------------------------------------------------------------------------
Make methods: These take in a table of arguments, and return either a string
or a table to be used in the eventual output.
----------------------------------------------------------------------------]]--
local make = {}
--[[
Makes content to go inside the maplink or mapframe tag.
@param {table} args
@returns {string} tag content
]]--
function make.content(args)
if util.getParameterValue(args, 'raw') then
coordsDerivedFromFeatures = true -- Kartographer should be able to automatically calculate coords from raw geoJSON
return util.getParameterValue(args, 'raw')
end
local content = {}
local argsExpanded = {}
for k, v in pairs(args) do
local index = string.match( k, '^[^0-9]+([0-9]*)$' )
if index ~= nil then
local indexNumber
if index ~= '' then
indexNumber = tonumber(index)
else
indexNumber = 1
end
if argsExpanded[indexNumber] == nil then
argsExpanded[indexNumber] = {}
end
argsExpanded[indexNumber][ string.gsub(k, index, '') ] = v
end
end
for contentIndex, contentArgs in pairs(argsExpanded) do
local argType = util.getParameterValue(contentArgs, "type")
-- Kartographer automatically calculates coords if geolines/shapes are used (T227402)
if not coordsDerivedFromFeatures then
coordsDerivedFromFeatures = ( argType == L10n.str.line or argType == L10n.str.shape ) and true or false
end
if argType == L10n.str.named then
local namedCoords = util.getNamedCoords(util.getParameterValue(contentArgs, "from"))
local typeKey = type(L10n.para.type) == "table" and L10n.para.type[1] or L10n.para.type
local coordKey = type(L10n.para.coord) == "table" and L10n.para.coord[1] or L10n.para.coord
local titleKey = type(L10n.para.title) == "table" and L10n.para.title[1] or L10n.para.title
local descKey = type(L10n.para.description) == "table" and L10n.para.description[1] or L10n.para.description
for _, namedCoord in pairs(namedCoords) do
contentArgs[typeKey] = "point"
contentArgs[coordKey] = namedCoord.coord
contentArgs[titleKey] = namedCoord.name
contentArgs[descKey] = namedCoord.description
content[#content+1] = make.contentJson(contentArgs)
end
else
content[#content + 1] = make.contentJson(contentArgs)
end
end
--Single item, no array needed
if #content==1 then return content[1] end
--Multiple items get placed in a FeatureCollection
local contentArray = '[\n' .. table.concat( content, ',\n') .. '\n]'
return contentArray
end
--[[
Make coordinates from the coord arg, or the id arg, or the current page's
Wikidata item.
@param {table} args
@param {boolean} [plainOutput]
@returns {Mixed} Either:
{number, number} latitude, longitude if plainOutput is true; or
{table} table sequence of longitude, then latitude (gives the required format
for GeoJSON when encoded)
]]--
function make.coords(args, plainOutput)
local coords, lat, long
local frame = mw.getCurrentFrame()
if util.getParameterValue(args, 'coord') then
coords = frame:preprocess( util.getParameterValue(args, 'coord') )
lat, long = util.parseCoords(coords)
else
lat, long = util.wikidataCoords(util.getParameterValue(args, 'id') or wb.getEntityIdForCurrentPage())
end
if plainOutput then
return lat, long
end
return {[0] = long, [1] = lat}
end
--[[
Makes a table of coordinates that approximate a circle.
@param {table} args
@returns {table} sequence of {latitude, longitude} table sequences, where
latitude and longitude are both numbers
@throws {L10n.error.noCircleCoords} if centre coordinates are not specified
@throws {L10n.error.noRadius} if radius is not specified
@throws {L10n.error.negativeRadius} if radius is negative or zero
@throws {L10n.error.negativeEdges} if edges is negative or zero
]]--
function make.circleCoords(args)
local lat, long = make.coords(args, true)
local radius = util.getParameterValue(args, 'radius')
if not radius then
radius = util.getParameterValue(args, 'radiusKm') and tonumber(util.getParameterValue(args, 'radiusKm'))*1000
if not radius then
radius = util.getParameterValue(args, 'radiusMi') and tonumber(util.getParameterValue(args, 'radiusMi'))*1609.344
if not radius then
radius = util.getParameterValue(args, 'radiusFt') and tonumber(util.getParameterValue(args, 'radiusFt'))*0.3048
end
end
end
local edges = util.getParameterValue(args, 'edges') or L10n.defaults.edges
if not lat or not long then
error(L10n.error.noCircleCoords, 0)
elseif not radius then
error(L10n.error.noRadius, 0)
elseif tonumber(radius) <= 0 then
error(L10n.error.negativeRadius, 0)
elseif tonumber(edges) <= 0 then
error(L10n.error.negativeEdges, 0)
end
return util.circleToPolygon(lat, long, radius, tonumber(edges))
end
--[[
Makes JSON data for a feature
@param contentArgs args for this feature. Keys must be the non-suffixed version
of the parameter names, i.e. use type, stroke, fill,... rather than type3,
stroke3, fill3,...
@returns {string} JSON encoded data
]]--
function make.contentJson(contentArgs)
local data = {}
if util.getParameterValue(contentArgs, 'type') == L10n.str.point or util.getParameterValue(contentArgs, 'type') == L10n.str.circle then
local isCircle = util.getParameterValue(contentArgs, 'type') == L10n.str.circle
data.type = "Feature"
data.geometry = {
type = isCircle and "LineString" or "Point",
coordinates = isCircle and make.circleCoords(contentArgs) or make.coords(contentArgs)
}
data.properties = {
title = util.getParameterValue(contentArgs, 'title') or mw.getCurrentFrame():getParent():getTitle()
}
if isCircle then
-- TODO: This is very similar to below, should be extracted into a function
data.properties.stroke = util.getParameterValue(contentArgs, 'strokeColor') or L10n.defaults.strokeColor
data.properties["stroke-width"] = tonumber(util.getParameterValue(contentArgs, 'strokeWidth')) or L10n.defaults.strokeWidth
local strokeOpacity = util.getParameterValue(contentArgs, 'strokeOpacity')
if strokeOpacity then
data.properties['stroke-opacity'] = tonumber(strokeOpacity)
end
local fill = util.getParameterValue(contentArgs, 'fill')
if fill then
data.properties.fill = fill
local fillOpacity = util.getParameterValue(contentArgs, 'fillOpacity')
data.properties['fill-opacity'] = fillOpacity and tonumber(fillOpacity) or 0.6
end
else -- is a point
local markerSymbol = util.getParameterValue(contentArgs, 'marker') or L10n.defaults.marker
-- allow blank to be explicitly specified, for overriding infoboxes or other templates with a default value
if markerSymbol ~= "blank" then
data.properties["marker-symbol"] = markerSymbol
end
data.properties["marker-color"] = util.getParameterValue(contentArgs, 'markerColor') or L10n.defaults.markerColor
data.properties["marker-size"] = util.getParameterValue(contentArgs, 'markerSize') or L10n.defaults.markerSize
end
else
data.type = "ExternalData"
if util.getParameterValue(contentArgs, 'type') == L10n.str.data or util.getParameterValue(contentArgs, 'from') then
data.service = "page"
elseif util.getParameterValue(contentArgs, 'type') == L10n.str.line then
data.service = "geoline"
elseif util.getParameterValue(contentArgs, 'type') == L10n.str.shape then
data.service = "geoshape"
elseif util.getParameterValue(contentArgs, 'type') == L10n.str.shapeInverse then
data.service = "geomask"
end
if util.getParameterValue(contentArgs, 'id') or (not (util.getParameterValue(contentArgs, 'from')) and wb.getEntityIdForCurrentPage()) then
data.ids = util.getParameterValue(contentArgs, 'id') or wb.getEntityIdForCurrentPage()
else
data.title = util.getParameterValue(contentArgs, 'from')
end
data.properties = {
stroke = util.getParameterValue(contentArgs, 'strokeColor') or L10n.defaults.strokeColor,
["stroke-width"] = tonumber(util.getParameterValue(contentArgs, 'strokeWidth')) or L10n.defaults.strokeWidth
}
local strokeOpacity = util.getParameterValue(contentArgs, 'strokeOpacity')
if strokeOpacity then
data.properties['stroke-opacity'] = tonumber(strokeOpacity)
end
local fill = util.getParameterValue(contentArgs, 'fill')
if fill and (data.service == "geoshape" or data.service == "geomask") then
data.properties.fill = fill
local fillOpacity = util.getParameterValue(contentArgs, 'fillOpacity')
if fillOpacity then
data.properties['fill-opacity'] = tonumber(fillOpacity)
end
end
end
data.properties.title = util.getParameterValue(contentArgs, 'title') or mw.title.getCurrentTitle().text
if util.getParameterValue(contentArgs, 'description') then
data.properties.description = util.getParameterValue(contentArgs, 'description')
end
return mw.text.jsonEncode(data)
end
--[[
Makes attributes for the maplink or mapframe tag.
@param {table} args
@param {boolean} [isTitle] Tag is to be displayed in the title of page rather
than inline
@returns {table<string,string>} key-value pairs of attribute names and values
]]--
function make.tagAttribs(args, isTitle)
local attribs = {}
if util.getParameterValue(args, 'zoom') then
attribs.zoom = util.getParameterValue(args, 'zoom')
end
if util.isDeclined(util.getParameterValue(args, 'icon')) then
attribs.class = "no-icon"
end
if util.getParameterValue(args, 'type') == L10n.str.point and not coordsDerivedFromFeatures then
local lat, long = make.coords(args, 'plainOutput')
attribs.latitude = tostring(lat)
attribs.longitude = tostring(long)
end
if util.isAffirmed(util.getParameterValue(args, 'frame')) and not(isTitle) then
attribs.width = util.getParameterValue(args, 'frameWidth') or L10n.defaults.frameWidth
attribs.height = util.getParameterValue(args, 'frameHeight') or L10n.defaults.frameHeight
if util.getParameterValue(args, 'frameCoordinates') then
local frameLat, frameLong = util.parseCoords(util.getParameterValue(args, 'frameCoordinates'))
attribs.latitude = frameLat
attribs.longitude = frameLong
else
if util.getParameterValue(args, 'frameLatitude') then
attribs.latitude = util.getParameterValue(args, 'frameLatitude')
end
if util.getParameterValue(args, 'frameLongitude') then
attribs.longitude = util.getParameterValue(args, 'frameLongitude')
end
end
if not attribs.latitude and not attribs.longitude and not coordsDerivedFromFeatures then
local success, lat, long = pcall(util.wikidataCoords, util.getParameterValue(args, 'id') or wb.getEntityIdForCurrentPage())
if success then
attribs.latitude = tostring(lat)
attribs.longitude = tostring(long)
end
end
if util.getParameterValue(args, 'frameAlign') then
attribs.align = util.getParameterValue(args, 'frameAlign')
end
if util.isAffirmed(util.getParameterValue(args, 'plain')) then
attribs.frameless = "1"
else
attribs.text = util.getParameterValue(args, 'text') or L10n.defaults.text
end
else
attribs.text = util.getParameterValue(args, 'text') or L10n.defaults.text
end
return attribs
end
--[[
Makes maplink wikitext that will be located in the top-right of the title of the
page (the same place where coords with |display=title are positioned).
@param {table} args
@param {string} tagContent Content for the maplink tag
@returns {string}
]]--
function make.titleOutput(args, tagContent)
local titleTag = mw.text.tag('maplink', make.tagAttribs(args, true), tagContent)
local spanAttribs = {
style = "font-size: small;",
id = "mapframe-coordinates"
}
local indicatorContent = mw.text.tag('span', spanAttribs, titleTag)
return mw.getCurrentFrame():extensionTag {
name = "indicator",
content = indicatorContent,
args = {
name = "zzz-mapframe" --zzz: show as last indicator
}
}
end
--[[
Makes maplink or mapframe wikitext that will be located inline.
@param {table} args
@param {string} tagContent Content for the maplink tag
@returns {string}
]]--
function make.inlineOutput(args, tagContent)
local tagName = 'maplink'
if util.getParameterValue(args, 'frame') then
tagName = 'mapframe'
end
return mw.text.tag(tagName, make.tagAttribs(args), tagContent)
end
--[[
Makes the HTML required for the swicther to work, including the templatestyles
tag.
@param {table} params table sequence of {map, label} tables
@param {string} params{}.map Wikitext for mapframe map
@param {string} params{}.label Label text for swicther option
@param {table} options
@param {string} options.alignment "left" or "center" or "right"
@param {boolean} options.isThumbnail Display in a thumbnail
@param {string} options.width Width of frame, e.g. "200"
@param {string} [options.caption] Caption wikitext for thumnail
@retruns {string} swicther HTML
]]--
function make.switcherHtml(params, options)
options = options or {}
local frame = mw.getCurrentFrame()
local styles = frame:extensionTag{
name = "templatestyles",
args = {src = "Template:Maplink/styles-multi.css"}
}
local container = mw.html.create("div")
:addClass("switcher-container")
:addClass("mapframe-multi-container")
if options.alignment == "left" or options.alignment == "right" then
container:addClass("float"..options.alignment)
else -- alignment is "center"
container:addClass("center")
end
for i = 1, #params do
container
:tag("div")
:wikitext(params[i].map)
:tag("span")
:addClass("switcher-label")
:css("display", "none")
:wikitext(mw.text.trim(params[i].label))
end
if not options.isThumbnail then
return styles .. tostring(container)
end
local classlist = container:getAttr("class")
classlist = mw.ustring.gsub(classlist, "%a*"..options.alignment, "")
container:attr("class", classlist)
local outerCountainer = mw.html.create("div")
:addClass("mapframe-multi-outer-container")
:addClass("mw-kartographer-container")
:addClass("thumb")
if options.alignment == "left" or options.alignment == "right" then
outerCountainer:addClass("float"..options.alignment)
else -- alignment is "center"
outerCountainer
:addClass("tnone")
:addClass("center")
end
outerCountainer
:tag("div")
:addClass("thumbinner")
:css("width", options.width.."px")
:node(container)
:node(options.caption and mw.html.create("div")
:addClass("thumbcaption")
:wikitext(options.caption)
)
return styles .. tostring(outerCountainer)
end
--[[
Makes the HTML required for an overlay map to work
tag.
@param {string} overlayMap wikitext for the overlay map
@param {string} baseMap wikitext for the base map
@param {table} options various styling/display options
@param {string} options.align "left" or "center" or "right"
@param {string|number} options.width Width of the base map, e.g. "300"
@param {string|number} options.width Height of the base map, e.g. "200"
@param {string} options.border Border style for the overlayed map, e.g. "1px solid white"
@param {string} options.horizontalAlignment Horizontal alignment for overlay map, "left" or "right"
@param {string|number} options.horizontalOffset Horizontal offset in pixels from the alignment edge, e.g "10"
@param {string} options.verticalAlignment Vertical alignment for overlay map, "top" or "bottom"
@param {string|number} options.verticalOffset Vertical offset in pixels from the alignment edge, e.g. is "10"
@param {boolean} options.isThumbnail Display in a thumbnail
@param {string} [options.caption] Caption wikitext for thumnail
@retruns {string} HTML for basemap with overlay
]]--
function make.overlayHtml(overlayMap, baseMap, options)
options = options or {}
local containerFloatClass = "float"..(options.align or "none")
if options.align == "center" then
containerFloatClass = "center"
end
local containerStyle = {
position = "relative",
width = options.width .. "px",
height = options.height .. "px",
overflow = "hidden" -- mobile/minerva tends to add scrollbars for a couple of pixels
}
if options.align == "center" then
containerStyle["margin-left"] = "auto"
containerStyle["margin-right"] = "auto"
end
local container = mw.html.create("div")
:addClass("mapframe-withOverlay-container")
:addClass(containerFloatClass)
:addClass("noresize")
:css(containerStyle)
local overlayStyle = {
position = "absolute",
["z-index"] = "1",
border = options.border or "1px solid white"
}
if options.horizontalAlignment == "right" then
overlayStyle.right = options.horizontalOffset .. "px"
else
overlayStyle.left = options.horizontalOffset .. "px"
end
if options.verticalAlignment == "bottom" then
overlayStyle.bottom = options.verticalOffset .. "px"
else
overlayStyle.top = options.verticalOffset .. "px"
end
local overlayDiv = mw.html.create("div")
:css(overlayStyle)
:wikitext(overlayMap)
container
:node(overlayDiv)
:wikitext(baseMap)
if not options.isThumbnail then
return tostring(container)
end
local classlist = container:getAttr("class")
classlist = mw.ustring.gsub(classlist, "%a*"..options.align, "")
container:attr("class", classlist)
local outerCountainer = mw.html.create("div")
:addClass("mapframe-withOverlay-outerContainer")
:addClass("mw-kartographer-container")
:addClass("thumb")
if options.align == "left" or options.align == "right" then
outerCountainer:addClass("t"..options.align)
else -- alignment is "center"
outerCountainer
:addClass("tnone")
:addClass("center")
end
outerCountainer
:tag("div")
:addClass("thumbinner")
:css("width", options.width.."px")
:node(container)
:node(options.caption and mw.html.create("div")
:addClass("thumbcaption")
:wikitext(options.caption)
)
return tostring(outerCountainer)
end
--[[----------------------------------------------------------------------------
Package to be exported, i.e. methods which will available to templates and
other modules.
----------------------------------------------------------------------------]]--
local p = {}
-- Entry point for templates
function p.main(frame)
local parent = frame.getParent(frame)
-- Check for overlay option
local overlay = util.getParameterValue(parent.args, 'overlay')
local hasOverlay = overlay and mw.text.trim(overlay) ~= ""
-- Check for switch option
local switch = util.getParameterValue(parent.args, 'switch')
local isMulti = switch and mw.text.trim(switch) ~= ""
-- Create output by choosing method to suit options
local output
if hasOverlay then
output = p.withOverlay(parent.args)
elseif isMulti then
output = p.multi(parent.args)
else
output = p._main(parent.args)
end
-- Preprocess output before returning it
return frame:preprocess(output)
end
-- Entry points for modules
function p._main(_args)
local args = util.trimArgs(_args)
local tagContent = make.content(args)
local display = mw.text.split(util.getParameterValue(args, 'display') or L10n.defaults.display, '%s*' .. L10n.str.dsep .. '%s*')
local displayInTitle = display[1] == L10n.str.title or display[2] == L10n.str.title
local displayInline = display[1] == L10n.str.inline or display[2] == L10n.str.inline
local output
if displayInTitle and displayInline then
output = make.titleOutput(args, tagContent) .. make.inlineOutput(args, tagContent)
elseif displayInTitle then
output = make.titleOutput(args, tagContent)
elseif displayInline then
output = make.inlineOutput(args, tagContent)
else
error(L10n.error.badDisplayPara)
end
return output
end
function p.multi(_args)
local args = util.trimArgs(_args)
if not args[L10n.para.switch] then error(L10n.error.noSwitchPara, 0) end
local switchParamValue = util.getParameterValue(args, 'switch')
local switchLabels = util.tableFromList(switchParamValue)
if #switchLabels == 1 then error(L10n.error.oneSwitchLabel, 0) end
local mapframeArgs = {}
local switchParams = {}
for name, val in pairs(args) do
-- Copy to mapframeArgs, if not the switch labels or a switch parameter
if val ~= switchParamValue and not string.match(val, "^"..L10n.str.switch..":") then
mapframeArgs[name] = val
end
-- Check if this is a param to switch. If so, store the name and switch
-- values in switchParams table.
local switchList = string.match(val, "^"..L10n.str.switch..":(.+)")
if switchList ~= nil then
local values = util.tableFromList(switchList)
if #values == 1 then
error(string.format(L10n.error.oneSwitchValue, name), 0)
end
switchParams[name] = values
end
end
if util.tableCount(switchParams) == 0 then
error(L10n.error.noSwitchLists, 0)
end
local switchCount = util.subTablesCount(switchParams)
if not switchCount then
error(L10n.error.switchMismatches, 0)
elseif switchCount > #switchLabels then
error(string.format(L10n.error.fewerSwitchLabels, switchCount, #switchLabels), 0)
end
-- Ensure a plain frame will be used (thumbnail will be built by the
-- make.switcherHtml function if required, so that switcher options are
-- inside the thumnail)
mapframeArgs.plain = "yes"
local switcher = {}
for i = 1, switchCount do
local label = switchLabels[i]
for name, values in pairs(switchParams) do
mapframeArgs[name] = values[i]
end
table.insert(switcher, {
map = p._main(mapframeArgs),
label = "Show "..label
})
end
return make.switcherHtml(switcher, {
alignment = args["frame-align"] or "right",
isThumbnail = (args.frame and not args.plain) and true or false,
width = args["frame-width"] or L10n.defaults.frameWidth,
caption = args.text
})
end
function p.withOverlay(_args)
-- Get and trim wikitext for overlay map
local overlayMap = _args.overlay
if type(overlayMap) == 'string' then
overlayMap = overlayMap:match('^%s*(.-)%s*$')
end
local isThumbnail = (util.getParameterValue(_args, "frame") and not util.getParameterValue(_args, "plain")) and true or false
-- Get base map using the _main function, as a plain map
local args = util.trimArgs(_args)
args.plain = "yes"
local basemap = p._main(args)
-- Extract overlay options from args
local overlayOptions = {
width = util.getParameterValue(args, "frameWidth") or L10n.defaults.frameWidth,
height = util.getParameterValue(args, "frameHeight") or L10n.defaults.frameHeight,
align = util.getParameterValue(args, "frameAlign") or L10n.defaults.frameAlign,
border = util.getParameterValue(args, "overlayBorder") or L10n.defaults.overlayBorder,
horizontalAlignment = util.getParameterValue(args, "overlayHorizontalAlignment") or L10n.defaults.overlayHorizontalAlignment,
horizontalOffset = util.getParameterValue(args, "overlayHorizontalOffset") or L10n.defaults.overlayHorizontalOffset,
verticalAlignment = util.getParameterValue(args, "overlayVerticalAlignment") or L10n.defaults.overlayVerticalAlignment,
verticalOffset = util.getParameterValue(args, "overlayVerticalOffset") or L10n.defaults.overlayVerticalOffset,
isThumbnail = isThumbnail,
caption = util.getParameterValue(args, "text") or L10n.defaults.text
}
-- Make the HTML for the overlaying maps
return make.overlayHtml(overlayMap, basemap, overlayOptions)
end
-- Entry point for testcase tests
p.test = util
return p
ctsgv4ln5giysy1bit377346v8nejri
Template:Module other
10
34725
126081
2026-07-15T10:25:41Z
Fongcwele
16873
Created page with "{{safesubst:<noinclude/>#switch: <noinclude><!-- If no or empty "demospace" parameter then detect namespace --></noinclude> {{safesubst:<noinclude/>#if:{{{demospace|}}} | {{safesubst:<noinclude/>lc: {{{demospace}}} }} <noinclude><!-- Use lower case "demospace" --></noinclude> | {{safesubst:<noinclude/>#ifeq:{{safesubst:<noinclude/>NAMESPACE}}|{{safesubst:<noinclude/>ns:Module}} | module | other }} }} | module = {{{module|{{{1|}}}}}} | other | #de..."
126081
wikitext
text/x-wiki
{{safesubst:<noinclude/>#switch:
<noinclude><!-- If no or empty "demospace" parameter then detect namespace --></noinclude>
{{safesubst:<noinclude/>#if:{{{demospace|}}}
| {{safesubst:<noinclude/>lc: {{{demospace}}} }} <noinclude><!-- Use lower case "demospace" --></noinclude>
| {{safesubst:<noinclude/>#ifeq:{{safesubst:<noinclude/>NAMESPACE}}|{{safesubst:<noinclude/>ns:Module}}
| module
| other
}}
}}
| module = {{{module|{{{1|}}}}}}
| other
| #default = {{{other|{{{2|}}}}}}
}}<noinclude><!--End switch-->
{{documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
6mo4qg9nwfuq6vj2r8irxnjnd71296k
Template:Gaps
10
34726
126084
2026-07-15T10:38:09Z
Fongcwele
16873
Created page with "<includeonly>{{#invoke:Gaps|main}}</includeonly><noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude>"
126084
wikitext
text/x-wiki
<includeonly>{{#invoke:Gaps|main}}</includeonly><noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
ob3fbxi7z1cdhxnfxneo5ab02yk2e6z
Template:Val
10
34727
126085
2026-07-15T10:39:54Z
Fongcwele
16873
Created page with "<includeonly>{{safesubst:<noinclude/>#invoke:val|main}}</includeonly><noinclude> {{documentation}} </noinclude>"
126085
wikitext
text/x-wiki
<includeonly>{{safesubst:<noinclude/>#invoke:val|main}}</includeonly><noinclude>
{{documentation}}
</noinclude>
pyd5z3vtnjv2hvt8nvjbkl8gerasot4
Module:Gaps
828
34728
126086
2026-07-15T10:41:19Z
Fongcwele
16873
Created page with "local p = {} local getArgs function p.main(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end local args = getArgs(frame, {wrappers = 'Template:Gaps'}) local ret = mw.html.create('span') :css({['white-space'] = 'nowrap', ['font-size'] = args.size}) if args.lhs then ret:wikitext(args.lhs .. ' = ') end local gap = string.lower(args.gap or '') local gapSize, gapUnit = string.match(gap,'([%d%.]+)%s*([ep][mnx])') local acc..."
126086
Scribunto
text/plain
local p = {}
local getArgs
function p.main(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
local args = getArgs(frame, {wrappers = 'Template:Gaps'})
local ret = mw.html.create('span')
:css({['white-space'] = 'nowrap',
['font-size'] = args.size})
if args.lhs then
ret:wikitext(args.lhs .. ' = ')
end
local gap = string.lower(args.gap or '')
local gapSize, gapUnit = string.match(gap,'([%d%.]+)%s*([ep][mnx])')
local acceptedUnits = { em = 'em', en = 'en', px = 'px' }
gapUnit = acceptedUnits[gapUnit]
if gapSize and gapUnit then
gap = gapSize..gapUnit
else
gap = '0.25em'
end
for k,v in ipairs(args) do
if k == 1 then
ret:wikitext(v)
else
ret:tag('span')
:css('margin-left',gap)
:wikitext(v)
end
end
if args.e then
ret
:tag('span')
:css({['margin-left'] = '0.27em',
['margin-right']= '0.27em'})
:wikitext('×')
:done()
:wikitext(args.base or '10')
:tag('span')
:css('display','none')
:wikitext('^')
:done()
:tag('sup')
-- the double parentheses here are not redundant.
-- they keep the second return value from being passed
:wikitext((mw.ustring.gsub(args.e,'-','−')))
:done()
end
if args.u then
ret:wikitext(' ' .. args.u)
end
return ret
end
return p
c9ulvvt8huwb88rp1u5dz7cbgyqgyuh
Module:Val
828
34729
126087
2026-07-15T10:43:02Z
Fongcwele
16873
Created page with "-- For Template:Val, output a number and optional unit. -- Format options include scientific and uncertainty notations. local numdot = '.' -- decimal mark (use ',' for Italian) local numsep = ',' -- group separator (use ' ' for Italian) local mtext = { -- Message and other text that should be localized. ['mt-bad-exponent'] = 'exponent parameter (<b>e</b>)', ['mt-parameter'] = 'parameter ', ['mt-not-number'] = 'is not a valid number', ['mt-c..."
126087
Scribunto
text/plain
-- For Template:Val, output a number and optional unit.
-- Format options include scientific and uncertainty notations.
local numdot = '.' -- decimal mark (use ',' for Italian)
local numsep = ',' -- group separator (use ' ' for Italian)
local mtext = {
-- Message and other text that should be localized.
['mt-bad-exponent'] = 'exponent parameter (<b>e</b>)',
['mt-parameter'] = 'parameter ',
['mt-not-number'] = 'is not a valid number',
['mt-cannot-range'] = 'cannot use a range if the first parameter includes "e"',
['mt-need-range'] = 'needs a range in parameter 2',
['mt-should-range'] = 'should be a range',
['mt-cannot-with-e'] = 'cannot be used if the first parameter includes "e"',
['mt-not-range'] = 'does not accept a range',
['mt-cannot-e'] = 'cannot use e notation',
['mt-too-many-parameter'] = 'too many parameters',
['mt-need-number'] = 'need a number after the last parameter because it is a range.',
['mt-ignore-parameter4'] = 'Val parameter 4 ignored',
['mt-val-not-supported'] = 'Val parameter "%s=%s" is not supported',
['mt-invalid-scale'] = 'Unit "%s" has invalid scale "%s"',
['mt-both-u-ul'] = 'unit (<b>u</b>) and unit with link (<b>ul</b>) are both specified, only one is allowed.',
['mt-both-up-upl'] = 'unit per (<b>up</b>) and unit per with link (<b>upl</b>) are both specified, only one is allowed.',
}
local data_module = 'Module:Val/units'
local convert_module = 'Module:Convert'
local function valerror(msg, nocat, iswarning)
-- Return formatted message text for an error or warning.
-- Can append "#FormattingError" to URL of a page with a problem to find it.
local anchor = '<span id="FormattingError"></span>'
local body, category
if nocat or mw.title.getCurrentTitle():inNamespaces(1, 2, 3, 5) then
-- No category in Talk, User, User_talk, or Wikipedia_talk.
category = ''
else
category = '[[Category:Pages with incorrect formatting templates use]]'
end
iswarning = false -- problems are infrequent so try showing large error so editor will notice
if iswarning then
body = '<sup class="noprint Inline-Template" style="white-space:nowrap;">' ..
'[[Template:Val|<span title="' ..
msg:gsub('"', '"') ..
'">warning</span>]]</sup>'
else
body = '<strong class="error">' ..
'Error in {{[[Template:val|val]]}}: ' ..
msg ..
'</strong>'
end
return anchor .. body .. category
end
local range_types = {
-- No need for ' ' because nowrap applies to all output.
[","] = ", ",
["by"] = " by ",
["-"] = "–",
["–"] = "–",
["and"] = " and ",
["or"] = " or " ,
["to"] = " to " ,
["x"] = " × ",
["×"] = " × ",
["/"] = "/",
}
local range_repeat_unit = {
-- WP:UNIT wants unit repeated when a "multiply" range is used.
["x"] = true,
["×"] = true,
}
local function extract_item(index, numbers, arg)
-- Extract an item from arg and store the result in numbers[index].
-- If no argument or if argument is valid, return nil (no error);
-- otherwise, return an error message.
-- The stored result is:
-- * a table for a number (empty if there was no specified number); or
-- * a string for range text
-- Input like 1e3 is regarded as invalid for all except argument 1
-- which accepts e notation as an alternative to the 'e' argument.
-- Input group separators are removed.
local which = index
local function fail(msg)
local description
if which == 'e' then
description = mtext['mt-bad-exponent']
else
description = mtext['mt-parameter'] .. which
end
return description .. ' ' .. (msg or mtext['mt-not-number']) .. '.'
end
local result = {}
local range = range_types[arg]
if range then
if type(index) == 'number' and (index % 2 == 0) then
if index == 2 then
if numbers[1] and numbers[1].exp then
return fail(mtext['mt-cannot-range'])
end
numbers.has_ranges = true
else
if not numbers.has_ranges then
return fail(mtext['mt-need-range'])
end
end
numbers[index] = range
if range_repeat_unit[arg] then
-- Any "repeat" range forces unit (if any) to be repeated for all items.
numbers.isrepeat = true
end
return nil
end
return fail(mtext['mt-not-range'])
end
if numbers.has_ranges and type(index) == 'number' and (index % 2 == 0) then
return fail(mtext['mt-should-range'])
end
if index == 'e' then
local e = numbers[1] and numbers[1].exp
if e then
if arg then
return fail(mtext['mt-cannot-with-e'])
end
arg = e
which = 1
end
end
if arg and arg ~= '' then
arg = arg:gsub(numsep, '')
if numdot ~= '.' then
arg = arg:gsub(numdot, '.')
end
if arg:sub(1, 1) == '(' and arg:sub(-1) == ')' then
result.parens = true
arg = arg:sub(2, -2)
end
local a, b = arg:match('^(.+)[Ee](.+)$')
if a then
if index == 1 then
arg = a
result.exp = b
else
return fail(mtext['mt-cannot-e'])
end
end
local isnegative, propersign, prefix
local minus = '−'
prefix, arg = arg:match('^(.-)([%d.]+)$')
local value = tonumber(arg)
if not value then
return fail()
end
if arg:sub(1, 1) == '.' then
arg = '0' .. arg
end
if prefix == '' then
-- Ignore.
elseif prefix == '±' then
-- Display for first number, ignore for others.
if index == 1 then
propersign = '±'
end
elseif prefix == '+' then
propersign = '+'
elseif prefix == '-' or prefix == minus then
propersign = minus
isnegative = true
else
return fail()
end
result.clean = arg
result.sign = propersign or ''
result.value = isnegative and -value or value
end
numbers[index] = result
return nil -- no error
end
local function get_args(numbers, args)
-- Extract arguments and store the results in numbers.
-- Return nothing (no error) if ok; otherwise, return an error message.
for index = 1, 99 do
local which = index
local arg = args[which] -- has been trimmed
if not arg then
which = 'e'
arg = args[which]
end
local msg = extract_item(which, numbers, arg)
if msg then
return msg
end
if which == 'e' then
break
end
if index > 19 then
return mtext['mt-too-many-parameter']
end
end
if numbers.has_ranges and (#numbers % 2 == 0) then
return mtext['mt-need-number']
end
end
local function get_scale(text, ucode)
-- Return the value of text as a number, or throw an error.
-- This supports extremely basic expressions of the form:
-- a / b
-- a ^ b
-- where a and b are numbers or 'pi'.
local n = tonumber(text)
if n then
return n
end
n = text:gsub('pi', math.pi)
for _, op in ipairs({ '/', '^' }) do
local a, b = n:match('^(.-)' .. op .. '(.*)$')
if a then
a = tonumber(a)
b = tonumber(b)
if a and b then
if op == '/' then
return a / b
elseif op == '^' then
return a ^ b
end
end
break
end
end
error(string.format(mtext['mt-invalid-scale'], ucode, text))
end
local function get_builtin_unit(ucode, definitions)
-- Return table of information for the specified built-in unit, or nil if not known.
-- Each defined unit code must be followed by two spaces (not tab characters).
local _, pos = definitions:find('\n' .. ucode .. ' ', 1, true)
if pos then
local endline = definitions:find('%s*\n', pos)
if endline then
local result = {}
local n = 0
local text = definitions:sub(pos + 1, endline - 1):gsub('%s%s+', '\t')
for item in (text .. '\t'):gmatch('(%S.-)\t') do
if item == 'ALIAS' then
result.alias = true
elseif item == 'ANGLE' then
result.isangle = true
result.nospace = true
elseif item == 'NOSPACE' then
result.nospace = true
elseif item == 'SI' then
result.si = true
else
n = n + 1
if n == 1 then
local link, symbol = item:match('^%[%[([^|]+)|(.+)%]%]$')
if link then
result.symbol = symbol
result.link = link
n = 2
else
result.symbol = item
end
elseif n == 2 then
result.link = item
elseif n == 3 then
result.scale_text = item
result.scale = get_scale(item, ucode)
else
result.more_ignored = item
break
end
end
end
if result.si then
local s = result.symbol
if ucode == 'mc' .. s or ucode == 'mu' .. s then
result.ucode = 'µ' .. s -- unit code for convert should be this
end
end
if n >= 2 or (n >= 1 and result.alias) then
return result
end
-- Ignore invalid definition, treating it as a comment.
end
end
end
local function convert_lookup(ucode, value, scaled_top, want_link, si, options)
local lookup = require(convert_module)._unit
return lookup(ucode, {
value = value,
scaled_top = scaled_top,
link = want_link,
si = si,
sort = options.sortable,
})
end
local function get_unit(ucode, value, scaled_top, options)
local want_link = options.want_link
if scaled_top then
want_link = options.want_per_link
end
local data = mw.loadData(data_module)
local result = options.want_longscale and
get_builtin_unit(ucode, data.builtin_units_long_scale) or
get_builtin_unit(ucode, data.builtin_units)
local si, use_convert
if result then
if result.alias then
ucode = result.symbol
use_convert = true
end
if result.scale then
-- Setting si means convert will use the unit as given, and the sort key
-- will be calculated from the value without any extra scaling that may
-- occur if convert found the unit code. For example, if val defines the
-- unit 'year' with a scale and if si were not set, convert would also apply
-- its own scale because convert knows that a year is 31,557,600 seconds.
si = { result.symbol, result.link }
value = value * result.scale
end
if result.si then
ucode = result.ucode or ucode
si = { result.symbol, result.link }
use_convert = true
end
else
result = {}
use_convert = true
end
local convert_unit = convert_lookup(ucode, value, scaled_top, want_link, si, options)
result.sortkey = convert_unit.sortspan
if use_convert then
result.text = convert_unit.text
result.scaled_top = convert_unit.scaled_value
else
if want_link then
result.text = '[[' .. result.link .. '|' .. result.symbol .. ']]'
else
result.text = result.symbol
end
result.scaled_top = value
end
return result
end
local function makeunit(value, options)
-- Return table of information for the requested unit and options, or
-- return nil if no unit.
options = options or {}
local unit
local ucode = options.u
local percode = options.per
if ucode then
unit = get_unit(ucode, value, nil, options)
elseif percode then
unit = { nospace = true, scaled_top = value }
else
return nil
end
local text = unit.text or ''
local sortkey = unit.sortkey
if percode then
local function bracketed(code, text)
return code:find('[*./]') and '(' .. text .. ')' or text
end
local perunit = get_unit(percode, 1, unit.scaled_top, options)
text = (ucode and bracketed(ucode, text) or '') ..
'/' .. bracketed(percode, perunit.text)
sortkey = perunit.sortkey
end
if not (unit.nospace or options.nospace) then
text = ' ' .. text
end
return { text = text, isangle = unit.isangle, sortkey = sortkey }
end
local function list_units(mode)
-- Return wikitext to list the built-in units.
-- A unit code should not contain wikimarkup so don't bother escaping.
local data = mw.loadData(data_module)
local definitions = data.builtin_units .. data.builtin_units_long_scale
local last_was_blank = true
local n = 0
local result = {}
local function add(line)
if line == '' then
last_was_blank = true
else
if last_was_blank and n > 0 then
n = n + 1
result[n] = ''
end
last_was_blank = false
n = n + 1
result[n] = line
end
end
local si_prefixes = {
-- These are the prefixes recognized by convert; u is accepted for micro.
y = 'y',
z = 'z',
a = 'a',
f = 'f',
p = 'p',
n = 'n',
u = 'µ',
['µ'] = 'µ',
m = 'm',
c = 'c',
d = 'd',
da = 'da',
h = 'h',
k = 'k',
M = 'M',
G = 'G',
T = 'T',
P = 'P',
E = 'E',
Z = 'Z',
Y = 'Y',
}
local function is_valid(ucode, unit)
if unit and not unit.more_ignored then
assert(type(unit.symbol) == 'string' and unit.symbol ~= '')
if unit.alias then
if unit.link or unit.scale_text or unit.si then
return false
end
end
if unit.si then
if unit.scale_text then
return false
end
ucode = unit.ucode or ucode
local base = unit.symbol
if ucode == base then
unit.display = base
return true
end
local plen = #ucode - #base
if plen > 0 then
local prefix = si_prefixes[ucode:sub(1, plen)]
if prefix and ucode:sub(plen + 1) == base then
unit.display = prefix .. base
return true
end
end
else
unit.display = unit.symbol
return true
end
end
return false
end
local lookup = require(convert_module)._unit
local function show_convert(ucode, unit)
-- If a built-in unit defines a scale or sets the SI flag, any unit defined in
-- convert is not used (the scale or SI prefix's scale is used for a sort key).
-- If there is no scale or SI flag, and the unit is not defined in convert,
-- the sort key may not be correct; this allows such units to be identified.
if not (unit.si or unit.scale_text) then
if mode == 'convert' then
unit.show = not lookup(unit.alias and unit.symbol or ucode).unknown
unit.show_text = 'CONVERT'
elseif mode == 'unknown' then
unit.show = lookup(unit.alias and unit.symbol or ucode).unknown
unit.show_text = 'UNKNOWN'
elseif not unit.alias then
-- Show convert's scale in square brackets ('[1]' for an unknown unit).
-- Don't show scale for an alias because it's misleading for temperature
-- and an alias is probably not useful for anything else.
local scale = lookup(ucode, {value=1, sort='on'}).scaled_value
if type(scale) == 'number' then
scale = string.format('%.5g', scale):gsub('e%+?(%-?)0*(%d+)', 'e%1%2')
else
scale = '?'
end
unit.show = true
unit.show_text = '[' .. scale .. ']'
end
end
end
for line in definitions:gmatch('([^\n]*)\n') do
local pos, _ = line:find(' ', 1, true)
if pos then
local ucode = line:sub(1, pos - 1)
local unit = get_builtin_unit(ucode, '\n' .. line .. '\n')
if is_valid(ucode, unit) then
show_convert(ucode, unit)
local flags, text
if unit.alias then
text = unit.symbol
else
text = '[[' .. unit.link .. '|' .. unit.display .. ']]'
end
if unit.isangle then
unit.nospace = nil -- don't show redundant flag
end
for _, f in ipairs({
{ 'alias', 'ALIAS' },
{ 'isangle', 'ANGLE' },
{ 'nospace', 'NOSPACE' },
{ 'si', 'SI' },
{ 'scale_text', unit.scale_text },
{ 'show', unit.show_text },
}) do
if unit[f[1]] then
local t = f[2]
if t:match('^%u+$') then
t = '<small>' .. t .. '</small>'
end
if flags then
flags = flags .. ' ' .. t
else
flags = t
end
end
end
if flags then
text = text .. ' • ' .. flags
end
add(ucode .. ' = ' .. text .. '<br />')
else
add(line .. ' ◆ <b>invalid definition</b><br />')
end
else
add(line)
end
end
return table.concat(result, '\n')
end
local delimit_groups = require('Module:Gapnum').groups
local function delimit(sign, numstr, fmt)
-- Return sign and numstr (unsigned digits or numdot only) after formatting.
-- Four-digit integers are not formatted with gaps.
fmt = (fmt or ''):lower()
if fmt == 'none' or (fmt == '' and #numstr == 4 and numstr:match('^%d+$')) then
return sign .. numstr
end
-- Group number by integer and decimal parts.
-- If there is no decimal part, delimit_groups returns only one table.
local ipart, dpart = delimit_groups(numstr)
local result
if fmt == 'commas' then
result = sign .. table.concat(ipart, numsep)
if dpart then
result = result .. numdot .. table.concat(dpart)
end
else
-- Delimit with a small gap by default.
local groups = {}
groups[1] = table.remove(ipart, 1)
for _, v in ipairs(ipart) do
table.insert(groups, '<span style="margin-left:.25em;">' .. v .. '</span>')
end
if dpart then
table.insert(groups, numdot .. (table.remove(dpart, 1) or ''))
for _, v in ipairs(dpart) do
table.insert(groups, '<span style="margin-left:.25em;">' .. v .. '</span>')
end
end
result = sign .. table.concat(groups)
end
return result
end
local function sup_sub(sup, sub, align)
-- Return the same result as Module:Su except val defaults to align=right.
if align == 'l' or align == 'left' then
align = 'left'
elseif align == 'c' or align == 'center' then
align = 'center'
else
align = 'right'
end
return '<span style="display:inline-block;margin-bottom:-0.3em;vertical-align:-0.4em;line-height:1.2em;font-size:85%;text-align:' ..
align .. ';">' .. sup .. '<br />' .. sub .. '</span>'
end
local function range_text(items, unit_table, options)
local fmt = options.fmt
local nend = items.nend or ''
if items.isrepeat or unit_table.isangle then
nend = nend .. unit_table.text
end
local text = ''
for i = 1, #items do
if i % 2 == 0 then
text = text .. items[i]
else
text = text .. delimit(items[i].sign, items[i].clean, fmt) .. nend
end
end
return text
end
local function uncertainty_text(uncertainty, unit_table, options)
local angle, text, need_parens
if unit_table.isangle then
angle = unit_table.text
end
local upper = uncertainty.upper or {}
local lower = uncertainty.lower or {}
local uncU = upper.clean
if uncU then
local fmt = options.fmt
local uncL = lower.clean
if uncL then
uncU = delimit('+', uncU, fmt) .. (upper.errend or '')
uncL = delimit('−', uncL, fmt) .. (lower.errend or '')
if angle then
uncU = uncU .. angle
uncL = uncL .. angle
end
text = (angle or '') ..
'<span style="margin-left:0.3em;">' ..
sup_sub(uncU, uncL, options.align) ..
'</span>'
else
if upper.parens then
text = '(' .. uncU .. ')' -- old template did not delimit
else
text = (angle or '') ..
'<span style="margin-left:0.225em;margin-right:0.225em;">±</span>' ..
delimit('', uncU, fmt)
need_parens = true
end
if uncertainty.errend then
text = text .. uncertainty.errend
end
if angle then
text = text .. angle
end
end
else
if angle then
text = angle
end
end
return text, need_parens
end
local function _main(values, unit_spec, options)
if options.sandbox then
data_module = data_module .. '/sandbox'
convert_module = convert_module .. '/sandbox'
end
local action = options.action
if action then
if action == 'list' then
-- Kludge: am using the align parameter (a=xxx) for type of list.
return list_units(options.align)
end
return valerror('invalid action "' .. action .. '".', options.nocat)
end
local number = values.number or (values.numbers and values.numbers[1]) or {}
local e_10 = options.e or {}
local novalue = (number.value == nil and e_10.clean == nil)
local fmt = options.fmt
local want_sort = true
local sortable = options.sortable
if sortable == 'off' or (sortable == nil and novalue) then
want_sort = false
elseif sortable == 'debug' then
-- Same as sortable = 'on' but the sort key is displayed.
else
sortable = 'on'
end
local sort_value = 1
if want_sort then
sort_value = number.value or 1
if e_10.value and sort_value ~= 0 then
-- The 'if' avoids {{val|0|e=1234}} giving an invalid sort_value due to overflow.
sort_value = sort_value * 10^e_10.value
end
end
local unit_table = makeunit(sort_value, {
u = unit_spec.u,
want_link = unit_spec.want_link,
per = unit_spec.per,
want_per_link = unit_spec.want_per_link,
nospace = novalue,
want_longscale = unit_spec.want_longscale,
sortable = sortable,
})
local sortkey
if unit_table then
if want_sort then
sortkey = unit_table.sortkey
end
else
unit_table = { text = '' }
if want_sort then
sortkey = convert_lookup('dummy', sort_value, nil, nil, nil, { sortable = sortable }).sortspan
end
end
local final_unit = unit_table.isangle and '' or unit_table.text
local e_text, n_text, need_parens
local uncertainty = values.uncertainty
if uncertainty then
if number.clean then
n_text = delimit(number.sign, number.clean, fmt) .. (number.nend or '')
local text
text, need_parens = uncertainty_text(uncertainty, unit_table, options)
if text then
n_text = n_text .. text
end
else
n_text = ''
end
else
if values.numbers.isrepeat then
final_unit = ''
end
n_text = range_text(values.numbers, unit_table, options)
need_parens = true
end
if e_10.clean then
if need_parens then
n_text = '(' .. n_text .. ')'
end
e_text = '10<sup>' .. delimit(e_10.sign, e_10.clean, fmt) .. '</sup>'
if number.clean then
e_text = '<span style="margin-left:0.25em;margin-right:0.15em;">×</span>' .. e_text
end
else
e_text = ''
end
local result =
(sortkey or '') ..
(options.prefix or '') ..
n_text ..
e_text ..
final_unit ..
(options.suffix or '')
if result ~= '' then
result = '<span class="nowrap">' .. result .. '</span>'
end
return result .. (options.warning or '')
end
local function check_parameters(args, has_ranges, nocat)
-- Return warning text for the first problem parameter found, or nothing if ok.
local whitelist = {
a = true,
action = true,
debug = true,
e = true,
['end'] = true,
errend = true,
['+errend'] = true,
['-errend'] = true,
fmt = true,
['long scale'] = true,
long_scale = true,
longscale = true,
nocategory = true,
p = true,
s = true,
sortable = true,
u = true,
ul = true,
up = true,
upl = true,
}
for k, v in pairs(args) do
if type(k) == 'string' and not whitelist[k] then
local warning = string.format(mtext['mt-val-not-supported'], k, v)
return valerror(warning, nocat, true)
end
end
if not has_ranges and args[4] then
return valerror(mtext['mt-ignore-parameter4'], nocat, true)
end
end
local function main(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame, {wrappers = { 'Template:Val' }})
local nocat = args.nocategory
local numbers = {} -- table of number tables, perhaps with range text
local msg = get_args(numbers, args)
if msg then
return valerror(msg, nocat)
end
if args.u and args.ul then
return valerror(mtext['mt-both-u-ul'], nocat)
end
if args.up and args.upl then
return valerror(mtext['mt-both-up-upl'], nocat)
end
local values
if numbers.has_ranges then
-- Multiple values with range separators but no uncertainty.
numbers.nend = args['end']
values = {
numbers = numbers,
}
else
-- A single value with optional uncertainty.
local function setfield(i, dst, src)
local v = args[src]
if v then
if numbers[i] then
numbers[i][dst] = v
else
numbers[i] = { [dst] = v }
end
end
end
setfield(1, 'nend', 'end')
setfield(2, 'errend', '+errend')
setfield(3, 'errend', '-errend')
values = {
number = numbers[1],
uncertainty = {
upper = numbers[2],
lower = numbers[3],
errend = args.errend,
}
}
end
local unit_spec = {
u = args.ul or args.u,
want_link = args.ul ~= nil,
per = args.upl or args.up,
want_per_link = args.upl ~= nil,
want_longscale = (args.longscale or args.long_scale or args['long scale']) == 'on',
}
local options = {
action = args.action,
align = args.a,
e = numbers.e,
fmt = args.fmt,
nocat = nocat,
prefix = args.p,
sandbox = string.find(frame:getTitle(), 'sandbox', 1, true) ~= nil,
sortable = args.sortable or (args.debug == 'yes' and 'debug' or nil),
suffix = args.s,
warning = check_parameters(args, numbers.has_ranges, nocat),
}
return _main(values, unit_spec, options)
end
return { main = main, _main = _main }
cf2vy01lmmi4xusv9uok74d8k7gzawo
Module:Gapnum
828
34730
126089
2026-07-15T10:45:25Z
Fongcwele
16873
Created page with "local p = {} local getArgs function p.main(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end local args = getArgs(frame, {wrappers = 'Template:Gapnum'}) local n = args[1] if not n then error('Parameter 1 is required') elseif not tonumber(n) and not tonumber(n, 36) then -- Validates any number with base ≤ 36 error('Unable to convert "' .. args[1] .. '" to a number') end local gap = args.gap local precision = tonumber(args.p..."
126089
Scribunto
text/plain
local p = {}
local getArgs
function p.main(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
local args = getArgs(frame, {wrappers = 'Template:Gapnum'})
local n = args[1]
if not n then
error('Parameter 1 is required')
elseif not tonumber(n) and not tonumber(n, 36) then -- Validates any number with base ≤ 36
error('Unable to convert "' .. args[1] .. '" to a number')
end
local gap = args.gap
local precision = tonumber(args.prec)
return p.gaps(n,{gap=gap,prec=precision})
end
-- Not named p._main so that it has a better function name when required by Module:Val
function p.gaps(n,tbl)
local nstr = tostring(n)
if not tbl then
tbl = {}
end
local gap = tbl.gap or '.25em'
local int_part, frac_part = p.groups(n,tbl.prec)
local ret = mw.html.create('span')
:css('white-space','nowrap')
-- No gap necessary on first group
:wikitext(table.remove(int_part,1))
-- Build int part
for _, v in ipairs(int_part) do
ret:tag('span')
:css('margin-left',gap)
:wikitext(v)
end
if frac_part then
-- The first group after the decimal shouldn't have a gap
ret:wikitext('.' .. table.remove(frac_part,1))
-- Build frac part
for _, v in ipairs(frac_part) do
ret:tag('span')
:css('margin-left',gap)
:wikitext(v)
end
end
return ret
end
-- Creates tables where each element is a different group of the number
function p.groups(num,precision)
local nstr = tostring(num)
if not precision then
precision = -1
end
local decimalloc = nstr:find('.', 1, true)
local int_part, frac_part
if decimalloc == nil then
int_part = nstr
else
int_part = nstr:sub(1, decimalloc-1)
frac_part = nstr:sub(decimalloc + 1)
end
-- only define ret_i as an empty table, let ret_d stay nil
local ret_i,ret_d = {}
-- Loop to handle most of the groupings; from right to left, so that if a group has less than 3 members, it will be the first group
while int_part:len() > 3 do
-- Insert in first spot, since we're moving backwards
table.insert(ret_i,1,int_part:sub(-3))
int_part = int_part:sub(1,-4)
end
-- handle any left over numbers
if int_part:len() > 0 then
table.insert(ret_i,1,int_part)
end
if precision ~= 0 and frac_part then
ret_d = {}
if precision == -1 then
precision = frac_part:len()
end
-- Reduce the length of the string if required precision is less than actual precision
-- OR
-- Increase it (by adding 0s) if the required precision is more than actual
local offset = precision - frac_part:len()
if offset < 0 then
frac_part = frac_part:sub(1,precision)
elseif offset > 0 then
frac_part = frac_part .. string.rep('0', offset)
end
-- Allow groups of 3 or 2 (3 first)
for v in string.gmatch(frac_part,'%d%d%d?') do
table.insert(ret_d,v)
end
-- Preference for groups of 4 instead of groups of 1 at the end
if #frac_part % 3 == 1 then
if frac_part:len() == 1 then
ret_d = {frac_part}
else
local last_g = ret_d[#ret_d] or ''
last_g = last_g..frac_part:sub(-1)
ret_d[#ret_d] = last_g
end
end
end
return ret_i,ret_d
end
return p
lj5n3lgypceqtbnvwbvlt9k8birgmdl
Module:Val/units
828
34731
126090
2026-07-15T10:49:08Z
Fongcwele
16873
Created page with "-- Definitions for units known to val -- File format is two strings and a return statement with them in it: -- string in quotes [=[ ... builtin_units ... ]=]. -- string in quotes [=[ ... builtin_units_long_scale ... ]=]. -- First string, builtin_units, is short-scale, second string is long scale. -- Entry format: -- One record per line, starting in first column, having 2-4 fields. -- Field separator: two or more spaces -- Between first and second fields: two or more spa..."
126090
Scribunto
text/plain
-- Definitions for units known to val
-- File format is two strings and a return statement with them in it:
-- string in quotes [=[ ... builtin_units ... ]=].
-- string in quotes [=[ ... builtin_units_long_scale ... ]=].
-- First string, builtin_units, is short-scale, second string is long scale.
-- Entry format:
-- One record per line, starting in first column, having 2-4 fields.
-- Field separator: two or more spaces
-- Between first and second fields: two or more spaces
-- Between all other fields: two or more spaces, or one or more tabs
-- Entries without two spaces in them are ignored.
-- There must be a blank line before the first entry and after the last.
-- I.e. the first two and last two characters of the string must be newlines.
-- Format of entry. Two record types:
--
-- One record type is a wikilink:
-- Unit-code [[ pagename | Symbol-accepts-HTML-only ]]
-- Text-field separator is still two spaces. Two spaces not allowed in wikilink.
--
-- The other record type is all fields:
-- Unit-code symbol-accepts-HTML-only pagename#section-OK
--
-- Plus there is an optional field that goes at the end after two or more spaces.
-- Whether it is a number or an equation or the letters SI,
-- any of these three has the same function: a wikitable sorting "scale".
-- It is for sorting, and it works for either record type.
-- Difference is SI can't accept HTML. But SI correctly scales any SI prefix.
-- (Optional fields ALIAS and NOSPACE and ANGLE are for advanced users.)
-- "Invalid unit" error:
-- Using SI requires that the symbol equal unit-code, so never allows HTML.
-- Any difference between SI or symbol must be an SI prefix, such as k, M, or G.
-- A space at the end of an entry is an error. No space at each EOL.
local builtin_units = [=[
== Test ==
Foo [[Hz|<samp>Foo</samp>]]
Baz [[Hertz|baz<sub>0</sub>]]
Baz [[Kelvins|baz<sub>0</sub>]]
Bar [[Foobar|bar<abbr title="super duper">0</abbr>]]
quux [[Foobar|<span title="super duper 2">bar0</span>]]
== Unsorted units ==
c0 [[Speed of light#Numerical value, notation, and units|''c''<sub>0</sub>]]
lbf [[Pound (force)|<span title="pound-force">lb<sub>F</sub></span>]]
N.s [[Newton-second|N⋅s]]
J.K-1 [[Joule per kelvin|J⋅K<sup>−1</sup>]]
C.mol-1 [[Faraday constant|C⋅mol<sup>−1</sup>]]
C/mol [[Faraday constant|C/mol]]
C.kg-1 [[Roentgen (unit)|C⋅kg<sup>−1</sup>]]
C/kg [[Roentgen (unit)|C/kg]]
F.m-1 [[vacuum permittivity|F⋅m<sup>−1</sup>]]
F/m [[vacuum permittivity|F/m]]
e [[Elementary charge|''e'']]
kB [[Kilobyte|kB]] 8e3
KB [[Kilobyte|KB]] 8e3
MB [[Megabyte|MB]] 8e6
GB [[Gigabyte|GB]] 8e9
TB [[Terabyte|TB]] 8e12
lx [[Lux (unit)|lx]]
nat [[nat (unit)|nat]]
== Time and frequency ==
byte/s [[Data rate units|byte/s]] 8
kB/s [[Data rate units#Kilobyte per second|<span title="Kilobytes per second">kB/s</span>]] 8e3
MB/s [[Data rate units#Megabyte per second|<span title="Megabytes per second">MB/s</span>]] 8e6
GB/s [[Data rate units#Gigabyte per second|<span title="Gigabytes per second">GB/s</span>]] 8e9
TB/s [[Data rate units#Terabyte per second|<span title="Terabytes per second">TB/s</span>]] 8e12
bit/s [[Bit per second|bit/s]] 1
bps [[Bit per second|bit/s]] 1
kbit/s [[Kilobit per second|kbit/s]] 1e3
Mbit/s [[Megabit per second|Mbit/s]] 1e6
Gbit/s [[Gigabit per second|Gbit/s]] 1e9
Tbit/s [[Terabit per second|Tbit/s]] 1e12
kT/s [[Transfer (computing)|<span title="Kilotransfers per second">kT/s</span>]] 1e3
MT/s [[Transfer (computing)|<span title="Megatransfers per second">MT/s</span>]] 1e6
GT/s [[Transfer (computing)|<span title="Gigatransfers per second">GT/s</span>]] 1e9
year [[Year|year]] 31557600
years [[Year|years]] 31557600
yr [[Year#Symbols and abbreviations|yr]] 31557600
y [[Year|y]] 31557600
a [[Annum|a]] 31557600
Ga [[Gigaannum|Ga]] 31557600000000000
Ma [[Megaannum|Ma]] 31557600000000
ka [[Kiloannum|ka]] 31557600000
kyr [[kyr|kyr]] 31557600000
kya [[kyr|kya]] 31557600000
myr [[myr|myr]] 31557600000000
mya [[Mya (unit)|mya]] 31557600000000
byr [[Billion years|byr]] 31557600000000000
bya [[Billion years ago|bya]] 31557600000000000
Gyr [[billion years|Gyr]] 31557600000000000
BP [[Before present|BP]]
uBP [[Radiocarbon dating#Calibration|<sup>14</sup>C yr BP]]
BC [[Before Christ|BC]] -1
AD [[Anno Domini|AD]] 1
BCE [[Before the Common Era|BCE]] -1
CE [[Common Era|CE]] 1
JD [[Julian date|JD]] 1
MJD [[Modified Julian date|MJD]] 1
s-1 [[Second|s<sup>−1</sup>]]
s-2 [[Second|s<sup>−2</sup>]]
s2 [[Second|s<sup>2</sup>]]
s [[Second|s]] SI
as [[Attosecond|s]] SI
cs [[Second|s]] SI
das [[Second|s]] SI
ds [[Second|s]] SI
Es [[Second|s]] SI
fs [[Femtosecond|s]] SI
Gs [[Second|s]] SI
hs [[Second|s]] SI
ks [[Second|s]] SI
ms [[Millisecond|s]] SI
µs [[Microsecond|s]] SI
us [[Microsecond|s]] SI
Ms [[Second|s]] SI
ns [[Nanosecond|s]] SI
ps [[Picosecond|s]] SI
Ps [[Second|s]] SI
Ts [[Second|s]] SI
Ys [[Second|s]] SI
ys [[Yoctosecond|s]] SI
Zs [[Second|s]] SI
zs [[Zeptosecond|s]] SI
Hz [[Hertz|Hz]] SI
aHz [[Hertz|Hz]] SI
cHz [[Hertz|Hz]] SI
daHz [[Hertz|Hz]] SI
dHz [[Hertz|Hz]] SI
EHz [[Hertz|Hz]] SI
fHz [[Hertz|Hz]] SI
hHz [[Hertz|Hz]] SI
GHz [[Gigahertz|Hz]] SI
kHz [[Kilohertz|Hz]] SI
MHz [[Megahertz|Hz]] SI
mHz [[Hertz|Hz]] SI
uHz [[Hertz|Hz]] SI
µHz [[Hertz|Hz]] SI
nHz [[Hertz|Hz]] SI
pHz [[Hertz|Hz]] SI
PHz [[Hertz|Hz]] SI
THz [[Hertz|Hz]] SI
yHz [[Hertz|Hz]] SI
YHz [[Hertz|Hz]] SI
zHz [[Hertz|Hz]] SI
ZHz [[Hertz|Hz]] SI
ips [[Inch per second|ips]]
== Length, area, volume ==
Å3 [[Ångström|Å<sup>3</sup>]]
fb-1 [[Barn (unit)#Inverse femtobarn|fb<sup>−1</sup>]]
m-1 [[Metre|m<sup>−1</sup>]]
m-2 [[Square metre|m<sup>−2</sup>]]
m-3 [[Cubic metre|m<sup>−3</sup>]]
km2 [[Square kilometre|km<sup>2</sup>]]
km3 [[Cubic kilometre|km<sup>3</sup>]]
µm2 [[Square metre|μm<sup>2</sup>]]
um2 [[Square metre|μm<sup>2</sup>]]
am2 [[Square metre|am<sup>2</sup>]]
cm2 [[Square centimetre|cm<sup>2</sup>]]
dam2 [[Square metre|dam<sup>2</sup>]]
dm2 [[Square metre|dm<sup>2</sup>]]
Em2 [[Square metre|Em<sup>2</sup>]]
fm2 [[Square metre|fm<sup>2</sup>]]
Gm2 [[Square metre|Gm<sup>2</sup>]]
hm2 [[Square metre|hm<sup>2</sup>]]
mm2 [[Square metre|mm<sup>2</sup>]]
Mm2 [[Square metre|Mm<sup>2</sup>]]
nm2 [[Square metre|nm<sup>2</sup>]]
pm2 [[Square metre|pm<sup>2</sup>]]
Pm2 [[Square metre|Pm<sup>2</sup>]]
Tm2 [[Square metre|Tm<sup>2</sup>]]
ym2 [[Square metre|ym<sup>2</sup>]]
Ym2 [[Square metre|Ym<sup>2</sup>]]
zm2 [[Square metre|zm<sup>2</sup>]]
Zm2 [[Square metre|Zm<sup>2</sup>]]
gal [[Gallon|gal]]
Gal [[Gal (unit)|Gal]]
uGal [[Gal (unit)|μGal]]
µGal [[Gal (unit)|μGal]]
mGal [[Gal (unit)|mGal]]
b [[Barn (unit)|b]] SI
ab [[Barn (unit)|b]] SI
cb [[Barn (unit)|b]] SI
dab [[Barn (unit)|b]] SI
db [[Barn (unit)|b]] SI
Eb [[Barn (unit)|b]] SI
fb [[Barn (unit)|b]] SI
Gb [[Barn (unit)|b]] SI
hb [[Barn (unit)|b]] SI
kb [[Barn (unit)|b]] SI
mb [[Barn (unit)|b]] SI
µb [[Barn (unit)|b]] SI
ub [[Barn (unit)|b]] SI
Mb [[Barn (unit)|b]] SI
nb [[Barn (unit)|b]] SI
pb [[Barn (unit)|b]] SI
Pb [[Barn (unit)|b]] SI
Tb [[Barn (unit)|b]] SI
Yb [[Barn (unit)|b]] SI
yb [[Barn (unit)|b]] SI
Zb [[Barn (unit)|b]] SI
zb [[Barn (unit)|b]] SI
== Velocity and acceleration ==
m.s-2 [[Metre per second squared|m⋅s<sup>−2</sup>]]
m/s2 [[Metre per second squared|m/s<sup>2</sup>]]
m.s-1 [[Metre per second|m⋅s<sup>−1</sup>]]
m/s [[Metre per second|m/s]]
km.s-1 [[Metre per second|km⋅s<sup>−1</sup>]]
km/s [[Metre per second|km/s]]
== Mass and energy ==
lbm [[Pound (mass)|<span title="pound-mass">lb<sub>m</sub></span>]]
uJ [[Joule|μJ]]
J.s [[Joule-second|J⋅s]]
kWh [[Kilowatt-hour|kWh]]
kW.h [[Kilowatt-hour|kW⋅h]]
J/C [[Volt|J/C]]
J/kg [[Joule|J/kg]]
Da [[Dalton (unit)|Da]] SI
EDa [[Dalton (unit)|Da]] SI
PDa [[Dalton (unit)|Da]] SI
TDa [[Dalton (unit)|Da]] SI
GDa [[Dalton (unit)|Da]] SI
MDa [[Dalton (unit)|Da]] SI
kDa [[Dalton (unit)|Da]] SI
mDa [[Dalton (unit)|Da]] SI
uDa [[Dalton (unit)|Da]] SI
μDa [[Dalton (unit)|Da]] SI
nDa [[Dalton (unit)|Da]] SI
pDa [[Dalton (unit)|Da]] SI
fDa [[Dalton (unit)|Da]] SI
aDa [[Dalton (unit)|Da]] SI
g [[Gram|g]] SI
ag [[Attogram|g]] SI
cg [[Centigram|g]] SI
dag [[Gram|g]] SI
dg [[Decigram|g]] SI
Eg [[Exagram|g]] SI
fg [[Femtogram|g]] SI
Gg [[Gigagram|g]] SI
hg [[Kilogram#SI multiples|g]] SI
kg [[Kilogram|g]] SI
mcg [[Microgram|g]] SI
Mg [[Megagram|g]] SI
mg [[Milligram|g]] SI
ug [[Microgram|g]] SI
µg [[Microgram|g]] SI
ng [[Nanogram|g]] SI
Pg [[Petagram|g]] SI
pg [[Picogram|g]] SI
Tg [[Tonne|g]] SI
yg [[Yoctogram|g]] SI
Yg [[Yottagram|g]] SI
zg [[Zeptogram|g]] SI
Zg [[Zettagram|g]] SI
== Pressure and density ==
psi [[Pounds per square inch|psi]]
g.cm-3 [[Gram per cubic centimetre|g⋅cm<sup>−3</sup>]]
g/cm3 [[Gram per cubic centimetre|g/cm<sup>3</sup>]]
kg.m-3 [[Kilogram per cubic metre|kg⋅m<sup>−3</sup>]]
kg/m3 [[Kilogram per cubic metre|kg/m<sup>3</sup>]]
kg/cm3 [[Density#Formula and common units|kg/cm<sup>3</sup>]]
g/L [[Gram per litre|g/L]]
g/l [[Gram per litre|g/l]]
mcg/dL [[Gram per litre|μg/dL]]
mcg/dl [[Gram per litre|μg/dl]]
mg/mL [[Gram per litre|mg/mL]]
mg/ml [[Gram per litre|mg/ml]]
ug/dL [[Gram per litre|μg/dL]]
ug/dl [[Gram per litre|μg/dl]]
μg/dL [[Gram per litre|μg/dL]]
μg/dl [[Gram per litre|μg/dl]]
mg.L-1 [[Gram per litre|<abbr title="milligrams per liter">mg/L</abbr>]]
mg/L [[Gram per litre|<abbr title="milligrams per liter">mg/L</abbr>]]
mg.l-1 [[Gram per litre|<abbr title="milligrams per liter">mg/l</abbr>]]
mg/l [[Gram per litre|<abbr title="milligrams per liter">mg/l</abbr>]]
== Fracture toughness ==
MPa.m.5 [[Fracture toughness|MPa⋅m<sup>1/2</sup>]]
kPa.m.5 [[Fracture toughness|kPa⋅m<sup>1/2</sup>]]
Pa.m.5 [[Fracture toughness|Pa⋅m<sup>1/2</sup>]]
== Temperature ==
degC °C ALIAS
degF °F ALIAS
degR °R ALIAS
K [[Kelvin|K]] SI
YK [[Yottakelvin|K]] SI
ZK [[Zettakelvin|K]] SI
EK [[Kelvin|K]] SI
PK [[Petakelvin|K]] SI
TK [[Terakelvin|K]] SI
GK [[Gigakelvin|K]] SI
MK [[Megakelvin|K]] SI
kK [[Kilokelvin|K]] SI
hK [[Hectokelvin|K]] SI
daK [[Decakelvin|K]] SI
dK [[Decikelvin|K]] SI
cK [[Centikelvin|K]] SI
mK [[Millikelvin|K]] SI
µK [[Microkelvin|K]] SI
uK [[Microkelvin|K]] SI
nK [[Nanokelvin|K]] SI
pK [[Picokelvin|K]] SI
fK [[Femtokelvin|K]] SI
aK [[Attokelvin|K]] SI
zK [[Zeptokelvin|K]] SI
yK [[Yoctokelvin|K]] SI
== Electromagnetism ==
Wb [[Weber (unit)|Wb]]
N.A-2 [[Permeability (electromagnetism)|N⋅A<sup>−2</sup>]]
H.m-1 [[Permeability (electromagnetism)|H⋅m<sup>−1</sup>]]
V.m-1 [[Electric field|V⋅m<sup>−1</sup>]]
V/m [[Electric field|V/m]]
C [[Coulomb|C]] SI
YC [[Coulomb|C]] SI
ZC [[Coulomb|C]] SI
EC [[Coulomb|C]] SI
PC [[Coulomb|C]] SI
TC [[Coulomb|C]] SI
GC [[Coulomb|C]] SI
MC [[Coulomb|C]] SI
kC [[Coulomb|C]] SI
hC [[Coulomb|C]] SI
daC [[Coulomb|C]] SI
dC [[Coulomb|C]] SI
cC [[Coulomb|C]] SI
mC [[Coulomb|C]] SI
µC [[Coulomb|C]] SI
uC [[Coulomb|C]] SI
nC [[Coulomb|C]] SI
pC [[Coulomb|C]] SI
fC [[Coulomb|C]] SI
aC [[Coulomb|C]] SI
zC [[Coulomb|C]] SI
yC [[Coulomb|C]] SI
F [[Farad|F]] SI
YF [[Farad|F]] SI
ZF [[Farad|F]] SI
EF [[Farad|F]] SI
PF [[Farad|F]] SI
TF [[Farad|F]] SI
GF [[Farad|F]] SI
MF [[Farad|F]] SI
kF [[Farad|F]] SI
hF [[Farad|F]] SI
daF [[Farad|F]] SI
dF [[Farad|F]] SI
cF [[Farad|F]] SI
mF [[Farad|F]] SI
µF [[Farad|F]] SI
uF [[Farad|F]] SI
nF [[Farad|F]] SI
pF [[Farad|F]] SI
fF [[Farad|F]] SI
aF [[Farad|F]] SI
zF [[Farad|F]] SI
yF [[Farad|F]] SI
H [[Henry (unit)|H]] SI
YH [[Henry (unit)|H]] SI
ZH [[Henry (unit)|H]] SI
EH [[Henry (unit)|H]] SI
PH [[Henry (unit)|H]] SI
TH [[Henry (unit)|H]] SI
GH [[Henry (unit)|H]] SI
MH [[Henry (unit)|H]] SI
kH [[Henry (unit)|H]] SI
hH [[Henry (unit)|H]] SI
daH [[Henry (unit)|H]] SI
dH [[Henry (unit)|H]] SI
cH [[Henry (unit)|H]] SI
mH [[Henry (unit)|H]] SI
µH [[Henry (unit)|H]] SI
uH [[Henry (unit)|H]] SI
nH [[Henry (unit)|H]] SI
pH [[Henry (unit)|H]] SI
fH [[Henry (unit)|H]] SI
aH [[Henry (unit)|H]] SI
zH [[Henry (unit)|H]] SI
yH [[Henry (unit)|H]] SI
A [[Ampere|A]] SI
YA [[Ampere|A]] SI
ZA [[Ampere|A]] SI
EA [[Ampere|A]] SI
PA [[Ampere|A]] SI
TA [[Ampere|A]] SI
GA [[Ampere|A]] SI
MA [[Ampere|A]] SI
kA [[Ampere|A]] SI
hA [[Ampere|A]] SI
daA [[Ampere|A]] SI
dA [[Ampere|A]] SI
cA [[Ampere|A]] SI
mA [[Ampere|A]] SI
µA [[Ampere|A]] SI
uA [[Ampere|A]] SI
nA [[Ampere|A]] SI
pA [[Ampere|A]] SI
fA [[Ampere|A]] SI
aA [[Ampere|A]] SI
zA [[Ampere|A]] SI
yA [[Ampere|A]] SI
V [[Volt|V]] SI
YV [[Volt|V]] SI
ZV [[Volt|V]] SI
EV [[Volt|V]] SI
PV [[Volt|V]] SI
TV [[Volt|V]] SI
GV [[Volt|V]] SI
MV [[Volt|V]] SI
kV [[Volt|V]] SI
hV [[Volt|V]] SI
daV [[Volt|V]] SI
dV [[Volt|V]] SI
cV [[Volt|V]] SI
mV [[Volt|V]] SI
µV [[Volt|V]] SI
uV [[Volt|V]] SI
nV [[Volt|V]] SI
pV [[Volt|V]] SI
fV [[Volt|V]] SI
aV [[Volt|V]] SI
zV [[Volt|V]] SI
yV [[Volt|V]] SI
VA [[Volt-ampere|VA]] SI
YVA [[Volt-ampere|VA]] SI
ZVA [[Volt-ampere|VA]] SI
EVA [[Volt-ampere|VA]] SI
PVA [[Volt-ampere|VA]] SI
TVA [[Volt-ampere|VA]] SI
GVA [[Volt-ampere|VA]] SI
MVA [[Volt-ampere|VA]] SI
kVA [[Volt-ampere|VA]] SI
hVA [[Volt-ampere|VA]] SI
daVA [[Volt-ampere|VA]] SI
dVA [[Volt-ampere|VA]] SI
cVA [[Volt-ampere|VA]] SI
mVA [[Volt-ampere|VA]] SI
µVA [[Volt-ampere|VA]] SI
uVA [[Volt-ampere|VA]] SI
nVA [[Volt-ampere|VA]] SI
pVA [[Volt-ampere|VA]] SI
fVA [[Volt-ampere|VA]] SI
aVA [[Volt-ampere|VA]] SI
zVA [[Volt-ampere|VA]] SI
yVA [[Volt-ampere|VA]] SI
Ω [[Ohm|Ω]] SI
GΩ [[Ohm|Ω]] SI
MΩ [[Ohm|Ω]] SI
kΩ [[Ohm|Ω]] SI
mΩ [[Ohm|Ω]] SI
μΩ [[Ohm|Ω]] SI
uΩ [[Ohm|Ω]] SI
nΩ [[Ohm|Ω]] SI
ohm [[Ohm|Ω]]
Gohm [[Ohm|GΩ]] 1e9
Mohm [[Ohm|MΩ]] 1e6
kohm [[Ohm|kΩ]] 1e3
mohm [[Ohm|mΩ]] 1e-3
μohm [[Ohm|μΩ]] 1e-6
uohm [[Ohm|μΩ]] 1e-6
nohm [[Ohm|nΩ]] 1e-9
YΩ.m [[Electrical resistivity and conductivity#Definition|YΩ⋅m]] 1e24
ZΩ.m [[Electrical resistivity and conductivity#Definition|ZΩ⋅m]] 1e21
EΩ.m [[Electrical resistivity and conductivity#Definition|EΩ⋅m]] 1e18
PΩ.m [[Electrical resistivity and conductivity#Definition|PΩ⋅m]] 1e15
TΩ.m [[Electrical resistivity and conductivity#Definition|TΩ⋅m]] 1e12
GΩ.m [[Electrical resistivity and conductivity#Definition|GΩ⋅m]] 1e9
MΩ.m [[Electrical resistivity and conductivity#Definition|MΩ⋅m]] 1e6
kΩ.m [[Electrical resistivity and conductivity#Definition|kΩ⋅m]] 1e3
Ω.m [[Electrical resistivity and conductivity#Definition|Ω⋅m]] 1
mΩ.m [[Electrical resistivity and conductivity#Definition|mΩ⋅m]] 1e-3
µΩ.m [[Electrical resistivity and conductivity#Definition|μΩ⋅m]] 1e-6
uΩ.m [[Electrical resistivity and conductivity#Definition|μΩ⋅m]] 1e-6
nΩ.m [[Electrical resistivity and conductivity#Definition|nΩ⋅m]] 1e-9
pΩ.m [[Electrical resistivity and conductivity#Definition|pΩ⋅m]] 1e-12
fΩ.m [[Electrical resistivity and conductivity#Definition|fΩ⋅m]] 1e-15
aΩ.m [[Electrical resistivity and conductivity#Definition|aΩ⋅m]] 1e-18
zΩ.m [[Electrical resistivity and conductivity#Definition|zΩ⋅m]] 1e-21
yΩ.m [[Electrical resistivity and conductivity#Definition|yΩ⋅m]] 1e-24
R [[Rayleigh (unit)|R]] SI
G [[Gauss (unit)|G]] SI
aG [[Attogauss|G]] SI
cG [[Centigauss|G]] SI
daG [[Decagauss|G]] SI
dG [[Decigauss|G]] SI
EG [[Exagauss|G]] SI
fG [[Femtogauss|G]] SI
GG [[Gigagauss|G]] SI
hG [[Hectogauss|G]] SI
kG [[Kilogauss|G]] SI
MG [[Megagauss|G]] SI
mG [[Milligauss|G]] SI
uG [[Microgauss|G]] SI
µG [[Microgauss|G]] SI
nG [[Nanogauss|G]] SI
PG [[Petagauss|G]] SI
pG [[Picogauss|G]] SI
TG [[Teragauss|G]] SI
yG [[Yoctogauss|G]] SI
YG [[Yottagauss|G]] SI
zG [[Zeptogauss|G]] SI
ZG [[Zettagauss|G]] SI
T [[Tesla (unit)|T]] SI
aT [[Attotesla|T]] SI
cT [[Centitesla|T]] SI
daT [[Decatesla|T]] SI
dT [[Decitesla|T]] SI
ET [[Exatesla|T]] SI
fT [[Femtotesla|T]] SI
GT [[Gigatesla|T]] SI
hT [[Hectotesla|T]] SI
kT [[Kilotesla|T]] SI
MT [[Megatesla|T]] SI
mT [[Millitesla|T]] SI
uT [[Microtesla|T]] SI
µT [[Microtesla|T]] SI
nT [[Nanotesla|T]] SI
PT [[Petatesla|T]] SI
pT [[Picotesla|T]] SI
TT [[Teratesla|T]] SI
yT [[Yoctotesla|T]] SI
YT [[Yottatesla|T]] SI
zT [[Zeptotesla|T]] SI
ZT [[Zettatesla|T]] SI
== Astrophysics ==
au [[Astronomical unit|au]]
c [[Speed of light|''c'']]
ly [[Light-year|ly]]
Earth mass [[Earth mass|''M''<sub>🜨</sub>]]
Earth radius [[Earth radius|''R''<sub>🜨</sub>]]
M_Earth [[Earth mass|''M''<sub>🜨</sub>]]
R_Earth [[Earth radius|''R''<sub>🜨</sub>]]
M+ [[Earth mass|''M''<sub>🜨</sub>]]
R+ [[Earth radius|''R''<sub>🜨</sub>]]
Jupiter mass [[Jupiter mass|''M''<sub>J</sub>]]
Jupiter radius [[Jupiter radius|''R''<sub>J</sub>]]
Jy [[Jansky|Jy]]
M_Jupiter [[Jupiter mass|''M''<sub>J</sub>]]
R_Jupiter [[Jupiter radius|''R''<sub>J</sub>]]
Solar mass [[Solar mass|''M''<sub>☉</sub>]]
solar mass [[Solar mass|''M''<sub>☉</sub>]]
M_Solar [[Solar mass|''M''<sub>☉</sub>]]
M_solar [[Solar mass|''M''<sub>☉</sub>]]
R_Solar [[Solar radius|''R''<sub>☉</sub>]]
R_solar [[Solar radius|''R''<sub>☉</sub>]]
Solar radius [[Solar radius|''R''<sub>☉</sub>]]
solar radius [[Solar radius|''R''<sub>☉</sub>]]
Solar luminosity [[Solar luminosity|''L''<sub>☉</sub>]]
solar luminosity [[Solar luminosity|''L''<sub>☉</sub>]]
L_solar [[Solar luminosity|''L''<sub>☉</sub>]]
L_Solar [[Solar luminosity|''L''<sub>☉</sub>]]
Lo [[Solar luminosity|''L''<sub>☉</sub>]]
pc2 [[Parsec|pc<sup>2</sup>]]
pc3 [[Parsec|pc<sup>3</sup>]]
kpc2 [[Parsec#Parsecs and kiloparsecs|kpc<sup>2</sup>]]
kpc3 [[Parsec#Parsecs and kiloparsecs|kpc<sup>3</sup>]]
kpc [[Parsec#Parsecs and kiloparsecs|kpc]]
Mpc2 [[Parsec#Megaparsecs and gigaparsecs|Mpc<sup>2</sup>]]
Mpc3 [[Parsec#Megaparsecs and gigaparsecs|Mpc<sup>3</sup>]]
Mpc [[Parsec#Megaparsecs and gigaparsecs|Mpc]]
Gpc2 [[Parsec#Megaparsecs and gigaparsecs|Gpc<sup>2</sup>]]
Gpc3 [[Parsec#Megaparsecs and gigaparsecs|Gpc<sup>3</sup>]]
Gpc [[Parsec#Megaparsecs and gigaparsecs|Gpc]]
== Nuclear physics and chemistry ==
cm-1 [[Wavenumber|cm<sup>−1</sup>]]
u [[Unified atomic mass unit|u]]
osmol [[Osmole (unit)|osmol]]
Osm [[Osmole (unit)|Osm]]
M [[Molarity|M]]
TM [[Molarity|M]] SI
GM [[Molarity|M]] SI
MM [[Molarity|M]] SI
kM [[Molarity|M]] SI
hM [[Molarity|M]] SI
daM [[Molarity|M]] SI
dM [[Molarity|M]] SI
cM [[Molarity|M]] SI
mM [[Molarity|M]] SI
uM [[Molarity|M]] 1e-6
nM [[Molarity|M]] SI
pM [[Molarity|M]] SI
kg.mol-1 [[Molar mass|kg⋅mol<sup>−1</sup>]]
kg/mol [[Molar mass|kg/mol]]
g.mol-1 [[Molar mass|g⋅mol<sup>−1</sup>]]
g/mol [[Molar mass|g/mol]]
eV/c2 [[Electronvolt#Mass|eV/''c''<sup>2</sup>]]
keV/c2 [[Electronvolt#Mass|keV/''c''<sup>2</sup>]]
MeV/c2 [[Electronvolt#Mass|MeV/''c''<sup>2</sup>]]
GeV/c2 [[Electronvolt#Mass|GeV/''c''<sup>2</sup>]]
TeV/c2 [[Electronvolt#Mass|TeV/''c''<sup>2</sup>]]
eV [[Electronvolt|eV]]
meV [[Electronvolt|meV]]
keV [[Electronvolt|keV]]
MeV [[Electronvolt|MeV]]
GeV [[Electronvolt|GeV]]
TeV [[Electronvolt|TeV]]
mol-1 [[Avogadro constant|mol<sup>−1</sup>]]
J.mol-1 [[Joule per mole|J⋅mol<sup>−1</sup>]]
J/mol [[Joule per mole|J/mol]]
kJ.mol-1 [[Joule per mole|kJ⋅mol<sup>−1</sup>]]
kJ/mol [[Joule per mole|kJ/mol]]
MJ.mol-1 [[Joule per mole|MJ⋅mol<sup>−1</sup>]]
MJ/mol [[Joule per mole|MJ/mol]]
GJ.mol-1 [[Joule per mole|GJ⋅mol<sup>−1</sup>]]
GJ/mol [[Joule per mole|GJ/mol]]
TJ.mol-1 [[Joule per mole|TJ⋅mol<sup>−1</sup>]]
TJ/mol [[Joule per mole|TJ/mol]]
μB [[Bohr magneton|''μ''<sub>B</sub>]]
== Numbers and phrases ==
pp [[Page (paper)|pp]]
ppb [[Parts per billion|ppb]] 1e-9
ppm [[Parts per million|ppm]] 1e-6
billiard [[Orders of magnitude (numbers)#1015|billiard]] 1e15
billion [[1,000,000,000|billion]] 1e9
billionth [[1,000,000,000|billionth]] 1e-9
billionths [[1,000,000,000|billionths]] 1e-9
decilliard [[Orders of magnitude (numbers)#1063|decilliard]] 1e63
decillion [[Orders of magnitude (numbers)#1033|decillion]] 1e33
decillionth [[Orders of magnitude (numbers)#1033|decillionth]] 1e-33
decillionths [[Orders of magnitude (numbers)#1033|decillionths]] 1e-33
milliard [[1,000,000,000|milliard]] 1e9
million [[Million|million]] 1e6
millionth [[Million|millionth]] 1e-6
millionths [[Million|millionths]] 1e-6
nonilliard [[Orders of magnitude (numbers)#1057|nonilliard]] 1e57
nonillion [[Orders of magnitude (numbers)#1030|nonillion]] 1e30
nonillionth [[Orders of magnitude (numbers)#1030|nonillionth]] 1e-30
nonillionths [[Orders of magnitude (numbers)#1030|nonillionths]] 1e-30
octilliard [[Orders of magnitude (numbers)#1051|octilliard]] 1e51
octillion [[Orders of magnitude (numbers)#1027|octillion]] 1e27
octillionth [[Orders of magnitude (numbers)#1027|octillionth]] 1e-27
octillionths [[Orders of magnitude (numbers)#1027|octillionths]] 1e-27
quadrilliard [[Orders of magnitude (numbers)#1027|quadrilliard]] 1e27
quadrillion [[Orders of magnitude (numbers)#1015|quadrillion]] 1e15
quadrillionth [[Orders of magnitude (numbers)#1015|quadrillionth]] 1e-15
quadrillionths [[Orders of magnitude (numbers)#1015|quadrillionths]] 1e-15
quintilliard [[Orders of magnitude (numbers)#1033|quintilliard]] 1e33
quintillion [[Orders of magnitude (numbers)#1018|quintillion]] 1e18
quintillionth [[Orders of magnitude (numbers)#1018|quintillionth]] 1e-18
quintillionths [[Orders of magnitude (numbers)#1018|quintillionths]] 1e-18
septilliard [[Orders of magnitude (numbers)#1045|septilliard]] 1e45
septillion [[Orders of magnitude (numbers)#1024|septillion]] 1e24
septillionth [[Orders of magnitude (numbers)#1024|septillionth]] 1e-24
septillionths [[Orders of magnitude (numbers)#1024|septillionths]] 1e-24
sextilliard [[Orders of magnitude (numbers)#1039|sextilliard]] 1e39
sextillion [[Orders of magnitude (numbers)#1021|sextillion]] 1e21
sextillionth [[Orders of magnitude (numbers)#1021|sextillionth]] 1e-21
sextillionths [[Orders of magnitude (numbers)#1021|sextillionths]] 1e-21
trilliard [[Orders of magnitude (numbers)#1021|trilliard]] 1e21
trillion [[Orders of magnitude (numbers)#1012|trillion]] 1e12
trillionth [[Orders of magnitude (numbers)#1012|trillionth]] 1e-12
trillionths [[Orders of magnitude (numbers)#1012|trillionths]] 1e-12
== Angle and square angle ==
% % Percent ANGLE 0.01
percent % Percent ANGLE 0.01
per cent % Percent ANGLE 0.01
‰ ‰ Per mil ANGLE 1e-3
per mil ‰ Per mil ANGLE 1e-3
per mill ‰ Per mil ANGLE 1e-3
per mille ‰ Per mil ANGLE 1e-3
permil ‰ Per mil ANGLE 1e-3
permill ‰ Per mil ANGLE 1e-3
permille ‰ Per mil ANGLE 1e-3
° ° Degree (angle) ANGLE pi/180
deg ° Degree (angle) ANGLE pi/180
degree ° Degree (angle) NOSPACE pi/180 -- for a degree symbol that does not repeat
' ′ Minute of arc ANGLE pi/10800
′ ′ Minute of arc ANGLE pi/10800
arcmin ′ Minute of arc ANGLE pi/10800
arcminute ′ Minute of arc ANGLE pi/10800
" ″ Second of arc ANGLE pi/648000
″ ″ Second of arc ANGLE pi/648000
arcsec ″ Second of arc ANGLE pi/648000
arcsecond ″ Second of arc ANGLE pi/648000
mas [[Milliarcsecond|mas]] pi/648000000
uas [[Microarcsecond|μas]] pi/648000000000
μas [[Microarcsecond|μas]] pi/648000000000
sr [[Steradian|sr]] SI
Ysr [[Steradian|sr]] SI
Zsr [[Steradian|sr]] SI
Esr [[Steradian|sr]] SI
Psr [[Steradian|sr]] SI
Tsr [[Steradian|sr]] SI
Gsr [[Steradian|sr]] SI
Msr [[Steradian|sr]] SI
ksr [[Steradian|sr]] SI
hsr [[Steradian|sr]] SI
dasr [[Steradian|sr]] SI
dsr [[Steradian|sr]] SI
csr [[Steradian|sr]] SI
msr [[Steradian|sr]] SI
usr [[Steradian|sr]] SI
μsr [[Steradian|sr]] SI
nsr [[Steradian|sr]] SI
psr [[Steradian|sr]] SI
fsr [[Steradian|sr]] SI
asr [[Steradian|sr]] SI
zsr [[Steradian|sr]] SI
ysr [[Steradian|sr]] SI
-- next three symbols from [[MNRAS]] (https://academic.oup.com/mnras/pages/general_instructions)
deg2 [[Square degree|deg<sup>2</sup>]]
arcmin2 [[Square degree|arcmin<sup>2</sup>]]
arcsec2 [[Square degree|arcsec<sup>2</sup>]]
mas2 [[Square degree|mas<sup>2</sup>]]
uas2 [[Square degree|μas<sup>2</sup>]]
μas2 [[Square degree|μas<sup>2</sup>]]
]=]
-- If val has "|long scale=on" the following definitions are used
-- (then, if not found here, the normal definitions are used).
-- Unit code [[Link|Symbol]] Flags/Scale
local builtin_units_long_scale = [=[
== Long scale numbers and phrases ==
billion [[Orders of magnitude (numbers)#1012|billion]] 1e12
billionth [[Orders of magnitude (numbers)#1012|billionth]] 1e-12
billionths [[Orders of magnitude (numbers)#1012|billionths]] 1e-12
decillion [[Orders of magnitude (numbers)#1060|decillion]] 1e60
decillionth [[Orders of magnitude (numbers)#1060|decillionth]] 1e-60
decillionths [[Orders of magnitude (numbers)#1060|decillionths]] 1e-60
nonillion [[Orders of magnitude (numbers)#1054|nonillion]] 1e54
nonillionth [[Orders of magnitude (numbers)#1054|nonillionth]] 1e-54
nonillionths [[Orders of magnitude (numbers)#1054|nonillionths]] 1e-54
octillion [[Orders of magnitude (numbers)#1048|octillion]] 1e48
octillionth [[Orders of magnitude (numbers)#1048|octillionth]] 1e-48
octillionths [[Orders of magnitude (numbers)#1048|octillionths]] 1e-48
quadrillion [[Orders of magnitude (numbers)#1024|quadrillion]] 1e24
quadrillionth [[Orders of magnitude (numbers)#1024|quadrillionth]] 1e-24
quadrillionths [[Orders of magnitude (numbers)#1024|quadrillionths]] 1e-24
quintillion [[Orders of magnitude (numbers)#1030|quintillion]] 1e30
quintillionth [[Orders of magnitude (numbers)#1030|quintillionth]] 1e-30
quintillionths [[Orders of magnitude (numbers)#1030|quintillionths]] 1e-30
septillion [[Orders of magnitude (numbers)#1042|septillion]] 1e42
septillionth [[Orders of magnitude (numbers)#1042|septillionth]] 1e-42
septillionths [[Orders of magnitude (numbers)#1042|septillionths]] 1e-42
sextillion [[Orders of magnitude (numbers)#1036|sextillion]] 1e36
sextillionth [[Orders of magnitude (numbers)#1036|sextillionth]] 1e-36
sextillionths [[Orders of magnitude (numbers)#1036|sextillionths]] 1e-36
trillion [[Orders of magnitude (numbers)#1018|trillion]] 1e18
trillionth [[Orders of magnitude (numbers)#1018|trillionth]] 1e-18
trillionths [[Orders of magnitude (numbers)#1018|trillionths]] 1e-18
]=]
return { builtin_units = builtin_units, builtin_units_long_scale = builtin_units_long_scale }
s7a93709ut3v4eqoq5rddkz3xns5jtn
Module:Convert
828
34732
126091
2026-07-15T10:50:59Z
Fongcwele
16873
Created page with "-- Convert a value from one unit of measurement to another. -- Example: {{convert|123|lb|kg}} --> 123 pounds (56 kg) -- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki. local MINUS = '−' -- Unicode U+2212 MINUS SIGN (UTF-8: e2 88 92) local abs = math.abs local floor = math.floor local format = string.format local log10 = math.log10 local ustring = mw.ustring local ulen = ustring.len local usub = ustring.sub -- Configuration options to keep ma..."
126091
Scribunto
text/plain
-- Convert a value from one unit of measurement to another.
-- Example: {{convert|123|lb|kg}} --> 123 pounds (56 kg)
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.
local MINUS = '−' -- Unicode U+2212 MINUS SIGN (UTF-8: e2 88 92)
local abs = math.abs
local floor = math.floor
local format = string.format
local log10 = math.log10
local ustring = mw.ustring
local ulen = ustring.len
local usub = ustring.sub
-- Configuration options to keep magic values in one location.
-- Conversion data and message text are defined in separate modules.
local config, maxsigfig
local numdot -- must be '.' or ',' or a character which works in a regex
local numsep, numsep_remove, numsep_remove2
local data_code, all_units
local text_code
local varname -- can be a code to use variable names that depend on value
local from_en_table -- to translate an output string of en digits to local language
local to_en_table -- to translate an input string of digits in local language to en
-- Use translation_table in convert/text to change the following.
local en_default -- true uses lang=en unless convert has lang=local or local digits
local group_method = 3 -- code for how many digits are in a group
local per_word = 'per' -- for units like "liters per kilometer"
local plural_suffix = 's' -- only other useful value is probably '' to disable plural unit names
local omitsep -- true to omit separator before local symbol/name
-- All units should be defined in the data module. However, to cater for quick changes
-- and experiments, any unknown unit is looked up in an extra data module, if it exists.
-- That module would be transcluded in only a small number of pages, so there should be
-- little server overhead from making changes, and changes should propagate quickly.
local extra_module -- name of module with extra units
local extra_units -- nil or table of extra units from extra_module
-- Some options in the invoking template can set variables used later in the module.
local currency_text -- for a user-defined currency symbol: {{convert|12|$/ha|$=€}} (euro replaces dollar)
local function from_en(text)
-- Input is a string representing a number in en digits with '.' decimal mark,
-- without digit grouping (which is done just after calling this).
-- Return the translation of the string with numdot and digits in local language.
if numdot ~= '.' then
text = text:gsub('%.', numdot)
end
if from_en_table then
text = text:gsub('%d', from_en_table)
end
return text
end
local function to_en(text)
-- Input is a string representing a number in the local language with
-- an optional numdot decimal mark and numsep digit grouping.
-- Return the translation of the string with '.' mark and en digits,
-- and no separators (they have to be removed here to handle cases like
-- numsep = '.' and numdot = ',' with input "1.234.567,8").
if to_en_table then
text = ustring.gsub(text, '%d', to_en_table)
end
if numsep_remove then
text = text:gsub(numsep_remove, '')
end
if numsep_remove2 then
text = text:gsub(numsep_remove2, '')
end
if numdot ~= '.' then
text = text:gsub(numdot, '.')
end
return text
end
local function decimal_mark(text)
-- Return ',' if text probably is using comma for decimal mark, or has no decimal mark.
-- Return '.' if text probably is using dot for decimal mark.
-- Otherwise return nothing (decimal mark not known).
if not text:find('[.,]') then return ',' end
text = text:gsub('^%-', ''):gsub('%+%d+/%d+$', ''):gsub('[Ee]%-?%d+$', '')
local decimal =
text:match('^0?([.,])%d+$') or
text:match('%d([.,])%d?%d?$') or
text:match('%d([.,])%d%d%d%d+$')
if decimal then return decimal end
if text:match('%.%d+%.') then return ',' end
if text:match('%,%d+,') then return '.' end
end
local add_warning, with_separator -- forward declarations
local function to_en_with_check(text, parms)
-- Version of to_en() for a wiki using numdot = ',' and numsep = '.' to check
-- text (an input number as a string) which might have been copied from enwiki.
-- For example, in '1.234' the '.' could be a decimal mark or a group separator.
-- From viwiki.
if to_en_table then
text = ustring.gsub(text, '%d', to_en_table)
end
if decimal_mark(text) == '.' then
local original = text
text = text:gsub(',', '') -- for example, interpret "1,234.5" as an enwiki value
if parms then
add_warning(parms, 0, 'cvt_enwiki_num', original, with_separator({}, text))
end
else
if numsep_remove then
text = text:gsub(numsep_remove, '')
end
if numsep_remove2 then
text = text:gsub(numsep_remove2, '')
end
if numdot ~= '.' then
text = text:gsub(numdot, '.')
end
end
return text
end
local function omit_separator(id)
-- Return true if there should be no separator before id (a unit symbol or name).
-- For zhwiki, there should be no separator if id uses local characters.
-- The following kludge should be a sufficient test.
if omitsep then
if id:sub(1, 2) == '-{' then -- for "-{...}-" content language variant
return true
end
if id:byte() > 127 then
local first = usub(id, 1, 1)
if first ~= 'Å' and first ~= '°' and first ~= 'µ' then
return true
end
end
end
return id:sub(1, 1) == '/' -- no separator before units like "/ha"
end
local spell_module -- name of module that can spell numbers
local speller -- function from that module to handle spelling (set if needed)
local wikidata_module, wikidata_data_module -- names of Wikidata modules
local wikidata_code, wikidata_data -- exported tables from those modules (set if needed)
local function set_config(args)
-- Set configuration options from template #invoke or defaults.
config = args
maxsigfig = config.maxsigfig or 14 -- maximum number of significant figures
local data_module, text_module
local sandbox = config.sandbox and ('/' .. config.sandbox) or ''
data_module = "Module:Convert/data" .. sandbox
text_module = "Module:Convert/text" .. sandbox
extra_module = "Module:Convert/extra" .. sandbox
wikidata_module = "Module:Convert/wikidata" .. sandbox
wikidata_data_module = "Module:Convert/wikidata/data" .. sandbox
spell_module = "Module:ConvertNumeric"
data_code = mw.loadData(data_module)
text_code = mw.loadData(text_module)
all_units = data_code.all_units
local translation = text_code.translation_table
if translation then
numdot = translation.numdot
numsep = translation.numsep
if numdot == ',' and numsep == '.' then
if text_code.all_messages.cvt_enwiki_num then
to_en = to_en_with_check
end
end
if translation.group then
group_method = translation.group
end
if translation.per_word then
per_word = translation.per_word
end
if translation.plural_suffix then
plural_suffix = translation.plural_suffix
end
varname = translation.varname
from_en_table = translation.from_en
local use_workaround = true
if use_workaround then
-- 2013-07-05 workaround bug by making a copy of the required table.
-- mw.ustring.gsub fails with a table (to_en_table) as the replacement,
-- if the table is accessed via mw.loadData.
local source = translation.to_en
if source then
to_en_table = {}
for k, v in pairs(source) do
to_en_table[k] = v
end
end
else
to_en_table = translation.to_en
end
if translation.lang == 'en default' then
en_default = true -- for hiwiki
end
omitsep = translation.omitsep -- for zhwiki
end
numdot = config.numdot or numdot or '.' -- decimal mark before fractional digits
numsep = config.numsep or numsep or ',' -- group separator for numbers
-- numsep should be ',' or '.' or '' or ' ' or a Unicode character.
-- numsep_remove must work in a regex to identify separators to be removed.
if numsep ~= '' then
numsep_remove = (numsep == '.') and '%.' or numsep
end
if numsep ~= ',' and numdot ~= ',' then
numsep_remove2 = ',' -- so numbers copied from enwiki will work
end
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,
}
end
local function divide(numerator, denominator)
-- Return integers quotient, remainder resulting from dividing the two
-- given numbers, which should be unsigned integers.
local quotient, remainder = floor(numerator / denominator), numerator % denominator
if not (0 <= remainder and remainder < denominator) then
-- Floating point limits may need this, as in {{convert|160.02|Ym|ydftin}}.
remainder = 0
end
return quotient, remainder
end
local function split(text, delimiter)
-- Return a numbered table with fields from splitting text.
-- The delimiter is used in a regex without escaping (for example, '.' would fail).
-- Each field has any leading/trailing whitespace removed.
local t = {}
text = text .. delimiter -- to get last item
for item in text:gmatch('%s*(.-)%s*' .. delimiter) do
table.insert(t, item)
end
return t
end
local function strip(text)
-- If text is a string, return its content with no leading/trailing
-- whitespace. Otherwise return nil (a nil argument gives a nil result).
if type(text) == 'string' then
return text:match("^%s*(.-)%s*$")
end
end
local function table_len(t)
-- Return length (<100) of a numbered table to replace #t which is
-- documented to not work if t is accessed via mw.loadData().
for i = 1, 100 do
if t[i] == nil then
return i - 1
end
end
end
local function wanted_category(catkey, catsort, want_warning)
-- Return message category if it is wanted in current namespace,
-- otherwise return ''.
local cat
local title = mw.title.getCurrentTitle()
if title then
local nsdefault = '0' -- default namespace: '0' = article; '0,10' = article and template
local namespace = title.namespace
for _, v in ipairs(split(config.nscat or nsdefault, ',')) do
if namespace == tonumber(v) then
cat = text_code.all_categories[want_warning and 'warning' or catkey]
if catsort and catsort ~= '' and cat:sub(-2) == ']]' then
cat = cat:sub(1, -3) .. '|' .. mw.text.nowiki(usub(catsort, 1, 20)) .. ']]'
end
break
end
end
end
return cat or ''
end
local function message(parms, mcode, is_warning)
-- Return wikitext for an error message, including category if specified
-- for the message type.
-- mcode = numbered table specifying the message:
-- mcode[1] = 'cvt_xxx' (string used as a key to get message info)
-- mcode[2] = 'parm1' (string to replace '$1' if any in message)
-- mcode[3] = 'parm2' (string to replace '$2' if any in message)
-- mcode[4] = 'parm3' (string to replace '$3' if any in message)
local msg
if type(mcode) == 'table' then
if mcode[1] == 'cvt_no_output' then
-- Some errors should cause convert to output an empty string,
-- for example, for an optional field in an infobox.
return ''
end
msg = text_code.all_messages[mcode[1]]
end
parms.have_problem = true
local function subparm(fmt, ...)
local rep = {}
for i, v in ipairs({...}) do
rep['$' .. i] = v
end
return (fmt:gsub('$%d+', rep))
end
if msg then
local parts = {}
local regex, replace = msg.regex, msg.replace
for i = 1, 3 do
local limit = 40
local s = mcode[i + 1]
if s then
if regex and replace then
s = s:gsub(regex, replace)
limit = nil -- allow long "should be" messages
end
-- Escape user input so it does not break the message.
-- To avoid tags (like {{convert|1<math>23</math>|m}}) breaking
-- the mouseover title, any strip marker starting with char(127) is
-- replaced with '...' (text not needing i18n).
local append
local pos = s:find(string.char(127), 1, true)
if pos then
append = '...'
s = s:sub(1, pos - 1)
end
if limit and ulen(s) > limit then
s = usub(s, 1, limit)
append = '...'
end
s = mw.text.nowiki(s) .. (append or '')
else
s = '?'
end
parts['$' .. i] = s
end
local function ispreview()
-- Return true if a prominent message should be shown.
if parms.test == 'preview' or parms.test == 'nopreview' then
-- For testing, can preview a real message or simulate a preview
-- when running automated tests.
return parms.test == 'preview'
end
local success, revid = pcall(function ()
return (parms.frame):preprocess('{{REVISIONID}}') end)
return success and (revid == '')
end
local want_warning = is_warning and
not config.warnings and -- show unobtrusive warnings if config.warnings not configured
not msg.nowarn -- but use msg settings, not standard warning, if specified
local title = string.gsub(msg[1] or 'Missing message', '$%d+', parts)
local text = want_warning and '*' or msg[2] or 'Missing message'
local cat = wanted_category(msg[3], mcode[2], want_warning)
local anchor = msg[4] or ''
local fmtkey = ispreview() and 'cvt_format_preview' or
(want_warning and 'cvt_format2' or msg.format or 'cvt_format')
local fmt = text_code.all_messages[fmtkey] or 'convert: bug'
return subparm(fmt, title:gsub('"', '"'), text, cat, anchor)
end
return 'Convert internal error: unknown message'
end
function add_warning(parms, level, key, text1, text2) -- for forward declaration above
-- If enabled, add a warning that will be displayed after the convert result.
-- A higher level is more verbose: more kinds of warnings are displayed.
-- To reduce output noise, only the first warning is displayed.
if level <= (tonumber(config.warnings) or 1) then
if parms.warnings == nil then
parms.warnings = message(parms, { key, text1, text2 }, true)
end
end
end
local function spell_number(parms, inout, number, numerator, denominator)
-- Return result of spelling (number, numerator, denominator), or
-- return nil if spelling is not available or not supported for given text.
-- Examples (each value must be a string or nil):
-- number numerator denominator output
-- ------ --------- ----------- -------------------
-- "1.23" nil nil one point two three
-- "1" "2" "3" one and two thirds
-- nil "2" "3" two thirds
if not speller then
local function get_speller(module)
return require(module).spell_number
end
local success
success, speller = pcall(get_speller, spell_module)
if not success or type(speller) ~= 'function' then
add_warning(parms, 1, 'cvt_no_spell', 'spell')
return nil
end
end
local case
if parms.spell_upper == inout then
case = true
parms.spell_upper = nil -- only uppercase first word in a multiple unit
end
local sp = not parms.opt_sp_us
local adj = parms.opt_adjectival
return speller(number, numerator, denominator, case, sp, adj)
end
------------------------------------------------------------------------
-- BEGIN: Code required only for built-in units.
-- LATER: If need much more code, move to another module to simplify this module.
local function speed_of_sound(altitude)
-- This is for the Mach built-in unit of speed.
-- Return speed of sound in metres per second at given altitude in feet.
-- If no altitude given, use default (zero altitude = sea level).
-- Table gives speed of sound in miles per hour at various altitudes:
-- altitude = -17,499 to 402,499 feet
-- mach_table[a + 4] = s where
-- a = (altitude / 5000) rounded to nearest integer (-3 to 80)
-- s = speed of sound (mph) at that altitude
-- From: http://www.aerospaceweb.org/question/atmosphere/q0112.shtml
local mach_table = { -- a =
799.5, 787.0, 774.2, 761.207051, -- -3 to 0
748.0, 734.6, 721.0, 707.0, 692.8, 678.3, 663.5, 660.1, 660.1, 660.1, -- 1 to 10
660.1, 660.1, 660.1, 662.0, 664.3, 666.5, 668.9, 671.1, 673.4, 675.6, -- 11 to 20
677.9, 683.7, 689.9, 696.0, 702.1, 708.1, 714.0, 719.9, 725.8, 731.6, -- 21 to 30
737.3, 737.7, 737.7, 736.2, 730.5, 724.6, 718.8, 712.9, 707.0, 701.0, -- 31 to 40
695.0, 688.9, 682.8, 676.6, 670.4, 664.1, 657.8, 652.9, 648.3, 643.7, -- 41 to 50
639.1, 634.4, 629.6, 624.8, 620.0, 615.2, 613.2, 613.2, 613.2, 613.5, -- 51 to 60
614.4, 615.3, 616.7, 619.8, 623.4, 629.7, 635.0, 641.1, 650.6, 660.0, -- 61 to 70
672.5, 674.3, 676.1, 677.9, 679.7, 681.5, 683.3, 685.1, 686.8, 688.6, -- 71 to 80
}
local function lerp(t, v0, v1)
return t * v1 + (1 - t) * v0
end
altitude = (altitude or 0) / 5000
if altitude < -3 then
altitude = -3
elseif altitude > 80 then
altitude = 80
end
local mach_mph
local a = math.floor(altitude)
if a == altitude then
mach_mph = mach_table[a + 4]
else
mach_mph = lerp(altitude - a, mach_table[a + 4], mach_table[a + 5])
end
return mach_mph * 0.44704 -- mph converted to m/s
end
-- END: Code required only for built-in units.
------------------------------------------------------------------------
local function add_style(parms, class)
-- Add selected template style to parms if not already present.
parms.templatestyles = parms.templatestyles or {}
if not parms.templatestyles[class] then
parms.templatestyles[class] = parms.frame:extensionTag({
name = 'templatestyles', args = { src = text_code.titles[class] }
})
end
end
local function get_styles(parms)
-- Return string of required template styles, empty if none.
if parms.templatestyles then
local t = {}
for _, v in pairs(parms.templatestyles) do
table.insert(t, v)
end
return table.concat(t)
end
return ''
end
local function get_range(word)
-- Return a range (string or table) corresponding to word (like "to"),
-- or return nil if not a range word.
local ranges = text_code.ranges
return ranges.types[word] or ranges.types[ranges.aliases[word]]
end
local function check_mismatch(unit1, unit2)
-- If unit1 cannot be converted to unit2, return an error message table.
-- This allows conversion between units of the same type, and between
-- Nm (normally torque) and ftlb (energy), as in gun-related articles.
-- This works because Nm is the base unit (scale = 1) for both the
-- primary type (torque), and the alternate type (energy, where Nm = J).
-- A match occurs if the primary types are the same, or if unit1 matches
-- the alternate type of unit2, and vice versa. That provides a whitelist
-- of which conversions are permitted between normally incompatible types.
if unit1.utype == unit2.utype or
(unit1.utype == unit2.alttype and unit1.alttype == unit2.utype) then
return nil
end
return { 'cvt_mismatch', unit1.utype, unit2.utype }
end
local function override_from(out_table, in_table, fields)
-- Copy the specified fields from in_table to out_table, but do not
-- copy nil fields (keep any corresponding field in out_table).
for _, field in ipairs(fields) do
if in_table[field] then
out_table[field] = in_table[field]
end
end
end
local function shallow_copy(t)
-- Return a shallow copy of table t.
-- Do not need the features and overhead of the Scribunto mw.clone().
local result = {}
for k, v in pairs(t) do
result[k] = v
end
return result
end
local unit_mt = {
-- Metatable to get missing values for a unit that does not accept SI prefixes.
-- Warning: The boolean value 'false' is returned for any missing field
-- so __index is not called twice for the same field in a given unit.
__index = function (self, key)
local value
if key == 'name1' or key == 'sym_us' then
value = self.symbol
elseif key == 'name2' then
value = self.name1 .. plural_suffix
elseif key == 'name1_us' then
value = self.name1
if not rawget(self, 'name2_us') then
-- If name1_us is 'foot', do not make name2_us by appending plural_suffix.
self.name2_us = self.name2
end
elseif key == 'name2_us' then
local raw1_us = rawget(self, 'name1_us')
if raw1_us then
value = raw1_us .. plural_suffix
else
value = self.name2
end
elseif key == 'link' then
value = self.name1
else
value = false
end
rawset(self, key, value)
return value
end
}
local function prefixed_name(unit, name, index)
-- Return unit name with SI prefix inserted at correct position.
-- index = 1 (name1), 2 (name2), 3 (name1_us), 4 (name2_us).
-- The position is a byte (not character) index, so use Lua's sub().
local pos = rawget(unit, 'prefix_position')
if type(pos) == 'string' then
pos = tonumber(split(pos, ',')[index])
end
if pos then
return name:sub(1, pos - 1) .. unit.si_name .. name:sub(pos)
end
return unit.si_name .. name
end
local unit_prefixed_mt = {
-- Metatable to get missing values for a unit that accepts SI prefixes.
-- Before use, fields si_name, si_prefix must be defined.
-- The unit must define _symbol, _name1 and
-- may define _sym_us, _name1_us, _name2_us
-- (_sym_us, _name2_us may be defined for a language using sp=us
-- to refer to a variant unrelated to U.S. units).
__index = function (self, key)
local value
if key == 'symbol' then
value = self.si_prefix .. self._symbol
if value == 'l' then value = 'L' end
elseif key == 'sym_us' then
value = rawget(self, '_sym_us')
if value then
value = self.si_prefix .. value
else
value = self.symbol
end
elseif key == 'name1' then
value = prefixed_name(self, self._name1, 1)
elseif key == 'name2' then
value = rawget(self, '_name2')
if value then
value = prefixed_name(self, value, 2)
else
value = self.name1 .. plural_suffix
end
elseif key == 'name1_us' then
value = rawget(self, '_name1_us')
if value then
value = prefixed_name(self, value, 3)
else
value = self.name1
end
elseif key == 'name2_us' then
value = rawget(self, '_name2_us')
if value then
value = prefixed_name(self, value, 4)
elseif rawget(self, '_name1_us') then
value = self.name1_us .. plural_suffix
else
value = self.name2
end
elseif key == 'link' then
value = self.name1
else
value = false
end
rawset(self, key, value)
return value
end
}
local unit_per_mt = {
-- Metatable to get values for a per unit of form "x/y".
-- This is never called to determine a unit name or link because per units
-- are handled as a special case.
-- Similarly, the default output is handled elsewhere, and for a symbol
-- this is only called from get_default() for default_exceptions.
__index = function (self, key)
local value
if key == 'symbol' then
local per = self.per
local unit1, unit2 = per[1], per[2]
if unit1 then
value = unit1[key] .. '/' .. unit2[key]
else
value = '/' .. unit2[key]
end
elseif key == 'sym_us' then
value = self.symbol
elseif key == 'scale' then
local per = self.per
local unit1, unit2 = per[1], per[2]
value = (unit1 and unit1.scale or 1) * self.scalemultiplier / unit2.scale
else
value = false
end
rawset(self, key, value)
return value
end
}
local function make_per(unitcode, unit_table, ulookup)
-- Return true, t where t is a per unit with unit codes expanded to unit tables,
-- or return false, t where t is an error message table.
local result = {
unitcode = unitcode,
utype = unit_table.utype,
per = {}
}
override_from(result, unit_table, { 'invert', 'iscomplex', 'default', 'link', 'symbol', 'symlink' })
result.symbol_raw = (result.symbol or false) -- to distinguish between a defined exception and a metatable calculation
local prefix
for i, v in ipairs(unit_table.per) do
if i == 1 and v == '' then
-- First unit symbol can be empty; that gives a nil first unit table.
elseif i == 1 and text_code.currency[v] then
prefix = currency_text or v
else
local success, t = ulookup(v)
if not success then return false, t end
result.per[i] = t
end
end
local multiplier = unit_table.multiplier
if not result.utype then
-- Creating an automatic per unit.
local unit1 = result.per[1]
local utype = (unit1 and unit1.utype or prefix or '') .. '/' .. result.per[2].utype
local t = data_code.per_unit_fixups[utype]
if t then
if type(t) == 'table' then
utype = t.utype or utype
result.link = result.link or t.link
multiplier = multiplier or t.multiplier
else
utype = t
end
end
result.utype = utype
end
result.scalemultiplier = multiplier or 1
result.vprefix = prefix or false -- set to non-nil to avoid calling __index
return true, setmetatable(result, unit_per_mt)
end
local function lookup(parms, unitcode, what, utable, fails, depth)
-- Return true, t where t is a copy of the unit's converter table,
-- or return false, t where t is an error message table.
-- Parameter 'what' determines whether combination units are accepted:
-- 'no_combination' : single unit only
-- 'any_combination' : single unit or combination or output multiple
-- 'only_multiple' : single unit or output multiple only
-- Parameter unitcode is a symbol (like 'g'), with an optional SI prefix (like 'kg').
-- If, for example, 'kg' is in this table, that entry is used;
-- otherwise the prefix ('k') is applied to the base unit ('g').
-- If unitcode is a known combination code (and if allowed by what),
-- a table of output multiple unit tables is included in the result.
-- For compatibility with the old template, an underscore in a unitcode is
-- replaced with a space so usage like {{convert|350|board_feet}} works.
-- Wikignomes may also put two spaces or " " in combinations, so
-- replace underscore, " ", and multiple spaces with a single space.
utable = utable or parms.unittable or all_units
fails = fails or {}
depth = depth and depth + 1 or 1
if depth > 9 then
-- There are ways to mistakenly define units which result in infinite
-- recursion when lookup() is called. That gives a long delay and very
-- confusing error messages, so the depth parameter is used as a guard.
return false, { 'cvt_lookup', unitcode }
end
if unitcode == nil or unitcode == '' then
return false, { 'cvt_no_unit' }
end
unitcode = unitcode:gsub('_', ' '):gsub(' ', ' '):gsub(' +', ' ')
local function call_make_per(t)
return make_per(unitcode, t,
function (ucode) return lookup(parms, ucode, 'no_combination', utable, fails, depth) end
)
end
local t = utable[unitcode]
if t then
if t.shouldbe then
return false, { 'cvt_should_be', t.shouldbe }
end
if t.sp_us then
parms.opt_sp_us = true
end
local target = t.target -- nil, or unitcode is an alias for this target
if target then
local success, result = lookup(parms, target, what, utable, fails, depth)
if not success then return false, result end
override_from(result, t, { 'customary', 'default', 'link', 'symbol', 'symlink', 'usename' })
if t.default then
result.defkey = unitcode -- so default_exceptions uses the alias code, not the target symbol
end
local multiplier = t.multiplier
if multiplier then
result.multiplier = tostring(multiplier)
result.scale = result.scale * multiplier
end
return true, result
end
if t.per then
return call_make_per(t)
end
local combo = t.combination -- nil or a table of unitcodes
if combo then
local multiple = t.multiple
if what == 'no_combination' or (what == 'only_multiple' and not multiple) then
return false, { 'cvt_bad_unit', unitcode }
end
-- Recursively create a combination table containing the
-- converter table of each unitcode.
local result = { utype = t.utype, multiple = multiple, combination = {} }
local cvt = result.combination
for i, v in ipairs(combo) do
local success, t = lookup(parms, v, multiple and 'no_combination' or 'only_multiple', utable, fails, depth)
if not success then return false, t end
cvt[i] = t
end
return true, result
end
local result = shallow_copy(t)
result.unitcode = unitcode
if result.prefixes then
result.si_name = ''
result.si_prefix = ''
return true, setmetatable(result, unit_prefixed_mt)
end
return true, setmetatable(result, unit_mt)
end
local SIprefixes = text_code.SIprefixes
for plen = SIprefixes[1] or 2, 1, -1 do
-- Look for an SI prefix; should never occur with an alias.
-- Check for longer prefix first ('dam' is decametre).
-- SIprefixes[1] = prefix maximum #characters (as seen by mw.ustring.sub).
local prefix = usub(unitcode, 1, plen)
local si = SIprefixes[prefix]
if si then
local t = utable[usub(unitcode, plen+1)]
if t and t.prefixes then
local result = shallow_copy(t)
result.unitcode = unitcode
result.si_name = parms.opt_sp_us and si.name_us or si.name
result.si_prefix = si.prefix or prefix
result.scale = t.scale * 10 ^ (si.exponent * t.prefixes)
return true, setmetatable(result, unit_prefixed_mt)
end
end
end
-- Accept user-defined combinations like "acre+m2+ha" or "acre m2 ha" for output.
-- If '+' is used, each unit code can include a space, and any error is fatal.
-- If ' ' is used and if each space-separated word is a unit code, it is a combo,
-- but errors are not fatal so the unit code can be looked up as an extra unit.
local err_is_fatal
local combo = collection()
if unitcode:find('+', 1, true) then
err_is_fatal = true
for item in (unitcode .. '+'):gmatch('%s*(.-)%s*%+') do
if item ~= '' then
combo:add(item)
end
end
elseif unitcode:find('%s') then
for item in unitcode:gmatch('%S+') do
combo:add(item)
end
end
if combo.n > 1 then
local function lookup_combo()
if what == 'no_combination' or what == 'only_multiple' then
return false, { 'cvt_bad_unit', unitcode }
end
local result = { combination = {} }
local cvt = result.combination
for i, v in ipairs(combo) do
local success, t = lookup(parms, v, 'only_multiple', utable, fails, depth)
if not success then return false, t end
if i == 1 then
result.utype = t.utype
else
local mismatch = check_mismatch(result, t)
if mismatch then
return false, mismatch
end
end
cvt[i] = t
end
return true, result
end
local success, result = lookup_combo()
if success or err_is_fatal then
return success, result
end
end
-- Accept any unit with an engineering notation prefix like "e6cuft"
-- (million cubic feet), but not chained prefixes like "e3e6cuft",
-- and not if the unit is a combination or multiple,
-- and not if the unit has an offset or is a built-in.
-- Only en digits are accepted.
local e, exponent, baseunit = unitcode:match('^([Ee])(%d+)(.*)')
if exponent then
local engscale = text_code.eng_scales[exponent]
if engscale then
local success, result = lookup(parms, baseunit, 'no_combination', utable, fails, depth)
if success and not (result.offset or result.builtin or result.engscale) then
if e == 'E' then
result.this_number_word = true
unitcode = 'e' .. unitcode:sub(2)
end
result.unitcode = unitcode -- 'e6cuft' not 'cuft'
result.defkey = unitcode -- key to lookup default exception
result.engscale = engscale
result.scale = result.scale * 10 ^ tonumber(exponent)
return true, result
end
end
end
-- Look for x/y; split on right-most slash to get scale correct (x/y/z is x/y per z).
local top, bottom = unitcode:match('^(.-)/([^/]+)$')
if top and not unitcode:find('e%d') then
-- If valid, create an automatic per unit for an "x/y" unit code.
-- The unitcode must not include extraneous spaces.
-- Engineering notation (apart from at start and which has been stripped before here),
-- is not supported so do not make a per unit if find text like 'e3' in unitcode.
local success, result = call_make_per({ per = {top, bottom} })
if success then
return true, result
end
end
if not parms.opt_no_extra and not get_range(unitcode) then
-- Want the "what links here" list for the extra_module to show only cases
-- where an extra unit is used, so do not require it when not needed
-- or if looking up a range word which cannot be a unit.
if not extra_units then
local success, extra = pcall(function () return require(extra_module).extra_units end)
if success and type(extra) == 'table' then
extra_units = extra
end
end
if extra_units then
-- A unit in one data table might refer to a unit in the other table, so
-- switch between them, relying on fails or depth to terminate loops.
if not fails[unitcode] then
fails[unitcode] = true
local other = (utable == all_units) and extra_units or all_units
local success, result = lookup(parms, unitcode, what, other, fails, depth)
if success then
return true, result
end
end
end
end
if to_en_table then
-- At fawiki it is common to translate all digits so a unit like "km2" becomes "km۲".
local en_code = ustring.gsub(unitcode, '%d', to_en_table)
if en_code ~= unitcode then
return lookup(parms, en_code, what, utable, fails, depth)
end
end
return false, { 'cvt_unknown', unitcode }
end
local function valid_number(num)
-- Return true if num is a valid number.
-- In Scribunto (different from some standard Lua), when expressed as a string,
-- overflow or other problems are indicated with text like "inf" or "nan"
-- which are regarded as invalid here (each contains "n").
if type(num) == 'number' and tostring(num):find('n', 1, true) == nil then
return true
end
end
local function hyphenated(name, parts)
-- Return a hyphenated form of given name (for adjectival usage).
-- The name may be linked and the target of the link must not be changed.
-- Hypothetical examples:
-- [[long ton|ton]] → [[long ton|ton]] (no change)
-- [[tonne|long ton]] → [[tonne|long-ton]]
-- [[metric ton|long ton]] → [[metric ton|long-ton]]
-- [[long ton]] → [[long ton|long-ton]]
-- Input can also have multiple links in a single name like:
-- [[United States customary units|U.S.]] [[US gallon|gallon]]
-- [[mile]]s per [[United States customary units|U.S.]] [[quart]]
-- [[long ton]]s per [[short ton]]
-- Assume that links cannot be nested (never like "[[abc[[def]]ghi]]").
-- This uses a simple and efficient procedure that works for most cases.
-- Some units (if used) would require more, and can later think about
-- adding a method to handle exceptions.
-- The procedure is to replace each space with a hyphen, but
-- not a space after ')' [for "(pre-1954 US) nautical mile"], and
-- not spaces immediately before '(' or in '(...)' [for cases like
-- "British thermal unit (ISO)" and "Calorie (International Steam Table)"].
if name:find(' ', 1, true) then
if parts then
local pos
if name:sub(1, 1) == '(' then
pos = name:find(')', 1, true)
if pos then
return name:sub(1, pos+1) .. name:sub(pos+2):gsub(' ', '-')
end
elseif name:sub(-1) == ')' then
pos = name:find('(', 1, true)
if pos then
return name:sub(1, pos-2):gsub(' ', '-') .. name:sub(pos-1)
end
end
return name:gsub(' ', '-')
end
parts = collection()
for before, item, after in name:gmatch('([^[]*)(%[%[[^[]*%]%])([^[]*)') do
if item:find(' ', 1, true) then
local prefix
local plen = item:find('|', 1, true)
if plen then
prefix = item:sub(1, plen)
item = item:sub(plen + 1, -3)
else
prefix = item:sub(1, -3) .. '|'
item = item:sub(3, -3)
end
item = prefix .. hyphenated(item, parts) .. ']]'
end
parts:add(before:gsub(' ', '-') .. item .. after:gsub(' ', '-'))
end
if parts.n == 0 then
-- No link like "[[...]]" was found in the original name.
parts:add(hyphenated(name, parts))
end
return table.concat(parts)
end
return name
end
local function hyphenated_maybe(parms, want_name, sep, id, inout)
-- Return s, f where
-- s = id, possibly modified
-- f = true if hyphenated
-- Possible modifications: hyphenate; prepend '-'; append mid text.
if id == nil or id == '' then
return ''
end
local mid = (inout == (parms.opt_flip and 'out' or 'in')) and parms.mid or ''
if want_name then
if parms.opt_adjectival then
return '-' .. hyphenated(id) .. mid, true
end
if parms.opt_add_s and id:sub(-1) ~= 's' then
id = id .. 's' -- for nowiki
end
end
return sep .. id .. mid
end
local function use_minus(text)
-- Return text with Unicode minus instead of '-', if present.
if text:sub(1, 1) == '-' then
return MINUS .. text:sub(2)
end
return text
end
local function digit_groups(parms, text, method)
-- Return a numbered table of groups of digits (left-to-right, in local language).
-- Parameter method is a number or nil:
-- 3 for 3-digit grouping (default), or
-- 2 for 3-then-2 grouping (only for digits before decimal mark).
local len_right
local len_left = text:find('.', 1, true)
if len_left then
len_right = #text - len_left
len_left = len_left - 1
else
len_left = #text
end
local twos = method == 2 and len_left > 5
local groups = collection()
local run = len_left
local n
if run < 4 or (run == 4 and parms.opt_comma5) then
if parms.opt_gaps then
n = run
else
n = #text
end
elseif twos then
n = run % 2 == 0 and 1 or 2
else
n = run % 3 == 0 and 3 or run % 3
end
while run > 0 do
groups:add(n)
run = run - n
n = (twos and run > 3) and 2 or 3
end
if len_right then
if groups.n == 0 then
groups:add(0)
end
if parms.opt_gaps and len_right > 3 then
local want4 = not parms.opt_gaps3 -- true gives no gap before trailing single digit
local isfirst = true
run = len_right
while run > 0 do
n = (want4 and run == 4) and 4 or (run > 3 and 3 or run)
if isfirst then
isfirst = false
groups[groups.n] = groups[groups.n] + 1 + n
else
groups:add(n)
end
run = run - n
end
else
groups[groups.n] = groups[groups.n] + 1 + len_right
end
end
local pos = 1
for i, length in ipairs(groups) do
groups[i] = from_en(text:sub(pos, pos + length - 1))
pos = pos + length
end
return groups
end
function with_separator(parms, text) -- for forward declaration above
-- Input text is a number in en digits with optional '.' decimal mark.
-- Return an equivalent, formatted for display:
-- with a custom decimal mark instead of '.', if wanted
-- with thousand separators inserted, if wanted
-- digits in local language
-- The given text is like '123' or '123.' or '12345.6789'.
-- The text has no sign (caller inserts that later, if necessary).
-- When using gaps, they are inserted before and after the decimal mark.
-- Separators are inserted only before the decimal mark.
-- A trailing dot (as in '123.') is removed because their use appears to
-- be accidental, and such a number should be shown as '123' or '123.0'.
-- It is useful for convert to suppress the dot so, for example, '4000.'
-- is a simple way of indicating that all the digits are significant.
if text:sub(-1) == '.' then
text = text:sub(1, -2)
end
if #text < 4 or parms.opt_nocomma or numsep == '' then
return from_en(text)
end
local groups = digit_groups(parms, text, group_method)
if parms.opt_gaps then
if groups.n <= 1 then
return groups[1] or ''
end
local nowrap = '<span style="white-space: nowrap">'
local gap = '<span style="margin-left: 0.25em">'
local close = '</span>'
return nowrap .. groups[1] .. gap .. table.concat(groups, close .. gap, 2, groups.n) .. close .. close
end
return table.concat(groups, numsep)
end
-- An input value like 1.23e12 is displayed using scientific notation (1.23×10¹²).
-- That also makes the output use scientific notation, except for small values.
-- In addition, very small or very large output values use scientific notation.
-- Use format(fmtpower, significand, '10', exponent) where each argument is a string.
local fmtpower = '%s<span style="margin:0 .15em 0 .25em">×</span>%s<sup>%s</sup>'
local function with_exponent(parms, show, exponent)
-- Return wikitext to display the implied value in scientific notation.
-- Input uses en digits; output uses digits in local language.
return format(fmtpower, with_separator(parms, show), from_en('10'), use_minus(from_en(tostring(exponent))))
end
local function make_sigfig(value, sigfig)
-- Return show, exponent that are equivalent to the result of
-- converting the number 'value' (where value >= 0) to a string,
-- rounded to 'sigfig' significant figures.
-- The returned items are:
-- show: a string of digits; no sign and no dot;
-- there is an implied dot before show.
-- exponent: a number (an integer) to shift the implied dot.
-- Resulting value = tonumber('.' .. show) * 10^exponent.
-- Examples:
-- make_sigfig(23.456, 3) returns '235', 2 (.235 * 10^2).
-- make_sigfig(0.0023456, 3) returns '235', -2 (.235 * 10^-2).
-- make_sigfig(0, 3) returns '000', 1 (.000 * 10^1).
if sigfig <= 0 then
sigfig = 1
elseif sigfig > maxsigfig then
sigfig = maxsigfig
end
if value == 0 then
return string.rep('0', sigfig), 1
end
local exp, fracpart = math.modf(log10(value))
if fracpart >= 0 then
fracpart = fracpart - 1
exp = exp + 1
end
local digits = format('%.0f', 10^(fracpart + sigfig))
if #digits > sigfig then
-- Overflow (for sigfig=3: like 0.9999 rounding to "1000"; need "100").
digits = digits:sub(1, sigfig)
exp = exp + 1
end
assert(#digits == sigfig, 'Bug: rounded number has wrong length')
return digits, exp
end
-- Fraction output format.
local fracfmt = {
{ -- Like {{frac}} (fraction slash).
'<span class="frac">{SIGN}<span class="num">{NUM}</span>⁄<span class="den">{DEN}</span></span>', -- 1/2
'<span class="frac">{SIGN}{WHOLE}<span class="sr-only">+</span><span class="num">{NUM}</span>⁄<span class="den">{DEN}</span></span>', -- 1+2/3
style = 'frac',
},
{ -- Like {{sfrac}} (stacked fraction, that is, horizontal bar).
'<span class="sfrac tion">{SIGN}<span class="num">{NUM}</span><span class="sr-only">/</span><span class="den">{DEN}</span></span>', -- 1//2
'<span class="sfrac">{SIGN}{WHOLE}<span class="sr-only">+</span><span class="tion"><span class="num">{NUM}</span><span class="sr-only">/</span><span class="den">{DEN}</span></span></span>', -- 1+2//3
style = 'sfrac',
},
}
local function format_fraction(parms, inout, negative, wholestr, numstr, denstr, do_spell, style)
-- Return wikitext for a fraction, possibly spelled.
-- Inputs use en digits and have no sign; output uses digits in local language.
local wikitext
if not style then
style = parms.opt_fraction_horizontal and 2 or 1
end
if wholestr == '' then
wholestr = nil
end
local substitute = {
SIGN = negative and MINUS or '',
WHOLE = wholestr and with_separator(parms, wholestr),
NUM = from_en(numstr),
DEN = from_en(denstr),
}
wikitext = fracfmt[style][wholestr and 2 or 1]:gsub('{(%u+)}', substitute)
if do_spell then
if negative then
if wholestr then
wholestr = '-' .. wholestr
else
numstr = '-' .. numstr
end
end
local s = spell_number(parms, inout, wholestr, numstr, denstr)
if s then
return s
end
end
add_style(parms, fracfmt[style].style)
return wikitext
end
local function format_number(parms, show, exponent, isnegative)
-- Parameter show is a string or a table containing strings.
-- Each string is a formatted number in en digits and optional '.' decimal mark.
-- A table represents a fraction: integer, numerator, denominator;
-- if a table is given, exponent must be nil.
-- Return t where t is a table with fields:
-- show = wikitext formatted to display implied value
-- (digits in local language)
-- is_scientific = true if show uses scientific notation
-- clean = unformatted show (possibly adjusted and with inserted '.')
-- (en digits)
-- sign = '' or MINUS
-- exponent = exponent (possibly adjusted)
-- The clean and exponent fields can be used to calculate the
-- rounded absolute value, if needed.
--
-- The value implied by the arguments is found from:
-- exponent is nil; and
-- show is a string of digits (no sign), with an optional dot;
-- show = '123.4' is value 123.4, '1234' is value 1234.0;
-- or:
-- exponent is an integer indicating where dot should be;
-- show is a string of digits (no sign and no dot);
-- there is an implied dot before show;
-- show does not start with '0';
-- show = '1234', exponent = 3 is value 0.1234*10^3 = 123.4.
--
-- The formatted result:
-- * Is for an output value and is spelled if wanted and possible.
-- * Includes a Unicode minus if isnegative and not spelled.
-- * Uses a custom decimal mark, if wanted.
-- * Has digits grouped where necessary, if wanted.
-- * Uses scientific notation if requested, or for very small or large values
-- (which forces result to not be spelled).
-- * Has no more than maxsigfig significant digits
-- (same as old template and {{#expr}}).
local xhi, xlo -- these control when scientific notation (exponent) is used
if parms.opt_scientific then
xhi, xlo = 4, 2 -- default for output if input uses e-notation
elseif parms.opt_scientific_always then
xhi, xlo = 0, 0 -- always use scientific notation (experimental)
else
xhi, xlo = 10, 4 -- default
end
local sign = isnegative and MINUS or ''
local maxlen = maxsigfig
local tfrac
if type(show) == 'table' then
tfrac = show
show = tfrac.wholestr
assert(exponent == nil, 'Bug: exponent given with fraction')
end
if not tfrac and not exponent then
local integer, dot, decimals = show:match('^(%d*)(%.?)(.*)')
if integer == '0' or integer == '' then
local zeros, figs = decimals:match('^(0*)([^0]?.*)')
if #figs == 0 then
if #zeros > maxlen then
show = '0.' .. zeros:sub(1, maxlen)
end
elseif #zeros >= xlo then
show = figs
exponent = -#zeros
elseif #figs > maxlen then
show = '0.' .. zeros .. figs:sub(1, maxlen)
end
elseif #integer >= xhi then
show = integer .. decimals
exponent = #integer
else
maxlen = maxlen + #dot
if #show > maxlen then
show = show:sub(1, maxlen)
end
end
end
if exponent then
local function zeros(n)
return string.rep('0', n)
end
if #show > maxlen then
show = show:sub(1, maxlen)
end
if exponent > xhi or exponent <= -xlo or (exponent == xhi and show ~= '1' .. zeros(xhi - 1)) then
-- When xhi, xlo = 10, 4 (the default), scientific notation is used if the
-- rounded value satisfies: value >= 1e9 or value < 1e-4 (1e9 = 0.1e10),
-- except if show is '1000000000' (1e9), for example:
-- {{convert|1000000000|m|m|sigfig=10}} → 1,000,000,000 metres (1,000,000,000 m)
local significand
if #show > 1 then
significand = show:sub(1, 1) .. '.' .. show:sub(2)
else
significand = show
end
return {
clean = '.' .. show,
exponent = exponent,
sign = sign,
show = sign .. with_exponent(parms, significand, exponent-1),
is_scientific = true,
}
end
if exponent >= #show then
show = show .. zeros(exponent - #show) -- result has no dot
elseif exponent <= 0 then
show = '0.' .. zeros(-exponent) .. show
else
show = show:sub(1, exponent) .. '.' .. show:sub(exponent+1)
end
end
local formatted_show
if tfrac then
show = tostring(tfrac.value) -- to set clean in returned table
formatted_show = format_fraction(parms, 'out', isnegative, tfrac.wholestr, tfrac.numstr, tfrac.denstr, parms.opt_spell_out)
else
if isnegative and show:match('^0.?0*$') then
sign = '' -- don't show minus if result is negative but rounds to zero
end
formatted_show = sign .. with_separator(parms, show)
if parms.opt_spell_out then
formatted_show = spell_number(parms, 'out', sign .. show) or formatted_show
end
end
return {
clean = show,
sign = sign,
show = formatted_show,
is_scientific = false, -- to avoid calling __index
}
end
local function extract_fraction(parms, text, negative)
-- If text represents a fraction, return
-- value, altvalue, show, denominator
-- where
-- value is a number (value of the fraction in argument text)
-- altvalue is an alternate interpretation of any fraction for the hands
-- unit where "12.1+3/4" means 12 hands 1.75 inches
-- show is a string (formatted text for display of an input value,
-- and is spelled if wanted and possible)
-- denominator is value of the denominator in the fraction
-- Otherwise, return nil.
-- Input uses en digits and '.' decimal mark (input has been translated).
-- Output uses digits in local language and local decimal mark, if any.
------------------------------------------------------------------------
-- Originally this function accepted x+y/z where x, y, z were any valid
-- numbers, possibly with a sign. For example '1.23e+2+1.2/2.4' = 123.5,
-- and '2-3/8' = 1.625. However, such usages were found to be errors or
-- misunderstandings, so since August 2014 the following restrictions apply:
-- x (if present) is an integer or has a single digit after decimal mark
-- y and z are unsigned integers
-- e-notation is not accepted
-- The overall number can start with '+' or '-' (so '12+3/4' and '+12+3/4'
-- and '-12-3/4' are valid).
-- Any leading negative sign is removed by the caller, so only inputs
-- like the following are accepted here (may have whitespace):
-- negative = false false true (there was a leading '-')
-- text = '2/3' '+2/3' '2/3'
-- text = '1+2/3' '+1+2/3' '1-2/3'
-- text = '12.3+1/2' '+12.3+1/2' '12.3-1/2'
-- Values like '12.3+1/2' are accepted, but are intended only for use
-- with the hands unit (not worth adding code to enforce that).
------------------------------------------------------------------------
local leading_plus, prefix, numstr, slashes, denstr =
text:match('^%s*(%+?)%s*(.-)%s*(%d+)%s*(/+)%s*(%d+)%s*$')
if not leading_plus then
-- Accept a single U+2044 fraction slash because that may be pasted.
leading_plus, prefix, numstr, denstr =
text:match('^%s*(%+?)%s*(.-)%s*(%d+)%s*⁄%s*(%d+)%s*$')
slashes = '/'
end
local numerator = tonumber(numstr)
local denominator = tonumber(denstr)
if numerator == nil or denominator == nil or (negative and leading_plus ~= '') then
return nil
end
local whole, wholestr
if prefix == '' then
wholestr = ''
whole = 0
else
-- Any prefix must be like '12+' or '12-' (whole number and fraction sign);
-- '12.3+' and '12.3-' are also accepted (single digit after decimal point)
-- because '12.3+1/2 hands' is valid (12 hands 3½ inches).
local num1, num2, frac_sign = prefix:match('^(%d+)(%.?%d?)%s*([+%-])$')
if num1 == nil then return nil end
if num2 == '' then -- num2 must be '' or like '.1' but not '.' or '.12'
wholestr = num1
else
if #num2 ~= 2 then return nil end
wholestr = num1 .. num2
end
if frac_sign ~= (negative and '-' or '+') then return nil end
whole = tonumber(wholestr)
if whole == nil then return nil end
end
local value = whole + numerator / denominator
if not valid_number(value) then return nil end
local altvalue = whole + numerator / (denominator * 10)
local style = #slashes -- kludge: 1 or 2 slashes can be used to select style
if style > 2 then style = 2 end
local wikitext = format_fraction(parms, 'in', negative, leading_plus .. wholestr, numstr, denstr, parms.opt_spell_in, style)
return value, altvalue, wikitext, denominator
end
local function extract_number(parms, text, another, no_fraction)
-- Return true, info if can extract a number from text,
-- where info is a table with the result,
-- or return false, t where t is an error message table.
-- Input can use en digits or digits in local language and can
-- have references at the end. Accepting references is intended
-- for use in infoboxes with a field for a value passed to convert.
-- Parameter another = true if the expected value is not the first.
-- Before processing, the input text is cleaned:
-- * Any thousand separators (valid or not) are removed.
-- * Any sign is replaced with '-' (if negative) or '' (otherwise).
-- That replaces Unicode minus with '-'.
-- If successful, the returned info table contains named fields:
-- value = a valid number
-- altvalue = a valid number, usually same as value but different
-- if fraction used (for hands unit)
-- singular = true if value is 1 or -1 (to use singular form of units)
-- clean = cleaned text with any separators and sign removed
-- (en digits and '.' decimal mark)
-- show = text formatted for output, possibly with ref strip markers
-- (digits in local language and custom decimal mark)
-- The resulting show:
-- * Is for an input value and is spelled if wanted and possible.
-- * Has a rounded value, if wanted.
-- * Has digits grouped where necessary, if wanted.
-- * If negative, a Unicode minus is used; otherwise the sign is
-- '+' (if the input text used '+'), or is '' (if no sign in input).
text = strip(text or '')
local reference
local pos = text:find('\127', 1, true)
if pos then
local before = text:sub(1, pos - 1)
local remainder = text:sub(pos)
local refs = {}
while #remainder > 0 do
local ref, spaces
ref, spaces, remainder = remainder:match('^(\127[^\127]*UNIQ[^\127]*%-ref[^\127]*\127)(%s*)(.*)')
if ref then
table.insert(refs, ref)
else
refs = {}
break
end
end
if #refs > 0 then
text = strip(before)
reference = table.concat(refs)
end
end
local clean = to_en(text, parms)
if clean == '' then
return false, { another and 'cvt_no_num2' or 'cvt_no_num' }
end
local isnegative, propersign = false, '' -- most common case
local singular, show, denominator
local value = tonumber(clean)
local altvalue
if value then
local sign = clean:sub(1, 1)
if sign == '+' or sign == '-' then
propersign = (sign == '+') and '+' or MINUS
clean = clean:sub(2)
end
if value < 0 then
isnegative = true
value = -value
end
else
local valstr
for _, prefix in ipairs({ '-', MINUS, '−' }) do
-- Including '-' sets isnegative in case input is a fraction like '-2-3/4'.
local plen = #prefix
if clean:sub(1, plen) == prefix then
valstr = clean:sub(plen + 1)
if valstr:match('^%s') then -- "- 1" is invalid but "-1 - 1/2" is ok
return false, { 'cvt_bad_num', text }
end
break
end
end
if valstr then
isnegative = true
propersign = MINUS
clean = valstr
value = tonumber(clean)
end
if value == nil then
if not no_fraction then
value, altvalue, show, denominator = extract_fraction(parms, clean, isnegative)
end
if value == nil then
return false, { 'cvt_bad_num', text }
end
if value <= 1 then
singular = true -- for example, "½ mile" or "one half mile" (singular unit)
end
end
end
if not valid_number(value) then -- for example, "1e310" may overflow
return false, { 'cvt_invalid_num' }
end
if show == nil then
-- clean is a non-empty string with no spaces, and does not represent a fraction,
-- and value = tonumber(clean) is a number >= 0.
-- If the input uses e-notation, show will be displayed using a power of ten, but
-- we use the number as given so it might not be normalized scientific notation.
-- The input value is spelled if specified so any e-notation is ignored;
-- that allows input like 2e6 to be spelled as "two million" which works
-- because the spell module converts '2e6' to '2000000' before spelling.
local function rounded(value, default, exponent)
local precision = parms.opt_ri
if precision then
local fmt = '%.' .. format('%d', precision) .. 'f'
local result = fmt:format(tonumber(value) + 2e-14) -- fudge for some common cases of bad rounding
if not exponent then
singular = (tonumber(result) == 1)
end
return result
end
return default
end
singular = (value == 1)
local scientific
local significand, exponent = clean:match('^([%d.]+)[Ee]([+%-]?%d+)')
if significand then
show = with_exponent(parms, rounded(significand, significand, exponent), exponent)
scientific = true
else
show = with_separator(parms, rounded(value, clean))
end
show = propersign .. show
if parms.opt_spell_in then
show = spell_number(parms, 'in', propersign .. rounded(value, clean)) or show
scientific = false
end
if scientific then
parms.opt_scientific = true
end
end
if isnegative and (value ~= 0) then
value = -value
altvalue = -(altvalue or value)
end
return true, {
value = value,
altvalue = altvalue or value,
singular = singular,
clean = clean,
show = show .. (reference or ''),
denominator = denominator,
}
end
local function get_number(text)
-- Return v, f where:
-- v = nil (text is not a number)
-- or
-- v = value of text (text is a number)
-- f = true if value is an integer
-- Input can use en digits or digits in local language or separators,
-- but no Unicode minus, and no fraction.
if text then
local number = tonumber(to_en(text))
if number then
local _, fracpart = math.modf(number)
return number, (fracpart == 0)
end
end
end
local function gcd(a, b)
-- Return the greatest common denominator for the given values,
-- which are known to be positive integers.
if a > b then
a, b = b, a
end
if a <= 0 then
return b
end
local r = b % a
if r <= 0 then
return a
end
if r == 1 then
return 1
end
return gcd(r, a)
end
local function fraction_table(value, denominator)
-- Return value as a string or a table:
-- * If result is a string, there is no fraction, and the result
-- is value formatted as a string of en digits.
-- * If result is a table, it represents a fraction with named fields:
-- wholestr, numstr, denstr (strings of en digits for integer, numerator, denominator).
-- The result is rounded to the nearest multiple of (1/denominator).
-- If the multiple is zero, no fraction is included.
-- No fraction is included if value is very large as the fraction would
-- be unhelpful, particularly if scientific notation is required.
-- Input value is a non-negative number.
-- Input denominator is a positive integer for the desired fraction.
if value <= 0 then
return '0'
end
if denominator <= 0 or value > 1e8 then
return format('%.2f', value)
end
local integer, decimals = math.modf(value)
local numerator = floor((decimals * denominator) +
0.5 + 2e-14) -- add fudge for some common cases of bad rounding
if numerator >= denominator then
integer = integer + 1
numerator = 0
end
local wholestr = tostring(integer)
if numerator > 0 then
local div = gcd(numerator, denominator)
if div > 1 then
numerator = numerator / div
denominator = denominator / div
end
return {
wholestr = (integer > 0) and wholestr or '',
numstr = tostring(numerator),
denstr = tostring(denominator),
value = value,
}
end
return wholestr
end
local function preunits(count, preunit1, preunit2)
-- If count is 1:
-- ignore preunit2
-- return p1
-- else:
-- preunit1 is used for preunit2 if the latter is empty
-- return p1, p2
-- where:
-- p1 is text to insert before the input unit
-- p2 is text to insert before the output unit
-- p1 or p2 may be nil to mean "no preunit"
-- Using '+' gives output like "5+ feet" (no space before, but space after).
local function withspace(text, wantboth)
-- Return text with space before and, if wantboth, after.
-- However, no space is added if there is a space or ' ' or '-'
-- at that position ('-' is for adjectival text).
-- There is also no space if text starts with '&'
-- (e.g. '°' would display a degree symbol with no preceding space).
local char = text:sub(1, 1)
if char == '&' then
return text -- an html entity can be used to specify the exact display
end
if not (char == ' ' or char == '-' or char == '+') then
text = ' ' .. text
end
if wantboth then
char = text:sub(-1, -1)
if not (char == ' ' or char == '-' or text:sub(-6, -1) == ' ') then
text = text .. ' '
end
end
return text
end
local PLUS = '+ '
preunit1 = preunit1 or ''
local trim1 = strip(preunit1)
if count == 1 then
if trim1 == '' then
return nil
end
if trim1 == '+' then
return PLUS
end
return withspace(preunit1, true)
end
preunit1 = withspace(preunit1)
preunit2 = preunit2 or ''
local trim2 = strip(preunit2)
if trim1 == '+' then
if trim2 == '' or trim2 == '+' then
return PLUS, PLUS
end
preunit1 = PLUS
end
if trim2 == '' then
if trim1 == '' then
return nil, nil
end
preunit2 = preunit1
elseif trim2 == '+' then
preunit2 = PLUS
elseif trim2 == ' ' then -- trick to make preunit2 empty
preunit2 = nil
else
preunit2 = withspace(preunit2)
end
return preunit1, preunit2
end
local function range_text(range, want_name, parms, before, after, inout, options)
-- Return before .. rtext .. after
-- where rtext is the text that separates two values in a range.
local rtext, adj_text, exception
options = options or {}
if type(range) == 'table' then
-- Table must specify range text for ('off' and 'on') or ('input' and 'output'),
-- and may specify range text for 'adj=on',
-- and may specify exception = true.
rtext = range[want_name and 'off' or 'on'] or
range[((inout == 'in') == (parms.opt_flip == true)) and 'output' or 'input']
adj_text = range['adj']
exception = range['exception']
else
rtext = range
end
if parms.opt_adjectival then
if want_name or (exception and parms.abbr_org == 'on') then
rtext = adj_text or rtext:gsub(' ', '-'):gsub(' ', '-')
end
end
if rtext == '–' and (options.spaced or after:sub(1, #MINUS) == MINUS) then
rtext = ' – '
end
return before .. rtext .. after
end
local function get_composite(parms, iparm, in_unit_table)
-- Look for a composite input unit. For example, {{convert|1|yd|2|ft|3|in}}
-- would result in a call to this function with
-- iparm = 3 (parms[iparm] = "2", just after the first unit)
-- in_unit_table = (unit table for "yd"; contains value 1 for number of yards)
-- Return true, iparm, unit where
-- iparm = index just after the composite units (7 in above example)
-- unit = composite unit table holding all input units,
-- or return true if no composite unit is present in parms,
-- or return false, t where t is an error message table.
local default, subinfo
local composite_units, count = { in_unit_table }, 1
local fixups = {}
local total = in_unit_table.valinfo[1].value
local subunit = in_unit_table
while subunit.subdivs do -- subdivs is nil or a table of allowed subdivisions
local subcode = strip(parms[iparm+1])
local subdiv = subunit.subdivs[subcode] or subunit.subdivs[(all_units[subcode] or {}).target]
if not subdiv then
break
end
local success
success, subunit = lookup(parms, subcode, 'no_combination')
if not success then return false, subunit end -- should never occur
success, subinfo = extract_number(parms, parms[iparm])
if not success then return false, subinfo end
iparm = iparm + 2
subunit.inout = 'in'
subunit.valinfo = { subinfo }
-- Recalculate total as a number of subdivisions.
-- subdiv[1] = number of subdivisions per previous unit (integer > 1).
total = total * subdiv[1] + subinfo.value
if not default then -- set by the first subdiv with a default defined
default = subdiv.default
end
count = count + 1
composite_units[count] = subunit
if subdiv.unit or subdiv.name then
fixups[count] = { unit = subdiv.unit, name = subdiv.name, valinfo = subunit.valinfo }
end
end
if count == 1 then
return true -- no error and no composite unit
end
for i, fixup in pairs(fixups) do
local unit = fixup.unit
local name = fixup.name
if not unit or (count > 2 and name) then
composite_units[i].fixed_name = name
else
local success, alternate = lookup(parms, unit, 'no_combination')
if not success then return false, alternate end -- should never occur
alternate.inout = 'in'
alternate.valinfo = fixup.valinfo
composite_units[i] = alternate
end
end
return true, iparm, {
utype = in_unit_table.utype,
scale = subunit.scale, -- scale of last (least significant) unit
valinfo = { { value = total, clean = subinfo.clean, denominator = subinfo.denominator } },
composite = composite_units,
default = default or in_unit_table.default
}
end
local function translate_parms(parms, kv_pairs)
-- Update fields in parms by translating each key:value in kv_pairs to terms
-- used by this module (may involve translating from local language to English).
-- Also, checks are performed which may display warnings, if enabled.
-- Return true if successful or return false, t where t is an error message table.
currency_text = nil -- local testing can hold module in memory; must clear globals
if kv_pairs.adj and kv_pairs.sing then
-- For enwiki (before translation), warn if attempt to use adj and sing
-- as the latter is a deprecated alias for the former.
if kv_pairs.adj ~= kv_pairs.sing and kv_pairs.sing ~= '' then
add_warning(parms, 1, 'cvt_unknown_option', 'sing=' .. kv_pairs.sing)
end
kv_pairs.sing = nil
end
kv_pairs.comma = kv_pairs.comma or config.comma -- for plwiki who want default comma=5
for loc_name, loc_value in pairs(kv_pairs) do
local en_name = text_code.en_option_name[loc_name]
if en_name then
local en_value = text_code.en_option_value[en_name]
if en_value == 'INTEGER' then -- altitude_ft, altitude_m, frac, sigfig
en_value = nil
if loc_value == '' then
add_warning(parms, 2, 'cvt_empty_option', loc_name)
else
local minimum
local number, is_integer = get_number(loc_value)
if en_name == 'sigfig' then
minimum = 1
elseif en_name == 'frac' then
minimum = 2
if number and number < 0 then
parms.opt_fraction_horizontal = true
number = -number
end
else
minimum = -1e6
end
if number and is_integer and number >= minimum then
en_value = number
else
local m
if en_name == 'frac' then
m = 'cvt_bad_frac'
elseif en_name == 'sigfig' then
m = 'cvt_bad_sigfig'
else
m = 'cvt_bad_altitude'
end
add_warning(parms, 1, m, loc_name .. '=' .. loc_value)
end
end
elseif en_value == 'TEXT' then -- $, input, qid, qual, stylein, styleout, tracking
en_value = loc_value ~= '' and loc_value or nil -- accept non-empty user text with no validation
if not en_value and (en_name == '$' or en_name == 'qid' or en_name == 'qual') then
add_warning(parms, 2, 'cvt_empty_option', loc_name)
elseif en_name == '$' then
-- Value should be a single character like "€" for the euro currency symbol, but anything is accepted.
currency_text = (loc_value == 'euro') and '€' or loc_value
elseif en_name == 'error' then
-- May have something like {{convert|...|error=x}} which will return the
-- conversion result if successful, or x if not (no error return).
parms.error_text = loc_value -- keep value because parms.error is nil if loc_value == ''
parms.opt_no_extra = true
elseif en_name == 'input' then
-- May have something like {{convert|input=}} (empty input) if source is an infobox
-- with optional fields. In that case, want to output nothing rather than an error.
parms.input_text = loc_value -- keep value because parms.input is nil if loc_value == ''
end
else
en_value = en_value[loc_value]
if en_value and en_value:sub(-1) == '?' then
en_value = en_value:sub(1, -2)
add_warning(parms, -1, 'cvt_deprecated', loc_name .. '=' .. loc_value)
end
if en_value == nil then
if loc_value == '' then
add_warning(parms, 2, 'cvt_empty_option', loc_name)
else
add_warning(parms, 1, 'cvt_unknown_option', loc_name .. '=' .. loc_value)
end
elseif en_value == '' then
en_value = nil -- an ignored option like adj=off
elseif type(en_value) == 'string' and en_value:sub(1, 4) == 'opt_' then
for _, v in ipairs(split(en_value, ',')) do
local lhs, rhs = v:match('^(.-)=(.+)$')
if rhs then
parms[lhs] = tonumber(rhs) or rhs
else
parms[v] = true
end
end
en_value = nil
end
end
parms[en_name] = en_value
else
add_warning(parms, 1, 'cvt_unknown_option', loc_name .. '=' .. loc_value)
end
end
local abbr_entered = parms.abbr
local cfg_abbr = config.abbr
if cfg_abbr then
-- Don't warn if invalid because every convert would show that warning.
if cfg_abbr == 'on always' then
parms.abbr = 'on'
elseif cfg_abbr == 'off always' then
parms.abbr = 'off'
elseif parms.abbr == nil then
if cfg_abbr == 'on default' then
parms.abbr = 'on'
elseif cfg_abbr == 'off default' then
parms.abbr = 'off'
end
end
end
if parms.abbr then
if parms.abbr == 'unit' then
parms.abbr = 'on'
parms.number_word = true
end
parms.abbr_org = parms.abbr -- original abbr, before any flip
elseif parms.opt_hand_hh then
parms.abbr_org = 'on'
parms.abbr = 'on'
else
parms.abbr = 'out' -- default is to abbreviate output only (use symbol, not name)
end
if parms.opt_order_out then
-- Disable options that do not work in a useful way with order=out.
parms.opt_flip = nil -- override adj=flip
parms.opt_spell_in = nil
parms.opt_spell_out = nil
parms.opt_spell_upper = nil
end
if parms.opt_spell_out and not abbr_entered then
parms.abbr = 'off' -- should show unit name when spelling the output value
end
if parms.opt_flip then
local function swap_in_out(option)
local value = parms[option]
if value == 'in' then
parms[option] = 'out'
elseif value == 'out' then
parms[option] = 'in'
end
end
swap_in_out('abbr')
swap_in_out('lk')
if parms.opt_spell_in and not parms.opt_spell_out then
-- For simplicity, and because it does not appear to be needed,
-- user cannot set an option to spell the output only.
parms.opt_spell_in = nil
parms.opt_spell_out = true
end
end
if parms.opt_spell_upper then
parms.spell_upper = parms.opt_flip and 'out' or 'in'
end
if parms.opt_table or parms.opt_tablecen then
if abbr_entered == nil and parms.lk == nil then
parms.opt_values = true
end
parms.table_align = parms.opt_table and 'right' or 'center'
end
if parms.table_align or parms.opt_sortable_on then
parms.need_table_or_sort = true
end
local disp_joins = text_code.disp_joins
local default_joins = disp_joins['b']
parms.join_between = default_joins[3] or '; '
local disp = parms.disp
if disp == nil then -- special case for the most common setting
parms.joins = default_joins
elseif disp == 'x' then
-- Later, parms.joins is set from the input parameters.
else
-- Old template does this.
local abbr = parms.abbr
if disp == 'slash' then
if abbr_entered == nil then
disp = 'slash-nbsp'
elseif abbr == 'in' or abbr == 'out' then
disp = 'slash-sp'
else
disp = 'slash-nosp'
end
elseif disp == 'sqbr' then
if abbr == 'on' then
disp = 'sqbr-nbsp'
else
disp = 'sqbr-sp'
end
end
parms.joins = disp_joins[disp] or default_joins
parms.join_between = parms.joins[3] or parms.join_between
parms.wantname = parms.joins.wantname
end
if (en_default and not parms.opt_lang_local and (parms[1] or ''):find('%d')) or parms.opt_lang_en then
from_en_table = nil
end
if en_default and from_en_table then
-- For hiwiki: localized symbol/name is defined with the US symbol/name field,
-- and is used if output uses localized numbers.
parms.opt_sp_us = true
end
return true
end
local function get_values(parms)
-- If successful, update parms and return true, v, i where
-- v = table of input values
-- i = index to next entry in parms after those processed here
-- or return false, t where t is an error message table.
local valinfo = collection() -- numbered table of input values
local range = collection() -- numbered table of range items (having, for example, 2 range items requires 3 input values)
local had_nocomma -- true if removed "nocomma" kludge from second parameter (like "tonocomma")
local parm2 = strip(parms[2])
if parm2 and parm2:sub(-7, -1) == 'nocomma' then
parms[2] = strip(parm2:sub(1, -8))
parms.opt_nocomma = true
had_nocomma = true
end
local function extractor(i)
-- If the parameter is not a value, try unpacking it as a range ("1-23" for "1 to 23").
-- However, "-1-2/3" is a negative fraction (-1⅔), so it must be extracted first.
-- Do not unpack a parameter if it is like "3-1/2" which is sometimes incorrectly
-- used instead of "3+1/2" (and which should not be interpreted as "3 to ½").
-- Unpacked items are inserted into the parms table.
-- The tail recursion allows combinations like "1x2 to 3x4".
local valstr = strip(parms[i]) -- trim so any '-' as a negative sign will be at start
local success, result = extract_number(parms, valstr, i > 1)
if not success and valstr and i < 20 then -- check i to limit abuse
local lhs, sep, rhs = valstr:match('^(%S+)%s+(%S+)%s+(%S.*)')
if lhs and not (sep == '-' and rhs:match('/')) then
if sep:find('%d') then
return success, result -- to reject {{convert|1 234 567|m}} with a decent message (en only)
end
parms[i] = rhs
table.insert(parms, i, sep)
table.insert(parms, i, lhs)
return extractor(i)
end
if not valstr:match('%-.*/') then
for _, sep in ipairs(text_code.ranges.words) do
local start, stop = valstr:find(sep, 2, true) -- start at 2 to skip any negative sign for range '-'
if start then
parms[i] = valstr:sub(stop + 1)
table.insert(parms, i, sep)
table.insert(parms, i, valstr:sub(1, start - 1))
return extractor(i)
end
end
end
end
return success, result
end
local i = 1
local is_change
while true do
local success, info = extractor(i) -- need to set parms.opt_nocomma before calling this
if not success then return false, info end
i = i + 1
if is_change then
info.is_change = true -- value is after "±" and so is a change (significant for range like {{convert|5|±|5|°C}})
is_change = nil
end
valinfo:add(info)
local range_item = get_range(strip(parms[i]))
if not range_item then
break
end
i = i + 1
range:add(range_item)
if type(range_item) == 'table' then
-- For range "x", if append unit to some values, append it to all.
parms.in_range_x = parms.in_range_x or range_item.in_range_x
parms.out_range_x = parms.out_range_x or range_item.out_range_x
parms.abbr_range_x = parms.abbr_range_x or range_item.abbr_range_x
is_change = range_item.is_range_change
end
end
if range.n > 0 then
if range.n > 30 then -- limit abuse, although 4 is a more likely upper limit
return false, { 'cvt_invalid_num' } -- misleading message but it will do
end
parms.range = range
elseif had_nocomma then
return false, { 'cvt_unknown', parm2 }
end
return true, valinfo, i
end
local function simple_get_values(parms)
-- If input is like "{{convert|valid_value|valid_unit|...}}",
-- return true, i, in_unit, in_unit_table
-- i = index in parms of what follows valid_unit, if anything.
-- The valid_value is not negative and does not use a fraction, and
-- no options requiring further processing of the input are used.
-- Otherwise, return nothing or return false, parm1 for caller to interpret.
-- Testing shows this function is successful for 96% of converts in articles,
-- and that on average it speeds up converts by 8%.
local clean = to_en(strip(parms[1] or ''), parms)
if parms.opt_ri or parms.opt_spell_in or #clean > 10 or not clean:match('^[0-9.]+$') then
return false, clean
end
local value = tonumber(clean)
if not value then return end
local info = {
value = value,
altvalue = value,
singular = (value == 1),
clean = clean,
show = with_separator(parms, clean),
}
local in_unit = strip(parms[2])
local success, in_unit_table = lookup(parms, in_unit, 'no_combination')
if not success then return end
in_unit_table.valinfo = { info }
return true, 3, in_unit, in_unit_table
end
local function wikidata_call(parms, operation, ...)
-- Return true, s where s is the result of a Wikidata operation,
-- or return false, t where t is an error message table.
local function worker(...)
wikidata_code = wikidata_code or require(wikidata_module)
wikidata_data = wikidata_data or mw.loadData(wikidata_data_module)
return wikidata_code[operation](wikidata_data, ...)
end
local success, status, result = pcall(worker, ...)
if success then
return status, result
end
if parms.opt_sortable_debug then
-- Use debug=yes to crash if an error while accessing Wikidata.
error('Error accessing Wikidata: ' .. status, 0)
end
return false, { 'cvt_wd_fail' }
end
local function get_parms(parms, args)
-- If successful, update parms and return true, unit where
-- parms is a table of all arguments passed to the template
-- converted to named arguments, and
-- unit is the input unit table;
-- or return false, t where t is an error message table.
-- For special processing (not a convert), can also return
-- true, wikitext where wikitext is the final result.
-- The returned input unit table may be for a fake unit using the specified
-- unit code as the symbol and name, and with bad_mcode = message code table.
-- MediaWiki removes leading and trailing whitespace from the values of
-- named arguments. However, the values of numbered arguments include any
-- whitespace entered in the template, and whitespace is used by some
-- parameters (example: the numbered parameters associated with "disp=x").
local kv_pairs = {} -- table of input key:value pairs where key is a name; needed because cannot iterate parms and add new fields to it
for k, v in pairs(args) do
if type(k) == 'number' or k == 'test' then -- parameter "test" is reserved for testing and is not translated
parms[k] = v
else
kv_pairs[k] = v
end
end
if parms.test == 'wikidata' then
local ulookup = function (ucode)
-- Use empty table for parms so it does not accumulate results when used repeatedly.
return lookup({}, ucode, 'no_combination')
end
return wikidata_call(parms, '_listunits', ulookup)
end
local success, msg = translate_parms(parms, kv_pairs)
if not success then return false, msg end
if parms.input then
success, msg = wikidata_call(parms, '_adjustparameters', parms, 1)
if not success then return false, msg end
end
local success, i, in_unit, in_unit_table = simple_get_values(parms)
if not success then
if type(i) == 'string' and i:match('^NNN+$') then
-- Some infoboxes have examples like {{convert|NNN|m}} (3 or more "N").
-- Output an empty string for these.
return false, { 'cvt_no_output' }
end
local valinfo
success, valinfo, i = get_values(parms)
if not success then return false, valinfo end
in_unit = strip(parms[i])
i = i + 1
success, in_unit_table = lookup(parms, in_unit, 'no_combination')
if not success then
in_unit = in_unit or ''
if parms.opt_ignore_error then -- display given unit code with no error (for use with {{val}})
in_unit_table = '' -- suppress error message and prevent processing of output unit
end
in_unit_table = setmetatable({
symbol = in_unit, name2 = in_unit, utype = in_unit,
scale = 1, default = '', defkey = '', linkey = '',
bad_mcode = in_unit_table }, unit_mt)
end
in_unit_table.valinfo = valinfo
end
if parms.test == 'msg' then
-- Am testing the messages produced when no output unit is specified, and
-- the input unit has a missing or invalid default.
-- Set two units for testing that.
-- LATER: Remove this code.
if in_unit == 'chain' then
in_unit_table.default = nil -- no default
elseif in_unit == 'rd' then
in_unit_table.default = "ft!X!m" -- an invalid expression
end
end
in_unit_table.inout = 'in' -- this is an input unit
if not parms.range then
local success, inext, composite_unit = get_composite(parms, i, in_unit_table)
if not success then return false, inext end
if composite_unit then
in_unit_table = composite_unit
i = inext
end
end
if in_unit_table.builtin == 'mach' then
-- As with old template, a number following Mach as the input unit is the altitude.
-- That is deprecated: should use altitude_ft=NUMBER or altitude_m=NUMBER.
local success, info
success = tonumber(parms[i]) -- this will often work and will give correct result for values like 2e4 without forcing output scientific notation
if success then
info = { value = success }
else
success, info = extract_number(parms, parms[i], false, true)
end
if success then
i = i + 1
in_unit_table.altitude = info.value
end
end
local word = strip(parms[i])
i = i + 1
local precision, is_bad_precision
local function set_precision(text)
local number, is_integer = get_number(text)
if number then
if is_integer then
precision = number
else
precision = text
is_bad_precision = true
end
return true -- text was used for precision, good or bad
end
end
if word and not set_precision(word) then
parms.out_unit = parms.out_unit or word
if set_precision(strip(parms[i])) then
i = i + 1
end
end
if parms.opt_adj_mid then
word = parms[i]
i = i + 1
if word then -- mid-text words
if word:sub(1, 1) == '-' then
parms.mid = word
else
parms.mid = ' ' .. word
end
end
end
if parms.opt_one_preunit then
parms[parms.opt_flip and 'preunit2' or 'preunit1'] = preunits(1, parms[i])
i = i + 1
end
if parms.disp == 'x' then
-- Following is reasonably compatible with the old template.
local first = parms[i] or ''
local second = parms[i+1] or ''
i = i + 2
if strip(first) == '' then -- user can enter ' ' rather than ' ' to avoid the default
first = ' [ ' .. first
second = ' ]' .. second
end
parms.joins = { first, second }
elseif parms.opt_two_preunits then
local p1, p2 = preunits(2, parms[i], parms[i+1])
i = i + 2
if parms.preunit1 then
-- To simplify documentation, allow unlikely use of adj=pre with disp=preunit
-- (however, an output unit must be specified with adj=pre and with disp=preunit).
parms.preunit1 = parms.preunit1 .. p1
parms.preunit2 = p2
else
parms.preunit1, parms.preunit2 = p1, p2
end
end
if precision == nil then
if set_precision(strip(parms[i])) then
i = i + 1
end
end
if is_bad_precision then
add_warning(parms, 1, 'cvt_bad_prec', precision)
else
parms.precision = precision
end
for j = i, i + 3 do
local parm = parms[j] -- warn if find a non-empty extraneous parameter
if parm and parm:match('%S') then
add_warning(parms, 1, 'cvt_unknown_option', parm)
break
end
end
return true, in_unit_table
end
local function record_default_precision(parms, out_current, precision)
-- If necessary, adjust parameters and return a possibly adjusted precision.
-- When converting a range of values where a default precision is required,
-- that default is calculated for each value because the result sometimes
-- depends on the precise input and output values. This function may cause
-- the entire convert process to be repeated in order to ensure that the
-- same default precision is used for each individual convert.
-- If that were not done, a range like 1000 to 1000.4 may give poor results
-- because the first output could be heavily rounded, while the second is not.
-- For range 1000.4 to 1000, this function can give the second convert the
-- same default precision that was used for the first.
if not parms.opt_round_each then
local maxdef = out_current.max_default_precision
if maxdef then
if maxdef < precision then
parms.do_convert_again = true
out_current.max_default_precision = precision
else
precision = out_current.max_default_precision
end
else
out_current.max_default_precision = precision
end
end
return precision
end
local function default_precision(parms, invalue, inclean, denominator, outvalue, in_current, out_current, extra)
-- Return a default value for precision (an integer like 2, 0, -2).
-- If denominator is not nil, it is the value of the denominator in inclean.
-- Code follows procedures used in old template.
local fudge = 1e-14 -- {{Order of magnitude}} adds this, so we do too
local prec, minprec, adjust
local subunit_ignore_trailing_zero
local subunit_more_precision -- kludge for "in" used in input like "|2|ft|6|in"
local composite = in_current.composite
if composite then
subunit_ignore_trailing_zero = true -- input "|2|st|10|lb" has precision 0, not -1
if composite[#composite].exception == 'subunit_more_precision' then
subunit_more_precision = true -- do not use standard precision with input like "|2|ft|6|in"
end
end
if denominator and denominator > 0 then
prec = math.max(log10(denominator), 1)
else
-- Count digits after decimal mark, handling cases like '12.345e6'.
local exponent
local integer, dot, decimals, expstr = inclean:match('^(%d*)(%.?)(%d*)(.*)')
local e = expstr:sub(1, 1)
if e == 'e' or e == 'E' then
exponent = tonumber(expstr:sub(2))
end
if dot == '' then
prec = subunit_ignore_trailing_zero and 0 or -integer:match('0*$'):len()
else
prec = #decimals
end
if exponent then
-- So '1230' and '1.23e3' both give prec = -1, and '0.00123' and '1.23e-3' give 5.
prec = prec - exponent
end
end
if in_current.istemperature and out_current.istemperature then
-- Converting between common temperatures (°C, °F, °R, K); not keVT.
-- Kelvin value can be almost zero, or small but negative due to precision problems.
-- Also, an input value like -300 C (below absolute zero) gives negative kelvins.
-- Calculate minimum precision from absolute value.
adjust = 0
local kelvin = abs((invalue - in_current.offset) * in_current.scale)
if kelvin < 1e-8 then -- assume nonzero due to input or calculation precision problem
minprec = 2
else
minprec = 2 - floor(log10(kelvin) + fudge) -- 3 sigfigs in kelvin
end
else
if invalue == 0 or outvalue <= 0 then
-- We are never called with a negative outvalue, but it might be zero.
-- This is special-cased to avoid calculation exceptions.
return record_default_precision(parms, out_current, 0)
end
if out_current.exception == 'integer_more_precision' and floor(invalue) == invalue then
-- With certain output units that sometimes give poor results
-- with default rounding, use more precision when the input
-- value is equal to an integer. An example of a poor result
-- is when input 50 gives a smaller output than input 49.5.
-- Experiment shows this helps, but it does not eliminate all
-- surprises because it is not clear whether "50" should be
-- interpreted as "from 45 to 55" or "from 49.5 to 50.5".
adjust = -log10(in_current.scale)
elseif subunit_more_precision then
-- Conversion like "{{convert|6|ft|1|in|cm}}" (where subunit is "in")
-- has a non-standard adjust value, to give more output precision.
adjust = log10(out_current.scale) + 2
else
adjust = log10(abs(invalue / outvalue))
end
adjust = adjust + log10(2)
-- Ensure that the output has at least two significant figures.
minprec = 1 - floor(log10(outvalue) + fudge)
end
if extra then
adjust = extra.adjust or adjust
minprec = extra.minprec or minprec
end
return record_default_precision(parms, out_current, math.max(floor(prec + adjust), minprec))
end
local function convert(parms, invalue, info, in_current, out_current)
-- Convert given input value from one unit to another.
-- Return output_value (a number) if a simple convert, or
-- return f, t where
-- f = true, t = table of information with results, or
-- f = false, t = error message table.
local inscale = in_current.scale
local outscale = out_current.scale
if not in_current.iscomplex and not out_current.iscomplex then
return invalue * (inscale / outscale) -- minimize overhead for most common case
end
if in_current.invert or out_current.invert then
-- Inverted units, such as inverse length, inverse time, or
-- fuel efficiency. Built-in units do not have invert set.
if (in_current.invert or 1) * (out_current.invert or 1) < 0 then
return 1 / (invalue * inscale * outscale)
end
return invalue * (inscale / outscale)
elseif in_current.offset then
-- Temperature (there are no built-ins for this type of unit).
if info.is_change then
return invalue * (inscale / outscale)
end
return (invalue - in_current.offset) * (inscale / outscale) + out_current.offset
else
-- Built-in unit.
local in_builtin = in_current.builtin
local out_builtin = out_current.builtin
if in_builtin and out_builtin then
if in_builtin == out_builtin then
return invalue
end
-- There are no cases (yet) where need to convert from one
-- built-in unit to another, so this should never occur.
return false, { 'cvt_bug_convert' }
end
if in_builtin == 'mach' or out_builtin == 'mach' then
-- Should check that only one altitude is given but am planning to remove
-- in_current.altitude (which can only occur when Mach is the input unit),
-- and out_current.altitude cannot occur.
local alt = parms.altitude_ft or in_current.altitude
if not alt and parms.altitude_m then
alt = parms.altitude_m / 0.3048 -- 1 ft = 0.3048 m
end
local spd = speed_of_sound(alt)
if in_builtin == 'mach' then
inscale = spd
return invalue * (inscale / outscale)
end
outscale = spd
local adjust = 0.1 / inscale
return true, {
outvalue = invalue * (inscale / outscale),
adjust = log10(adjust) + log10(2),
}
elseif in_builtin == 'hand' then
-- 1 hand = 4 inches; 1.2 hands = 6 inches.
-- Decimals of a hand are only defined for the first digit, and
-- the first fractional digit should be a number of inches (1, 2 or 3).
-- However, this code interprets the entire fractional part as the number
-- of inches / 10 (so 1.75 inches would be 0.175 hands).
-- A value like 12.3 hands is exactly 12*4 + 3 inches; base default precision on that.
local integer, fracpart = math.modf(invalue)
local inch_value = 4 * integer + 10 * fracpart -- equivalent number of inches
local factor = inscale / outscale
if factor == 4 then
-- Am converting to inches: show exact result, and use "inches" not "in" by default.
if parms.abbr_org == nil then
out_current.usename = true
end
local show = format('%g', abs(inch_value)) -- show and clean are unsigned
if not show:find('e', 1, true) then
return true, {
invalue = inch_value,
outvalue = inch_value,
clean = show,
show = show,
}
end
end
local outvalue = (integer + 2.5 * fracpart) * factor
local fracstr = info.clean:match('%.(.*)') or ''
local fmt
if fracstr == '' then
fmt = '%.0f'
else
fmt = '%.' .. format('%d', #fracstr - 1) .. 'f'
end
return true, {
invalue = inch_value,
clean = format(fmt, inch_value),
outvalue = outvalue,
minprec = 0,
}
end
end
return false, { 'cvt_bug_convert' } -- should never occur
end
local function user_style(parms, i)
-- Return text for a user-specified style for a table cell, or '' if none,
-- given i = 1 (input style) or 2 (output style).
local style = parms[(i == 1) and 'stylein' or 'styleout']
if style then
style = style:gsub('"', '')
if style ~= '' then
if style:sub(-1) ~= ';' then
style = style .. ';'
end
return style
end
end
return ''
end
local function make_table_or_sort(parms, invalue, info, in_current, scaled_top)
-- Set options to handle output for a table or a sort key, or both.
-- The text sort key is based on the value resulting from converting
-- the input to a fake base unit with scale = 1, and other properties
-- required for a conversion derived from the input unit.
-- For other modules, return the sort key in a hidden span element, and
-- the scaled value used to generate the sort key.
-- If scaled_top is set, it is the scaled value of the numerator of a per unit
-- to be combined with this unit (the denominator) to make the sort key.
-- Scaling only works with units that convert with a factor (not temperature).
local sortkey, scaled_value
if parms.opt_sortable_on then
local base = { -- a fake unit with enough fields for a valid convert
scale = 1,
invert = in_current.invert and 1,
iscomplex = in_current.iscomplex,
offset = in_current.offset and 0,
}
local outvalue, extra = convert(parms, invalue, info, in_current, base)
if extra then
outvalue = extra.outvalue
end
if in_current.istemperature then
-- Have converted to kelvin; assume numbers close to zero have a
-- rounding error and should be zero.
if abs(outvalue) < 1e-12 then
outvalue = 0
end
end
if scaled_top and outvalue ~= 0 then
outvalue = scaled_top / outvalue
end
scaled_value = outvalue
if not valid_number(outvalue) then
if outvalue < 0 then
sortkey = '1000000000000000000'
else
sortkey = '9000000000000000000'
end
elseif outvalue == 0 then
sortkey = '5000000000000000000'
else
local mag = floor(log10(abs(outvalue)) + 1e-14)
local prefix
if outvalue > 0 then
prefix = 7000 + mag
else
prefix = 2999 - mag
outvalue = outvalue + 10^(mag+1)
end
sortkey = format('%d', prefix) .. format('%015.0f', floor(outvalue * 10^(14-mag)))
end
end
local sortspan
if sortkey and not parms.table_align then
sortspan = parms.opt_sortable_debug and
'<span data-sort-value="' .. sortkey .. '♠"><span style="border:1px solid">' .. sortkey .. '♠</span></span>' or
'<span data-sort-value="' .. sortkey .. '♠"></span>'
parms.join_before = sortspan
end
if parms.table_align then
local sort
if sortkey then
sort = ' data-sort-value="' .. sortkey .. '"'
if parms.opt_sortable_debug then
parms.join_before = '<span style="border:1px solid">' .. sortkey .. '</span>'
end
else
sort = ''
end
local style = 'style="text-align:' .. parms.table_align .. ';'
local joins = {}
for i = 1, 2 do
joins[i] = (i == 1 and '' or '\n|') .. style .. user_style(parms, i) .. '"' .. sort .. '|'
end
parms.table_joins = joins
end
return sortspan, scaled_value
end
local cvt_to_hand
local function cvtround(parms, info, in_current, out_current)
-- Return true, t where t is a table with the conversion results; fields:
-- show = rounded, formatted string with the result of converting value in info,
-- using the rounding specified in parms.
-- singular = true if result (after rounding and ignoring any negative sign)
-- is "1", or like "1.00", or is a fraction with value < 1;
-- (and more fields shown below, and a calculated 'absvalue' field).
-- or return false, t where t is an error message table.
-- Input info.clean uses en digits (it has been translated, if necessary).
-- Output show uses en or non-en digits as appropriate, or can be spelled.
if out_current.builtin == 'hand' then
return cvt_to_hand(parms, info, in_current, out_current)
end
local invalue = in_current.builtin == 'hand' and info.altvalue or info.value
local outvalue, extra = convert(parms, invalue, info, in_current, out_current)
if parms.need_table_or_sort then
parms.need_table_or_sort = nil -- process using first input value only
make_table_or_sort(parms, invalue, info, in_current)
end
if extra then
if not outvalue then return false, extra end
invalue = extra.invalue or invalue
outvalue = extra.outvalue
end
if not valid_number(outvalue) then
return false, { 'cvt_invalid_num' }
end
local isnegative
if outvalue < 0 then
isnegative = true
outvalue = -outvalue
end
local precision, show, exponent
local denominator = out_current.frac
if denominator then
show = fraction_table(outvalue, denominator)
else
precision = parms.precision
if not precision then
if parms.sigfig then
show, exponent = make_sigfig(outvalue, parms.sigfig)
elseif parms.opt_round then
local n = parms.opt_round
if n == 0.5 then
local integer, fracpart = math.modf(floor(2 * outvalue + 0.5) / 2)
if fracpart == 0 then
show = format('%.0f', integer)
else
show = format('%.1f', integer + fracpart)
end
else
show = format('%.0f', floor((outvalue / n) + 0.5) * n)
end
elseif in_current.builtin == 'mach' then
local sigfig = info.clean:gsub('^[0.]+', ''):gsub('%.', ''):len() + 1
show, exponent = make_sigfig(outvalue, sigfig)
else
local inclean = info.clean
if extra then
inclean = extra.clean or inclean
show = extra.show
end
if not show then
precision = default_precision(parms, invalue, inclean, info.denominator, outvalue, in_current, out_current, extra)
end
end
end
end
if precision then
if precision >= 0 then
local fudge
if precision <= 8 then
-- Add a fudge to handle common cases of bad rounding due to inability
-- to precisely represent some values. This makes the following work:
-- {{convert|-100.1|C|K}} and {{convert|5555000|um|m|2}}.
-- Old template uses #expr round, which invokes PHP round().
-- LATER: Investigate how PHP round() works.
fudge = 2e-14
else
fudge = 0
end
local fmt = '%.' .. format('%d', precision) .. 'f'
local success
success, show = pcall(format, fmt, outvalue + fudge)
if not success then
return false, { 'cvt_big_prec', tostring(precision) }
end
else
precision = -precision -- #digits to zero (in addition to any digits after dot)
local shift = 10 ^ precision
show = format('%.0f', outvalue/shift)
if show ~= '0' then
exponent = #show + precision
end
end
end
local t = format_number(parms, show, exponent, isnegative)
if type(show) == 'string' then
-- Set singular using match because on some systems 0.99999999999999999 is 1.0.
if exponent then
t.singular = (exponent == 1 and show:match('^10*$'))
else
t.singular = (show == '1' or show:match('^1%.0*$'))
end
else
t.fraction_table = show
t.singular = (outvalue <= 1) -- cannot have 'fraction == 1', but if it were possible it would be singular
end
t.raw_absvalue = outvalue -- absolute value before rounding
return true, setmetatable(t, {
__index = function (self, key)
if key == 'absvalue' then
-- Calculate absolute value after rounding, if needed.
local clean, exponent = rawget(self, 'clean'), rawget(self, 'exponent')
local value = tonumber(clean) -- absolute value (any negative sign has been ignored)
if exponent then
value = value * 10^exponent
end
rawset(self, key, value)
return value
end
end })
end
function cvt_to_hand(parms, info, in_current, out_current)
-- Convert input to hands, inches.
-- Return true, t where t is a table with the conversion results;
-- or return false, t where t is an error message table.
if parms.abbr_org == nil then
out_current.usename = true -- default is to show name not symbol
end
local precision = parms.precision
local frac = out_current.frac
if not frac and precision and precision > 1 then
frac = (precision == 2) and 2 or 4
end
local out_next = out_current.out_next
if out_next then
-- Use magic knowledge to determine whether the next unit is inches without requiring i18n.
-- The following ensures that when the output combination "hand in" is used, the inches
-- value is rounded to match the hands value. Also, displaying say "61½" instead of 61.5
-- is better as 61.5 implies the value is not 61.4.
if out_next.exception == 'subunit_more_precision' then
out_next.frac = frac
end
end
-- Convert to inches; calculate hands from that.
local dummy_unit_table = { scale = out_current.scale / 4, frac = frac }
local success, outinfo = cvtround(parms, info, in_current, dummy_unit_table)
if not success then return false, outinfo end
local tfrac = outinfo.fraction_table
local inches = outinfo.raw_absvalue
if tfrac then
inches = floor(inches) -- integer part only; fraction added later
else
inches = floor(inches + 0.5) -- a hands measurement never shows decimals of an inch
end
local hands, inches = divide(inches, 4)
outinfo.absvalue = hands + inches/4 -- supposed to be the absolute rounded value, but this is close enough
local inchstr = tostring(inches) -- '0', '1', '2' or '3'
if precision and precision <= 0 then -- using negative or 0 for precision rounds to nearest hand
hands = floor(outinfo.raw_absvalue/4 + 0.5)
inchstr = ''
elseif tfrac then
-- Always show an integer before fraction (like "15.0½") because "15½" means 15-and-a-half hands.
inchstr = numdot .. format_fraction(parms, 'out', false, inchstr, tfrac.numstr, tfrac.denstr)
else
inchstr = numdot .. from_en(inchstr)
end
outinfo.show = outinfo.sign .. with_separator(parms, format('%.0f', hands)) .. inchstr
return true, outinfo
end
local function evaluate_condition(value, condition)
-- Return true or false from applying a conditional expression to value,
-- or throw an error if invalid.
-- A very limited set of expressions is supported:
-- v < 9
-- v * 9 < 9
-- where
-- 'v' is replaced with value
-- 9 is any number (as defined by Lua tonumber)
-- only en digits are accepted
-- '<' can also be '<=' or '>' or '>='
-- In addition, the following form is supported:
-- LHS and RHS
-- where
-- LHS, RHS = any of above expressions.
local function compare(value, text)
local arithop, factor, compop, limit = text:match('^%s*v%s*([*]?)(.-)([<>]=?)(.*)$')
if arithop == nil then
error('Invalid default expression', 0)
elseif arithop == '*' then
factor = tonumber(factor)
if factor == nil then
error('Invalid default expression', 0)
end
value = value * factor
end
limit = tonumber(limit)
if limit == nil then
error('Invalid default expression', 0)
end
if compop == '<' then
return value < limit
elseif compop == '<=' then
return value <= limit
elseif compop == '>' then
return value > limit
elseif compop == '>=' then
return value >= limit
end
error('Invalid default expression', 0) -- should not occur
end
local lhs, rhs = condition:match('^(.-%W)and(%W.*)')
if lhs == nil then
return compare(value, condition)
end
return compare(value, lhs) and compare(value, rhs)
end
local function get_default(value, unit_table)
-- Return true, s where s = name of unit's default output unit,
-- or return false, t where t is an error message table.
-- Some units have a default that depends on the input value
-- (the first value if a range of values is used).
-- If '!' is in the default, the first bang-delimited field is an
-- expression that uses 'v' to represent the input value.
-- Example: 'v < 120 ! small ! big ! suffix' (suffix is optional)
-- evaluates 'v < 120' as a boolean with result
-- 'smallsuffix' if (value < 120), or 'bigsuffix' otherwise.
-- Input must use en digits and '.' decimal mark.
local default = data_code.default_exceptions[unit_table.defkey or unit_table.symbol] or unit_table.default
if not default then
local per = unit_table.per
if per then
local function a_default(v, u)
local success, ucode = get_default(v, u)
if not success then
return '?' -- an unlikely error has occurred; will cause lookup of default to fail
end
-- Attempt to use only the first unit if a combination or output multiple.
-- This is not bulletproof but should work for most cases.
-- Where it does not work, the convert will need to specify the wanted output unit.
local t = all_units[ucode]
if t then
local combo = t.combination
if combo then
-- For a multiple like ftin, the "first" unit (ft) is last in the combination.
local i = t.multiple and table_len(combo) or 1
ucode = combo[i]
end
else
-- Try for an automatically generated combination.
local item = ucode:match('^(.-)%+') or ucode:match('^(%S+)%s')
if all_units[item] then
return item
end
end
return ucode
end
local unit1, unit2 = per[1], per[2]
local def1 = (unit1 and a_default(value, unit1) or unit_table.vprefix or '')
local def2 = a_default(1, unit2) -- 1 because per unit of denominator
return true, def1 .. '/' .. def2
end
return false, { 'cvt_no_default', unit_table.symbol }
end
if default:find('!', 1, true) == nil then
return true, default
end
local t = split(default, '!')
if #t == 3 or #t == 4 then
local success, result = pcall(evaluate_condition, value, t[1])
if success then
default = result and t[2] or t[3]
if #t == 4 then
default = default .. t[4]
end
return true, default
end
end
return false, { 'cvt_bad_default', unit_table.symbol }
end
local linked_pages -- to record linked pages so will not link to the same page more than once
local function unlink(unit_table)
-- Forget that the given unit has previously been linked (if it has).
-- That is needed when processing a range of inputs or outputs when an id
-- for the first range value may have been evaluated, but only an id for
-- the last value is displayed, and that id may need to be linked.
linked_pages[unit_table.unitcode or unit_table] = nil
end
local function make_link(link, id, unit_table)
-- Return wikilink "[[link|id]]", possibly abbreviated as in examples:
-- [[Mile|mile]] --> [[mile]]
-- [[Mile|miles]] --> [[mile]]s
-- However, just id is returned if:
-- * no link given (so caller does not need to check if a link was defined); or
-- * link has previously been used during the current convert (to avoid overlinking).
local link_key
if unit_table then
link_key = unit_table.unitcode or unit_table
else
link_key = link
end
if not link or link == '' or linked_pages[link_key] then
return id
end
linked_pages[link_key] = true
-- Following only works for language en, but it should be safe on other wikis,
-- and overhead of doing it generally does not seem worthwhile.
local l = link:sub(1, 1):lower() .. link:sub(2)
if link == id or l == id then
return '[[' .. id .. ']]'
elseif link .. 's' == id or l .. 's' == id then
return '[[' .. id:sub(1, -2) .. ']]s'
else
return '[[' .. link .. '|' .. id .. ']]'
end
end
local function variable_name(clean, unit_table, exp_multiplier, key_id)
-- A unit name may depend on the value in some languages.
-- Parameter clean is the unsigned value in en digits, as a string.
-- It may represent a number ("1.0") or a fraction ("1+2/3").
-- In varname, fields are separated with "!" and are not empty.
-- A field for a unit using an SI prefix has the prefix name inserted,
-- replacing '#' if found, or before the field otherwise.
if clean:match('[./]') or clean:find('⁄', 1, true) then -- float or fraction
if exp_multiplier then
clean = exp_multiplier -- force selection of name for a large integer
else
clean = 34.5 -- force selection of name for a float value
end
else
clean = tonumber(clean) * (exp_multiplier or 1)
end
local name1, vname
if key_id == 'pername' and unit_table.pername then
vname = unit_table.pername
elseif unit_table.varname then
local splitvname = split(unit_table.varname, '!')
name1 = unit_table.name1
vname = mw.language.getContentLanguage():convertPlural(clean, name1, unpack(splitvname))
else
return clean == 1 and unit_table.name1 or unit_table.name2
end
if vname == name1 then
-- SI prefix (if any) has been inserted by unit_prefixed_mt.
else
local si_name = rawget(unit_table, 'si_name') or ''
local pos = vname:find('#', 1, true)
if pos then
vname = vname:sub(1, pos - 1) .. si_name .. vname:sub(pos + 1)
else
vname = si_name .. vname
end
end
return vname
end
local function linked_id(parms, unit_table, key_id, want_link, clean, exp_multiplier)
-- Return final unit id (symbol or name), optionally with a wikilink,
-- and update unit_table.sep if required.
-- key_id is one of: 'symbol', 'sym_us', 'name1', 'name1_us', 'name2', 'name2_us', 'pername'.
local abbr_on = (key_id == 'symbol' or key_id == 'sym_us')
if abbr_on and want_link then
local symlink = rawget(unit_table, 'symlink')
if symlink then
return symlink -- for exceptions that have the linked symbol built-in
end
end
local multiplier = rawget(unit_table, 'multiplier')
local per = unit_table.per
if per then
local paren1, paren2 = '', '' -- possible parentheses around bottom unit
local unit1 = per[1] -- top unit_table, or nil
local unit2 = per[2] -- bottom unit_table
if abbr_on then
if not unit1 then
unit_table.sep = '' -- no separator in "$2/acre"
end
if not want_link then
local symbol = unit_table.symbol_raw
if symbol then
return symbol -- for exceptions that have the symbol built-in
end
end
if (unit2.symbol):find('⋅', 1, true) then
paren1, paren2 = '(', ')'
end
end
local key_id2 -- unit2 is always singular
if key_id == 'name2' then
key_id2 = 'name1'
elseif key_id == 'name2_us' then
key_id2 = 'name1_us'
else
key_id2 = key_id
end
if key_id2 == 'name1' or key_id2 == 'name1_us' then
key_id2 = unit2.pername and 'pername' or key_id2 -- ukwiki has some units with a different name in "per unitname"
end
local result
if abbr_on then
result = '/'
elseif omitsep then
result = per_word
elseif unit1 then
result = ' ' .. per_word .. ' '
else
result = per_word .. ' '
end
if want_link and unit_table.link then
if varname and not abbr_on then
result = (unit1 and variable_name(clean, unit1, exp_multiplier) or '') .. result .. variable_name('1', unit2, exp_multiplier, key_id2)
else
result = (unit1 and linked_id(parms, unit1, key_id, false, clean) or '') .. result .. linked_id(parms, unit2, key_id2, false, '1')
end
if omit_separator(result) then
unit_table.sep = ''
end
return make_link(unit_table.link, result, unit_table)
end
if unit1 then
result = linked_id(parms, unit1, key_id, want_link, clean) .. result
if unit1.sep then
unit_table.sep = unit1.sep
end
elseif omitsep then
unit_table.sep = ''
end
return result .. paren1 .. linked_id(parms, unit2, key_id2, want_link, '1') .. paren2
end
if multiplier then
-- A multiplier (like "100" in "100km") forces the unit to be plural.
multiplier = from_en(multiplier)
if not omitsep then
multiplier = multiplier .. (abbr_on and ' ' or ' ')
end
if not abbr_on then
if key_id == 'name1' then
key_id = 'name2'
elseif key_id == 'name1_us' then
key_id = 'name2_us'
end
end
else
multiplier = ''
end
local id = unit_table.fixed_name or ((varname and not abbr_on) and variable_name(clean, unit_table, exp_multiplier, key_id) or unit_table[key_id])
if omit_separator(id) then
unit_table.sep = ''
end
if want_link then
local link = data_code.link_exceptions[unit_table.linkey or unit_table.symbol] or unit_table.link
if link then
local before = ''
local i = unit_table.customary
if i == 1 and parms.opt_sp_us then
i = 2 -- show "U.S." not "US"
end
if i == 3 and abbr_on then
i = 4 -- abbreviate "imperial" to "imp"
end
local customary = text_code.customary_units[i]
if customary then
-- LATER: This works for language en only, but it's esoteric so ignore for now.
local pertext
if id:sub(1, 1) == '/' then
-- Want unit "/USgal" to display as "/U.S. gal", not "U.S. /gal".
pertext = '/'
id = id:sub(2)
elseif id:sub(1, 4) == 'per ' then
-- Similarly want "per U.S. gallon", not "U.S. per gallon" (but in practice this is unlikely to be used).
pertext = 'per '
id = id:sub(5)
else
pertext = ''
end
-- Omit any "US"/"U.S."/"imp"/"imperial" from start of id since that will be inserted.
local removes = (i < 3) and { 'US ', 'US ', 'U.S. ', 'U.S. ' } or { 'imp ', 'imp ', 'imperial ' }
for _, prefix in ipairs(removes) do
local plen = #prefix
if id:sub(1, plen) == prefix then
id = id:sub(plen + 1)
break
end
end
before = pertext .. make_link(customary.link, customary[1]) .. ' '
end
id = before .. make_link(link, id, unit_table)
end
end
return multiplier .. id
end
local function make_id(parms, which, unit_table)
-- Return id, f where
-- id = unit name or symbol, possibly modified
-- f = true if id is a name, or false if id is a symbol
-- using the value for index 'which', and for 'in' or 'out' (unit_table.inout).
-- Result is '' if no symbol/name is to be used.
-- In addition, set unit_table.sep = ' ' or ' ' or ''
-- (the separator that caller will normally insert before the id).
if parms.opt_values then
unit_table.sep = ''
return ''
end
local inout = unit_table.inout
local info = unit_table.valinfo[which]
local lk = parms.lk
local want_link = (lk == 'on' or lk == inout)
local singular = info.singular
local want_name
local exp_multiplier
if unit_table.usename then
want_name = true
else
if parms.abbr_org == nil then
if parms.wantname then
want_name = true
end
if unit_table.usesymbol then
want_name = false
end
end
if want_name == nil then
local abbr = parms.abbr
if abbr == 'on' or abbr == inout or (abbr == 'mos' and inout == 'out') then
want_name = false
else
want_name = true
end
end
end
local key
if want_name then
if lk == nil and unit_table.builtin == 'hand' then
want_link = true
end
if parms.opt_use_nbsp then
unit_table.sep = ' '
else
unit_table.sep = ' '
end
if parms.opt_singular then
local value
if inout == 'in' then
value = info.value
else
value = info.absvalue
end
if value then -- some unusual units do not always set value field
value = abs(value)
singular = (0 < value and value < 1.0001)
end
end
if unit_table.engscale then
-- engscale: so "|1|e3kg" gives "1 thousand kilograms" (plural)
singular = false
exp_multiplier = 10^unit_table.engscale.exponent -- '1 gram' and '1 thousand grams', for example, may use different names for the unit in some languages
end
key = (parms.opt_adjectival or singular) and 'name1' or 'name2'
if parms.opt_sp_us then
key = key .. '_us'
end
else
if unit_table.builtin == 'hand' then
if parms.opt_hand_hh then
unit_table.symbol = 'hh' -- LATER: might want i18n applied to this
end
end
unit_table.sep = ' '
key = parms.opt_sp_us and 'sym_us' or 'symbol'
end
return linked_id(parms, unit_table, key, want_link, info.clean, exp_multiplier), want_name
end
local function decorate_value(parms, unit_table, which, enable_number_word)
-- If needed, update unit_table so values will be shown with extra information.
-- For consistency with the old template (but different from fmtpower),
-- the style to display powers of 10 includes "display:none" to allow some
-- browsers to copy, for example, "10³" as "10^3", rather than as "103".
-- The engscale table may have entries such as either of the following:
-- ["3"] = { "thousand", exponent = 3 },
-- ["3"] = { name1 = "A", varname = "B!C!D", exponent = 3 },
-- The first option always uses "thousand" as the exponent name.
-- The second option uses one of A, B, C, D as the exponent name, depending on the value.
local info
local engscale = unit_table.engscale
local prefix = unit_table.vprefix
if engscale or prefix then
info = unit_table.valinfo[which]
if info.decorated then
return -- do not redecorate if repeating convert
end
info.decorated = true
if engscale then
-- Range |10|-|20|e3km| gives '10×10³–20×10³' or '10–20 thousand'.
local inout = unit_table.inout
local abbr = parms.abbr
if (abbr == 'on' or abbr == inout) and not (unit_table.this_number_word or parms.number_word) then
info.show = info.show ..
'<span style="margin-left:0.2em">×<span style="margin-left:0.1em">' ..
from_en('10') ..
'</span></span><s style="display:none">^</s><sup>' ..
from_en(tostring(engscale.exponent)) .. '</sup>'
elseif enable_number_word then
local number_id
local name = engscale.varname and variable_name(info.clean, engscale) or engscale[1]
if parms.lk == 'on' or parms.lk == inout then
number_id = make_link(engscale.link, name)
else
number_id = name
end
-- WP:NUMERAL recommends " " in values like "12 million".
info.show = info.show .. (parms.opt_adjectival and '-' or ' ') .. number_id
end
end
if prefix then
info.show = prefix .. info.show
end
end
end
local function process_input(parms, in_current)
-- Processing required once per conversion.
-- Return block of text to represent input (value/unit).
if parms.opt_output_only or parms.opt_output_number_only or parms.opt_output_unit_only then
parms.joins = { '', '' }
return ''
end
local first_unit
local composite = in_current.composite -- nil or table of units
if composite then
first_unit = composite[1]
else
first_unit = in_current
end
local id1, want_name = make_id(parms, 1, first_unit)
local sep = first_unit.sep -- separator between value and unit, set by make_id
local preunit = parms.preunit1
if preunit then
sep = '' -- any separator is included in preunit
else
preunit = ''
end
if parms.opt_input_unit_only then
parms.joins = { '', '' }
if composite then
local parts = { id1 }
for i, unit in ipairs(composite) do
if i > 1 then
table.insert(parts, (make_id(parms, 1, unit)))
end
end
id1 = table.concat(parts, ' ')
end
if want_name and parms.opt_adjectival then
return preunit .. hyphenated(id1)
end
return preunit .. id1
end
if parms.opt_also_symbol and not composite and not parms.opt_flip then
local join1 = parms.joins[1]
if join1 == ' (' or join1 == ' [' then
parms.joins = { ' [' .. first_unit[parms.opt_sp_us and 'sym_us' or 'symbol'] .. ']' .. join1 , parms.joins[2] }
end
end
if in_current.builtin == 'mach' and first_unit.sep ~= '' then -- '' means omitsep with non-enwiki name
local prefix = id1 .. ' '
local range = parms.range
local valinfo = first_unit.valinfo
local result = prefix .. valinfo[1].show
if range then
-- For simplicity and because more not needed, handle one range item only.
local prefix2 = make_id(parms, 2, first_unit) .. ' '
result = range_text(range[1], want_name, parms, result, prefix2 .. valinfo[2].show, 'in', {spaced=true})
end
return preunit .. result
end
if composite then
-- Simplify: assume there is no range, and no decoration.
local mid = (not parms.opt_flip) and parms.mid or ''
local sep1 = ' '
local sep2 = ' '
if parms.opt_adjectival and want_name then
sep1 = '-'
sep2 = '-'
end
if omitsep and sep == '' then
-- Testing the id of the most significant unit should be sufficient.
sep1 = ''
sep2 = ''
end
local parts = { first_unit.valinfo[1].show .. sep1 .. id1 }
for i, unit in ipairs(composite) do
if i > 1 then
table.insert(parts, unit.valinfo[1].show .. sep1 .. (make_id(parms, 1, unit)))
end
end
return table.concat(parts, sep2) .. mid
end
local add_unit = (parms.abbr == 'mos') or
parms[parms.opt_flip and 'out_range_x' or 'in_range_x'] or
(not want_name and parms.abbr_range_x)
local range = parms.range
if range and not add_unit then
unlink(first_unit)
end
local id = range and make_id(parms, range.n + 1, first_unit) or id1
local extra, was_hyphenated = hyphenated_maybe(parms, want_name, sep, id, 'in')
if was_hyphenated then
add_unit = false
end
local result
local valinfo = first_unit.valinfo
if range then
for i = 0, range.n do
local enable_number_word
if i == range.n then
add_unit = false
enable_number_word = true
end
decorate_value(parms, first_unit, i+1, enable_number_word)
local show = valinfo[i+1].show
if add_unit then
show = show .. first_unit.sep .. (i == 0 and id1 or make_id(parms, i+1, first_unit))
end
if i == 0 then
result = show
else
result = range_text(range[i], want_name, parms, result, show, 'in')
end
end
else
decorate_value(parms, first_unit, 1, true)
result = valinfo[1].show
end
return result .. preunit .. extra
end
local function process_one_output(parms, out_current)
-- Processing required for each output unit.
-- Return block of text to represent output (value/unit).
local inout = out_current.inout -- normally 'out' but can be 'in' for order=out
local id1, want_name = make_id(parms, 1, out_current)
local sep = out_current.sep -- set by make_id
local preunit = parms.preunit2
if preunit then
sep = '' -- any separator is included in preunit
else
preunit = ''
end
if parms.opt_output_unit_only then
if want_name and parms.opt_adjectival then
return preunit .. hyphenated(id1)
end
return preunit .. id1
end
if out_current.builtin == 'mach' and out_current.sep ~= '' then -- '' means omitsep with non-enwiki name
local prefix = id1 .. ' '
local range = parms.range
local valinfo = out_current.valinfo
local result = prefix .. valinfo[1].show
if range then
-- For simplicity and because more not needed, handle one range item only.
result = range_text(range[1], want_name, parms, result, prefix .. valinfo[2].show, inout, {spaced=true})
end
return preunit .. result
end
local add_unit = (parms[parms.opt_flip and 'in_range_x' or 'out_range_x'] or
(not want_name and parms.abbr_range_x)) and
not parms.opt_output_number_only
local range = parms.range
if range and not add_unit then
unlink(out_current)
end
local id = range and make_id(parms, range.n + 1, out_current) or id1
local extra, was_hyphenated = hyphenated_maybe(parms, want_name, sep, id, inout)
if was_hyphenated then
add_unit = false
end
local result
local valinfo = out_current.valinfo
if range then
for i = 0, range.n do
local enable_number_word
if i == range.n then
add_unit = false
enable_number_word = true
end
decorate_value(parms, out_current, i+1, enable_number_word)
local show = valinfo[i+1].show
if add_unit then
show = show .. out_current.sep .. (i == 0 and id1 or make_id(parms, i+1, out_current))
end
if i == 0 then
result = show
else
result = range_text(range[i], want_name, parms, result, show, inout)
end
end
else
decorate_value(parms, out_current, 1, true)
result = valinfo[1].show
end
if parms.opt_output_number_only then
return result
end
return result .. preunit .. extra
end
local function make_output_single(parms, in_unit_table, out_unit_table)
-- Return true, item where item = wikitext of the conversion result
-- for a single output (which is not a combination or a multiple);
-- or return false, t where t is an error message table.
if parms.opt_order_out and in_unit_table.unitcode == out_unit_table.unitcode then
out_unit_table.valinfo = in_unit_table.valinfo
else
out_unit_table.valinfo = collection()
for _, v in ipairs(in_unit_table.valinfo) do
local success, info = cvtround(parms, v, in_unit_table, out_unit_table)
if not success then return false, info end
out_unit_table.valinfo:add(info)
end
end
return true, process_one_output(parms, out_unit_table)
end
local function make_output_multiple(parms, in_unit_table, out_unit_table)
-- Return true, item where item = wikitext of the conversion result
-- for an output which is a multiple (like 'ftin');
-- or return false, t where t is an error message table.
local inout = out_unit_table.inout -- normally 'out' but can be 'in' for order=out
local multiple = out_unit_table.multiple -- table of scaling factors (will not be nil)
local combos = out_unit_table.combination -- table of unit tables (will not be nil)
local abbr = parms.abbr
local abbr_org = parms.abbr_org
local disp = parms.disp
local want_name = (abbr_org == nil and (disp == 'or' or disp == 'slash')) or
not (abbr == 'on' or abbr == inout or abbr == 'mos')
local want_link = (parms.lk == 'on' or parms.lk == inout)
local mid = parms.opt_flip and parms.mid or ''
local sep1 = ' '
local sep2 = ' '
if parms.opt_adjectival and want_name then
sep1 = '-'
sep2 = '-'
end
local do_spell = parms.opt_spell_out
parms.opt_spell_out = nil -- so the call to cvtround does not spell the value
local function make_result(info, isfirst)
local fmt, outvalue, sign
local results = {}
for i = 1, #combos do
local tfrac, thisvalue, strforce
local out_current = combos[i]
out_current.inout = inout
local scale = multiple[i]
if i == 1 then -- least significant unit ('in' from 'ftin')
local decimals
out_current.frac = out_unit_table.frac
local success, outinfo = cvtround(parms, info, in_unit_table, out_current)
if not success then return false, outinfo end
if isfirst then
out_unit_table.valinfo = { outinfo } -- in case output value of first least significant unit is needed
end
sign = outinfo.sign
tfrac = outinfo.fraction_table
if outinfo.is_scientific then
strforce = outinfo.show
decimals = ''
elseif tfrac then
decimals = ''
else
local show = outinfo.show -- number as a string in local language
local p1, p2 = show:find(numdot, 1, true)
decimals = p1 and show:sub(p2 + 1) or '' -- text after numdot, if any
end
fmt = '%.' .. ulen(decimals) .. 'f' -- to reproduce precision
if decimals == '' then
if tfrac then
outvalue = floor(outinfo.raw_absvalue) -- integer part only; fraction added later
else
outvalue = floor(outinfo.raw_absvalue + 0.5) -- keep all integer digits of least significant unit
end
else
outvalue = outinfo.absvalue
end
end
if scale then
outvalue, thisvalue = divide(outvalue, scale)
else
thisvalue = outvalue
end
local id
if want_name then
if varname then
local clean
if strforce or tfrac then
clean = '.1' -- dummy value to force name for floating point
else
clean = format(fmt, thisvalue)
end
id = variable_name(clean, out_current)
else
local key = 'name2'
if parms.opt_adjectival then
key = 'name1'
elseif tfrac then
if thisvalue == 0 then
key = 'name1'
end
elseif parms.opt_singular then
if 0 < thisvalue and thisvalue < 1.0001 then
key = 'name1'
end
else
if thisvalue == 1 then
key = 'name1'
end
end
id = out_current[key]
end
else
id = out_current['symbol']
end
if i == 1 and omit_separator(id) then
-- Testing the id of the least significant unit should be sufficient.
sep1 = ''
sep2 = ''
end
if want_link then
local link = out_current.link
if link then
id = make_link(link, id, out_current)
end
end
local strval
local spell_inout = (i == #combos or outvalue == 0) and inout or '' -- trick so the last value processed (first displayed) has uppercase, if requested
if strforce and outvalue == 0 then
sign = '' -- any sign is in strforce
strval = strforce -- show small values in scientific notation; will only use least significant unit
elseif tfrac then
local wholestr = (thisvalue > 0) and tostring(thisvalue) or nil
strval = format_fraction(parms, spell_inout, false, wholestr, tfrac.numstr, tfrac.denstr, do_spell)
else
strval = (thisvalue == 0) and from_en('0') or with_separator(parms, format(fmt, thisvalue))
if do_spell then
strval = spell_number(parms, spell_inout, strval) or strval
end
end
table.insert(results, strval .. sep1 .. id)
if outvalue == 0 then
break
end
fmt = '%.0f' -- only least significant unit can have a non-integral value
end
local reversed, count = {}, #results
for i = 1, count do
reversed[i] = results[count + 1 - i]
end
return true, sign .. table.concat(reversed, sep2)
end
local valinfo = in_unit_table.valinfo
local success, result = make_result(valinfo[1], true)
if not success then return false, result end
local range = parms.range
if range then
for i = 1, range.n do
local success, result2 = make_result(valinfo[i+1])
if not success then return false, result2 end
result = range_text(range[i], want_name, parms, result, result2, inout, {spaced=true})
end
end
return true, result .. mid
end
local function process(parms, in_unit_table, out_unit_table)
-- Return true, s, outunit where s = final wikitext result,
-- or return false, t where t is an error message table.
linked_pages = {}
local success, bad_output
local bad_input_mcode = in_unit_table.bad_mcode -- nil if input unit is a valid convert unit
local out_unit = parms.out_unit
if out_unit == nil or out_unit == '' or type(out_unit) == 'function' then
-- out_unit can be set to a function by adjustparameters in Module:Convert/wikidata.
if bad_input_mcode or parms.opt_input_unit_only then
bad_output = ''
else
local getdef = type(out_unit) == 'function' and out_unit or get_default
success, out_unit = getdef(in_unit_table.valinfo[1].value, in_unit_table)
parms.out_unit = out_unit
if not success then
bad_output = out_unit
end
end
end
if not bad_output and not out_unit_table then
success, out_unit_table = lookup(parms, out_unit, 'any_combination')
if success then
local mismatch = check_mismatch(in_unit_table, out_unit_table)
if mismatch then
bad_output = mismatch
end
else
bad_output = out_unit_table
end
end
local lhs, rhs
local flipped = parms.opt_flip and not bad_input_mcode
if bad_output then
rhs = (bad_output == '') and '' or message(parms, bad_output)
elseif parms.opt_input_unit_only then
rhs = ''
else
local combos -- nil (for 'ft' or 'ftin'), or table of unit tables (for 'm ft')
if not out_unit_table.multiple then -- nil/false ('ft' or 'm ft'), or table of factors ('ftin')
combos = out_unit_table.combination
end
local frac = parms.frac -- nil or denominator of fraction for output values
if frac then
-- Apply fraction to the unit (if only one), or to non-SI units (if a combination),
-- except that if a precision is also specified, the fraction only applies to
-- the hand unit; that allows the following result:
-- {{convert|156|cm|in hand|1|frac=2}} → 156 centimetres (61.4 in; 15.1½ hands)
-- However, the following is handled elsewhere as a special case:
-- {{convert|156|cm|hand in|1|frac=2}} → 156 centimetres (15.1½ hands; 61½ in)
if combos then
local precision = parms.precision
for _, unit in ipairs(combos) do
if unit.builtin == 'hand' or (not precision and not unit.prefixes) then
unit.frac = frac
end
end
else
out_unit_table.frac = frac
end
end
local outputs = {}
local imax = combos and #combos or 1 -- 1 (single unit) or number of unit tables
if imax == 1 then
parms.opt_order_out = nil -- only useful with an output combination
end
if not flipped and not parms.opt_order_out then
-- Process left side first so any duplicate links (from lk=on) are suppressed
-- on right. Example: {{convert|28|e9pc|e9ly|abbr=off|lk=on}}
lhs = process_input(parms, in_unit_table)
end
for i = 1, imax do
local success, item
local out_current = combos and combos[i] or out_unit_table
out_current.inout = 'out'
if i == 1 then
if imax > 1 and out_current.builtin == 'hand' then
out_current.out_next = combos[2] -- built-in hand can influence next unit in a combination
end
if parms.opt_order_out then
out_current.inout = 'in'
end
end
if out_current.multiple then
success, item = make_output_multiple(parms, in_unit_table, out_current)
else
success, item = make_output_single(parms, in_unit_table, out_current)
end
if not success then return false, item end
outputs[i] = item
end
if parms.opt_order_out then
lhs = outputs[1]
table.remove(outputs, 1)
end
local sep = parms.table_joins and parms.table_joins[2] or parms.join_between
rhs = table.concat(outputs, sep)
end
if flipped or not lhs then
local input = process_input(parms, in_unit_table)
if flipped then
lhs = rhs
rhs = input
else
lhs = input
end
end
if parms.join_before then
lhs = parms.join_before .. lhs
end
local wikitext
if bad_input_mcode then
if bad_input_mcode == '' then
wikitext = lhs
else
wikitext = lhs .. message(parms, bad_input_mcode)
end
elseif parms.table_joins then
wikitext = parms.table_joins[1] .. lhs .. parms.table_joins[2] .. rhs
else
wikitext = lhs .. parms.joins[1] .. rhs .. parms.joins[2]
end
if parms.warnings and not bad_input_mcode then
wikitext = wikitext .. parms.warnings
end
return true, get_styles(parms) .. wikitext, out_unit_table
end
local function _main_convert(confArgs, parmsArgs, frame)
-- Do convert, and if needed, do it again with higher default precision.
local parms = { frame = frame or mw.getCurrentFrame() } -- will hold template arguments, after translation
set_config(confArgs)
local success, result = get_parms(parms, parmsArgs)
if success then
if type(result) ~= 'table' then
return tostring(result)
end
local in_unit_table = result
local out_unit_table
for _ = 1, 2 do -- use counter so cannot get stuck repeating convert
success, result, out_unit_table = process(parms, in_unit_table, out_unit_table)
if success and parms.do_convert_again then
parms.do_convert_again = false
else
break
end
end
end
-- If input=x gives a problem, the result should be just the user input
-- (if x is a property like P123 it has been replaced with '').
-- An unknown input unit would display the input and an error message
-- with success == true at this point.
-- Also, can have success == false with a message that outputs an empty string.
if parms.input_text then
if success and not parms.have_problem then
return result
end
local cat
if parms.tracking then
-- Add a tracking category using the given text as the category sort key.
-- There is currently only one type of tracking, but in principle multiple
-- items could be tracked, using different sort keys for convenience.
cat = wanted_category('tracking', parms.tracking)
end
return parms.input_text .. (cat or '')
end
if parms.error_text then
if success and not parms.have_problem then
return result
end
return parms.error_text
end
return success and result or message(parms, result)
end
local function main_convert(frame)
return _main_convert(frame.args, frame:getParent().args, frame)
end
local function _unit(unitcode, options)
-- Helper function for Module:Val to look up a unit.
-- Parameter unitcode must be a string to identify the wanted unit.
-- Parameter options must be nil or a table with optional fields:
-- value = number (for sort key; default value is 1)
-- scaled_top = nil for a normal unit, or a number for a unit which is
-- the denominator of a per unit (for sort key)
-- si = { 'symbol', 'link' }
-- (a table with two strings) to make an SI unit
-- that will be used for the look up
-- link = true if result should be [[linked]]
-- sort = 'on' or 'debug' if result should include a sort key in a
-- span element ('debug' makes the key visible)
-- name = true for the name of the unit instead of the symbol
-- us = true for the US spelling of the unit, if any
-- Return nil if unitcode is not a non-empty string.
-- Otherwise return a table with fields:
-- text = requested symbol or name of unit, optionally linked
-- scaled_value = input value adjusted by unit scale; used for sort key
-- sortspan = span element with sort key like that provided by {{ntsh}},
-- calculated from the result of converting value
-- to a base unit with scale 1.
-- unknown = true if the unitcode was not known
unitcode = strip(unitcode)
if unitcode == nil or unitcode == '' then
return nil
end
set_config({})
linked_pages = {}
options = options or {}
local parms = {
abbr = options.name and 'off' or 'on',
lk = options.link and 'on' or nil,
opt_sp_us = options.us and true or nil,
opt_ignore_error = true,
opt_no_extra = true, -- do not add pages using this function to 'what links here' for Module:Convert/extra
opt_sortable_on = options.sort == 'on' or options.sort == 'debug',
opt_sortable_debug = options.sort == 'debug',
}
if options.si then
-- Make a dummy table of units (just one unit) for lookup to use.
-- This makes lookup recognize any SI prefix in the unitcode.
local symbol = options.si[1] or '?'
parms.unittable = { [symbol] = {
_name1 = symbol,
_name2 = symbol,
_symbol = symbol,
utype = symbol,
scale = symbol == 'g' and 0.001 or 1,
prefixes = 1,
default = symbol,
link = options.si[2],
}}
end
local success, unit_table = lookup(parms, unitcode, 'no_combination')
if not success then
unit_table = setmetatable({
symbol = unitcode, name2 = unitcode, utype = unitcode,
scale = 1, default = '', defkey = '', linkey = '' }, unit_mt)
end
local value = tonumber(options.value) or 1
local clean = tostring(abs(value))
local info = {
value = value,
altvalue = value,
singular = (clean == '1'),
clean = clean,
show = clean,
}
unit_table.inout = 'in'
unit_table.valinfo = { info }
local sortspan, scaled_value
if options.sort then
sortspan, scaled_value = make_table_or_sort(parms, value, info, unit_table, options.scaled_top)
end
return {
text = make_id(parms, 1, unit_table),
sortspan = sortspan,
scaled_value = scaled_value,
unknown = not success and true or nil,
}
end
return { convert = main_convert, _convert = _main_convert, _unit = _unit }
r4djqnuzbxaut805hk89ncew56hajfu
Module:Convert/data
828
34733
126092
2026-07-15T10:52:45Z
Fongcwele
16873
Created page with "-- Conversion data used by [[Module:Convert]] which uses mw.loadData() for -- read-only access to this module so that it is loaded only once per page. -- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki. -- -- These data tables follow: -- all_units all properties for a unit, including default output -- default_exceptions exceptions for default output ('kg' and 'g' have different defaults) -- link_exceptions exceptions for links..."
126092
Scribunto
text/plain
-- Conversion data used by [[Module:Convert]] which uses mw.loadData() for
-- read-only access to this module so that it is loaded only once per page.
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.
--
-- These data tables follow:
-- all_units all properties for a unit, including default output
-- default_exceptions exceptions for default output ('kg' and 'g' have different defaults)
-- link_exceptions exceptions for links ('kg' and 'g' have different links)
--
-- These tables are generated by a script which reads the wikitext of a page that
-- documents the required properties of each unit; see [[:en:Module:Convert/doc]].
---------------------------------------------------------------------------
-- Do not change the data in this table because it is created by running --
-- a script that reads the wikitext from a wiki page (see note above). --
---------------------------------------------------------------------------
local all_units = {
["Gy"] = {
_name1 = "gray",
_symbol = "Gy",
utype = "absorbed radiation dose",
scale = 1,
prefixes = 1,
default = "rad",
link = "Gray (unit)",
},
["rad"] = {
_name1 = "rad",
_symbol = "rad",
utype = "absorbed radiation dose",
scale = 0.01,
prefixes = 1,
default = "Gy",
link = "Rad (unit)",
},
["cm/s2"] = {
name1 = "centimetre per second squared",
name1_us = "centimeter per second squared",
name2 = "centimetres per second squared",
name2_us = "centimeters per second squared",
symbol = "cm/s<sup>2</sup>",
utype = "acceleration",
scale = 0.01,
default = "ft/s2",
link = "Gal (unit)",
},
["ft/s2"] = {
name1 = "foot per second squared",
name2 = "feet per second squared",
symbol = "ft/s<sup>2</sup>",
utype = "acceleration",
scale = 0.3048,
default = "m/s2",
},
["g0"] = {
name1 = "standard gravity",
name2 = "standard gravities",
symbol = "''g''<sub>0</sub>",
utype = "acceleration",
scale = 9.80665,
default = "m/s2",
},
["g-force"] = {
name2 = "''g''",
symbol = "''g''",
utype = "acceleration",
scale = 9.80665,
default = "m/s2",
link = "g-force",
},
["km/hs"] = {
name1 = "kilometre per hour per second",
name1_us = "kilometer per hour per second",
name2 = "kilometres per hour per second",
name2_us = "kilometers per hour per second",
symbol = "km/(h⋅s)",
utype = "acceleration",
scale = 0.27777777777777779,
default = "mph/s",
link = "Acceleration",
},
["km/s2"] = {
name1 = "kilometre per second squared",
name1_us = "kilometer per second squared",
name2 = "kilometres per second squared",
name2_us = "kilometers per second squared",
symbol = "km/s<sup>2</sup>",
utype = "acceleration",
scale = 1000,
default = "mph/s",
link = "Acceleration",
},
["m/s2"] = {
name1 = "metre per second squared",
name1_us = "meter per second squared",
name2 = "metres per second squared",
name2_us = "meters per second squared",
symbol = "m/s<sup>2</sup>",
utype = "acceleration",
scale = 1,
default = "ft/s2",
},
["mph/s"] = {
name1 = "mile per hour per second",
name2 = "miles per hour per second",
symbol = "mph/s",
utype = "acceleration",
scale = 0.44704,
default = "km/hs",
link = "Acceleration",
},
["km/h/s"] = {
target = "km/hs",
},
["standard gravity"] = {
target = "g0",
},
["1000sqft"] = {
name1 = "thousand square feet",
name2 = "thousand square feet",
symbol = "1000 sq ft",
utype = "area",
scale = 92.90304,
default = "m2",
link = "Square foot",
},
["a"] = {
_name1 = "are",
_symbol = "a",
utype = "area",
scale = 100,
prefixes = 1,
default = "sqft",
link = "Hectare#Are",
},
["acre"] = {
symbol = "acre",
usename = 1,
utype = "area",
scale = 4046.8564224,
default = "ha",
subdivs = { ["rood"] = { 4, default = "ha" }, ["sqperch"] = { 160, default = "ha" } },
},
["acre-sing"] = {
target = "acre",
},
["arpent"] = {
symbol = "arpent",
usename = 1,
utype = "area",
scale = 3418.89,
default = "ha",
},
["cda"] = {
name1 = "cuerda",
symbol = "cda",
utype = "area",
scale = 3930.395625,
default = "ha acre",
},
["daa"] = {
name1 = "decare",
symbol = "daa",
utype = "area",
scale = 1000,
default = "km2 sqmi",
},
["dunam"] = {
symbol = "dunam",
usename = 1,
utype = "area",
scale = 1000,
default = "km2 sqmi",
},
["dunum"] = {
symbol = "dunum",
usename = 1,
utype = "area",
scale = 1000,
default = "km2 sqmi",
link = "Dunam",
},
["ha"] = {
name1 = "hectare",
symbol = "ha",
utype = "area",
scale = 10000,
default = "acre",
},
["hectare"] = {
name1 = "hectare",
symbol = "ha",
usename = 1,
utype = "area",
scale = 10000,
default = "acre",
},
["Irish acre"] = {
name1 = "Irish acre",
symbol = "Irish acres",
utype = "area",
scale = 6555.2385024,
default = "ha",
link = "Acre (Irish)",
},
["m2"] = {
_name1 = "square metre",
_name1_us= "square meter",
_symbol = "m<sup>2</sup>",
prefix_position= 8,
utype = "area",
scale = 1,
prefixes = 2,
default = "sqft",
link = "Square metre",
},
["pondemaat"] = {
name1 = "pondemaat",
name2 = "pondemaat",
symbol = "pond",
utype = "area",
scale = 3674.363358816,
default = "m2",
link = ":nl:pondemaat",
},
["pyeong"] = {
name2 = "pyeong",
symbol = "pyeong",
usename = 1,
utype = "area",
scale = 3.3057851239669422,
default = "m2",
},
["rai"] = {
name2 = "rai",
symbol = "rai",
utype = "area",
scale = 1600,
default = "m2",
link = "Rai (unit)",
},
["rood"] = {
symbol = "rood",
usename = 1,
utype = "area",
scale = 1011.7141056,
default = "sqft m2",
subdivs = { ["sqperch"] = { 40, default = "m2" } },
link = "Rood (unit)",
},
["sqfoot"] = {
name1 = "square foot",
name2 = "square foot",
symbol = "sq ft",
utype = "area",
scale = 0.09290304,
default = "m2",
},
["sqft"] = {
name1 = "square foot",
name2 = "square feet",
symbol = "sq ft",
utype = "area",
scale = 0.09290304,
default = "m2",
},
["sqin"] = {
name1 = "square inch",
name2 = "square inches",
symbol = "sq in",
utype = "area",
scale = 0.00064516,
default = "cm2",
},
["sqmi"] = {
name1 = "square mile",
symbol = "sq mi",
utype = "area",
scale = 2589988.110336,
default = "km2",
},
["sqnmi"] = {
name1 = "square nautical mile",
symbol = "sq nmi",
utype = "area",
scale = 3429904,
default = "km2 sqmi",
link = "Nautical mile",
},
["sqperch"] = {
name2 = "perches",
symbol = "perch",
usename = 1,
utype = "area",
scale = 25.29285264,
default = "m2",
link = "Rod (unit)#Area and volume",
},
["sqverst"] = {
symbol = "square verst",
usename = 1,
utype = "area",
scale = 1138062.24,
default = "km2 sqmi",
link = "Verst",
},
["sqyd"] = {
name1 = "square yard",
symbol = "sq yd",
utype = "area",
scale = 0.83612736,
default = "m2",
},
["tsubo"] = {
name2 = "tsubo",
symbol = "tsubo",
usename = 1,
utype = "area",
scale = 3.3057851239669422,
default = "m2",
link = "Japanese units of measurement#Area",
},
["acres"] = {
target = "acre",
},
["are"] = {
target = "a",
},
["decare"] = {
target = "daa",
},
["foot2"] = {
target = "sqfoot",
},
["ft2"] = {
target = "sqft",
symbol = "ft<sup>2</sup>",
},
["in2"] = {
target = "sqin",
symbol = "in<sup>2</sup>",
},
["km²"] = {
target = "km2",
},
["mi2"] = {
target = "sqmi",
symbol = "mi<sup>2</sup>",
},
["million acre"] = {
target = "e6acre",
},
["million acres"] = {
target = "e6acre",
},
["million hectares"] = {
target = "e6ha",
},
["m²"] = {
target = "m2",
},
["nmi2"] = {
target = "sqnmi",
},
["pond"] = {
target = "pondemaat",
},
["sq arp"] = {
target = "arpent",
},
["sqkm"] = {
target = "km2",
},
["sqm"] = {
target = "m2",
},
["square verst"] = {
target = "sqverst",
},
["verst2"] = {
target = "sqverst",
},
["yd2"] = {
target = "sqyd",
symbol = "yd<sup>2</sup>",
},
["m2/ha"] = {
name1 = "square metre per hectare",
name1_us = "square meter per hectare",
name2 = "square metres per hectare",
name2_us = "square meters per hectare",
symbol = "m<sup>2</sup>/ha",
utype = "area per unit area",
scale = 0.0001,
default = "sqft/acre",
link = "Basal area",
},
["sqft/acre"] = {
name1 = "square foot per acre",
name2 = "square feet per acre",
symbol = "sq ft/acre",
utype = "area per unit area",
scale = 2.295684113865932e-5,
default = "m2/ha",
link = "Basal area",
},
["cent"] = {
name1 = "cent",
symbol = "¢",
utype = "cent",
scale = 1,
default = "cent",
link = "Cent (currency)",
},
["¢"] = {
target = "cent",
},
["A.h"] = {
name1 = "ampere hour",
symbol = "A⋅h",
utype = "charge",
scale = 3600,
default = "coulomb",
},
["coulomb"] = {
_name1 = "coulomb",
_symbol = "C",
utype = "charge",
scale = 1,
prefixes = 1,
default = "e",
link = "Coulomb",
},
["e"] = {
name1 = "elementary charge",
symbol = "''e''",
utype = "charge",
scale = 1.602176634e-19,
default = "coulomb",
},
["g-mol"] = {
name1 = "gram-mole",
symbol = "g‑mol",
utype = "chemical amount",
scale = 1,
default = "lbmol",
link = "Mole (unit)",
},
["gmol"] = {
name1 = "gram-mole",
symbol = "gmol",
utype = "chemical amount",
scale = 1,
default = "lbmol",
link = "Mole (unit)",
},
["kmol"] = {
name1 = "kilomole",
symbol = "kmol",
utype = "chemical amount",
scale = 1000,
default = "lbmol",
link = "Mole (unit)",
},
["lb-mol"] = {
name1 = "pound-mole",
symbol = "lb‑mol",
utype = "chemical amount",
scale = 453.59237,
default = "mol",
},
["lbmol"] = {
name1 = "pound-mole",
symbol = "lbmol",
utype = "chemical amount",
scale = 453.59237,
default = "mol",
},
["mol"] = {
name1 = "mole",
symbol = "mol",
utype = "chemical amount",
scale = 1,
default = "lbmol",
link = "Mole (unit)",
},
["kgCO2/L"] = {
name1 = "kilogram per litre",
name1_us = "kilogram per liter",
name2 = "kilograms per litre",
name2_us = "kilograms per liter",
symbol = "kg(CO<sub>2</sub>)/L",
utype = "co2 per unit volume",
scale = 1000,
default = "lbCO2/USgal",
link = "Exhaust gas",
},
["lbCO2/USgal"] = {
name1 = "pound per US gallon",
name2 = "pounds per US gallon",
symbol = "lbCO2/US gal",
utype = "co2 per unit volume",
scale = 119.82642731689663,
default = "kgCO2/L",
link = "Exhaust gas",
},
["oz/lb"] = {
per = { "oz", "lb" },
utype = "concentration",
default = "mg/kg",
},
["mg/kg"] = {
per = { "mg", "kg" },
utype = "concentration",
default = "oz/lb",
},
["g/dm3"] = {
name1 = "gram per cubic decimetre",
name1_us = "gram per cubic decimeter",
name2 = "grams per cubic decimetre",
name2_us = "grams per cubic decimeter",
symbol = "g/dm<sup>3</sup>",
utype = "density",
scale = 1,
default = "kg/m3",
link = "Density",
},
["g/L"] = {
name1 = "gram per litre",
name1_us = "gram per liter",
name2 = "grams per litre",
name2_us = "grams per liter",
symbol = "g/L",
utype = "density",
scale = 1,
default = "lb/cuin",
link = "Density",
},
["g/mL"] = {
name1 = "gram per millilitre",
name1_us = "gram per milliliter",
name2 = "grams per millilitre",
name2_us = "grams per milliliter",
symbol = "g/mL",
utype = "density",
scale = 1000,
default = "lb/cuin",
link = "Density",
},
["g/ml"] = {
name1 = "gram per millilitre",
name1_us = "gram per milliliter",
name2 = "grams per millilitre",
name2_us = "grams per milliliter",
symbol = "g/ml",
utype = "density",
scale = 1000,
default = "lb/cuin",
link = "Density",
},
["kg/dm3"] = {
name1 = "kilogram per cubic decimetre",
name1_us = "kilogram per cubic decimeter",
name2 = "kilograms per cubic decimetre",
name2_us = "kilograms per cubic decimeter",
symbol = "kg/dm<sup>3</sup>",
utype = "density",
scale = 1000,
default = "lb/cuft",
link = "Density",
},
["kg/L"] = {
name1 = "kilogram per litre",
name1_us = "kilogram per liter",
name2 = "kilograms per litre",
name2_us = "kilograms per liter",
symbol = "kg/L",
utype = "density",
scale = 1000,
default = "lb/USgal",
link = "Density",
},
["kg/l"] = {
name1 = "kilogram per litre",
name1_us = "kilogram per liter",
name2 = "kilograms per litre",
name2_us = "kilograms per liter",
symbol = "kg/l",
utype = "density",
scale = 1000,
default = "lb/USgal",
link = "Density",
},
["kg/m3"] = {
name1 = "kilogram per cubic metre",
name1_us = "kilogram per cubic meter",
name2 = "kilograms per cubic metre",
name2_us = "kilograms per cubic meter",
symbol = "kg/m<sup>3</sup>",
utype = "density",
scale = 1,
default = "lb/cuyd",
link = "Density",
},
["lb/cuft"] = {
name1 = "pound per cubic foot",
name2 = "pounds per cubic foot",
symbol = "lb/cu ft",
utype = "density",
scale = 16.018463373960142,
default = "g/cm3",
link = "Density",
},
["lb/cuin"] = {
name1 = "pound per cubic inch",
name2 = "pounds per cubic inch",
symbol = "lb/cu in",
utype = "density",
scale = 27679.904710203122,
default = "g/cm3",
link = "Density",
},
["lb/cuyd"] = {
name1 = "pound per cubic yard",
name2 = "pounds per cubic yard",
symbol = "lb/cu yd",
utype = "density",
scale = 0.5932764212577829,
default = "kg/m3",
link = "Density",
},
["lb/impgal"] = {
name1 = "pound per imperial gallon",
name2 = "pounds per imperial gallon",
symbol = "lb/imp gal",
utype = "density",
scale = 99.776372663101697,
default = "kg/L",
link = "Density",
},
["lb/in3"] = {
name1 = "pound per cubic inch",
name2 = "pounds per cubic inch",
symbol = "lb/cu in",
utype = "density",
scale = 27679.904710203122,
default = "g/cm3",
link = "Density",
},
["lb/U.S.gal"] = {
name1 = "pound per U.S. gallon",
name2 = "pounds per U.S. gallon",
symbol = "lb/U.S. gal",
utype = "density",
scale = 119.82642731689663,
default = "kg/L",
link = "Density",
},
["lb/USbu"] = {
name1 = "pound per US bushel",
name2 = "pounds per US bushel",
symbol = "lb/US bu",
utype = "density",
scale = 12.871859780974471,
default = "kg/m3",
link = "Bushel",
},
["lb/USgal"] = {
name1 = "pound per US gallon",
name2 = "pounds per US gallon",
symbol = "lb/US gal",
utype = "density",
scale = 119.82642731689663,
default = "kg/L",
link = "Density",
},
["lbm/cuin"] = {
name1 = "pound mass per cubic inch",
name2 = "pounds mass per cubic inch",
symbol = "lbm/cu in",
utype = "density",
scale = 27679.904710203122,
default = "g/cm3",
link = "Density",
},
["mg/L"] = {
name1 = "milligram per litre",
name1_us = "milligram per liter",
name2 = "milligrams per litre",
name2_us = "milligrams per liter",
symbol = "mg/L",
utype = "density",
scale = 0.001,
default = "lb/cuin",
link = "Density",
},
["oz/cuin"] = {
name1 = "ounce per cubic inch",
name2 = "ounces per cubic inch",
symbol = "oz/cu in",
utype = "density",
scale = 1729.9940443876951,
default = "g/cm3",
link = "Density",
},
["g/cm3"] = {
per = { "g", "cm3" },
utype = "density",
default = "lb/cuin",
},
["g/m3"] = {
per = { "g", "m3" },
utype = "density",
default = "lb/cuyd",
link = "Density",
},
["Mg/m3"] = {
per = { "Mg", "m3" },
utype = "density",
default = "lb/cuft",
},
["mg/l"] = {
per = { "mg", "ll" },
utype = "density",
default = "oz/cuin",
},
["μg/dL"] = {
per = { "μg", "dL" },
utype = "density",
default = "lb/cuin",
},
["μg/l"] = {
per = { "μg", "ll" },
utype = "density",
default = "oz/cuin",
},
["lb/ft3"] = {
target = "lb/cuft",
},
["lb/yd3"] = {
target = "lb/cuyd",
},
["lbm/in3"] = {
target = "lbm/cuin",
},
["mcg/dL"] = {
target = "μg/dL",
},
["oz/in3"] = {
target = "oz/cuin",
},
["ug/dL"] = {
target = "μg/dL",
},
["ug/l"] = {
target = "μg/l",
},
["B.O.T.U."] = {
name1 = "Board of Trade Unit",
symbol = "B.O.T.U.",
utype = "energy",
scale = 3600000,
default = "MJ",
link = "Kilowatt-hour",
},
["bboe"] = {
name1 = "barrel of oil equivalent",
name2 = "barrels of oil equivalent",
symbol = "bboe",
utype = "energy",
scale = 6117863200,
default = "GJ",
},
["BOE"] = {
name1 = "barrel of oil equivalent",
name2 = "barrels of oil equivalent",
symbol = "BOE",
utype = "energy",
scale = 6117863200,
default = "GJ",
},
["BTU"] = {
name1 = "British thermal unit",
symbol = "BTU",
utype = "energy",
scale = 1055.05585262,
default = "kJ",
},
["Btu"] = {
name1 = "British thermal unit",
symbol = "Btu",
utype = "energy",
scale = 1055.05585262,
default = "kJ",
},
["BTU-39F"] = {
name1 = "British thermal unit (39°F)",
name2 = "British thermal units (39°F)",
symbol = "BTU<sub>39°F</sub>",
utype = "energy",
scale = 1059.67,
default = "kJ",
link = "British thermal unit",
},
["Btu-39F"] = {
name1 = "British thermal unit (39°F)",
name2 = "British thermal units (39°F)",
symbol = "Btu<sub>39°F</sub>",
utype = "energy",
scale = 1059.67,
default = "kJ",
link = "British thermal unit",
},
["BTU-59F"] = {
name1 = "British thermal unit (59°F)",
name2 = "British thermal units (59°F)",
symbol = "BTU<sub>59°F</sub>",
utype = "energy",
scale = 1054.804,
default = "kJ",
link = "British thermal unit",
},
["Btu-59F"] = {
name1 = "British thermal unit (59°F)",
name2 = "British thermal units (59°F)",
symbol = "Btu<sub>59°F</sub>",
utype = "energy",
scale = 1054.804,
default = "kJ",
link = "British thermal unit",
},
["BTU-60F"] = {
name1 = "British thermal unit (60°F)",
name2 = "British thermal units (60°F)",
symbol = "BTU<sub>60°F</sub>",
utype = "energy",
scale = 1054.68,
default = "kJ",
link = "British thermal unit",
},
["Btu-60F"] = {
name1 = "British thermal unit (60°F)",
name2 = "British thermal units (60°F)",
symbol = "Btu<sub>60°F</sub>",
utype = "energy",
scale = 1054.68,
default = "kJ",
link = "British thermal unit",
},
["BTU-63F"] = {
name1 = "British thermal unit (63°F)",
name2 = "British thermal units (63°F)",
symbol = "BTU<sub>63°F</sub>",
utype = "energy",
scale = 1054.6,
default = "kJ",
link = "British thermal unit",
},
["Btu-63F"] = {
name1 = "British thermal unit (63°F)",
name2 = "British thermal units (63°F)",
symbol = "Btu<sub>63°F</sub>",
utype = "energy",
scale = 1054.6,
default = "kJ",
link = "British thermal unit",
},
["BTU-ISO"] = {
name1 = "British thermal unit (ISO)",
name2 = "British thermal units (ISO)",
symbol = "BTU<sub>ISO</sub>",
utype = "energy",
scale = 1055.056,
default = "kJ",
link = "British thermal unit",
},
["Btu-ISO"] = {
target = "BTU-ISO",
},
["BTU-IT"] = {
name1 = "British thermal unit (IT)",
name2 = "British thermal units (IT)",
symbol = "BTU<sub>IT</sub>",
utype = "energy",
scale = 1055.05585262,
default = "kJ",
link = "British thermal unit",
},
["Btu-IT"] = {
name1 = "British thermal unit (IT)",
name2 = "British thermal units (IT)",
symbol = "Btu<sub>IT</sub>",
utype = "energy",
scale = 1055.05585262,
default = "kJ",
link = "British thermal unit",
},
["BTU-mean"] = {
name1 = "British thermal unit (mean)",
name2 = "British thermal units (mean)",
symbol = "BTU<sub>mean</sub>",
utype = "energy",
scale = 1055.87,
default = "kJ",
link = "British thermal unit",
},
["Btu-mean"] = {
name1 = "British thermal unit (mean)",
name2 = "British thermal units (mean)",
symbol = "Btu<sub>mean</sub>",
utype = "energy",
scale = 1055.87,
default = "kJ",
link = "British thermal unit",
},
["BTU-th"] = {
name1 = "British thermal unit (thermochemical)",
name2 = "British thermal units (thermochemical)",
symbol = "BTU<sub>th</sub>",
utype = "energy",
scale = 1054.35026444,
default = "kJ",
link = "British thermal unit",
},
["Btu-th"] = {
name1 = "British thermal unit (thermochemical)",
name2 = "British thermal units (thermochemical)",
symbol = "Btu<sub>th</sub>",
utype = "energy",
scale = 1054.35026444,
default = "kJ",
link = "British thermal unit",
},
["Cal"] = {
name1 = "calorie",
symbol = "Cal",
utype = "energy",
scale = 4184,
default = "kJ",
},
["cal"] = {
name1 = "calorie",
symbol = "cal",
utype = "energy",
scale = 4.184,
default = "J",
},
["Cal-15"] = {
name1 = "Calorie (15°C)",
name2 = "Calories (15°C)",
symbol = "Cal<sub>15</sub>",
utype = "energy",
scale = 4185.8,
default = "kJ",
link = "Calorie",
},
["cal-15"] = {
name1 = "calorie (15°C)",
name2 = "calories (15°C)",
symbol = "cal<sub>15</sub>",
utype = "energy",
scale = 4.1858,
default = "J",
link = "Calorie",
},
["Cal-IT"] = {
name1 = "Calorie (International Steam Table)",
name2 = "Calories (International Steam Table)",
symbol = "Cal<sub>IT</sub>",
utype = "energy",
scale = 4186.8,
default = "kJ",
link = "Calorie",
},
["cal-IT"] = {
name1 = "calorie (International Steam Table)",
name2 = "calories (International Steam Table)",
symbol = "cal<sub>IT</sub>",
utype = "energy",
scale = 4.1868,
default = "J",
link = "Calorie",
},
["Cal-th"] = {
name1 = "Calorie (thermochemical)",
name2 = "Calories (thermochemical)",
symbol = "Cal<sub>th</sub>",
utype = "energy",
scale = 4184,
default = "kJ",
link = "Calorie",
},
["cal-th"] = {
name1 = "calorie (thermochemical)",
name2 = "calories (thermochemical)",
symbol = "cal<sub>th</sub>",
utype = "energy",
scale = 4.184,
default = "J",
link = "Calorie",
},
["CHU-IT"] = {
name1 = "Celsius heat unit (International Table)",
name2 = "Celsius heat units (International Table)",
symbol = "CHU<sub>IT</sub>",
utype = "energy",
scale = 1899.100534716,
default = "kJ",
link = "Conversion of units#Energy",
},
["cufootnaturalgas"] = {
name1 = "cubic foot of natural gas",
name2 = "cubic foot of natural gas",
symbol = "cuftnaturalgas",
usename = 1,
utype = "energy",
scale = 1055055.85262,
default = "MJ",
link = "Conversion of units#Energy",
},
["cuftnaturalgas"] = {
name1 = "cubic foot of natural gas",
name2 = "cubic feet of natural gas",
symbol = "cuftnaturalgas",
usename = 1,
utype = "energy",
scale = 1055055.85262,
default = "MJ",
link = "Conversion of units#Energy",
},
["Eh"] = {
name1 = "Hartree",
symbol = "''E''<sub>h</sub>",
utype = "energy",
scale = 4.35974417e-18,
default = "eV",
},
["erg"] = {
symbol = "erg",
utype = "energy",
scale = 0.0000001,
default = "μJ",
},
["eV"] = {
_name1 = "electronvolt",
_symbol = "eV",
utype = "energy",
scale = 1.602176634e-19,
prefixes = 1,
default = "aJ",
link = "Electronvolt",
},
["foe"] = {
symbol = "foe",
utype = "energy",
scale = 1e44,
default = "YJ",
link = "Foe (unit)",
},
["ftlb"] = {
name1 = "foot-pound",
symbol = "ft⋅lb",
utype = "energy",
alttype = "torque",
scale = 1.3558179483314004,
default = "J",
link = "Foot-pound (energy)",
},
["ftlb-f"] = {
name1 = "foot-pound force",
name2 = "foot-pounds force",
symbol = "ft⋅lb<sub>f</sub>",
utype = "energy",
alttype = "torque",
scale = 1.3558179483314004,
default = "J",
link = "Foot-pound (energy)",
},
["ftlbf"] = {
name1 = "foot-pound force",
name2 = "foot-pounds force",
symbol = "ft⋅lbf",
utype = "energy",
alttype = "torque",
scale = 1.3558179483314004,
default = "J",
link = "Foot-pound (energy)",
},
["ftpdl"] = {
name1 = "foot-poundal",
symbol = "ft⋅pdl",
utype = "energy",
scale = 0.0421401100938048,
default = "J",
},
["gTNT"] = {
name2 = "grams of TNT",
symbol = "gram of TNT",
usename = 1,
utype = "energy",
scale = 4184,
default = "kJ",
link = "TNT equivalent",
},
["Gtoe"] = {
name1 = "gigatonne of oil equivalent",
name2 = "gigatonnes of oil equivalent",
symbol = "Gtoe",
utype = "energy",
scale = 4.1868e19,
default = "EJ",
link = "Tonne of oil equivalent",
},
["GtonTNT"] = {
name2 = "gigatons of TNT",
symbol = "gigaton of TNT",
usename = 1,
utype = "energy",
scale = 4.184e18,
default = "EJ",
link = "TNT equivalent",
},
["GtTNT"] = {
name2 = "gigatonnes of TNT",
symbol = "gigatonne of TNT",
usename = 1,
utype = "energy",
scale = 4.184e18,
default = "EJ",
link = "TNT equivalent",
},
["GW.h"] = {
name1 = "gigawatt-hour",
symbol = "GW⋅h",
utype = "energy",
scale = 3.6e12,
default = "TJ",
link = "Kilowatt-hour",
},
["GWh"] = {
name1 = "gigawatt-hour",
symbol = "GWh",
utype = "energy",
scale = 3.6e12,
default = "TJ",
link = "Kilowatt-hour",
},
["hph"] = {
name1 = "horsepower-hour",
symbol = "hp⋅h",
utype = "energy",
scale = 2684519.537696172792,
default = "kWh",
link = "Horsepower",
},
["inlb"] = {
name1 = "inch-pound",
symbol = "in⋅lb",
utype = "energy",
alttype = "torque",
scale = 0.1129848290276167,
default = "mJ",
link = "Foot-pound (energy)",
},
["inlb-f"] = {
name1 = "inch-pound force",
name2 = "inch-pounds force",
symbol = "in⋅lb<sub>f</sub>",
utype = "energy",
alttype = "torque",
scale = 0.1129848290276167,
default = "mJ",
link = "Foot-pound (energy)",
},
["inlbf"] = {
name1 = "inch-pound force",
name2 = "inch-pounds force",
symbol = "in⋅lbf",
utype = "energy",
alttype = "torque",
scale = 0.1129848290276167,
default = "mJ",
link = "Foot-pound (energy)",
},
["inoz-f"] = {
name1 = "inch-ounce force",
name2 = "inch-ounces force",
symbol = "in⋅oz<sub>f</sub>",
utype = "energy",
alttype = "torque",
scale = 0.00706155181422604375,
default = "mJ",
link = "Foot-pound (energy)",
},
["inozf"] = {
name1 = "inch-ounce force",
name2 = "inch-ounces force",
symbol = "in⋅ozf",
utype = "energy",
alttype = "torque",
scale = 0.00706155181422604375,
default = "mJ",
link = "Foot-pound (energy)",
},
["J"] = {
_name1 = "joule",
_symbol = "J",
utype = "energy",
scale = 1,
prefixes = 1,
default = "cal",
link = "Joule",
},
["kBOE"] = {
name1 = "kilo barrel of oil equivalent",
name2 = "kilo barrels of oil equivalent",
symbol = "kBOE",
utype = "energy",
scale = 6.1178632e12,
default = "TJ",
link = "Barrel of oil equivalent",
},
["kcal"] = {
name1 = "kilocalorie",
symbol = "kcal",
utype = "energy",
scale = 4184,
default = "kJ",
link = "Calorie",
},
["kcal-15"] = {
name1 = "kilocalorie (15°C)",
name2 = "kilocalories (15°C)",
symbol = "kcal<sub>15</sub>",
utype = "energy",
scale = 4185.8,
default = "kJ",
link = "Calorie",
},
["kcal-IT"] = {
name1 = "kilocalorie (International Steam Table)",
name2 = "kilocalories (International Steam Table)",
symbol = "kcal<sub>IT</sub>",
utype = "energy",
scale = 4186.8,
default = "kJ",
link = "Calorie",
},
["kcal-th"] = {
name1 = "kilocalorie (thermochemical)",
name2 = "kilocalories (thermochemical)",
symbol = "kcal<sub>th</sub>",
utype = "energy",
scale = 4184,
default = "kJ",
link = "Calorie",
},
["kerg"] = {
name1 = "kiloerg",
symbol = "kerg",
utype = "energy",
scale = 0.0001,
default = "mJ",
link = "Erg",
},
["kgTNT"] = {
name2 = "kilograms of TNT",
symbol = "kilogram of TNT",
usename = 1,
utype = "energy",
scale = 4184000,
default = "MJ",
link = "TNT equivalent",
},
["kt(TNT)"] = {
name1 = "kilotonne",
name1_us = "kiloton",
symbol = "kt",
utype = "energy",
scale = 4.184e12,
default = "TJ",
link = "TNT equivalent",
},
["ktoe"] = {
name1 = "kilotonne of oil equivalent",
name2 = "kilotonnes of oil equivalent",
symbol = "ktoe",
utype = "energy",
scale = 4.1868e13,
default = "TJ",
link = "Tonne of oil equivalent",
},
["ktonTNT"] = {
name1 = "kiloton of TNT",
name2 = "kilotons of TNT",
symbol = "kt",
utype = "energy",
scale = 4.184e12,
default = "TJ",
link = "TNT equivalent",
},
["ktTNT"] = {
name2 = "kilotonnes of TNT",
symbol = "kilotonne of TNT",
usename = 1,
utype = "energy",
scale = 4.184e12,
default = "TJ",
link = "TNT equivalent",
},
["kW.h"] = {
name1 = "kilowatt-hour",
symbol = "kW⋅h",
utype = "energy",
scale = 3600000,
default = "MJ",
},
["kWh"] = {
name1 = "kilowatt-hour",
symbol = "kWh",
utype = "energy",
scale = 3600000,
default = "MJ",
},
["Mcal"] = {
name1 = "megacalorie",
symbol = "Mcal",
utype = "energy",
scale = 4184000,
default = "MJ",
link = "Calorie",
},
["mcal"] = {
name1 = "millicalorie",
symbol = "mcal",
utype = "energy",
scale = 0.004184,
default = "mJ",
link = "Calorie",
},
["Mcal-15"] = {
name1 = "megacalorie (15°C)",
name2 = "megacalories (15°C)",
symbol = "Mcal<sub>15</sub>",
utype = "energy",
scale = 4185800,
default = "MJ",
link = "Calorie",
},
["mcal-15"] = {
name1 = "millicalorie (15°C)",
name2 = "millicalories (15°C)",
symbol = "mcal<sub>15</sub>",
utype = "energy",
scale = 0.0041858,
default = "mJ",
link = "Calorie",
},
["Mcal-IT"] = {
name1 = "megacalorie (International Steam Table)",
name2 = "megacalories (International Steam Table)",
symbol = "Mcal<sub>IT</sub>",
utype = "energy",
scale = 4186800,
default = "MJ",
link = "Calorie",
},
["mcal-IT"] = {
name1 = "millicalorie (International Steam Table)",
name2 = "millicalories (International Steam Table)",
symbol = "mcal<sub>IT</sub>",
utype = "energy",
scale = 0.0041868,
default = "mJ",
link = "Calorie",
},
["Mcal-th"] = {
name1 = "megacalorie (thermochemical)",
name2 = "megacalories (thermochemical)",
symbol = "Mcal<sub>th</sub>",
utype = "energy",
scale = 4184000,
default = "MJ",
link = "Calorie",
},
["mcal-th"] = {
name1 = "millicalorie (thermochemical)",
name2 = "millicalories (thermochemical)",
symbol = "mcal<sub>th</sub>",
utype = "energy",
scale = 0.004184,
default = "mJ",
link = "Calorie",
},
["Merg"] = {
name1 = "megaerg",
symbol = "Merg",
utype = "energy",
scale = 0.1,
default = "J",
link = "Erg",
},
["merg"] = {
name1 = "millierg",
symbol = "merg",
utype = "energy",
scale = 0.0000000001,
default = "μJ",
link = "Erg",
},
["MMBtu"] = {
name1 = "million British thermal units",
name2 = "million British thermal units",
symbol = "MMBtu",
utype = "energy",
scale = 1055055852.62,
default = "GJ",
link = "British thermal unit",
},
["Mt(TNT)"] = {
name1 = "megatonne",
name1_us = "megaton",
symbol = "Mt",
utype = "energy",
scale = 4.184e15,
default = "PJ",
link = "TNT equivalent",
},
["Mtoe"] = {
name1 = "megatonne of oil equivalent",
name2 = "megatonnes of oil equivalent",
symbol = "Mtoe",
utype = "energy",
scale = 4.1868e16,
default = "PJ",
link = "Tonne of oil equivalent",
},
["MtonTNT"] = {
name1 = "megaton of TNT",
name2 = "megatons of TNT",
symbol = "Mt",
utype = "energy",
scale = 4.184e15,
default = "PJ",
link = "TNT equivalent",
},
["mtonTNT"] = {
name2 = "millitons of TNT",
symbol = "milliton of TNT",
usename = 1,
utype = "energy",
scale = 4184000,
default = "MJ",
link = "TNT equivalent",
},
["MtTNT"] = {
name2 = "megatonnes of TNT",
symbol = "megatonne of TNT",
usename = 1,
utype = "energy",
scale = 4.184e15,
default = "PJ",
link = "TNT equivalent",
},
["mtTNT"] = {
name2 = "millitonnes of TNT",
symbol = "millitonne of TNT",
usename = 1,
utype = "energy",
scale = 4184000,
default = "MJ",
link = "TNT equivalent",
},
["MW.h"] = {
name1 = "megawatt-hour",
symbol = "MW⋅h",
utype = "energy",
scale = 3600000000,
default = "GJ",
link = "Kilowatt-hour",
},
["mW.h"] = {
name1 = "milliwatt-hour",
symbol = "mW⋅h",
utype = "energy",
scale = 3.6,
default = "J",
link = "Kilowatt-hour",
},
["MWh"] = {
name1 = "megawatt-hour",
symbol = "MWh",
utype = "energy",
scale = 3600000000,
default = "GJ",
link = "Kilowatt-hour",
},
["mWh"] = {
name1 = "milliwatt-hour",
symbol = "mWh",
utype = "energy",
scale = 3.6,
default = "J",
link = "Kilowatt-hour",
},
["PSh"] = {
name1 = "Pferdestärkenstunde",
symbol = "PSh",
utype = "energy",
scale = 2647795.5,
default = "kWh",
},
["quad"] = {
name1 = "quadrillion British thermal units",
name2 = "quadrillion British thermal units",
symbol = "quad",
utype = "energy",
scale = 1.054804e18,
default = "EJ",
link = "Quad (unit)",
},
["Ry"] = {
name1 = "rydberg",
symbol = "Ry",
utype = "energy",
scale = 2.1798741e-18,
default = "eV",
link = "Rydberg constant",
},
["scf"] = {
name1 = "standard cubic foot",
name2 = "standard cubic feet",
symbol = "scf",
utype = "energy",
scale = 2869.2044809344,
default = "kJ",
},
["scfoot"] = {
name1 = "standard cubic foot",
name2 = "standard cubic foot",
symbol = "scf",
utype = "energy",
scale = 2869.2044809344,
default = "kJ",
},
["t(TNT)"] = {
name1 = "tonne",
name1_us = "ton",
symbol = "t",
utype = "energy",
scale = 4184000000,
default = "GJ",
link = "TNT equivalent",
},
["th"] = {
name1 = "thermie",
symbol = "th",
utype = "energy",
scale = 4186800,
default = "MJ",
link = "Conversion of units#Energy",
},
["thm-EC"] = {
name1 = "therm (EC)",
name2 = "therms (EC)",
symbol = "thm (EC)",
utype = "energy",
scale = 105506000,
default = "MJ",
link = "Therm",
},
["thm-UK"] = {
name1 = "therm (UK)",
name2 = "therms (UK)",
symbol = "thm (UK)",
utype = "energy",
scale = 105505585.257348,
default = "MJ",
link = "Therm",
},
["thm-US"] = {
name1 = "therm (US)",
name1_us = "therm (U.S.)",
name2 = "therms (US)",
name2_us = "therms (U.S.)",
symbol = "thm (US)",
sym_us = "thm (U.S.)",
utype = "energy",
scale = 105480400,
default = "MJ",
link = "Therm",
},
["toe"] = {
name1 = "tonne of oil equivalent",
name2 = "tonnes of oil equivalent",
symbol = "toe",
utype = "energy",
scale = 41868000000,
default = "GJ",
},
["tonTNT"] = {
name2 = "tons of TNT",
symbol = "ton of TNT",
usename = 1,
utype = "energy",
scale = 4184000000,
default = "GJ",
link = "TNT equivalent",
},
["tTNT"] = {
name2 = "tonnes of TNT",
symbol = "tonne of TNT",
usename = 1,
utype = "energy",
scale = 4184000000,
default = "GJ",
link = "TNT equivalent",
},
["TtonTNT"] = {
name2 = "teratons of TNT",
symbol = "teraton of TNT",
usename = 1,
utype = "energy",
scale = 4.184e21,
default = "ZJ",
link = "TNT equivalent",
},
["TtTNT"] = {
name2 = "teratonnes of TNT",
symbol = "teratonne of TNT",
usename = 1,
utype = "energy",
scale = 4.184e21,
default = "ZJ",
link = "TNT equivalent",
},
["TW.h"] = {
name1 = "terawatt-hour",
symbol = "TW⋅h",
utype = "energy",
scale = 3.6e15,
default = "PJ",
link = "Kilowatt-hour",
},
["TWh"] = {
name1 = "terawatt-hour",
symbol = "TWh",
utype = "energy",
scale = 3.6e15,
default = "PJ",
link = "Kilowatt-hour",
},
["W.h"] = {
name1 = "watt-hour",
symbol = "W⋅h",
utype = "energy",
scale = 3600,
default = "kJ",
link = "Kilowatt-hour",
},
["Wh"] = {
name1 = "watt-hour",
symbol = "Wh",
utype = "energy",
scale = 3600,
default = "kJ",
link = "Kilowatt-hour",
},
["μerg"] = {
name1 = "microerg",
symbol = "μerg",
utype = "energy",
scale = 1e-13,
default = "nJ",
link = "Erg",
},
["μW.h"] = {
name1 = "microwatt-hour",
symbol = "μW⋅h",
utype = "energy",
scale = 0.0036,
default = "mJ",
link = "Kilowatt-hour",
},
["μWh"] = {
name1 = "microwatt-hour",
symbol = "μWh",
utype = "energy",
scale = 0.0036,
default = "mJ",
link = "Kilowatt-hour",
},
["-kW.h"] = {
target = "kW.h",
link = "Kilowatt hour",
},
["btu"] = {
target = "BTU",
},
["Calorie"] = {
target = "Cal",
},
["ft.lbf"] = {
target = "ftlbf",
},
["ft·lbf"] = {
target = "ftlbf",
},
["g-cal-15"] = {
target = "cal-15",
},
["g-cal-IT"] = {
target = "cal-IT",
},
["g-cal-th"] = {
target = "cal-th",
},
["g-kcal-15"] = {
target = "kcal-15",
},
["g-kcal-IT"] = {
target = "kcal-IT",
},
["g-kcal-th"] = {
target = "kcal-th",
},
["g-Mcal-15"] = {
target = "Mcal-15",
},
["g-mcal-15"] = {
target = "mcal-15",
},
["g-Mcal-IT"] = {
target = "Mcal-IT",
},
["g-mcal-IT"] = {
target = "mcal-IT",
},
["g-Mcal-th"] = {
target = "Mcal-th",
},
["g-mcal-th"] = {
target = "mcal-th",
},
["GW-h"] = {
target = "GW.h",
},
["GW·h"] = {
target = "GW.h",
},
["Hartree"] = {
target = "Eh",
},
["hp.h"] = {
target = "hph",
},
["in.lb-f"] = {
target = "inlb-f",
},
["in.lbf"] = {
target = "inlbf",
},
["in.oz-f"] = {
target = "inoz-f",
},
["in.ozf"] = {
target = "inozf",
},
["kbboe"] = {
target = "kBOE",
symbol = "kbboe",
},
["kg-cal-15"] = {
target = "Cal-15",
},
["kg-cal-IT"] = {
target = "Cal-IT",
},
["kg-cal-th"] = {
target = "Cal-th",
},
["kW-h"] = {
target = "kW.h",
},
["kW·h"] = {
target = "kW.h",
},
["MW-h"] = {
target = "MW.h",
},
["mW-h"] = {
target = "mW.h",
},
["MW·h"] = {
target = "MW.h",
},
["TW-h"] = {
target = "TW.h",
},
["uerg"] = {
target = "μerg",
},
["uW-h"] = {
target = "μW.h",
},
["uW.h"] = {
target = "μW.h",
},
["uWh"] = {
target = "μWh",
},
["W-h"] = {
target = "W.h",
},
["eVpar"] = {
_name1 = "electronvolt",
_symbol = "eV",
utype = "energy per chemical amount",
scale = 96485.332123310014,
prefixes = 1,
default = "kcal/mol",
defkey = "eVpar",
linkey = "eVpar",
link = "Electronvolt",
},
["kcal/mol"] = {
per = { "kcal", "mol" },
utype = "energy per chemical amount",
default = "kJ/mol",
link = "Kilocalorie per mole",
},
["kJ/mol"] = {
per = { "kJ", "mol" },
utype = "energy per chemical amount",
default = "kcal/mol",
link = "Joule per mole",
},
["kWh/100 km"] = {
name1 = "kilowatt-hour per 100 kilometres",
name1_us = "kilowatt-hour per 100 kilometers",
name2 = "kilowatt-hours per 100 kilometres",
name2_us = "kilowatt-hours per 100 kilometers",
symbol = "kW⋅h/100 km",
utype = "energy per unit length",
scale = 36,
default = "MJ/km kWh/mi",
link = "Kilowatt-hour",
},
["kWh/100 mi"] = {
name1 = "kilowatt-hour per 100 miles",
name2 = "kilowatt-hours per 100 miles",
symbol = "kW⋅h/100 mi",
utype = "energy per unit length",
scale = 22.3694,
default = "mpge",
link = "Miles per gallon gasoline equivalent",
},
["MJ/100 km"] = {
name1 = "megajoule per 100 kilometres",
name1_us = "megajoule per 100 kilometers",
name2 = "megajoules per 100 kilometres",
name2_us = "megajoules per 100 kilometers",
symbol = "MJ/100 km",
utype = "energy per unit length",
scale = 10,
default = "BTU/mi",
link = "British thermal unit",
},
["mpge"] = {
name1 = "mile per gallon gasoline equivalent",
name2 = "miles per gallon gasoline equivalent",
symbol = "mpg‑e",
utype = "energy per unit length",
scale = 1.3263314048360777e-5,
invert = -1,
iscomplex= true,
default = "kWh/100 mi",
link = "Miles per gallon gasoline equivalent",
},
["BTU/mi"] = {
per = { "BTU", "mi" },
utype = "energy per unit length",
default = "v > 1525 ! M ! k ! J/km",
},
["kJ/km"] = {
per = { "kJ", "km" },
utype = "energy per unit length",
default = "BTU/mi",
},
["kWh/km"] = {
per = { "-kW.h", "km" },
utype = "energy per unit length",
default = "MJ/km kWh/mi",
},
["kWh/mi"] = {
per = { "-kW.h", "mi" },
utype = "energy per unit length",
default = "kWh/km MJ/km",
},
["MJ/km"] = {
per = { "MJ", "km" },
utype = "energy per unit length",
default = "BTU/mi",
},
["mpg-e"] = {
target = "mpge",
},
["BTU/lb"] = {
name1 = "British thermal unit per pound",
name2 = "British thermal units per pound",
symbol = "BTU/lb",
utype = "energy per unit mass",
scale = 2326,
default = "kJ/kg",
link = "British thermal unit",
},
["cal/g"] = {
name1 = "calorie per gram",
name2 = "calories per gram",
symbol = "cal/g",
utype = "energy per unit mass",
scale = 4184,
default = "J/g",
},
["GJ/kg"] = {
name1 = "gigajoule per kilogram",
name2 = "gigajoules per kilogram",
symbol = "GJ/kg",
utype = "energy per unit mass",
scale = 1e9,
default = "ktTNT/t",
link = "Specific energy",
},
["J/g"] = {
name1 = "joule per gram",
name2 = "joules per gram",
symbol = "J/g",
utype = "energy per unit mass",
scale = 1000,
default = "kcal/g",
link = "Specific energy",
},
["kcal/g"] = {
name1 = "kilocalorie per gram",
name2 = "kilocalories per gram",
symbol = "kcal/g",
utype = "energy per unit mass",
scale = 4184000,
default = "kJ/g",
},
["kJ/g"] = {
name1 = "kilojoule per gram",
name2 = "kilojoules per gram",
symbol = "kJ/g",
utype = "energy per unit mass",
scale = 1000000,
default = "kcal/g",
link = "Specific energy",
},
["kJ/kg"] = {
name1 = "kilojoule per kilogram",
name2 = "kilojoules per kilogram",
symbol = "kJ/kg",
utype = "energy per unit mass",
scale = 1000,
default = "BTU/lb",
link = "Specific energy",
},
["ktonTNT/MT"] = {
name2 = "kilotons of TNT per metric ton",
symbol = "kiloton of TNT per metric ton",
usename = 1,
utype = "energy per unit mass",
scale = 4184000000,
default = "GJ/kg",
link = "TNT equivalent",
},
["ktTNT/t"] = {
name2 = "kilotonnes of TNT per tonne",
symbol = "kilotonne of TNT per tonne",
usename = 1,
utype = "energy per unit mass",
scale = 4184000000,
default = "GJ/kg",
link = "TNT equivalent",
},
["MtonTNT/MT"] = {
name2 = "megatons of TNT per metric ton",
symbol = "megaton of TNT per metric ton",
usename = 1,
utype = "energy per unit mass",
scale = 4.184e12,
default = "TJ/kg",
link = "TNT equivalent",
},
["MtTNT/MT"] = {
name2 = "megatonnes of TNT per tonne",
symbol = "megatonne of TNT per tonne",
usename = 1,
utype = "energy per unit mass",
scale = 4.184e12,
default = "TJ/kg",
link = "TNT equivalent",
},
["TJ/kg"] = {
name1 = "terajoule per kilogram",
name2 = "terajoules per kilogram",
symbol = "TJ/kg",
utype = "energy per unit mass",
scale = 1e12,
default = "MtTNT/MT",
link = "Specific energy",
},
["Cal/g"] = {
per = { "Cal", "g" },
utype = "energy per unit mass",
default = "kJ/g",
},
["BTU/cuft"] = {
per = { "BTU", "cuft" },
utype = "energy per unit volume",
default = "kJ/L",
},
["Cal/12USoz(mL)serve"] = {
per = { "Cal", "-12USoz(mL)serve" },
utype = "energy per unit volume",
default = "kJ/L",
},
["Cal/12USoz(ml)serve"] = {
per = { "Cal", "-12USoz(ml)serve" },
utype = "energy per unit volume",
default = "kJ/l",
},
["Cal/12USozserve"] = {
per = { "Cal", "-12USozserve" },
utype = "energy per unit volume",
default = "kJ/L",
},
["Cal/USoz"] = {
per = { "Cal", "USoz" },
utype = "energy per unit volume",
default = "kJ/ml",
},
["kJ/L"] = {
per = { "kJ", "L" },
utype = "energy per unit volume",
default = "BTU/cuft",
},
["kJ/l"] = {
per = { "kJ", "ll" },
utype = "energy per unit volume",
default = "BTU/cuft",
},
["kJ/ml"] = {
per = { "kJ", "ml" },
utype = "energy per unit volume",
default = "Cal/USoz",
},
["MJ/m3"] = {
per = { "MJ", "m3" },
utype = "energy per unit volume",
default = "BTU/cuft",
},
["Sv"] = {
_name1 = "sievert",
_symbol = "Sv",
utype = "equivalent radiation dose",
scale = 1,
prefixes = 1,
default = "rem",
link = "Sievert",
},
["rem"] = {
_name1 = "rem",
_symbol = "rem",
utype = "equivalent radiation dose",
scale = 0.01,
prefixes = 1,
default = "Sv",
link = "Roentgen equivalent man",
},
["g/km"] = {
name1 = "gram per kilometre",
name1_us = "gram per kilometer",
name2 = "grams per kilometre",
name2_us = "grams per kilometer",
symbol = "g/km",
utype = "exhaust emission",
scale = 1e-6,
default = "oz/mi",
link = "Exhaust gas",
},
["g/mi"] = {
name1 = "gram per mile",
name2 = "grams per mile",
symbol = "g/mi",
utype = "exhaust emission",
scale = 6.2137119223733397e-7,
default = "g/km",
link = "Exhaust gas",
},
["gCO2/km"] = {
name1 = "gram of CO<sub>2</sub> per kilometre",
name1_us = "gram of CO<sub>2</sub> per kilometer",
name2 = "grams of CO<sub>2</sub> per kilometre",
name2_us = "grams of CO<sub>2</sub> per kilometer",
symbol = "g(CO<sub>2</sub>)/km",
utype = "exhaust emission",
scale = 1e-6,
default = "ozCO2/mi",
link = "Exhaust gas",
},
["gCO2/mi"] = {
name1 = "gram of CO<sub>2</sub> per mile",
name2 = "grams of CO<sub>2</sub> per mile",
symbol = "g(CO<sub>2</sub>)/mi",
utype = "exhaust emission",
scale = 6.2137119223733397e-7,
default = "gCO2/km",
link = "Exhaust gas",
},
["kg/km"] = {
name1 = "kilogram per kilometre",
name1_us = "kilogram per kilometer",
name2 = "kilograms per kilometre",
name2_us = "kilograms per kilometer",
symbol = "kg/km",
utype = "exhaust emission",
scale = 0.001,
default = "lb/mi",
link = "Exhaust gas",
},
["kgCO2/km"] = {
name1 = "kilogram of CO<sub>2</sub> per kilometre",
name1_us = "kilogram of CO<sub>2</sub> per kilometer",
name2 = "kilograms of CO<sub>2</sub> per kilometre",
name2_us = "kilograms of CO<sub>2</sub> per kilometer",
symbol = "kg(CO<sub>2</sub>)/km",
utype = "exhaust emission",
scale = 0.001,
default = "lbCO2/mi",
link = "Exhaust gas",
},
["lb/mi"] = {
name1 = "pound per mile",
name2 = "pounds per mile",
symbol = "lb/mi",
utype = "exhaust emission",
scale = 0.00028184923173665794,
default = "kg/km",
link = "Exhaust gas",
},
["lbCO2/mi"] = {
name1 = "pound of CO<sub>2</sub> per mile",
name2 = "pounds of CO<sub>2</sub> per mile",
symbol = "lb(CO<sub>2</sub>)/mi",
utype = "exhaust emission",
scale = 0.00028184923173665794,
default = "kgCO2/km",
link = "Exhaust gas",
},
["oz/mi"] = {
name1 = "ounce per mile",
name2 = "ounces per mile",
symbol = "oz/mi",
utype = "exhaust emission",
scale = 1.7615576983541121e-5,
default = "g/km",
link = "Exhaust gas",
},
["ozCO2/mi"] = {
name1 = "ounce of CO<sub>2</sub> per mile",
name2 = "ounces of CO<sub>2</sub> per mile",
symbol = "oz(CO<sub>2</sub>)/mi",
utype = "exhaust emission",
scale = 1.7615576983541121e-5,
default = "gCO2/km",
link = "Exhaust gas",
},
["cuft/a"] = {
name1 = "cubic foot per annum",
name2 = "cubic feet per annum",
symbol = "cu ft/a",
utype = "flow",
scale = 8.9730672142368242e-10,
default = "m3/a",
link = "Cubic foot per second",
},
["cuft/d"] = {
name1 = "cubic foot per day",
name2 = "cubic feet per day",
symbol = "cu ft/d",
utype = "flow",
scale = 3.2774128000000003e-7,
default = "m3/d",
link = "Cubic foot per second",
},
["cuft/h"] = {
name1 = "cubic foot per hour",
name2 = "cubic feet per hour",
symbol = "cu ft/h",
utype = "flow",
scale = 7.8657907200000004e-6,
default = "m3/h",
link = "Cubic foot per second",
},
["cuft/min"] = {
name1 = "cubic foot per minute",
name2 = "cubic feet per minute",
symbol = "cu ft/min",
utype = "flow",
scale = 0.00047194744319999999,
default = "m3/min",
},
["cuft/s"] = {
name1 = "cubic foot per second",
name2 = "cubic feet per second",
symbol = "cu ft/s",
utype = "flow",
scale = 28316846592e-12,
default = "m3/s",
},
["cumi/a"] = {
name1 = "cubic mile per annum",
name2 = "cubic miles per annum",
symbol = "cu mi/a",
utype = "flow",
scale = 132.08171170940057,
default = "km3/a",
link = "Cubic foot per second",
},
["cuyd/h"] = {
name1 = "cubic yard per hour",
name2 = "cubic yards per hour",
symbol = "cuyd/h",
utype = "flow",
scale = 0.00021237634944000001,
default = "m3/h",
link = "Cubic foot per second",
},
["cuyd/s"] = {
name1 = "cubic yard per second",
name2 = "cubic yards per second",
symbol = "cu yd/s",
utype = "flow",
scale = 0.76455485798400002,
default = "m3/s",
},
["Goilbbl/a"] = {
name1 = "billion barrels per year",
name2 = "billion barrels per year",
symbol = "Gbbl/a",
utype = "flow",
scale = 5.0380033629933836,
default = "v * 1.58987294928 < 10 ! e6 ! e9 ! m3/a",
link = "Barrel per day",
},
["impgal/h"] = {
name1 = "imperial gallon per hour",
name2 = "imperial gallons per hour",
symbol = "imp gal/h",
utype = "flow",
scale = 1.2628027777777779e-6,
default = "m3/h",
link = "Gallon",
},
["impgal/min"] = {
name1 = "imperial gallon per minute",
name2 = "imperial gallons per minute",
symbol = "imp gal/min",
utype = "flow",
scale = 7.5768166666666671e-5,
default = "m3/s",
link = "Gallon",
},
["impgal/s"] = {
name1 = "imperial gallon per second",
name2 = "imperial gallons per second",
symbol = "impgal/s",
utype = "flow",
scale = 0.00454609,
default = "m3/s",
link = "Imperial gallons per second",
},
["km3/a"] = {
name1 = "cubic kilometre per annum",
name1_us = "cubic kilometer per annum",
name2 = "cubic kilometres per annum",
name2_us = "cubic kilometers per annum",
symbol = "km<sup>3</sup>/a",
utype = "flow",
scale = 31.68808781402895,
default = "cumi/a",
link = "Cubic metre per second",
},
["km3/d"] = {
name1 = "cubic kilometre per day",
name1_us = "cubic kilometer per day",
name2 = "cubic kilometres per day",
name2_us = "cubic kilometers per day",
symbol = "km<sup>3</sup>/d",
utype = "flow",
scale = 11574.074074074075,
default = "cuft/d",
link = "Cubic metre per second",
},
["koilbbl/a"] = {
name1 = "thousand barrels per year",
name2 = "thousand barrels per year",
symbol = "kbbl/a",
utype = "flow",
scale = 5.0380033629933841e-6,
default = "v * 1.58987294928 < 10 ! ! e3 ! m3/a",
link = "Barrel per day",
},
["koilbbl/d"] = {
name1 = "thousand barrels per day",
name2 = "thousand barrels per day",
symbol = "kbbl/d",
utype = "flow",
scale = 0.0018401307283333335,
default = "v * 1.58987294928 < 10 ! ! e3 ! m3/d",
link = "Barrel per day",
},
["L/h"] = {
name1 = "litre per hour",
name1_us = "liter per hour",
name2 = "litres per hour",
name2_us = "liters per hour",
symbol = "L/h",
utype = "flow",
scale = 2.7777777777777776e-7,
default = "impgal/h USgal/h",
link = "Cubic metre per second",
},
["L/min"] = {
name1 = "litre per minute",
name1_us = "liter per minute",
name2 = "litres per minute",
name2_us = "liters per minute",
symbol = "L/min",
utype = "flow",
scale = 1.6666666666666667e-5,
default = "impgal/min USgal/min",
link = "Cubic metre per second",
},
["L/s"] = {
name1 = "litre per second",
name1_us = "liter per second",
name2 = "litres per second",
name2_us = "liters per second",
symbol = "L/s",
utype = "flow",
scale = 0.001,
default = "cuft/s",
link = "Cubic metre per second",
},
["m3/a"] = {
name1 = "cubic metre per annum",
name1_us = "cubic meter per annum",
name2 = "cubic metres per annum",
name2_us = "cubic meters per annum",
symbol = "m<sup>3</sup>/a",
utype = "flow",
scale = 3.1688087814028947e-8,
default = "cuft/a",
link = "Cubic metre per second",
},
["m3/d"] = {
name1 = "cubic metre per day",
name1_us = "cubic meter per day",
name2 = "cubic metres per day",
name2_us = "cubic meters per day",
symbol = "m<sup>3</sup>/d",
utype = "flow",
scale = 1.1574074074074073e-5,
default = "cuft/d",
link = "Cubic metre per second",
},
["m3/h"] = {
name1 = "cubic metre per hour",
name1_us = "cubic meter per hour",
name2 = "cubic metres per hour",
name2_us = "cubic meters per hour",
symbol = "m<sup>3</sup>/h",
utype = "flow",
scale = 0.00027777777777777778,
default = "cuft/h",
link = "Cubic metre per second",
},
["m3/min"] = {
name1 = "cubic metre per minute",
name1_us = "cubic meter per minute",
name2 = "cubic metres per minute",
name2_us = "cubic meters per minute",
symbol = "m<sup>3</sup>/min",
utype = "flow",
scale = 0.016666666666666666,
default = "cuft/min",
link = "Cubic metre per second",
},
["m3/s"] = {
name1 = "cubic metre per second",
name1_us = "cubic meter per second",
name2 = "cubic metres per second",
name2_us = "cubic meters per second",
symbol = "m<sup>3</sup>/s",
utype = "flow",
scale = 1,
default = "cuft/s",
},
["Moilbbl/a"] = {
name1 = "million barrels per year",
name2 = "million barrels per year",
symbol = "Mbbl/a",
utype = "flow",
scale = 0.0050380033629933837,
default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3/a",
link = "Barrel per day",
},
["Moilbbl/d"] = {
name1 = "million barrels per day",
name2 = "million barrels per day",
symbol = "Mbbl/d",
utype = "flow",
scale = 1.8401307283333335,
default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3/d",
link = "Barrel per day",
},
["oilbbl/a"] = {
name1 = "barrel per year",
name2 = "barrels per year",
symbol = "bbl/a",
utype = "flow",
scale = 5.0380033629933841e-9,
default = "m3/a",
link = "Barrel per day",
},
["oilbbl/d"] = {
name1 = "barrel per day",
name2 = "barrels per day",
symbol = "bbl/d",
utype = "flow",
scale = 1.8401307283333336e-6,
default = "m3/d",
},
["Toilbbl/a"] = {
name1 = "trillion barrels per year",
name2 = "trillion barrels per year",
symbol = "Tbbl/a",
utype = "flow",
scale = 5038.0033629933832,
default = "v * 1.58987294928 < 10 ! e9 ! e12 ! m3/a",
link = "Barrel per day",
},
["U.S.gal/d"] = {
name1 = "U.S. gallon per day",
name2 = "U.S. gallons per day",
symbol = "U.S. gal/d",
utype = "flow",
scale = 4.3812636388888893e-8,
default = "m3/s",
customary= 1,
},
["U.S.gal/h"] = {
name1 = "gallon per hour",
name2 = "gallons per hour",
symbol = "gal/h",
utype = "flow",
scale = 1.0515032733333334e-6,
default = "m3/h",
link = "Gallon",
customary= 2,
},
["U.S.gal/min"] = {
name1 = "U.S. gallon per minute",
name2 = "U.S. gallons per minute",
symbol = "U.S. gal/min",
utype = "flow",
scale = 6.3090196400000003e-5,
default = "m3/s",
link = "Gallon",
},
["USgal/a"] = {
name1 = "US gallon per year",
name2 = "US gallons per year",
symbol = "US gal/a",
utype = "flow",
scale = 1.1995246102365199e-10,
default = "m3/s",
},
["USgal/d"] = {
name1 = "US gallon per day",
name2 = "US gallons per day",
symbol = "US gal/d",
utype = "flow",
scale = 4.3812636388888893e-8,
default = "m3/s",
},
["USgal/h"] = {
name1 = "gallon per hour",
name2 = "gallons per hour",
symbol = "gal/h",
utype = "flow",
scale = 1.0515032733333334e-6,
default = "m3/h",
link = "Gallon",
customary= 1,
},
["USgal/min"] = {
name1 = "US gallon per minute",
name2 = "US gallons per minute",
symbol = "US gal/min",
utype = "flow",
scale = 6.3090196400000003e-5,
default = "m3/s",
link = "Gallon",
},
["USgal/s"] = {
name1 = "US gallon per second",
name1_us = "U.S. gallon per second",
name2 = "US gallons per second",
name2_us = "U.S. gallons per second",
symbol = "USgal/s",
utype = "flow",
scale = 0.003785411784,
default = "m3/s",
link = "US gallons per second",
},
["ft3/a"] = {
target = "cuft/a",
},
["ft3/d"] = {
target = "cuft/d",
},
["ft3/h"] = {
target = "cuft/h",
},
["ft3/s"] = {
target = "cuft/s",
},
["Gcuft/a"] = {
target = "e9cuft/a",
},
["Gcuft/d"] = {
target = "e9cuft/d",
},
["kcuft/a"] = {
target = "e3cuft/a",
},
["kcuft/d"] = {
target = "e3cuft/d",
},
["kcuft/s"] = {
target = "e3cuft/s",
},
["Mcuft/a"] = {
target = "e6cuft/a",
},
["Mcuft/d"] = {
target = "e6cuft/d",
},
["Mcuft/s"] = {
target = "e6cuft/s",
},
["m³/s"] = {
target = "m3/s",
},
["Tcuft/a"] = {
target = "e12cuft/a",
},
["Tcuft/d"] = {
target = "e12cuft/d",
},
["u.s.gal/min"] = {
target = "U.S.gal/min",
},
["usgal/min"] = {
target = "USgal/min",
},
["-LTf"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "LTf",
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["-STf"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "STf",
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["dyn"] = {
name1 = "dyne",
symbol = "dyn",
utype = "force",
scale = 0.00001,
default = "gr-f",
},
["g-f"] = {
name1 = "gram-force",
name2 = "grams-force",
symbol = "g<sub>f</sub>",
utype = "force",
scale = 0.00980665,
default = "mN oz-f",
link = "Kilogram-force",
},
["gf"] = {
name1 = "gram-force",
name2 = "grams-force",
symbol = "gf",
utype = "force",
scale = 0.00980665,
default = "mN ozf",
link = "Kilogram-force",
},
["gr-f"] = {
name1 = "grain-force",
name2 = "grains-force",
symbol = "gr<sub>f</sub>",
utype = "force",
scale = 0.0006354602307515,
default = "μN",
link = "Pound (force)",
},
["grf"] = {
name1 = "grain-force",
name2 = "grains-force",
symbol = "grf",
utype = "force",
scale = 0.0006354602307515,
default = "μN",
link = "Pound (force)",
},
["kdyn"] = {
name1 = "kilodyne",
symbol = "kdyn",
utype = "force",
scale = 0.01,
default = "oz-f",
link = "Dyne",
},
["kg-f"] = {
name1 = "kilogram-force",
name2 = "kilograms-force",
symbol = "kg<sub>f</sub>",
utype = "force",
scale = 9.80665,
default = "N lb-f",
},
["kgf"] = {
name1 = "kilogram-force",
name2 = "kilograms-force",
symbol = "kgf",
utype = "force",
scale = 9.80665,
default = "N lbf",
},
["kp"] = {
name1 = "kilopond",
symbol = "kp",
utype = "force",
scale = 9.80665,
default = "N lb-f",
link = "Kilogram-force",
},
["L/T-f"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "L/T<sub>f</sub>",
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["L/Tf"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "L/Tf",
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["lb-f"] = {
name1 = "pound-force",
name2 = "pounds-force",
symbol = "lb<sub>f</sub>",
utype = "force",
scale = 4.4482216152605,
default = "N",
link = "Pound (force)",
},
["lbf"] = {
name1 = "pound-force",
name2 = "pounds-force",
symbol = "lbf",
utype = "force",
scale = 4.4482216152605,
default = "N",
link = "Pound (force)",
},
["lb(f)"] = {
name1 = "pound",
symbol = "lb",
utype = "force",
scale = 4.4482216152605,
default = "N",
link = "Pound (force)",
},
["LT-f"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "LT<sub>f</sub>",
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["LTf"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "LTf",
usename = 1,
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["Mdyn"] = {
name1 = "megadyne",
symbol = "Mdyn",
utype = "force",
scale = 10,
default = "lb-f",
link = "Dyne",
},
["mdyn"] = {
name1 = "millidyne",
symbol = "mdyn",
utype = "force",
scale = 0.00000001,
default = "gr-f",
link = "Dyne",
},
["mg-f"] = {
name1 = "milligram-force",
name2 = "milligrams-force",
symbol = "mg<sub>f</sub>",
utype = "force",
scale = 0.00000980665,
default = "μN gr-f",
link = "Kilogram-force",
},
["mgf"] = {
name1 = "milligram-force",
name2 = "milligrams-force",
symbol = "mgf",
utype = "force",
scale = 0.00000980665,
default = "μN grf",
link = "Kilogram-force",
},
["Mp"] = {
name1 = "megapond",
symbol = "Mp",
utype = "force",
scale = 9806.65,
default = "kN LT-f ST-f",
link = "Kilogram-force",
},
["mp"] = {
name1 = "millipond",
symbol = "mp",
utype = "force",
scale = 0.00000980665,
default = "μN gr-f",
link = "Kilogram-force",
},
["N"] = {
_name1 = "newton",
_symbol = "N",
utype = "force",
scale = 1,
prefixes = 1,
default = "lb-f",
link = "Newton (unit)",
},
["oz-f"] = {
name1 = "ounce-force",
name2 = "ounces-force",
symbol = "oz<sub>f</sub>",
utype = "force",
scale = 0.2780138203095378125,
default = "mN",
link = "Pound (force)",
},
["ozf"] = {
name1 = "ounce-force",
name2 = "ounces-force",
symbol = "ozf",
utype = "force",
scale = 0.2780138203095378125,
default = "mN",
link = "Pound (force)",
},
["p"] = {
name1 = "pond",
symbol = "p",
utype = "force",
scale = 0.00980665,
default = "mN oz-f",
link = "Kilogram-force",
},
["pdl"] = {
name1 = "poundal",
symbol = "pdl",
utype = "force",
scale = 0.138254954376,
default = "N",
},
["S/T-f"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "S/T<sub>f</sub>",
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["S/Tf"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "S/Tf",
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["ST-f"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "ST<sub>f</sub>",
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["STf"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "STf",
usename = 1,
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["t-f"] = {
name1 = "tonne-force",
name2 = "tonnes-force",
symbol = "t<sub>f</sub>",
utype = "force",
scale = 9806.65,
default = "kN LT-f ST-f",
link = "Ton-force#Tonne-force",
},
["tf"] = {
name1 = "tonne-force",
name2 = "tonnes-force",
symbol = "tf",
utype = "force",
scale = 9806.65,
default = "kN LTf STf",
link = "Ton-force#Tonne-force",
},
["dyne"] = {
target = "dyn",
},
["newtons"] = {
target = "N",
},
["poundal"] = {
target = "pdl",
},
["tonne-force"] = {
target = "tf",
},
["impgal/mi"] = {
per = { "@impgal", "mi" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "L/km USgal/mi",
},
["km/L"] = {
per = { "km", "L" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "mpgimp mpgus",
},
["km/l"] = {
per = { "km", "ll" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "mpgimp mpgus",
},
["L/100 km"] = {
per = { "L", "100km" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "mpgimp mpgus",
symlink = "[[Fuel economy in automobiles#Units of measure|L/100 km]]",
},
["l/100 km"] = {
per = { "ll", "100km" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "mpgimp mpgus",
symlink = "[[Fuel economy in automobiles#Units of measure|l/100 km]]",
},
["L/km"] = {
per = { "L", "km" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "mpgimp mpgus",
},
["l/km"] = {
per = { "ll", "km" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "mpgimp mpgus",
},
["mi/impqt"] = {
per = { "mi", "impqt" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "km/L",
},
["mi/U.S.qt"] = {
per = { "mi", "U.S.qt" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "km/L",
},
["mi/USqt"] = {
per = { "mi", "USqt" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "km/L",
},
["mi/usqt"] = {
per = { "mi", "usqt" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "km/L",
},
["mpgimp"] = {
per = { "mi", "@impgal" },
symbol = "mpg<sub>‑imp</sub>",
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "L/100 km+mpgus",
symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>‑[[Imperial units|imp]]</sub>",
},
["mpgus"] = {
per = { "mi", "+USgal" },
symbol = "mpg<sub>‑US</sub>",
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "L/100 km+mpgimp",
symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>‑[[United States customary units|US]]</sub>",
},
["U.S.gal/mi"] = {
per = { "*U.S.gal", "mi" },
sp_us = true,
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "L/km impgal/mi",
},
["usgal/mi"] = {
per = { "+USgal", "mi" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "L/km impgal/mi",
},
["L/100km"] = {
target = "L/100 km",
},
["l/100km"] = {
target = "l/100 km",
},
["mpg"] = {
shouldbe = "Use %{mpgus%} for miles per US gallon or %{mpgimp%} for miles per imperial gallon (not %{mpg%})",
},
["mpgU.S."] = {
target = "mpgus",
symbol = "mpg<sub>‑U.S.</sub>",
sp_us = true,
symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>‑[[United States customary units|U.S.]]</sub>",
},
["mpgu.s."] = {
target = "mpgus",
symbol = "mpg<sub>‑U.S.</sub>",
sp_us = true,
symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>‑[[United States customary units|U.S.]]</sub>",
},
["mpgUS"] = {
target = "mpgus",
},
["USgal/mi"] = {
target = "usgal/mi",
},
["kPa/m"] = {
per = { "kPa", "-m-frac" },
utype = "fracture gradient",
default = "psi/ft",
},
["psi/ft"] = {
per = { "psi", "-ft-frac" },
utype = "fracture gradient",
default = "kPa/m",
},
["cm/km"] = {
name1 = "centimetre per kilometre",
name1_us = "centimeter per kilometer",
name2 = "centimetres per kilometre",
name2_us = "centimeters per kilometer",
symbol = "cm/km",
utype = "gradient",
scale = 0.00001,
default = "ft/mi",
link = "Grade (slope)",
},
["ft/mi"] = {
name1 = "foot per mile",
name2 = "feet per mile",
symbol = "ft/mi",
utype = "gradient",
scale = 0.00018939393939393939,
default = "v < 5.28 ! c ! ! m/km",
link = "Grade (slope)",
},
["ft/nmi"] = {
name1 = "foot per nautical mile",
name2 = "feet per nautical mile",
symbol = "ft/nmi",
utype = "gradient",
scale = 0.00016457883369330455,
default = "v < 6.076 ! c ! ! m/km",
link = "Grade (slope)",
},
["in/ft"] = {
name1 = "inch per foot",
name2 = "inches per foot",
symbol = "in/ft",
utype = "gradient",
scale = 0.083333333333333329,
default = "mm/m",
link = "Grade (slope)",
},
["in/mi"] = {
name1 = "inch per mile",
name2 = "inches per mile",
symbol = "in/mi",
utype = "gradient",
scale = 1.5782828282828283e-5,
default = "v < 0.6336 ! m ! c ! m/km",
link = "Grade (slope)",
},
["m/km"] = {
name1 = "metre per kilometre",
name1_us = "meter per kilometer",
name2 = "metres per kilometre",
name2_us = "meters per kilometer",
symbol = "m/km",
utype = "gradient",
scale = 0.001,
default = "ft/mi",
link = "Grade (slope)",
},
["mm/km"] = {
name1 = "millimetre per kilometre",
name1_us = "millimeter per kilometer",
name2 = "millimetres per kilometre",
name2_us = "millimeters per kilometer",
symbol = "mm/km",
utype = "gradient",
scale = 0.000001,
default = "in/mi",
link = "Grade (slope)",
},
["mm/m"] = {
name1 = "millimetre per metre",
name1_us = "millimeter per meter",
name2 = "millimetres per metre",
name2_us = "millimeters per meter",
symbol = "mm/m",
utype = "gradient",
scale = 0.001,
default = "in/ft",
link = "Grade (slope)",
},
["admi"] = {
name1 = "admiralty mile",
symbol = "nmi (admiralty)",
utype = "length",
scale = 1853.184,
default = "km mi",
link = "Nautical mile",
},
["AU"] = {
name1 = "astronomical unit",
symbol = "AU",
utype = "length",
scale = 149597870700,
default = "km mi",
},
["Brnmi"] = {
name1 = "British nautical mile",
symbol = "(Brit) nmi",
utype = "length",
scale = 1853.184,
default = "km mi",
link = "Nautical mile",
},
["bu"] = {
name2 = "bu",
symbol = "bu",
usename = 1,
utype = "length",
scale = 0.0030303030303030303,
default = "mm",
link = "Japanese units of measurement#Length",
},
["ch"] = {
name1 = "chain",
symbol = "ch",
utype = "length",
scale = 20.1168,
default = "ft m",
subdivs = { ["ft"] = { 66, default = "m" }, ["yd"] = { 22, default = "m" } },
link = "Chain (unit)",
},
["chlk"] = {
name1 = "[[Chain (unit)|chain]]",
symbol = "[[Chain (unit)|ch]]",
utype = "length",
scale = 20.1168,
default = "ft m",
link = "",
},
["chain"] = {
symbol = "chain",
usename = 1,
utype = "length",
scale = 20.1168,
default = "ft m",
subdivs = { ["ft"] = { 66, default = "m" }, ["yd"] = { 22, default = "m" } },
link = "Chain (unit)",
},
["chainlk"] = {
symbol = "[[Chain (unit)|chain]]",
usename = 1,
utype = "length",
scale = 20.1168,
default = "ft m",
link = "",
},
["dpcm"] = {
name2 = "dot/cm",
symbol = "dot/cm",
utype = "length",
scale = 100,
invert = -1,
iscomplex= true,
default = "dpi",
link = "Dots per inch",
},
["dpi"] = {
name2 = "DPI",
symbol = "DPI",
utype = "length",
scale = 39.370078740157481,
invert = -1,
iscomplex= true,
default = "pitch",
link = "Dots per inch",
},
["fathom"] = {
symbol = "fathom",
usename = 1,
utype = "length",
scale = 1.8288,
default = "ft m",
},
["foot"] = {
name1 = "foot",
name2 = "foot",
symbol = "ft",
utype = "length",
scale = 0.3048,
default = "m",
subdivs = { ["in"] = { 12, default = "m" } },
link = "Foot (unit)",
},
["ft"] = {
name1 = "foot",
name2 = "feet",
symbol = "ft",
utype = "length",
scale = 0.3048,
exception= "integer_more_precision",
default = "m",
subdivs = { ["in"] = { 12, default = "m" } },
link = "Foot (unit)",
},
["furlong"] = {
symbol = "furlong",
usename = 1,
utype = "length",
scale = 201.168,
default = "ft m",
},
["Gly"] = {
name1 = "gigalight-year",
symbol = "Gly",
utype = "length",
scale = 9.4607304725808e24,
default = "Mpc",
link = "Light-year#Definitions",
},
["Gpc"] = {
name1 = "gigaparsec",
symbol = "Gpc",
utype = "length",
scale = 3.0856775814671916e25,
default = "Gly",
link = "Parsec#Megaparsecs and gigaparsecs",
},
["hand"] = {
name1 = "hand",
symbol = "h",
utype = "length",
builtin = "hand",
scale = 0.1016,
iscomplex= true,
default = "in cm",
link = "Hand (unit)",
},
["in"] = {
name1 = "inch",
name2 = "inches",
symbol = "in",
utype = "length",
scale = 0.0254,
exception= "subunit_more_precision",
default = "mm",
},
["inabbreviated"] = {
name2 = "in",
symbol = "in",
utype = "length",
scale = 0.0254,
default = "mm",
link = "Inch",
},
["kly"] = {
name1 = "kilolight-year",
symbol = "kly",
utype = "length",
scale = 9.4607304725808e18,
default = "pc",
link = "Light-year#Definitions",
},
["kpc"] = {
name1 = "kiloparsec",
symbol = "kpc",
utype = "length",
scale = 3.0856775814671916e19,
default = "kly",
link = "Parsec#Parsecs and kiloparsecs",
},
["LD"] = {
name1 = "lunar distance",
symbol = "LD",
utype = "length",
scale = 384403000,
default = "km mi",
link = "Lunar distance (astronomy)",
},
["league"] = {
symbol = "league",
usename = 1,
utype = "length",
scale = 4828.032,
default = "km",
link = "League (unit)",
},
["ly"] = {
name1 = "light-year",
symbol = "ly",
utype = "length",
scale = 9.4607304725808e15,
default = "AU",
},
["m"] = {
_name1 = "metre",
_name1_us= "meter",
_symbol = "m",
utype = "length",
scale = 1,
prefixes = 1,
default = "v > 0 and v < 3 ! ftin ! ft",
link = "Metre",
},
["mi"] = {
name1 = "mile",
symbol = "mi",
utype = "length",
scale = 1609.344,
default = "km",
subdivs = { ["ch"] = { 80, default = "km" }, ["chlk"] = { 80, default = "km" }, ["chain"] = { 80, default = "km" }, ["chainlk"] = { 80, default = "km" }, ["ft"] = { 5280, default = "km" }, ["furlong"] = { 8, default = "km" }, ["yd"] = { 1760, default = "km" } },
},
["mil"] = {
symbol = "mil",
usename = 1,
utype = "length",
scale = 0.0000254,
default = "mm",
link = "Thousandth of an inch",
},
["Mly"] = {
name1 = "megalight-year",
symbol = "Mly",
utype = "length",
scale = 9.4607304725808e21,
default = "kpc",
link = "Light-year#Definitions",
},
["Mpc"] = {
name1 = "megaparsec",
symbol = "Mpc",
utype = "length",
scale = 3.0856775814671916e22,
default = "Mly",
link = "Parsec#Megaparsecs and gigaparsecs",
},
["NM"] = {
name1 = "nautical mile",
symbol = "NM",
utype = "length",
scale = 1852,
default = "km mi",
},
["nmi"] = {
name1 = "nautical mile",
symbol = "nmi",
utype = "length",
scale = 1852,
default = "km mi",
},
["oldUKnmi"] = {
name1 = "nautical mile",
symbol = "nmi",
utype = "length",
scale = 1853.184,
default = "km mi",
},
["oldUSnmi"] = {
name1 = "nautical mile",
symbol = "nmi",
utype = "length",
scale = 1853.24496,
default = "km mi",
},
["pc"] = {
name1 = "parsec",
symbol = "pc",
utype = "length",
scale = 3.0856775814671916e16,
default = "ly",
},
["perch"] = {
name2 = "perches",
symbol = "perch",
usename = 1,
utype = "length",
scale = 5.0292,
default = "ft m",
link = "Rod (unit)",
},
["pitch"] = {
name2 = "μm",
symbol = "μm",
utype = "length",
scale = 1e-6,
default = "dpi",
defkey = "pitch",
linkey = "pitch",
link = "Dots per inch",
},
["pole"] = {
symbol = "pole",
usename = 1,
utype = "length",
scale = 5.0292,
default = "ft m",
link = "Rod (unit)",
},
["pre1954U.S.nmi"] = {
name1 = "(pre-1954 U.S.) nautical mile",
symbol = "(pre‑1954 U.S.) nmi",
utype = "length",
scale = 1853.24496,
default = "km mi",
link = "Nautical mile",
},
["pre1954USnmi"] = {
name1 = "(pre-1954 US) nautical mile",
name1_us = "(pre-1954 U.S.) nautical mile",
symbol = "(pre‑1954 US) nmi",
sym_us = "(pre‑1954 U.S.) nmi",
utype = "length",
scale = 1853.24496,
default = "km mi",
link = "Nautical mile",
},
["rd"] = {
name1 = "rod",
symbol = "rd",
utype = "length",
scale = 5.0292,
default = "ft m",
link = "Rod (unit)",
},
["royal cubit"] = {
name1 = "royal cubit",
symbol = "cu",
utype = "length",
scale = 0.524,
default = "mm",
},
["rtkm"] = {
name1 = "route kilometre",
name1_us = "route kilometer",
symbol = "km",
utype = "length",
scale = 1000,
default = "mi",
link = "Kilometre",
},
["rtmi"] = {
name1 = "route mile",
symbol = "mi",
utype = "length",
scale = 1609.344,
default = "km",
link = "Mile",
},
["shaku"] = {
name2 = "shaku",
symbol = "shaku",
usename = 1,
utype = "length",
scale = 0.30303030303030304,
default = "m",
link = "Shaku (unit)",
},
["sm"] = {
name1 = "smoot",
symbol = "sm",
utype = "length",
scale = 1.70180,
default = "m",
link = "Smoot (unit)",
},
["smi"] = {
name1 = "statute mile",
symbol = "mi",
utype = "length",
scale = 1609.344,
default = "km",
subdivs = { ["chain"] = { 80, default = "km" } },
},
["solar radius"] = {
name1 = "solar radius",
name2 = "solar radii",
symbol = "''R''<sub>☉</sub>",
utype = "length",
scale = 695700e3,
default = "km",
},
["sun"] = {
name2 = "sun",
symbol = "sun",
usename = 1,
utype = "length",
scale = 0.030303030303030304,
default = "mm",
link = "Japanese units of measurement#Length",
},
["thou"] = {
name2 = "thou",
symbol = "thou",
usename = 1,
utype = "length",
scale = 0.0000254,
default = "mm",
link = "Thousandth of an inch",
},
["verst"] = {
symbol = "verst",
usename = 1,
utype = "length",
scale = 1066.8,
default = "km mi",
},
["yd"] = {
name1 = "yard",
symbol = "yd",
utype = "length",
scale = 0.9144,
default = "m",
subdivs = { ["ft"] = { 3, default = "m" } },
},
["μin"] = {
name1 = "microinch",
name2 = "microinches",
symbol = "μin",
utype = "length",
scale = 0.0000000254,
default = "nm",
link = "SI prefix#Non-metric units",
},
["Å"] = {
name1 = "ångström",
symbol = "Å",
utype = "length",
scale = 0.0000000001,
default = "in",
},
["Hz"] = {
_name1 = "hertz",
_name2 = "hertz",
_symbol = "Hz",
utype = "length",
scale = 3.3356409519815204e-9,
invert = -1,
iscomplex= true,
prefixes = 1,
default = "m",
link = "Hertz",
},
["rpm"] = {
name1 = "revolution per minute",
name2 = "revolutions per minute",
symbol = "rpm",
utype = "length",
scale = 5.5594015866358675e-11,
invert = -1,
iscomplex= true,
default = "Hz",
link = "Revolutions per minute",
},
["-ft-frac"] = {
target = "ft",
link = "Fracture gradient",
},
["-in-stiff"] = {
target = "in",
link = "Stiffness",
},
["-m-frac"] = {
target = "m",
link = "Fracture gradient",
},
["-m-stiff"] = {
target = "m",
link = "Stiffness",
},
["100km"] = {
target = "km",
multiplier= 100,
},
["100mi"] = {
target = "mi",
multiplier= 100,
},
["100miles"] = {
target = "mi",
symbol = "miles",
multiplier= 100,
},
["admiralty nmi"] = {
target = "oldUKnmi",
},
["angstrom"] = {
target = "Å",
},
["au"] = {
target = "AU",
symbol = "au",
},
["feet"] = {
target = "ft",
},
["hands"] = {
target = "hand",
},
["inch"] = {
target = "in",
},
["inches"] = {
target = "in",
},
["light-year"] = {
target = "ly",
},
["meter"] = {
target = "m",
sp_us = true,
},
["meters"] = {
target = "m",
sp_us = true,
},
["metre"] = {
target = "m",
},
["metres"] = {
target = "m",
},
["micrometre"] = {
target = "μm",
},
["micron"] = {
target = "μm",
default = "μin",
},
["mile"] = {
target = "mi",
usename = 1,
},
["miles"] = {
target = "mi",
usename = 1,
},
["parsec"] = {
target = "pc",
},
["rod"] = {
target = "rd",
},
["smoot"] = {
target = "sm",
},
["uin"] = {
target = "μin",
},
["yard"] = {
target = "yd",
},
["yards"] = {
target = "yd",
},
["yds"] = {
target = "yd",
},
["dtex"] = {
name1 = "decitex",
name2 = "decitex",
symbol = "dtex",
utype = "linear density",
scale = 1e-7,
default = "lb/yd",
link = "Units of textile measurement#Units",
},
["kg/cm"] = {
name1 = "kilogram per centimetre",
name1_us = "kilogram per centimeter",
name2 = "kilograms per centimetre",
name2_us = "kilograms per centimeter",
symbol = "kg/cm",
utype = "linear density",
scale = 100,
default = "lb/yd",
link = "Linear density",
},
["kg/m"] = {
name1 = "kilogram per metre",
name1_us = "kilogram per meter",
name2 = "kilograms per metre",
name2_us = "kilograms per meter",
symbol = "kg/m",
utype = "linear density",
scale = 1,
default = "lb/yd",
link = "Linear density",
},
["lb/ft"] = {
name1 = "pound per foot",
name2 = "pounds per foot",
symbol = "lb/ft",
utype = "linear density",
scale = 1.4881639435695539,
default = "kg/m",
link = "Linear density",
},
["lb/yd"] = {
name1 = "pound per yard",
name2 = "pounds per yard",
symbol = "lb/yd",
utype = "linear density",
scale = 0.49605464785651798,
default = "kg/m",
link = "Linear density",
},
["G"] = {
_name1 = "gauss",
_name2 = "gauss",
_symbol = "G",
utype = "magnetic field strength",
scale = 0.0001,
prefixes = 1,
default = "T",
link = "Gauss (unit)",
},
["T"] = {
_name1 = "tesla",
_symbol = "T",
utype = "magnetic field strength",
scale = 1,
prefixes = 1,
default = "G",
link = "Tesla (unit)",
},
["A/m"] = {
name1 = "ampere per metre",
name1_us = "ampere per meter",
name2 = "amperes per metre",
name2_us = "amperes per meter",
symbol = "A/m",
utype = "magnetizing field",
scale = 1,
default = "Oe",
},
["kA/m"] = {
name1 = "kiloampere per metre",
name1_us = "kiloampere per meter",
name2 = "kiloamperes per metre",
name2_us = "kiloamperes per meter",
symbol = "kA/m",
utype = "magnetizing field",
scale = 1000,
default = "kOe",
link = "Ampere per metre",
},
["MA/m"] = {
name1 = "megaampere per metre",
name1_us = "megaampere per meter",
name2 = "megaamperes per metre",
name2_us = "megaamperes per meter",
symbol = "MA/m",
utype = "magnetizing field",
scale = 1e6,
default = "kOe",
link = "Ampere per metre",
},
["Oe"] = {
_name1 = "oersted",
_symbol = "Oe",
utype = "magnetizing field",
scale = 79.5774715,
prefixes = 1,
default = "kA/m",
link = "Oersted",
},
["-Lcwt"] = {
name1 = "hundredweight",
name2 = "hundredweight",
symbol = "cwt",
utype = "mass",
scale = 50.80234544,
default = "lb",
},
["-Scwt"] = {
name1 = "hundredweight",
name2 = "hundredweight",
symbol = "cwt",
utype = "mass",
scale = 45.359237,
default = "lb",
},
["-ST"] = {
name1 = "short ton",
symbol = "ST",
utype = "mass",
scale = 907.18474,
default = "t",
},
["carat"] = {
symbol = "carat",
usename = 1,
utype = "mass",
scale = 0.0002,
default = "g",
link = "Carat (mass)",
},
["Da"] = {
_name1 = "dalton",
_symbol = "Da",
utype = "mass",
scale = 1.66053906892e-27,
prefixes = 1,
default = "kg",
link = "Dalton (unit)",
},
["drachm"] = {
name1_us = "dram",
symbol = "drachm",
usename = 1,
utype = "mass",
scale = 0.001771845195,
default = "g",
link = "Dram (unit)",
},
["dram"] = {
target = "drachm",
},
["dwt"] = {
name1 = "pennyweight",
symbol = "dwt",
utype = "mass",
scale = 0.00155517384,
default = "oz g",
},
["DWton"] = {
symbol = "deadweight ton",
usename = 1,
utype = "mass",
scale = 1016.0469088,
default = "DWtonne",
link = "Deadweight tonnage",
},
["DWtonne"] = {
name1_us = "deadweight metric ton",
symbol = "deadweight tonne",
sym_us = "~deadweight metric ton",
usename = 1,
utype = "mass",
scale = 1000,
default = "DWton",
link = "Deadweight tonnage",
},
["g"] = {
_name1 = "gram",
_symbol = "g",
utype = "mass",
scale = 0.001,
prefixes = 1,
default = "oz",
link = "Gram",
},
["gr"] = {
name1 = "grain",
symbol = "gr",
utype = "mass",
scale = 0.00006479891,
default = "g",
link = "Grain (unit)",
},
["Gt"] = {
name1 = "gigatonne",
symbol = "Gt",
utype = "mass",
scale = 1000000000000,
default = "LT ST",
link = "Tonne",
},
["impgalh2o"] = {
name1 = "imperial gallon of water",
name2 = "imperial gallons of water",
symbol = "imp gal H<sub>2</sub>O",
utype = "mass",
scale = 4.5359236999999499,
default = "lb kg",
link = "Imperial gallon",
},
["kt"] = {
name1 = "kilotonne",
symbol = "kt",
utype = "mass",
scale = 1000000,
default = "LT ST",
link = "Tonne",
},
["lb"] = {
name1 = "pound",
symbol = "lb",
utype = "mass",
scale = 0.45359237,
exception= "integer_more_precision",
default = "kg",
subdivs = { ["oz"] = { 16, default = "kg" } },
link = "Pound (mass)",
},
["Lcwt"] = {
name1 = "long hundredweight",
name2 = "long hundredweight",
symbol = "Lcwt",
usename = 1,
utype = "mass",
scale = 50.80234544,
default = "lb",
subdivs = { ["qtr"] = { 4, default = "kg" }, ["st"] = { 8, default = "kg" } },
link = "Hundredweight",
},
["long cwt"] = {
name1 = "long hundredweight",
name2 = "long hundredweight",
symbol = "long cwt",
utype = "mass",
scale = 50.80234544,
default = "lb kg",
subdivs = { ["qtr"] = { 4, default = "kg" } },
link = "Hundredweight",
},
["long qtr"] = {
name1 = "long quarter",
symbol = "long qtr",
utype = "mass",
scale = 12.70058636,
default = "lb kg",
},
["LT"] = {
symbol = "long ton",
usename = 1,
utype = "mass",
scale = 1016.0469088,
default = "t",
subdivs = { ["Lcwt"] = { 20, default = "t", unit = "-Lcwt" } },
},
["lt"] = {
name1 = "long ton",
symbol = "LT",
utype = "mass",
scale = 1016.0469088,
default = "t",
subdivs = { ["Lcwt"] = { 20, default = "t", unit = "-Lcwt" } },
},
["metric ton"] = {
symbol = "metric ton",
usename = 1,
utype = "mass",
scale = 1000,
default = "long ton",
link = "Tonne",
},
["MT"] = {
name1 = "metric ton",
symbol = "t",
utype = "mass",
scale = 1000,
default = "LT ST",
link = "Tonne",
},
["Mt"] = {
name1 = "megatonne",
symbol = "Mt",
utype = "mass",
scale = 1000000000,
default = "LT ST",
link = "Tonne",
},
["oz"] = {
name1 = "ounce",
symbol = "oz",
utype = "mass",
scale = 0.028349523125,
default = "g",
},
["ozt"] = {
name1 = "troy ounce",
symbol = "ozt",
utype = "mass",
scale = 0.0311034768,
default = "oz g",
},
["pdr"] = {
name1 = "pounder",
symbol = "pdr",
utype = "mass",
scale = 0.45359237,
default = "kg",
link = "Pound (mass)",
},
["qtr"] = {
name1 = "quarter",
symbol = "qtr",
utype = "mass",
scale = 12.70058636,
default = "lb kg",
subdivs = { ["lb"] = { 28, default = "kg" } },
link = "Long quarter",
},
["Scwt"] = {
name1 = "short hundredweight",
name2 = "short hundredweight",
symbol = "Scwt",
usename = 1,
utype = "mass",
scale = 45.359237,
default = "lb",
link = "Hundredweight",
},
["short cwt"] = {
name1 = "short hundredweight",
name2 = "short hundredweight",
symbol = "short cwt",
utype = "mass",
scale = 45.359237,
default = "lb kg",
link = "Hundredweight",
},
["short qtr"] = {
name1 = "short quarter",
symbol = "short qtr",
utype = "mass",
scale = 11.33980925,
default = "lb kg",
},
["ST"] = {
symbol = "short ton",
usename = 1,
utype = "mass",
scale = 907.18474,
default = "t",
subdivs = { ["Scwt"] = { 20, default = "t", unit = "-Scwt" } },
},
["shtn"] = {
name1 = "short ton",
symbol = "sh tn",
utype = "mass",
scale = 907.18474,
default = "t",
},
["shton"] = {
symbol = "ton",
usename = 1,
utype = "mass",
scale = 907.18474,
default = "t",
},
["solar mass"] = {
name1 = "solar mass",
name2 = "solar masses",
symbol = "''M''<sub>☉</sub>",
utype = "mass",
scale = 1.98855e30,
default = "kg",
},
["st"] = {
name1 = "stone",
name2 = "stone",
symbol = "st",
utype = "mass",
scale = 6.35029318,
default = "lb kg",
subdivs = { ["lb"] = { 14, default = "kg lb" } },
link = "Stone (unit)",
},
["t"] = {
name1 = "tonne",
name1_us = "metric ton",
symbol = "t",
utype = "mass",
scale = 1000,
default = "LT ST",
},
["tonne"] = {
name1 = "tonne",
name1_us = "metric ton",
symbol = "t",
utype = "mass",
scale = 1000,
default = "shton",
},
["troy pound"] = {
symbol = "troy pound",
usename = 1,
utype = "mass",
scale = 0.3732417216,
default = "lb kg",
link = "Troy weight",
},
["usgalh2o"] = {
name1 = "US gallon of water",
name1_us = "U.S. gallon of water",
name2 = "US gallons of water",
name2_us = "U.S. gallons of water",
symbol = "US gal H<sub>2</sub>O",
utype = "mass",
scale = 3.7776215836051126,
default = "lb kg",
link = "United States customary units#Fluid volume",
},
["viss"] = {
name2 = "viss",
symbol = "viss",
utype = "mass",
scale = 1.632932532,
default = "kg",
link = "Myanmar units of measurement#Mass",
},
["billion tonne"] = {
target = "e9t",
},
["grain"] = {
target = "gr",
},
["kilogram"] = {
target = "kg",
},
["kilotonne"] = {
target = "kt",
},
["lbs"] = {
target = "lb",
},
["lbt"] = {
target = "troy pound",
},
["lcwt"] = {
target = "Lcwt",
},
["long ton"] = {
target = "LT",
},
["mcg"] = {
target = "μg",
},
["million tonne"] = {
target = "e6t",
},
["scwt"] = {
target = "Scwt",
},
["short ton"] = {
target = "ST",
},
["stone"] = {
target = "st",
},
["thousand tonne"] = {
target = "e3t",
},
["tonnes"] = {
target = "t",
},
["kg/kW"] = {
name1 = "kilogram per kilowatt",
name2 = "kilograms per kilowatt",
symbol = "kg/kW",
utype = "mass per unit power",
scale = 0.001,
default = "lb/hp",
link = "Kilowatt",
},
["lb/hp"] = {
name1 = "pound per horsepower",
name2 = "pounds per horsepower",
symbol = "lb/hp",
utype = "mass per unit power",
scale = 0.00060827738784176115,
default = "kg/kW",
link = "Horsepower",
},
["kg/h"] = {
per = { "kg", "h" },
utype = "mass per unit time",
default = "lb/h",
},
["lb/h"] = {
per = { "lb", "h" },
utype = "mass per unit time",
default = "kg/h",
},
["g-mol/d"] = {
name1 = "gram-mole per day",
name2 = "gram-moles per day",
symbol = "g‑mol/d",
utype = "molar rate",
scale = 1.1574074074074073e-5,
default = "μmol/s",
link = "Mole (unit)",
},
["g-mol/h"] = {
name1 = "gram-mole per hour",
name2 = "gram-moles per hour",
symbol = "g‑mol/h",
utype = "molar rate",
scale = 0.00027777777777777778,
default = "mmol/s",
link = "Mole (unit)",
},
["g-mol/min"] = {
name1 = "gram-mole per minute",
name2 = "gram-moles per minute",
symbol = "g‑mol/min",
utype = "molar rate",
scale = 0.016666666666666666,
default = "g-mol/s",
link = "Mole (unit)",
},
["g-mol/s"] = {
name1 = "gram-mole per second",
name2 = "gram-moles per second",
symbol = "g‑mol/s",
utype = "molar rate",
scale = 1,
default = "lb-mol/min",
link = "Mole (unit)",
},
["gmol/d"] = {
name1 = "gram-mole per day",
name2 = "gram-moles per day",
symbol = "gmol/d",
utype = "molar rate",
scale = 1.1574074074074073e-5,
default = "μmol/s",
link = "Mole (unit)",
},
["gmol/h"] = {
name1 = "gram-mole per hour",
name2 = "gram-moles per hour",
symbol = "gmol/h",
utype = "molar rate",
scale = 0.00027777777777777778,
default = "mmol/s",
link = "Mole (unit)",
},
["gmol/min"] = {
name1 = "gram-mole per minute",
name2 = "gram-moles per minute",
symbol = "gmol/min",
utype = "molar rate",
scale = 0.016666666666666666,
default = "gmol/s",
link = "Mole (unit)",
},
["gmol/s"] = {
name1 = "gram-mole per second",
name2 = "gram-moles per second",
symbol = "gmol/s",
utype = "molar rate",
scale = 1,
default = "lbmol/min",
link = "Mole (unit)",
},
["kmol/d"] = {
name1 = "kilomole per day",
name2 = "kilomoles per day",
symbol = "kmol/d",
utype = "molar rate",
scale = 0.011574074074074073,
default = "mmol/s",
link = "Mole (unit)",
},
["kmol/h"] = {
name1 = "kilomole per hour",
name2 = "kilomoles per hour",
symbol = "kmol/h",
utype = "molar rate",
scale = 0.27777777777777779,
default = "mol/s",
link = "Mole (unit)",
},
["kmol/min"] = {
name1 = "kilomole per minute",
name2 = "kilomoles per minute",
symbol = "kmol/min",
utype = "molar rate",
scale = 16.666666666666668,
default = "mol/s",
link = "Kilomole (unit)",
},
["kmol/s"] = {
name1 = "kilomole per second",
name2 = "kilomoles per second",
symbol = "kmol/s",
utype = "molar rate",
scale = 1000,
default = "lb-mol/s",
link = "Mole (unit)",
},
["lb-mol/d"] = {
name1 = "pound-mole per day",
name2 = "pound-moles per day",
symbol = "lb‑mol/d",
utype = "molar rate",
scale = 0.0052499116898148141,
default = "mmol/s",
link = "Pound-mole",
},
["lb-mol/h"] = {
name1 = "pound-mole per hour",
name2 = "pound-moles per hour",
symbol = "lb‑mol/h",
utype = "molar rate",
scale = 0.12599788055555555,
default = "mol/s",
link = "Pound-mole",
},
["lb-mol/min"] = {
name1 = "pound-mole per minute",
name2 = "pound-moles per minute",
symbol = "lb‑mol/min",
utype = "molar rate",
scale = 7.5598728333333334,
default = "mol/s",
link = "Pound-mole",
},
["lb-mol/s"] = {
name1 = "pound-mole per second",
name2 = "pound-moles per second",
symbol = "lb‑mol/s",
utype = "molar rate",
scale = 453.59237,
default = "kmol/s",
link = "Pound-mole",
},
["lbmol/d"] = {
name1 = "pound-mole per day",
name2 = "pound-moles per day",
symbol = "lbmol/d",
utype = "molar rate",
scale = 0.0052499116898148141,
default = "mmol/s",
link = "Pound-mole",
},
["lbmol/h"] = {
name1 = "pound-mole per hour",
name2 = "pound-moles per hour",
symbol = "lbmol/h",
utype = "molar rate",
scale = 0.12599788055555555,
default = "mol/s",
link = "Pound-mole",
},
["lbmol/min"] = {
name1 = "pound-mole per minute",
name2 = "pound-moles per minute",
symbol = "lbmol/min",
utype = "molar rate",
scale = 7.5598728333333334,
default = "mol/s",
link = "Pound-mole",
},
["lbmol/s"] = {
name1 = "pound-mole per second",
name2 = "pound-moles per second",
symbol = "lbmol/s",
utype = "molar rate",
scale = 453.59237,
default = "kmol/s",
link = "Pound-mole",
},
["mmol/s"] = {
name1 = "millimole per second",
name2 = "millimoles per second",
symbol = "mmol/s",
utype = "molar rate",
scale = 0.001,
default = "lb-mol/d",
link = "Mole (unit)",
},
["mol/d"] = {
name1 = "mole per day",
name2 = "moles per day",
symbol = "mol/d",
utype = "molar rate",
scale = 1.1574074074074073e-5,
default = "μmol/s",
link = "Mole (unit)",
},
["mol/h"] = {
name1 = "mole per hour",
name2 = "moles per hour",
symbol = "mol/h",
utype = "molar rate",
scale = 0.00027777777777777778,
default = "mmol/s",
link = "Mole (unit)",
},
["mol/min"] = {
name1 = "mole per minute",
name2 = "moles per minute",
symbol = "mol/min",
utype = "molar rate",
scale = 0.016666666666666666,
default = "mol/s",
link = "Mole (unit)",
},
["mol/s"] = {
name1 = "mole per second",
name2 = "moles per second",
symbol = "mol/s",
utype = "molar rate",
scale = 1,
default = "lb-mol/min",
link = "Mole (unit)",
},
["μmol/s"] = {
name1 = "micromole per second",
name2 = "micromoles per second",
symbol = "μmol/s",
utype = "molar rate",
scale = 0.000001,
default = "lb-mol/d",
link = "Mole (unit)",
},
["umol/s"] = {
target = "μmol/s",
},
["/acre"] = {
name1 = "per acre",
name2 = "per acre",
symbol = "/acre",
utype = "per unit area",
scale = 0.00024710538146716532,
default = "/ha",
link = "Acre",
},
["/ha"] = {
name1 = "per hectare",
name2 = "per hectare",
symbol = "/ha",
utype = "per unit area",
scale = 100e-6,
default = "/acre",
link = "Hectare",
},
["/sqcm"] = {
name1 = "per square centimetre",
name1_us = "per square centimeter",
name2 = "per square centimetre",
name2_us = "per square centimeter",
symbol = "/cm<sup>2</sup>",
utype = "per unit area",
scale = 1e4,
default = "/sqin",
link = "Square centimetre",
},
["/sqin"] = {
name1 = "per square inch",
name2 = "per square inch",
symbol = "/in<sup>2</sup>",
utype = "per unit area",
scale = 1550.0031000062002,
default = "/sqcm",
link = "Square inch",
},
["/sqkm"] = {
name1 = "per square kilometre",
name1_us = "per square kilometer",
name2 = "per square kilometre",
name2_us = "per square kilometer",
symbol = "/km<sup>2</sup>",
utype = "per unit area",
scale = 1e-6,
default = "/sqmi",
link = "Square kilometre",
},
["/sqmi"] = {
name1 = "per square mile",
name2 = "per square mile",
symbol = "/sq mi",
utype = "per unit area",
scale = 3.8610215854244582e-7,
default = "/sqkm",
link = "Square mile",
},
["PD/acre"] = {
name1 = "inhabitant per acre",
name2 = "inhabitants per acre",
symbol = "/acre",
utype = "per unit area",
scale = 0.00024710538146716532,
default = "PD/ha",
link = "Acre",
},
["PD/ha"] = {
name1 = "inhabitant per hectare",
name2 = "inhabitants per hectare",
symbol = "/ha",
utype = "per unit area",
scale = 100e-6,
default = "PD/acre",
link = "Hectare",
},
["PD/sqkm"] = {
name1 = "inhabitant per square kilometre",
name1_us = "inhabitant per square kilometer",
name2 = "inhabitants per square kilometre",
name2_us = "inhabitants per square kilometer",
symbol = "/km<sup>2</sup>",
utype = "per unit area",
scale = 1e-6,
default = "PD/sqmi",
link = "Square kilometre",
},
["PD/sqmi"] = {
name1 = "inhabitant per square mile",
name2 = "inhabitants per square mile",
symbol = "/sq mi",
utype = "per unit area",
scale = 3.8610215854244582e-7,
default = "PD/sqkm",
link = "Square mile",
},
["/cm2"] = {
target = "/sqcm",
},
["/in2"] = {
target = "/sqin",
},
["/km2"] = {
target = "/sqkm",
},
["pd/acre"] = {
target = "PD/acre",
},
["pd/ha"] = {
target = "PD/ha",
},
["PD/km2"] = {
target = "PD/sqkm",
},
["pd/km2"] = {
target = "PD/sqkm",
},
["PD/km²"] = {
target = "PD/sqkm",
},
["pd/sqkm"] = {
target = "PD/sqkm",
},
["pd/sqmi"] = {
target = "PD/sqmi",
},
["/l"] = {
name1 = "per litre",
name1_us = "per liter",
name2 = "per litre",
name2_us = "per liter",
symbol = "/l",
utype = "per unit volume",
scale = 1000,
default = "/usgal",
link = "Litre",
},
["/L"] = {
name1 = "per litre",
name1_us = "per liter",
name2 = "per litre",
name2_us = "per liter",
symbol = "/L",
utype = "per unit volume",
scale = 1000,
default = "/usgal",
link = "Litre",
},
["/USgal"] = {
name1 = "per gallon",
name2 = "per gallon",
symbol = "/gal",
utype = "per unit volume",
scale = 264.172052,
default = "/L",
link = "US gallon",
customary= 2,
},
["/usgal"] = {
target = "/USgal",
},
["bhp"] = {
name1 = "brake horsepower",
name2 = "brake horsepower",
symbol = "bhp",
utype = "power",
scale = 745.69987158227022,
default = "kW",
link = "Horsepower#Brake horsepower",
},
["Cal/d"] = {
name1 = "large calorie per day",
name2 = "large calories per day",
symbol = "Cal/d",
utype = "power",
scale = 0.048425925925925928,
default = "kJ/d",
link = "Calorie",
},
["Cal/h"] = {
name1 = "large calorie per hour",
name2 = "large calories per hour",
symbol = "Cal/h",
utype = "power",
scale = 1.1622222222222223,
default = "kJ/h",
link = "Calorie",
},
["cal/h"] = {
name1 = "calorie per hour",
name2 = "calories per hour",
symbol = "cal/h",
utype = "power",
scale = 0.0011622222222222223,
default = "W",
link = "Calorie",
},
["CV"] = {
name1 = "metric horsepower",
name2 = "metric horsepower",
symbol = "CV",
utype = "power",
scale = 735.49875,
default = "kW",
},
["hk"] = {
name1 = "metric horsepower",
name2 = "metric horsepower",
symbol = "hk",
utype = "power",
scale = 735.49875,
default = "kW",
},
["hp"] = {
name1 = "horsepower",
name2 = "horsepower",
symbol = "hp",
utype = "power",
scale = 745.69987158227022,
default = "kW",
},
["hp-electric"] = {
name1 = "electric horsepower",
name2 = "electric horsepower",
symbol = "hp",
utype = "power",
scale = 746,
default = "kW",
link = "Horsepower#Electrical horsepower",
},
["hp-electrical"] = {
name1 = "electrical horsepower",
name2 = "electrical horsepower",
symbol = "hp",
utype = "power",
scale = 746,
default = "kW",
link = "Horsepower#Electrical horsepower",
},
["hp-metric"] = {
name1 = "metric horsepower",
name2 = "metric horsepower",
symbol = "hp",
utype = "power",
scale = 735.49875,
default = "kW",
},
["ihp"] = {
name1 = "indicated horsepower",
name2 = "indicated horsepower",
symbol = "ihp",
utype = "power",
scale = 745.69987158227022,
default = "kW",
link = "Horsepower#Indicated horsepower",
},
["kcal/h"] = {
name1 = "kilocalorie per hour",
name2 = "kilocalories per hour",
symbol = "kcal/h",
utype = "power",
scale = 1.1622222222222223,
default = "kW",
link = "Calorie",
},
["kJ/d"] = {
name1 = "kilojoule per day",
name2 = "kilojoules per day",
symbol = "kJ/d",
utype = "power",
scale = 0.011574074074074073,
default = "Cal/d",
link = "Kilojoule",
},
["kJ/h"] = {
name1 = "kilojoule per hour",
name2 = "kilojoules per hour",
symbol = "kJ/h",
utype = "power",
scale = 0.27777777777777779,
default = "W",
link = "Kilojoule",
},
["PS"] = {
name1 = "metric horsepower",
name2 = "metric horsepower",
symbol = "PS",
utype = "power",
scale = 735.49875,
default = "kW",
},
["shp"] = {
name1 = "shaft horsepower",
name2 = "shaft horsepower",
symbol = "shp",
utype = "power",
scale = 745.69987158227022,
default = "kW",
link = "Horsepower#Shaft horsepower",
},
["W"] = {
_name1 = "watt",
_symbol = "W",
utype = "power",
scale = 1,
prefixes = 1,
default = "hp",
link = "Watt",
},
["BTU/h"] = {
per = { "BTU", "h" },
utype = "power",
default = "W",
},
["Btu/h"] = {
per = { "Btu", "h" },
utype = "power",
default = "W",
},
["BHP"] = {
target = "bhp",
},
["btu/h"] = {
target = "BTU/h",
},
["HP"] = {
target = "hp",
},
["Hp"] = {
target = "hp",
},
["hp-mechanical"] = {
target = "hp",
},
["IHP"] = {
target = "ihp",
},
["SHP"] = {
target = "shp",
},
["whp"] = {
target = "hp",
},
["hp/lb"] = {
name1 = "horsepower per pound",
name2 = "horsepower per pound",
symbol = "hp/lb",
utype = "power per unit mass",
scale = 1643.986806,
default = "kW/kg",
link = "Power-to-weight ratio",
},
["hp/LT"] = {
name1 = "horsepower per long ton",
name2 = "horsepower per long ton",
symbol = "hp/LT",
utype = "power per unit mass",
scale = 0.73392268125000004,
default = "kW/t",
link = "Power-to-weight ratio",
},
["hp/ST"] = {
name1 = "horsepower per short ton",
name2 = "horsepower per short ton",
symbol = "hp/ST",
utype = "power per unit mass",
scale = 0.821993403,
default = "kW/t",
link = "Power-to-weight ratio",
},
["hp/t"] = {
name1 = "horsepower per tonne",
name2 = "horsepower per tonne",
symbol = "hp/t",
utype = "power per unit mass",
scale = 0.74569987158227022,
default = "kW/t",
link = "Power-to-weight ratio",
},
["kW/kg"] = {
name1 = "kilowatt per kilogram",
name2 = "kilowatts per kilogram",
symbol = "kW/kg",
utype = "power per unit mass",
scale = 1000,
default = "hp/lb",
link = "Power-to-weight ratio",
},
["kW/t"] = {
name1 = "kilowatt per tonne",
name2 = "kilowatts per tonne",
symbol = "kW/t",
utype = "power per unit mass",
scale = 1,
default = "PS/t",
link = "Power-to-weight ratio",
},
["PS/t"] = {
name1 = "metric horsepower per tonne",
name2 = "metric horsepower per tonne",
symbol = "PS/t",
utype = "power per unit mass",
scale = 0.73549875,
default = "kW/t",
link = "Power-to-weight ratio",
},
["shp/lb"] = {
name1 = "shaft horsepower per pound",
name2 = "shaft horsepower per pound",
symbol = "shp/lb",
utype = "power per unit mass",
scale = 1643.986806,
default = "kW/kg",
link = "Power-to-weight ratio",
},
["hp/tonne"] = {
target = "hp/t",
symbol = "hp/tonne",
default = "kW/tonne",
},
["kW/tonne"] = {
target = "kW/t",
symbol = "kW/tonne",
},
["-lb/in2"] = {
name1 = "pound per square inch",
name2 = "pounds per square inch",
symbol = "lb/in<sup>2</sup>",
utype = "pressure",
scale = 6894.7572931683608,
default = "kPa kgf/cm2",
},
["atm"] = {
name1 = "standard atmosphere",
symbol = "atm",
utype = "pressure",
scale = 101325,
default = "kPa",
link = "Atmosphere (unit)",
},
["Ba"] = {
name1 = "barye",
symbol = "Ba",
utype = "pressure",
scale = 0.1,
default = "Pa",
},
["bar"] = {
symbol = "bar",
utype = "pressure",
scale = 100000,
default = "kPa",
link = "Bar (unit)",
},
["dbar"] = {
name1 = "decibar",
symbol = "dbar",
utype = "pressure",
scale = 10000,
default = "kPa",
link = "Bar (unit)",
},
["inHg"] = {
name1 = "inch of mercury",
name2 = "inches of mercury",
symbol = "inHg",
utype = "pressure",
scale = 3386.388640341,
default = "kPa",
},
["kBa"] = {
name1 = "kilobarye",
symbol = "kBa",
utype = "pressure",
scale = 100,
default = "hPa",
link = "Barye",
},
["kg-f/cm2"] = {
name1 = "kilogram-force per square centimetre",
name1_us = "kilogram-force per square centimeter",
name2 = "kilograms-force per square centimetre",
name2_us = "kilograms-force per square centimeter",
symbol = "kg<sub>f</sub>/cm<sup>2</sup>",
utype = "pressure",
scale = 98066.5,
default = "psi",
link = "Kilogram-force",
},
["kg/cm2"] = {
name1 = "kilogram per square centimetre",
name1_us = "kilogram per square centimeter",
name2 = "kilograms per square centimetre",
name2_us = "kilograms per square centimeter",
symbol = "kg/cm<sup>2</sup>",
utype = "pressure",
scale = 98066.5,
default = "psi",
link = "Kilogram-force",
},
["kgf/cm2"] = {
name1 = "kilogram-force per square centimetre",
name1_us = "kilogram-force per square centimeter",
name2 = "kilograms-force per square centimetre",
name2_us = "kilograms-force per square centimeter",
symbol = "kgf/cm<sup>2</sup>",
utype = "pressure",
scale = 98066.5,
default = "psi",
link = "Kilogram-force",
},
["ksi"] = {
name1 = "kilopound per square inch",
name2 = "kilopounds per square inch",
symbol = "ksi",
utype = "pressure",
scale = 6894757.2931683613,
default = "MPa",
link = "Pound per square inch",
},
["lbf/in2"] = {
name1 = "pound-force per square inch",
name2 = "pounds-force per square inch",
symbol = "lbf/in<sup>2</sup>",
utype = "pressure",
scale = 6894.7572931683608,
default = "kPa kgf/cm2",
},
["mb"] = {
name1 = "millibar",
symbol = "mb",
utype = "pressure",
scale = 100,
default = "hPa",
link = "Bar (unit)",
},
["mbar"] = {
name1 = "millibar",
symbol = "mbar",
utype = "pressure",
scale = 100,
default = "hPa",
link = "Bar (unit)",
},
["mmHg"] = {
name1 = "millimetre of mercury",
name1_us = "millimeter of mercury",
name2 = "millimetres of mercury",
name2_us = "millimeters of mercury",
symbol = "mmHg",
utype = "pressure",
scale = 133.322387415,
default = "kPa",
},
["Pa"] = {
_name1 = "pascal",
_symbol = "Pa",
utype = "pressure",
scale = 1,
prefixes = 1,
default = "psi",
link = "Pascal (unit)",
},
["psf"] = {
name1 = "pound per square foot",
name2 = "pounds per square foot",
symbol = "psf",
utype = "pressure",
scale = 47.880258980335839,
default = "kPa",
link = "Pound per square inch",
},
["psi"] = {
name1 = "pound per square inch",
name2 = "pounds per square inch",
symbol = "psi",
utype = "pressure",
scale = 6894.7572931683608,
default = "kPa",
},
["Torr"] = {
name1 = "torr",
symbol = "Torr",
utype = "pressure",
scale = 133.32236842105263,
default = "kPa",
},
["N/cm2"] = {
per = { "N", "cm2" },
utype = "pressure",
default = "psi",
},
["N/m2"] = {
per = { "N", "m2" },
utype = "pressure",
default = "psi",
},
["g/cm2"] = {
per = { "g", "cm2" },
utype = "pressure",
default = "lb/sqft",
multiplier= 9.80665,
},
["g/m2"] = {
per = { "g", "m2" },
utype = "pressure",
default = "lb/sqft",
multiplier= 9.80665,
},
["kg/ha"] = {
per = { "kg", "ha" },
utype = "pressure",
default = "lb/acre",
multiplier= 9.80665,
},
["kg/m2"] = {
per = { "kg", "m2" },
utype = "pressure",
default = "lb/sqft",
multiplier= 9.80665,
},
["lb/1000sqft"] = {
per = { "lb", "1000sqft" },
utype = "pressure",
default = "g/m2",
multiplier= 9.80665,
},
["lb/acre"] = {
per = { "lb", "acre" },
utype = "pressure",
default = "kg/ha",
multiplier= 9.80665,
},
["lb/sqft"] = {
per = { "lb", "sqft" },
utype = "pressure",
default = "kg/m2",
multiplier= 9.80665,
},
["lb/sqyd"] = {
per = { "lb", "sqyd" },
utype = "pressure",
default = "kg/m2",
multiplier= 9.80665,
},
["LT/acre"] = {
per = { "LT", "acre" },
utype = "pressure",
default = "t/ha",
multiplier= 9.80665,
},
["MT/ha"] = {
per = { "MT", "ha" },
utype = "pressure",
default = "LT/acre ST/acre",
multiplier= 9.80665,
},
["oz/sqft"] = {
per = { "oz", "sqft" },
utype = "pressure",
default = "g/m2",
multiplier= 9.80665,
},
["oz/sqyd"] = {
per = { "oz", "sqyd" },
utype = "pressure",
default = "g/m2",
multiplier= 9.80665,
},
["ST/acre"] = {
per = { "ST", "acre" },
utype = "pressure",
default = "t/ha",
multiplier= 9.80665,
},
["t/ha"] = {
per = { "t", "ha" },
utype = "pressure",
default = "LT/acre ST/acre",
multiplier= 9.80665,
},
["tonne/acre"] = {
per = { "tonne", "acre" },
utype = "pressure",
default = "tonne/ha",
multiplier= 9.80665,
},
["tonne/ha"] = {
per = { "tonne", "ha" },
utype = "pressure",
default = "tonne/acre",
multiplier= 9.80665,
},
["kgfpsqcm"] = {
target = "kgf/cm2",
},
["kgpsqcm"] = {
target = "kg/cm2",
},
["kN/m2"] = {
target = "kPa",
},
["lb/in2"] = {
target = "lbf/in2",
},
["torr"] = {
target = "Torr",
},
["Bq"] = {
_name1 = "becquerel",
_symbol = "Bq",
utype = "radioactivity",
scale = 1,
prefixes = 1,
default = "pCi",
link = "Becquerel",
},
["Ci"] = {
_name1 = "curie",
_symbol = "Ci",
utype = "radioactivity",
scale = 3.7e10,
prefixes = 1,
default = "GBq",
link = "Curie (unit)",
},
["Rd"] = {
_name1 = "rutherford",
_symbol = "Rd",
utype = "radioactivity",
scale = 1e6,
prefixes = 1,
default = "MBq",
link = "Rutherford (unit)",
},
["cm/h"] = {
name1 = "centimetre per hour",
name1_us = "centimeter per hour",
name2 = "centimetres per hour",
name2_us = "centimeters per hour",
symbol = "cm/h",
utype = "speed",
scale = 2.7777777777777775e-6,
default = "in/h",
link = "Metre per second",
},
["cm/s"] = {
name1 = "centimetre per second",
name1_us = "centimeter per second",
name2 = "centimetres per second",
name2_us = "centimeters per second",
symbol = "cm/s",
utype = "speed",
scale = 0.01,
default = "in/s",
link = "Metre per second",
},
["cm/year"] = {
name1 = "centimetre per year",
name1_us = "centimeter per year",
name2 = "centimetres per year",
name2_us = "centimeters per year",
symbol = "cm/year",
utype = "speed",
scale = 3.168873850681143e-10,
default = "in/year",
link = "Orders of magnitude (speed)",
},
["foot/s"] = {
name1 = "foot per second",
name2 = "foot per second",
symbol = "ft/s",
utype = "speed",
scale = 0.3048,
default = "m/s",
},
["ft/min"] = {
name1 = "foot per minute",
name2 = "feet per minute",
symbol = "ft/min",
utype = "speed",
scale = 0.00508,
default = "m/min",
link = "Feet per second",
},
["ft/s"] = {
name1 = "foot per second",
name2 = "feet per second",
symbol = "ft/s",
utype = "speed",
scale = 0.3048,
default = "m/s",
link = "Feet per second",
},
["furlong per fortnight"] = {
name2 = "furlongs per fortnight",
symbol = "furlong per fortnight",
usename = 1,
utype = "speed",
scale = 0.00016630952380952381,
default = "km/h mph",
link = "FFF system",
},
["in/h"] = {
name1 = "inch per hour",
name2 = "inches per hour",
symbol = "in/h",
utype = "speed",
scale = 7.0555555555555559e-6,
default = "cm/h",
link = "Inch",
},
["in/s"] = {
name1 = "inch per second",
name2 = "inches per second",
symbol = "in/s",
utype = "speed",
scale = 0.0254,
default = "cm/s",
link = "Inch",
},
["in/year"] = {
name1 = "inch per year",
name2 = "inches per year",
symbol = "in/year",
utype = "speed",
scale = 8.0489395807301024e-10,
default = "cm/year",
link = "Orders of magnitude (speed)",
},
["isp"] = {
name1 = "second",
symbol = "s",
utype = "speed",
scale = 9.80665,
default = "km/s",
link = "Specific impulse",
},
["km/d"] = {
name1 = "kilometre per day",
name1_us = "kilometer per day",
name2 = "kilometres per day",
name2_us = "kilometers per day",
symbol = "km/d",
utype = "speed",
scale = 1.1574074074074074e-2,
default = "mi/d",
link = "Orders of magnitude (speed)",
},
["km/h"] = {
name1 = "kilometre per hour",
name1_us = "kilometer per hour",
name2 = "kilometres per hour",
name2_us = "kilometers per hour",
symbol = "km/h",
utype = "speed",
scale = 0.27777777777777779,
default = "mph",
link = "Kilometres per hour",
},
["km/s"] = {
name1 = "kilometre per second",
name1_us = "kilometer per second",
name2 = "kilometres per second",
name2_us = "kilometers per second",
symbol = "km/s",
utype = "speed",
scale = 1000,
default = "mi/s",
link = "Metre per second",
},
["kn"] = {
name1 = "knot",
symbol = "kn",
utype = "speed",
scale = 0.51444444444444448,
default = "km/h mph",
link = "Knot (unit)",
},
["kNs/kg"] = {
name2 = "kN‑s/kg",
symbol = "kN‑s/kg",
utype = "speed",
scale = 1000,
default = "isp",
link = "Specific impulse",
},
["m/min"] = {
name1 = "metre per minute",
name1_us = "meter per minute",
name2 = "metres per minute",
name2_us = "meters per minute",
symbol = "m/min",
utype = "speed",
scale = 0.016666666666666666,
default = "ft/min",
link = "Metre per second",
},
["m/s"] = {
name1 = "metre per second",
name1_us = "meter per second",
name2 = "metres per second",
name2_us = "meters per second",
symbol = "m/s",
utype = "speed",
scale = 1,
default = "ft/s",
},
["Mach"] = {
name2 = "Mach",
symbol = "Mach",
utype = "speed",
builtin = "mach",
scale = 0,
iscomplex= true,
default = "km/h mph",
link = "Mach number",
},
["mi/d"] = {
name1 = "mile per day",
name2 = "miles per day",
symbol = "mi/d",
utype = "speed",
scale = 1.8626666666666667e-2,
default = "km/d",
link = "Orders of magnitude (speed)",
},
["mi/s"] = {
name1 = "mile per second",
name2 = "miles per second",
symbol = "mi/s",
utype = "speed",
scale = 1609.344,
default = "km/s",
link = "Mile",
},
["mm/h"] = {
name1 = "millimetre per hour",
name1_us = "millimeter per hour",
name2 = "millimetres per hour",
name2_us = "millimeters per hour",
symbol = "mm/h",
utype = "speed",
scale = 2.7777777777777781e-7,
default = "in/h",
link = "Metre per second",
},
["mph"] = {
name1 = "mile per hour",
name2 = "miles per hour",
symbol = "mph",
utype = "speed",
scale = 0.44704,
default = "km/h",
link = "Miles per hour",
},
["Ns/kg"] = {
name2 = "N‑s/kg",
symbol = "N‑s/kg",
utype = "speed",
scale = 1,
default = "isp",
link = "Specific impulse",
},
["si tsfc"] = {
name2 = "g/(kN⋅s)",
symbol = "g/(kN⋅s)",
utype = "speed",
scale = 9.9999628621379242e-7,
invert = -1,
iscomplex= true,
default = "tsfc",
link = "Thrust specific fuel consumption",
},
["tsfc"] = {
name2 = "lb/(lbf⋅h)",
symbol = "lb/(lbf⋅h)",
utype = "speed",
scale = 2.832545036049801e-5,
invert = -1,
iscomplex= true,
default = "si tsfc",
link = "Thrust specific fuel consumption",
},
["cm/y"] = {
target = "cm/year",
},
["cm/yr"] = {
target = "cm/year",
},
["in/y"] = {
target = "in/year",
},
["in/yr"] = {
target = "in/year",
},
["knot"] = {
target = "kn",
},
["knots"] = {
target = "kn",
},
["kph"] = {
target = "km/h",
},
["mi/h"] = {
target = "mph",
},
["mm/s"] = {
per = { "mm", "s" },
utype = "speed",
default = "in/s",
link = "Metre per second",
},
["C"] = {
name1 = "degree Celsius",
name2 = "degrees Celsius",
symbol = "°C",
usesymbol= 1,
utype = "temperature",
scale = 1,
offset = -273.15,
iscomplex= true,
istemperature= true,
default = "F",
link = "Celsius",
},
["F"] = {
name1 = "degree Fahrenheit",
name2 = "degrees Fahrenheit",
symbol = "°F",
usesymbol= 1,
utype = "temperature",
scale = 0.55555555555555558,
offset = 32-273.15*(9/5),
iscomplex= true,
istemperature= true,
default = "C",
link = "Fahrenheit",
},
["K"] = {
_name1 = "kelvin",
_symbol = "K",
usesymbol= 1,
utype = "temperature",
scale = 1,
offset = 0,
iscomplex= true,
istemperature= true,
prefixes = 1,
default = "C F",
link = "Kelvin",
},
["keVT"] = {
name1 = "kiloelectronvolt",
symbol = "keV",
utype = "temperature",
scale = 11604518.121550081,
offset = 0,
iscomplex= true,
default = "MK",
defkey = "keVT",
linkey = "keVT",
link = "Electronvolt",
},
["R"] = {
name1 = "degree Rankine",
name2 = "degrees Rankine",
symbol = "°R",
usesymbol= 1,
utype = "temperature",
scale = 0.55555555555555558,
offset = 0,
iscomplex= true,
istemperature= true,
default = "K F C",
link = "Rankine scale",
},
["Celsius"] = {
target = "C",
},
["°C"] = {
target = "C",
},
["°F"] = {
target = "F",
},
["°R"] = {
target = "R",
},
["C-change"] = {
name1 = "degree Celsius change",
name2 = "degrees Celsius change",
symbol = "°C",
usesymbol= 1,
utype = "temperature change",
scale = 1,
default = "F-change",
link = "Celsius",
},
["F-change"] = {
name1 = "degree Fahrenheit change",
name2 = "degrees Fahrenheit change",
symbol = "°F",
usesymbol= 1,
utype = "temperature change",
scale = 0.55555555555555558,
default = "C-change",
link = "Fahrenheit",
},
["K-change"] = {
name1 = "kelvin change",
name2 = "kelvins change",
symbol = "K",
usesymbol= 1,
utype = "temperature change",
scale = 1,
default = "F-change",
link = "Kelvin",
},
["°C-change"] = {
target = "C-change",
},
["°F-change"] = {
target = "F-change",
},
["century"] = {
name1 = "century",
name2 = "centuries",
symbol = "ha",
utype = "time",
scale = 3155760000,
default = "Gs",
},
["d"] = {
name1 = "day",
symbol = "d",
utype = "time",
scale = 86400,
default = "ks",
},
["decade"] = {
name1 = "decade",
symbol = "daa",
utype = "time",
scale = 315576000,
default = "Ms",
},
["dog year"] = {
name1 = "dog year",
symbol = "dog yr",
utype = "time",
scale = 220903200,
default = "years",
link = "List of unusual units of measurement#Dog year",
},
["fortnight"] = {
symbol = "fortnight",
usename = 1,
utype = "time",
scale = 1209600,
default = "week",
},
["h"] = {
name1 = "hour",
symbol = "h",
utype = "time",
scale = 3600,
default = "ks",
},
["long billion year"] = {
name1 = "billion years",
name2 = "billion years",
symbol = "Ta",
utype = "time",
scale = 31557600000000000000,
default = "Es",
link = "Annum",
},
["millennium"] = {
name1 = "millennium",
name2 = "millennia",
symbol = "ka",
utype = "time",
scale = 31557600000,
default = "Gs",
},
["milliard year"] = {
name1 = "milliard years",
name2 = "milliard years",
symbol = "Ga",
utype = "time",
scale = 31557600000000000,
default = "Ps",
link = "Annum",
},
["million year"] = {
name1 = "million years",
name2 = "million years",
symbol = "Ma",
utype = "time",
scale = 31557600000000,
default = "Ts",
link = "Annum",
},
["min"] = {
name1 = "minute",
symbol = "min",
utype = "time",
scale = 60,
default = "s",
},
["month"] = {
symbol = "month",
usename = 1,
utype = "time",
scale = 2629800,
default = "Ms",
},
["months"] = {
name1 = "month",
symbol = "mo",
utype = "time",
scale = 2629800,
default = "year",
},
["s"] = {
_name1 = "second",
_symbol = "s",
utype = "time",
scale = 1,
prefixes = 1,
default = "v < 7200 ! min ! h",
link = "Second",
},
["short billion year"] = {
name1 = "billion years",
name2 = "billion years",
symbol = "Ga",
utype = "time",
scale = 31557600000000000,
default = "Ps",
link = "Annum",
},
["short trillion year"] = {
name1 = "trillion years",
name2 = "trillion years",
symbol = "Ta",
utype = "time",
scale = 31557600000000000000,
default = "Es",
link = "Annum",
},
["thousand million year"] = {
name1 = "thousand million years",
name2 = "thousand million years",
symbol = "Ga",
utype = "time",
scale = 31557600000000000,
default = "Ps",
link = "Annum",
},
["wk"] = {
symbol = "week",
usename = 1,
utype = "time",
scale = 604800,
default = "Ms",
},
["year"] = {
name1 = "year",
symbol = "a",
utype = "time",
scale = 31557600,
default = "Ms",
link = "Annum",
},
["years"] = {
name1 = "year",
symbol = "yr",
utype = "time",
scale = 31557600,
default = "Ms",
link = "Annum",
},
["byr"] = {
target = "short billion year",
},
["day"] = {
target = "d",
},
["days"] = {
target = "d",
},
["dog yr"] = {
target = "dog year",
},
["Gyr"] = {
target = "thousand million year",
},
["hour"] = {
target = "h",
},
["hours"] = {
target = "h",
},
["kMyr"] = {
target = "thousand million year",
},
["kmyr"] = {
target = "thousand million year",
},
["kyr"] = {
target = "millennium",
},
["long byr"] = {
target = "long billion year",
},
["minute"] = {
target = "min",
},
["minutes"] = {
target = "min",
},
["mth"] = {
target = "month",
},
["Myr"] = {
target = "million year",
},
["myr"] = {
target = "million year",
},
["sec"] = {
target = "s",
},
["second"] = {
target = "s",
},
["seconds"] = {
target = "s",
},
["tmyr"] = {
target = "thousand million year",
},
["tryr"] = {
target = "short trillion year",
},
["tyr"] = {
target = "millennium",
},
["week"] = {
target = "wk",
},
["weeks"] = {
target = "wk",
},
["yr"] = {
target = "year",
},
["kg.m"] = {
name1 = "kilogram metre",
name1_us = "kilogram meter",
symbol = "kg⋅m",
utype = "torque",
scale = 9.80665,
default = "Nm lbft",
link = "Kilogram metre (torque)",
},
["kgf.m"] = {
name1 = "kilogram force-metre",
name1_us = "kilogram force-meter",
symbol = "kgf⋅m",
utype = "torque",
scale = 9.80665,
default = "Nm lbfft",
link = "Kilogram metre (torque)",
},
["kgm"] = {
name1 = "kilogram metre",
name1_us = "kilogram meter",
symbol = "kg⋅m",
utype = "torque",
scale = 9.80665,
default = "Nm lbfft",
link = "Kilogram metre (torque)",
},
["kpm"] = {
name1 = "kilopond metre",
name1_us = "kilopond meter",
symbol = "kp⋅m",
utype = "torque",
scale = 9.80665,
default = "Nm lbft",
link = "Kilogram metre (torque)",
},
["lb-fft"] = {
name1 = "pound force-foot",
name2 = "pound force-feet",
symbol = "ft⋅lb<sub>f</sub>",
utype = "torque",
scale = 1.3558179483314004,
default = "Nm",
link = "Pound-foot (torque)",
},
["lb.ft"] = {
name1 = "pound force-foot",
name2 = "pound force-feet",
symbol = "lb⋅ft",
utype = "torque",
scale = 1.3558179483314004,
default = "Nm",
link = "Pound-foot (torque)",
},
["lb.in"] = {
name1 = "pound force-inch",
symbol = "lb⋅in",
utype = "torque",
scale = 0.1129848290276167,
default = "mN.m",
link = "Pound-foot (torque)",
},
["lbfft"] = {
name1 = "pound force-foot",
name2 = "pound force-feet",
symbol = "lbf⋅ft",
utype = "torque",
scale = 1.3558179483314004,
default = "Nm",
link = "Pound-foot (torque)",
},
["lbft"] = {
name1 = "pound-foot",
name2 = "pound-feet",
symbol = "lb⋅ft",
utype = "torque",
scale = 1.3558179483314004,
default = "Nm",
link = "Pound-foot (torque)",
},
["m.kg-f"] = {
name1 = "metre kilogram-force",
name1_us = "meter kilogram-force",
name2 = "metre kilograms-force",
name2_us = "meter kilograms-force",
symbol = "m⋅kg<sub>f</sub>",
utype = "torque",
scale = 9.80665,
default = "Nm lbfft",
link = "Kilogram metre (torque)",
},
["m.kgf"] = {
name1 = "metre kilogram-force",
name1_us = "meter kilogram-force",
name2 = "metre kilograms-force",
name2_us = "meter kilograms-force",
symbol = "m⋅kgf",
utype = "torque",
scale = 9.80665,
default = "Nm lbfft",
link = "Kilogram metre (torque)",
},
["mN.m"] = {
name1 = "millinewton-metre",
name1_us = "millinewton-meter",
symbol = "mN⋅m",
utype = "torque",
scale = 0.001,
default = "lb.in",
link = "Newton-metre",
},
["Nm"] = {
_name1 = "newton-metre",
_name1_us= "newton-meter",
_symbol = "N⋅m",
utype = "torque",
alttype = "energy",
scale = 1,
prefixes = 1,
default = "lbfft",
link = "Newton-metre",
},
["kN/m"] = {
per = { "kN", "-m-stiff" },
utype = "torque",
default = "lbf/in",
},
["lbf/in"] = {
per = { "lbf", "-in-stiff" },
utype = "torque",
default = "kN/m",
},
["lb-f.ft"] = {
target = "lb-fft",
},
["lbf.ft"] = {
target = "lbfft",
},
["lbf·ft"] = {
target = "lbfft",
},
["lb·ft"] = {
target = "lb.ft",
},
["mkg-f"] = {
target = "m.kg-f",
},
["mkgf"] = {
target = "m.kgf",
},
["N.m"] = {
target = "Nm",
},
["N·m"] = {
target = "Nm",
},
["ton-mile"] = {
symbol = "ton-mile",
usename = 1,
utype = "transportation",
scale = 1.4599723182105602,
default = "tkm",
},
["tkm"] = {
name1 = "tonne-kilometre",
name1_us = "tonne-kilometer",
symbol = "tkm",
utype = "transportation",
scale = 1,
default = "ton-mile",
},
["-12USoz(mL)serve"] = {
name1_us = "12 U.S. fl oz (355 mL) serving",
symbol = "12 US fl oz (355 mL) serving",
sym_us = "12 U.S. fl oz (355 mL) serving",
utype = "volume",
scale = 0.00035488235475000004,
default = "mL",
link = "Beverage can#Standard sizes",
},
["-12USoz(ml)serve"] = {
name1_us = "12 U.S. fl oz (355 ml) serving",
symbol = "12 US fl oz (355 ml) serving",
sym_us = "12 U.S. fl oz (355 ml) serving",
utype = "volume",
scale = 0.00035488235475000004,
default = "ml",
link = "Beverage can#Standard sizes",
},
["-12USozserve"] = {
name1_us = "12 U.S. fl oz serving",
symbol = "12 US fl oz serving",
sym_us = "12 U.S. fl oz serving",
utype = "volume",
scale = 0.00035488235475000004,
default = "mL",
link = "Beverage can#Standard sizes",
},
["acre-foot"] = {
name1 = "acre-foot",
name2 = "acre-foot",
symbol = "acre⋅ft",
utype = "volume",
scale = 1233.48183754752,
default = "m3",
},
["acre-ft"] = {
name1 = "acre-foot",
name2 = "acre-feet",
symbol = "acre⋅ft",
utype = "volume",
scale = 1233.48183754752,
default = "m3",
},
["AUtbsp"] = {
name1 = "Australian tablespoon",
symbol = "AU tbsp",
utype = "volume",
scale = 0.000020,
default = "ml",
},
["Bcuft"] = {
name1 = "billion cubic foot",
name2 = "billion cubic feet",
symbol = "billion cu ft",
utype = "volume",
scale = 28316846.592,
default = "Gl",
link = "Cubic foot",
},
["bdft"] = {
name1 = "board foot",
name2 = "board feet",
symbol = "bd ft",
utype = "volume",
scale = 0.0023597372167,
default = "m3",
},
["board feet"] = {
name2 = "board feet",
symbol = "board foot",
usename = 1,
utype = "volume",
scale = 0.0023597372167,
default = "m3",
},
["board foot"] = {
name2 = "board foot",
symbol = "board foot",
usename = 1,
utype = "volume",
scale = 0.0023597372167,
default = "m3",
},
["cc"] = {
name1 = "cubic centimetre",
name1_us = "cubic centimeter",
symbol = "cc",
utype = "volume",
scale = 0.000001,
default = "cuin",
},
["CID"] = {
name1 = "cubic inch",
name2 = "cubic inches",
symbol = "cu in",
utype = "volume",
scale = 0.000016387064,
default = "cc",
link = "Cubic inch#Engine displacement",
},
["cord"] = {
symbol = "cord",
utype = "volume",
scale = 3.624556363776,
default = "m3",
link = "Cord (unit)",
},
["cufoot"] = {
name1 = "cubic foot",
name2 = "cubic foot",
symbol = "cu ft",
utype = "volume",
scale = 0.028316846592,
default = "m3",
},
["cuft"] = {
name1 = "cubic foot",
name2 = "cubic feet",
symbol = "cu ft",
utype = "volume",
scale = 0.028316846592,
default = "m3",
},
["cuin"] = {
name1 = "cubic inch",
name2 = "cubic inches",
symbol = "cu in",
utype = "volume",
scale = 0.000016387064,
default = "cm3",
},
["cumi"] = {
name1 = "cubic mile",
symbol = "cu mi",
utype = "volume",
scale = 4168181825.440579584,
default = "km3",
},
["cuyd"] = {
name1 = "cubic yard",
symbol = "cu yd",
utype = "volume",
scale = 0.764554857984,
default = "m3",
},
["firkin"] = {
symbol = "firkin",
usename = 1,
utype = "volume",
scale = 0.04091481,
default = "L impgal USgal",
link = "Firkin (unit)",
},
["foot3"] = {
target = "cufoot",
},
["Goilbbl"] = {
name1 = "billion barrels",
name2 = "billion barrels",
symbol = "Gbbl",
utype = "volume",
scale = 158987294.928,
default = "v * 1.58987294928 < 10 ! e6 ! e9 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["gr water"] = {
name1 = "grains water",
name2 = "grains water",
symbol = "gr H<sub>2</sub>O",
utype = "volume",
scale = 0.00000006479891,
default = "cm3",
link = "Grain (unit)",
},
["grt"] = {
name1 = "gross register ton",
symbol = "grt",
utype = "volume",
scale = 2.8316846592,
default = "m3",
link = "Gross register tonnage",
},
["impbbl"] = {
name1 = "imperial barrel",
symbol = "imp bbl",
utype = "volume",
scale = 0.16365924,
default = "L impgal USgal",
link = "Barrel (unit)",
},
["impbsh"] = {
name1 = "imperial bushel",
symbol = "imp bsh",
utype = "volume",
scale = 0.03636872,
default = "L impgal USdrygal",
},
["impbu"] = {
name1 = "imperial bushel",
symbol = "imp bu",
utype = "volume",
scale = 0.03636872,
default = "m3",
},
["impgal"] = {
name1 = "imperial gallon",
symbol = "imp gal",
utype = "volume",
scale = 0.00454609,
default = "L USgal",
},
["impgi"] = {
name1 = "gill",
symbol = "gi",
utype = "volume",
scale = 0.0001420653125,
default = "ml USoz",
link = "Gill (unit)",
},
["impkenning"] = {
name1 = "imperial kenning",
symbol = "kenning",
utype = "volume",
scale = 0.01818436,
default = "L USdrygal",
link = "Kenning (unit)",
},
["impoz"] = {
name1 = "imperial fluid ounce",
symbol = "imp fl oz",
utype = "volume",
scale = 0.0000284130625,
default = "ml USoz",
},
["imppk"] = {
name1 = "imperial peck",
symbol = "pk",
utype = "volume",
scale = 0.00909218,
default = "L USdrygal",
link = "Peck",
},
["imppt"] = {
name1 = "imperial pint",
symbol = "imp pt",
utype = "volume",
scale = 0.00056826125,
default = "L",
},
["impqt"] = {
name1 = "imperial quart",
symbol = "imp qt",
utype = "volume",
scale = 0.0011365225,
default = "ml USoz",
customary= 3,
},
["kilderkin"] = {
symbol = "kilderkin",
usename = 1,
utype = "volume",
scale = 0.08182962,
default = "L impgal USgal",
},
["koilbbl"] = {
name1 = "thousand barrels",
name2 = "thousand barrels",
symbol = "kbbl",
utype = "volume",
scale = 158.987294928,
default = "v * 1.58987294928 < 10 ! ! e3 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["L"] = {
_name1 = "litre",
_name1_us= "liter",
_symbol = "L",
utype = "volume",
scale = 0.001,
prefixes = 1,
default = "impgal USgal",
link = "Litre",
},
["l"] = {
_name1 = "litre",
_name1_us= "liter",
_symbol = "l",
utype = "volume",
scale = 0.001,
prefixes = 1,
default = "impgal USgal",
link = "Litre",
},
["ll"] = {
name1 = "litre",
name1_us = "liter",
symbol = "l",
utype = "volume",
scale = 0.001,
default = "impgal USgal",
},
["m3"] = {
_name1 = "cubic metre",
_name1_us= "cubic meter",
_symbol = "m<sup>3</sup>",
prefix_position= 7,
utype = "volume",
scale = 1,
prefixes = 3,
default = "cuft",
link = "Cubic metre",
},
["Mbbl"] = {
name1 = "thousand barrels",
name2 = "thousand barrels",
symbol = "Mbbl",
utype = "volume",
scale = 158.987294928,
default = "v * 1.58987294928 < 10 ! e3 ! ! m3",
link = "Barrel (unit)#Oil barrel",
},
["MMoilbbl"] = {
name1 = "million barrels",
name2 = "million barrels",
symbol = "MMbbl",
utype = "volume",
scale = 158987.294928,
default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["Moilbbl"] = {
name1 = "million barrels",
name2 = "million barrels",
symbol = "Mbbl",
utype = "volume",
scale = 158987.294928,
default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["MTON"] = {
name1 = "measurement ton",
symbol = "MTON",
utype = "volume",
scale = 1.13267386368,
default = "m3",
},
["MUSgal"] = {
name1 = "million US gallons",
name1_us = "million U.S. gallons",
name2 = "million US gallons",
name2_us = "million U.S. gallons",
symbol = "million US gal",
sym_us = "million U.S. gal",
utype = "volume",
scale = 3785.411784,
default = "Ml",
link = "US gallon",
},
["oilbbl"] = {
name1 = "barrel",
symbol = "bbl",
utype = "volume",
scale = 0.158987294928,
default = "m3",
link = "Barrel (unit)#Oil barrel",
},
["stere"] = {
symbol = "stere",
usename = 1,
utype = "volume",
scale = 1,
default = "cuft",
},
["tmcft"] = {
name2 = "tmcft",
symbol = "tmcft",
utype = "volume",
scale = 28316846.592,
default = "km3",
},
["Tmcft"] = {
name1 = "thousand million cubic feet",
name2 = "thousand million cubic feet",
symbol = "tmcft",
utype = "volume",
scale = 28316846.592,
default = "km3",
link = "Tmcft",
},
["Toilbbl"] = {
name1 = "trillion barrels",
name2 = "trillion barrels",
symbol = "Tbbl",
utype = "volume",
scale = 158987294928,
default = "v * 1.58987294928 < 10 ! e9 ! e12 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["USbbl"] = {
name1 = "US barrel",
name1_us = "U.S. barrel",
symbol = "US bbl",
sym_us = "U.S. bbl",
utype = "volume",
scale = 0.119240471196,
default = "L USgal impgal",
link = "Barrel (unit)",
},
["USbeerbbl"] = {
name1 = "US beer barrel",
name1_us = "U.S. beer barrel",
symbol = "US bbl",
sym_us = "U.S. bbl",
utype = "volume",
scale = 0.117347765304,
default = "L USgal impgal",
link = "Barrel (unit)",
},
["USbsh"] = {
name1 = "US bushel",
name1_us = "U.S. bushel",
symbol = "US bsh",
sym_us = "U.S. bsh",
utype = "volume",
scale = 0.03523907016688,
default = "L USdrygal impgal",
link = "Bushel",
},
["USbu"] = {
name1 = "US bushel",
name1_us = "U.S. bushel",
symbol = "US bu",
sym_us = "U.S. bu",
utype = "volume",
scale = 0.03523907016688,
default = "L USdrygal impgal",
link = "Bushel",
},
["USdrybbl"] = {
name1 = "US dry barrel",
name1_us = "U.S. dry barrel",
symbol = "US dry bbl",
sym_us = "U.S. dry bbl",
utype = "volume",
scale = 0.11562819898508,
default = "m3",
link = "Barrel (unit)",
},
["USdrygal"] = {
name1 = "US dry gallon",
name1_us = "U.S. dry gallon",
symbol = "US dry gal",
sym_us = "U.S. dry gal",
utype = "volume",
scale = 0.00440488377086,
default = "L",
link = "Gallon",
},
["USdrypt"] = {
name1 = "US dry pint",
name1_us = "U.S. dry pint",
symbol = "US dry pt",
sym_us = "U.S. dry pt",
utype = "volume",
scale = 0.0005506104713575,
default = "ml",
link = "Pint",
},
["USdryqt"] = {
name1 = "US dry quart",
name1_us = "U.S. dry quart",
symbol = "US dry qt",
sym_us = "U.S. dry qt",
utype = "volume",
scale = 0.001101220942715,
default = "ml",
link = "Quart",
},
["USflgal"] = {
name1 = "US gallon",
name1_us = "U.S. gallon",
symbol = "US fl gal",
sym_us = "U.S. fl gal",
utype = "volume",
scale = 0.003785411784,
default = "L impgal",
link = "Gallon",
},
["USgal"] = {
name1 = "US gallon",
name1_us = "U.S. gallon",
symbol = "US gal",
sym_us = "U.S. gal",
utype = "volume",
scale = 0.003785411784,
default = "L impgal",
},
["USgi"] = {
name1 = "gill",
symbol = "gi",
utype = "volume",
scale = 0.0001182941183,
default = "ml impoz",
link = "Gill (unit)",
},
["USkenning"] = {
name1 = "US kenning",
name1_us = "U.S. kenning",
symbol = "US kenning",
sym_us = "U.S. kenning",
utype = "volume",
scale = 0.01761953508344,
default = "L impgal",
link = "Kenning (unit)",
},
["USmin"] = {
name1 = "US minim",
name1_us = "U.S. minim",
symbol = "US min",
sym_us = "U.S. min",
utype = "volume",
scale = 0.000000061611519921875,
default = "ml",
link = "Minim (unit)",
},
["USoz"] = {
name1 = "US fluid ounce",
name1_us = "U.S. fluid ounce",
symbol = "US fl oz",
sym_us = "U.S. fl oz",
utype = "volume",
scale = 0.0000295735295625,
default = "ml",
},
["USpk"] = {
name1 = "US peck",
name1_us = "U.S. peck",
symbol = "US pk",
sym_us = "U.S. pk",
utype = "volume",
scale = 0.00880976754172,
default = "L impgal",
link = "Peck",
},
["USpt"] = {
name1 = "US pint",
name1_us = "U.S. pint",
symbol = "US pt",
sym_us = "U.S. pt",
utype = "volume",
scale = 0.000473176473,
default = "L imppt",
link = "Pint",
},
["USqt"] = {
name1 = "US quart",
name1_us = "U.S. quart",
symbol = "US qt",
sym_us = "U.S. qt",
utype = "volume",
scale = 0.000946352946,
default = "ml",
link = "Quart",
customary= 1,
},
["USquart"] = {
name1 = "US quart",
name1_us = "U.S. quart",
symbol = "US qt",
sym_us = "U.S. qt",
utype = "volume",
scale = 0.000946352946,
default = "ml impoz",
link = "Quart",
},
["UStbsp"] = {
name1 = "US tablespoon",
name1_us = "U.S. tablespoon",
symbol = "US tbsp",
sym_us = "U.S. tbsp",
utype = "volume",
scale = 1.4786764781250001e-5,
default = "ml",
},
["winecase"] = {
symbol = "case",
usename = 1,
utype = "volume",
scale = 0.009,
default = "L",
link = "Case (goods)",
},
["*U.S.drygal"] = {
target = "USdrygal",
sp_us = true,
customary= 2,
},
["*U.S.gal"] = {
target = "USgal",
sp_us = true,
customary= 2,
},
["+USdrygal"] = {
target = "USdrygal",
customary= 1,
},
["+usfloz"] = {
target = "USoz",
link = "Fluid ounce",
customary= 1,
},
["+USgal"] = {
target = "USgal",
customary= 1,
},
["+USoz"] = {
target = "USoz",
customary= 1,
},
["@impgal"] = {
target = "impgal",
link = "Gallon",
customary= 3,
},
["acre feet"] = {
target = "acre-ft",
},
["acre foot"] = {
target = "acre-foot",
},
["acre ft"] = {
target = "acre-ft",
},
["acre-feet"] = {
target = "acre-ft",
},
["acre.foot"] = {
target = "acre-foot",
},
["acre.ft"] = {
target = "acre-ft",
},
["acre·ft"] = {
target = "acre-ft",
},
["bushels"] = {
target = "USbsh",
},
["cid"] = {
target = "CID",
},
["ft3"] = {
target = "cuft",
symbol = "ft<sup>3</sup>",
},
["gal"] = {
target = "USgal",
},
["gallon"] = {
shouldbe = "Use %{USgal%} for US gallons or %{impgal%} for imperial gallons (not %{gallon%})",
},
["gallons"] = {
shouldbe = "Use %{USgal%} for US gallons or %{impgal%} for imperial gallons (not %{gallons%})",
},
["Gcuft"] = {
target = "e9cuft",
},
["impfloz"] = {
target = "impoz",
},
["Impgal"] = {
target = "impgal",
},
["in3"] = {
target = "cuin",
symbol = "in<sup>3</sup>",
},
["hm³"] = {
target = "hm3",
},
["kcuft"] = {
target = "e3cuft",
},
["kcum"] = {
target = "e3m3",
},
["km³"] = {
target = "km3",
},
["liter"] = {
target = "L",
sp_us = true,
},
["liters"] = {
target = "L",
sp_us = true,
},
["litre"] = {
target = "L",
},
["litres"] = {
target = "L",
},
["Mcuft"] = {
target = "e6cuft",
},
["Mcum"] = {
target = "e6m3",
},
["Mft3"] = {
target = "e6cuft",
},
["mi3"] = {
target = "cumi",
symbol = "mi<sup>3</sup>",
},
["m³"] = {
target = "m3",
},
["Pcuft"] = {
target = "e15cuft",
},
["pt"] = {
shouldbe = "Use %{USpt%} for US pints or %{imppt%} for imperial pints (not %{pt%})",
},
["qt"] = {
shouldbe = "Use %{USqt%} for US quarts or %{impqt%} for imperial quarts (not %{qt%})",
},
["Tcuft"] = {
target = "e12cuft",
},
["Tft3"] = {
target = "e12cuft",
},
["U.S.bbl"] = {
target = "USbbl",
sp_us = true,
default = "L U.S.gal impgal",
},
["U.S.beerbbl"] = {
target = "USbeerbbl",
sp_us = true,
default = "L U.S.gal impgal",
},
["U.S.bsh"] = {
target = "USbsh",
sp_us = true,
default = "L U.S.drygal impgal",
},
["U.S.bu"] = {
target = "USbu",
sp_us = true,
default = "L U.S.drygal impgal",
},
["U.S.drybbl"] = {
target = "USdrybbl",
sp_us = true,
},
["U.S.drygal"] = {
target = "USdrygal",
sp_us = true,
},
["U.S.drypt"] = {
target = "USdrypt",
sp_us = true,
},
["U.S.dryqt"] = {
target = "USdryqt",
sp_us = true,
},
["U.S.flgal"] = {
target = "USflgal",
sp_us = true,
},
["U.S.floz"] = {
target = "USoz",
sp_us = true,
},
["U.S.gal"] = {
target = "USgal",
sp_us = true,
link = "U.S. gallon",
},
["u.s.gal"] = {
target = "USgal",
sp_us = true,
link = "U.S. gallon",
},
["U.S.gi"] = {
target = "USgi",
sp_us = true,
},
["U.S.kenning"] = {
target = "USkenning",
sp_us = true,
},
["U.S.oz"] = {
target = "USoz",
sp_us = true,
},
["U.S.pk"] = {
target = "USpk",
sp_us = true,
},
["U.S.pt"] = {
target = "USpt",
sp_us = true,
},
["U.S.qt"] = {
target = "USqt",
sp_us = true,
default = "L impqt",
customary= 2,
},
["usbbl"] = {
target = "USbbl",
},
["usbeerbbl"] = {
target = "USbeerbbl",
},
["usbsh"] = {
target = "USbsh",
},
["usbu"] = {
target = "USbu",
},
["usdrybbl"] = {
target = "USdrybbl",
},
["usdrygal"] = {
target = "USdrygal",
},
["usdrypt"] = {
target = "USdrypt",
},
["usdryqt"] = {
target = "USdryqt",
},
["USfloz"] = {
target = "USoz",
},
["usfloz"] = {
target = "USoz",
},
["USGAL"] = {
target = "USgal",
},
["usgal"] = {
target = "USgal",
},
["usgi"] = {
target = "USgi",
},
["uskenning"] = {
target = "USkenning",
},
["usoz"] = {
target = "USoz",
},
["uspk"] = {
target = "USpk",
},
["uspt"] = {
target = "USpt",
},
["usqt"] = {
target = "USqt",
},
["yd3"] = {
target = "cuyd",
symbol = "yd<sup>3</sup>",
},
["cuft/sqmi"] = {
per = { "cuft", "sqmi" },
utype = "volume per unit area",
default = "m3/km2",
},
["m3/ha"] = {
name1 = "cubic metre per hectare",
name1_us = "cubic meter per hectare",
name2 = "cubic metres per hectare",
name2_us = "cubic meters per hectare",
symbol = "m<sup>3</sup>/ha",
utype = "volume per unit area",
scale = 0.0001,
default = "USbu/acre",
link = "Hectare",
},
["m3/km2"] = {
per = { "m3", "km2" },
utype = "volume per unit area",
default = "cuft/sqmi",
},
["U.S.gal/acre"] = {
per = { "U.S.gal", "acre" },
utype = "volume per unit area",
default = "m3/km2",
},
["USbu/acre"] = {
name2 = "US bushels per acre",
symbol = "US bushel per acre",
usename = 1,
utype = "volume per unit area",
scale = 8.7077638761350888e-6,
default = "m3/ha",
link = "Bushel",
},
["USgal/acre"] = {
per = { "USgal", "acre" },
utype = "volume per unit area",
default = "m3/km2",
},
["cuyd/mi"] = {
per = { "cuyd", "mi" },
utype = "volume per unit length",
default = "m3/km",
},
["m3/km"] = {
per = { "m3", "km" },
utype = "volume per unit length",
default = "cuyd/mi",
},
["mich"] = {
combination= { "ch", "mi" },
multiple = { 80 },
utype = "length",
},
["michlk"] = {
combination= { "chlk", "mi" },
multiple = { 80 },
utype = "length",
},
["michainlk"] = {
combination= { "chainlk", "mi" },
multiple = { 80 },
utype = "length",
},
["miyd"] = {
combination= { "yd", "mi" },
multiple = { 1760 },
utype = "length",
},
["miydftin"] = {
combination= { "in", "ft", "yd", "mi" },
multiple = { 12, 3, 1760 },
utype = "length",
},
["mift"] = {
combination= { "ft", "mi" },
multiple = { 5280 },
utype = "length",
},
["ydftin"] = {
combination= { "in", "ft", "yd" },
multiple = { 12, 3 },
utype = "length",
},
["ydft"] = {
combination= { "ft", "yd" },
multiple = { 3 },
utype = "length",
},
["ftin"] = {
combination= { "in", "ft" },
multiple = { 12 },
utype = "length",
},
["footin"] = {
combination= { "in", "foot" },
multiple = { 12 },
utype = "length",
},
["handin"] = {
combination= { "in", "hand" },
multiple = { 4 },
utype = "length",
},
["lboz"] = {
combination= { "oz", "lb" },
multiple = { 16 },
utype = "mass",
},
["stlb"] = {
combination= { "lb", "st" },
multiple = { 14 },
utype = "mass",
},
["stlboz"] = {
combination= { "oz", "lb", "st" },
multiple = { 16, 14 },
utype = "mass",
},
["st and lb"] = {
combination= { "lb", "st" },
multiple = { 14 },
utype = "mass",
},
["GN LTf"] = {
combination= { "GN", "-LTf" },
utype = "force",
},
["GN LTf STf"] = {
combination= { "GN", "-LTf", "-STf" },
utype = "force",
},
["GN STf"] = {
combination= { "GN", "-STf" },
utype = "force",
},
["GN STf LTf"] = {
combination= { "GN", "-STf", "-LTf" },
utype = "force",
},
["kN LTf"] = {
combination= { "kN", "-LTf" },
utype = "force",
},
["kN LTf STf"] = {
combination= { "kN", "-LTf", "-STf" },
utype = "force",
},
["kN STf"] = {
combination= { "kN", "-STf" },
utype = "force",
},
["kN STf LTf"] = {
combination= { "kN", "-STf", "-LTf" },
utype = "force",
},
["LTf STf"] = {
combination= { "-LTf", "-STf" },
utype = "force",
},
["MN LTf"] = {
combination= { "MN", "-LTf" },
utype = "force",
},
["MN LTf STf"] = {
combination= { "MN", "-LTf", "-STf" },
utype = "force",
},
["MN STf"] = {
combination= { "MN", "-STf" },
utype = "force",
},
["MN STf LTf"] = {
combination= { "MN", "-STf", "-LTf" },
utype = "force",
},
["STf LTf"] = {
combination= { "-STf", "-LTf" },
utype = "force",
},
["L/100 km mpgimp"] = {
combination= { "L/100 km", "mpgimp" },
utype = "fuel efficiency",
},
["l/100 km mpgimp"] = {
combination= { "l/100 km", "mpgimp" },
utype = "fuel efficiency",
},
["L/100 km mpgUS"] = {
combination= { "L/100 km", "mpgus" },
utype = "fuel efficiency",
},
["L/100 km mpgus"] = {
combination= { "L/100 km", "mpgus" },
utype = "fuel efficiency",
},
["l/100 km mpgus"] = {
combination= { "l/100 km", "mpgus" },
utype = "fuel efficiency",
},
["mpgimp L/100 km"] = {
combination= { "mpgimp", "L/100 km" },
utype = "fuel efficiency",
},
["LT ST t"] = {
combination= { "lt", "-ST", "t" },
utype = "mass",
},
["LT t ST"] = {
combination= { "lt", "t", "-ST" },
utype = "mass",
},
["ST LT t"] = {
combination= { "-ST", "lt", "t" },
utype = "mass",
},
["ST t LT"] = {
combination= { "-ST", "t", "lt" },
utype = "mass",
},
["t LT ST"] = {
combination= { "t", "lt", "-ST" },
utype = "mass",
},
["ton"] = {
combination= { "LT", "ST" },
utype = "mass",
},
["kPa kg/cm2"] = {
combination= { "kPa", "kgf/cm2" },
utype = "pressure",
},
["kPa lb/in2"] = {
combination= { "kPa", "-lb/in2" },
utype = "pressure",
},
["floz"] = {
combination= { "impoz", "USoz" },
utype = "volume",
},
}
---------------------------------------------------------------------------
-- Do not change the data in this table because it is created by running --
-- a script that reads the wikitext from a wiki page (see note above). --
---------------------------------------------------------------------------
local default_exceptions = {
-- Prefixed units with a default different from that of the base unit.
-- Each key item is a prefixed symbol (unitcode for engineering notation).
["cm<sup>2</sup>"] = "sqin",
["dm<sup>2</sup>"] = "sqin",
["e3acre"] = "km2",
["e3m2"] = "e6sqft",
["e6acre"] = "km2",
["e6ha"] = "e6acre",
["e6km2"] = "e6sqmi",
["e6m2"] = "e6sqft",
["e6sqft"] = "v * 9.290304 < 100 ! e3 ! e6 ! m2",
["e6sqmi"] = "e6km2",
["hm<sup>2</sup>"] = "acre",
["km<sup>2</sup>"] = "sqmi",
["mm<sup>2</sup>"] = "sqin",
["aJ"] = "eV",
["e3BTU"] = "MJ",
["e6BTU"] = "GJ",
["EJ"] = "kWh",
["eV"] = "aJ",
["feV"] = "yJ",
["fJ"] = "keV",
["GeV"] = "nJ",
["GJ"] = "kWh",
["keV"] = "fJ",
["MeV"] = "pJ",
["meV"] = "zJ",
["MJ"] = "kWh",
["neV"] = "yJ",
["PeV"] = "mJ",
["peV"] = "yJ",
["PJ"] = "kWh",
["pJ"] = "MeV",
["TeV"] = "μJ",
["TJ"] = "kWh",
["YJ"] = "kWh",
["yJ"] = "μeV",
["ZJ"] = "kWh",
["zJ"] = "meV",
["μeV"] = "yJ",
["e12cuft/a"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3/a",
["e12cuft/d"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3/d",
["e12m3/a"] = "Tcuft/a",
["e12m3/d"] = "Tcuft/d",
["e3cuft/a"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/a",
["e3cuft/d"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/d",
["e3cuft/s"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/s",
["e3m3/a"] = "v < 28.316846592 ! k ! M ! cuft/a",
["e3m3/d"] = "v < 28.316846592 ! k ! M ! cuft/d",
["e3m3/s"] = "v < 28.316846592 ! k ! M ! cuft/s",
["e3USgal/a"] = "v * 3.785411784 < 1000 ! ! e3 ! m3/a",
["e6cuft/a"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/a",
["e6cuft/d"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/d",
["e6cuft/s"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/s",
["e6m3/a"] = "v < 28.316846592 ! M ! G ! cuft/a",
["e6m3/d"] = "v < 28.316846592 ! M ! G ! cuft/d",
["e6m3/s"] = "v < 28.316846592 ! e6 ! e9 ! cuft/s",
["e6USgal/a"] = "v * 3.785411784 < 1000 ! e3 ! e6 ! m3/a",
["e9cuft/a"] = "m3/a",
["e9cuft/d"] = "v * 2.8316846592 < 100 ! e6 ! e9 ! m3/d",
["e9m3/a"] = "v < 28.316846592 ! G ! T ! cuft/a",
["e9m3/d"] = "v < 28.316846592 ! G ! T ! cuft/d",
["e9m3/s"] = "v < 28.316846592 ! e9 ! e12 ! cuft/s",
["e9USgal/a"] = "v * 3.785411784 < 1000 ! e6 ! e9 ! m3/a",
["e9USgal/s"] = "v * 3.785411784 < 1000 ! e6 ! e9 ! m3/s",
["nN"] = "gr-f",
["μN"] = "gr-f",
["mN"] = "oz-f",
["am"] = "in",
["cm"] = "in",
["dam"] = "ft",
["dm"] = "in",
["e12km"] = "e12mi",
["e12mi"] = "e12km",
["e3AU"] = "ly",
["e3km"] = "e3mi",
["e3mi"] = "e3km",
["e6km"] = "e6mi",
["e6mi"] = "e6km",
["e9km"] = "AU",
["e9mi"] = "e9km",
["Em"] = "mi",
["fm"] = "in",
["Gm"] = "mi",
["hm"] = "ft",
["km"] = "mi",
["mm"] = "in",
["Mm"] = "mi",
["nm"] = "in",
["Pm"] = "mi",
["pm"] = "in",
["Tm"] = "mi",
["Ym"] = "mi",
["ym"] = "in",
["Zm"] = "mi",
["zm"] = "in",
["μm"] = "in",
["e12lb"] = "v * 4.5359237 < 10 ! Mt ! Gt",
["e3lb"] = "v * 4.5359237 < 10 ! kg ! t",
["e3ozt"] = "v * 0.311034768 < 10 ! kg ! t",
["e3t"] = "LT ST",
["e6carat"] = "t",
["e6lb"] = "v * 4.5359237 < 10 ! t ! kilotonne",
["e6ozt"] = "lb kg",
["e6ST"] = "Mt",
["e6t"] = "LT ST",
["e9lb"] = "v * 4.5359237 < 10 ! kilotonne ! Mt",
["e9t"] = "LT ST",
["Gg"] = "lb",
["kg"] = "lb",
["mg"] = "gr",
["Mg"] = "LT ST",
["ng"] = "gr",
["μg"] = "gr",
["mBq"] = "fCi",
["kBq"] = "nCi",
["MBq"] = "μCi",
["GBq"] = "mCi",
["TBq"] = "Ci",
["PBq"] = "kCi",
["EBq"] = "kCi",
["fCi"] = "mBq",
["pCi"] = "Bq",
["nCi"] = "Bq",
["μCi"] = "kBq",
["mCi"] = "MBq",
["kCi"] = "TBq",
["MCi"] = "PBq",
["ns"] = "μs",
["μs"] = "ms",
["ms"] = "s",
["ks"] = "h",
["Ms"] = "week",
["Gs"] = "decade",
["Ts"] = "millennium",
["Ps"] = "million year",
["Es"] = "thousand million year",
["MK"] = "keVT",
["cL"] = "impoz usoz",
["cl"] = "impoz usoz",
["cm<sup>3</sup>"] = "cuin",
["dL"] = "impoz usoz",
["dl"] = "impoz usoz",
["mm<sup>3</sup>"] = "cuin",
["dm<sup>3</sup>"] = "cuin",
["e12cuft"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3",
["e12impgal"] = "v * 4.54609 < 1000 ! T ! P ! l",
["e12m3"] = "v < 28.316846592 ! T ! P ! cuft",
["e12U.S.gal"] = "v * 3.785411784 < 1000 ! T ! P ! l",
["e12USgal"] = "v * 3.785411784 < 1000 ! T ! P ! l",
["e15cuft"] = "v * 2.8316846592 < 100 ! e12 ! e15 ! m3",
["e15m3"] = "Pcuft",
["e3bdft"] = "v * 0.23597372167 < 100 ! e3 ! e6 ! m3",
["e3cuft"] = "v * 2.8316846592 < 100 ! ! e3 ! m3",
["e3impgal"] = "v * 4.54609 < 1000 ! k ! M ! l",
["e3m3"] = "v < 28.316846592 ! k ! M ! cuft",
["e3U.S.gal"] = "v * 3.785411784 < 1000 ! k ! M ! l",
["e3USgal"] = "v * 3.785411784 < 1000 ! k ! M ! l",
["e6bdft"] = "v * 0.23597372167 < 100 ! e3 ! e6 ! m3",
["e6cuft"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3",
["e6cuyd"] = "v * 7.64554857984 < 10 ! e3 ! e6 ! m3",
["e6impgal"] = "v * 4.54609 < 1000 ! M ! G ! l",
["e6L"] = "USgal",
["e6m3"] = "v < 28.316846592 ! M ! G ! cuft",
["e6U.S.gal"] = "v * 3.785411784 < 1000 ! M ! G ! l",
["e6USgal"] = "v * 3.785411784 < 1000 ! M ! G ! l",
["e9bdft"] = "v * 0.23597372167 < 100 ! e6 ! e9 ! m3",
["e9cuft"] = "v * 2.8316846592 < 100 ! e6 ! e9 ! m3",
["e9impgal"] = "v * 4.54609 < 1000 ! G ! T ! l",
["e9m3"] = "v < 28.316846592 ! G ! T ! cuft",
["e9U.S.gal"] = "v * 3.785411784 < 1000 ! G ! T ! l",
["e9USgal"] = "v * 3.785411784 < 1000 ! G ! T ! l",
["GL"] = "cuft",
["Gl"] = "cuft",
["kL"] = "cuft",
["kl"] = "cuft",
["km<sup>3</sup>"] = "cumi",
["mL"] = "impoz usoz",
["ml"] = "impoz usoz",
["Ml"] = "v < 28.316846592 ! e3 ! e6 ! cuft",
["ML"] = "v < 28.316846592 ! e3 ! e6 ! cuft",
["TL"] = "cumi",
["Tl"] = "cumi",
["μL"] = "cuin",
["μl"] = "cuin",
}
---------------------------------------------------------------------------
-- Do not change the data in this table because it is created by running --
-- a script that reads the wikitext from a wiki page (see note above). --
---------------------------------------------------------------------------
local link_exceptions = {
-- Prefixed units with a linked article different from that of the base unit.
-- Each key item is a prefixed symbol (not unitcode).
["mm<sup>2</sup>"] = "Square millimetre",
["cm<sup>2</sup>"] = "Square centimetre",
["dm<sup>2</sup>"] = "Square decimetre",
["km<sup>2</sup>"] = "Square kilometre",
["kJ"] = "Kilojoule",
["MJ"] = "Megajoule",
["GJ"] = "Gigajoule",
["TJ"] = "Terajoule",
["fm"] = "Femtometre",
["pm"] = "Picometre",
["nm"] = "Nanometre",
["μm"] = "Micrometre",
["mm"] = "Millimetre",
["cm"] = "Centimetre",
["dm"] = "Decimetre",
["dam"] = "Decametre",
["hm"] = "Hectometre",
["km"] = "Kilometre",
["Mm"] = "Megametre",
["Gm"] = "Gigametre",
["Tm"] = "Terametre",
["Pm"] = "Petametre",
["Em"] = "Exametre",
["Zm"] = "Zettametre",
["Ym"] = "Yottametre",
["μg"] = "Microgram",
["mg"] = "Milligram",
["kg"] = "Kilogram",
["Mg"] = "Tonne",
["yW"] = "Yoctowatt",
["zW"] = "Zeptowatt",
["aW"] = "Attowatt",
["fW"] = "Femtowatt",
["pW"] = "Picowatt",
["nW"] = "Nanowatt",
["μW"] = "Microwatt",
["mW"] = "Milliwatt",
["kW"] = "Kilowatt",
["MW"] = "Megawatt",
["GW"] = "Gigawatt",
["TW"] = "Terawatt",
["PW"] = "Petawatt",
["EW"] = "Exawatt",
["ZW"] = "Zettawatt",
["YW"] = "Yottawatt",
["as"] = "Attosecond",
["fs"] = "Femtosecond",
["ps"] = "Picosecond",
["ns"] = "Nanosecond",
["μs"] = "Microsecond",
["ms"] = "Millisecond",
["ks"] = "Kilosecond",
["Ms"] = "Megasecond",
["Gs"] = "Gigasecond",
["Ts"] = "Terasecond",
["Ps"] = "Petasecond",
["Es"] = "Exasecond",
["Zs"] = "Zettasecond",
["Ys"] = "Yottasecond",
["mm<sup>3</sup>"] = "Cubic millimetre",
["cm<sup>3</sup>"] = "Cubic centimetre",
["dm<sup>3</sup>"] = "Cubic decimetre",
["dam<sup>3</sup>"] = "Cubic decametre",
["km<sup>3</sup>"] = "Cubic kilometre",
["μL"] = "Microlitre",
["μl"] = "Microlitre",
["mL"] = "Millilitre",
["ml"] = "Millilitre",
["cL"] = "Centilitre",
["cl"] = "Centilitre",
["dL"] = "Decilitre",
["dl"] = "Decilitre",
["daL"] = "Decalitre",
["dal"] = "Decalitre",
["hL"] = "Hectolitre",
["hl"] = "Hectolitre",
["kL"] = "Kilolitre",
["kl"] = "Kilolitre",
["ML"] = "Megalitre",
["Ml"] = "Megalitre",
["GL"] = "Gigalitre",
["Gl"] = "Gigalitre",
["TL"] = "Teralitre",
["Tl"] = "Teralitre",
["PL"] = "Petalitre",
["Pl"] = "Petalitre",
}
---------------------------------------------------------------------------
-- Do not change the data in this table because it is created by running --
-- a script that reads the wikitext from a wiki page (see note above). --
---------------------------------------------------------------------------
local per_unit_fixups = {
-- Automatically created per units of form "x/y" may have their unit type
-- changed, for example, "length/time" is changed to "speed".
-- Other adjustments can also be specified.
["/area"] = "per unit area",
["/volume"] = "per unit volume",
["area/area"] = "area per unit area",
["energy/length"] = "energy per unit length",
["energy/mass"] = "energy per unit mass",
["energy/time"] = { utype = "power", link = "Power (physics)" },
["energy/volume"] = "energy per unit volume",
["force/area"] = { utype = "pressure", link = "Pressure" },
["length/length"] = { utype = "gradient", link = "Grade (slope)" },
["length/time"] = { utype = "speed", link = "Speed" },
["length/time/time"] = { utype = "acceleration", link = "Acceleration" },
["mass/area"] = { utype = "pressure", multiplier = 9.80665 },
["mass/length"] = "linear density",
["mass/mass"] = "concentration",
["mass/power"] = "mass per unit power",
["mass/time"] = "mass per unit time",
["mass/volume"] = { utype = "density", link = "Density" },
["power/mass"] = "power per unit mass",
["power/volume"] = { link = "Power density" },
["pressure/length"] = "fracture gradient",
["speed/time"] = { utype = "acceleration", link = "Acceleration" },
["volume/area"] = "volume per unit area",
["volume/length"] = "volume per unit length",
["volume/time"] = "flow",
}
return {
all_units = all_units,
default_exceptions = default_exceptions,
link_exceptions = link_exceptions,
per_unit_fixups = per_unit_fixups,
}
hqgudow086bv1ct4yxtqfzm8bjmx0b1
Module:Convert/text
828
34734
126093
2026-07-15T10:54:16Z
Fongcwele
16873
Created page with "-- Text used by Module:Convert for enwiki. -- This is a separate module to simplify translation for use on another wiki. -- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki. -- Some units accept an SI prefix before the unit code, such as "kg" for kilogram. local SIprefixes = { -- The prefix field is what the prefix should be, if different from the prefix used. ['Q'] = { exponent = 30, name = 'quetta', }, ['R'] = { exponent = 27,..."
126093
Scribunto
text/plain
-- Text used by Module:Convert for enwiki.
-- This is a separate module to simplify translation for use on another wiki.
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.
-- Some units accept an SI prefix before the unit code, such as "kg" for kilogram.
local SIprefixes = {
-- The prefix field is what the prefix should be, if different from the prefix used.
['Q'] = { exponent = 30, name = 'quetta', },
['R'] = { exponent = 27, name = 'ronna', },
['Y'] = { exponent = 24, name = 'yotta', },
['Z'] = { exponent = 21, name = 'zetta', },
['E'] = { exponent = 18, name = 'exa' , },
['P'] = { exponent = 15, name = 'peta' , },
['T'] = { exponent = 12, name = 'tera' , },
['G'] = { exponent = 9, name = 'giga' , },
['M'] = { exponent = 6, name = 'mega' , },
['k'] = { exponent = 3, name = 'kilo' , },
['h'] = { exponent = 2, name = 'hecto', },
['da']= { exponent = 1, name = 'deca' , name_us = 'deka' },
['d'] = { exponent = -1, name = 'deci' , },
['c'] = { exponent = -2, name = 'centi', },
['m'] = { exponent = -3, name = 'milli', },
['μ'] = { exponent = -6, name = 'micro', }, -- key = 'GREEK SMALL LETTER MU' (U+03BC) utf-8 CE BC
['µ'] = { exponent = -6, name = 'micro', prefix = 'μ' }, -- key = 'MICRO SIGN' (U+00B5) utf-8 C2 B5
['u'] = { exponent = -6, name = 'micro', prefix = 'μ' }, -- not an SI prefix, but allow for people typing this
['n'] = { exponent = -9, name = 'nano' , },
['p'] = { exponent =-12, name = 'pico' , },
['f'] = { exponent =-15, name = 'femto', },
['a'] = { exponent =-18, name = 'atto' , },
['z'] = { exponent =-21, name = 'zepto', },
['y'] = { exponent =-24, name = 'yocto', },
['r'] = { exponent =-27, name = 'ronto', },
['q'] = { exponent =-30, name = 'quecto', },
}
-- Some units can be qualified with one of the following prefixes, when linked.
local customary_units = {
{ "US", link = "United States customary units" },
{ "U.S.", link = "United States customary units" },
{ "imperial", link = "Imperial units" },
{ "imp", link = "Imperial units" },
}
-- Names when using engineering notation (a prefix of "eN" where N is a number; example "e6km").
-- key = { "name", link = "article title", exponent = numeric_key_value }
-- If lk=on and link is defined, the name of the number will appear as a link.
local eng_scales = {
["3"] = { "thousand", exponent = 3 },
["6"] = { "million", exponent = 6 },
["9"] = { "billion", link = "1000000000 (number)", exponent = 9 },
["12"] = { "trillion", link = "1000000000000 (number)", exponent = 12 },
["15"] = { "quadrillion", link = "1000000000000000 (number)", exponent = 15 },
}
local all_categories = {
unit = "[[Category:Convert errors]]",
option = "[[Category:Convert errors]]",
warning = '[[Category:Convert invalid options]]',
tracking = '[[Category:Convert tracking]]',
}
-- For some error messages, the following puts the wanted style around
-- each unit code marked like '...%{ft%}...'.
local unitcode_regex = '%%([{}])'
local unitcode_replace = { ['{'] = '"', ['}'] = '"' } -- no longer need the more elaborate substitute used before 2013-09-28
-- All messages that may be displayed if a problem occurs.
local all_messages = {
-- Message format string: $1=title, $2=text, $3=category, $4=anchor.
-- Each displayed message starts with "Convert:" so can easily locate by searching article.
cvt_format = '<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i>[[Help:Convert messages#$4|<span title="Convert: $1">convert: $2</span>]]</i>]</sup>$3<span class="error"></span>',
cvt_format2 = '<sup class="noprint Inline-Template" style="white-space:nowrap;">[[Help:Convert messages#$4|<span title="Convert: $1">$2</span>]]</sup>$3<span class="error"></span>',
cvt_format_preview = '<strong class="error">Error in convert: $1 [[Help:Convert messages#$4|(help)]]</strong>$3',
-- Each of following messages is a table:
-- { [1] = 'title', -- mouseover title text
-- [2] = 'text', -- link text displayed in article
-- [3] = 'category key', -- key to lookup category in all_categories
-- [4] = 'anchor', -- anchor for link to relevant section on help page
-- regex = gsub_regex,
-- replace = gsub_table,
-- } Mouseover title text Link text CatKey Anchor
cvt_bad_input = { 'input "$1" must be a number and unit' , 'invalid input' , 'option', 'invalid_input' },
cvt_bad_num = { 'Value "$1" must be a number' , 'invalid number' , 'option', 'invalid_number' },
cvt_big_prec = { 'Precision "$1" is too large' , 'precision too large' , 'option', 'precision_too_large' },
cvt_invalid_num = { 'Number has overflowed' , 'number overflow' , 'option', 'number_overflow' },
cvt_no_num = { 'Needs the number to be converted' , 'needs a number' , 'option', 'needs_number' },
cvt_no_num2 = { 'Needs another number for a range' , 'needs another number', 'option', 'needs_another_number' },
cvt_bad_altitude = { '"$1" needs an integer' , 'invalid altitude' , 'option', 'invalid_altitude' },
cvt_bad_frac = { '"$1" needs an integer above 1' , 'invalid fraction' , 'option', 'invalid_fraction' },
cvt_bad_prec = { 'Precision "$1" must be an integer' , 'invalid precision' , 'option', 'invalid_precision' },
cvt_bad_sigfig = { '"$1" needs a positive integer' , 'invalid sigfig' , 'option', 'invalid_sigfig' },
cvt_empty_option = { 'Ignored empty option "$1"' , 'empty option' , 'option', 'empty_option' },
cvt_deprecated = { 'Option "$1" is deprecated' , '*' , 'option', 'deprecated_option', format = 'cvt_format2', nowarn = true },
cvt_no_spell = { 'Spelling is not available' , 'bug, ask for help' , 'option', 'ask_for_help' },
cvt_unknown_option = { 'Ignored invalid option "$1"' , 'invalid option' , 'option', 'invalid_option' },
cvt_wd_fail = { 'Unable to access Wikidata' , 'wikidata problem' , 'option', 'wikidata_problem' },
cvt_bad_default = { 'Unit "$1" has an invalid default' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_bad_unit = { 'Unit "$1" is invalid here' , 'unit invalid here' , 'unit' , 'unit_invalid_here' },
cvt_no_default = { 'Unit "$1" has no default output unit' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_no_unit = { 'Needs name of unit' , 'needs unit name' , 'unit' , 'needs_unit_name' },
cvt_unknown = { 'Unit name "$1" is not known' , 'unknown unit' , 'unit' , 'unknown_unit' },
cvt_should_be = { '$1' , 'ambiguous unit' , 'unit' , 'ambiguous_unit', regex = unitcode_regex, replace = unitcode_replace },
cvt_mismatch = { 'Cannot convert "$1" to "$2"' , 'unit mismatch' , 'unit' , 'unit_mismatch' },
cvt_bug_convert = { 'Bug: Cannot convert between specified units', 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_lookup = { 'Unit "$1" is incorrectly defined' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
}
-- Text to join input value/unit with output value/unit.
local disp_joins = {
-- [1]=before output, [2]=after output, [3]=between outputs in a combination; default "; "
-- [wantname] gives default abbr=off
["or"] = { " or " , "" , " or ", wantname = true },
["sqbr-sp"] = { " [" , "]" },
["sqbr-nbsp"] = { " [" , "]" },
["comma"] = { ", " , "" , ", " },
["semicolon"] = { "; " , "" },
["slash-sp"] = { " / " , "" , wantname = true },
["slash-nbsp"] = { " / ", "" , wantname = true },
["slash-nosp"] = { "/" , "" , wantname = true },
["b"] = { " (" , ")" },
["(or)"] = { " (" , ")", " or " },
["br"] = { "<br />" , "" , wantname = true },
["br()"] = { "<br />(" , ")", wantname = true },
}
-- Text to separate values in a range.
local range_types = {
-- Specifying a table requires either:
-- * "off" and "on" values (for "abbr=off" and "abbr=on"), or
-- * "input" and "output" values (for LHS and RHS);
-- other fields are optional.
-- When "adj=on|abbr=off" applies, spaces in range text are replaced with hyphens.
-- With "exception = true", that also occurs with "adj=on|abbr=on".
-- If "adj" is defined here, that text (unchanged) is used with "adj=on".
["+"] = " + ",
[","] = ", ",
[", and"] = ", and ",
[", or"] = ", or ",
["by"] = " by ",
["-"] = "–",
["to about"] = " to about ",
["and"] = { off = " and ", on = " and ", exception = true },
["and(-)"] = { input = " and ", output = "–" },
["or"] = { off = " or " , on = " or " , exception = true },
["to"] = { off = " to " , on = " to " , exception = true },
["to(-)"] = { input = " to ", output = "–" },
["+/-"] = { off = " ± ", on = " ± ", adj = " ± ", is_range_change = true },
["by(x)"] = { input = " by ", output = " × ", out_range_x = true },
["x"] = { off = " by ", on = " × ", abbr_range_x = true },
["xx"] = " × ",
["*"] = "×",
["/"] = " / ", -- for a table of high/low temperatures with {{convert|83|/|63|F|disp=br()|abbr=values}}
}
local range_aliases = {
-- ["alternative name for a range"] = "standard range name"
["–"] = "-",
["–"] = "-",
["×"] = "x",
["×"] = "x",
["±"] = "+/-",
["±"] = "+/-",
}
-- Convert accepts range text delimited with whitespace, for example, {{convert|1 to 2|ft}}.
-- In addition, the following "words" are accepted without spaces, for example, {{convert|1-2|ft}}.
-- Words must be in correct order for searching, for example, 'x' after 'xx'.
local range_words = { '-', '–', 'xx', 'x', '*' }
local ranges = {
types = range_types,
aliases = range_aliases,
words = range_words,
}
-- Valid option names.
local en_option_name = {
-- ["local text for option name"] = "en name used in this module"
["$"] = "$",
["abbr"] = "abbr",
["adj"] = "adj",
["altitude_ft"] = "altitude_ft",
["altitude_m"] = "altitude_m",
["comma"] = "comma",
["debug"] = "debug",
["disp"] = "disp",
["error"] = "error",
["frac"] = "frac",
["input"] = "input",
["lang"] = "lang",
["link"] = "lk",
["lk"] = "lk",
["order"] = "order",
["qid"] = "qid",
["qual"] = "qual",
["qualifier"] = "qual",
["round"] = "round",
["sigfig"] = "sigfig",
["sing"] = "adj", -- "sing" is an old alias for "adj"
["sortable"] = "sortable",
["sp"] = "sp",
["spell"] = "spell",
["stylein"] = "stylein",
["styleout"] = "styleout",
["tracking"] = "tracking",
}
-- Valid option values.
-- Convention: parms.opt_xxx refers to an option that is set here
-- (not intended to be set by the template which invokes this module).
-- Example: At enwiki, "abbr" includes:
-- ["values"] = "opt_values"
-- As a result, if the template uses abbr=values, Module:Convert sets:
-- parms["opt_values"] = true
-- parms["abbr"] = nil
-- Therefore parms.abbr will be nil, or will have one of the listed values
-- that do not start with "opt_".
-- An option value of form "xxx?" is the same as "xxx" but shows the input as deprecated.
-- Options removed in January 2018 with remnants still in Module:Convert:
-- abbr=mos (in a range, repeat the input unit)
-- adj=1 (set opt_singular to make the unit name singular when 0 < abs(value) <= 1)
local en_option_value = {
["$"] = 'TEXT', -- TEXT should be a currency symbol that will be used instead of "$"
["abbr"] = {
-- ["local text for option value"] = "en value used in this module"
["def"] = "", -- ignored (some wrapper templates call convert with "abbr=def" to mean "default abbreviation")
["h"] = "on", -- abbr=on + use "h" for hand unit (default)
["hh"] = "opt_hand_hh", -- abbr=on + use "hh" for hand unit
["in"] = "in", -- use symbol for LHS unit
["none"] = "off", -- old name for "off"
["off"] = "off", -- use name for all units
["on"] = "on", -- use symbol for all units
["out"] = "out", -- use symbol for RHS unit (default)
["unit"] = "unit", -- abbr=on but abbreviate units only: e6km → million km (not ×10⁶ km)
["values"] = "opt_values", -- show only input and output numbers, not units
["~"] = "opt_also_symbol", -- show input unit symbol as well as name
},
["adj"] = {
["mid"] = "opt_adjectival, opt_adj_mid", -- adj=on with user-specified text after input unit (between input and output)
["off"] = "", -- ignored (off is the default)
["on"] = "opt_adjectival", -- unit name is singular and hyphenated
["pre"] = "opt_one_preunit", -- user-specified text before input unit
["ri0"] = "opt_ri=0", -- round input with precision = 0
["ri1"] = "opt_ri=1", -- round input with precision = 1
["ri2"] = "opt_ri=2", -- round input with precision = 2
["ri3"] = "opt_ri=3", -- round input with precision = 3
["~"] = "opt_also_symbol", -- same as abbr=~ so can have {{convert|1|C|K|abbr=off|adj=~}}
},
["altitude_ft"] = 'INTEGER',
["altitude_m"] = 'INTEGER',
["comma"] = {
["5"] = "opt_comma5", -- only use numsep grouping if 5 or more digits
["gaps"] = "opt_gaps", -- use gaps, not numsep, to separate groups of digits
["gaps3"] = "opt_gaps, opt_gaps3", -- group only in threes rather than default of no gap before a single digit after decimal mark
["off"] = "opt_nocomma", -- no numsep in input or output numbers
},
["debug"] = {
["yes"] = "opt_sortable_debug", -- make the normally hidden sort key visible
},
["disp"] = {
["5"] = "opt_round=5?", -- round output value to nearest 5
["b"] = "b", -- join: '(...)'
["(or)"] = "(or)", -- join: '(...)' with 'or' between outputs in a combination
["br"] = "br", -- join: '<br />'
["br()"] = "br()", -- join: '<br />(...)'
["comma"] = "comma", -- join: ','
["flip"] = "opt_flip", -- reverse order of input/output
["number"] = "opt_output_number_only", -- display output value (not input, and not output symbol/name)
["or"] = "or", -- join: 'or'
["out"] = "opt_output_only",
["output number only"] = "opt_output_number_only",
["output only"] = "opt_output_only",
["preunit"] = "opt_two_preunits", -- user-specified text before input and output units
["semicolon"] = "semicolon", -- join: ';'
["sqbr"] = "sqbr", -- join: '[...]'
["table"] = "opt_table", -- output is suitable for a table cell with align="right"
["tablecen"] = "opt_tablecen", -- output is suitable for a table cell with align="center"
["unit"] = "opt_input_unit_only", -- display input symbol/name (not output, and not input value)
["unit or text"] = "opt_input_unit_only, opt_ignore_error", -- display input symbol/name, or given unit code if not known
["unit2"] = "opt_output_unit_only",
["x"] = "x", -- join: <first>...<second> (user-specified text)
},
["error"] = 'TEXT', -- TEXT is any text that will be returned if the conversion fails, instead of an error occurring
["frac"] = 'INTEGER',
["input"] = 'TEXT', -- TEXT should be <value><space><unitcode> or <wikidata-property-id>
["lang"] = { -- language for output digits (both en and local digits are always accepted for input)
["en"] = "opt_lang_en", -- use en digits for numbers, regardless of local language
["local"] = "opt_lang_local", -- use local digits for numbers (default, although config can change default to en)
},
["lk"] = {
["in"] = "in", -- link LHS unit name or symbol
["off"] = "off", -- do not link: same as default except for hand unit
["on"] = "on", -- link all unit names or symbols (but not twice for the same unit)
["out"] = "out", -- link RHS unit name or symbol
},
["order"] = {
["flip"] = "opt_flip", -- reverse order of input/output
["out"] = "opt_order_out", -- do not show input; instead, use order in output combination, with the first output shown as the input
},
["qid"] = 'TEXT', -- TEXT should be a Wikidata Q item identifier
["qual"] = 'TEXT', -- TEXT should be a Wikidata Q item identifier
["round"] = {
["0.5"] = "opt_round=0.5", -- round output value to nearest 0.5
["5"] = "opt_round=5", -- round output value to nearest 5
["10"] = "opt_round=10", -- round output value to nearest 10 (same as but clearer than "|-1")
["25"] = "opt_round=25", -- round output value to nearest 25
["50"] = "opt_round=50", -- round output value to nearest 50
["each"] = "opt_round_each", -- using default precision in a range, round each output separately (default uses highest precision of each item in range)
},
["sigfig"] = 'INTEGER',
["sortable"] = {
["off"] = "", -- ignored (off is the default)
["on"] = "opt_sortable_on", -- output sort key for use in a sortable table, based on value from converting to a standard base unit
["debug"] = "opt_sortable_on, opt_sortable_debug", -- |sortable=debug is the same as |sortable=on|debug=yes
},
["sp"] = {
["us"] = "opt_sp_us", -- use U.S. spelling (like "meter" instead of default "metre")
},
["spell"] = { -- only English spelling is supported; not scientific notation; only some fractions
["in"] = "opt_spell_in", -- spell input value in words
["In"] = "opt_spell_in, opt_spell_upper", -- spell input value in words with first letter uppercase
["on"] = "opt_spell_in, opt_spell_out", -- spell input and output values in words
["On"] = "opt_spell_in, opt_spell_out, opt_spell_upper", -- same, with first letter of first word in result uppercase
["us"] = "opt_sp_us", -- use U.S. spelling; same as sp=us so spell=us also works
},
["stylein"] = 'TEXT',
["styleout"] = 'TEXT',
["tracking"] = 'TEXT',
}
local titles = {
["frac"] = "Fraction/styles.css",
["sfrac"] = "Sfrac/styles.css",
}
return {
SIprefixes = SIprefixes,
all_categories = all_categories,
all_messages = all_messages,
currency = { ['$'] = true, ['£'] = true, ['€'] = true, ['₱'] = true, ['₽'] = true, ['¥'] = true },
customary_units = customary_units,
disp_joins = disp_joins,
en_option_name = en_option_name,
en_option_value = en_option_value,
eng_scales = eng_scales,
ranges = ranges,
titles = titles,
}
8m007l7jx7mdwwt2dfy66a3yo6no2nr
Template:Anchor
10
34735
126094
2026-07-15T10:56:04Z
Fongcwele
16873
Created page with "{{<includeonly>safesubst:</includeonly>#invoke:anchor|main}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude>"
126094
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:anchor|main}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
enb6c4d9v8ozj2bh2wvmo7698r1sot4
Module:Anchor
828
34736
126095
2026-07-15T10:57:15Z
Fongcwele
16873
Created page with "-- This module implements {{anchor}}. local getArgs = require('Module:Arguments').getArgs local tableTools = require('Module:TableTools') local p = {} function p.main(frame) -- Get the positional arguments from #invoke, remove any nil values, -- and pass them to p._main. local args = getArgs(frame) local argArray = tableTools.compressSparseArray(args) return p._main(unpack(argArray)) end function p._main(...) -- Generate the list of anchors. local anchors = {...."
126095
Scribunto
text/plain
-- This module implements {{anchor}}.
local getArgs = require('Module:Arguments').getArgs
local tableTools = require('Module:TableTools')
local p = {}
function p.main(frame)
-- Get the positional arguments from #invoke, remove any nil values,
-- and pass them to p._main.
local args = getArgs(frame)
local argArray = tableTools.compressSparseArray(args)
return p._main(unpack(argArray))
end
function p._main(...)
-- Generate the list of anchors.
local anchors = {...}
local ret = {}
for _, anchor in ipairs(anchors) do
ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>'
end
return table.concat(ret)
end
return p
qn9l8z10vmc8ghld7804a9aaffg6g8o
Template:Convert abbreviated
10
34737
126096
2026-07-15T10:59:21Z
Fongcwele
16873
Created page with "<includeonly>{{{{{♥|safesubst:}}}#invoke:convert|convert|abbr=on always|warnings=1}}</includeonly><noinclude>{{documentation}}</noinclude>"
126096
wikitext
text/x-wiki
<includeonly>{{{{{♥|safesubst:}}}#invoke:convert|convert|abbr=on always|warnings=1}}</includeonly><noinclude>{{documentation}}</noinclude>
a9iqlg8hn8h767etzaou9sv20yz40sm