Wiktionary
svwiktionary
https://sv.wiktionary.org/wiki/Wiktionary:Huvudsida
MediaWiki 1.47.0-wmf.24
case-sensitive
Media
Special
Diskussion
Användare
Användardiskussion
Wiktionary
Wiktionarydiskussion
Fil
Fildiskussion
MediaWiki
MediaWiki-diskussion
Mall
Malldiskussion
Hjälp
Hjälpdiskussion
Kategori
Kategoridiskussion
Appendix
Appendixdiskussion
Rimord
Rimordsdiskussion
Transwiki
Transwikidiskussion
TimedText
TimedText talk
Modul
Moduldiskussion
Event
Event talk
Sverige
0
777
4157292
4127947
2026-10-24T01:28:03Z
Frodlekis
762
4157292
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-namn}}
{{media|Flag_of_Sweden.svg|'''Sveriges''' flagga}}
'''Sverige'''
* {{uttal|sv|ljud=Sv-Sverige.ogg|ipa=[ˈsværjɛ]}}
#{{tagg|kat=länder}} stat i [[Skandinavien]] i norra [[Europa]]
#: ''Under 1900-talet utvecklades '''Sverige''' till en välfärdsstat.''
#: {{synonymer|[[landet lagom]], [[moder Svea]], [[Svea rike]], [[Konungariket Sverige]], [[Svedala]], [[Svitjod]]}}
#: {{etymologi|Kallat på 1200-talets {{härledning|sv|gmq-fsv|Swerike}}, under 1300-talet ''[[Svearike]]'', på den tiden åsyftande regionen ''[[Svealand]]''. Sammansatt av ''[[svear]]'' och ''[[rike]]''. Mot slutet av 1400-talet i yngre fornsvenska har stavningen ändrats till ''[[Swerighe]]'' i både svenska och danska språket. Under 1600-talet dök andra stavningsformer upp såsom ''Swerghe'' och ''Swirghe''. Gustav II Adolf använde stavningen ''Swirge''. Även i bestämd form såsom ''[[Sveriget]]'' 1648, och ''[[Sverget]]'' år 1719.<ref>{{källa-svetym|1005}}</ref>}}
#: {{besläktade ord|[[svenne]], [[svennefiera]], [[svennefiering]], [[svensk]], [[svenska]], [[svenskhet]], [[svenskifiera]], [[svenskifiering]]}}
#: {{sammansättningar|[[sverigebo]], [[sverigedemokrat]], [[sverigefinsk]], [[sverigemästare]], [[sverigesvenska]], [[sverigevän]]}}
====Översättningar====
{{ö-topp|stat i Skandinavien}}
*abchaziska: {{ö|ab|Швециа|tr=Švetsia}}
*acehnesiska: {{ö|ace|Swèdia}}
*afrikaans: {{ö|af|Swede}}
*albanska: {{ö+|sq|Suedia}}
*alemanniska: {{ö|als|Schwede}}
*amhariska: {{ö|am|ስዊድን|tr=swidən}}
*arabiska: {{ö+|ar|اَلسُوَيْد|m|tr=as-suwayd}}
*aragonska: {{ö|an|Suecia}}
*armeniska: {{ö+|hy|Շվեդիա|tr=Sjvedia}}
*asturiska: {{ö+|ast|Suecia}}
*aymara: {{ö|ay|Suecia}}
*azerbajdzjanska: {{ö+|az|İsveç}}
*bambara: {{ö|bm|Swedi}}
*basjkiriska: {{ö|ba|Швеция|tr=Švetsija}}
*baskiska: {{ö+|eu|Suedia}}
*bayerska: {{ö|bar|Schwedn}}
*belarusiska: {{ö|be|Швецыя|tr=Švécyja}}
*bengali: {{ö+|bn|সুইডেন|tr=su'iḑen}}
*bislama: {{ö|bi|Sweden}}
*bokmål: {{ö+|no|Sverige}}
*bosniska: {{ö|bs|Švedska}}
*bretonska: {{ö+|br|Sveden}}
*burmesiska: {{ö|my|ဆွီဒင်နိုင်ငံ}}
*cebuano: {{ö|ceb|Sweden}}
*central bikol: {{ö|bcl|Suesya}}
*cherokesiska: {{ö|chr|ᏍᏫᏕᏂ|tr=Swideni}}
*danska: {{ö+|da|Sverige}}
*engelska: {{ö+|en|Sweden}}
*esperanto: {{ö+|eo|Svedio}}, {{ö+|eo|Svedujo}}, {{ö+|eo|Svedlando}}
*estniska: {{ö+|et|Rootsi}}
*extremaduriska: {{ö|ext|Suecia}}
*finsk romani: {{ö|rmf|Sveedi}}
*finska: {{ö+|fi|Ruotsi}}
*frankoprovensalska: {{ö|frp|Suède}}
*franska: {{ö+|fr|Suède|f}}
*frisiska: {{ö+|fy|Sweden}}
*friuliska: {{ö|fur|Svezie}}
*färöiska: {{ö+|fo|Svøríki|n}}
*gagauziska: {{ö|gag|Şvețiya}}
*galiciska: {{ö+|gl|Suecia}}
*georgiska: {{ö+|ka|შვედეთი|tr=Šwedeťi}}
*gotiska: {{ö|got|𐍃𐍅𐌴𐌰𐍂𐌴𐌹𐌺𐌹|tr=Sweareiki}}, {{ö|got|𐍃𐍅𐌰𐌹𐌷𐌰𐍂𐌴𐌹𐌺𐌹|tr=Swaihareiki}}
*grönländska: {{ö+|kl|Svenskit Nunaat}}
*guaraní: {{ö|gn|Suesia}}
*haitisk kreol: {{ö|ht|Syèd}}
*hebreiska: {{ö|he|שוודיה|tr=shvédya}}
*hawaiiska: {{ö|haw|Kuekene}}
*ido: {{ö+|io|Suedia}}
*indonesiska: {{ö+|id|Swedia}}
*interlingua: {{ö|ia|Svedia}}
*inuktitut: {{ö|iu|ᔅᕗᕆᑭ|tr=svuriki}}
*iriska: {{ö|ga|Sualainn|f|text=an tSualainn}}
*isländska: {{ö+|is|Svíþjóð}}
*italienska: {{ö+|it|Svezia|f}}
*jakutiska: {{ö|sah|Швеция|tr=Švetsija}}
*japanska: {{ö+|ja|スウェーデン|tr=瑞典, Suwēden}}
*javanesiska: {{ö|jv|Swédia}}
*jiddisch: {{ö|yi|שוועדן|n|tr=shvedn|skrift=Hebr}}
*kabyliska: {{ö|kab|Sswid}}
*kapampangan: {{ö|pam|Sweden}}
*karakalpakiska: {{ö|kaa|Shvetsiya}}
*kasjubiska: {{ö+|csb|Szwedzkô}}
*katalanska: {{ö+|ca|Suècia}}
*kazakiska: {{ö|kk|Швеция|tr=Švetsija}}
*khmer: {{ö+|km|ស៊ុយអែត}}
*kikongo: {{ö|kg|Suedi}}
*kirgiziska: {{ö+|ky|Швеция|tr=Švetsija}}
*komi: {{ö|kpv|Швеция|tr=Švetsija}}
*koreanska: {{ö+|ko|스웨덴|tr=seuweden}}
*korniska: {{ö|kw|Swedherwyk}}
*korsikanska: {{ö|co|Svezia}}
*krimtatariska: {{ö|crh|İsveç}}
*kroatiska: {{ö+|hr|Švedska}}
*kurdiska: {{ö+|ku|Swêd}}
*kvänska: {{ö|fkv|Ruottii}}
*kymriska: {{ö+|cy|Sweden}}
*ladino: {{ö|lad|Suesia}}
*lao: {{ö+|lo|ສະວີເດັນ|tr=sa-vī-den}}
*latin: {{ö+|la|Suecia}}
*lettiska: {{ö+|lv|Zviedrija}}
*lezginska: {{ö|lez|Швеция|tr=Švetsija}}
*liguriska: {{ö|lij|Sveçia}}
*limburgiska: {{ö|li|Zwaede}}, {{ö|li|Zwieëd}}, {{ö+|li|Zwede}}
*lingala: {{ö|ln|Swési}}, {{ö|ln|Swédi}}
*litauiska: {{ö+|lt|Švedija|f}}
*liviska: {{ö|liv|Rūotšmō}}
*lojban: {{ö|jbo|sueriges}}
*lombardiska: {{ö|lmo|Svezia}}
*luganda: {{ö|lg|Swiiden}}
*lulesamiska: {{ö|smj|Svierik}}
*luxemburgiska: {{ö+|lb|Schweden}}
*lågskotska: {{ö|sco|Swaden}}
*lågtyska: {{ö+|nds|Sweden}}
*malagassiska: {{ö+|mg|Soeda}}
*malajiska: {{ö+|ms|Sweden}}
*malayalam: {{ö|ml|സ്വീഡന്|tr=svīḍan}}
*maltesiska: {{ö|mt|Żvezja}}
*manx: {{ö|gv|Soolyn|f|text=Y Toolyn}}
*maori: {{ö|mi|Huitene}}
*marathi: {{ö|mr|स्वीडन|tr=svīḍan}}
*meänkieli: {{ö|fit|Ruotti}}
*nahuatl: {{ö|nah|Suecia}}
*nauruanska: {{ö|na|Widen}}
*navajo: {{ö|nv|Chʼah Bideeʼí Dineʼé Bikéyah}}
*neapolitanska: {{ö|nap|Sguezia}}
*nederländska: {{ö+|nl|Zweden|n}}
*nordfrisiska: {{ö|frr|Swärik}}, {{ö|frr|Sweeden}}
*nordsamiska: {{ö|se|Ruoŧŧa}}
*norfuk: {{ö|pih|Swiiden}}
*normandiska: {{ö|nrm|Suède}}
*novial: {{ö|nov|Suedia}}
*nynorska: {{ö+|nn|Sverige}}
*occitanska: {{ö+|oc|Suècia}}
*papiamento: {{ö|pap|Suecia}}
*piedmontesiska: {{ö|pms|Svessia}}
*polska: {{ö+|pl|Szwecja}}
*portugisiska: {{ö+|pt|Suécia|f}}
*rumänska: {{ö+|ro|Suedia|f}}
*rwanda: {{ö|rw|Suwede}}
*ryska: {{ö+|ru|Швеция|f|tr=Švétsija}}
*rätoromanska: {{ö|rm|Svezia}}
*sango: {{ö+|sg|Suêde}}
*saterfrisiska: {{ö|stq|Sweeden}}
*schlesiska: {{ö|szl|Szwecyjo}}
*serbiska: {{ö+|sr|Шведска|f}}, {{ö|sr|Švedska|f}}
*sicilianska: {{ö|scn|Svezzia}}
*siswati: {{ö|ss|ISwideni}}
*skotsk gäliska: {{ö|gd|An t-Suain}}
*slovakiska: {{ö+|sk|Švédsko}}
*slovenska: {{ö+|sl|Švedska|f}}
*somaliska: {{ö|so|Iswidhan}}
*spanska: {{ö+|es|Suecia|f}}
*sundanesiska: {{ö|su|Swédia}}
*swahili: {{ö+|sw|Uswidi}}
*sydsamiska: {{ö|sma|Sveerje}}
*tagalog: {{ö|tl|Suwesya}}
*tatariska: {{ö+|tt|Швеция|tr=Švetsija}}
*tetum: {{ö|tet|Suésia}}
*thai: {{ö+|th|สวีเดน}}
*tjeckiska: {{ö+|cs|Švédsko|n}}
*tjetjenska: {{ö|ce|Швеция|tr=Švetsija}}
*tjuvasjiska: {{ö|cv|Швеция|tr=Švetsija}}
*tok pisin: {{ö|tpi|Suwidan}}
*turkiska: {{ö+|tr|İsveç}}
*turkmeniska: {{ö|tk|Şwesiýa}}
*tuvinska: {{ö|tyv|Швеция|tr=Švetsija}}
*tyska: {{ö+|de|Schweden|n}}
*udmurtiska: {{ö|udm|Швеция|tr=Švetsija}}
*ukrainska: {{ö+|uk|Швеція|f|tr=Švetsija}}
*ungerska: {{ö+|hu|Svédország}}
*uzbekiska: {{ö+|uz|Shvetsiya}}
*venetianska: {{ö+|vec|Svèsia}}
*vietnamesiska: {{ö|vi|Thụy Điển}}
*volapük: {{ö+|vo|Svedän}}
*västpanjabi: {{ö+|pnb|سویڈن}}
*võro: {{ö|fiu-vro|Roodsi}}
*wolof: {{ö|wo|Suweed}}
*yoruba: {{ö|yo|Swídìn}}
*zazaiska: {{ö+|diq|İswec}}
*zulu: {{ö|zu|ISwidi}}
*älvdalska: {{ö|ovd|Swerre}}, {{ö|ovd|Swerje}}
{{ö-botten}}
==Bokmål==
===Substantiv===
{{subst|no}}
'''Sverige'''
# {{tagg|kat=länder|språk=no}} [[#Svenska|Sverige]]
==Danska==
===Substantiv===
{{subst|da}}
'''Sverige'''
# {{tagg|kat=länder|språk=da}} [[#Svenska|Sverige]]
#: {{varianter|[[Sverrig]] ''(ålderdomligt)''}}
==Nynorska==
===Substantiv===
{{subst|nn}}
'''Sverige'''
# {{tagg|kat=länder|språk=nn}} [[#Svenska|Sverige]]
==Källor==
<references/>
m04umjpq4rp2ko9m29cn6adgjhvs0ry
kat
0
827
4157108
3915801
2026-10-23T14:15:14Z
~2026-56702-21
62364
/* Svenska */
4157108
wikitext
text/x-wiki
{{wikipedia}}
{{se även|Kat}}
==Tvärspråkligt==
===Tecken===
{{tecken|beteckningar för enheter}}
'''kat'''
#''beteckning för katalysenheten'' [[katal]]
#{{tagg|text=ISO 639-2 (T)}} kod för språket [[georgiska]]
#{{tagg|text=ISO 639-3}} kod för språket [[georgiska]]
==Svenska==
===Substantiv===
{{subst|sv}}
'''kat'''
#en [[växt]] ''(Catha edulis)'', känd för att användas som [[drog]]
#:{{varianter|[[khat]]}}
#:{{etymologi|{{belagt|sv|1989}}<ref>{{källa-so}}</ref> Av {{härledning|sv|ar|tr=qaat}}.}}
#:{{homofoner|[[katt]]}}
====Översättningar====
{{ö-topp|beteckning för katalysenheten katal}}
*tyska: {{ö|de|Khat}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''kat'''
#{{tagg|kat=djur|språk=af}} [[katt]]
==Danska==
===Substantiv===
{{da-subst-n-e|rot=katt}}
'''kat'''
#{{tagg|kat=djur|språk=da}} [[katt]]
#:''Min '''kat''' er bange for mus.''
#::''Min '''katt''' är rädd för möss.''
#:{{synonymer|[[mis]]}}
==Frisiska==
===Substantiv===
{{subst|fy}}
'''kat''' {{u}}
*{{uttal|fy|ipa=kɔt}}
#{{tagg|kat=kattdjur|språk=fy}} [[katt]]
#:{{synonymer|[[húskat]], [[poes#Frisiska|poes]]}}
==Nederländska==
===Substantiv===
{{subst|nl}}
'''kat''' ''plural'' {{g-länk|nl|subst|katten}}
*{{uttal|nl|ljud=nl-kat.ogg}}
#{{tagg|kat=däggdjur|språk=nl}} [[katt]]
#:{{synonymer|katje}}
#:{{sammansättningar|kattenras}}
==Polska==
===Substantiv===
{{subst|pl}}
'''kat''' {{m}}
*{{uttal|pl|ljud=Pl-kat.ogg}}
#[[bödel]], person som avrättar
==Slovakiska==
===Substantiv===
{{subst|sk}}
'''kat'''
#[[bödel]], person som avrättar
==Tjeckiska==
===Substantiv===
{{subst|cs}}
'''kat'''
#[[bödel]], person som avrättar
#:{{synonymer|[[popravčí]]}}
==Turkiska==
===Substantiv===
{{subst|tr}}
'''kat'''
#[[våning]]
cw2vy3lai7buu5tzxy9wup3399fugz7
4157109
4157108
2026-10-23T14:16:13Z
~2026-56702-21
62364
/* Svenska */
4157109
wikitext
text/x-wiki
{{wikipedia}}
{{se även|Kat}}
==Tvärspråkligt==
===Tecken===
{{tecken|beteckningar för enheter}}
'''kat'''
#''beteckning för katalysenheten'' [[katal]]
#{{tagg|text=ISO 639-2 (T)}} kod för språket [[georgiska]]
#{{tagg|text=ISO 639-3}} kod för språket [[georgiska]]
==Svenska==
===Substantiv===
{{sv-subst-n-oräkn}}
'''kat''' {{u}}
#{{tagg|kat=narkotika|kat2=växter|kat2=växtarter}} en [[växt]] (''[[Catha edulis]]''), känd för att användas som [[drog]]
#:{{varianter|[[khat]]}}
#:{{etymologi|{{belagt|sv|1989}}<ref>{{källa-so}}</ref> Av {{härledning|sv|ar|tr=qaat}}.}}
#:{{homofoner|[[katt]]}}
====Översättningar====
{{ö-topp|beteckning för katalysenheten katal}}
*tyska: {{ö|de|Khat}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''kat'''
#{{tagg|kat=djur|språk=af}} [[katt]]
==Danska==
===Substantiv===
{{da-subst-n-e|rot=katt}}
'''kat'''
#{{tagg|kat=djur|språk=da}} [[katt]]
#:''Min '''kat''' er bange for mus.''
#::''Min '''katt''' är rädd för möss.''
#:{{synonymer|[[mis]]}}
==Frisiska==
===Substantiv===
{{subst|fy}}
'''kat''' {{u}}
*{{uttal|fy|ipa=kɔt}}
#{{tagg|kat=kattdjur|språk=fy}} [[katt]]
#:{{synonymer|[[húskat]], [[poes#Frisiska|poes]]}}
==Nederländska==
===Substantiv===
{{subst|nl}}
'''kat''' ''plural'' {{g-länk|nl|subst|katten}}
*{{uttal|nl|ljud=nl-kat.ogg}}
#{{tagg|kat=däggdjur|språk=nl}} [[katt]]
#:{{synonymer|katje}}
#:{{sammansättningar|kattenras}}
==Polska==
===Substantiv===
{{subst|pl}}
'''kat''' {{m}}
*{{uttal|pl|ljud=Pl-kat.ogg}}
#[[bödel]], person som avrättar
==Slovakiska==
===Substantiv===
{{subst|sk}}
'''kat'''
#[[bödel]], person som avrättar
==Tjeckiska==
===Substantiv===
{{subst|cs}}
'''kat'''
#[[bödel]], person som avrättar
#:{{synonymer|[[popravčí]]}}
==Turkiska==
===Substantiv===
{{subst|tr}}
'''kat'''
#[[våning]]
o3inaye30mzlbrrecfv3k03qvlhamn4
4157110
4157109
2026-10-23T14:16:46Z
~2026-56702-21
62364
+en: [[khat]] (assisterat)
4157110
wikitext
text/x-wiki
{{wikipedia}}
{{se även|Kat}}
==Tvärspråkligt==
===Tecken===
{{tecken|beteckningar för enheter}}
'''kat'''
#''beteckning för katalysenheten'' [[katal]]
#{{tagg|text=ISO 639-2 (T)}} kod för språket [[georgiska]]
#{{tagg|text=ISO 639-3}} kod för språket [[georgiska]]
==Svenska==
===Substantiv===
{{sv-subst-n-oräkn}}
'''kat''' {{u}}
#{{tagg|kat=narkotika|kat2=växter|kat2=växtarter}} en [[växt]] (''[[Catha edulis]]''), känd för att användas som [[drog]]
#:{{varianter|[[khat]]}}
#:{{etymologi|{{belagt|sv|1989}}<ref>{{källa-so}}</ref> Av {{härledning|sv|ar|tr=qaat}}.}}
#:{{homofoner|[[katt]]}}
====Översättningar====
{{ö-topp|beteckning för katalysenheten katal}}
*engelska: {{ö+|en|khat}}
*tyska: {{ö|de|Khat}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''kat'''
#{{tagg|kat=djur|språk=af}} [[katt]]
==Danska==
===Substantiv===
{{da-subst-n-e|rot=katt}}
'''kat'''
#{{tagg|kat=djur|språk=da}} [[katt]]
#:''Min '''kat''' er bange for mus.''
#::''Min '''katt''' är rädd för möss.''
#:{{synonymer|[[mis]]}}
==Frisiska==
===Substantiv===
{{subst|fy}}
'''kat''' {{u}}
*{{uttal|fy|ipa=kɔt}}
#{{tagg|kat=kattdjur|språk=fy}} [[katt]]
#:{{synonymer|[[húskat]], [[poes#Frisiska|poes]]}}
==Nederländska==
===Substantiv===
{{subst|nl}}
'''kat''' ''plural'' {{g-länk|nl|subst|katten}}
*{{uttal|nl|ljud=nl-kat.ogg}}
#{{tagg|kat=däggdjur|språk=nl}} [[katt]]
#:{{synonymer|katje}}
#:{{sammansättningar|kattenras}}
==Polska==
===Substantiv===
{{subst|pl}}
'''kat''' {{m}}
*{{uttal|pl|ljud=Pl-kat.ogg}}
#[[bödel]], person som avrättar
==Slovakiska==
===Substantiv===
{{subst|sk}}
'''kat'''
#[[bödel]], person som avrättar
==Tjeckiska==
===Substantiv===
{{subst|cs}}
'''kat'''
#[[bödel]], person som avrättar
#:{{synonymer|[[popravčí]]}}
==Turkiska==
===Substantiv===
{{subst|tr}}
'''kat'''
#[[våning]]
hp2vsm2imrzaian49325szw1k17b21b
4157111
4157110
2026-10-23T14:17:26Z
~2026-56702-21
62364
/* Svenska */
4157111
wikitext
text/x-wiki
{{wikipedia}}
{{se även|Kat}}
==Tvärspråkligt==
===Tecken===
{{tecken|beteckningar för enheter}}
'''kat'''
#''beteckning för katalysenheten'' [[katal]]
#{{tagg|text=ISO 639-2 (T)}} kod för språket [[georgiska]]
#{{tagg|text=ISO 639-3}} kod för språket [[georgiska]]
==Svenska==
===Substantiv===
{{sv-subst-n-oräkn}}
'''kat''' {{u}}
#{{tagg|kat=narkotika|kat2=växter|kat2=växtarter}} en [[växt]] (''[[Catha edulis]]''), känd för att användas som [[drog]]
#:{{varianter|[[khat]]}}
#:{{etymologi|{{belagt|sv|1989}}<ref>{{källa-so}}</ref> Av {{härledning|sv|ar|قَات|tr=qaat}}.}}
#:{{homofoner|[[katt]]}}
====Översättningar====
{{ö-topp|beteckning för katalysenheten katal}}
*engelska: {{ö+|en|khat}}
*tyska: {{ö|de|Khat}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''kat'''
#{{tagg|kat=djur|språk=af}} [[katt]]
==Danska==
===Substantiv===
{{da-subst-n-e|rot=katt}}
'''kat'''
#{{tagg|kat=djur|språk=da}} [[katt]]
#:''Min '''kat''' er bange for mus.''
#::''Min '''katt''' är rädd för möss.''
#:{{synonymer|[[mis]]}}
==Frisiska==
===Substantiv===
{{subst|fy}}
'''kat''' {{u}}
*{{uttal|fy|ipa=kɔt}}
#{{tagg|kat=kattdjur|språk=fy}} [[katt]]
#:{{synonymer|[[húskat]], [[poes#Frisiska|poes]]}}
==Nederländska==
===Substantiv===
{{subst|nl}}
'''kat''' ''plural'' {{g-länk|nl|subst|katten}}
*{{uttal|nl|ljud=nl-kat.ogg}}
#{{tagg|kat=däggdjur|språk=nl}} [[katt]]
#:{{synonymer|katje}}
#:{{sammansättningar|kattenras}}
==Polska==
===Substantiv===
{{subst|pl}}
'''kat''' {{m}}
*{{uttal|pl|ljud=Pl-kat.ogg}}
#[[bödel]], person som avrättar
==Slovakiska==
===Substantiv===
{{subst|sk}}
'''kat'''
#[[bödel]], person som avrättar
==Tjeckiska==
===Substantiv===
{{subst|cs}}
'''kat'''
#[[bödel]], person som avrättar
#:{{synonymer|[[popravčí]]}}
==Turkiska==
===Substantiv===
{{subst|tr}}
'''kat'''
#[[våning]]
fj4ea7j6lwkaf8pczwog3409cp38d4c
4157112
4157111
2026-10-23T14:17:38Z
~2026-56702-21
62364
/* Svenska */
4157112
wikitext
text/x-wiki
{{wikipedia}}
{{se även|Kat}}
==Tvärspråkligt==
===Tecken===
{{tecken|beteckningar för enheter}}
'''kat'''
#''beteckning för katalysenheten'' [[katal]]
#{{tagg|text=ISO 639-2 (T)}} kod för språket [[georgiska]]
#{{tagg|text=ISO 639-3}} kod för språket [[georgiska]]
==Svenska==
===Substantiv===
{{sv-subst-n-oräkn}}
'''kat''' {{u}}
#{{tagg|kat=narkotika|kat2=växter|kat3=växtarter}} en [[växt]] (''[[Catha edulis]]''), känd för att användas som [[drog]]
#:{{varianter|[[khat]]}}
#:{{etymologi|{{belagt|sv|1989}}<ref>{{källa-so}}</ref> Av {{härledning|sv|ar|قَات|tr=qaat}}.}}
#:{{homofoner|[[katt]]}}
====Översättningar====
{{ö-topp|beteckning för katalysenheten katal}}
*engelska: {{ö+|en|khat}}
*tyska: {{ö|de|Khat}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''kat'''
#{{tagg|kat=djur|språk=af}} [[katt]]
==Danska==
===Substantiv===
{{da-subst-n-e|rot=katt}}
'''kat'''
#{{tagg|kat=djur|språk=da}} [[katt]]
#:''Min '''kat''' er bange for mus.''
#::''Min '''katt''' är rädd för möss.''
#:{{synonymer|[[mis]]}}
==Frisiska==
===Substantiv===
{{subst|fy}}
'''kat''' {{u}}
*{{uttal|fy|ipa=kɔt}}
#{{tagg|kat=kattdjur|språk=fy}} [[katt]]
#:{{synonymer|[[húskat]], [[poes#Frisiska|poes]]}}
==Nederländska==
===Substantiv===
{{subst|nl}}
'''kat''' ''plural'' {{g-länk|nl|subst|katten}}
*{{uttal|nl|ljud=nl-kat.ogg}}
#{{tagg|kat=däggdjur|språk=nl}} [[katt]]
#:{{synonymer|katje}}
#:{{sammansättningar|kattenras}}
==Polska==
===Substantiv===
{{subst|pl}}
'''kat''' {{m}}
*{{uttal|pl|ljud=Pl-kat.ogg}}
#[[bödel]], person som avrättar
==Slovakiska==
===Substantiv===
{{subst|sk}}
'''kat'''
#[[bödel]], person som avrättar
==Tjeckiska==
===Substantiv===
{{subst|cs}}
'''kat'''
#[[bödel]], person som avrättar
#:{{synonymer|[[popravčí]]}}
==Turkiska==
===Substantiv===
{{subst|tr}}
'''kat'''
#[[våning]]
8f6lqcg699ajk69yds601gb6oizowdz
ko
0
2399
4157150
4101704
2026-10-23T16:12:15Z
Frodlekis
762
+am: [[ላም]] (assisterat)
4157150
wikitext
text/x-wiki
{{se även|kö|kø|KO}}
{{wikipedia|Nötkreatur}}
==Tvärspråkligt==
===Kod===
{{kod|språkkoder}}
'''ko'''
#{{tagg|text=ISO 639-1}} kod för språket [[koreanska]]
==Svenska==
===Substantiv===
{{sv-subst-n-r}}
{{media|Koe in weiland bij Gorssel.JPG|en '''ko'''}}
'''ko''' {{u}}
*{{uttal|sv|ipa=kuː}}
#{{tagg|kat=däggdjur|kat2=djurhonor}} (vuxen) [[hona]] av [[däggdjur]]s[[art]]en [[nötkreatur]], ''Bos taurus'', vilken hålls som [[boskap]] och som har [[kalvat]], det vill säga fött en [[avkomma]] och därför [[producera]]r [[mjölk]]
#:''Pigorna måste gå upp tidigt för att mjölka '''korna'''.''
#:{{synonymer|[[kossa]], [[tjir]] ''(orsamål)''}}
#:{{meronymer|[[juver]], [[spenar]]}}
#:{{kohyponymer|[[kalv]], [[tjur]]}}
#{{tagg|vardagligt}} [[nötkreatur]]; individ av arten ''[[Bos taurus]]'', oavsett kön och ålder
#:{{synonymer|[[nötkreatur]]}}
#:{{hyponymer|[[tjur]], [[kalv]], [[kviga]], [[oxe]], [[#Svenska|ko]] (hona)}}
#:{{hyperonymer|[[boskap]], [[fä]], [[kreatur]]}}
#:{{sammansättningar|[[kohage]], [[komocka]], [[kostall]], [[kovändning]]}}
#:{{fraser|''(idiom)'' [[dum som en ko]], [[helig ko]], [[ingen ko på isen]]}}
#hona av ett av ett flertal större däggdjur, huvudsakligen [[slidhornsdjur]]
#:{{hyponymer|[[getko]], [[renko]], [[älgko]]}}
:{{avgränsare}}
:{{etymologi|{{belagt|sv|1200|bt}}<ref>{{källa-so}}</ref>, som {{härledning|sv|gmq-fsv|ko}}.}}
:{{grammatik|Dialektalt även ''[[kör]], [[körna]]'' i plural. Jämför danska och norska.}}
====Översättningar====
{{ö-topp|hona av ''Bos taurus''}}
*amhariska: {{ö|am|ላም|tr=lam}}
*bokmål: {{ö+|no|ku|mf}}
*bretonska: {{ö+|br|buoc'h|f}}
*danska: {{ö+|da|ko|u}}
*engelska: {{ö+|en|cow}}
*esperanto: {{ö+|eo|bovino}}
*estniska: {{ö+|et|lehm}}
*finska: {{ö+|fi|lehmä}}
*franska: {{ö+|fr|vache|f}}
*galiciska: {{ö+|gl|vaca|f}}
*grekiska: {{ö+|el|αγελάδα}}
*hebreiska: {{ö+|he|פרה}} (para)
*indonesiska: {{ö+|id|sapi}}
*isländska: {{ö+|is|kýr|f}}
*italienska: {{ö+|it|mucca|f}}, {{ö+|it|vacca|f}}
*japanska: {{ö+|ja|牛}} (うし, ushi)
*jiddisch: {{ö|yi|קו|f|tr=ku}}
*koreanska: {{ö+|ko|암소|tr=amso}}
*kroatiska: {{ö+|hr|krava|f}}
*kymriska: {{ö+|cy|buwch|f}}
*latin: {{ö+|la|bos}}, {{ö+|la|vacca|f}}
*lettiska: {{ö+|lv|govs}}
*litauiska: {{ö+|lt|karvė|f}}
*nederländska: {{ö+|nl|koe|f}}
*nordsamiska: {{ö|se|gussa}}
*persiska: {{ö+|fa|گاو ماده}}
*polska: {{ö+|pl|krowa|f}}
*portugisiska: {{ö+|pt|vaca|f}}
*rumänska: {{ö+|ro|vacă|f}}
*ryska: {{ö+|ru|корова|f}}
*slovakiska: {{ö+|sk|krava}}
*slovenska: {{ö+|sl|krava}}
*spanska: {{ö+|es|vaca|f}}
*svensk romani: {{ö|rmu|gurmi|u}}, {{ö|rmu|kromma|u}}
*sydsamiska: {{ö|sma|govse}}
*tjeckiska: {{ö+|cs|kráva|f}}
*turkiska: {{ö+|tr|inek}}
*tyska: {{ö+|de|Kuh|f}}
*ukrainska: {{ö+|uk|корова|f}}
*ungerska: {{ö+|hu|tehén}}
*vepsiska: {{ö|vep|lehm}}
*älvdalska: {{ö|ovd|tjyr}}
{{ö-botten}}
{{ö-topp|individ av arten nötkreatur, Bos taurus, oavsett kön och ålder}}
*engelska: {{ö+|en|cow}}
*malajiska: {{ö+|ms|lembu}}
*nederländska: {{ö+|nl|rund|n}}
*tyska: {{ö+|de|Rind|n}}
{{ö-botten}}
{{ö-topp|hona av ett av ett flertal större däggdjur (idisslare)}}
*bokmål: {{ö+|no|ku|mf}}
*engelska: {{ö+|en|cow}}
*polska: {{ö+|pl|krowa|f}}
*tyska: {{ö+|de|Kuh|f}}
{{ö-botten}}
==Danska==
===Substantiv===
{{da-subst-n|ko|koen|køer|køerne}}
'''ko''' {{u}}
#[[#Svenska|ko]], hona av ''Bos taurus''
#[[#Svenska|ko]], individ av arten nötkreatur, ''Bos taurus'', oavsett kön och ålder
#:{{hyponymer|[[kvie]], [[kalv]], [[tyr]], [[stud]], [[okse]], [[#Danska|ko]] (1)}}
====Fraser====
*(der er) [[ingen ko på isen]] - inga problem
*[[som to røde køer]] - när två personer liknar varandra mycket
==Lettiska==
===Adverb===
{{adv|lv}}
'''ko'''
#[[varför]]
===Pronomen===
'''ko'''
#{{böjning|lv|pron|kas}}
==Källor==
<references/>
qfk17c3z989x3ycza8whf6h04tcrc8h
Wiktionary:Stilguide/Språknamn
4
3193
4157281
4155340
2026-10-24T01:21:25Z
Frodlekis
762
/* Språknamn och språkkoder */
4157281
wikitext
text/x-wiki
{{genväg|[[WT:SPRÅK]]}}
På denna sida listas de språk med respektive språkkoder som används i artiklarnas rubriker och ihop med många mallars namngivning och syntax. Vissa språkvarianter hanteras i vissa fall inte på samma sätt som egna huvudspråk och för dessa används en speciell struktur som även presenteras på denna sida. Det händer att flera alternativa namn används för ett språk. Denna sida presenterar även namn eller pseudonamn på språk där ett annat namn på språket används här på Wiktionary. Målet är att det vanligaste, korrektaste och mest neutrala namnet är det som används, vilket inte alltid är helt enkelt att göra en bedömning av. Målet är dock att användningen av namnet för språket ska vara konsekvent oavsett vilket valet faller på. Informationen på denna sida kan ständigt fyllas ut och förbättras.
Det är inte alltid självklart vilka språk som bör hanteras som ett eget huvudspråk här på Wiktionary och vilka språk som bättre hanteras som underspråk eller språkvarianter av ett annat språk. Diskutera gärna dessa frågor. Generellt bör inte språk som saknar egen [[w:en:ISO 639-3|ISO 639-3]]-kod finnas i listan, såvida det inte finns synnerliga skäl till att ha med dessa. Notera att ett av de vanligaste skälen till att ett naturligt (till skillnad från ett konstgjort) språk inte har en kod är att debatten om huruvida det är ett språk eller en dialekt inte är riktigt avgjord ännu. För att inte aktivt ta ställning i dylika debatter håller vi oss till en standard, nämligen att vi säger att det är ett "språk" om och endast om det har en ISO 639-3-kod, annars är det ''antingen'' en dialekt, som då tas upp under motsvarande språk, ''eller'' så är det ett konstgjort språk med starkt begränsad utbredning varvid en fall för fall-diskussion måste väckas.
==Språknamn och språkkoder==
{{topp|språk : språkkod <sup>(källa för språkkoden)</sup> anmärkning}}
{{kolumner|3}}
* {{språk|tvärspråkligt|--|-|not=inget språk, ingen riktig språkkod}}
----
* {{språk|abazinska|abq|ISO 639-3}}
* {{språk|abchaziska|ab|Wiktionary}}
* {{språk|abenakiska|abe|ISO 639-3}}
* {{språk|acehnesiska|ace|Wikimedia}}
* {{språk|adygeiska|ady|ISO 639-3}}
* {{språk|afar|aa|Wiktionary}}
* {{språk|afrikaans|af|Wiktionary}}
* {{ersättningsspråk|aino|använd=''ainu''}}
* {{språk|ainu|ain|ISO 639-3}}
* {{språk|akan|ak|Wiktionary}}
* {{språk|akkadiska|akk|ISO 639-3}}
* {{språk|akkalasamiska|sia|ISO 639-3}}
* {{språk|albanska|sq|Wiktionary}}
* {{språk|alemanniska|als|Wiktionary|not=wiktionary omdirigerar till wikipedia, kod "gsw" enligt ISO 639-3}}
* {{språk|aleutiska|ale|ISO 639-3}}
* {{språk|altaiska|tut|ISO 639-2}}
* {{språk|amhariska|am|Wiktionary}}
* {{språk|andalusisk arabiska|xaa|ISO 639-3}}
* {{språk|anglo-normandiska|xno|ISO 639-3}}
* {{ersättningsspråk|anglonormandiska|använd=''anglo-normandiska''}}
* {{ersättningsspråk|anglosachsiska|använd=''fornengelska''}}
* {{ersättningsspråk|anglosaxiska|använd=''fornengelska''}}
* {{språk|arabiska|ar|Wiktionary}}
* {{språk|aragonska|an|Wiktionary}}
* {{språk|arameiska|arc|Wikimedia}}
* {{ersättningsspråk|arjeplogssamiska|använd=''pitesamiska''}}
* {{språk|armeniska|hy|Wiktionary}}
* {{språk|arumänska|roa-rup|Wiktionary}}
* {{språk|assamesiska|as|Wiktionary}}
* {{språk|asturiska|ast|Wiktionary}}
* {{ersättningsspråk|atjehnesiska|använd=''acehnesiska''}}
* {{språk|avariska|av|Wiktionary}}
* {{språk|avestiska|ave|ISO 639-3}}
* {{språk|aymara|ay|Wiktionary}}
* {{språk|azerbajdzjanska|az|Wiktionary}}
* {{ersättningsspråk|azeri|använd=''azerbajdzjanska''}}
* {{ersättningsspråk|azeriska|använd=''azerbajdzjanska''}}
* {{ersättningsspråk|bahasa indonesia|använd=''indonesiska''}}
* {{språk|balinesiska|ban|ISO 639-3}}
* {{språk|baluchiska|bal|ISO 639-2}}
* {{språk|bambara|bm|Wiktionary}}
* {{språk|banjaresiska|bjn|ISO 639-3}}
* {{språk|basjkiriska|ba|Wiktionary}}
* {{språk|baskiska|eu|Wiktionary}}
* {{språk|batak karo|btx|ISO 639-3}}
* {{språk|bats|bbl|ISO 639-3}}
* {{språk|bayerska|bar|ISO 639-3}}
* {{språk|belarusiska|be|Wiktionary}}
* {{språk|bemba|bem|ISO 639-3}}
* {{språk|bengali|bn|Wiktionary}}
* {{språk|berberspråk|ber|ISO 639-2}} {{?|"berber" eller "berberspråk"? se disksidan}}
* {{språk|bidjara|bym|ISO 639-3}}
* {{språk|bihari|bh|Wiktionary}}
* {{språk|bishnupriya manipuri|bpy|Wikimedia}}
* {{språk|bislama|bi|Wiktionary}}
* {{språk|bokmål|no|Wiktionary}} {{?|Fortfarande en hel del översättningar kvar att fixa där bokmål hanteras som dialekt istället för som eget huvudspråk}}
* {{språk|bosniska|bs|Wiktionary}}
* {{ersättningsspråk|brasilianska|använd=''portugisiska''}}
* {{språk|bretonska|br|Wiktionary}}
* {{språk|buginesiska|bug|Wikimedia}}
* {{språk|bulgariska|bg|Wiktionary}}
* {{språk|burjatiska|bxr|Wikimedia}}
* {{språk|burmesiska|my|Wiktionary}}
* {{ersättningsspråk|caló|använd=''iberisk romani''}}
* {{språk|capiznon|cps|ISO 639-3}}
* {{språk|cebuano|ceb|Wikimedia}}
* {{språk|central bikol|bcl|Wikimedia}}
* {{språk|centralkurdiska|ckb|Wikimedia}}
* {{språk|centralnahuatl|nhn|ISO 639-3}}
* {{språk|chavacano|cbk|ISO 639-3}}
* {{språk|chamorro|ch|Wiktionary}}
* {{språk|chantiska|kca|ISO 639-3}}
* {{ersättningsspråk|cherokee|använd=''cherokesiska''}}
* {{språk|cherokesiska|chr|Wiktionary}}
* {{språk|cheyenne|chy|Wikimedia}}
* {{språk|chichewa|ny|Wikimedia}}
* {{språk|chinook jargon|chn|ISO 639-3}}
* {{språk|chuukesiska|chk|ISO 639-3}}
* {{språk|cia-cia|cia|ISO 639-3}}
* {{språk|cora|crn|ISO 639-3}}
* {{språk|cree|cr|Wiktionary}}
* {{språk|dairi batak|btd|ISO 639-3}}
* {{språk|dagbanli|dag|ISO 639-3}}
* {{språk|danska|da|Wiktionary}}
* {{språk|dari|prs|ISO 639-3}}
* {{språk|demotiska|egy-dem|ISO 639-2 / konstruerad}}
* {{språk|dinka|din|ISO 639-3}}
* {{språk|divehi|dv|Wikimedia}}
* {{språk|dzongkha|dz|Wiktionary}}
* {{språk|enaresamiska|smn|ISO 639-3}}
* {{språk|engelska|en|Wiktionary}}
* {{språk|egyptiska|egy|ISO 639-3}}
* {{språk|erzya|myv|Wikimedia}}
* {{språk|esperanto|eo|Wiktionary}}
* {{språk|estniska|et|Wiktionary}}
* {{språk|etruskiska|ett|ISO 639-3}}
* {{språk|extremaduriska|ext|Wikimedia}}
* {{språk|evenki|evn|ISO 639-3}}
* {{språk|ewe|ee|ISO 639-3}}
* {{språk|fang|fan|ISO 639-3}}
* {{ersättningsspråk|farsi|använd=''persiska''}}
* {{språk|feniciska|phn|ISO 639-3}}
* {{språk|fiji|fj|Wiktionary}}
* {{ersättningsspråk|fijianska|använd=''fiji''}}
* {{språk|fijiansk hindi|hif|Wikimedia}}
* {{språk|filipino|fil|ISO 639-3}}
* {{språk|finska|fi|Wiktionary}}
* {{språk|finsk romani|rmf|ISO 639-3}}
* {{språk|forndanska|gmq-fda|ISO 639-5 / konstruerad}}
* {{språk|fornengelska|ang|Wiktionary}}
* {{språk|fornfrankiska|frk|ISO 639-3}}
* {{språk|fornfranska|fro|ISO 639-3}}
* {{språk|fornfrisiska|ofs|ISO 639-3}}
* {{språk|forngeorgiska|oge|ISO 639-3}}
* {{språk|fornhögtyska|goh|ISO 639-3}}
* {{ersättningsspråk|fornlågtyska|använd=''fornsaxiska''}}
* {{ersättningsspråk|fornnederländska|använd=''fornlågfrankiska''}}
* {{språk|forniriska|sga|ISO 639-3}}
* {{ersättningsspråk|fornisländska|använd=''fornnordiska''}}
* {{språk|fornkymriska|owl|ISO 639-3}}
* {{språk|fornkyrkoslaviska|cu|Wikipedia}}
* {{språk|fornlågfrankiska|odt|ISO 639-3}}
* {{språk|fornnordiska|non|ISO 639-2}}
* {{språk|fornoccitanska|pro|ISO 639-3}}
* {{språk|fornpersiska|peo|ISO 639-3}}
* {{språk|fornportugisiska|roa-fpt|ISO 639-5 / konstruerad}}
* {{ersättningsspråk|fornpreussiska|använd=''preussiska''}}
* {{språk|fornsaxiska|osx|ISO 639-3}}
* {{språk|fornspanska|osp|ISO 639-3}}
* {{språk|fornsvenska|gmq-fsv|ISO 639-5 / konstruerad}}
* {{språk|fornturkiska|otk|ISO 639-3}}
* {{språk|fornöstslaviska|orv|ISO 639-3}}
* {{språk|frankoprovensalska|frp|Wikimedia}}
* {{språk|franska|fr|Wiktionary}}
* {{språk|frisiska|fy|Wiktionary}}
* {{språk|friuliska|fur|ISO 639-3}}
* {{språk|futuniska|fud|ISO 639-3}}
* {{språk|färöiska|fo|Wiktionary}}
* {{språk|gagauziska|gag|ISO 639-3}}
* {{språk|galiciska|gl|Wiktionary}}
* {{språk|ge'ez|gez|ISO 639-3}}
* {{språk|georgiska|ka|Wiktionary}}
* {{språk|gotiska|got|Wikimedia}}
* {{språk|grekiska|el|Wiktionary}}
* {{språk|groningska|gos|ISO 639-3}}
* {{språk|grönländska|kl|Wiktionary}}
* {{språk|guanche|gnc|ISO 639-3}}
* {{språk|guaraní|gn|Wiktionary}}
* {{språk|guerreronahuatl|ngu|ISO 639-3}}
* {{språk|gujarati|gu|Wiktionary}}
* {{språk|gusii|guz|ISO 639-3}} {{?|Behöver verifieras}}
* {{ersättningsspråk|haitiska|använd=''haitisk kreol''}}
* {{språk|haitisk kreol|ht|Wikimedia}}
* {{språk|hakka|hak|Wikimedia}}
* {{språk|hausa|ha|Wiktionary}}
* {{ersättningsspråk|hawaiianska|använd=''hawaiiska''}}
* {{språk|hawaiiska|haw|Wikimedia}}
* {{språk|hebreiska|he|Wiktionary}}
* {{språk|hedi|xed|ISO 639-3}}
* {{språk|hettitiska|hit|ISO 639-3}}
* {{språk|hiligaynon|hil|ISO 639-2}}
* {{språk|hindi|hi|Wiktionary}}
* {{språk|hindko|hnd|ISO 639-3}}
* {{språk|hmong daw|mww|ISO 639-3}}
* {{ersättningsspråk|holländska|använd=''nederländska''}}
* {{språk|hurritiska|xhu|ISO 639-3}}
* {{språk|högsorbiska|hsb|Wiktionary}}
* {{språk|iberisk romani|rmq|ISO 639-3}}
* {{ersättningsspråk|ibo|använd=''igbo''}}
* {{språk|ido|io|Wiktionary}}
* {{språk|igbo|ig|Wikimedia}}
* {{språk|ilokano|ilo|Wikimedia}}
* {{språk|indonesiska|id|Wiktionary}}
* {{språk|interlingua|ia|Wiktionary}}
* {{språk|interlingue|ie|Wiktionary}}
* {{språk|inuktitut|iu|Wiktionary}}
* {{språk|iñupiaq|ik|Wiktionary}}
* {{språk|iriska|ga|Wiktionary}}
* {{ersättningsspråk|irländska|använd=''iriska''}}
* {{språk|isländska|is|Wiktionary}}
* {{språk|istriotiska|ist|ISO 639-3}}
* {{språk|italienska|it|Wiktionary}}
* {{språk|jakan|yka|ISO 639-3}}
* {{språk|jakutiska|sah|ISO 639-3}}
* {{språk|japanska|ja|Wiktionary}}
* {{språk|javanesiska|jv|Wiktionary}}
* {{språk|jiddisch|yi|Wiktionary}}
* {{språk|kabardinska|kbd|ISO 639-3}}
* {{språk|kabyliska|kab|ISO 639-3}}
* {{ersättningsspråk|kalaallisut|använd=''grönländska''}}
* {{ersättningsspråk|kalé|använd=''finsk romani''}}
* {{språk|kalmuckiska|xal|Wikimedia}}
* {{ersättningsspråk|kalo|använd=''finsk romani''}}
* {{språk|kamba|kam|ISO 639-3}}
* {{språk|kammu|xmu|ISO 639-3}}
* {{språk|kanjobal|kjb|ISO 639-3}}
* {{språk|kannada|kn|Wiktionary}}
* {{språk|kantonesiska|yue|Wikimedia}}
* {{språk|kanuri|kr|Wikimedia}}
* {{språk|kapampangan|pam|Wikimedia}}
* {{språk|karakalpakiska|kaa|ISO 639-3}}
* {{språk|karatjajbalkariska|krc|Wikimedia}}
* {{språk|karelska|krl|ISO 639-3}}
* {{språk|kashmiri|ks|Wiktionary}}
* {{språk|kasjubiska|csb|Wiktionary}}
* {{språk|katalanska|ca|Wiktionary}}
* {{ersättningsspråk|kazakh|använd=''kazakiska''}}
* {{språk|kazakiska|kk|Wiktionary}}
* {{ersättningsspråk|khakas|använd=''khakasiska''}}
* {{språk|khakasiska|kjh|ISO 639-3}}
* {{språk|khmer|km|Wiktionary}}
* {{språk|kikai|kzg|ISO 639-3}}
* {{språk|kikongo|kg|Wikimedia}}
* {{språk|kikuyu|ki|Wikimedia}}
* {{språk|kildinsamiska|sjd|ISO 639-3}}
* {{språk|kinesiska|zh|Wiktionary}}
* {{språk|kirgiziska|ky|Wiktionary}}
* {{språk|kirundi|rn|Wiktionary}}
* {{språk|kituba|ktu|ISO 639-3}}
* {{språk|klassisk grekiska|grc|ISO 639-3}}
* {{språk|klassisk nahuatl|nci|ISO 639-3}}
* {{språk|klassisk syriska|syc|ISO 639-3}}
* {{ersättningsspråk|klingon|använd=''klingonska''}}
* {{språk|klingonska|tlh|ISO 639-3}}
* {{språk|komi|kpv|ISO 639-3}}
* {{ersättningsspråk|komi-syrjänska|använd=''komi''}}
* {{språk|koptiska|cop|ISO 639-3}}
* {{språk|koreanska|ko|Wiktionary}}
* {{språk|korjakiska|kpy|ISO 639-3}}
* {{språk|korniska|kw|Wiktionary}}
* {{språk|korsikanska|co|Wiktionary}}
* {{språk|kotava|avk|ISO 639-3}}
* {{språk|krimtatariska|crh|Wikimedia}}
* {{språk|krimtjakiska|jct|ISO 639-3}}
* {{språk|kroatiska|hr|Wiktionary}}
* {{språk|kumykiska|kum|ISO 639-3}}<!-- Språknamnet är 'kumykiska' hos NE. -->
* {{språk|kunigami|xug|ISO 639-3}}
* {{ersättningsspråk|kurdiska||använd=''nordkurdiska'', ''centralkurdiska'', ''sydkurdiska'' eller ''zazaiska''|not=(se nedan för härledningar)}}
* {{språk|kurdiska|ku|Wiktionary}} {{?|kurdiska eller syd-/nordkurdiska är frågan, se diskussion}}
* {{språk|kvänska|fkv|ISO 639-3}}
* {{språk|kymriska|cy|Wiktionary}}
* {{språk|ladino|lad|Wikimedia}}
* {{språk|ladinska|lld|ISO 639-3}}
* {{språk|lak|lbe|ISO 639-3}}
* {{språk|lakandonska|lac|ISO 639-3}}
* {{språk|lakota|lkt|ISO 639-3}}
* {{språk|lao|lo|Wiktionary}}
* {{ersättningsspråk|laotiska|använd=''lao''}}
* {{språk|latin|la|Wiktionary}}
* {{språk|laziska|lzz|ISO 639-3}}
* {{språk|lettgalliska|ltg|ISO 639-3}}
* {{språk|lettiska|lv|Wiktionary}}
* {{ersättningsspråk|letzeburgiska|använd=''luxemburgiska''}}
* {{språk|lezginska|lez|ISO 639-3}}
* {{språk|liguriska|lij|Wikimedia}}
* {{språk|limburgiska|li|Wiktionary}}
* {{språk|lingala|ln|Wiktionary}}
* {{språk|litauiska|lt|Wiktionary}}
* {{språk|liviska|liv|ISO 639-3}}
* {{språk|livvi|olo|ISO 639-3}}
* {{språk|lojban|jbo|Wiktionary}}
* {{språk|lombardiska|lmo|Wikimedia}}
* {{språk|luganda|lg|Wikimedia}}
* {{språk|lulesamiska|smj|ISO 639-3}}
* {{språk|luxemburgiska|lb|Wiktionary}}
* {{språk|luhya|luy|ISO 639-3}}
* {{ersättningsspråk|låglitauiska|använd=''žemaitiska''}}
* {{språk|lågskotska|sco|Wikimedia}} {{?|Diskuteras fortfarande på [[Malldiskussion:sco]]}}
* {{språk|lågsorbiska|dsb|Wikimedia}}
* {{språk|lågtyska|nds|Wiktionary}}
* {{språk|maa|mas|ISO 639-3}}
* {{språk|maduresiska|mad|ISO 639-3}}
* {{språk|magindanao|mdh|ISO 639-3}}
* {{språk|maithili|mai|Wikimedia}}
* {{språk|makassariska|mak|ISO 639-3}}
* {{språk|makedonska|mk|Wiktionary}}
* {{ersättningsspråk|makedoniska|använd=''makedonska''}}
* {{språk|malagassiska|mg|Wiktionary}}
* {{språk|malajiska|ms|Wiktionary}}
* {{språk|malayalam|ml|Wiktionary}}
* {{ersättningsspråk|maldiviska|använd=''divehi''}}
* {{språk|maltesiska|mt|Wiktionary}}
* {{språk|manchu|mnc|ISO 639-3}}
* {{ersättningsspråk|mandarin|använd=''kinesiska''|not={{?|Detta borde nog diskuteras.}}}}
* {{språk|mansiska|mns|ISO 639-3}}
* {{språk|manx|gv|Wiktionary}}
* {{språk|maori|mi|Wiktionary}}
* {{språk|mapudungun|arn|Wikimedia}}
* {{språk|mara|mrh|ISO 639-3}} {{?|Behöver verifieras}}
* {{språk|maranao|mrw|ISO 639-3}}
* {{språk|marathi|mr|Wiktionary}}
* {{språk|marshallesiska|mh|Wiktionary}}
* {{ersättningsspråk|massaj|använd=''maa'' med kod "mas"}}
* {{språk|mauritisk kreol|mfe|ISO 639-3}}
* {{språk|medelengelska|enm|ISO 639-3}}
* {{språk|medelfranska|frm|ISO 639-3}}
* {{språk|medelhögtyska|gmh|ISO 639-3}}
* {{språk|medellågtyska|gml|ISO 639-3}}
* {{språk|medelnederländska|dum|ISO 639-3}}
* {{språk|medelpersiska|pal|ISO 639-3}}
* {{språk|meänkieli|fit|ISO 639-3}}
* {{språk|minangkabau|min|Wikimedia}}
* {{språk|min nan|zh-min-nan|Wiktionary}}
* {{språk|mirandesiska|mwl|ISO 639-3}}
* {{språk|miskito|miq|ISO 639-3}}
* {{språk|miyako|mvi|ISO 639-3}}
* {{språk|moksja|mdf|ISO 639-3}}
* {{språk|moldaviska|mo|Wiktionary}}
* {{språk|mongoliska|mn|Wiktionary}}
* {{ersättningsspråk|mòoré|använd=''mossi''}}
* {{ersättningsspråk|morisien|använd=''mauritisk kreol''}}
* {{språk|mossi|mos|ISO 639-3}}
* {{språk|mykensk grekiska|gmy|ISO 639-3}}
* {{språk|nahuatl|nah|Wiktionary}}
* {{språk|norfuk|pih|ISO 639-3}}
* {{språk|nauruanska|na|Wiktionary}}
* {{språk|navajo|nv|Wikimedia}}
* {{språk|ndonga|ng|Wikimedia}}
* {{språk|neapolitanska|nap|Wikimedia}}
* {{språk|nederländska|nl|Wiktionary}}
* {{ersättningsspråk|nepalesiska|använd=''nepali''}}
* {{språk|nepali|ne|Wiktionary}}
* {{språk|ngaju dayak|nij|ISO 639-3}} {{?|Behöver verifieras}}
* {{språk|nordamami|ryn|ISO 639-3}}
* {{ersättningsspråk|nordkoreanska|använd=''koreanska''}}
* {{språk|nordfrisiska|frr|ISO 639-3}}
* {{språk|nordkurdiska|kmr|ISO 639-3}}
* {{språk|nordndebele|nd|ISO 639-1}}
* {{språk|nordsamiska|se|Wikimedia}}
* {{språk|normandiska|nrm|Wiktionary}}
* {{språk|norn|nrn|ISO 639-3}}
* {{ersättningsspråk|norska|använd=''bokmål'' eller ''nynorska''|not=se nedan för härledningar}}
* {{språk|novial|nov|Wikimedia}}
* [[nubiska]] {{?|språkgrupp, ej språk}}
* {{språk|nynorska|nn|Wiktionary}}
* {{språk|nyöstsyriska|aii|ISO 639-3}}
* {{språk|occitanska|oc|Wiktionary}}
* {{språk|ojibwe|oj|ISO 639-1}} {{?|"ojibwe" eller "ojibwa" eller "ojibwaspråk"? se disksidan}}
* {{språk|okinawianska|ryu|ISO 639-3}}
* {{språk|okinoerabu|okn|ISO 639-3}}
* {{språk|oriya|or|Wiktionary}}
* {{språk|oromo|om|Wiktionary}}
* {{språk|osmanska|ota|ISO 639-3}}
* {{språk|ossetiska|os|Wikimedia}}
* {{ersättningsspråk|ottomanska|använd=''osmanska''}}
* {{språk|palauiska|pau|ISO 639-3}}
* {{språk|pali|pi|Wiktionary}}
* {{språk|pangasinan|pag|ISO 639-3}}
* {{språk|papiamento|pap|Wikimedia}}
* {{språk|pashto|ps|Wiktionary}}
* {{språk|patwa|jam|ISO 639-3 (och [[incubator:Wp/jam|Wikimedia]]?)}}
* {{språk|pennsylvaniatyska|pdc|SIL}}
* {{språk|persiska|fa|Wiktionary}}
* {{språk|piedmontesiska|pms|Wikimedia}}
* {{språk|pikardiska|pcd|Wikimedia}}
* {{ersättningsspråk|pilipino|använd=''filipino''}}
* {{språk|pitesamiska|sje|ISO 639-3}}
* {{språk|pitjantjatjara|pjt|ISO 639-3}}
* {{språk|polabiska|pox|ISO 639-3}}
* {{språk|polska|pl|Wiktionary}}
* {{språk|portugisiska|pt|Wiktionary}}
* {{språk|powhatan|pim|ISO 639-3}}
* {{språk|preussiska|prg|ISO 639-3}}
* {{ersättningsspråk|provensalska|använd=''occitanska''}}
* {{språk|punjabi|pa|Wiktionary}}
* {{språk|quechua|qu|Wiktionary}}
* {{språk|rejang|rej|ISO 639-3}}
* {{ersättningsspråk|resanderomani|använd=''svensk romani''}}
* {{språk|rohingya|rhg|ISO 639-3}}
* {{språk|romani|rom|ISO 639-2}}: egna språkkoder finns hittills för ''[[svensk romani]], [[finsk romani]], [[iberisk romani]]''.
* {{språk|rukai|dru|ISO 639-3}}
* {{språk|rumänska|ro|Wiktionary}}
* {{språk|rusinska|rue|ISO 639-3}}
* {{språk|rwanda|rw|Wiktionary}}
* {{språk|ryska|ru|Wiktionary}}
* {{språk|rätoromanska|rm|Wiktionary}}
* {{ersättningsspråk|samiska|använd=''akkalasamiska, enaresamiska, kildinsamiska, lulesamiska, nordsamiska, pitesamiska, skoltsamiska, sydsamiska, tersamiska'' eller ''umesamiska''|not=(se nedan för härledningar)}}
* {{språk|samoanska|sm|Wiktionary}}
* {{ersättningsspråk|samogitiska|använd=''žemaitiska''}}
* {{språk|sango|sg|Wiktionary}}
* {{språk|sanskrit|sa|Wiktionary}}
* {{språk|sardiska|sc|Wiktionary}}
* {{språk|sasak|sas|ISO 639-3}}
* {{språk|saterfrisiska|stq|ISO 639-3}}
* {{språk|schlesiska|szl|Wikimedia}}
* {{språk|schwabiska|swg|ISO 639-3}}
* {{språk|selkupiska|sel|ISO 639-3}}
* {{språk|sepedi|nso|ISO 639-3}}
* {{språk|serbiska|sr|Wiktionary}}
* {{ersättningsspråk|serbokroatiska|använd=''serbiska'' eller ''kroatiska''}}
* {{språk|sesotho|st|Wiktionary}}
* {{språk|shan|shn|Wiktionary}}
* {{språk|shauraseni|psu|ISO 639-3}}
* {{språk|shetländska|scz|ISO 639-3}}
* {{språk|shona|sn|Wiktionary}}
* {{ersättningsspråk|siamesiska|använd=''thai''}}
* {{språk|sicilianska|scn|Wiktionary}}
* {{språk|sidamo|sid|ISO 639-3}}
* {{språk|sindhi|sd|Wiktionary}}
* {{språk|singalesiska|si|Wiktionary}}
* {{språk|siswati|ss|Wiktionary}}
* {{språk|sjoriska|cjs|ISO 639-3}}
* {{ersättningsspråk|skandoromani|använd=''svensk romani''}}
* {{språk|skoltsamiska|sms|ISO 639-3}}
* {{ersättningsspråk|skotska|använd=''lågskotska'' ''(eller engelska med taggen skotsk engelska om dialekten avses)''}}
* {{ersättningsspråk|skotsk gaeliska|använd=''skotsk gäliska''}}
* {{språk|skotsk gäliska|gd|Wiktionary}}
* {{språk|slovakiska|sk|Wiktionary}}
* {{språk|slovenska|sl|Wiktionary}}
* {{språk|somaliska|so|Wiktionary}}
* {{ersättningsspråk|sorani|använd=''centralkurdiska''}}
* {{ersättningsspråk|sranan|använd=''surinamesiska''}}
* {{språk|spanska|es|Wiktionary}}
* {{språk|slovakiska|sk|Wiktionary}}
* {{språk|sumeriska|sux|ISO 639-3}}
* {{språk|sundanesiska|su|Wiktionary}}
* {{språk|surigaonon|sul|ISO 639-3}} {{?|Behöver verifieras}}
* {{språk|surinamesiska|srn|ISO 639-3}}
* {{språk|svanetiska|sva|ISO 639-3}}
* {{språk|svenska|sv|[[Wiktionary:Huvudsida|Wiktionary]]}}
* {{språk|svensk romani|rmu|ISO 639-3}}
* {{språk|svenskt teckenspråk|swl|ISO 639-3}}
* {{språk|swahili|sw|Wiktionary}}
* {{språk|sydamami|ams|ISO 639-3}}
* {{språk|sydazerbajdzjanska|azb|ISO 639-3}} {{?|Behöver verifieras}}
* {{ersättningsspråk|sydkoreanska|använd=''koreanska''}}
* {{språk|sydkurdiska|sdh|ISO 639-3}} {{?|kurdiska eller syd-/nordkurdiska är frågan, se diskussion}}
* {{språk|sydndebele|nr|ISO 639-1}}
* {{språk|sydsamiska|sma|ISO 639-3}}
* {{ersättningsspråk|syriska|använd=''klassisk syriska'' eller ''nyöstsyriska''}}
* {{språk|tadzjikiska|tg|Wiktionary}}
* {{ersättningsspråk|tadjikiska|använd=''tadzjikiska''}}
* {{språk|tagalog|tl|Wiktionary}}
* {{språk|tahitiska|ty|Wikimedia}}
* {{språk|tai lü|khb|ISO 639-3}}
* {{språk|tamil|ta|Wiktionary}}
* {{språk|tatariska|tt|Wiktionary}}
* {{språk|tausug|tsg|ISO 639-3}}
* {{språk|telugu|te|Wiktionary}}
* {{språk|teop|tio|ISO 639-3}}
* {{språk|tersamiska|sjt|ISO 639-3}}
* {{språk|tetum|tet|ISO 639-3}}
* {{språk|thai|th|Wiktionary}}
* {{ersättningsspråk|thailändska|använd=''thai''}}
* {{språk|tibetanska|bo|Wiktionary}}
* {{språk|tigre|tig|Wikimedia}}
* {{språk|tigrinska|ti|Wiktionary}}
* {{språk|tiwi|tiw|ISO 639-1}}
* {{språk|tjeckiska|cs|Wiktionary}}
* {{språk|tjetjenska|ce|ISO 639-1}}
* {{språk|tjuktjiska|ckt|ISO 639-3}}
* {{språk|tjuvasjiska|cv|ISO 639-1}}
* {{språk|tlingit|tli|ISO 639-1}}
* {{språk|toba batak|bbc|ISO 639-3}}
* {{språk|tok pisin|tpi|Wiktionary}}
* {{språk|tokunoshima|tkn|ISO 639-3}}
* {{språk|tonganska|to|Wiktionary}}
* {{ersättningsspråk|tornedalsfinska|använd=''meänkieli''}}
* {{språk|tsonga|ts|Wiktionary}}
* {{språk|tswana|tn|Wiktionary}}
* {{språk|tumbuka|tum|Wikimedia}}
* {{språk|tupinambá|tpn|ISO 639-3}}
* {{språk|turkiska|tr|Wiktionary}}
* {{språk|turkmeniska|tk|Wiktionary}}
* {{språk|tuvinska|tyv|ISO 639-3}}
* {{språk|twi|tw|Wiktionary}}
* {{språk|tyska|de|Wiktionary}}
* {{språk|udmurtiska|udm|Wikimedia}}
* {{språk|ugaritiska|uga|ISO 639-3}}
* {{språk|uiguriska|ug|Wiktionary}}
* {{språk|ukrainska|uk|Wiktionary}}
* {{språk|umesamiska|sju|ISO 639-3}}
* {{språk|ungerska|hu|Wiktionary}}
* {{språk|uralbanska|sqj-usq|ISO 639-5 / konstruerad}}
* {{språk|urdu|ur|Wiktionary}}
* {{språk|urgermanska|gem-ugm|ISO 639-5 / konstruerad}}
* {{språk|urnordiska|gem-uno|ISO 639-5 / konstruerad}}
* {{språk|urindoariska|inc-uia|ISO 639-5 / konstruerad}}
* {{språk|urindoeuropeiska|ine-uie|ISO 639-5 / konstruerad}}
* {{språk|urindoiranska|iir-uir|ISO 639-5 / konstruerad}}
* {{språk|uriranska|ira-uir|ISO 639-5 / konstruerad}}
* {{språk|uritaliska|itc-uit|ISO 639-5 / konstruerad}}
* {{språk|urkeltiska|cel-uce|ISO 639-5 / konstruerad}}
* {{språk|ursamiska|smi-usm|ISO 639-2 / konstruerad}}
* {{språk|ursemitiska|sem-use|ISO 639-5 / konstruerad}}
* {{språk|urslaviska|sla-usl|ISO 639-5 / konstruerad}}
* {{språk|urturkiska|trk-utr|ISO 639-5 / konstruerad}}
* {{språk|uröstersjöfinska|fiu-ufi|ISO 639-5 / konstruerad}}
* {{språk|uzbekiska|uz|Wiktionary}}
* {{språk|vallonska|wa|Wiktionary}}
* {{språk|venda|ve|Wikipedia}}
* {{språk|venetianska|vec|Wikimedia}}
* {{språk|vepsiska|vep|ISO 639-3}}
* {{språk|vietnamesiska|vi|Wiktionary}}
* {{språk|vilamoviska|wym|ISO 639-3}}
* {{ersättningsspråk|vitryska|använd=''belarusiska''}}
* {{språk|volapük|vo|Wiktionary}}
* {{ersättningsspråk|volapyk|använd=''volapük''}}
* {{språk|võro|fiu-vro|Wikimedia}}
* {{språk|votiska|vot|ISO 639-3}}
* {{ersättningsspråk|västflamländska|använd=''nederländska'' med dialekttagg}}
* {{språk|västmariska|mrj|Wikimedia}}
* {{språk|västpanjabi|pnb|Wikimedia}} {{?|Västpanjabi eller lahnda?}}
* {{ersättningsspråk|walesiska|använd=''kymriska''}}
* {{språk|walliska|wls|ISO 639-3}}
* {{språk|waray-waray|war|Wikimedia}}
* {{språk|wolof|wo|Wiktionary}}
* {{ersättningsspråk|wymysöriska|använd=''vilamoviska''}}
* {{språk|xhosa|xh|Wiktionary}}
* {{språk|yaeyama|rys|ISO 639-3}}
* {{språk|yankunytjatjara|kdd|ISO 639-3}}
* {{språk|yi|ii|Wikimedia}}
* {{språk|yonaguni|yoi|ISO 639-3}}
* {{språk|yoron|yox|ISO 639-3}}
* {{språk|yoruba|yo|Wiktionary}}
* {{språk|yukatekiska|yua|ISO 639-3}}
* {{språk|zarma|dje|ISO 639-3}}
* {{ersättningsspråk|zaza|använd=''zazaiska''}}
* {{språk|zazaiska|diq|Wikimedia}}
* {{ersättningsspråk|zazaki|använd=''zazaiska''}}
* {{språk|zeeländska|zea|ISO 639-3}}
* {{språk|žemaitiska|sgs|ISO 639-3}}
* {{språk|zhuang|za|Wiktionary}}
* {{språk|zulu|zu|Wiktionary}}
* {{språk|älvdalska|ovd|ISO 639-3}}
* {{språk|östmariska|mhr|Wikimedia}}
{{kolumner-slut}}
{{botten}}
Språkkoder och namn på språk samt antal huvuduppslag finns också på sidan [[Wiktionary:Alla språk och koder med antal huvuduppslag]].
== Språkkoder reserverade för etymologi ==
Dessa koder bör användas enbart i {{mall|härledning}}.
* {{språk|e=onlyetym|norska|h-nor|ISO 639-5|not=aktuell norska (bokmål + nynorsk), detta till skillnad från "non" för fornnordiska}}
* {{språk|e=onlyetym|samiska|h-smi|ISO 639-5|not=aktuell samiska (11 dialekter), detta till skillnad från "smi-usm" för ursamiska}}
* {{språk|e=onlyetym|taino|tnq|ISO 639-3|not=utdött språk som talades i Karibien på bland annat Kuba, Jamaica och Haiti}}
== Lägg till nytt språk ==
# Lägg till språket i [[Modul:lang/data]] på samma sätt som befintliga språk. Tänk på att:
#:...i första hand använda [[Special:SiteMatrix|Wikimedias språkkoder]] för det aktuella språket.
#:...i andra hand använda ISO 639-koder i följande ordning: ISO 639-1, ISO 639-3, ISO 639-2(/T) så som presenteras på [https://iso639-3.sil.org/ https://iso639-3.sil.org/].
#:...som källa för språkkoden anges ''Wiktionary'' om en Wiktionaryupplaga finns på det aktuella språket. Detta för att kunna länka till den Wiktionaryupplagan på det språket. Om språket saknar Wiktionaryupplaga men har en språkupplaga av ett annat projekt (såsom Wikipedia) anges ''Wikimedia''. I övriga fall anges den ISO 639 som koden är hämtad ifrån. Ange bara ISO 639-2 om ISO 639-3 för det aktuella språket saknas.
# Lägg till <code><nowiki>* {{språk|språknamn|språkkod|källa}}</nowiki></code> på sidan [[Wiktionary:Stilguide/Språknamn]] (här)
# (Frivilligt) Skapa associerade kategorier, såsom <code>Kategori:Språknamn</code> och <code>Kategori:Språknamn/Alla uppslag</code>
# (Frivilligt) (Endast administratörer) Uppdatera data som används av finesser på [[Wiktionary:Finesser/Uppdatera data]]
==Underspråk och språkvarianter==
;Detta avsnitt är tänkt att ge information om hur olika underspråk och språkvarianter hanteras i artiklar
*Engelska
:<nowiki>{{tagg}}</nowiki>-mallar för ord som inte är gemensamma för amerikansk och brittisk engelska, eller som används i andra områden:
:*amerikansk engelska, om ordet är specifikt för USA.
:*australisk engelska, om ordet är specifikt för Australien.
:*brittisk engelska, om ordet är specifikt för Storbritannien.
:*skotsk engelska, om ordet är specifikt för Skottland. (jämför lågskotska)
:*<...> engelska, om ordet är specifikt för annat område
*Koreanska, om ordet är samma både i Nord- och Sydkorea
:<nowiki>{{tagg}}</nowiki>-mallar för ord som inte är gemensamma i Nordkorea och i Sydkorea:
:*nordkoreanska
:*sydkoreanska
*Portugisiska, om ordet är samma i både Brasilien och Portugal
:<nowiki>{{tagg}}</nowiki>-mallar för ord som inte är gemensamma i Afrika, Brasilien och i Portugal:
:*afrikansk portugisiska
:*brasiliansk portugisiska
:*portugisisk portugisiska
[[Kategori:Stilguide|Språknamn]]
7t6kqr7xdpiqdlfyx5mdw4cyx4t2a0r
oj
0
5030
4157286
4102549
2026-10-24T01:24:14Z
Frodlekis
762
4157286
wikitext
text/x-wiki
==Svenska==
===Interjektion===
{{interj|sv}}
'''oj'''
*{{uttal|sv|enkel=ˈåjː|ipa=ˈɔjː}}
#uttrycker [[förvåning]]
#:'''''Oj''', vad snabbt det gick!''
#:{{synonymer|[[hoppsan]], [[ojdå]]}}
#:{{besläktade ord|[[oja]] sig}}
====Översättningar====
{{ö-topp|uttryck av förvåning}}
*bokmål: {{ö|no|oi}}
*central bikol: {{ö|bcl|palán}}
*engelska: {{ö+|en|oh}}, {{ö+|en|blimey}}, {{ö+|en|whoa}}, {{ö+|en|oops}}, {{ö+|en|cor}}, {{ö+|en|wow}}
*polska: {{ö+|pl|oj}}
*ryska: {{ö+|ru|ой}}
*älvdalska: {{ö|ovd|oj}}
{{ö-botten}}
af3n07fhzjdyoh6c5zirz618idsk9kt
penis
0
5108
4157327
4155692
2026-10-24T01:44:36Z
Frodlekis
762
4157327
wikitext
text/x-wiki
{{wikipedia}}
{{se även|Penis|pénis|pênis}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
'''penis'''
#{{tagg|fysiologi|kat=anatomi}} ett av mannens yttre [[könsorgan]], vilket är beläget mellan benen och som hos mannen innehåller [[urinrör]]ets mynning och dessutom innehåller [[erektil]] vävnad som gör penis styv så att organet vid [[samlag]] kan föras in i kvinnans [[slida]] ([[vagina]]) och vid [[utlösning]] ([[ejakulation]]) föra [[sperma]] in i de kvinnliga könsvägarna, vilket kan leda till [[befruktning]] av en [[äggcell]], vilket är första steget i [[fortplantning]]en
#:{{hyperonymer|[[könsorgan]]}}
#:{{grammatik|I bestämd form förekommer det även att ordet skrivs utan slutartikel (”[Älgen] hade saknat scrotum, och penis hade haft ett läge ungefär halvvägs mellan det normala och anus, sålunda vettande bakåt.” [https://runeberg.org/faunaflora/1930/0060.html Fauna och Flora]).}}
#:{{användning|Denna term är den medicinska och den mest neutrala benämningen på mannens könsorgan.}}
#:{{diverse|Ordet reduceras från "penis" till "pen" i vissa sammansättningar.}}
#:{{synonymer|[[balle]] ''(vardagligt, slang)'', [[dase]] ''(slang)'', [[dingeling]] ''(vardagligt, slang)'', [[dolme]] ''(vardagligt, slang)'', [[donge]] ''(slang)'', [[drule]] ''(slang)'', [[familjelycka]] ''(vardagligt)'', [[fläsksvärd]] ''(vardagligt)'', [[frodlem]] ''(ålderdomligt)'', [[frälsarstav]] ''(slang)'', [[kuk]] ''(slang, vulgärt)'', [[kärleksstav]], [[köttflöjt]] ''(vulgärt)'', [[köttklubba]] ''(vulgärt)'', [[köttspjut]] ''(vulgärt)'', [[manslem]] ''(vardagligt)'', [[petterniklas]] ''(vardagligt, slang)'', [[pick]] ''(vardagligt, slang)'', [[pille]] ''(vardagligt)'', [[pillesnopp]] ''(barnspråk)'', [[pillesnorre]] ''(slang)'', [[pillevink]] ''(barnspråk)'', [[pitt]] ''(vardagligt, slang)'', [[skinnspik]] ''(slang)'', [[snopp]] ''(vardagligt)'', [[snorre]] ''(vardagligt, slang)'', [[task]] ''(vardagligt)'', [[veke]] ''(vardagligt)'', [[åderpåle]] ''(vardagligt)''}}
#:{{sammansättningar|[[löspenis]], [[mikropenis]], [[penisattrapp]], [[penisfodral]], [[penisfraktur]], [[penisförlängare]], [[penisförlängning]], [[penisskaft]]}}
#:{{besläktade ord|[[penektomi]]}}
====Översättningar====
{{ö-topp|det manliga könsorganet}}
*afrikaans: {{ö+|af|penis}}
*alemanniska: {{ö|als|Penis}}
*arabiska: {{ö|ar|قَضِيب|m|tr=qaḍīb}}, {{ö+|ar|ذَكَر|m|tr=ḏakar}}
*aragonska: {{ö|an|pene}}
*asturiska: {{ö+|ast|pene|m}}
*azerbajdzjanska: {{ö+|az|penis}}
*baskiska: {{ö+|eu|zakil}}
*bayerska: {{ö|bar|Schwanz}}
*bokmål: {{ö+|no|penis}}
*bosniska: {{ö+|bs|penis}}
*central bikol: {{ö|bcl|putoy}}
*danska: {{ö+|da|penis}}
*engelska: {{ö+|en|penis}}
*esperanto: {{ö|eo|peniso}}
*finska: {{ö+|fi|penis}}, {{ö+|fi|siitin}}
*franska: {{ö+|fr|pénis|m}}
*frisiska: {{ö|fy|penis}}
*galiciska: {{ö+|gl|pene|m}}
*grekiska: {{ö+|el|πέος|n}} (péos)
*indonesiska: {{ö+|id|penis}}, {{ö+|id|zakar}}, {{ö+|id|kontol|not=vulgärt}}
*isländska: {{ö+|is|getnaðarlimur|m}}, {{ö|is|reður|m}}, {{ö|is|tippi|n}}, {{ö|is|böllur|m}}
*italienska: {{ö+|it|pene|m}}
*kroatiska: {{ö+|hr|penis|m}}
*lakota: {{ö|lkt|čhé}}
*lulesamiska: {{ö|smj|buohtja}}
*malagassiska: {{ö+|mg|lataka}}
*manx: {{ö|gv|bwoid}}
*maori: {{ö|mi|ure}}
*nederländska: {{ö+|nl|penis|m}}
*polska: {{ö+|pl|penis|m}}
*portugisiska: {{ö+|pt|pênis}}, {{ö+|pt|pénis|m}}
*rumänska: {{ö+|ro|penis|n}}
*slovenska: {{ö+|sl|penis}}
*spanska: {{ö+|es|pene|m}}
*sydsamiska: {{ö|sma|boetje}}
*tjeckiska: {{ö+|cs|penis|m}}
*turkiska: {{ö+|tr|penis}}
*tyska: {{ö+|de|Penis|m}}, {{ö+|de|Glied|n}}
*ugaritiska: {{ö|uga|𐎜𐎌𐎗}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''penis'''
#{{tagg|anatomi|språk=af}} [[#Svenska|penis]]
==Bokmål==
===Substantiv===
{{subst|no}}
'''penis'''
#{{tagg|anatomi|kat=anatomi|språk=no}} [[#Svenska|penis]]
==Bosniska==
===Substantiv===
{{subst|bs}}
'''penis'''
#{{tagg|anatomi|språk=bs}} [[#Svenska|penis]]
==Danska==
===Substantiv===
{{da-subst-n|penis|penissen|penisser|penisserne|penis}}
'''penis''' {{u}}
#{{tagg|anatomi|språk=da}} [[#Svenska|penis]]
==Engelska==
===Substantiv===
{{en-subst|2=[[penises]], [[penes]], [[penii]]|4=[[penises']], [[penes']], [[penii's]]}}
'''penis'''
*{{uttal|en|ipa=ˈpiːnɪs|ljud=En-us-penis.ogg}}
#{{tagg|anatomi|språk=en}} [[#Svenska|penis]]
#:{{synonymer|[[male member]], [[membrum virile]] ''(latin)'', [[phallus]], [[pizzle]] ''(brittiska, australienska, om djur, särskilt tjur)'', [[virile member]], [[boner]] ''(erigerad)'', [[cock]], [[dick]], [[ding-a-ling]], [[ding-dong]], [[dingy]] ''(barnspråk)'', [[dong]], [[dork]], [[johnson]], [[John Thomas]], [[joystick]], [[knob]] ''(brittiska)'', [[lad]] ''(irländska)'', [[love muscle]], [[love truncheon]], [[male rod]], [[manhood]], [[member]], [[organ]], [[package]], [[pecker]], [[peen]], [[pee-pee]] ''(barnspråk)'', [[pee-wee]] ''(barnspråk)'', [[peter]], [[piece]], [[pocket rocket]], [[prick]], [[pud]], [[schlong]], [[shaft]], [[shlong]], [[skin flute]], [[todger]] ''(brittiska, australienska)'', [[tool]], [[unit]], [[wang]], [[weapon]], [[wee-wee]] ''(barnspråk)'', [[wiener]] ''(barnspråk)'', [[willie]]}}
#:{{antonymer|[[vagina]]}}
#:{{meronymer|[[glans]]}}
#:{{besläktade ord|[[penectomy]], [[penile]]}}
#:{{fraser|[[glans penis]], [[penis envy]], [[penis transplant]], [[penis worm]]}}
#:{{diverse|Latinska pluralformen ''[[penii]]'' används här och där i modern engelska. Ordet reduceras från "penis" till "pen" i vissa sammansättningar.}}
==Esperanto==
===Verb===
'''penis'''
#{{böjning|eo|verb|peni}}
==Finska==
===Substantiv===
{{subst|fi}}
'''penis'''
#{{tagg|anatomi|språk=fi}} [[#Svenska|penis]]
#:{{seäven|[[siitin]]}}
==Frisiska==
===Substantiv===
{{subst|fy}}
'''penis'''
*{{uttal|fy|ipa=ˈpe:nəs}}
#{{tagg|anatomi|språk=fy}} [[#Svenska|penis]]
#:{{synonymer|[[lid]], [[pyst]]}}
==Indonesiska==
===Substantiv===
{{subst|id}}
'''penis'''
#{{tagg|anatomi|språk=id}} [[#Svenska|penis]]
#:{{synonymer|[[zakar]], [[kontol]] ''(vulgärt)''}}
#:{{fraser|[[glans penis]], [[kanker penis]], [[kepala penis]]}}
==Katalanska==
===Substantiv===
{{subst|ca}}
'''penis''' {{m}}
*{{uttal|ca|ipa=ˈpɛ.nis}}
#{{tagg|anatomi|språk=ca}} [[#Svenska|penis]]
#:{{synonymer|[[carall]] ''(vulgärt)'', [[cigala]], [[cuca]] ''(vardagligt)'', [[fal·lus]], [[membre]], [[pardal]], [[piu]], [[pixa]] ''(vulgärt)'', [[quirra]], [[tita]], [[titola]], [[verga]]}}
==Nederländska==
===Substantiv===
{{subst|nl}}
'''penis'''
#{{tagg|anatomi|språk=nl}} [[#Svenska|penis]]
==Polska==
===Substantiv===
{{pl-subst-m|penis|penisy|penisa|penisów|penisowi|penisom|[[penis]], [[penisa]]|penisy|penisem|penisami|penisie|penisach|penisie|penisy}}
'''penis''' {{m}}
*{{uttal|pl|ipa=ˈpɛɲis̪/|ljud=Pl-penis.ogg}}
#{{tagg|anatomi|språk=pl}} [[#Svenska|penis]]
#:{{synonymer|[[chuj]] ''(slang)'', [[członek]], [[kutas]] ''(slang)'', [[fallus]], [[fiut]] ''(slang)'', [[lacha]] ''(slang)'', [[pała]] ''(slang)'', [[prącie]], [[kapucyn]] ''(slang)'', [[wacek]], [[laga]], [[siusiak]], [[pindol]], [[kuśka]]}}
==Rumänska==
===Substantiv===
{{subst|ro}}
'''penis''' {{n}}
#{{tagg|anatomi|språk=ro}} [[#Svenska|penis]]
#:{{synonymer|[[miel]] ''(slang)'', [[pulă]] ''(vulgärt, slang)'', [[puţă]] ''(slang)'', [[sculă]] ''(slang)''}} fitta
==Tjeckiska==
===Substantiv===
{{subst|cs}}
'''penis''' {{m}}
#{{tagg|anatomi|språk=cs}} [[#Svenska|penis]]
#:{{synonymer|[[pyj]]}}
==Turkiska==
===Substantiv===
{{tr-subst-k}}
'''penis'''
#{{tagg|anatomi|språk=tr}} [[#Svenska|penis]]
#:{{antonymer|vulva}}
#:{{synonymer|[[kamış]], [[sik]]}}
#:{{hyperonymer|[[cinsî organ]], [[cinsel organ]]}}
50myotuq77s9p87zml0mzt3f3kbxh3f
örn
0
5192
4157116
3952010
2026-10-23T15:07:10Z
~2026-56702-21
62364
+yi: [[אָדלער]] (assisterat)
4157116
wikitext
text/x-wiki
{{se även|Örn}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
{{media|Aguila-calva - Bald-Eagle - Haliaeetus-leucocephalus.jpg|örn (fågel)}}
{{media|Coat of arms of Germany.svg|örn (heraldik)}}
'''örn'''
#{{tagg|zoologi|kat=fåglar}} vardagligt samlingsnamn för en grupp större [[rovfågel|rovfåglar]] inom familjen [[hökfågel|hökfåglar]]
#{{tagg|heraldik}} [[beståndsdel]] av [[vapen]] eller [[flagga|flaggor]] {{?|som föreställer en örn (1)?}}
:{{avgränsare}}
:{{etymologi|Runsvenska ''ærni'' ('''arni''', dativ singularis), {{härledning|sv|gmq-fsv|ørn}}, fornisländska ''ǫrn'' (nominativ pluralis ''ernir''), nyisländska ''örn'', fornengelska ''earn'', engelska ''erne'', fornsaxiska och fornhögtyska ''arn'', medellågtyska ''arent'', nederländska ''arend'', av urgermanska ''[[*arnu-]]''. Besläktat med tyska ''[[Aar]]'', fornhögtyska och fornsaxiska ''aro'', gotiska ''ara'' fornisländska ''ari'', av ett urgermanskt ''[[*aran-]]''. Återfinns även i germanska namn som [[Arnold]] and [[Arthur]]. Ytterst av urindoeuropeiska ''[[*h₃er-]]'', varav även grekiska ''[[ὄρνις]]'' (varav [[ornitolog]]), ’fågel’, armeniska ''oror'', ’mås’, forniriska ''irar'' (iriska ''iolar''), litauiska ''[[erēlis]]'', ryska ''[[орёл]]''.<ref>{{källa-etymonline|erne|datum=2017-05-24}}</ref><ref>http://en.wiktionary.org/wiki/earn</ref>}}
:{{sammansättningar|[[dubbelörn]], [[havsörn]], [[kungsörn]], [[örnbo]], [[örnnäsa]], [[örnnäste]], [[örnunge]], [[örnvråk]]}}
====Översättningar====
{{ö-topp|rovfågel}}
*afrikaans: {{ö+|af|arend}}, {{ö|af|adelaar}}
*albanska: {{ö|sq|shqiponja}}
*armeniska: {{ö+|hy|արծիվ}} (artsiv)
*baskiska: {{ö+|eu|arrano}}
*belarusiska: {{ö|be|арол|m}}
*bokmål: {{ö+|no|ørn|f}}
*bretonska: {{ö+|br|erer|m}}
*bulgariska: {{ö+|bg|оре́л|m}}
*cherokesiska: {{ö|chr|ᎠᏩᎯᎵ}} (awahili)
*danska: {{ö+|da|ørn}}
*engelska: {{ö+|en|eagle}}
*esperanto: {{ö+|eo|aglo}}
*estniska: {{ö+|et|kotkas}}
*finska: {{ö+|fi|kotka}}
*fornengelska: {{ö|ang|earn}}
*franska: {{ö+|fr|aigle|m}}
*färöiska: {{ö|fo|ørn}}
*georgiska: {{ö+|ka|არწივი}} (artsivi)
*indonesiska: {{ö+|id|elang}}
*isländska: {{ö+|is|örn|m}}
*italienska: {{ö+|it|aquila}}
*japanska: {{ö+|ja|鷲|tr=わし, ''washi''}}
*jiddisch: {{ö|yi|אָדלער|m|tr=odler}}
*koptiska: {{ö|cop|ⲁϧⲱⲙ|tr=àxōm}}
*korniska: {{ö|kw|er|m}}
*kymriska: {{ö+|cy|eryr|m}}
*latin: {{ö+|la|aquila|f}}
*litauiska: {{ö+|lt|aras|m}}, {{ö+|lt|erelis|m}}
*makedonska: {{ö|mk|орел|m}}
*mirandesiska: {{ö|mwl|águila|f}}, {{ö|mwl|aila|f}}
*nederländska: {{ö+|nl|adelaar}}, {{ö+|nl|arend|m}}
*nynorska: {{ö|nn|ørn|f}}
*persiska: {{ö+|fa|عقاب}}
*polska: {{ö+|pl|orzeł}}
*portugisiska: {{ö+|pt|águia|f}}
*rumänska: {{ö+|ro|vultur}}
*ryska: {{ö+|ru|орёл}}
*sanskrit: {{ö+|sa|गरुडः}} (garuḍaḥ)
*slovakiska: {{ö+|sk|orol}}
*spanska: {{ö+|es|águila|f}}
*sydsamiska: {{ö|sma|aarhtse}}
*tjeckiska: {{ö+|cs|orel|m}}
*turkiska: {{ö+|tr|kartal}}
*tyska: {{ö+|de|Adler|m}}
*ukrainska: {{ö+|uk|орел|m}} (orel)
*ungerska: {{ö+|hu|sas}}
{{ö-botten}}
{{ö-topp|heraldik}}
*engelska: {{ö+|en|eagle}}
*italienska: {{ö+|it|aquila|f}}
*nederländska: {{ö+|nl|adelaar|m}}
*spanska: {{ö+|es|águila|f}}
*tyska: {{ö+|de|Adler|m}}
{{ö-botten}}
==Isländska==
===Substantiv===
{{is-subst|genus=maskulinum|örn|örninn|ernir|ernirnir|örn|örninn|erni|ernina|erni|erninum|örnum|örnunum|arnar|arnarins|arna|arnanna}}
'''örn''' {{m}}
#{{tagg|kat=fåglar|språk=is}} [[örn#Svenska|örn]]
==Källor==
<references/>
5r7o2l2kg8foo1omgaiuyhfrm9a3y0i
Tyskland
0
7968
4157326
4084873
2026-10-24T01:44:17Z
Frodlekis
762
4157326
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-namn}}
{{media|Flag_of_Germany.svg|Tysklands [[flagga]]}}
'''[[tysk|Tysk]][[land]]'''
#{{tagg|kat=länder}} en [[stat]] i västra Europa; officiellt namn: [[Förbundsrepubliken Tyskland]]
#:'''''Tyskland''' har haft många framgångar vad gäller biltillverkning.''
#:{{sammansättningar|[[Nordtyskland]], [[Sydtyskland]], [[Västtyskland]], [[Östtyskland]]}}
====Översättningar====
{{ö-topp}}
*abchaziska: {{ö|ab|Алмантәыла|tr=Ālmānṭ°əlā}}
*abenakiska: {{ö|abe|Alemônki}}
*acehnesiska: {{ö|ace|Jeureuman}}
*afrikaans: {{ö+|af|Duitsland}}
*albanska: {{ö+|sq|Gjermania|f}}
*alemanniska: {{ö|als|Dytschland|n}}
*amhariska: {{ö|am|ጀርመን|tr=ǧärmän}}
*arabiska: {{ö+|ar|أَلْمَانِيَا|tr=ʾalmāniyā|f}}
*aragonska: {{ö|an|Alemanya}}
*armeniska: {{ö+|hy|Գերմանիա}} (Germania)
*arumänska: {{ö|roa-rup|Ghermãnia}}
*assamesiska: {{ö|as|জাৰ্মানী}}
*asturiska: {{ö+|ast|Alemaña}}
*avariska: {{ö|av|Алмания|tr=Almanija}}
*aymara: {{ö|ay|Alimaña}}
*azerbajdzjanska: {{ö+|az|Almaniya}}
*bambara: {{ö|bm|Alimaɲi}}
*basjkiriska: {{ö|ba|Германия|tr=Germaniya}}
*baskiska: {{ö+|eu|Alemania}}
*bayerska: {{ö|bar|Deitschland|n}}
*belarusiska: {{ö|be|Герма́нія|tr=Hjermánija|f}}, {{ö|be|Няме́ччына|f|tr=Njamjéččyna}}
*bengali: {{ö+|bn|জার্মানি|tr=jarmani}}
*bishnupriya manipuri: {{ö|bpy|জার্মানি}}
*bislama: {{ö|bi|Jemani}}
*bosniska: {{ö+|bs|Njemačka|f}}
*bretonska: {{ö+|br|Alamagn}}
*bokmål: {{ö+|no|Tyskland|n}}
*buginesiska: {{ö|bug|Jerman}}
*bulgariska: {{ö+|bg|Герма́ния|f|tr=Germánija}}
*burmesiska: {{ö|my|ဂျာမနီ|tr=gyama.ni}}
*central bikol: {{ö|bcl|Alemanya}}
*cherokesiska: {{ö+|chr|ᎠᏛᏥ|tr=advtsi}}
*chuukesiska: {{ö|chk|Toowis}}, {{ö|chk|Ttooyis}}, {{ö|chk|Séémén}}
*danska: {{ö+|da|Tyskland}}
*divehi: {{ö|dv|ޖަރުމަނުވިލާތް|tr=jarumanuvilāt}}
*dzongkha: {{ö|dz|ཇཱར་མ་ནི|tr=jār ma ni}}
*engelska: {{ö+|en|Germany}}
*esperanto: {{ö+|eo|Germanio}}, {{ö+|eo|Germanujo}}
*estniska: {{ö+|et|Saksamaa}}
*extremaduriska: {{ö|ext|Alemaña}}
*finska: {{ö+|fi|Saksa}}
*fornengelska: {{ö|ang|Þēodiscland}}
*fornfranska: {{ö|fro|Alemaigne|f}}
*fornkyrkoslaviska: {{ö|cu|Нѣмьци|p|tr=Němĭci}}
*fornoccitanska: {{ö|pro|Alamagna}}
*franska: {{ö+|fr|Allemagne|f}}
*frisiska: {{ö+|fy|Dútslân|n}}
*friuliska: {{ö|fur|Gjermanie|f}}
*futuniska: {{ö|fud|Siamani}}
*färöiska: {{ö+|fo|Týskland|n}}
*galiciska: {{ö+|gl|Alemaña|f}}
*georgiska: {{ö+|ka|გერმანია|tr=germania}}
*gotiska: {{ö|got|𐌲𐌰𐌹𐍂𐌼𐌰𐌽𐌾𐌰|tr=gairmanja}}
*grekiska: {{ö+|el|Γερμανία|f}} (Germanía)
*grönländska: {{ö+|kl|Tyskit Nunaat}}
*guaraní: {{ö|gn|Alemaña}}
*haitisk kreol: {{ö|ht|Alemay}}
*hausa: {{ö|ha|Jāmùs|f}}
*hawaiiska: {{ö|haw|Kelemānia}}, {{ö|haw|Koekelana}}
*hebreiska: {{ö+|he|גֶּרְמַנְיָה|f}} (germánya)
*hindi: {{ö+|hi|जर्मनी|m|tr=jarmanī}}
*högsorbiska: {{ö+|hsb|Němska|f}}
*ido: {{ö+|io|Germania}}
*igbo: {{ö|ig|Jémanị}}
*ilokano: {{ö|ilo|Alemania}}
*indonesiska: {{ö+|id|Jerman}}
*interlingua: {{ö+|ia|Germania}}
*interlingue: {{ö|ie|Germania}}
*inuktitut: {{ö|iu|ᔮᒪᓂ}}
*iriska: {{ö+|ga|Gearmáin|f|text=an Ghearmáin}}
*isländska: {{ö+|is|Þýskaland|n}}
*italienska: {{ö+|it|Germania|f}}
*japanska: {{ö+|ja|ドイツ}} (Doitsu)
*javanesiska: {{ö+|jv|Jerman}}
*jiddisch: {{ö|yi|דײַטשלאַנד|n|tr=daytshland}}
*kabyliska: {{ö|kab|Lalman}}
*kannada: {{ö+|kn|ಜರ್ಮನಿ|tr=jarmani}}
*karakalpakiska: {{ö|kaa|Germaniya}}
*kasjubiska: {{ö+|csb|Miemieckô}}
*katalanska: {{ö+|ca|Alemanya}}, {{ö+|ca|Alemània|f}}
*kazakiska: {{ö|kk|Германия|tr=Germanïya}}
*khmer: {{ö+|km|អាល្លឺម៉ង់}} (āllīmang)
*kinesiska: {{ö+|zh|德国}} (déguó), {{ö+|zh|德意志}} (déyìzhì)
*kirgiziska: {{ö+|ky|Германия|tr=Germaniya}}
*koreanska: {{ö+|ko|독일}} (dogil), {{ö|ko|독일국}} (dok-il-guk), {{ö+|ko|도이췰란드|tr=Doichwillandeu|not=Nordkorea}}
*korniska: {{ö+|kw|Almayn}}
*korsikanska: {{ö|co|Ghjermania}}, {{ö|co|Germania}}
*krimtatariska: {{ö|crh|Almaniya}}
*kroatiska: {{ö+|hr|Njemačka|f}}
*kurdiska: {{ö+|ku|Almanya}}
*kvänska: {{ö|fkv|Tuiska}}
*kymriska: {{ö+|cy|Almaen|f|text=Yr Almaen}}
*ladino: {{ö|lad|Almania}}
*lao: {{ö+|lo|ເຢຍລະມັນ}} (yīa la man), {{ö|lo|ເຢັຽລະມັນ|tr=yīa la man}}, {{ö|lo|ເຢຍຣະມັນ|tr=yīa ra man}}, {{ö|lo|ເຢັຍຣະມັນ|tr=yia ra man}}
*latin: {{ö+|la|Germānia|f}}
*lettgalliska: {{ö|ltg|Vuoceja|f}}
*lettiska: {{ö+|lv|Vācija|f}}
*lezginska: {{ö|lez|Германия|tr=Germaniä}}
*liguriska: {{ö|lij|Germania|f}}
*limburgiska: {{ö|li|Duutsjlandj}}, {{ö|li|Duutsland}}
*lingala: {{ö|ln|Alémani}}
*litauiska: {{ö+|lt|Vokietija|f}}
*liviska: {{ö|liv|Saksāmō}}
*lombardiska: {{ö|lmo|Germania}}
*luganda: {{ö|lg|Girimane}}
*luhya: {{ö|luy|Jamani}}
*luxemburgiska: {{ö+|lb|Däitschland|n}}
*lågsorbiska: {{ö|dsb|Nimska|f}}, {{ö|dsb|Nimce|p}}
*lågtyska: {{ö+|nds|Düütschland|n}}, {{ö|nds|Düüdschland|n}}, {{ö+|nds|Dietschlaund|n}}, {{ö+|nds|Dietschlaunt|n}}
*maithili: {{ö|mai|जर्मनी}}
*makedonska: {{ö+|mk|Германија|f|tr=Germanija}}
*malajiska: {{ö+|ms|Jerman}}
*malayalam: {{ö|ml|ജര്മനി|tr=jarmani}}
*maltesiska: {{ö|mt|Ġermanja|f|text=il-Ġermanja}}
*manx: {{ö|gv|Giarmaan|f}}
*maori: {{ö|mi|Tiamana}}
*marshallesiska: {{ö|mh|Jāmne}}
*medelhögtyska: {{ö|gmh|Tiutschlant}}
*mongoliska: {{ö|mn|Герма́н|tr=Germán}}
*nahuatl: {{ö+|nah|Teutontlālpan}}
*norfuk: {{ö|pih|Doichland}}
*navajo: {{ö|nv|Béésh Bichʼahii bikéyah}}
*nederländska: {{ö+|nl|Duitsland|n}}
*nepali: {{ö|ne|जर्मनी|tr=jarmanī}}
*nordfrisiska: {{ö|frr|Sjiisklun}}, {{ö|frr|Tjüschlönj}}
*nordsamiska: {{ö|se|Duiska}}
*normandiska: {{ö|nrm|Allémangne|f}}
*nynorska: {{ö+|nn|Tyskland|n}}
*occitanska: {{ö+|oc|Alemanha|f}}
*oriya: {{ö+|or|ଜର୍ମାନୀ|tr=jôrmānī}}
*palauiska: {{ö|pau|Dois}}
*pashto: {{ö|ps|آلمان|tr=âlmân}}
*pennsylvaniatyska: {{ö|pdc|Deitschland|n}}
*persiska: {{ö+|fa|آلمان}} (âlmân)
*piedmontesiska: {{ö|pms|Gërmania}}
*polska: {{ö+|pl|Niemcy}}
*portugisiska: {{ö+|pt|Alemanha|f}}
*punjabi: {{ö|pa|ਜਰਮਨੀ|tr=jarmanī}}
*quechua: {{ö|qu|Alimanya}}
*rumänska: {{ö+|ro|Germania|f}}
*rusinska: {{ö|rue|Нїмецько|n|tr=Njimécʹko}}
*ryska: {{ö+|ru|Герма́ния|tr=Germánija|f}}
*saterfrisiska: {{ö|stq|Düütsklound}}
*schlesiska: {{ö|szl|Mjymcy|p}}
*schwabiska: {{ö|swg|Deidschland}}
*serbiska: {{ö|sr|Њемачка}}
*sicilianska: {{ö|scn|Girmania|f}}
*singalesiska: {{ö|si|ජර්මනිය|tr=jarmaniya}}
*skotsk gäliska: {{ö|gd|Gearmailt|f}}
*slovakiska: {{ö+|sk|Nemecko|n}}
*slovenska: {{ö+|sl|Nemčija|f}}
*spanska: {{ö+|es|Alemania|f}}
*swahili: {{ö+|sw|Ujerumani}}
*sydsamiska: {{ö|sma|Tysklaante}}
*tadzjikiska: {{ö+|tg|Олмон|tr=Olmon}}
*tagalog: {{ö+|tl|Alemanya}}
*tai lü: {{ö|khb|ᦵᦑᦲᧉᦷᦅᧉ|tr=teii2ko2}}
*tamil: {{ö|ta|ஜர்மனி|tr=jarmaṉi}}
*tatariska: {{ö|tt|Алмания|tr=Almaniya}}
*telugu: {{ö+|te|జర్మనీ|tr=jarmanī}}
*thai: {{ö+|th|ประเทศเยอรมนี}} (bprà-têet yəə-rá-má-nii), {{ö+|th|เยอรมนี}} (yəə-rá-má-nii)
*tibetanska: {{ö|bo|འཇར་མན|tr='jar man}}
*tigrinska: {{ö|ti|ጀርመን|tr=ǧärmän}}
*tjeckiska: {{ö+|cs|Německo|n}}
*tjetjenska: {{ö|ce|Германи|tr=Germani}}
*tjuvasjiska: {{ö|cv|Германи|tr=Germani}}
*turkiska: {{ö+|tr|Almanya}}
*tyska: {{ö+|de|Deutschland|n}}
*uiguriska: {{ö|ug|گېرمانىيە|tr=gërmaniye}}
*ukrainska: {{ö+|uk|Німеччина|f}}
*ungerska: {{ö+|hu|Németország}}
*urdu: {{ö|ur|جرمنی|m|tr=jarmanī}}
*uzbekiska: {{ö+|uz|Olmoniya}}, {{ö+|uz|Germaniya}}
*vallonska: {{ö+|wa|Almagne|f}}
*venetianska: {{ö+|vec|Germania}}
*vepsiska: {{ö|vep|Saksanma}}
*vietnamesiska: {{ö|vi|nước Đức}}
*vilamoviska: {{ö|wym|Daojćłaond}}
*volapük: {{ö+|vo|Deutän}}, {{ö|vo|Deut|not=obsolet}}
*võro: {{ö|fiu-vro|S'aksamaa}}
*walliska: {{ö|wls|Siamani}}
*waray-waray: {{ö|war|Alemanya}}
*wolof: {{ö+|wo|Almaañ}}
*xhosa: {{ö|xh|iJamani}}
*yoruba: {{ö|yo|Jẹ́mánì}}
*zeeländska: {{ö|zea|Duutsland}}
*zhuang: {{ö+|za|Dwzgoz}}
*žemaitiska: {{ö|sgs|Vuokītėjė}}
{{ö-botten}}
==Danska==
===Substantiv===
{{subst|da}}
'''Tyskland'''
#{{tagg|kat=länder|språk=da}} [[#Svenska|Tyskland]]
la2pldesor3gpcy2aee42x2ex3kgluv
Egypten
0
7981
4157332
4115260
2026-10-24T01:46:53Z
Frodlekis
762
4157332
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-namn}}
'''Egypten'''
*{{uttal|sv|ipa=ejỵp:ten}}
#{{tagg|kat=länder}} [[stat]] i nordöstra [[Afrika]]
#:''Har du någonsin varit i '''Egypten'''?''
#:{{besläktade ord|[[egyptier]], [[egyptiska]], [[egyptisk]]}}
====Översättningar====
{{ö-topp}}
*afrikaans: {{ö+|af|Egipte}}
*akan: {{ö|ak|Igyipt}}
*alemanniska: {{ö|als|Ägypte}}
*arabiska: {{ö+|ar|مِصْرُ|f}} (Miʂr)
*aragonska: {{ö|an|Echipto}}
*armeniska: {{ö+|hy|Եգիպտոս}} (Jeiptos)
*asturiska: {{ö+|ast|Exiptu}}
*azerbajdzjanska: {{ö+|az|Misir}}
*bambara: {{ö|bm|Misra}}
*banjaresiska: {{ö|bjn|Mesir}}
*baskiska: {{ö|eu|Egipto}}
*bayerska: {{ö|bar|Ägypten}}
*bosniska: {{ö|bs|Egipat}}
*bretonska: {{ö+|br|Egipt}}
*cebuano: {{ö|ceb|Ehipto}}
*central bikol: {{ö|bcl|Ehipto}}
*cheyenne: {{ö|chy|Egypt}}
*danska: {{ö+|da|Egypten}}
*engelska: {{ö+|en|Egypt}}
*esperanto: {{ö+|eo|Egiptio}}, {{ö+|eo|Egiptujo}}
*estniska: {{ö+|et|Egiptus}}
*ewe: {{ö|ee|Egipte}}
*extremaduriska: {{ö|ext|Egitu}}
*finska: {{ö+|fi|Egypti}}
*franska: {{ö+|fr|Égypte}}
*frisiska: {{ö|fy|Egypte}}
*grekiska: {{ö+|el|Αίγυπτος}} (Aígyptos)
*hebreiska: {{ö+|he|מִצְרַיִם|f|tr=mitsráyim}}
*ido: {{ö+|io|Egiptia}}
*indonesiska: {{ö+|id|Mesir}}
*interlingua: {{ö|ia|Egypto}}
*iriska: {{ö+|ga|Éigipt}}
*isländska: {{ö+|is|Egyptaland|n}}
*italienska: {{ö+|it|Egitto}}
*japanska: {{ö+|ja|エジプト}}, {{ö+|ja|埃及}} (Ejiputo)
*jiddisch: {{ö|yi|מצרים|tr=mitsrayem}}
*kasjubiska: {{ö|csb|Egipt}}
*katalanska: {{ö+|ca|Egipte}}
*kazakiska: {{ö+|kk|Мысыр}}
*kinesiska: {{ö+|zh|埃及}} (Āijí)
*kirgiziska: {{ö+|ky|Мисир}}
*koreanska: {{ö+|ko|이집트}} (Ijipteu)
*krimtatariska: {{ö|crh|Mısır}}
*kroatiska: {{ö+|hr|Egipat}}
*kurdiska: {{ö+|ku|Misir}}
*latin: {{ö+|la|Aegyptus}}
*liguriska: {{ö|lij|Egitto}}
*lågsorbiska: {{ö|dsb|Egyptojska}}
*malajiska: {{ö+|ms|Mesir}}
*maltesiska: {{ö|mt|Eġittu}}
*nederländska: {{ö+|nl|Egypte}}
*nordfrisiska: {{ö|frr|Egypten}}
*occitanska: {{ö+|oc|Egipte}}
*polska: {{ö+|pl|Egipt}}
*portugisiska: {{ö+|pt|Egipto}} ''(Portugal)'', {{ö+|pt|Egito}} ''(Brasilien)''
*rumänska: {{ö+|ro|Egipt}}
*ryska: {{ö+|ru|Египет}} (Egípet)
*serbiska: {{ö+|sr|Египат}}, {{ö|sr|Egipat}}
*slovakiska: {{ö+|sk|Egypt}}
*slovenska: {{ö+|sl|Egipt}}
*spanska: {{ö+|es|Egipto}}
*sydsamiska: {{ö|sma|Egypte}}
*thai: ''general'' {{ö|th|อิยิปต์}} (Īyip), ''literary'' {{ö+|th|ไอยคุปต์}} (Aiyakup)
*tjeckiska: {{ö+|cs|Egypt}}
*turkiska: {{ö+|tr|Mısır}}
*tyska: {{ö+|de|Ägypten}}
*ungerska: {{ö+|hu|Egyiptom}}
*uzbekiska: {{ö+|uz|Misr}}
*zazaiska: {{ö+|diq|Mısır}}
{{ö-botten}}
==Danska==
===Substantiv===
{{subst|da}}
'''Egypten'''
#{{tagg|kat=länder|språk=da}} [[#Svenska|Egypten]]
==Nordfrisiska==
===Substantiv===
{{subst|frr}}
'''Egypten'''
#{{tagg|kat=länder|språk=frr}} [[#Svenska|Egypten]]
gsi2baidmy49ys2y85963axlfr57drk
Israel
0
10477
4157333
4087549
2026-10-24T01:47:42Z
Frodlekis
762
4157333
wikitext
text/x-wiki
{{wikipedia}}
{{se även|Israël|Ísrael|israel}}
==Svenska==
===Substantiv===
{{sv-subst-t-namn}}
'''Israel'''
#{{tagg|kat=länder}} stat i sydvästra [[Asien]]
#:{{besläktade ord|[[israelisk]], [[israelit]]}}
#{{tagg|kat=mansnamn}} ett [[mansnamn]]
====Översättningar====
{{ö-topp}}
*acehnesiska: {{ö|ace|Israèl}}
*afrikaans: {{ö|af|Israel}}, {{ö|af|Israël}}
*alemanniska: {{ö|als|Israel}}
*arabiska: {{ö+|ar|إسرائيل}}
*aragonska: {{ö|an|Israel}}
*armeniska: {{ö+|hy|Իսրայել}} (Israjel)
*asturiska: {{ö+|ast|Israel}}
*azerbajdzjanska: {{ö+|az|İsrail}}
*bambara: {{ö|bm|Israil}}
*baskiska: {{ö|eu|Israel}}
*bayerska: {{ö|bar|Israel}}
*belarusiska: {{ö|be|Ізраіль|m}}
*bokmål: {{ö+|no|Israel}}
*bosniska: {{ö|bs|Izrael}}
*bretonska: {{ö|br|Israel}}
*cebuano: {{ö|ceb|Israel}}
*central bikol: {{ö|bcl|Israel}}
*danska: {{ö+|da|Israel}}
*engelska: {{ö+|en|Israel}}
*esperanto: {{ö+|eo|Israelo}}
*estniska: {{ö+|et|Iisrael}}
*extremaduriska: {{ö|ext|Israel}}
*fiji: {{ö|fj|Isireli}}
*fijiansk hindi: {{ö|hif|Israel}}
*finska: {{ö+|fi|Israel}}
*fornengelska: {{ö|ang|Israhēl}}
*frankoprovensalska: {{ö|frp|Israèl}}
*franska: {{ö+|fr|Israël}}
*frisiska: {{ö+|fy|Israel}}
*färöiska: {{ö|fo|Ísrael}}
*gagauziska: {{ö|gag|İsrail}}
*galiciska: {{ö+|gl|Israel}}
*grekiska: {{ö+|el|Ισραήλ}}
*haitisk kreol: {{ö|ht|Izrayèl}}
*hausa: {{ö|ha|Isra'ila}}
*hebreiska: {{ö+|he|יִשְׂרָאֵל}} (Yisra'el)
*högsorbiska: {{ö|hsb|Israel}}
*ido: {{ö+|io|Israel}}
*igbo: {{ö|ig|Israel}}
*ilokano: {{ö|ilo|Israel}}
*indonesiska: {{ö+|id|Israel}}
*interlingua: {{ö|ia|Israel}}
*interlingue: {{ö|ie|Israel}}
*iriska: {{ö+|ga|Iosrael}}
*isländska: {{ö+|is|Ísrael}}
*italienska: {{ö+|it|Israele}}
*japanska: {{ö+|ja|イスラエル}} (isuraeru)
*javanesiska: {{ö|jv|Israèl}}
*jiddisch: {{ö|yi|ישׂראל|n|tr=yisroel}}
*kasjubiska: {{ö|csb|Izrael}}
*katalanska: {{ö+|ca|Israel}}
*kinesiska: {{ö+|zh|以色列}}
*korsikanska: {{ö|co|Israele}}
*krimtatariska: {{ö|crh|İsrail}}
*kroatiska: {{ö+|hr|Izrael}}
*kurdiska: {{ö|ku|Îsraêl}}
*kymriska: {{ö|cy|Israel}}
*lågsorbiska: {{ö|dsb|Israel}}
*maltesiska: {{ö|mt|Iżrael}}
*manx: {{ö|gv|Israel}}
*nederländska: {{ö+|nl|Israël}}
*nordfrisiska: {{ö|frr|Israel}}
*occitanska: {{ö|oc|Israèl}}
*polska: {{ö+|pl|Izrael}}
*portugisiska: {{ö+|pt|Israel}}
*rumänska: {{ö+|ro|Israel}}
*ryska: {{ö+|ru|Израиль}} (Izrail')
*serbiska: {{ö|sr|Израел}}
*skotsk gäliska: {{ö|gd|Iosrael}}
*slovenska: {{ö+|sl|Izrael}}
*spanska: {{ö+|es|Israel}}
*sydsamiska: {{ö|sma|Israele}}
*tjeckiska: {{ö+|cs|Izrael}}
*turkiska: {{ö+|tr|İsrail}}
*tyska: {{ö+|de|Israel}}
*ukrainska: {{ö+|uk|Ізраїль|m}}
*ungerska: {{ö+|hu|Izrael}}
*uzbekiska: {{ö+|uz|Isroil}}
*võro: {{ö|fiu-vro|Iisrael}}
*zazaiska: {{ö|diq|İsrail}}
{{ö-botten}}
==Aragonska==
===Substantiv===
{{subst|an}}
'''Israel'''
#{{tagg|kat=länder|språk=an}} [[#Svenska|Israel]]
==Asturiska==
===Substantiv===
{{subst|ast}}
'''Israel'''
#{{tagg|kat=länder|språk=ast}} [[#Svenska|Israel]]
==Bokmål==
===Substantiv===
{{subst|no}}
'''Israel'''
#{{tagg|kat=länder|språk=no}} [[#Svenska|Israel]]
==Bretonska==
===Substantiv===
{{subst|br}}
'''Israel'''
#{{tagg|kat=länder|språk=br}} [[#Svenska|Israel]]
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''Israel'''
#{{tagg|kat=länder|språk=bcl}} [[#Svenska|Israel]]
==Danska==
===Substantiv===
{{subst|da}}
'''Israel'''
#{{tagg|kat=länder|språk=da}} [[#Svenska|Israel]]
==Engelska==
===Substantiv===
{{en-subst-namn}}
'''Israel'''
#{{tagg|kat=länder|språk=en}} [[#Svenska|Israel]]
#:{{besläktade ord|[[Israeli]], [[Israelite]]}}
==Extremaduriska==
===Substantiv===
{{subst|ext}}
'''Israel'''
#{{tagg|kat=länder|språk=ext}} [[#Svenska|Israel]]
==Finska==
===Substantiv===
{{subst|fi}}
'''Israel'''
#{{tagg|kat=länder|språk=fi}} [[#Svenska|Israel]]
#:{{besläktade ord|israelilainen}}
==Indonesiska==
===Substantiv===
{{subst|id}}
'''Israel'''
#{{tagg|kat=länder|språk=id}} [[#Svenska|Israel]]
==Interlingua==
===Substantiv===
{{subst|ia}}
'''Israel'''
#{{tagg|kat=länder|språk=ia}} [[#Svenska|Israel]]
==Katalanska==
===Substantiv===
{{subst|ca}}
'''Israel'''
#{{tagg|kat=länder|språk=ca}} [[#Svenska|Israel]]
==Ladino==
===Substantiv===
{{subst|lad}}
'''Israel'''
#{{tagg|kat=länder|språk=lad}} [[#Svenska|Israel]]
==Nordfrisiska==
===Substantiv===
{{subst|frr}}
'''Israel'''
#{{tagg|kat=länder|språk=frr}} [[#Svenska|Israel]]
==Portugisiska==
===Substantiv===
{{subst|pt}}
'''Israel'''
#{{tagg|kat=länder|språk=pt}} [[#Svenska|Israel]]
#:{{besläktade ord|[[israelense]], [[israelita]]}}
==Rumänska==
===Substantiv===
{{subst|ro}}
'''Israel'''
#{{tagg|kat=länder|språk=ro}} [[#Svenska|Israel]]
==Spanska==
===Substantiv===
{{subst|es}}
'''Israel'''
#{{tagg|kat=länder|språk=es}} [[#Svenska|Israel]]
#{{tagg|kat=mansnamn|språk=es}} ett mansnamn (motsvarande svenska [[#Svenska|Israel]])
:{{avgränsare}}
:{{besläktade ord|[[israelí]]}}
==Tyska==
===Substantiv===
{{subst|de}}
'''Israel'''
#{{tagg|kat=länder|språk=de}} [[#Svenska|Israel]]
iylayb17f1ouryrn7or0ths47vor2n0
Ecuador
0
11750
4157334
4013207
2026-10-24T01:48:21Z
Frodlekis
762
/* Översättningar */
4157334
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-namn}}
'''Ecuador'''
#{{tagg|kat=länder}} stat i [[Sydamerika]]
#:{{besläktade ord|[[ecuadorian]], [[ecuadoriansk]]}}
====Översättningar====
{{ö-topp}}
*acehnesiska: {{ö|ace|Èkuador}}
*afrikaans: {{ö|af|Ecuador}}
*alemanniska: {{ö|als|Ecuador}}
*aragonska: {{ö|an|Ecuador}}
*armeniska: {{ö+|hy|Էկվադոր}} (Ekvador)
*asturiska: {{ö+|ast|Ecuador}}
*bayerska: {{ö|bar|Ecuador}}
*bokmål: {{ö|no|Ecuador}}
*bosniska: {{ö|bs|Ekvador}}
*bretonska: {{ö|br|Ecuador}}
*cebuano: {{ö|ceb|Ecuador}}
*central bikol: {{ö|bcl|Ekwador}}
*danska: {{ö+|da|Ecuador}}
*engelska: {{ö+|en|Ecuador}}
*esperanto: {{ö+|eo|Ekvadoro}}
*extremaduriska: {{ö|ext|Ecuadol}}
*finska: {{ö+|fi|Ecuador}}
*franska: {{ö+|fr|Équateur}}
*grekiska: {{ö+|el|Ισημερινός}}, {{ö+|el|Εκουαδόρ}}
*indonesiska: {{ö+|id|Ekuador}}
*interlingua: {{ö|ia|Ecuador}}
*iriska: {{ö|ga|Eacuadór}}
*isländska: {{ö+|is|Ekvador}}
*italienska: {{ö+|it|Ecuador}}
*japanska: {{ö+|ja|エクアドル}} (Ekuadoru)
*katalanska: {{ö+|ca|Equador}}
*kinesiska: {{ö+|zh|厄瓜多尔}} (Eguaduo'er)
*krimtatariska: {{ö|crh|Ekvador}}
*kurdiska: {{ö|ku|Ekuador}}
*latin: {{ö|la|Aequatoria}}
*maltesiska: {{ö|mt|Ekwador}}
*nederländska: {{ö+|nl|Ecuador}}
*nynorska: {{ö+|nn|Ecuador}}
*occitanska: {{ö+|oc|Eqüator}}
*polska: {{ö+|pl|Ekwador}}
*portugisiska: {{ö+|pt|Equador}}
*quechua: {{ö|qu|Ikwadur}}
*rumänska: {{ö+|ro|Ecuador}}
*ryska: {{ö+|ru|Эквадор}}
*slovakiska: {{ö+|sk|Ekvádor}}
*slovenska: {{ö+|sl|Ekvadór}}
*spanska: {{ö+|es|Ecuador}}
*tjeckiska: {{ö+|cs|Ekvádor}}
*turkiska: {{ö+|tr|Ekvador}}
*tyska: {{ö+|de|Ecuador}}
*ungerska: {{ö+|hu|Ecuador}}
{{ö-botten}}
==Alemanniska==
===Substantiv===
{{subst|als}}
'''Ecuador'''
#{{tagg|kat=länder|språk=als}} [[#Svenska|Ecuador]]
==Aragonska==
===Substantiv===
{{subst|an}}
'''Ecuador'''
#{{tagg|kat=länder|språk=an}} [[#Svenska|Ecuador]]
#:{{kohyponymer|[[Archentina]], [[Bolivia]], [[Brasil]], [[Chile]], [[Colombia]], [[Guyana]], [[Paraguai]], [[Perú]], [[Surinam]], [[Uruguai]], [[Venezuela]]}}
==Asturiska==
===Substantiv===
{{subst|ast}}
'''Ecuador'''
#{{tagg|kat=länder|språk=ast}} [[#Svenska|Ecuador]]
==Bokmål==
===Substantiv===
{{subst|no}}
'''Ecuador'''
#{{tagg|kat=länder|språk=no}} [[#Svenska|Ecuador]]
==Bretonska==
===Substantiv===
{{subst|br}}
'''Ecuador'''
#{{tagg|kat=länder|språk=br}} [[#Svenska|Ecuador]]
==Cebuano==
===Substantiv===
{{subst|ceb}}
'''Ecuador'''
#{{tagg|kat=länder|språk=ceb}} [[#Svenska|Ecuador]]
==Danska==
===Substantiv===
{{subst|da}}
'''Ecuador'''
#{{tagg|kat=länder|språk=da}} [[#Svenska|Ecuador]]
==Engelska==
===Substantiv===
{{subst|en}}
'''Ecuador'''
#{{tagg|kat=länder|språk=en}} [[#Svenska|Ecuador]]
==Finska==
===Substantiv===
{{subst|fi}}
'''Ecuador'''
#{{tagg|kat=länder|språk=fi}} [[#Svenska|Ecuador]]
==Interlingua==
===Substantiv===
{{subst|ia}}
'''Ecuador'''
#{{tagg|kat=länder|språk=ia}} [[#Svenska|Ecuador]]
==Italienska==
===Substantiv===
{{subst|it}}
'''Ecuador'''
#{{tagg|kat=länder|språk=it}} [[#Svenska|Ecuador]]
==Nederländska==
===Substantiv===
{{subst|nl}}
'''Ecuador'''
#{{tagg|kat=länder|språk=nl}} [[#Svenska|Ecuador]]
==Nynorska==
===Substantiv===
{{subst|nn}}
'''Ecuador'''
#{{tagg|kat=länder|språk=nn}} [[#Svenska|Ecuador]]
==Rumänska==
===Substantiv===
{{subst|ro}}
'''Ecuador'''
#{{tagg|kat=länder|språk=ro}} [[#Svenska|Ecuador]]
==Spanska==
===Substantiv===
{{subst|es}}
'''Ecuador'''
#{{tagg|kat=länder|språk=es}} [[#Svenska|Ecuador]]
==Tyska==
===Substantiv===
{{subst|de}}
'''Ecuador'''
#{{tagg|kat=länder|språk=de}} [[#Svenska|Ecuador]]
==Ungerska==
===Substantiv===
{{subst|hu}}
'''Ecuador'''
#{{tagg|kat=länder|språk=hu}} [[#Svenska|Ecuador]]
ssuu156dkmnfdf3wsu3179xlye8zuzr
Ekwador
0
11758
4157321
3542491
2026-10-24T01:41:44Z
Frodlekis
762
4157321
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''Ekwador'''
#{{tagg|kat=länder|språk=bcl}} [[Ecuador]]
==Maltesiska==
===Substantiv===
{{subst|mt}}
'''Ekwador'''
#{{tagg|kat=länder|språk=mt}} [[Ecuador]]
==Polska==
===Substantiv===
{{subst|pl}}
'''Ekwador''' {{m}}
#{{tagg|kat=länder|språk=pl}} [[Ecuador]]
#:{{besläktade ord|[[Ekwadorczyk]], [[Ekwadorka]], [[ekwadorski]]}}
==Turkmeniska==
===Substantiv===
{{subst|tk}}
'''Ekwador'''
#{{tagg|kat=länder|språk=tk}} [[Ecuador]]
1bf6tit37h95g1ri167at352faov7is
Myanmar
0
14198
4157335
3971101
2026-10-24T01:48:38Z
Frodlekis
762
/* Översättningar */
4157335
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-namn}}
'''Myanmar'''
#{{tagg|kat=länder}} en [[stat]] i sydöstra [[Asien]]
#:{{synonymer|[[Burma]]}}
#:{{besläktade ord|[[myanmarier]], [[myanmarisk]]}}
====Översättningar====
{{ö-topp}}
*acehnesiska: {{ö|ace|Myanmar}}
*afrikaans: {{ö+|af|Mianmar}}
*alemanniska: {{ö|als|Myanmar}}
*amhariska: {{ö|am|በርማ}} (Barmā)
*arabiska: {{ö|ar|ميانمار}} (Miyānmār), {{ö|ar|برمانيا}} (Birmānya)
*aragonska: {{ö|an|Myanmar}}
*armeniska: {{ö|hy|Մյանմար}} (Mjanmar), {{ö+|hy|Բիրմա}} (Birma)
*asturiska: {{ö+|ast|Myanmar}}
*azerbajdzjanska: {{ö+|az|Myanma}}
*bayerska: {{ö|bar|Myanmar}}
*belarusiska: {{ö|be|М'янмар}} (M’janmar), {{ö|be|М'янма}} (M’janma)
*bengali: {{ö+|bn|ব্রহ্মদেশ}} (Brôhmôdeš)
*bislama: {{ö|bi|Burma}}
*bokmål: {{ö+|no|Myanmar}}, {{ö|no|Burma}}
*bosniska: {{ö|bs|Mijanmar}}
*bretonska: {{ö|br|Myanmar}}
*burmesiska: {{ö|my|ရန္မာ}} (Myanmā)
*cebuano: {{ö|ceb|Birmanya}}
*central bikol: {{ö|bcl|Myanmar}}
*danska: {{ö|da|Myanmar}}
*engelska: {{ö+|en|Myanmar}}, {{ö+|en|Burma}}
*esperanto: {{ö|eo|Mjanmao}}, {{ö+|eo|Birmo}}
*ewe: {{ö|ee|Myanmar}}
*finska: {{ö+|fi|Myanmar}}, {{ö+|fi|Burma}}
*fornengelska: {{ö|ang|Burma}}
*franska: {{ö+|fr|Myanmar}}, {{ö+|fr|Birmanie}}
*frisiska: {{ö|fy|Birma}}, {{ö|fy|Myanmar}}
*georgiska: {{ö+|ka|მიანმარი}} (Mianmari)
*grekiska: {{ö+|el|Μιανμάρ}} (Mianmár), {{ö|el|Μυανμάρ}} (Myanmár)
*hausa: {{ö|ha|Bama}}
*hebreiska: {{ö|he|מיאנמר}} (Myanmar)
*hindi: {{ö+|hi|म्यानमार}} (Myānmār), {{ö|hi|ब्रह्मदेश}} (Brahmadeš), {{ö+|hi|बरमा}} (Barmā)
*interlingua: {{ö|ia|Myanmar}}, {{ö|ia|Birmania}}
*isländska: {{ö+|is|Mjanmar|n}}, {{ö+|is|Mjanmar|n}}
*italienska: {{ö+|it|Myanmar}}, {{ö+|it|Birmania}}
*japanska: {{ö+|ja|ミャンマー}} (Myanmā), {{ö+|ja|ビルマ}} (Biruma)
*kannada: {{ö+|kn|ಬರ್ಮ}} (Barma)
*kasjubiska: {{ö|csb|Myanmar}}
*katalanska: {{ö|ca|Myanmar}}
*kinesiska: {{ö+|zh|缅甸}} / {{ö+|zh|緬甸}} (Miǎndiàn)
*koreanska: {{ö+|ko|미얀마}} (Miyanma)
*krimtatariska: {{ö|crh|Myanmar}}
*kurdiska: {{ö+|ku|Myanmar}}, {{ö+|ku|Birmanya}}, {{ö+|ku|Burma}}
*kymriska: {{ö|cy|Myanmar}}
*lågsorbiska: {{ö|dsb|Myanmar}}
*maltesiska: {{ö|mt|Mjanmar}}
*nederländska: {{ö+|nl|Myanmar}}, {{ö+|nl|Birma}}
*occitanska: {{ö|oc|Birmania}}
*persiska: {{ö|fa|میانمار}} (Myanmâr)
*piedmontesiska: {{ö|pms|Myanmar}}
*polska: {{ö+|pl|Myanmar}}, {{ö+|pl|Birma}}
*portugisiska: {{ö+|pt|Birmânia}}
*punjabi: {{ö|pa|ਬਰ੍ਮਾ}} (Barmā)
*rumänska: {{ö+|ro|Myanmar}}
*ryska: {{ö+|ru|Мьянма}} (M’janmá), {{ö+|ru|Бирма}} (Bírma)
*serbiska: {{ö|sr|Мијанмар}}, {{ö|sr|Бурма}}, {{ö|sr|Mijanmar}}
*slovakiska: {{ö|sk|Mjanmarsko}}
*slovenska: {{ö+|sl|Mjanmar}}
*spanska: {{ö+|es|Myanmar}}, {{ö+|es|Birmania}}
*tagalog: {{ö|tl|Birmanya}}
*tamil: {{ö+|ta|மியான்மார்}}, (Miyānmār) {{ö+|ta|பர்மா}} (Parmā)
*telugu: {{ö+|te|బర్మా}} (Barmā)
*thai: {{ö+|th|พม่า}} (Pamā)
*tjeckiska: {{ö+|cs|Myanmar}}
*turkiska: {{ö+|tr|Myanmar}}, {{ö+|tr|Birmanya}}
*tyska: {{ö+|de|Myanmar}}
*uiguriska: {{ö|ug|ﺑﯩﺮﻣﺎ}}
*ukrainska: {{ö|uk|М'янмар}} (M’janmár)
*ungerska: {{ö+|hu|Mianmar}}
*urdu: {{ö|ur|میانمار}} (Myanmâr)
*vietnamesiska: {{ö+|vi|Miến Điện}}
*zazaiska: {{ö|diq|Myanmar}}
{{ö-botten}}
==Acehnesiska==
===Substantiv===
{{subst|ace}}
'''Myanmar'''
#{{tagg|kat=länder|språk=ace}} [[#Svenska|Myanmar]]
==Alemanniska==
===Substantiv===
{{subst|als}}
'''Myanmar'''
#{{tagg|kat=länder|språk=als}} [[#Svenska|Myanmar]]
==Aragonska==
===Substantiv===
{{subst|an}}
'''Myanmar'''
#{{tagg|kat=länder|språk=an}} [[#Svenska|Myanmar]]
==Asturiska==
===Substantiv===
{{subst|ast}}
'''Myanmar'''
#{{tagg|kat=länder|språk=ast}} [[#Svenska|Myanmar]]
==Bretonska==
===Substantiv===
{{subst|br}}
'''Myanmar'''
#{{tagg|kat=länder|språk=br}} [[#Svenska|Myanmar]]
==Danska==
===Substantiv===
{{subst|da}}
'''Myanmar'''
#{{tagg|kat=länder|språk=da}} [[#Svenska|Myanmar]]
==Engelska==
===Substantiv===
{{subst|en}}
'''Myanmar'''
#{{tagg|språk|språk=en}} [[burmesiska]]
#:{{synonymer|[[Burmese]]}}
#{{tagg|kat=länder|språk=en}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Burma]]}}
:{{avgränsare}}
==Extremaduriska==
===Substantiv===
{{subst|ext}}
'''Myanmar'''
#{{tagg|kat=länder|språk=ext}} [[#Svenska|Myanmar]]
==Finska==
===Substantiv===
{{subst|fi}}
'''Myanmar'''
#{{tagg|kat=länder|språk=fi}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Burma]]}}
==Franska==
===Substantiv===
{{subst|fr}}
'''Myanmar'''
#{{tagg|kat=länder|språk=fr}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Birmanie]]}}
==Interlingua==
===Substantiv===
{{subst|ia}}
'''Myanmar'''
#{{tagg|kat=länder|språk=ia}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Birmania]]}}
==Italienska==
===Substantiv===
{{subst|it}}
'''Myanmar'''
#{{tagg|kat=länder|språk=it}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Birmania]]}}
==Katalanska==
===Substantiv===
{{subst|ca}}
'''Myanmar'''
#{{tagg|kat=länder|språk=ca}} [[#Svenska|Myanmar]]
==Nederländska==
===Substantiv===
{{subst|nl}}
'''Myanmar'''
#{{tagg|kat=länder|språk=nl}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Birma]]}}
==Bokmål==
===Substantiv===
{{subst|no}}
'''Myanmar'''
#{{tagg|kat=länder|språk=no}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Burma]]}}
==Piedmontesiska==
===Substantiv===
{{subst|pms}}
'''Myanmar'''
#{{tagg|kat=länder|språk=pms}} [[#Svenska|Myanmar]]
==Polska==
===Substantiv===
{{subst|pl}}
'''Myanmar'''
#{{tagg|kat=länder|språk=pl}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Birma]]}}
==Rumänska==
===Substantiv===
{{subst|ro}}
'''Myanmar'''
#{{tagg|kat=länder|språk=ro}} [[#Svenska|Myanmar]]
==Spanska==
===Substantiv===
{{subst|es}}
'''Myanmar'''
#{{tagg|kat=länder|språk=es}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Birmania]]}}
==Tjeckiska==
===Substantiv===
{{subst|cs}}
'''Myanmar'''
#{{tagg|kat=länder|språk=cs}} [[#Svenska|Myanmar]]
==Turkiska==
===Substantiv===
{{subst|tr}}
'''Myanmar'''
#{{tagg|kat=länder|språk=tr}} [[#Svenska|Myanmar]]
#:{{synonymer|[[Birmanya]]}}
==Tyska==
===Substantiv===
{{subst|de}}
'''Myanmar'''
#{{tagg|kat=länder|språk=de}} [[#Svenska|Myanmar]]
qb5khapapd6fepd8g9en3hbgtmcq33d
chilla
0
14667
4157137
3706696
2026-10-23T15:50:55Z
~2026-56702-21
62364
4157137
wikitext
text/x-wiki
==Svenska==
===Verb===
{{sv-verb-ar|rot=chill|perfpart=-}}
'''chilla'''
#{{tagg|slang}} [[ta det lugnt]], [[slappna av]]
#:''Jag '''chillar''' framför tv:n och äter chips.''
#:''Men '''chilla''', jag har inte gjort något, än.''
#:''Efter jobbet gillade hon att '''chilla''' med kompisar.''
#:{{etymologi|{{belagt|sv|1998}}<ref>{{källa-so}}</ref> Av {{härledning|sv|en|chill out|lugna sig, ta det lugnt; kyla ner, kyla av}}.}}
====Översättningar====
{{ö-topp|ta det lugnt, slappna av}}
*bokmål: {{ö+|no|chille}}
*engelska: {{ö+|en|chill out}}
*tyska: {{ö+|de|chillen}}
{{ö-botten}}
==Bokmål==
===Verb===
'''chilla'''
#{{böjning|no|verb|chille}}
==Spanska==
===Substantiv===
{{es-subst-f-s}}
'''chilla''' {{f}}
#{{tagg|kat=däggdjur|kat2=däggdjursarter|språk=es}} [[pampasräv]], [[argentinsk gråräv]]
#:{{synonymer|[[zorro gris]]}}
===Verb===
'''chilla'''
#{{böjning|es|verb|chillar}}
==Källor==
<references/>
1slcibtoqx978dq1oyohygybsey21c5
4157138
4157137
2026-10-23T15:51:37Z
~2026-56702-21
62364
4157138
wikitext
text/x-wiki
==Svenska==
===Verb===
{{sv-verb-ar|rot=chill|perfpart=-}}
'''chilla'''
#{{tagg|slang}} [[ta det lugnt]], [[slappna av]]
#:''Jag '''chillar''' framför tv:n och äter chips.''
#:''Men '''chilla''', jag har inte gjort något, än.''
#:''Efter jobbet gillade hon att '''chilla''' med kompisar.''
#:{{etymologi|{{belagt|sv|1998}}<ref>{{källa-so}}</ref> Av {{härledning|sv|en|chill out|lugna sig, ta det lugnt; kyla ner, kyla av}}.}}
====Översättningar====
{{ö-topp|ta det lugnt, slappna av}}
*bokmål: {{ö+|no|chille}}
*engelska: {{ö+|en|chill out}}
*tyska: {{ö+|de|chillen}}
{{ö-botten}}
===Adjektiv===
'''chilla'''
#{{böjning|sv|adj|chill}}
==Bokmål==
===Verb===
'''chilla'''
#{{böjning|no|verb|chille}}
==Spanska==
===Substantiv===
{{es-subst-f-s}}
'''chilla''' {{f}}
#{{tagg|kat=däggdjur|kat2=däggdjursarter|språk=es}} [[pampasräv]], [[argentinsk gråräv]]
#:{{synonymer|[[zorro gris]]}}
===Verb===
'''chilla'''
#{{böjning|es|verb|chillar}}
==Källor==
<references/>
cbz3pyz9vuhzj22y3u11rrt5sndnlrc
tack
0
14745
4157122
4095673
2026-10-23T15:25:10Z
~2026-56702-21
62364
/* Översättningar */
4157122
wikitext
text/x-wiki
==Svenska==
===Interjektion===
{{interj|sv}}
'''tack'''
#fras som används för att besvara en hjälpsam handling
#:'''''Tack''' för presenten mormor!''
#:''Åh, '''tack''' så mycket!''
#:{{konstr|tack för hjälpen, tack för maten, tack så mycket, tack ska du ha}}
#:{{etymologi|{{belagt|sv|1400|t}}<ref>{{källa-so}}</ref> Av {{härledning|sv|gmq-fsv|þak}}, runsvenska ''[[þakk]]'', "[[nåd]]", "[[välbehag]]", av {{härledning|sv|non|þǫkk}}, av {{härledning|sv|gem-ugm|*þankō, *þankaz}}. Rotbesläktat med ''[[tänka]]''. Jämför engelska ''[[thank]]'', tyska ''[[danke]]''.}}
#:{{användning|Kan förstärkas med ''så (hemskt/väldigt) mycket'' efterföljt.}}
#:{{besläktade ord|[[tacka]], [[tacksam]]}}
#:{{fraser|[[hjärtligt tack]], [[stort tack]], [[tack så mycket]], [[tack för senast]], [[tack så hjärtligt]], [[tusen tack]]}}
#:{{sammansättningar|[[tacksägelse]]}}
====Översättningar====
{{ö-topp|}}
*afrikaans: {{ö+|af|dankie}}
*albanska: {{ö|sq|faleminderit}}
*amhariska: {{ö|am|ኣመሰገናልሎ}} (amesegenallo)
*arabiska: {{ö|ar|شكرًا|tr=shúkran|skrift=Arab}}
*belarusiska: {{ö|be|дзякую|tr=dzjákuju|skrift=Cyrl}}
*bengali: {{ö+|bn|ধনবাদ}} (dhonnobad)
*bokmål: {{ö+|no|takk}}
*bosniska: {{ö|bs|hvala}}
*bretonska: {{ö+|br|trugarez}}, {{ö+|br|bennozh}}, {{ö+|br|Doue}}
*bulgariska: {{ö+|bg|благодаря|tr=blagodarjá|skrift=Cyrl}}, {{ö+|bg|мерси|tr=mersí|skrift=Cyrl}}
*danska: {{ö+|da|tak}}
*engelska: {{ö+|en|thank you}}, {{ö+|en|thanks}}
*esperanto: {{ö+|eo|dankon}}
*estniska: {{ö+|et|aitäh}}, {{ö|et|aitüma}}
*fiji: {{ö|fj|vinaka}}
*finska: {{ö+|fi|kiitos}}, {{ö+|fi|kiitoksia}}
*franska: {{ö+|fr|merci}}
*färöiska: {{ö|fo|takk}}
*grekiska: {{ö+|el|ευχαριστώ}}
*gujarati: {{ö|gu|આભાર}} (aabhaar)
*haitisk kreol: {{ö|ht|mèsi}}
*hausa: {{ö|ha|na gode}}
*hawaiiska: {{ö|haw|mahalo}}
*hebreiska: {{ö+|he|תודה}} (toda)
*hiligaynon: {{ö|hil|salamat}}
*isländska: {{ö+|is|takk}}
*italienska: {{ö+|it|grazie}}
*japanska: {{ö+|ja|ありがとう}} ({{ö|ja|arigatou}})
*jiddisch: {{ö|yi|אַ דאַנק|tr=a dank}}
*katalanska: {{ö+|ca|gràcies}}, {{ö+|ca|mercès}}, {{ö+|ca|merci}}
*kikai: {{ö|kzg|うふくんでーた}}
*kinesiska: {{ö+|zh|謝謝}} (xièxie)
*korniska: {{ö|kw|meur ras}}
*kroatiska: {{ö|hr|hvala}}, {{ö|hr|veoma hvala}}, {{ö|hr|mnogo hvala}}, {{ö|hr|zahvaljujem}}, {{ö|hr|mnogo Vam hvala}}
*kurdiska: {{ö+|ku|spas}}, {{ö+|ku|sipas}}, {{ö+|ku|supas}}
*latin: {{ö+|la|gratia}}
*lettiska: {{ö+|lv|paldies}}
*litauiska: {{ö+|lt|ačiū}}
*makedonska: {{ö|mk|благодарам}}, {{ö|mk|фала}}
*malagassiska: {{ö+|mg|misaotra}}
*malajiska: {{ö+|ms|terima kasih}}
*maltesiska: {{ö+|mt|grazzi}}
*maori: {{ö+|mi|kia ora}}
*marshallesiska: {{ö|mh|kom̧m̧ool}}
*min nan: {{ö+|zh-min-nan|感謝|tr=kám-siā}}
*nederländska: {{ö+|nl|dank}}, {{ö+|nl|dank u}}, {{ö|nl|dank je}}, {{ö+|nl|dankjewel}}, {{ö+|nl|bedankt}}
*nordsamiska: {{ö|se|giitu}}
*ojibwe: {{ö|oj|miigwech}}
*oromo: {{ö|om|maharaba}}
*ossetiska: {{ö|os|бузныг}}
*pashto: {{ö|ps|مہربانی}} (mehrbani)
*persiska: {{ö+|fa|ممنون}} (mamnôn), {{ö+|fa|مرسی}} (mérsi)
*polska: {{ö+|pl|dziękuję}}
*portugisiska: {{ö+|pt|obrigado|m}}, {{ö+|pt|obrigada|f}}
*punjabi: {{ö|pa|ਸ਼ੁਕਰਿਆ}} (shukriya)
*romani: {{ö|rom|nais}}
*rumänska: {{ö+|ro|mulţumesc}}, {{ö+|ro|mersi}}
*ryska: {{ö+|ru|спасибо}}
*serbiska: {{ö|sr|хвала}} ({{ö+|sr|hvala}})
*slovenska: {{ö+|sl|hvala}}
*spanska: {{ö+|es|gracias}}
*svensk romani: {{ö|rmu|pakkrepa}}
*sydsamiska: {{ö|sma|aelties}}
*tadzjikiska: {{ö|tg|рахмат|tr=raxmat}}
*tagalog: {{ö+|tl|salamat}}
*tahitiska: {{ö|ty|māuruuru}}
*tamil: {{ö+|ta|நன்றி|tr=nandri}}
*tatariska: {{ö+|tt|рәхмәт|tr=räxmät}}
*telugu: {{ö+|te|ధన్యవాదాలు|tr=dhanyavaadaalu}}
*thai: {{ö+|th|ขอบคุณ|tr=kòp-kuun}}
**isan: {{ö+|th|ขอบใจ|tr=khawp jai}}
*tjeckiska: {{ö+|cs|děkuji}}, {{ö|cs|děkuji vám}}, {{ö|cs|děkuji ti}}
*tok pisin: {{ö|tpi|tenkyu}}
*tonganska: {{ö|to|mālō}}
*tswana: {{ö|tn|ke a leboga}}
*turkiska: {{ö+|tr|teşekkür ederim}}, {{ö+|tr|teşekkürler}}, {{ö+|tr|mersi}}
*tyska: {{ö+|de|danke}}
*ukrainska: {{ö|uk|дякую}}, {{ö+|uk|спасибі}}
*ungerska: {{ö+|hu|köszönöm}}
*vepsiska: {{ö|vep|kitän}}
*zulu: {{ö+|zu|ngiyabonga}}
*älvdalska: {{ö|ovd|tokk}}
{{ö-botten}}
===Substantiv===
{{sv-subst-t-0}}
{{sv-subst-n-0|4=tacken|8=tackens}}
'''tack'''
#[[besvarande]] av en hjälpsam eller god handling
#:''Han lagade mat åt henne som '''tack''' för att hon vattnat hans krukväxter medan han var på semester.''
#:{{grammatik|Vanligen neutrum, ibland dock utrum, särskilt i vissa betydelser och fraser. Plural har nolländelse (historiskt har dock både -ar, -er och -or förekommit).}}
#:{{användning|tack så mycket; tack ska du ha}}
#:{{sammansättningar|[[otack]], [[tackkort]], [[tacktal]]}}
#:{{besläktade ord|[[tacka]]}}
#:{{fraser|[[tack så mycket]]; [[tack ska du ha]]}}
====Översättningar====
{{ö-topp|}}
*bokmål: {{ö+|no|takk}}
*danska: {{ö+|da|tak}}
*finska: {{ö+|fi|kiitos}}
*japanska: {{ö+|ja|感謝|tr=かんしゃ, kansha}}
*jiddisch: {{ö|yi|דאַנק|m|tr=dank}}
*katalanska: {{ö+|ca|mercè|f}}
*portugisiska: {{ö+|pt|agradecimento|m}}
*turkiska: {{ö+|tr|şükür}}
*tyska: {{ö+|de|Dank|m}}
{{ö-botten}}
==Engelska==
===Substantiv===
{{en-subst}}
'''tack'''
#[[nubb]], [[spik]], [[stift]]
===Verb===
{{en-verb}}
'''tack'''
#[[nubba]], [[spika]], [[stifta]]
t7evld6tmu7cn29hcyrp7nhh94p1zia
4157123
4157122
2026-10-23T15:25:46Z
~2026-56702-21
62364
+so: [[mahadsanid]] (assisterat)
4157123
wikitext
text/x-wiki
==Svenska==
===Interjektion===
{{interj|sv}}
'''tack'''
#fras som används för att besvara en hjälpsam handling
#:'''''Tack''' för presenten mormor!''
#:''Åh, '''tack''' så mycket!''
#:{{konstr|tack för hjälpen, tack för maten, tack så mycket, tack ska du ha}}
#:{{etymologi|{{belagt|sv|1400|t}}<ref>{{källa-so}}</ref> Av {{härledning|sv|gmq-fsv|þak}}, runsvenska ''[[þakk]]'', "[[nåd]]", "[[välbehag]]", av {{härledning|sv|non|þǫkk}}, av {{härledning|sv|gem-ugm|*þankō, *þankaz}}. Rotbesläktat med ''[[tänka]]''. Jämför engelska ''[[thank]]'', tyska ''[[danke]]''.}}
#:{{användning|Kan förstärkas med ''så (hemskt/väldigt) mycket'' efterföljt.}}
#:{{besläktade ord|[[tacka]], [[tacksam]]}}
#:{{fraser|[[hjärtligt tack]], [[stort tack]], [[tack så mycket]], [[tack för senast]], [[tack så hjärtligt]], [[tusen tack]]}}
#:{{sammansättningar|[[tacksägelse]]}}
====Översättningar====
{{ö-topp|}}
*afrikaans: {{ö+|af|dankie}}
*albanska: {{ö|sq|faleminderit}}
*amhariska: {{ö|am|ኣመሰገናልሎ}} (amesegenallo)
*arabiska: {{ö|ar|شكرًا|tr=shúkran|skrift=Arab}}
*belarusiska: {{ö|be|дзякую|tr=dzjákuju|skrift=Cyrl}}
*bengali: {{ö+|bn|ধনবাদ}} (dhonnobad)
*bokmål: {{ö+|no|takk}}
*bosniska: {{ö|bs|hvala}}
*bretonska: {{ö+|br|trugarez}}, {{ö+|br|bennozh}}, {{ö+|br|Doue}}
*bulgariska: {{ö+|bg|благодаря|tr=blagodarjá|skrift=Cyrl}}, {{ö+|bg|мерси|tr=mersí|skrift=Cyrl}}
*danska: {{ö+|da|tak}}
*engelska: {{ö+|en|thank you}}, {{ö+|en|thanks}}
*esperanto: {{ö+|eo|dankon}}
*estniska: {{ö+|et|aitäh}}, {{ö|et|aitüma}}
*fiji: {{ö|fj|vinaka}}
*finska: {{ö+|fi|kiitos}}, {{ö+|fi|kiitoksia}}
*franska: {{ö+|fr|merci}}
*färöiska: {{ö|fo|takk}}
*grekiska: {{ö+|el|ευχαριστώ}}
*gujarati: {{ö|gu|આભાર}} (aabhaar)
*haitisk kreol: {{ö|ht|mèsi}}
*hausa: {{ö|ha|na gode}}
*hawaiiska: {{ö|haw|mahalo}}
*hebreiska: {{ö+|he|תודה}} (toda)
*hiligaynon: {{ö|hil|salamat}}
*isländska: {{ö+|is|takk}}
*italienska: {{ö+|it|grazie}}
*japanska: {{ö+|ja|ありがとう}} ({{ö|ja|arigatou}})
*jiddisch: {{ö|yi|אַ דאַנק|tr=a dank}}
*katalanska: {{ö+|ca|gràcies}}, {{ö+|ca|mercès}}, {{ö+|ca|merci}}
*kikai: {{ö|kzg|うふくんでーた}}
*kinesiska: {{ö+|zh|謝謝}} (xièxie)
*korniska: {{ö|kw|meur ras}}
*kroatiska: {{ö|hr|hvala}}, {{ö|hr|veoma hvala}}, {{ö|hr|mnogo hvala}}, {{ö|hr|zahvaljujem}}, {{ö|hr|mnogo Vam hvala}}
*kurdiska: {{ö+|ku|spas}}, {{ö+|ku|sipas}}, {{ö+|ku|supas}}
*latin: {{ö+|la|gratia}}
*lettiska: {{ö+|lv|paldies}}
*litauiska: {{ö+|lt|ačiū}}
*makedonska: {{ö|mk|благодарам}}, {{ö|mk|фала}}
*malagassiska: {{ö+|mg|misaotra}}
*malajiska: {{ö+|ms|terima kasih}}
*maltesiska: {{ö+|mt|grazzi}}
*maori: {{ö+|mi|kia ora}}
*marshallesiska: {{ö|mh|kom̧m̧ool}}
*min nan: {{ö+|zh-min-nan|感謝|tr=kám-siā}}
*nederländska: {{ö+|nl|dank}}, {{ö+|nl|dank u}}, {{ö|nl|dank je}}, {{ö+|nl|dankjewel}}, {{ö+|nl|bedankt}}
*nordsamiska: {{ö|se|giitu}}
*ojibwe: {{ö|oj|miigwech}}
*oromo: {{ö|om|maharaba}}
*ossetiska: {{ö|os|бузныг}}
*pashto: {{ö|ps|مہربانی}} (mehrbani)
*persiska: {{ö+|fa|ممنون}} (mamnôn), {{ö+|fa|مرسی}} (mérsi)
*polska: {{ö+|pl|dziękuję}}
*portugisiska: {{ö+|pt|obrigado|m}}, {{ö+|pt|obrigada|f}}
*punjabi: {{ö|pa|ਸ਼ੁਕਰਿਆ}} (shukriya)
*romani: {{ö|rom|nais}}
*rumänska: {{ö+|ro|mulţumesc}}, {{ö+|ro|mersi}}
*ryska: {{ö+|ru|спасибо}}
*serbiska: {{ö|sr|хвала}} ({{ö+|sr|hvala}})
*slovenska: {{ö+|sl|hvala}}
*somaliska: {{ö|so|mahadsanid}}
*spanska: {{ö+|es|gracias}}
*svensk romani: {{ö|rmu|pakkrepa}}
*sydsamiska: {{ö|sma|aelties}}
*tadzjikiska: {{ö|tg|рахмат|tr=raxmat}}
*tagalog: {{ö+|tl|salamat}}
*tahitiska: {{ö|ty|māuruuru}}
*tamil: {{ö+|ta|நன்றி|tr=nandri}}
*tatariska: {{ö+|tt|рәхмәт|tr=räxmät}}
*telugu: {{ö+|te|ధన్యవాదాలు|tr=dhanyavaadaalu}}
*thai: {{ö+|th|ขอบคุณ|tr=kòp-kuun}}
**isan: {{ö+|th|ขอบใจ|tr=khawp jai}}
*tjeckiska: {{ö+|cs|děkuji}}, {{ö|cs|děkuji vám}}, {{ö|cs|děkuji ti}}
*tok pisin: {{ö|tpi|tenkyu}}
*tonganska: {{ö|to|mālō}}
*tswana: {{ö|tn|ke a leboga}}
*turkiska: {{ö+|tr|teşekkür ederim}}, {{ö+|tr|teşekkürler}}, {{ö+|tr|mersi}}
*tyska: {{ö+|de|danke}}
*ukrainska: {{ö|uk|дякую}}, {{ö+|uk|спасибі}}
*ungerska: {{ö+|hu|köszönöm}}
*vepsiska: {{ö|vep|kitän}}
*zulu: {{ö+|zu|ngiyabonga}}
*älvdalska: {{ö|ovd|tokk}}
{{ö-botten}}
===Substantiv===
{{sv-subst-t-0}}
{{sv-subst-n-0|4=tacken|8=tackens}}
'''tack'''
#[[besvarande]] av en hjälpsam eller god handling
#:''Han lagade mat åt henne som '''tack''' för att hon vattnat hans krukväxter medan han var på semester.''
#:{{grammatik|Vanligen neutrum, ibland dock utrum, särskilt i vissa betydelser och fraser. Plural har nolländelse (historiskt har dock både -ar, -er och -or förekommit).}}
#:{{användning|tack så mycket; tack ska du ha}}
#:{{sammansättningar|[[otack]], [[tackkort]], [[tacktal]]}}
#:{{besläktade ord|[[tacka]]}}
#:{{fraser|[[tack så mycket]]; [[tack ska du ha]]}}
====Översättningar====
{{ö-topp|}}
*bokmål: {{ö+|no|takk}}
*danska: {{ö+|da|tak}}
*finska: {{ö+|fi|kiitos}}
*japanska: {{ö+|ja|感謝|tr=かんしゃ, kansha}}
*jiddisch: {{ö|yi|דאַנק|m|tr=dank}}
*katalanska: {{ö+|ca|mercè|f}}
*portugisiska: {{ö+|pt|agradecimento|m}}
*turkiska: {{ö+|tr|şükür}}
*tyska: {{ö+|de|Dank|m}}
{{ö-botten}}
==Engelska==
===Substantiv===
{{en-subst}}
'''tack'''
#[[nubb]], [[spik]], [[stift]]
===Verb===
{{en-verb}}
'''tack'''
#[[nubba]], [[spika]], [[stifta]]
om3os68qoof9f0xj3rbq3kwx5k75fyc
växt
0
18931
4157287
4150403
2026-10-24T01:24:38Z
Frodlekis
762
/* Översättningar */
4157287
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''växt''' {{u}}
*{{uttal|sv|ipa=ˈvɛkːst}}
#{{tagg|kat=botanik|kat2=riken och domäner}} organism tillhörande [[växtriket]]
#:{{citat|år=1917|förf=[[w:C. A. M. Lindman|C. A. M. Lindman]]|titel=[https://runeberg.org/nordflor/310.html Bilder ur Nordens Flora]|Denna '''växt''' är vår minsta och spensligaste, men säkert också sirligaste Rubus-art.}}
#:{{citat|år=2000|titel=[http://spraakbanken.gu.se/cgi-bin/konk/konk2art.cgi?plats=12616596&korpus=svd00&kontext=1000&grad=2 Kemikalieutredningen]|publ=[[w:Svenska Dagbladet|Svenska Dagbladet]]|Utredningen föreslår på sikt också förbud mot särskilt långlivade kemiska ämnen som riskerar att lagras i människor, djur och '''växter'''.}}
#:{{antonymer|[[djur]] (motsatspar)}}
#:{{sammansättningar|[[baljväxt]], [[balkongväxt]], [[blomväxt]], [[dvärgväxt]], [[fetbladsväxter]], [[fjällväxt]], [[fjärilsväxt]], [[foderväxt]], [[fröväxter]], [[gagnväxt]], [[hanväxt]], [[honväxt]], [[hårdbladsväxt]], [[industriväxt]], [[jätteväxt]], [[kantväxt]], [[kiselväxt]], [[klängväxt]], [[krukväxt]], [[kulturväxt]], [[kärlväxt]], [[köksväxt]], [[ljungväxt]], [[långdagsväxt]], [[läkeväxt]], [[lökväxt]], [[medicinalväxt]], [[nitratväxt]], [[nyttoväxt]], [[oljeväxt]], [[parasitväxt]], [[påväxt]], [[ruderatväxt]], [[rumsväxt]], [[salpeterväxt]], [[saltväxt]], [[skuggväxt]], [[slideväxter]], [[slingerväxt]], [[snyltväxt]], [[solväxt]], [[sporväxt]], [[spånadsväxt]], [[stamväxt]], [[stråväxter]], [[surjordsväxt]], [[säsongsväxt]], [[textilväxt]], [[trädgårdsväxt]], [[vallväxt]], [[vattenväxt]], [[vedväxt]], [[värdväxt]], [[växtanatomi]], [[växtart]], [[växtcell]], [[växtdrog]], [[växtfett]], [[växtfiber]], [[växtfärg]], [[växtfärgning]], [[växtföljd]], [[växtförädling]], [[växtgift]], [[växtgräns]], [[växthormon]], [[växthus]], [[växthuseffekt]], [[växthusgas]], [[växtmargarin]], [[växtnäring]], [[växtodling]], [[växtplankton]], [[växtpress]], [[växtriket]], [[växtrörelse]], [[växtsaft]], [[växtsamhälle]], [[växtsamlare]], [[växtsilke]], [[växtsjukdom]], [[växtskydd]], [[växtslem]], [[växtstekel]], [[växtsystematik]], [[växttråd]], [[växtämne]], [[växtätare]], [[ärtväxt]], [[ökenväxt]]}}
#:{{fraser|[[köttätande växt]]}}
#{{tagg|kat=växtfysiologi|kat2=växtmorfologi}} form erhållen genom växande
#:{{citat|år=1884|förf=[[w:Victoria Benedictsson|Victoria Benedictsson]]|titel=[https://runeberg.org/pengar/04.html Pengar]|Hög var hon till '''växt''', med breda axlar, långa armar och stora händer.}}
#:{{citat|år=1910|[[w:Pontus Wikner|Pontus Wikner]]|titel=[https://runeberg.org/vittrskr/0255.html Vittra skrifter]|Detta är sant i den mening, att [trädet] fått en ovanlig '''växt''', och i den mening, att dess '''växt''' i vårt tycke icke är vacker [...]}}
#:{{sammansättningar|[[efterväxt]], [[framväxt]], [[girväxt]], [[missväxt]], [[tillväxt]], [[uppväxt]], [[växthormon]], [[växtkraft]], [[växtliv]], [[växtperiod]], [[växtvärk]], [[växtzon]], [[årsväxt]], [[återväxt]]}}
#:{{seäven|[[planta]], [[telning]]}}
:{{avgränsare}}
:{{etymologi|Av {{härledning|sv|gmq-fsv|væxter, vaxter}}, av {{härledning|sv|non|vöxtr, vǫxtr}}, av {{härledning|sv|gem-ugm|*wahstuz}}.}}
:{{besläktade ord|[[växtlighet]]}}
====Översättningar====
{{ö-topp|organism}}
*afrikaans: {{ö+|af|plant}}
*arabiska: {{ö+|ar|نَبْتَة|f|tr=nabta}}
*banjaresiska: {{ö|bjn|tumbuhan}}
*baskiska: {{ö|eu|landare}}
*bokmål: {{ö+|no|plante|f}}, {{ö|no|vekst|m}}
*central bikol: {{ö|bcl|pananom}}
*danska: {{ö+|da|plante|u}}, {{ö|da|vækst|u}}
*engelska: {{ö+|en|plant}}
*estniska: {{ö+|et|taim}}
*finska: {{ö+|fi|kasvi}}
*franska: {{ö+|fr|plante|f}}
*georgiska: {{ö|ka|მცენარე}}
*hebreiska: {{ö+|he|צֶמַח|m|tr=tsémakh}}
*indonesiska: {{ö+|id|tumbuhan}}
*isländska: {{ö+|is|planta}}, {{ö+|is|jurt}}
*italienska: {{ö+|it|pianta}}
*japanska: {{ö+|ja|植物|tr=しょくぶつ, shokubutsu}}
*jiddisch: {{ö|yi|געוויקס|n|tr=geviks}}, {{ö|yi|פֿלאַנץ|tr=flants}}
*kinesiska: {{ö+|zh|植物}}
*malajiska: {{ö+|ms|tumbuhan}}
*nederländska: {{ö+|nl|plant}}
*nordsamiska: {{ö|se|šaddu}}
*nynorska: {{ö|nn|plante|mf}}, {{ö|nn|vekst|m}}, {{ö|nn|vokster|m}}
*polska: {{ö+|pl|roślina}}
*portugisiska: {{ö+|pt|planta}}
*rumänska: {{ö+|ro|plantă}}
*ryska: {{ö+|ru|растение|n}}
*slovakiska: {{ö+|sk|rastlina}}
*slovenska: {{ö+|sl|rastlina}}
*spanska: {{ö+|es|planta|f}}
*tjeckiska: {{ö+|cs|rostlina|f}}
*turkiska: {{ö+|tr|bitki}}
*tyska: {{ö+|de|Pflanze|f}}, {{ö+|de|Gewächs|n}}
*ungerska: {{ö+|hu|növény}}
{{ö-botten}}
{{ö-topp|form genom utveckling}}
*bokmål: {{ö|no|vekst|m}}
*danska: {{ö|da|vækst|u}}
*engelska: {{ö+|en|growth}}
*estniska: {{ö|et|kasv}}
*finska: {{ö+|fi|kasvu}}, {{ö+|fi|kehitys}}
*franska: {{ö+|fr|croissance|f}}
*indonesiska: {{ö+|id|perkembangan}}
*isländska: {{ö|is|vöxtur}}
*italienska: {{ö+|it|crescita}}
*nederländska: {{ö|nl|groeivorm}}
*nynorska: {{ö|nn|vekst|m}}, {{ö|nn|vokster|m}}
*polska: {{ö+|pl|wzrost}}
*portugisiska: {{ö+|pt|crescimento}}
*rumänska: {{ö|ro|creştere}}
*slovakiska: {{ö|sk|rast}}
*slovenska: {{ö+|sl|rast}}
*turkiska: {{ö+|tr|büyüme}}
*tyska: {{ö+|de|Wuchs|m}}
*ungerska: {{ö|hu|kifejlődés}}
{{ö-botten}}
===Verb===
'''växt'''
#{{böjning|sv|verb|växa}}
===Adjektiv===
{{sv-adj-alt-peri|pers=}}
'''växt'''
#{{avledning|sv|växa|ordform=perfpart}}
#:{{sammansättningar|[[dvärgväxt]], [[fastväxt]], [[förväxt]], [[högväxt]], [[igenväxt]], [[ihopväxt]], [[lågväxt]], [[outväxt]], [[småväxt]], [[storväxt]], [[uppväxt]], [[utväxt]], [[välväxt]]}}
apfwvha7q31qkdwdnxh5uai3lpvhw21
eld
0
20480
4157329
4141841
2026-10-24T01:45:28Z
Frodlekis
762
4157329
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
{{media|Fire02.jpg|flammande '''eld''' ''(område)''}}
'''eld'''
#{{tagg|kemi}} [[kemisk reaktion]] där gaserna från ett bränsle [[oxidation|oxideras]], varvid [[ljus]] och [[värme]] samtidigt avges
#:''Har du '''eld'''?''
#:{{synonymer|[[jald]] ''(orsamål)''}}
#:{{sammansättningar|[[eldbeständig]], [[eldfara]], [[eldfarlig]], [[eldfarlighet]], [[eldfest]], [[eldslukare]], [[eldsläckare]], [[eldpelare]], [[eldsvåda]], [[eldsäker]], [[löpeld]]}}
#det område där den kemiska reaktionen sker
#:''Det gör ont när man rör vid '''elden'''.''
#:{{synonymer|[[låga]], [[flamma]]}}
#:{{sammansättningar|[[eldhav]], [[eldhärd]], [[eldkastare]], [[eldklot]], [[eldgaffel]], [[eldgaller]], [[eldgata]], [[eldstad]], [[eldvakt]], [[eldslåga]], [[eldflamma]], [[lägereld]]}}
#:{{fraser|[[fatta eld]], [[ha många järn i elden]], [[ta eld]]}}
#:{{seäven|[[brand]]}}
#{{tagg|alkemi}} benämning på ett av [[de fyra elementen]]
#{{tagg|filosofi}} benämning på ett av [[de fem elementen]] i [[kinesisk filosofi]]
#{{tagg|vapen}} avfyrande av [[skjutvapen]]
#:{{sammansättningar|[[eldgivning]], [[eldkraft]], [[eldrör]], [[eldupphör]], [[eldvapen]], [[verkanseld]]}}
#:{{fraser|[[ge eld]], [[fientlig eld]]}}
:{{avgränsare}}
:{{etymologi|Av fornsvenska ''[[elder]]'', av fornnordiska ''[[eldr]]'' (varav även isländska och färöiska ''[[eldur]]'', danska ''[[ild]]'' och norska ''[[#Norska|eld]]''). Gemensamt germanskt ord med dunkla släktskaps- och ursprungsförhållanden.}}
:{{sammansättningar|[[eldbegängelse]], [[elddon]], [[eldfarlig]], [[eldfast]], [[eldfluga]], [[eldfängd]], [[eldhåg]], [[eldprov]], [[eldsjäl]], [[eldstrid]], [[eldstål]], [[eldöverfall]], [[pärteld]]}}
:{{besläktade ord|[[elda]], [[eldare]], [[eldig]], [[eldighet]]}}
:{{seäven-bring|Helvete|Anfall|Uttrycksfullhet|Orange|Ljuskälla|Ljus|Värmeapparat|Uppvärmning|Värme}}
====Översättningar====
{{ö-topp|kemisk reaktion}}
*acehnesiska: {{ö|ace|apuy}}
*arabiska: {{ö+|ar|نَار|f|tr=nār}}
*aragonska: {{ö|an|fuego}}
*baskiska: {{ö+|eu|su}}
*belarusiska: {{ö|be|агонь|m}}
*bokmål: {{ö+|no|ild}}, {{ö+|no|fyr}}
*burmesiska: {{ö+|my|မီး|tr=mi:}}
*cebuano: {{ö|ceb|kalayo}}
*central bikol: {{ö+|bcl|kalayo}}
*danska: {{ö+|da|ild}}
*engelska: {{ö+|en|fire}}
*esperanto: {{ö+|eo|fajro}}
*estniska: {{ö+|et|tuli}}
*finska: {{ö+|fi|tuli}}
*franska: {{ö+|fr|feu|m}}
*frisiska: {{ö+|fy|fjoer|n}}
*grönländska: {{ö|kl|inneq}}
*haitisk kreol: {{ö|ht|dife}}
*hausa: {{ö+|ha|wuta}}
*hawaiiska: {{ö|haw|ahi}}
*hebreiska: {{ö+|he|אֵשׁ|f|tr=esh}}
*hettitiska: {{ö|hit|𒉺𒀪𒄯|n|tr=paḫḫur}}
*hiligaynon: {{ö|hil|kalayo}}
*indonesiska: {{ö+|id|api}}
*isländska: {{ö+|is|eldur|m}}, {{ö+|is|bál|n}}, {{ö+|is|brenna|f}}
*italienska: {{ö+|it|fuoco|m}}
*jiddisch: {{ö|yi|פֿײַער|m|tr=fayer}}
*kashmiri: {{ö|ks|اۆگُن|m|tr=ogun}}
*khmer: {{ö+|km|ភ្លើង|tr=phləəng}}
*klassisk grekiska: {{ö|grc|πῦρ|n|tr=pûr}}
*korsikanska: {{ö+|co|focu|m}}
*kymriska: {{ö+|cy|tân|m}}
*lao: {{ö+|lo|ໄຟ|tr=fai}}
*latin: {{ö+|la|ignis|m}}
*maltesiska: {{ö|mt|nar|f}}
*nordsamiska: {{ö|se|dolla}}
*occitanska: {{ö+|oc|fuòc}}
*persiska: {{ö+|fa|آتش|tr=âtaš}}
*polska: {{ö+|pl|ogień|m}}
*portugisiska: {{ö+|pt|fogo|m}}
*rohingya: {{ö|rhg|ooin}}
*rumänska: {{ö+|ro|foc|n}}
*ryska: {{ö+|ru|огонь}}
*sanskrit: {{ö+|sa|अग्नि|m|tr=agni}}
*sicilianska: {{ö+|scn|focu|m}}
*slovenska: {{ö+|sl|ogenj|m}}
*spanska: {{ö+|es|fuego|m}}
*swahili: {{ö+|sw|moto}}
*sydsamiska: {{ö|sma|dålle}}
*thai: {{ö+|th|ไฟ|tr=fai}}
*tibetanska: {{ö|bo|མེ|tr=me}}
*tjeckiska: {{ö+|cs|oheň|m}}
*turkiska: {{ö+|tr|ateş}}
*tyska: {{ö+|de|Feuer|n}}
*uiguriska: {{ö|ug|ئوت|tr=ot}}
*ukrainska: {{ö|uk|вогонь|m}}, {{ö+|uk|ватра|f}}
*ungerska: {{ö+|hu|tűz}}
*uzbekiska: {{ö+|uz|oʻt}}, {{ö+|uz|otash}}
*vietnamesiska: {{ö+|vi|lửa}}
*waray-waray: {{ö|war|kalayo}}
{{ö-botten}}
{{ö-topp|område där den kemiska reaktionen sker}}
*afrikaans: {{ö+|af|vuur}}
*albanska: {{ö+|sq|zjarr|m}}
*bokmål: {{ö+|no|ild}}, {{ö+|no|fyr}}
*danska: {{ö+|da|ild}}
*engelska: {{ö+|en|fire}}
*esperanto: {{ö+|eo|fajro}}
*finska: {{ö+|fi|liekki}}
*franska: {{ö+|fr|feu|m}}
*frisiska: {{ö+|fy|fjoer|n}}
*färöiska: {{ö+|fo|eldur|m}}
*indonesiska: {{ö+|id|api}}
*isländska: {{ö+|is|eldur|m}}, {{ö+|is|bál|n}}
*italienska: {{ö+|it|fuoco|m}}
*kymriska: {{ö+|cy|tân|m}}
*latin: {{ö+|la|ignis|m}}
*nederländska: {{ö+|nl|vuur|n}}
*nordsamiska: {{ö|se|dolla}}
*nynorska: {{ö|nn|eld}}
*occitanska: {{ö+|oc|fuòc}}
*polska: {{ö+|pl|ogień|m}}
*portugisiska: {{ö+|pt|fogo|m}}
*rumänska: {{ö+|ro|foc|n}}
*ryska: {{ö+|ru|огонь}}
*slovenska: {{ö+|sl|ogenj|m}}
*spanska: {{ö+|es|fuego|m}}
*tjeckiska: {{ö+|cs|oheň|m}}
*turkiska: {{ö+|tr|ateş}}
*tyska: {{ö+|de|Feuer|n}}
{{ö-botten}}
{{ö-topp|ett av de fyra elementen}}
*bokmål: {{ö+|no|ild|n}}
*danska: {{ö+|da|ild}}
*engelska: {{ö+|en|fire}}
*esperanto: {{ö+|eo|fajro}}
*finska: {{ö+|fi|tuli}}
*franska: {{ö+|fr|feu|m}}
*frisiska: {{ö+|fy|fjoer|n}}
*isländska: {{ö+|is|eldur|m}}
*italienska: {{ö+|it|fuoco|m}}
*latin: {{ö+|la|ignis|m}}
*nederländska: {{ö+|nl|vuur|n}}
*nordsamiska: {{ö|se|dolla}}
*occitanska: {{ö+|oc|fuòc}}
*polska: {{ö+|pl|ogień|m}}
*portugisiska: {{ö+|pt|fogo|m}}
*rumänska: {{ö+|ro|foc|n}}
*ryska: {{ö+|ru|огонь}}
*spanska: {{ö+|es|fuego|m}}
*tjeckiska: {{ö+|cs|oheň|m}}
*turkiska: {{ö+|tr|ateş}}
*tyska: {{ö+|de|Feuer|n}}
{{ö-botten}}
{{ö-topp|ett av de fem elementen (kinesisk filosofi)}}
*bokmål: {{ö+|no|ild|n}}
*danska: {{ö+|da|ild}}
*engelska: {{ö+|en|fire}}
*estniska: {{ö+|et|tuli}}
*finska: {{ö+|fi|tuli}}
*franska: {{ö+|fr|feu|m}}
*frisiska: {{ö+|fy|fjoer|n}}
*italienska: {{ö+|it|fuoco|m}}
*japanska: {{ö+|ja|火}}
*katalanska: {{ö+|ca|foc}}
*koreanska: {{ö+|ko|화}}
*litauiska: {{ö+|lt|ugnis}}
*makedonska: {{ö|mk|оган}}
*malajiska: {{ö+|ms|kayu}}
*nederländska: {{ö+|nl|vuur|n}}
*nynorska: {{ö|nn|eld}}
*polska: {{ö+|pl|ogień|m}}
*portugisiska: {{ö+|pt|fogo|m}}
*rumänska: {{ö+|ro|foc|n}}
*ryska: {{ö+|ru|огонь}}
*slovenska: {{ö+|sl|ogenj|m}}
*spanska: {{ö+|es|fuego|m}}
*tjeckiska: {{ö+|cs|oheň|m}}
*turkiska: {{ö+|tr|ateş}}
*tyska: {{ö+|de|Feuer|n}}
*ungerska: {{ö+|hu|tűz}}
*vietnamesiska: {{ö|vi|Hỏa}}
{{ö-botten}}
{{ö-topp|avfyrande av skjutvapen}}
*afrikaans: {{ö+|af|vuur}}
*albanska: {{ö+|sq|zjarr|m}}
*bokmål: {{ö+|no|ild}}, {{ö+|no|fyr}}
*engelska: {{ö+|en|fire}}
*finska: {{ö+|fi|tuli}}
*frisiska: {{ö+|fy|fjoer|n}}
*ryska: {{ö+|ru|огонь}}
*turkiska: {{ö+|tr|ateş}}
*tyska: {{ö+|de|Feuer|n}}
{{ö-botten}}
{{ö-topp|Översättningar som behöver flyttas till rätt betydelse/betydelser}}
*bretonska: {{ö+|br|tan|m}} {{?}}
*gujarati: {{ö+|gu|અગ્નિ}} {{?}}
*iriska: {{ö|ga|tine|f}} {{?}}
*japanska: (eld) {{ö+|ja|火}} ({{ö+|ja|ひ}}, ''hi''), (en eld) {{ö+|ja|火事}} ({{ö+|ja|かじ}}, ''kaji'') {{?}}
*korniska: {{ö|kw|tan|m}} {{?}}
*maori: {{ö+|mi|ahi}} {{?}}
*skotsk gäliska: {{ö|gd|teine|m}} {{?}}
{{ö-botten}}
===Verbpartikel===
{{verbpartikel|sv}}
#i [[brand]]
#:''Tutta '''eld''' på vedträna nu!''
==Forndanska==
===Substantiv===
{{subst|gmq-fda}}
'''eld''' {{m}}
#[[#Svenska|eld]]
#:{{etymologi|Av {{härledning|gmq-fda|non|eldr}}.}}
==Älvdalska==
===Konjunktion===
{{konj|ovd}}
'''eld'''
#[[eller]]
ef7tegijutt4sm5rn5pn2f0640fxshc
Kategori:Fornsvenska
14
21656
4157374
2982062
2026-10-24T04:23:04Z
Frodlekis
762
4157374
wikitext
text/x-wiki
{{kategorinavigering|Fornsvenska}}
{{faktaruta språk}}
2b5nyjiygj6kj6iw930wfs37ffva5m4
hallon
0
22192
4157181
3862433
2026-10-23T20:16:42Z
Frodlekis
762
+yi: [[מאַלינע]] (assisterat)
4157181
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-oräkn|betydelser=1.}}
{{sv-subst-t-0|betydelser=2-3.}}
{{media|Raspberries_%28Rubus_Idaeus%29.jpg|hallon}}
'''hallon'''
*{{uttal|sv|ipa=ˈhàlɔn}}
#{{tagg|växter}} ''[[Rubus idaeus]]''; [[art]] inom familjen Rosväxter
#{{tagg|växter}} [[individ]] av arten ovan
#{{tagg|frukter}} [[frukt]] av arten ovan (botaniskt en hel hop av [[stenfrukt]]er)
#:'''''Hallon''' är röda.''
:{{avgränsare}}
:{{etymologi|Troligen besläktat med ''[[häll]]'' i den ungefärliga betydelsen "bär som växer på stenig mark"; med avledningssuffixet ''-on'' som används allmänt för bär.}}
:{{sammansättningar|[[geléhallon]], [[hallonbåt]], [[hallonbuske]], [[hallongelé]], [[hallonkräm]], [[hallonmask]], [[hallonröd]], [[hallonsaft]], [[hallonsnår]], [[hallonsylt]], [[hallontårta]], [[vildhallon]]}}
====Översättningar====
{{ö-topp|art}}
*aragonska: {{ö|an|chordón}}
*bokmål: {{ö|no|bringebær|n}}
*bulgariska: {{ö+|bg|малина}}
*danska: {{ö|da|almindelig hindbær}}
*engelska: {{ö+|en|raspberry}}
*finska: {{ö+|fi|vadelma}}
*franska: {{ö+|fr|framboisier}}
*katalanska: {{ö|ca|gerdera}}
*lågtyska: {{ö+|nds|Himbeer|f}}
*nederländska: {{ö+|nl|framboos}}
*nordsamiska: {{ö|se|lávet}}, {{ö|se|váran}}
*nynorska: {{ö|nn|bringebær|n}}
*polska: {{ö+|pl|malina|f}}
*portugisiska: {{ö+|pt|framboesa|f}}
*ryska: {{ö+|ru|малина}}
*spanska: {{ö|es|frambueso|m}}
*turkiska: {{ö+|tr|ahududu}}
*tyska: {{ö+|de|Himbeere}}
*älvdalska: {{ö|ovd|follber|n}}
{{ö-botten}}
{{ö-topp|frukt}}
*armeniska: {{ö+|hy|ազնվամորի|tr=aznvamori}}
*azerbajdzjanska: {{ö+|az|moruq}}
*baskiska: {{ö|eu|mugurdi}}
*belarusiska: {{ö|be|маліна|f}}
*bokmål: {{ö|no|bringebær|n}}
*bulgariska: {{ö+|bg|малина}}
*danska: {{ö+|da|hindbær}}
*engelska: {{ö+|en|raspberry}}
*estniska: {{ö|et|vaarikas}}
*finska: {{ö+|fi|vadelma}}, {{ö+|fi|vattu}}
*franska: {{ö+|fr|framboise}}
*grekiska: {{ö+|el|σμέουρο}}
*grönländska: {{ö|kl|hindbæri}}
*haitisk kreol: {{ö|ht|franbwaz}}
*hebreiska: {{ö+|he|פטל|m|tr=pétel}}
*hindi: {{ö+|hi|रसभरी|tr=rasabhrī}}
*italienska: {{ö+|it|lampone|m}}, {{ö+|it|lampone|m}}
*japanska: {{ö+|ja|ラズベリー|tr=razuberī}}, {{ö|ja|木苺|tr=きいちご, kiichigo}}, {{ö+|ja|フランボワーズ|tr=furanbowāzu}}
*jiddisch: {{ö|yi|מאָלענע|f|tr=malene}}, {{ö|yi|מאַלינע|f|tr=maline}}
*katalanska: {{ö+|ca|gerd}}
*kurdiska: {{ö+|ku|tûşêmî}}
*latin: {{ö|la|rubus|m}}
*lettiska: {{ö+|lv|avene}}
*litauiska: {{ö+|lt|avietė}}
*luxemburgiska: {{ö|lb|Hambier}}
*lågtyska: {{ö+|nds|Himbeer|f}}
*nederländska: {{ö+|nl|framboos}}
*nynorska: {{ö|nn|bringebær|n}}
*polska: {{ö+|pl|malina|f}}
*portugisiska: {{ö+|pt|framboesa}}
*rumänska: {{ö+|ro|zmeură}}
*ryska: {{ö+|ru|малина}}
*slovakiska: {{ö+|sk|malina|f}}
*spanska: {{ö+|es|frambuesa|f}}
*swahili: {{ö|sw|rasiberi}}
*turkiska: {{ö+|tr|ahududu}}, {{ö+|tr|frambuaz}}
*tyska: {{ö+|de|Himbeere|f}}
*ukrainska: {{ö|uk|малина|f}}
*ungerska: {{ö+|hu|málna}}
*vallonska: {{ö+|wa|ampône|f}}
*vepsiska: {{ö|vep|babarm}}
*älvdalska: {{ö|ovd|follber|n}}
{{ö-botten}}
{{ö-topp-granska}}
*esperanto: {{ö+|eo|frambo}}
*japanska: {{ö|ja|木苺}} ({{ö|ja|きいちご}}, ''{{ö|ja|kiichigo}}'')
{{ö-botten}}
1wzp6rjutro47e7jlixefwn7fjj7nx5
födelse
0
41626
4157130
4076134
2026-10-23T15:36:25Z
~2026-56702-21
62364
+am: [[ልደት]] (assisterat)
4157130
wikitext
text/x-wiki
{{wikipedia|förlossning}}
==Svenska==
===Substantiv===
{{sv-subst-n-r}}
'''[[föda|föd]][[-else|else]]'''
#{{tagg|text=fokus på den som föds}} det att födas, det att komma till liv, det att börja leva
#{{tagg|biologi}} [[tillfälle]] då ett eller flera [[foster]] kommer ut ur moderns [[livmoder]]
:{{avgränsare}}
:{{synonymer|[[födsel]], [[förlossning]]}}
:{{besläktade ord|[[föda]]}}
:{{sammansättningar|[[födelseannons]], [[födelseattest]], [[födelsebok]], [[födelsedag]], [[födelsedatum]], [[födelsemärke]], [[födelseort]], [[födelseplats]], [[födelsestad]], [[födelseår]]}}
:{{seäven-bring|Början|Alstring|Liv}}
====Översättningar====
{{ö-topp|det att födas}}
*amhariska: {{ö|am|ልደት|tr=lədät}}
*bokmål: {{ö+|no|fødsel|m}}
*engelska: {{ö+|en|birth}}
*esperanto: {{ö|eo|naskiĝo}}
*finska: {{ö+|fi|syntymä}}
*fornsvenska: {{ö|gmq-fsv|födhilse}}
*franska: {{ö+|fr|naissance|f}}
*isländska: {{ö+|is|barnsburður|m}}, {{ö|is|barnsfæðing|f}}, {{ö+|is|burður|m}}
*katalanska: {{ö+|ca|naixement|m}}
*polska: {{ö+|pl|urodzenie|n}}, {{ö+|pl|narodzenie|n}}, {{ö+|pl|narodziny|p}}
*portugisiska: {{ö+|pt|nascimento|m}}
*ryska: {{ö+|ru|рождение}}
*spanska: {{ö+|es|nacimiento|m}}
*tyska: {{ö+|de|Geburt|f}}
*älvdalska: {{ö|ovd|fyöðels|f}}
{{ö-botten}}
{{ö-se|(biologi) tillfälle då ett eller flera foster kommer ur moderns livmoder|födsel}}
dmi0ehh9cx50buzz4rv03m4103lag8t
4157131
4157130
2026-10-23T15:40:14Z
~2026-56702-21
62364
+tr: [[doğum]] (assisterat)
4157131
wikitext
text/x-wiki
{{wikipedia|förlossning}}
==Svenska==
===Substantiv===
{{sv-subst-n-r}}
'''[[föda|föd]][[-else|else]]'''
#{{tagg|text=fokus på den som föds}} det att födas, det att komma till liv, det att börja leva
#{{tagg|biologi}} [[tillfälle]] då ett eller flera [[foster]] kommer ut ur moderns [[livmoder]]
:{{avgränsare}}
:{{synonymer|[[födsel]], [[förlossning]]}}
:{{besläktade ord|[[föda]]}}
:{{sammansättningar|[[födelseannons]], [[födelseattest]], [[födelsebok]], [[födelsedag]], [[födelsedatum]], [[födelsemärke]], [[födelseort]], [[födelseplats]], [[födelsestad]], [[födelseår]]}}
:{{seäven-bring|Början|Alstring|Liv}}
====Översättningar====
{{ö-topp|det att födas}}
*amhariska: {{ö|am|ልደት|tr=lədät}}
*bokmål: {{ö+|no|fødsel|m}}
*engelska: {{ö+|en|birth}}
*esperanto: {{ö|eo|naskiĝo}}
*finska: {{ö+|fi|syntymä}}
*fornsvenska: {{ö|gmq-fsv|födhilse}}
*franska: {{ö+|fr|naissance|f}}
*isländska: {{ö+|is|barnsburður|m}}, {{ö|is|barnsfæðing|f}}, {{ö+|is|burður|m}}
*katalanska: {{ö+|ca|naixement|m}}
*polska: {{ö+|pl|urodzenie|n}}, {{ö+|pl|narodzenie|n}}, {{ö+|pl|narodziny|p}}
*portugisiska: {{ö+|pt|nascimento|m}}
*ryska: {{ö+|ru|рождение}}
*spanska: {{ö+|es|nacimiento|m}}
*turkiska: {{ö+|tr|doğum}}
*tyska: {{ö+|de|Geburt|f}}
*älvdalska: {{ö|ovd|fyöðels|f}}
{{ö-botten}}
{{ö-se|(biologi) tillfälle då ett eller flera foster kommer ur moderns livmoder|födsel}}
2ar72f01q1vivfck6dom3t1kw92ycgo
panna
0
41978
4157328
4138486
2026-10-24T01:45:08Z
Frodlekis
762
4157328
wikitext
text/x-wiki
{{se även|pannå}}
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-or}}
'''panna'''
#{{tagg|anatomi}} del av huvudet mellan [[ögonbryn]]en och upp till [[hårfäste]]t (eller där hårfästet skulle vara)
#:{{synonymer|[[änne]]}}
#:{{sammansättningar|[[pannband]], [[pannben]], [[pannmuskel]], [[pannlugg]]}}
#{{tagg|kat=köksredskap}} köksredskap i vilket man kan [[steka]] eller [[ugnsbaka]]
#:{{citat|Innan '''pannan''' skall användas, bör den upphettas, smörjas med smör och gnidas med en linnelapp, tills den är blank.|titel=[https://runeberg.org/idunskok/0017.html Iduns kokbok]|förf=Elisabeth Östman|år=1911}}
#:{{synonymer|[[stekplåt]], [[plåt]]}}
#:{{sammansättningar|[[långpanna]] (''för ugnsbak''), [[pyttipanna]], [[pytt i panna]], [[stekpanna]]}}
#{{tagg|byggnadsteknik|kat2=teknik}} ''förkortning av'' [[värmepanna]], teknisk anordning som värmer upp vatten (eller annan vätska) och levererar varmare flytande vatten eller ånga
#:{{sammansättningar|[[gaspanna]], [[elpanna]], [[oljepanna]], [[pannrum]], [[pelletspanna]], [[vedpanna]], [[värmepanna]]}}
#{{tagg|byggnadsteknik|kat2=teknik}} takbeklädnad, oftast av tegel eller betong
#:{{sammansättningar|[[takpanna]], [[tegelpanna]], [[betongpanna]]}}
#{{tagg|Stockholmsslang}} [[kilo]]
#:{{citat|år=2006|datum=21 okt|titel=[https://www.skidforum.se/topic/721-styrketr%C3%A4ning/ skidforum.se: Styrketräning]|Vid 16års ålder var jag en lång (188cm) och mycket tanig kille (63kg). Bestämde mig då för att bygga upp mig. Läste allt och körde hårt i 7-8 år och blev till slut en hyggligt rossig lirare på '''90 pannor'''. Nu är ju inte ditt mål att bli någon ross utan att bli en lite tyngre och mycket starkare skidåkare.}}
#{{tagg|Stockholmsslang}} [[helrör]] (75-centilitersflaska sprit eller vin omkring 1 kilo)
#:''en '''helpanna''' vodka''
#:{{sammansättningar|[[halvpanna]], [[helpanna]]}}
#{{tagg|slang}} en sprutdos knark
#:''ta en '''panna'''''
====Översättningar====
{{ö-topp|1. del av huvudet}}
*arabiska: {{ö|ar|جبهة}}, {{ö|ar|جبين}}
*azerbajdzjanska: {{ö+|az|alın}}
*bokmål: {{ö+|no|panne}}
*central bikol: {{ö+|bcl|angog}}
*chamorro: {{ö|ch|ha'i}}
*danska: {{ö+|da|pande}}
*engelska: {{ö+|en|forehead}}
*esperanto: {{ö+|eo|frunto}}
*estniska: {{ö+|et|otsaesine}}
*fiji: {{ö|fj|yadre}}
*finska: {{ö+|fi|otsa}}
*franska: {{ö+|fr|front|m}}
*frisiska: {{ö|fy|foarholle}}
*grekiska: {{ö+|el|μέτωπο}}
*indonesiska: {{ö+|id|dahi}}
*isländska: {{ö|is|enni}}
*italienska: {{ö+|it|fronte|f}}
*japanska: {{ö+|ja|額}} ({{ö+|ja|ひたい}}, hitai), {{ö|ja|お凸|tr=おでこ, odeko}}
*kvänska: {{ö|fkv|otta}}
*lettiska: {{ö|lv|piere}}
*litauiska: {{ö|lt|kakta}}
*malajiska: {{ö+|ms|dahi}}
*maori: {{ö|mi|rae}}
*nederländska: {{ö+|nl|voorhoofd}}
*polska: {{ö+|pl|czoło}}
*portugisiska: {{ö+|pt|testa|f}}
*rumänska: {{ö+|ro|frunte}}
*ryska: {{ö+|ru|лоб}}
*slovakiska: {{ö+|sk|čelo}}
*slovenska: {{ö+|sl|čelo}}
*spanska: {{ö+|es|frente|f}}
*tahitiska: {{ö|ty|rae}}
*tjeckiska: {{ö+|cs|čelo}}
*turkiska: {{ö+|tr|alın}}
*tyska: {{ö+|de|Stirn|f}}
*ungerska: {{ö+|hu|homlok}}
{{ö-botten}}
{{ö-topp|2. köksredskap}}
*engelska: {{ö+|en|pan}}
*finska: {{ö+|fi|pannu}}
*isländska: {{ö+|is|panna|f}}
*kvänska: {{ö|fkv|pannu}}
*tyska: {{ö+|de|Pfanne|f}}
{{ö-botten}}
{{ö-topp|3. teknisk anordning som värmer upp vatten}}
*arabiska: {{ö|ar|مرجل}}
*bokmål: {{ö|no|kjele|m}}, {{ö|no|kjel|m}}, {{ö+|no|panne|m}}
*danska: {{ö|da|kedel|u}}, {{ö+|da|fyr|n}}
*engelska: {{ö+|en|boiler}}
*finska: {{ö|fi|lämpökattila}}
*nynorska: {{ö|nn|kjel|m}}, {{ö|nn|kjêl|m}}, {{ö|nn|kjêle|m}}, {{ö|nn|kjele|m}}, {{ö|nn|panne|f}}
*tyska: {{ö+|de|Kessel|f}}, {{ö|de|Heizkessel|f}}
{{ö-botten}}
{{ö-topp|4. takbeklädnad}}
*tyska: {{ö+|de|Dachpfanne|f}}, {{ö+|de|Dachziegel|m}}
{{ö-botten}}
==Finska==
===Verb===
{{verb|fi}}
'''panna'''
#[[lägga]], [[sätta]], [[placera]]
#[[brygga]], framställa [[jäsa|jästa]] drycker, som [[öl]] och [[mjöd]]
#{{tagg|kat=vulgärt|språk=fi|text=vulgärt}} [[knulla]]
===Substantiv===
'''panna'''
#{{tagg|historia|språk=fi}} [[bannlysning]]
#{{tagg|ålderdomligt|språk=fi}} [[förbud]], [[banna]]
==Isländska==
===Substantiv===
{{is-subst-f-a|rot=pann|omljudsrot=pönn}}
'''panna'''
#{{tagg|kat=köksredskap|språk=is}} [[panna#Svenska|panna]]
#:{{sammansättningar|[[pönnukaka]]}}
==Polska==
===Substantiv===
{{subst|pl}}
'''panna'''
#[[fröken]]
#:{{synonymer|[[kobieta]], [[wolna]], [[niewiasta]] och [[pani]]}}
#:{{antonymer|[[białogłowa]], [[mężatka]] och [[zamężna]]}}
#[[flicka]]
#:{{synonymer|[[niewiasta]], [[dziewoja]], [[dziewica]] och [[dziewczyna]]}}
#[[flickvän]]
#:{{synonymer|[[sympatia]] och [[partnerka]]}}
e7ro6mhezqanfsjikhjoecb58b49zts
grammatik
0
42512
4157293
4087783
2026-10-24T01:28:21Z
Frodlekis
762
/* Översättningar */
4157293
wikitext
text/x-wiki
{{se även|Grammatik}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''grammatik'''
#{{tagg|kat=lingvistik}} beskrivning av hur ett språk är uppbyggt, hur satsdelar, ord, ändelser och andra element relaterar till varandra för att uttrycka betydelser
#:{{citat|En för svenskar afsedd lärobok i dansk och norsk '''grammatik''' har hittills helt och hållet saknats.|titel=[https://runeberg.org/svlartid/1894/0425.html Svensk Läraretidning]|år=1894}}
#:{{besläktade ord|[[grammatika]], [[grammatiker]], [[grammatisk]]}}
#:{{sammansättningar|{{länk|sv|grammatikfel, grammatikregel, grammatikövning, skolgrammatik, valensgrammatik}}}}
====Översättningar====
{{ö-topp|språks uppbyggnad}}
*aragonska: {{ö|an|gramatica}}
*asturiska: {{ö|ast|gramática|f}}
*belarusiska: {{ö|be|граматыка|f}}
*bokmål: {{ö+|no|grammatikk}}
*bretonska: {{ö+|br|yezhadur}}
*central bikol: {{ö|bcl|balanghayan}}
*danska: {{ö+|da|grammatik|u}}
*engelska: {{ö+|en|grammar}}
*esperanto: {{ö|eo|gramatiko}}
*extremaduriska: {{ö|ext|gramática|f}}
*finska: {{ö+|fi|kielioppi}}
*franska: {{ö+|fr|grammaire|f}}
*frisiska: {{ö+|fy|grammatika}}
*färöiska: {{ö+|fo|málfrøði}}
*galiciska: {{ö|gl|gramática}}
*grönländska: {{ö|kl|oqaasilerineq}}
*isländska: {{ö+|is|málfræði|f}}
*japanska: {{ö+|ja|文法}} ({{ö+|ja|ぶんぽう}}, ''([[bunpou]]'')
*jiddisch: {{ö+|yi|גראַמאַטיק|f|tr=gramatik}}, {{ö|yi|דיקדוק|tr=dikdek}}
*katalanska: {{ö+|ca|gramàtica|f}}
*kinesiska: {{ö+|zh|语法|tr=yǔfǎ}}
*kurdiska: {{ö+|ku|rêziman}}
*ladino: {{ö|lad|gramátika|f}}
*lakota: {{ö|lkt|iyápi wóopȟe}}
*meänkieli: {{ö|fit|kramatiikki}}
*nordsamiska: {{ö|se|giellaoahppa}}
*nynorska: {{ö|nn|grammatikk|m}}
*polska: {{ö+|pl|gramatyka|f}}
*ryska: {{ö+|ru|грамматика|f}}
*spanska: {{ö+|es|gramática|f}}
*sydsamiska: {{ö|sma|grammatihke}}
*tyska: {{ö+|de|Grammatik|f}}
*ukrainska: {{ö|uk|граматика|f}}
{{ö-botten}}
nyzypqhot09gsa4juo67sknlyg1z477
Alabama
0
46120
4157276
4138740
2026-10-24T01:16:15Z
Frodlekis
762
4157276
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-namn}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater}} en [[delstat]] i [[USA]]
====Översättningar====
{{ö-topp|delstat}}
*afrikaans: {{ö|af|Alabama}}
*albanska: {{ö+|sq|Alabama}}
*arabiska: {{ö|ar|ألاباما|f|tr=ʾalābāmā}}
*aragonska: {{ö|an|Alabama}}
*asturiska: {{ö|ast|Alabama}}
*azerbajdzjanska: {{ö+|az|Alabama}}
*bayerska: {{ö|bar|Alabama}}
*bikol: {{ö|bcl|Alabama}}
*bislama: {{ö|bi|Alabama}}
*bokmål: {{ö+|no|Alabama}}
*bosniska: {{ö|bs|Alabama}}
*bretonska: {{ö|br|Alabama}}
*engelska: {{ö+|en|Alabama}}
*fornengelska: {{ö|ang|Alabama}}
*frankoprovensalska: {{ö|frp|Alabama}}
*guaraní: {{ö|gn|Alavama}}
*hindi: {{ö|hi|अलाबामा|tr=alābāmā}}
*isländska: {{ö+|is|Alabama}}
*jiddisch: {{ö|yi|אַלאַבאַמאַ|tr=Alabama}}
*kapampangan: {{ö|pam|Alabama}}
*katalanska: {{ö|ca|Alabama}}
*kinesiska: {{ö+|zh|亞拉巴馬州|not=traditionellt}}, {{ö|zh|阿拉巴马州|not=förenklat}}, {{ö+|zh|阿拉巴馬州|not=Taiwan}}
*lågskotska: {{ö|sco|Alabama}}
*makedonska: {{ö|mk|Алабама|tr=Alabama}}
*nederländska: {{ö+|nl|Alabama}}
*nordsamiska: {{ö|se|Alabama}}
*novial: {{ö|nov|Alabama}}
*occitanska: {{ö+|oc|Alabama}}
*papiamento: {{ö|pap|Alabama}}
*persiska: {{ö+|fa|آلاباما|tr=âlâbâmâ}}
*piedmontesiska: {{ö|pms|Alabama}}
*polska: {{ö+|pl|Alabama}}
*portugisiska: {{ö+|pt|Alabama}}
*quechua: {{ö|qu|Alabama}}
*rumänska: {{ö+|ro|Alabama}}
*ryska: {{ö+|ru|Алабама|tr=Alabáma|f}}
*rätoromanska: {{ö|rm|Alabama}}
*samoanska: {{ö|sm|Alabama}}
*sardiska: {{ö|sc|Alabama}}
*schlesiska: {{ö|szl|Alabama}}
*serbiska: {{ö|sr|Алабама|f}}, {{ö+|sr|Alabama|f}}
*sicilianska: {{ö|scn|Alabama}}
*slovakiska: {{ö|sk|Alabama}}
*slovenska: {{ö|sl|Alabáma}}
*somaliska: {{ö|so|Alabama}}
*swahili: {{ö|sw|Alabama}}
*tagalog: {{ö|tl|Alabama}}
*thai: {{ö|th|แอละแบมา|tr=ɛɛ-lá-bɛɛ-mâa}}
*turkiska: {{ö+|tr|Alabama}}
*turkmeniska: {{ö|tk|Alabama}}
*tyska: {{ö+|de|Alabama}}
*urdu: {{ö|ur|الاباما}}
*uzbekiska: {{ö|uz|Alabama}}
*vietnamesiska: {{ö|vi|Alabama}}
*volapük: {{ö|vo|Lalabamän}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=af}} [[#Svenska|Alabama]]
==Albanska==
===Substantiv===
'''Alabama'''
#{{böjning|sq|subst|Alabamë}}
==Aragonska==
===Substantiv===
{{subst|an}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=an}} [[#Svenska|Alabama]]
==Asturiska==
===Substantiv===
{{subst|ast}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=ast}} [[#Svenska|Alabama]]
==Azerbajdzjanska==
===Substantiv===
{{subst|az}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=az}} [[#Svenska|Alabama]]
==Bayerska==
===Substantiv===
{{subst|bar}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=bar}} [[#Svenska|Alabama]]
==Bislama==
===Substantiv===
{{subst|bi}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=bi}} [[#Svenska|Alabama]]
==Bokmål==
===Substantiv===
{{subst|no}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=no}} [[#Svenska|Alabama]], en [[delstat]] i [[USA]]
==Bosniska==
===Substantiv===
{{subst|bs}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=bs}} [[#Svenska|Alabama]]
==Bretonska==
===Substantiv===
{{subst|br}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=br}} [[#Svenska|Alabama]]
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=bcl}} [[#Svenska|Alabama]]
==Engelska==
===Substantiv===
{{en-subst-namn}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=en}} [[#Svenska|Alabama]], en [[delstat]] i [[USA]]
==Fornengelska==
===Substantiv===
{{subst|ang}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=ang}} [[#Svenska|Alabama]]
==Isländska==
===Substantiv===
{{subst|is}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=is}} [[#Svenska|Alabama]]
==Kapampangan==
===Substantiv===
{{subst|pam}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=pam}} [[#Svenska|Alabama]]
==Katalanska==
===Substantiv===
{{subst|ca}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=ca}} [[#Svenska|Alabama]]
==Nederländska==
===Substantiv===
{{subst|nl}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=nl}} [[#Svenska|Alabama]]
==Occitanska==
===Substantiv===
{{subst|oc}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=oc}} [[#Svenska|Alabama]]
==Serbiska==
===Substantiv===
{{subst|sr}}
'''Alabàma''' {{f}} ([[Алабама|Алаба̀ма]])
#{{tagg|kat=amerikanska delstater|språk=sr}} [[#Svenska|Alabama]]
==Spanska==
===Substantiv===
{{subst|es}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=es}} [[#Svenska|Albama]]
==Tyska==
===Substantiv===
{{subst|de}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=de}} [[#Svenska|Albama]]
==Vietnamesiska==
===Substantiv===
{{subst|vi}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=vi}} [[#Svenska|Alabama]]
ofqvicjswbwzhqpz72hcbuyfnzjxlvh
4157325
4157276
2026-10-24T01:43:28Z
Frodlekis
762
4157325
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-namn}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater}} en [[delstat]] i [[USA]]
====Översättningar====
{{ö-topp|delstat}}
*afrikaans: {{ö|af|Alabama}}
*albanska: {{ö+|sq|Alabama}}
*arabiska: {{ö|ar|ألاباما|f|tr=ʾalābāmā}}
*aragonska: {{ö|an|Alabama}}
*asturiska: {{ö|ast|Alabama}}
*azerbajdzjanska: {{ö+|az|Alabama}}
*bayerska: {{ö|bar|Alabama}}
*bislama: {{ö|bi|Alabama}}
*bokmål: {{ö+|no|Alabama}}
*bosniska: {{ö|bs|Alabama}}
*bretonska: {{ö|br|Alabama}}
*central bikol: {{ö|bcl|Alabama}}
*engelska: {{ö+|en|Alabama}}
*fornengelska: {{ö|ang|Alabama}}
*frankoprovensalska: {{ö|frp|Alabama}}
*guaraní: {{ö|gn|Alavama}}
*hindi: {{ö|hi|अलाबामा|tr=alābāmā}}
*isländska: {{ö+|is|Alabama}}
*jiddisch: {{ö|yi|אַלאַבאַמאַ|tr=Alabama}}
*kapampangan: {{ö|pam|Alabama}}
*katalanska: {{ö|ca|Alabama}}
*kinesiska: {{ö+|zh|亞拉巴馬州|not=traditionellt}}, {{ö|zh|阿拉巴马州|not=förenklat}}, {{ö+|zh|阿拉巴馬州|not=Taiwan}}
*lågskotska: {{ö|sco|Alabama}}
*makedonska: {{ö|mk|Алабама|tr=Alabama}}
*nederländska: {{ö+|nl|Alabama}}
*nordsamiska: {{ö|se|Alabama}}
*novial: {{ö|nov|Alabama}}
*occitanska: {{ö+|oc|Alabama}}
*papiamento: {{ö|pap|Alabama}}
*persiska: {{ö+|fa|آلاباما|tr=âlâbâmâ}}
*piedmontesiska: {{ö|pms|Alabama}}
*polska: {{ö+|pl|Alabama}}
*portugisiska: {{ö+|pt|Alabama}}
*quechua: {{ö|qu|Alabama}}
*rumänska: {{ö+|ro|Alabama}}
*ryska: {{ö+|ru|Алабама|tr=Alabáma|f}}
*rätoromanska: {{ö|rm|Alabama}}
*samoanska: {{ö|sm|Alabama}}
*sardiska: {{ö|sc|Alabama}}
*schlesiska: {{ö|szl|Alabama}}
*serbiska: {{ö|sr|Алабама|f}}, {{ö+|sr|Alabama|f}}
*sicilianska: {{ö|scn|Alabama}}
*slovakiska: {{ö|sk|Alabama}}
*slovenska: {{ö|sl|Alabáma}}
*somaliska: {{ö|so|Alabama}}
*swahili: {{ö|sw|Alabama}}
*tagalog: {{ö|tl|Alabama}}
*thai: {{ö|th|แอละแบมา|tr=ɛɛ-lá-bɛɛ-mâa}}
*turkiska: {{ö+|tr|Alabama}}
*turkmeniska: {{ö|tk|Alabama}}
*tyska: {{ö+|de|Alabama}}
*urdu: {{ö|ur|الاباما}}
*uzbekiska: {{ö|uz|Alabama}}
*vietnamesiska: {{ö|vi|Alabama}}
*volapük: {{ö|vo|Lalabamän}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=af}} [[#Svenska|Alabama]]
==Albanska==
===Substantiv===
'''Alabama'''
#{{böjning|sq|subst|Alabamë}}
==Aragonska==
===Substantiv===
{{subst|an}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=an}} [[#Svenska|Alabama]]
==Asturiska==
===Substantiv===
{{subst|ast}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=ast}} [[#Svenska|Alabama]]
==Azerbajdzjanska==
===Substantiv===
{{subst|az}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=az}} [[#Svenska|Alabama]]
==Bayerska==
===Substantiv===
{{subst|bar}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=bar}} [[#Svenska|Alabama]]
==Bislama==
===Substantiv===
{{subst|bi}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=bi}} [[#Svenska|Alabama]]
==Bokmål==
===Substantiv===
{{subst|no}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=no}} [[#Svenska|Alabama]], en [[delstat]] i [[USA]]
==Bosniska==
===Substantiv===
{{subst|bs}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=bs}} [[#Svenska|Alabama]]
==Bretonska==
===Substantiv===
{{subst|br}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=br}} [[#Svenska|Alabama]]
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=bcl}} [[#Svenska|Alabama]]
==Engelska==
===Substantiv===
{{en-subst-namn}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=en}} [[#Svenska|Alabama]], en [[delstat]] i [[USA]]
==Fornengelska==
===Substantiv===
{{subst|ang}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=ang}} [[#Svenska|Alabama]]
==Isländska==
===Substantiv===
{{subst|is}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=is}} [[#Svenska|Alabama]]
==Kapampangan==
===Substantiv===
{{subst|pam}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=pam}} [[#Svenska|Alabama]]
==Katalanska==
===Substantiv===
{{subst|ca}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=ca}} [[#Svenska|Alabama]]
==Nederländska==
===Substantiv===
{{subst|nl}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=nl}} [[#Svenska|Alabama]]
==Occitanska==
===Substantiv===
{{subst|oc}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=oc}} [[#Svenska|Alabama]]
==Serbiska==
===Substantiv===
{{subst|sr}}
'''Alabàma''' {{f}} ([[Алабама|Алаба̀ма]])
#{{tagg|kat=amerikanska delstater|språk=sr}} [[#Svenska|Alabama]]
==Spanska==
===Substantiv===
{{subst|es}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=es}} [[#Svenska|Albama]]
==Tyska==
===Substantiv===
{{subst|de}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=de}} [[#Svenska|Albama]]
==Vietnamesiska==
===Substantiv===
{{subst|vi}}
'''Alabama'''
#{{tagg|kat=amerikanska delstater|språk=vi}} [[#Svenska|Alabama]]
7d21igdmbj1q0tkmkrw2mfagirs8u4x
tacka
0
48675
4157145
4082232
2026-10-23T16:08:38Z
Frodlekis
762
+am: [[በግት]] (assisterat)
4157145
wikitext
text/x-wiki
{{wikipedia|Tacka (gjutning)}}
{{se även|täcka}}
==Svenska==
===Substantiv===
{{sv-subst-n-or|fog=|pluralrot=tack}}
'''tacka''' {{u}}
#{{tagg|kat=djurhonor}} [[hona]] av däggdjuret [[får]]
#:{{synonymer|[[fårhona]]}}
#:{{kohyponymer|[[bagge]], [[lamm]]}}
#:{{sammansättningar|[[skvallertacka]]}}
#:{{seäven-bring|Kvinnokön||Djur}}
#[[gjuta|gjutet]] stycke av [[metall]] eller annat [[material]] för fortsatt [[bearbetning]]
#:{{sammansättningar|[[bronstacka]], [[guldtacka]], [[järntacka]], [[koppartacka]], [[tackjärn]]}}
====Översättningar====
{{ö-topp|fårhona}}
*afrikaans: {{ö+|af|ooi}}, {{ö+|af|skaapooi}}
*amhariska: {{ö|am|በግት|f|tr=bägit}}
*bokmål: {{ö|no|søye|mf}}, {{ö|no|tikke|mf}}, {{ö|no|hunnsau|m}}
*engelska: {{ö+|en|ewe}}
*finska: {{ö+|fi|uuhi}}, {{ö|fi|emälammas}}
*fornengelska: {{ö|ang|ēowu}}
*franska: {{ö+|fr|brebis|f}}
*färöiska: {{ö|fo|ær|f}}
*isländska: {{ö+|is|ær|f}}
*italienska: {{ö+|it|pecora|f}}
*japanska: {{ö|ja|雌羊|tr=めひつじ, mehitsuji}}, {{ö|ja|牝羊|tr=めひつじ, mehitsuji}}
*katalanska: {{ö+|ca|ovella|f}}
*kroatiska: {{ö+|hr|ovca|f}}
*latin: {{ö+|la|ovis|f}}
*lågskotska: {{ö|sco|yowe}}
*nederländska: {{ö+|nl|ooi|f}}
*nynorska: {{ö|nn|tikke|f}}, {{ö|nn|søye|f}}
*portugisiska: {{ö+|pt|ovelha|f}}
*romani: {{ö|rom|bakri|f}}
*rumänska: {{ö+|ro|oaie|f}}
*ryska: {{ö+|ru|овца́|f}}
*spanska: {{ö+|es|borrega|f}}, {{ö|es|cordera|f}}
*tyska: {{ö+|de|Mutterschaf|n}}, {{ö+|de|Aue|f}}
{{ö-botten}}
{{ö-topp|gjutet stycke av metall}}
*engelska: {{ö+|en|bullion}}, {{ö+|en|ingot}}
*finska: {{ö+|fi|harkko}}
*japanska: {{ö|ja|インゴット|tr=ingotto}}, {{ö|ja|鋳塊|tr=ちゅうかい, chūkai}}
*portugisiska: {{ö|pt|lingote|m}}
*rumänska: {{ö+|ro|lingou|n}}
*spanska: {{ö+|es|lingote|m}}
*tjeckiska: {{ö+|cs|ingot|m}}
*tyska: {{ö+|de|Barren|m}}
{{ö-botten}}
===Verb===
{{sv-verb-ar|rot=tack|perfpart=}}
'''tacka'''
#kort berätta för annan att man uppskattar något denna givit, eller gjort för, en; säga [[tack]]
#:''Han '''tackade''' för maten och gick sedan hem.''
#:''Har du '''tackat''' mormor för presenterna?''
#:{{besläktade ord|[[avtacka]], [[betacka]], [[tack]], [[tacksam]], [[tacksamhet]]}}
#:{{fraser|[[tacka ja]], [[tacka nej]]}}
====Översättningar====
{{ö-topp}}
*engelska: {{ö+|en|thank}}
*finska: {{ö+|fi|kiittää}}
*franska: {{ö+|fr|remercier}}
*isländska: {{ö+|is|þakka}}
*japanska: {{ö+|ja|感謝|text=感謝する|tr=かんしゃする, kansha suru}}
*polska: {{ö+|pl|dziękować}}
*portugisiska: {{ö+|pt|agradecer}}
*ryska: {{ö+|ru|благодарить}}
*sydsamiska: {{ö|sma|gudtsiestidh}}
*tyska: {{ö+|de|danken}}, {{ö+|de|bedanken}}
{{ö-botten}}
4bum7patup8htts0cwhvhsj4b0izyp6
häck
0
51231
4157189
4144413
2026-10-23T20:55:27Z
Tapio Toola
59668
+tr: [[çalı çit]]; +tr: [[siyeç]] (assisterat)
4157189
wikitext
text/x-wiki
{{se även|hack}}
{{wikipedia|Häck (trädgård)}}
{{wikipedia|häcklöpning|häck (sport)}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
{{media|Hecke Liguster hc.JPG|'''häck''' (1) av liguster}}
{{media|Fotothek df roe-neg 0006574 017 Bilder Sechs Läuferinnen beim Nehmen einer Hürde.jpg|ta '''häcken''' (sport)}}
{{media|Jimbo i Bergen - 14.jpg|häck [8], om än ganska kort}}
'''häck'''
#{{tagg|trädgård}} en tätt växande rad med [[buske|buskar]] eller vissa typer av [[träd]]; vanligen för att avgränsa ett område eller markstycke
#:''Den magnifika franska stilen, med klippta '''häckar'''.''
#:{{sammansättningar|[[buxbomshäck]], [[cypresshäck]], [[granhäck]], [[grannhäck]], [[häckbuske]], [[häckhöjd]], [[häckklippning]], [[häcksax]], [[häcktrimmer]], [[häckväxt]], [[ligusterhäck]], [[syrenhäck]]}}
#{{tagg|friidrott|text=kortform för '''[[häcklöpning]]'''}} en [[friidrott]]s[[gren]] med [[tio]] hinder (som skall hoppas över) utplacerade på en [[löparbana]], i regel inom en löpdistans av 100 meter (för damer) eller 110 meter (för herrar)
#:''Jamaikanen segrade i korta '''häcken'''.''
#:{{sammansättningar|[[häcklöpare]]}}
#{{tagg|friidrott}} ett av de [[hinder]] som används i ovanstående sport
#:''Det händer snabbt att man river en '''häck'''.''
#{{tagg|slang}} [[stuss]], en människas [[ändalykt]]
#:{{synonymer|[[bak]], [[stjärt]], [[ända]], [[ändalykt]]}}
#:{{fraser|[[jobba häcken av sig]], [[ta dig i häcken]]}}
#föremål som utgörs av [[spjälvärk]] eller [[gallervärk]], t.ex. foderbehållare med spjälor, bur e.d. av spjälverk för förvaring eller transport
#:''Ovanför krubban (vid vilken hästen bindes) lägges höet innanför en häck av spjälar, foder'''häck'''.''
#:{{fraser|[[ha häcken full]] - ''vara överlastad med arbete''}}
#den flata, stundom något utåtbuktade (konvexa) del av aktern på vissa träfartyg
#[[fågelhäck]]
#:''Vi tro ej att man vinner något genom att släppa fåglarna in i '''häcken''' alltför tidigt.''
#dubbel [[rad]] av [[soldat]]er (med lyfta svärd)
#:{{synonymer|[[spaljé]]}}
:{{avgränsare}}
:{{etymologi|Betydelse 1 är den ursprungliga, släkt med [[hage]] och [[inhägna]], motsvarande tyska [[Hecke]] (f) och engelska [[hedge]]. Av betydelse 5 (föremål av spjälverk) kommer olika byggnadskonstruktioner, burar, fordon, även aktern på fartyg (betydelse 6), som på tyska heter Heck (n). Betydelse 7 kommer av verbet [[häcka]], men påminner också om en bur (spjälkonstruktion).}}
====Översättningar====
{{ö-topp|1. rad med buskar}}
*engelska: {{ö+|en|hedge}}
*finska: {{ö+|fi|pensasaita}}, {{ö+|fi|kuusiaita|not=granhäck}}
*franska: {{ö+|fr|haie|f}}
*isländska: {{ö|is|hekk}}, {{ö+|is|limgerði|n}}
*italienska: {{ö+|it|siepe|f}}
*japanska: {{ö|ja|生け垣|tr=いけがき, ikegaki}}, {{ö|ja|垣根|tr=かきね, kakine}}
*nederländska: {{ö+|nl|heg}}
*polska: {{ö+|pl|żywopłot|m}}
*turkiska: {{ö|tr|çalı çit}}, {{ö|tr|siyeç}}
*tyska: {{ö+|de|Hecke|f}}
*ungerska: {{ö+|hu|sövény}}
{{ö-botten}}
{{ö-topp|2. idrottsgren}}
*engelska: {{ö+|en|hurdling}}
*finska: {{ö+|fi|aitajuoksu}}, {{ö+|fi|aidat|p}}
*nederländska: {{ö+|nl|hordelopen|n}}
*polska: {{ö|pl|płotki|p}}
*tyska: {{ö|de|Hürdenlauf|m}}
{{ö-botten}}
{{ö-topp|3. hinder i denna idrottsgren}}
*engelska: {{ö+|en|hurdle}}
*finska: {{ö+|fi|aita}}
*nederländska: {{ö+|nl|horde}}
*polska: {{ö|pl|płotki|p}}
*tyska: {{ö+|de|Hürde|f}}
{{ö-botten}}
{{ö-topp|4. stuss}}
*engelska: {{ö+|en|bum}}
*finska: {{ö+|fi|ahteri}}
*franska: {{ö+|fr|fesses|f|p}}
*nederländska: {{ö+|nl|achterste|n}}, {{ö+|nl|achterwerk|n}}
*polska: {{ö+|pl|tyłek|m}}, {{ö+|pl|pupa|f}}
*ryska: {{ö|ru|попа, жопа|tr=popa, zhopa}}
*tyska: {{ö+|de|Hintern|m}}
{{ö-botten}}
{{ö-topp|5. föremål som utgöras av spjälvärk eller gallervärk}}
{{ö-botten}}
{{ö-topp|6. akterskepp}}
*tyska: {{ö+|de|Heck|n}}, {{ö+|de|Achterschiff|n}}
{{ö-botten}}
{{ö-topp|7. fågelhäck}}
{{ö-botten}}
{{ö-topp|8. dubbel rad av soldater}}
*bokmål: {{ö|no|espalier|n}}, {{ö|no|spalier|n}}
*danska: {{ö|da|espalier|n}}, {{ö|da|spalier|n}}
*nynorska: {{ö|nn|espalier|n}}, {{ö|nn|spalier|n}}
*tyska: {{ö+|de|Hecke|f}}, {{ö+|de|Spalier}}
{{ö-botten}}
qpywf7vwpxxsn55dp9dkeqjqs264fsw
Wiktionary:Teknikvinden
4
70631
4157187
4150843
2026-10-23T20:37:11Z
Frodlekis
762
/* Ännu en bugg (om än oviktig) */ nytt avsnitt
4157187
wikitext
text/x-wiki
{{genväg|[[WT:TV]]}}
{{meddelande
| 1 = Välkommen till Teknikvinden!
| 2 = <span style="font-weight:normal;">Detta är samlingsplatsen för diskussioner som rör de mer tekniska aspekterna bakom Wiktionary-projektet, såsom mallar och moduler. Känn dig välkommen att delta!</span>
'''<span class="plainlinks">[http://sv.wiktionary.org/wiki/Wiktionary:Teknikvinden?&action=edit§ion=new Skapa ett nytt stycke för ditt meddelande]</span>'''
Gå till '''[[Wiktionary:Fikarummet|Fikarummet]]''' om du vill diskutera något som har med språk att göra, eller '''[[Wiktionary:Bybrunnen|Bybrunnen]]''' om du har mer allmänna frågor om Wiktionary.
<small>När teknikvinden börjar bli orimligt stor kan en äldre del diskussioner arkiveras. Men töm aldrig helt den här sidan.</small>
}}<br>
{{arkiv-under|*[[/Arkiv00]] <small>2008-01-18...2016-08-29</small>
*[[/Arkiv01]] <small>2017-01-16...2018-06-12</small>
*[[/Arkiv02]] <small>2018-11-12...2021-01-09</small>
*[[/Arkiv03]] <small>2021-01-02...2023-11-26</small>}}
__NEWSECTIONLINK__
__TOC__
== Teknisk lösning för att undvika osynliga tecken i artikeltitel? ==
Som jag nämnt ett par gånger tidigare, angående de vanligen osynliga tecknen som uppstår vid kopiering av skrift som skrivs från höger till vänster - dessa tecken ställer till det. Nu inte bara för mig. Dessa tecken som kan visas som röda pluppar i redigeringsgranskaren om man trycker på pennan, kan vi på något sätt göra så att de inte kan infogas i översättningsmallen? Och ännu viktigare, så att de inte därifrån osynligt ingår i ett nyskapat uppslags titel och adress? Jag har gjort många ändringar likt [https://sv.wiktionary.org/w/index.php?title=%D9%88%D8%AB%D9%82&diff=4005917&oldid=4005888 denna], och det enda sättet att uppmärksamma det är att inte interwikilänkarna visas till t.ex. en, he, ar Wiktionary. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 23 februari 2024 kl. 12.57 (CET)
Se t.ex. {{länk|ar|وثق}}. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 23 februari 2024 kl. 15.17 (CET)
:Jag har [https://sv.wiktionary.org/w/index.php?title=MediaWiki%3ATitleblacklist&diff=4007057&oldid=3831376 fixat] så att man inte längre kan skapa sidor som innehåller vissa osynliga tecken. För att skapa [[وثق]] måste man nu vara administratör.
:Det här är lurigt, så jag hoppas att jag inte har blockerat nåt som inte bör blockeras.
:Jag borde väl också försöka fixa skriptet där man lägger till översättningar, så att den varnar, blockerar eller autofixar. Osäker på vad som blir bäst. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 27 februari 2024 kl. 21.52 (CET)
== Kategorilistenavigering svarar inte korrekt? ==
Varför svarar inte uppslaget Kategori:Albanska/Alla uppslag korrekt på mallen {{mall|kategorilistenavigering|sq}}? 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 26 februari 2024 kl. 12.10 (CET)
:Vad är problemet? Jag tycker att det ser rätt ut. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 26 februari 2024 kl. 21.29 (CET)
:: Frodlekis har under tiden upptäckt att mallen är ynkligt konstruerat och kräver ca 10'000 undersidor. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 26 februari 2024 kl. 23.18 (CET)
:::{{=)}} Lite så var det, ja. Har fått en del hjälp av ChatGPT så slipper peta in bokstav efter bokstav i alla fall. Dock får jag inte mallen att hitta rätt för dubbelbokstäver som t.ex. dh för albanska. Det är iofs ett mindre problem. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 26 februari 2024 kl. 23.30 (CET)
::::Mallen fixad. För att det ska fungera, så måste man uppfylla sorteringsreglerna som står specade på [[Modul:lang/data]]. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 27 februari 2024 kl. 21.29 (CET)
:::::Ah, tack, det var där reglerna står. Jag utgick från Appendix alfabet samt engelska ''Category:Language lemmas''. Ska se över resterande nu, men tror jag inte hittade sorteringsfel i övrigt. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 27 februari 2024 kl. 21.42 (CET)
== Lua 101 ==
Hej! Har försökt sätta mig in i kodning mer och mer, men blir inte klok för varför test 05 inte fungerar på [[Modul:ca-subst/test]]? I synnerhet baserat på att test 04 går bra? 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 19 april 2024 kl. 18.39 (CEST)
:På rad 70 i [[Modul:ca-subst]] anropas funktionen <code>removeAccent</code> med den odefinierade variabeln <code>second_last_1</code> som argument. Argument används sedan i ett anrop till funktionen <code>mw.ustring.gsub</code> som förväntar sig en textsträng i den positionen, därav felet "Script error during testing: bad argument #1 to 'gsub' (string expected, got nil)" (odefinierade variabler är nil). Lösningen skulle vara att definiera <code>second_last_1</code>, baserat på namnet förmodar jag att den ska vara sidnamnets näst sista bokstav (på samma sätt som <code>last_1</code> är sista och <code>last_2</code> är de två sista). Det kan även vara bra att se över resten av rad 70, just nu står det <code>plur = removeAccent(second_last_1) .. "os"</code>, i de andra elseif-blocken konkateneras <code>pagename</code>, <code>without_last_1</code> eller <code>without_last_2</code> till början av <code>plur</code>, jag misstänker att detsamma ska göras här (troligen <code>without_last_2</code> men det har nog du bättre koll på). [[Användare:Andreasl01|Andreasl01]] ([[Användardiskussion:Andreasl01|diskussion]]) 19 april 2024 kl. 20.32 (CEST)
::Parallellt med detta har jag [https://sv.wiktionary.org/w/index.php?title=Modul%3Aca-subst&diff=4017939&oldid=4017256 fixat] problemet. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 19 april 2024 kl. 20.34 (CEST)
:::Glömde säga att jag tycker att det är jättebra att du experimenterar och fixar! [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 19 april 2024 kl. 20.35 (CEST)
::::{{=)}} [[Användare:Andreasl01|Andreasl01]] ([[Användardiskussion:Andreasl01|diskussion]]) 19 april 2024 kl. 21.01 (CEST)
== Översättningsmallen trasig ==
Jag får numera följande meddelande när jag klickar på grönlänkade översättningar för att skapa ny sida: <nowiki><strong class="error"><span class="scribunto-error" id="mw-scribunto-error-3346f18d">Luafel i Modul:entry på rad 95: parameter "h3" missing for entry_type = "translation".</span></strong></nowiki> Testat inloggad och utloggad, på två enheter i Safari, bägge med Sonoma 14.5. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 7 juni 2024 kl. 16.06 (CEST)
:Kanske relaterat till detta: https://www.mediawiki.org/wiki/Heading_HTML_changes ?
:Tänkte precis skriva att någon behöver uppdatera rubrikreglerna i [[MediaWiki:Common.css]]. (se t.ex. [[sula#Verb]], där översättningsrubriken inte längre ligger vid översättningsavsnittet) [[Användare:Andreasl01|Andreasl01]] ([[Användardiskussion:Andreasl01|diskussion]]) 7 juni 2024 kl. 16.52 (CEST)
::Om vi bara tar bort rad 66 (".find('.mw-headline')") i [[MediaWiki:Gadget-green_links.js]] tror jag det ska fungera. Men det är nog bäst att låta {{@|Skalman}} titta på det. [[Användare:Andreasl01|Andreasl01]] ([[Användardiskussion:Andreasl01|diskussion]]) 7 juni 2024 kl. 17.51 (CEST)
:::Toppen, tack för svar @[[Användare:Andreasl01|Andreasl01]]. Du väntar vi på det helt enkelt. Inga bekymmer för egen del. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 7 juni 2024 kl. 18.02 (CEST)
::::Tack båda två för buggrapporten och för hänvisningen till HTML-ändringarna. Tyvärr bestämmer användarens valda tema huruvida den gamla HTML-syntaxen eller den nya ska användas, så jag har anpassat så att bägge stöds. När den gamla syntaxen är helt borttagen från alla teman (om några veckor?), så ska jag förenkla koden så att bara den nya syntaxen stöds.
::::Ändringar gjorda hittills:
::::* [https://sv.wiktionary.org/w/index.php?title=MediaWiki:Gadget-green_links.js&curid=651117&diff=4035225&oldid=3944053 MediaWiki:Gadget-green links.js]
::::* [https://sv.wiktionary.org/w/index.php?title=MediaWiki:Gadget-prominent_interwikis.js&curid=942611&diff=4035235&oldid=3855980 MediaWiki:Gadget-prominent interwikis.js]
::::* [https://sv.wiktionary.org/w/index.php?title=MediaWiki:Common.css&curid=18417&diff=4035230&oldid=4008576 MediaWiki:Common.css]
::::Om ni hittar nåt mer som verkar buggigt, säg till så ska jag försöka fixa det också! [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 7 juni 2024 kl. 18.45 (CEST)
Har nya svenska artiklar (som [[olja på duk]]) slutat att visa "Översättningar..."? {{@|Skalman}} --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 15 juni 2024 kl. 16.25 (CEST)
:Tack för buggrapporten. Den här var lite krångligare att fixa, men jag tror att det ska funka nu. Om du ändå hittar nåt specialfall som inte funkar, säg till! [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 15 juni 2024 kl. 22.34 (CEST)
::Och för att jag ska kunna förenkla när alla teman använder den nya HTML-strukturen - här är ändringen: [https://sv.wiktionary.org/w/index.php?title=MediaWiki:Gadget-translation_editor_add_section.js&diff=prev&oldid=4039314 MediaWiki:Gadget-translation editor add section.js]. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 15 juni 2024 kl. 22.36 (CEST)
== Funktioner för svenska i wikifunctions ==
Hej, jag är intresserat av att förbättra svenska och danska lexikaliska data på Wikidata. Jag tänker börja skapa lite funktioner likt [https://wikifunctions.org/w/index.php?search=noun] och [https://wikifunctions.org/w/index.php?search=deklination] för olika typer av svenska substantiver så det går att böja dem maskinellt.
Jag tänker försöka mig på att skapa en funktion för varje av de sex deklinationerna som finns beskrivna här: [[:w:Substantiv#Böjning]]
Är nån här intresserat av att hänga på och skapa funktioner för svenska?
Se även [[Wiktionarydiskussion:Stilguide/Grammatik/Svenska/Substantiv]] [[Användare:So9q|So9q]] ([[Användardiskussion:So9q|diskussion]]) 14 juli 2024 kl. 17.43 (CEST)
: OK, det finns funktioner att hita ... men jag blir för närvarande mindre klok av dem. Plus som du skrev på annat ställe går det för närvarande '''EJ''' at anropa dessa från andra wikier. Fortsätt gärna diskussionen uteslutande här. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 14 juli 2024 kl. 17.53 (CEST)
:: @[[Användare:So9q|So9q]]: [https://wikifunctions.org/view/en/Z13013] [[f:Z13013]] Det verkar att vanliga dödliga användare inte kan redigera funktioner. Men kan en inte ens se källkoden? [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 14 juli 2024 kl. 18.05 (CEST)
:::Jag minns inte hur, men det går att efterfråga rätt att skapa och ändra funktioner. [[Användare:So9q|So9q]] ([[Användardiskussion:So9q|diskussion]]) 14 juli 2024 kl. 22.38 (CEST)
:Uppdatering: Nu har jag skapat ett gäng funktioner för svenska substantiv.
:Jag hittade oregelbundna substantiv som inte passade in i Svenska Akademins klassificering så jag skapade två egna klasser. Målet är att det ska vara busenkelt för användaren att välja den funktion som ger rätt böjningsmönster. Se [[f:User:So9q]] för en översikt. Jag har testat med alla substantiverna på [[:Kategori:Svenska/Oregelbundna substantiv]] och vad jag kan se klarar mina 8 pluralfunktioner av alla förekommande fall nu :)
:Jag välkomnar återkoppling och hjälp från er, låt oss skapa funktioner tillsammans som täcker alla former av alla svenska ordklasser, det är kul! :) [[Användare:So9q|So9q]] ([[Användardiskussion:So9q|diskussion]]) 17 juli 2024 kl. 04.49 (CEST)
::Fast kan valet av rätt funktion (hos oss: rätt mall) någonsin bli busenkelt? För ryska, ukrainska, belarusiska har vi (jag) i princip gett upp och räknar upp alla böjningsformer i stället för att försöka välja rätt mall (funktion) och utvärdera om det blev rätt. Man måste nog vara infödd modersmålstalare för att kunna bedöma det utan att sitta och detaljkolla mot en pålitlig källa. Om valet vore busenkelt, skulle vi se en massa misstag i stil med pojkerna och ekerarna, när någon som kan språket halvbra har gissat vilken som är rätt böjning. --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 17 juli 2024 kl. 13.59 (CEST)
::: Modellen med 4 böjningsmönster för substantiv är ett skämt. Det finns ca 20 till 50, beroende på hur många en vill ha i klassen "övriga". Katten [[:Kategori:Svenska/Oregelbundna substantiv]] används tyvärr inte konsequent: [[afton]], [[fängelse]], [[täckelse]], [[öra]], [[öga]], [[hammare]], [[plektrum]] och många fler. [https://www.wikifunctions.org/view/en/Z17826 Z17826] koden syns nu och går även att redigera. Vad blir av "[[glädje]]", "[[musik]]" eller "[[humus]]" eller "[[hummus]]"? [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 17 juli 2024 kl. 17.10 (CEST)
::::Jag är benägen att hålla med. Tack för listan. Jag fixade https://www.wikifunctions.org/view/en/Z17721 så den kan hantera afton. [[Användare:So9q|So9q]] ([[Användardiskussion:So9q|diskussion]]) 19 juli 2024 kl. 10.17 (CEST)
::::Fängelse funkar nu. Täckelse ok. Öra & öga ok.
::::hammer och plektrum har flera pluralformer så jag skapade [[wikifunctions:Z18002|Z18002]]. Jag skulle vilja varna användaren när den anges som input, men det går inte än att kalla funktioner mellan WF funktioner.
::::För singulare tantrum som musik, m.fl. skapade jag [[wikifunctions:Z18006|Z18006]]
::::Lägg gärna till lämpliga testar om ni hittar ord som funktionerna borde klara av. [[Användare:So9q|So9q]] ([[Användardiskussion:So9q|diskussion]]) 19 juli 2024 kl. 15.41 (CEST)
:Uppdatering: endast två funktioner kvar tills alla svenska substantiver täcks!
:Svenska substantiver är de mest komplicerade av alla språk som det finns funktioner för än så länge i Wikifunctions vad jag kan se i katalogen. Mycket mera komplicerade av svenska verb som bara har 4 grupper för böjning om jag förstått rätt.
:Nu kanske ni undrar: hur vet användaren vilken funktion som ger rätt böjningsmönster för ett givet substantiv? Det går att skapa en funktion för det om man vill också. Det tänker jag dock inte göra utan lämnar det till en modig och kanske ännu lite mera grammatisk kunnig själ 😀
:Jag tänker använda funktionerna till Wikidata Lexeme Forms där vi behöver skapa nya former för alla nio klasser plus en form for singulare tantrum. [[Användare:So9q|So9q]] ([[Användardiskussion:So9q|diskussion]]) 20 juli 2024 kl. 07.34 (CEST)
:: Ungefär samma gäller för verb. Det blir ca 20 till 50 mönster, beroende på hur många en vill ha i klassen "övriga". Några jobbiga verb: [[bli]], [[stjäla]], [[gala]], [[heta]], [[vara]] (två betydelser), [[sticka]] (två betydelser), [[måste]], [[sluta]], [[be]]. Och kom på ett jobbigt substantiv till: [[vimmel]]. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 21 juli 2024 kl. 22.18 (CEST)
:::Jag la till två uttalanden på [[wikidata:Lexeme:L473175]]. Dessa behövs när vi skapar funktioner på Wikifunctions framledes så systemet vet hur substantiven funkar i meningar när text ska genereras.
:::Mina substantivfunktioner är förresten bara för att hjälpa folk som skapar eller redigerar lexem på Wikidata, inte för att generera text. De måste således inte nödvändigtvis hantera alla udda fall. Jag skapade 3 nya klasser mest för att visa att Svenska Akademien inte gjort klasser som täcker alla vanliga substantiv.
:::Jag ogillar personligen när folk utger sig för att vara experter och sakkunniga och sen inte håller måttet.
:::Svenska Akademien ligger långt efter när det gäller öppna data om svenskan. Det drabbar dagligen alla som försöker lära sig svenska och saknar bra data och APIer så är pålitliga och lättanvända.
:::Danskarna ligger steget före och har skapat öppna data om språket som gagnar samhället. [[Användare:So9q|So9q]] ([[Användardiskussion:So9q|diskussion]]) 23 juli 2024 kl. 09.07 (CEST)
:::Ditt exempel sticka är intressant. Som syns här finns två lexem redan https://ordia.toolforge.org/search?q=sticka
:::Frågan är då hur ett system som skapar meningar ska veta vilken som används?
:::Jag har inget bra svar på den frågan.
:::Kanske kan systemet fråga om vilken betydelse av sticka som avses av användaren, kanske kan det själv deducere det från input. I dagsläget har vi AIer som chatgpt som endast är byggt på statistik, inte på bra och tillförlitlig språkdata och funktioner skapade av människor med output som går att lita på. [[Användare:So9q|So9q]] ([[Användardiskussion:So9q|diskussion]]) 23 juli 2024 kl. 09.15 (CEST)
== User:Ba(by)bel_AutoCreate ==
Boten är [[:m:Special:CentralAuth/Babel_AutoCreate|blockerad på bara ca 32 wikier]]. Knepet med <nowiki>{{!}}</nowiki> slutade fungera under år 2022, och sedan dess skapade boten trasiga kategorier. Nu har jag minimalfixat problemet inom [[Mall:kategorinavigering-användare]]. Någon lösning som skulle kunna appliceras på [[MediaWiki:Babel-autocreate-text-main]] och [[MediaWiki:Babel-autocreate-text-levels]] har jag inte hittat, exakt alla försök slog fel. [[:eo:Template:kat|På eo wikitionary finns en bättre mall]] som inte kräver några parametrar alls. Tyvärr måste även den testa för ns 8. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 9 november 2024 kl. 16.59 (CET)
== Mera kompletta och korrekta konjugationstabeller ==
Jag har inte lyckats hitta in i redigeringen av konjugationstabellerna, där jag har upptäckt felaktigheter och brister som behöver korrigeras, och där hela modi saknas. Ett exempel: under "ta" finns talspråksformen "tatt", vilket väl är ok, antar jag, då den är markerad som sådan, men även "tagandes" under presens particip; varför stoppar man in genitivformen av ett substantiverat adjektiv - eller substantiverad presens particip, om man så vill - i en tabell över verbformer? Däremot saknas såväl "tage" som "toge", samt för den delen även "tagom", som gärna finge förses med tag "åld", men icke desto mindre borde, eller bör, finnas med för referens i sin egenskap av en obsolet, men dock historisk aspekt på det svenska språket. Jämför t.ex. franskan, som oförskräckt tar med ålderdomliga, litterära verbformer, såvitt jag med mina begränsade kunskaper i detta språk kan se. Vad referenser till baskiska och andra obesläktade språk har med saken att göra skulle jag också gärna vilja ha redaktörernas hjälp med att förstå. [[Användare:Tochar|Tochar]] ([[Användardiskussion:Tochar|diskussion]]) 11 november 2024 kl. 08.51 (CET)
:> har inte lyckats hitta in i redigeringen av konjugationstabellerna
:: {{mall|sv-verb-ar}}
:> upptäckt felaktigheter och brister som behöver korrigeras
: ...
:> hela modi saknas. Ett exempel: under "ta" finns talspråksformen
: ...
:> saknas såväl "tage" som "toge", samt för den delen även "tagom"
: Jag kan inte se några felaktigheter eller brister. Fornsvenska former tas väl med flit inte med.
:> varför stoppar man in genitivformen av ett substantiverat adjektiv - eller substantiverad presens particip
: Det är en obskyr verbform, ej ett substantiverat adjektiv.
: [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 11 november 2024 kl. 17.14 (CET)
::@[[Användare:Taylor 49|Taylor 49]] Bara en kort inflik, pluralformer var i bruk både i tal (dialektalt) och skrift (riksspråkligt) in på mitten av 1900-talet. Det är alltså svenska vi talar om, inte fornsvenska. Se för referens [https://www.uu.se/nyheter/2022/2022-03-15-darfor-forsvann-verbens-pluralformer Uppsala Universitets korta artikel här]. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 11 november 2024 kl. 17.32 (CET)
::...skriftligen var verbens pluralböjning norm fram tills 1945. Se [https://spraktidningen.se/artiklar/sa-dogo-svenskans-pluralformer/ Språktidningen]. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 11 november 2024 kl. 17.36 (CET)
:På tal om presensparticip med ''-s'' så beskrivs det mer ingående i Svenska Akademiens Grammatik ([https://svenska.se/SAG_Volym_2.pdf#page=618 Volym 2, Particip § 31]). Det kan naturligtvis diskuteras om det borde vara en del av mallarna. Själv tycker jag det är onödigt, men det är inte direkt en kulle jag är villig att dö på, om jag säger så. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 17 november 2024 kl. 05.28 (CET)
== Layout kring "se artikel på en:wikt" ==
Rutan gör att rubriken bara går plats med en bokstav på rad. Den skrivs på vertikalen. Var kan dela bild enkelt? –[[User_talk:Moberg|d]][[User:Moberg|Moberg]] 26 november 2024 kl. 16.23 (CET)
: Varför nämner du inte åtminstone en drabbad sida? Skärmdump kan laddas upp till Wikimedia Commons eller "imgbb.com". [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 27 november 2024 kl. 20.53 (CET)
== Alt+Shift+E för redigering ==
Hej!
Jag ser att det nya temat nu har kommit till Wiktionary.
Det fungerar över lag bra, men det finns några saker som stör mig, i synnerhet det här: Jag kan inte längre redigera en sida genom att trycka Alt+Shift+E. Nu måste jag följa upp kommandot med Enter (vilket alltså är dubbelt så många kortkommandon för samma åtgärd). Alt+Shift+E flyttar nämligen fokus till knappen "Redigera", men klickar inte på den. Kan detta åtgärdas? --[[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 26 november 2024 kl. 23.52 (CET)
:Jag har också stört mig på det här, men kanske inte lika mycket som du. Det är tyvärr en [https://bugzilla.mozilla.org/show_bug.cgi?id=1797214 bugg i Firefox]. Om vi vill lösa det här på sv-wikt, så skulle man nog ta bort attributet <code>accesskey</code> från alla element som är osynliga. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 28 november 2024 kl. 22.58 (CET)
::@[[Användare:Andreas Rejbrand|Andreas Rejbrand]], jag har nu fixat detta i finessen "Fixa kortkommandon i Firefox (t.ex. Alt+Shift+E för redigering)". Kika gärna! [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 28 november 2024 kl. 23.29 (CET)
:::Strålande, det fungerar! Tack. --[[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 29 november 2024 kl. 15.53 (CET)
== Nya temat - bugg nya artiklar ==
När jag trycker på en grönlänkad översättning för att skapa uppslaget, så genereras inte det nya uppslaget automatiskt längre. Inte heller kan jag generera koden genom att fylla i fälten Definition, Språk, Ordklass ifall jag vill ha ''Syntax'' aktivt. Jag föredrar att ha den, så att formateringen blir mer lättöverskådlig. Det går fortfarande att generera kod om jag avaktiverar Syntax. Jag kör Safari på senaste Mac OS (Safari version 18.2 (20620.1.16.11.6) och Mac OS 15.2 Beta (24C5089c)). 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 30 november 2024 kl. 12.52 (CET)
:Buggen försvann från grönlänkar om jag avaktiverar att visa ''Syntax'', så det verkar vara just där skon klämmer. Kör på i svartvitt tills vidare, men ser gärna en lösning. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 30 november 2024 kl. 13.08 (CET)
::@[[Användare:Frodlekis|Frodlekis]], lurigt värre! Jag kan varken återskapa problemet med Firefox på Linux eller med Safari 18.1.1 på iPhone - på dessa enheter funkar allt som vanligt för mig.
::Har du nån annan webbläsare installerad på datorn? Kan du kika om problemet finns där också? [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 1 december 2024 kl. 00.39 (CET)
:::Jag ska försöka kika på det imorgon! 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 27 december 2024 kl. 03.28 (CET)
== technical problems in the Swedish Wiktionary ==
:''Discussion moved to [[WT:BB#technical problems in the Swedish Wiktionary]].''
== Special:Uppladdning ==
[[Special:Uppladdning]] --> "Uppladdningsfunktionen är avstängd" Varifrån kommer texten? Går det att redigera den? [[phab:T9977]] [[Wiktionary:Bybrunnen/Arkiv9#Bilder]]. [[Hjälp:Ladda upp filer]] [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 21 december 2024 kl. 00.42 (CET)
:Text i gui:t kan hittas genom att lägga till <code>?uselang=qqx</code> i url:en, i det här fallet [https://sv.wiktionary.org/wiki/Special:Uppladdning?uselang=qqx]. Där framgår att texten kommer från [[MediaWiki:wikimedia-upload-nolicenses]]. Denna sida har inte definierats explicit på sv-wikt, så då kommer texten från dom inbyggda MediaWiki-texterna eller andra inbyggda tillägg till MediaWiki. Dessa texter definieras [https://translatewiki.net/wiki/MediaWiki:Wikimedia-upload-nolicenses/sv på TranslateWiki], och gör man en ändring där, så slår det igenom till sv-wikt och andra Wikimedia-wikier inom några dagar (tror jag).
:Om du ska fixa nåt specifikt för sv-wikt så kan du ändra/skapa [[MediaWiki:wikimedia-upload-nolicenses]], om du ska fixa stavfel/grammatik så gör du det på [https://translatewiki.net/wiki/MediaWiki:Wikimedia-upload-nolicenses/sv TranslateWiki], och om du vill få den ursprungliga engelska texten ändrad (så att också den svenska texten så småningom kan ändras) så måste du be om det på [[phab:|Phabricator]]. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 27 december 2024 kl. 21.46 (CET)
:: @[[User:Skalman]] Tack. Jag har lite tagit bort olämpliga tips. Men jag skulle gärna visa sådant: [https://commons.wikimedia.org/w/index.php?title=File:OACA_Arena_in_December_2024.jpg&action=edit]. Går det att få tag på filnamnet? [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 27 december 2024 kl. 22.12 (CET)
:::Jag förstår inte riktigt vad du menar, men kanske är du ute efter <code><nowiki>{{FULLPAGENAME}}/{{PAGENAME}}</nowiki></code>? Om inte, kan du förklara på vilken url du vill visa vilken text? [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 27 december 2024 kl. 23.21 (CET)
:::: Efter test: <code><nowiki>{{FULLPAGENAME}}/{{PAGENAME}}</nowiki></code> funkar inte (ger "Special:Uppladdning"), och <code><nowiki>$1</nowiki></code> funkar inte (ger "$1" bokstavligen). Efter att ha klickat på en icke-existerande fil, kommer jag till <code><nowiki>https://sv.wiktionary.org/w/index.php?title=Special:Uppladdning&wpDestFile=finnsej.gif</nowiki></code>. Hur kan jag få ut det som står efter "wpDestFile="? Som skrivet ovan, vill jag visa länkar [https://commons.wikimedia.org/w/index.php?title=File:finnsej.gif&action=edit] eller [https://commons.wikimedia.org/w/index.php?title=File:OACA_Arena_in_December_2024.jpg&action=edit] och [https://sv.wiktionary.org/w/index.php?title=File:finnsej.gif&action=edit] så att det går att enkelt kolla ifall filen kanske hade funnits men har raderats (när, av vem, varför, till förmån för vad, ...). [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 27 december 2024 kl. 23.50 (CET)
:::::Det finns nog inget sätt att få tag i <code>wpDestFile</code> utan att använda en finess.
:::::Jag tolkar det som att [[mw:Manual:$wgUploadMissingFileUrl]] styr vart rödlänkar går. Kanske vore det bättre att be Wikimedia om att rödlänkar ska gå till t.ex. [https://commons.wikimedia.org/w/index.php?title=Special:Upload&wpDestFile=OACA_Arena_in_December_2024.jpg] (användarens språk eller engelska) eller [https://commons.wikimedia.org/w/index.php?title=Special:Upload&uselang=sv&wpDestFile=OACA_Arena_in_December_2024.jpg] (för svenska)? Vad tycker du? [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 2 januari 2025 kl. 09.56 (CET)
:::::: Då går det väl inte att lösa detta lokalt (utan krånglig finess), men att redigera [[mw:Manual:$wgUploadMissingFileUrl|$wgUploadMissingFileUrl]] som visat ovan för "användarens språk eller engelska" är exakt det som jag har varit ute efter sedan början. [[Special:Bidrag/CommonsDelinker|döda filer]] [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 3 januari 2025 kl. 00.40 (CET)
== Phabricator request: Please edit "$wgUploadMissingFileUrl" for sv wiktionary ==
Proposal: Edit "$wgUploadMissingFileUrl" for sv wiktionary changing it to <code><nowiki>https://commons.wikimedia.org/w/index.php?title=Special:Upload</nowiki></code>. Purpose: show a more useful message when a user clicks a non-existent file. The task at phabricator will get created later when there is consensus here. @[[User:Skalman]], @[[User:LA2]], @[[User:Andreas Rejbrand]], @[[User:Frodlekis]], @[[User:Tommy Kronkvist]] [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 3 januari 2025 kl. 00.40 (CET)
:: Begäran skapad: [[phab:T383452]] @[[User:LA2]], @[[User:Andreas Rejbrand]], @[[User:Frodlekis]], @[[User:Tommy Kronkvist]] Vill någon yttra sig? [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 11 januari 2025 kl. 00.35 (CET)
::: Jag har nu testat med mitt alternativa konto (icke-admin). Icke-administratörer ser följnade "Permission error You do not have permission to upload this file, for the following reason: The action you have requested is limited to users in the group: Administrators." medan administratörer ser följnade: "Uppladdningsfunktionen är avstängd Lokal uppladdning av filer till denna wiki är avaktiverad. Vänligen ladda upp till Wikimedia Commons. Se Hjälp:Ladda upp filer. Tillbaka till Wiktionary:Huvudsida." [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 11 januari 2025 kl. 16.07 (CET)
: '''Support''' as the proposer. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 3 januari 2025 kl. 00.40 (CET)
:'''Support'''. För att förtydliga för övriga, så är detta fortsättning på diskussionen ovan ([[#Special:Uppladdning]]). Resultatet skulle vara att rödlänken på [https://sv.wiktionary.org/w/index.php?title=l%C3%B6pband&oldid=2431671] skulle leda till [https://commons.wikimedia.org/w/index.php?title=Special:Upload&wpDestFile=Treadmill2.jpeg] ist.f. [https://sv.wiktionary.org/w/index.php?title=Special:Uppladdning&wpDestFile=Treadmill2.jpeg]. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 4 januari 2025 kl. 21.50 (CET)
:'''Support'''. Jag kan inte se Skalmans länk [https://sv.wiktionary.org/w/index.php?title=Special:Uppladdning&wpDestFile=Treadmill2.jpeg] enligt ovan (eftersom jag inte är administratör) men på det stora hela verkar det vara en enkel och bra lösning. –[[Användare:Tommy Kronkvist|Tommy Kronkvist]] ([[Användardiskussion:Tommy Kronkvist|diskussion]]), 11 januari 2025 kl. 15.56 (CET).
: '''Support'''. Hela föregående diskussionen var för mig i princip obegriplig, så jag vill tacka Skalman för förtydligandet. Det verkar logiskt att användaren hänvisas till denna plats istället. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 11 januari 2025 kl. 16.00 (CET)
:: {{klar}} (med viss fördröjning ...) [https://sv.wiktionary.org/w/index.php?title=l%C3%B6pband&oldid=2431671 test: klicka på rödlänken] [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 8 februari 2025 kl. 00.14 (CET)
== Alfabetisk ordning ÅÄÖ ==
Hur kan jag rätta till den alfabetiska ordningen för kategorier som ''[[:Kategori:Svenska/Termer belagda sedan 1400-talet]]''? För just svenska är det ÅÄÖ som hamnar fel, för andra språk har jag ibland upptäckt motsvarande problematik, men minns inte i vilken kategori detta var (men tror inte det var dateringskategorierna). 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 9 februari 2025 kl. 16.49 (CET)
:{{modul|belagt}} behöver använda {{modul|sort}}. @[[Användare:Taylor 49|Taylor 49]], är det här nåt du kan fixa? [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 9 februari 2025 kl. 22.05 (CET)
:: @[[User:Skalman]] Jo jag aka fixa det (men ej idag). Förresten, på {{modul|sort}} står det " ''Exempelvis sorteras ä och ö framför å, vilket blir fel för svenska'' " vilket inte verkar stämma. <big>ä $C3,$A4 å $C3,$A5 ö $C3,$B6</big>. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 9 februari 2025 kl. 23.04 (CET)
:::@[[Användare:Taylor 49|Taylor 49]], bra hittat, jag har fixat formuleringen. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 9 februari 2025 kl. 23.49 (CET)
:::: @[[User:Skalman]] @[[User:Frodlekis]] {{klar}} '''b''' och '''sort''' (lite småaktigt med öåä men gjort ändå/åndä) [https://linkcount.toolforge.org/?project=sv.wiktionary.org&page=Mall:belagt bara 2'853 transklusioner] [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 23 februari 2025 kl. 19.51 (CET)
== Önskelista "Modul:belagt" ==
@[[User:Frodlekis]]
* använd "Modul:sort"
* parmetervärde "b" för att börja med versal men ingen punkt i slutet
* ändra kategoriseringsschemat ?? (detta kan göras, men påverkar existerande kategorier, och bör därför inte ändras ofta eller godtycligt, dvs en ändring måste vara väl övervägd och precis beskriven)
[[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 9 februari 2025 kl. 23.13 (CET)
== <span lang="en" dir="ltr">Migration to Parsoid</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
Hello everyone! I am glad to inform you that as the next step in the [[mw:Special:MyLanguage/Parsoid/Parser Unification|Parser Unification]] project, Parsoid will soon be turned on as the default article renderer on your Wiktionary. We are gradually increasing the number of wikis using Parsoid, with the intention of making it the default wikitext parser for MediaWiki's next long-term support release. This will make our wikis more reliable and consistent for editors, readers, and tools to use, as well as making the development of future wikitext features easier.
If this transition disrupts your workflow, don’t worry! You can still opt out through a user preference or turn Parsoid off on the current page using the Tools submenu, as described in the [[mw:Special:MyLanguage/Help:Extension:ParserMigration|Extension:ParserMigration]] documentation.
There is [[mw:Special:MyLanguage/Parsoid/Parser_Unification/Confidence_Framework|more information about our roll-out strategy]] available, including the testing done before we turn on Parsoid for a new wiki.
To report bugs and issues, please look at our [[mw:Special:MyLanguage/Parsoid/Parser Unification/Known Issues|known issues]] documentation and if you found a new bug please create a phab ticket and tag the [[phab:project/view/5846|Content Transform Team in Phabricator]].
<section end="announcement-content" />
</div>
<em>[[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Parsoid Read Views/Wiktionary Announcement|{{MediaWiki:Please-translate}}]]</em>
<bdi lang="en" dir="ltr">[[mw:User:CAnanian (WMF)|C. Scott Ananian]] (Parsoid technical lead)</bdi> 12 februari 2025 kl. 21.48 (CET)
<!-- Meddelande skickades av User:CAnanian (WMF)@metawiki med hjälp av listan på https://meta.wikimedia.org/w/index.php?title=Wikimedia_Foundation/Product_and_Technology/Parsoid_Read_Views/2025-02-12_Wiktionaries&oldid=28256121 -->
== Översättningar ==
Länken dyker inte längre upp för att skapa ett avsnitt för Översättningar. [[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 19 februari 2025 kl. 12.10 (CET)
:Tack för felrapporten. Detta har inträffat pga ovanstående ändring, [[#Migration to Parsoid]]. Jag fixar förhoppningsvis finessen senare idag, alternativt senare i veckan. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 19 februari 2025 kl. 12.56 (CET)
::[https://sv.wiktionary.org/w/index.php?title=MediaWiki:Gadget-translation_editor_add_section.js&diff=prev&oldid=4100825 Fixat]. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 19 februari 2025 kl. 21.08 (CET)
::: Inte helt. Nu syns länken <code>Lägg till översättningar...</code> även då sådana redan finns ([[röv|till exempel här]]). [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 21 februari 2025 kl. 00.51 (CET)
::::Hmm, det där hade jag missat. Det var tydligen en massa fler ändringar som gjorts än vad jag först såg. Jag har tills vidare avaktiverat den här finessen. Jag ska försöka fixa det igen inom några dagar. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 22 februari 2025 kl. 00.40 (CET)
== Grönlänkar för böjningar skapar tomma sidor ==
När jag klickar på en grön länk för en böjning av ett ord, får jag en ny sida utan innehåll. Exempel: [[гармата]]. (Kanske relaterat till ovanstående?) [[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 27 februari 2025 kl. 15.37 (CET)
: Troligast ja. Funkar för svenska verb, trasigt för svenska substantiv, engelska substantiv, engelska verb. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 27 februari 2025 kl. 16.46 (CET)
::Det är trasigt för {{mall|sv-subst-n-ar}}, t.ex. [[snäckbank]], men fungerar för {{mall|sv-subst-n-oräkn}}, t.ex. [[klimatförsämring]]. Detta kanske kan vara en ledtråd i felsökningen? --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 5 mars 2025 kl. 23.24 (CET)
:Jag har haft samma problem. Men när jag valde ''never (opt-out)'' i mina användarinställningar > redigering > utvecklarverktyg för Parsoid så fungerade det igen. [[Användare:Pontianejtack|Pontianejtack]] ([[Användardiskussion:Pontianejtack|diskussion]]) 26 september 2025 kl. 11.19 (CEST)
::Tack! --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 26 september 2025 kl. 13.06 (CEST)
Det har gått två månader och inget händer. Hur svårt är det att få detta att fungera? Ska vi ropa in hjälp från ... ja, från vem? Wikimedia Foundation? --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 7 maj 2025 kl. 12.32 (CEST)
== ''[[-bordare]]'', hårt bindestreck ==
Om vi tittar i böjningsmallen för ''[[-bordare]]'' ser vi att vi får en radbrytning mellan bindestrecket och "bordarens" i bestämd form singular genitiv (åtminstone i Firefox, Windows 11 på min dator).
Detta är väl egentligen inte fel av webbläsaren, utan snarare är det så att vi borde använda U+2011: NON-BREAKING HYPHEN i stället för U+002D: HYPHEN-MINUS det här sammanhanget. Finns det möjlighet att göra så att böjningsmallen i artiklar med H3-rubriken ''Efterled'' som inleds med 002D automatiskt byter ut tecknet mot 2011? --[[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 15 mars 2025 kl. 13.45 (CET)
== Fel datum på huvudsidan ==
Den senaste månaden eller så har jag noterat att datumet på huvudsidan oftast är fel. T.ex. i dag, söndagen den 30 mars 2025, står det "tisdagen den 25 mars 2025" längst uppe till höger.
Det här ser inte särskilt bra ut.
Händer det här bara mig? --[[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 30 mars 2025 kl. 14.30 (CEST)
:Samma för mig, ser ''25 mars''. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 30 mars 2025 kl. 15.24 (CEST)
:: Ser dagens datum, ingen bugg. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 30 mars 2025 kl. 21.09 (CEST)
:::Idag är 3 april och förstasidan visade mig 26 mars, tills jag lade ?action=purge efter URLen, och då uppdaterades datumet. Vad är tanken med att lägga datumvisning på förstasidan? Är vi en datumkalender eller en ordbok? Alla siffror, som antalet uppslag kan ju lida av inaktualitet, eftersom sidan cachas, men detta är knappast en orsak till att också lägga dagens datum till inaktuella uppgifter. Vänligen, ta bort datumet från förstasidan. --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 3 april 2025 kl. 07.40 (CEST)
:::: '''Vote neutral'''. Ifall ingen protesterar då tar jag bort datumet. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 4 april 2025 kl. 00.30 (CEST)
:::::Jag ser fortfarande fel datum, och säkert fler med mig. Är av åsikten att i detta fall är ''inget datum'' är bättre felaktigt datum, som ger ett oprofessionellt intryck. Röstar för tillsvidare avlägsnande av dagens datum. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 14 april 2025 kl. 00.44 (CEST)
::::::Jag ser också fel datum. Men det här har inte varit något problem tidigare. Vad är det som har ändrats? Vet @[[Användare:Skalman|Skalman]]? --[[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) [[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 21 april 2025 kl. 13.09 (CEST)
== Bugg: Ligaturen և i översättningsmallen ändras till klassisk stavning ==
Hej! Jag har upptäckt ett litet men viktigt problem i systemet, när man klickar på grönlänkar i översättningsmallen. När man klickar på en grönlänk som innehåller den moderna armeniska ligaturen [[և]] (t.ex. i ordet [[արևադարձ]]), så omvandlas den automatiskt till klassisk stavning med två tecken: ե + ւ = եւ. Det innebär alltså att länken leder till ett annat uppslagsord än det är tänkt, ett som inte existerar i modern armeniska, vilket kan vara förvirrande eller leda till onödiga omdirigeringar.
Jag misstänker att detta är nåt som ligger i modulen bakom översättningsmallen, där man inte hanterar Unicode-ligaturen և i det här sammanhanget. 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 13 april 2025 kl. 14.00 (CEST)
:PS. jag har alltså lagt in korrekt stavning i översättningsmallen för "solros" som ''արևածաղիկ'', men trots att uppslaget redan existerar i identisk och korrekt form så blir det en grönlänk som automatiskt skapar den obsoleta stavningen. 🫠 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 13 april 2025 kl. 14.03 (CEST)
::: '''FEL''' [[արեւադարձ]] {{#invoke:utf8debug|ek|outctl=1101|արեւադարձ}}
<br>
:::: vs
<br>
::: '''RÄTT''' [[արևադարձ]] {{#invoke:utf8debug|ek|outctl=1101|արևադարձ}}
<br>
::: U+$0587 strular. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 13 april 2025 kl. 23.29 (CEST)
:::: [https://sv.wiktionary.org/w/index.php?title=Modul%3Alang%2Fdata&diff=4109569&oldid=4086452] {{klar}} [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 13 april 2025 kl. 23.51 (CEST)
:::::Du löste det! Tack, @[[Användare:Taylor 49|Taylor 49]]! 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 14 april 2025 kl. 00.40 (CEST)
== Böjningsuppslag skapas inte per automatik ==
Hej! Jag läste på någon sida (minns tyvärr inte vilken och nu kan jag inte hitta det) att man ''aldrig'' behöver skapa uppslag för böjningsformer manuellt, eftersom robotar sköter det automatiskt. Detta stämmer bevisligen dock inte, eftersom det finns åtskilliga uppslag där hela böjningstabellen är grön, trots att uppslaget i fråga ibland är flera år gammalt. Hur kommer detta sig? [[Användare:TheHidoo|TheHidoo]] ([[Användardiskussion:TheHidoo|diskussion]]) 16 maj 2025 kl. 17.17 (CEST)
: Det var för länge sedan botar gjorde detta. Sedan kom "finessen", men den är sönder nu pga Parsoid. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 26 maj 2025 kl. 16.33 (CEST)
::Okej, tack för info! Finns det någon plan på att lösa det? [[Användare:TheHidoo|TheHidoo]] ([[Användardiskussion:TheHidoo|diskussion]]) 30 maj 2025 kl. 21.07 (CEST)
:::Det är en skandal att det har fått vara trasigt så länge. Vi borde överväga att skaffa en bot som skapar böjningsuppslagen. Finns det någon vilande, som kan startas upp? Jag har bara gjort det på en.wikt för 15 år sedan, aldrig på sv.wikt. --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 9 juni 2025 kl. 00.31 (CEST)
::::Eftersom grönlänkar fungerar i {{mall|sv-subst-t-0}} men inte i {{mall|da-subst-t-0}}, är det möjligt att skriva om den senare till att använda samma mekanismer som den förra? Bäst vore förstås att fixa de mekanismer som används i danska mallen, men ingen verkar ju veta hur det ska gå till. --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 13 augusti 2025 kl. 22.16 (CEST)
::::: Det går säkert, i princip. Mall da använder "g-cell" medan sv använder "länka-b". [[Special:Användare/interface-admin]] [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 14 augusti 2025 kl. 17.55 (CEST)
:::::: Eller kan man skriva om g-cell så att den anropar länka-b? Då slipper man ändra i väldigt många andra mallar. --[[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 14 augusti 2025 kl. 18.00 (CEST)
:::::::[[Användare:Skalman]] anropas i brist på lösningar av grönlänksproblematiken! Kanske något för [[Användare:Skalbot]] att ta sig an? (Vet inte om man kan "@:a" folk så här på Wiktionary men värt ett försök!) [[Användare:TheHidoo|TheHidoo]] ([[Användardiskussion:TheHidoo|diskussion]]) 25 februari 2026 kl. 10.46 (CET)
:::::::: Inget botarbete, utan det ligger på Parsoid och JawaScript. Ping fungerar på alla wikier på samma sätt. Prova <code>&useparsoid=0</code>. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 25 februari 2026 kl. 23.24 (CET)
:::::::::Nu hänger jag inte riktigt med ... skulle det åligga Parsoid (som väl bara renderar webbsidan?) att skapa nya uppslag på svenska Wiktionary? Jag är helt okunnig inom webbutveckling men vi verkar vara överens om att böjningsuppslag tidigare skapades automatiskt med hjälp av botar men att så inte längre är fallet. Så varför inte låta en bot göra det igen? [[Användare:TheHidoo|TheHidoo]] ([[Användardiskussion:TheHidoo|diskussion]]) 10 mars 2026 kl. 13.31 (CET)
== Ny mindre bugg (finess "Källor") ==
När man skriver <nowiki>==Källor== kommer det väldigt hjälpsamt direkt radbyte + <references/>, men sedan idag har jag märkt att den i stället lägger till radbyte + "<references/>="</nowiki> 𐏐[[Användare:Frodlekis|Frodlekis]] ([[Användardiskussion:Frodlekis|✍]]) 26 maj 2025 kl. 15.12 (CEST)
: Kan inte reproducera detta. Inget extra likhetstecken <code><nowiki>=</nowiki></code> dyker upp. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 26 maj 2025 kl. 16.33 (CEST)
== Internationellt mest önskade ==
I [[Special:Önskade sidor|listan över mest önskade sidor]] (med flest rödlänkar till sig) vore det användbart att lägga till hur många språklänkar som den nya artikel skulle få. Är detta något som någon redan har gjort? Det krävs att man tar antalet språklänkar för varje ord ur Wikidata och lägger till siffran i dagens lista. [[Användare:LA2|LA2]] ([[Användardiskussion:LA2|diskussion]]) 10 augusti 2025 kl. 14.08 (CEST)
: Håller med att detta skulle vara till nytta, men måste rätta att antalet språklänkar för uppslag skulle hämtas från [[:mw:Extension:Cognate|Cognate]], ej från WikiData. [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 27 augusti 2025 kl. 18.11 (CEST)
== Källmallar ==
Hej, läste sidan Mallar/källmallar och fastande. Finns det ingen mall för källor/referenser till verk som inte är böcker? Kan man få in en referens i ett stycke utan att använda en källmall? [[Användare:Pontianejtack|Pontianejtack]] ([[Användardiskussion:Pontianejtack|diskussion]]) 21 mars 2026 kl. 15.24 (CET)
: Hej Pontianejtack! Det skulle absolut gå att skapa fler källmallar, om det finns ett behov. De som finns i dag har tillkommit efter hand när någon velat förenkla hänvisningar till en viss källa – i mitt fall har det framför allt varit olika ordböcker och lexikon på nätet. För andra typer av källor går det bra att skriva referensen direkt i <nowiki><ref>Språktidningen, 2025, ”Rubrrik"...</ref></nowiki> utan att använda en mall. Någon generell mall för exempelvis tidskrifts- eller tidningsreferenser har vi t.ex. inte haft behov av hittills. Vad var det för typ av källmall du saknade? Om du känner att en viss typ av källa används ofta är du också varmt välkommen att skapa en ny källmall. ᛫⟣[[Användare:Frodlekis|Frodlekis]]⟣᛫ ([[Användardiskussion:Frodlekis|✍]]) 2 juli 2026 kl. 01.31 (CEST)
== Tidy-funktion trasig ==
Jag upptäckte just nu runt midnatt att en av de bästa funktionerna i ''Tidy'' har gått sönder. Jag hoppas jag inte orsakat detta när jag uppdaterade några grammatikmallar ikväll. Den fiffiga funktionen att rätta eller lägga till parametern "språk=XX" i {{mall|tagg}} är nu plötsligt borta. Jag hoppas det inte var något som skedde i och med det jag skrev i mallarna {{mall|es-subst-f-es}}, {{mall|it-adj-e}} eller {{mall|it-subst-m}}... ᛫⟣[[Användare:Frodlekis|Frodlekis]]⟣᛫ ([[Användardiskussion:Frodlekis|✍]]) 2 juli 2026 kl. 01.21 (CEST)
:@[[Användare:Frodlekis|Frodlekis]] Alla uppslag med {{mall|tagg}} visas felaktigt. Den första definitionen har ingen etta innan sig utan den första mallen nedanför har istället en etta innan sig. Helt felaktigt. Är det relaterat till det? [[Användare:Jonteemil|Jonteemil]] ([[Användardiskussion:Jonteemil|diskussion]]) 9 augusti 2026 kl. 19.59 (CEST)
::Den här buggen har vi haft i många år, men tyvärr har den inte lösts. Det ser fult ut, men jag begriper mig inte på att ändra det. Tror att det beror på vilket operativsystem man har, men jag använder bara Mac/iOS och där ser det som du säkert vet ut som fan, haha. Skämt åsido, det är två separata buggar. ᛫⟣[[Användare:Frodlekis|Frodlekis]]⟣᛫ ([[Användardiskussion:Frodlekis|✍]]) 9 augusti 2026 kl. 20.25 (CEST)
== Ännu en bugg (om än oviktig) ==
Sedan ett tag tillbaka visas på förstasidan attspråken ungerska (0) · älvdalska (0) som om de inte har några uppslag. Varför blir det så? ᛫⟣[[Användare:Frodlekis|Frodlekis]]⟣᛫ ([[Användardiskussion:Frodlekis|✍]]) 23 oktober 2026 kl. 22.37 (CEST)
kr1cu6z9hab6939gnx2o0os31q54m28
ama
0
102935
4157309
4146471
2026-10-24T01:36:43Z
Frodlekis
762
4157309
wikitext
text/x-wiki
==Baskiska==
===Substantiv===
{{subst|eu}}
'''ama'''
#{{tagg|släktingar|kat=palindrom|språk=eu}} [[mor]], [[moder]], [[mamma]]
#:{{synonymer|[[amatxo]] ''(informellt)''}}
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''ama'''
#{{tagg|släktingar|kat=palindrom|språk=bcl}} [[far]], [[fader]], [[pappa]]
#:{{synonymer|[[papa]], [[tatay]], [[papay]]}}
==Ladino==
===Konjunktion===
{{konj|lad}}
'''ama'''
#{{tagg|kat=palindrom|språk=lad}} [[men]]
#:{{synonymer|[[pero]], [[ma]]}}
#:{{etymologi|Av {{härledning|lad|tr|ama}}, av {{härledning|lad|ar|أَمَّا|tr=ʾammā}}.}}
==Somaliska==
===Konjunktion===
{{konj|so}}
'''ama'''
#{{tagg|kat=palindrom|språk=so}} [[eller]]
==Spanska==
===Substantiv===
{{es-subst-f-s}}
'''ama'''
#[[husfru]], [[husmor]]
#[[husmor]], [[hushållerska]]
#:{{synonymer|[[ama de casa]]}}
#[[ägarinna]]
#:{{synonymer|[[dueña]]}}
#kvinnlig [[hyresvärd]]
:{{avgränsare}}
:{{besläktade ord|[[amo]]}}
:{{sammansättningar|[[ama de cría]], [[ama de llaves]]}}
===Verb===
'''ama'''
#{{tagg|kat=palindrom|språk=es}} {{böjning|es|verb|amar}}
==Turkiska==
===Konjunktion===
{{konj|tr}}
'''ama'''
#{{tagg|kat=palindrom|språk=tr}} [[men]]
4gsyrh24fsyh0cab55pvmvmtoix3i9t
Kategori:Svenska
14
108236
4157205
4132358
2026-10-23T21:55:32Z
Frodlekis
762
4157205
wikitext
text/x-wiki
{{kategorinavigering|Svenska}}
{{faktaruta språk}}
lqj7yq969i9q555anq7il49a6egaj1e
Kategori:Finska
14
108246
4157380
2981961
2026-10-24T04:32:01Z
Frodlekis
762
4157380
wikitext
text/x-wiki
{{kategorinavigering|Finska}}
{{faktaruta språk}}
jpdwexn8nk3w1ncvowszj9e47rgxxf0
Kategori:Afrikaans
14
108260
4157226
2981088
2026-10-23T23:00:27Z
Frodlekis
762
4157226
wikitext
text/x-wiki
{{kategorinavigering|Afrikaans}}
{{faktaruta språk}}
==Källor==
<references/>
7snnw03snx8n7kbf8rmezl5hyis67sv
Kategori:Ainu
14
108261
4157227
2981137
2026-10-23T23:01:35Z
Frodlekis
762
4157227
wikitext
text/x-wiki
{{kategorinavigering|Ainu}}
{{faktaruta språk}}
==Källor==
<references/>
clyxf2537tkbuvx446iwxemcjr4bura
Kategori:Albanska
14
108262
4157231
2981149
2026-10-23T23:06:20Z
Frodlekis
762
4157231
wikitext
text/x-wiki
{{kategorinavigering|Albanska}}
{{faktaruta språk}}
==Källor==
<references/>
7ir1wd1vrigvby8x4z3r4f1z8zktlgy
Kategori:Altaiska
14
108263
4157235
2981231
2026-10-23T23:12:24Z
Frodlekis
762
4157235
wikitext
text/x-wiki
{{kategorinavigering|Altaiska}}
{{faktaruta språk}}
==Källor==
<references/>
k34te8smwktxf8frza5eqkeq6ybmo22
Kategori:Amhariska
14
108264
4157236
2981234
2026-10-23T23:14:27Z
Frodlekis
762
4157236
wikitext
text/x-wiki
{{kategorinavigering|Amhariska}}
{{faktaruta språk}}
==Källor==
<references/>
o9l2usyukiszn3c7e301qy2p9jvcokn
Kategori:Arabiska
14
108265
4157241
2981257
2026-10-23T23:23:40Z
Frodlekis
762
4157241
wikitext
text/x-wiki
{{kategorinavigering|Arabiska}}
{{faktaruta språk}}
==Källor==
<references/>
q8tpwrin6l7q8hospdwo1oj24z9f6jj
Kategori:Aragonska
14
108266
4157246
2981289
2026-10-23T23:43:32Z
Frodlekis
762
4157246
wikitext
text/x-wiki
{{kategorinavigering|Aragonska}}
{{faktaruta språk}}
==Källor==
<references/>
nm6xtyxc0qwqs5ms94r71zc294jfvcz
Kategori:Armeniska
14
108267
4157249
2981313
2026-10-23T23:50:30Z
Frodlekis
762
4157249
wikitext
text/x-wiki
{{kategorinavigering|Armeniska}}
{{faktaruta språk}}
==Källor==
<references/>
c146x0z3aaeoas8i298q9dg2we1xk5z
Kategori:Asturiska
14
108268
4157252
2981363
2026-10-23T23:56:17Z
Frodlekis
762
4157252
wikitext
text/x-wiki
{{kategorinavigering|Asturiska}}
{{faktaruta språk}}
==Källor==
<references/>
fviz7ywz24wndudanvprd0nnt7lpaol
4157254
4157252
2026-10-24T00:01:42Z
Frodlekis
762
/* Källor */
4157254
wikitext
text/x-wiki
{{kategorinavigering|Asturiska}}
{{faktaruta språk}}
2va4krz809wcrbc6v3b52f664iakttb
Kategori:Avariska
14
108269
4157257
2981385
2026-10-24T00:11:45Z
Frodlekis
762
4157257
wikitext
text/x-wiki
{{kategorinavigering|Avariska}}
{{faktaruta språk}}
ak0595dn9a4x6vzr7cn6af1fufcsmdp
Kategori:Azerbajdzjanska
14
108270
4157256
2981393
2026-10-24T00:05:02Z
Frodlekis
762
4157256
wikitext
text/x-wiki
{{kategorinavigering|Azerbajdzjanska}}
{{faktaruta språk}}
g3hhfm1a0pi78w7thbfmn4yom6qm1nz
Kategori:Bambara
14
108271
4157261
2981415
2026-10-24T00:24:13Z
Frodlekis
762
4157261
wikitext
text/x-wiki
{{kategorinavigering|Bambara}}
{{faktaruta språk}}
99ut8pvyrcjqc1o81qdz8kra2v4mzrz
Kategori:Basjkiriska
14
108272
4157263
2981425
2026-10-24T00:31:05Z
Frodlekis
762
4157263
wikitext
text/x-wiki
{{kategorinavigering|Basjkiriska}}
{{faktaruta språk}}
q3t91ssz8xn1wnx4u1a6avymxh5syuj
Kategori:Baskiska
14
108273
4157264
2981436
2026-10-24T00:35:11Z
Frodlekis
762
4157264
wikitext
text/x-wiki
{{kategorinavigering|Baskiska}}
{{faktaruta språk}}
9twr975vcts7vw6cf7t0ih0nwxqn4gn
Kategori:Bengali
14
108274
4157271
2981498
2026-10-24T00:59:49Z
Frodlekis
762
4157271
wikitext
text/x-wiki
{{kategorinavigering|Bengali}}
{{faktaruta språk}}
a5tq699vcyii592lxl2e40aacm7cs10
Kategori:Bidjara
14
108275
4157272
466860
2026-10-24T01:03:55Z
Frodlekis
762
4157272
wikitext
text/x-wiki
{{kategorinavigering|Bidjara}}
{{faktaruta språk}}
6r062umzpuawu7izwc3leqyxdx9jfp9
Kategori:Bokmål
14
108276
4157343
2981528
2026-10-24T01:55:46Z
Frodlekis
762
4157343
wikitext
text/x-wiki
{{kategorinavigering|Bokmål}}
{{faktaruta språk}}
sojc6158qs4pz559y3z7n8hxhmqdp3i
Kategori:Bosniska
14
108277
4157346
2981559
2026-10-24T02:00:19Z
Frodlekis
762
4157346
wikitext
text/x-wiki
{{kategorinavigering|Bosniska}}
{{faktaruta språk}}
sdf8opsu9eky2rmqcu9av1sz88gdme1
Kategori:Bretonska
14
108278
4157352
2981597
2026-10-24T02:13:51Z
Frodlekis
762
4157352
wikitext
text/x-wiki
{{kategorinavigering|Bretonska}}
{{faktaruta språk}}
lnq54u7iy6hce3hggbolmd10snkecn7
Kategori:Bulgariska
14
108279
4157353
2981633
2026-10-24T02:20:41Z
Frodlekis
762
4157353
wikitext
text/x-wiki
{{kategorinavigering|Bulgariska}}
{{faktaruta språk}}
emjaroxiu7gkrmhjs8lqwjoqpn25y56
Kategori:Burmesiska
14
108280
4157355
2981663
2026-10-24T02:24:27Z
Frodlekis
762
4157355
wikitext
text/x-wiki
{{kategorinavigering|Burmesiska}}
{{faktaruta språk}}
ooz6qfkol73z30tb27wwosuewrd05ug
Kategori:Cheyenne
14
108281
4157402
2981692
2026-10-24T11:22:21Z
Frodlekis
762
4157402
wikitext
text/x-wiki
{{kategorinavigering|Cheyenne}}
{{faktaruta språk}}
f1az62xj9zs11lr5o5hxut5mw881dbw
Kategori:Divehi
14
108283
4157412
2981753
2026-10-24T11:38:20Z
Frodlekis
762
4157412
wikitext
text/x-wiki
{{kategorinavigering|Divehi}}
{{faktaruta språk}}
0kmf9hq5a3ilpgso6k5eqzi4l9nxr2f
Kategori:Enaresamiska
14
108284
4157387
2981768
2026-10-24T04:45:22Z
Frodlekis
762
4157387
wikitext
text/x-wiki
{{kategorinavigering|Enaresamiska}}
{{faktaruta språk}}
s0kn6kzgqsozcgotgn4c96g3jgh6w3m
Kategori:Engelska
14
108285
4157416
2981771
2026-10-24T11:46:13Z
Frodlekis
762
4157416
wikitext
text/x-wiki
{{kategorinavigering|Engelska}}
{{faktaruta språk}}
a1341g1rm6q08rjmi9sqe9wupg4ddt4
Kategori:Fornnordiska
14
108291
4157377
2982043
2026-10-24T04:28:16Z
Frodlekis
762
4157377
wikitext
text/x-wiki
{{kategorinavigering|Fornnordiska}}
{{faktaruta språk}}
nmcd8puwvr1fbxweo4v33nph6jnjlxo
Kategori:Frankoprovensalska
14
108292
4157369
2982067
2026-10-24T04:16:32Z
Frodlekis
762
4157369
wikitext
text/x-wiki
{{kategorinavigering|Frankoprovensalska}}
{{faktaruta språk}}
eap31aw0f1tij6p6rvnj6k92bl01n1c
Kategori:Franska
14
108293
4157370
2982071
2026-10-24T04:17:39Z
Frodlekis
762
4157370
wikitext
text/x-wiki
{{kategorinavigering|Franska}}
{{faktaruta språk}}
i3rdoywreibla2dzq16226bvwu0h3x8
Kategori:Frisiska
14
108294
4157373
2982144
2026-10-24T04:22:09Z
Frodlekis
762
4157373
wikitext
text/x-wiki
{{kategorinavigering|Frisiska}}
{{faktaruta språk}}
1mo64kidu3b82zro57z006okddnze6d
Kategori:Friuliska
14
108295
4157372
2982168
2026-10-24T04:20:14Z
Frodlekis
762
4157372
wikitext
text/x-wiki
{{kategorinavigering|Friuliska}}
{{faktaruta språk}}
hsl7e0rcfswnhk1rpaektl2fk6oagfx
Kategori:Färöiska
14
108296
4157371
2982177
2026-10-24T04:18:53Z
Frodlekis
762
4157371
wikitext
text/x-wiki
{{kategorinavigering|Färöiska}}
{{faktaruta språk}}
oefkbwl7d5ty7jjm50ou2n9gj3ohxpb
Kategori:Georgiska
14
108298
4157396
2976842
2026-10-24T11:06:52Z
Frodlekis
762
4157396
wikitext
text/x-wiki
{{kategorinavigering|Georgiska}}
{{faktaruta språk}}
ng6eutq0tw0kdc7arpnnnkzel7v7ci4
Kategori:Gotiska
14
108299
4157398
2976013
2026-10-24T11:16:41Z
Frodlekis
762
4157398
wikitext
text/x-wiki
{{kategorinavigering|Gotiska}}
{{faktaruta språk}}
497tds5r4etjrltr0r1h564svfcg04j
Kategori:Grekiska
14
108300
4157399
2975987
2026-10-24T11:17:05Z
Frodlekis
762
4157399
wikitext
text/x-wiki
{{kategorinavigering|Grekiska}}
{{faktaruta språk}}
74335d9ynrpuj2j4pfd7ew7czf6lr9z
Kategori:Grönländska
14
108301
4157401
2982307
2026-10-24T11:20:00Z
Frodlekis
762
4157401
wikitext
text/x-wiki
{{kategorinavigering|Grönländska}}
{{faktaruta språk}}
qxemejts2vgwapy5sy0vkcdldc6yubi
Kategori:Guaraní
14
108302
4157415
2982323
2026-10-24T11:44:40Z
Frodlekis
762
4157415
wikitext
text/x-wiki
{{kategorinavigering|Guaraní}}
{{faktaruta språk}}
3e59a95fy1t6443xnn26g8sebvssu2x
Kategori:Belarusiska
14
108408
4157268
3616167
2026-10-24T00:50:29Z
Frodlekis
762
4157268
wikitext
text/x-wiki
{{kategorinavigering|Belarusiska}}
{{faktaruta språk}}
nvchwdld8ui4an431fguzfh4auhvz2q
Kategori:Abazinska
14
108412
4157218
2981063
2026-10-23T22:41:48Z
Frodlekis
762
4157218
wikitext
text/x-wiki
{{kategorinavigering|Abazinska}}
{{faktaruta språk}}
rtwz951e81974tzgu3evqmt55jw4meu
4157219
4157218
2026-10-23T22:42:04Z
Frodlekis
762
4157219
wikitext
text/x-wiki
{{kategorinavigering|Abazinska}}
{{faktaruta språk}}
==Källor==
<references/>
bgp0polau5q5o2pont4f043k4yjjamy
Kategori:Galiciska
14
112479
4157345
2976515
2026-10-24T01:56:38Z
Frodlekis
762
4157345
wikitext
text/x-wiki
{{kategorinavigering|Galiciska}}
{{faktaruta språk}}
i3u8iiib433m2ft8votdx20t8ln441f
Kategori:Alemanniska
14
112488
4157233
2981220
2026-10-23T23:09:23Z
Frodlekis
762
4157233
wikitext
text/x-wiki
{{kategorinavigering|Alemanniska}}
{{faktaruta språk}}
==Källor==
<references/>
kp2mehpkxrubg292rb0wh74ua55d0qk
Kategori:Cebuano
14
112489
4157356
2981675
2026-10-24T02:25:42Z
Frodlekis
762
4157356
wikitext
text/x-wiki
{{kategorinavigering|Cebuano}}
{{faktaruta språk}}
ewgudu65vxqt2g136d5s3r9dz51cr6k
Kategori:Arameiska
14
112490
4157247
2981304
2026-10-23T23:47:40Z
Frodlekis
762
4157247
wikitext
text/x-wiki
{{kategorinavigering|Arameiska}}
{{faktaruta språk}}
==Källor==
<references/>
oxg5nzs4if6shqliouz7tn0q0bkhvfg
Kategori:Bayerska
14
112495
4157267
2981490
2026-10-24T00:47:36Z
Frodlekis
762
4157267
wikitext
text/x-wiki
{{kategorinavigering|Bayerska}}
{{faktaruta språk}}
l6rf1lolodg22uq54szif6ej06w05lo
bagge
0
113976
4157149
4082231
2026-10-23T16:10:28Z
Frodlekis
762
+am: [[በግ]] (assisterat)
4157149
wikitext
text/x-wiki
{{se även|bägge}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
'''bagge'''
#{{tagg|kat=djurhanar}} [[hane]] av däggdjuret [[får]]
#:{{synonymer|[[fårhane]], [[gumse]], [[vädur]]}}
#:{{antonymer|[[tacka]]}}
#:{{hyperonymer|[[får]]}}
#:{{kohyponymer|[[tacka]], [[lamm]]}}
#{{tagg|insekter}} benämning på flertalet insekter som bär skal
#{{tagg|vardagligt|text=potentiellt nedsättande}} [[norrman]]
#:{{synonymer|[[norrbagge]]}}
:{{avgränsare}}
:{{seäven-bring|Mankön|Djur}}
====Översättningar====
{{ö-topp|fårhanne}}
*amhariska: {{ö|am|በግ|m|tr=bäg}}
*bokmål: {{ö+|no|vær|m}}, {{ö|no|saubukk|m}}, {{ö|no|sauebukk|m}}, {{ö+|no|bukk|m}}
*engelska: {{ö+|en|ram}}
*finska: {{ö+|fi|pässi}}
*franska: {{ö+|fr|bélier|m}}
*isländska: {{ö+|is|hrútur|m}}
*jiddisch: {{ö|yi|ווידער|m|tr=vider}}
*nederländska: {{ö+|nl|ram|m}}
*polska: {{ö+|pl|baran|m}}
*portugisiska: {{ö+|pt|carneiro|m}}
*ryska: {{ö+|ru|баран}} (barán)
*spanska: {{ö+|es|carnero|m}}, {{ö|es|morueco|m}}, {{ö+|es|ariete|m}}
*tjeckiska: {{ö+|cs|beran|m}}
*turkiska: {{ö+|tr|koç}}
*tyska: {{ö+|de|Widder|m}}, {{ö+|de|Schafbock|m}}
*ukrainska: {{ö+|uk|баран}} (barán)
{{ö-botten}}
51et6mrrfedpaam5dy0f01kjne0oyp3
Kategori:Dari
14
114856
4157410
2981752
2026-10-24T11:35:51Z
Frodlekis
762
4157410
wikitext
text/x-wiki
{{kategorinavigering|Dari}}
{{faktaruta språk}}
otn1bfz4vjq8suxkm2nk0wd25pl107k
Kategori:Cherokesiska
14
114857
4157389
2981688
2026-10-24T04:46:25Z
Frodlekis
762
4157389
wikitext
text/x-wiki
{{kategorinavigering|Cherokesiska}}
{{faktaruta språk}}
8j7d3peqsbj50ed07m525nefvmgasvb
Kategori:Aymara
14
114858
4157259
2981390
2026-10-24T00:18:46Z
Frodlekis
762
4157259
wikitext
text/x-wiki
{{kategorinavigering|Aymara}}
{{faktaruta språk}}
0ncf1p6d4bjwbn1gie6i0w0c6ywnovv
grattis på födelsedagen
0
121442
4157128
3872518
2026-10-23T15:32:26Z
~2026-56702-21
62364
+am: [[መልካም ልደት]] (assisterat)
4157128
wikitext
text/x-wiki
==Svenska==
===Interjektion===
{{interj|sv}}
'''[[grattis]] [[på]] [[födelsedagen]]'''
#sägs eller skrivs till en person som firar sin födelsedag i syfte att visa sin välönskan
#:{{jämför|[[har den äran]]}}
====Översättningar====
{{ö-topp|till person som firar sin födelsedag}}
*amhariska: {{ö|am|መልካም ልደት|tr=mälkam lədät}}
*bokmål: {{ö+|no|gratulerer med dagen}}
*bosniska: {{ö|bs|sretan rođendan}}
*bretonska: {{ö+|br|deiz-ha-bloaz laouen}}
*danska: {{ö+|da|tillykke med fødselsdagen}}
*engelska: {{ö+|en|happy birthday}}
*finska: {{ö|fi|hyvää syntymäpäivää}}
*franska: {{ö+|fr|joyeux anniversaire}}, {{ö+|fr|bon anniversaire}}
*hebreiska: {{ö|he|יום הולדת שמח}}
*isländska: {{ö+|is|til hamingju með afmælið}}, {{ö+|is|til hamingju með daginn}}
*italienska: {{ö+|it|buon compleanno}}
*jiddisch: {{ö|yi|מזל־טובֿ צו דײַן געבוירנטאָג|tr=mazl-tov tsu dayn geboyrntog}}
*latin: {{ö|la|felicem natalem}}
*lulesamiska: {{ö|smj|mån ärrodav duv riegádimbiejvev}}
*persiska: {{ö|fa|تولدت مبارک|tr=tavallodat mobarak|skrift=fa-Arab}}
*polska: {{ö|pl|wszystkiego najlepszego z okazji urodzin}}, {{ö|pl|wszystkiego najlepszego}}, {{ö|pl|sto lat}}
*portugisiska: {{ö+|pt|feliz aniversário}}, {{ö+|pt|parabéns}}
*rumänska: {{ö|ro|la mulți ani}}, {{ö|ro|aniversare fericită}}
*ryska: {{ö+|ru|с днём рождения|tr=s dnjom roždénija|skrift=Cyrl}}, {{ö|ru|поздравляю с днём рождения|tr=pozdravljáju s dnjom roždénija|skrift=Cyrl}}
*sanskrit: {{ö|sa|शुभं जन्मदिनम्|tr=śubhaṃ janmadinam|skrift=Deva}}
*skotsk gäliska: {{ö|gd|co-latha breith sona}}
*spanska: {{ö|es|feliz cumpleaños}}
*tyska: {{ö+|de|alles Gute zum Geburtstag}}, {{ö|de|herzlichen Glückwunsch zum Geburtstag}}
*ukrainska: {{ö|uk|з днем народження}}
{{ö-botten}}
3lu65zlynr7yyiu5bxbptq26709vdfo
Aina
0
128457
4157165
3874395
2026-10-23T19:41:55Z
InternetArchiveBot
48068
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.6
4157165
wikitext
text/x-wiki
{{se även|aina}}
==Svenska==
===Substantiv===
{{sv-subst-n-namn}}
'''Aina'''
#{{tagg|kat=kvinnonamn}} ett [[kvinnonamn]]<ref>SCB, Statistikdatabasen: [https://www.statistikdatabasen.scb.se/pxweb/sv/ssd/START__BE__BE0001__BE0001G/BE0001T07AR/table/tableViewLayout1/ De 100 vanligaste förnamnen bland kvinnor folkbokförda i Sverige den 31 december respektive år. År 1980 - 2021] År 1980 låg Aina på plats nummer 90 bland de vanligaste kvinnonamnen hos Sveriges befolkning.</ref>
==Katalanska==
===Substantiv===
{{subst|ca}}
'''Aina'''
#{{tagg|kat=kvinnonamn|språk=ca}} ett [[kvinnonamn]]<ref>[https://web.archive.org/web/20141112162341/http://www.nancy.cc/2013/11/12/most-popular-baby-names-catalonia-2012/ Nancy.cc - Lista över de populäraste namnen på nyfödda i Katalonien 2012] (läst 12 januari 2015)</ref>
==Källor==
<references/>
bhm3uo81xhgm92p6c6lunrn5imv4zkv
nunnestenskvätta
0
129664
4157166
3864075
2026-10-23T19:44:41Z
Tapio Toola
59668
+fi: [[nunnatasku]]; +tr: [[alaca kuyrukkakan]] (assisterat)
4157166
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-or}}
'''[[nunna|nunne]][[stenskvätta]]'''
#{{tagg|kat=fågelarter|kat2=fåglar}} en [[art]] ''([[Oenanthe pleschanka]])'' inom [[fågelfamilj]]en [[flugsnappare]] ([[Muscicapidae]]); [[individ]] av arten nunnestenskvätta
====Översättningar====
{{ö-topp}}
*engelska: {{ö+|en|pied wheatear}}
*finska: {{ö+|fi|nunnatasku}}
*turkiska: {{ö+|tr|alaca kuyrukkakan}}
{{ö-botten}}
pgbw1h0fu5ppwp0gnq4ligqcdl9htvf
4157172
4157166
2026-10-23T19:52:14Z
Frodlekis
762
+ca: [[còlit pitnegre]]; +ca: [[còlit de pit negre]] (assisterat)
4157172
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-or}}
'''[[nunna|nunne]][[stenskvätta]]'''
#{{tagg|kat=fågelarter|kat2=fåglar}} en [[art]] ''([[Oenanthe pleschanka]])'' inom [[fågelfamilj]]en [[flugsnappare]] ([[Muscicapidae]]); [[individ]] av arten nunnestenskvätta
====Översättningar====
{{ö-topp}}
*engelska: {{ö+|en|pied wheatear}}
*finska: {{ö+|fi|nunnatasku}}
*katalanska: {{ö|ca|còlit pitnegre|m}}, {{ö|ca|còlit de pit negre|m}}
*turkiska: {{ö+|tr|alaca kuyrukkakan}}
{{ö-botten}}
a6gfanj15idu919ajf87vnavzlv2m4d
ökenstenskvätta
0
129736
4157176
3864137
2026-10-23T19:59:46Z
Tapio Toola
59668
+tr: [[çöl kuyrukkakanı]] (assisterat)
4157176
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-or}}
'''[[öken]][[stenskvätta]]'''
#{{tagg|kat=fågelarter|kat2=fåglar}} en [[art]] ''([[Oenanthe deserti]])'' inom [[fågelfamilj]]en [[flugsnappare]] ([[Muscicapidae]]); [[individ]] av arten ökenstenskvätta
====Översättningar====
{{ö-topp}}
*bokmål: {{ö|no|ørkensteinskvett}}
*engelska: {{ö+|en|desert wheatear}}
*estniska: {{ö|et|kõrbe-kivitäks}}
*finska: {{ö+|fi|aavikkotasku}}
*franska: {{ö+|fr|traquet du désert|m}}
*turkiska: {{ö+|tr|çöl kuyrukkakanı}}
*tyska: {{ö|de|Wüsten-Steinschmätzer}}
{{ö-botten}}
2njcw5q5zgw8kbgui5hilc3bt1r4wb5
4157178
4157176
2026-10-23T20:14:44Z
Frodlekis
762
+eo: [[dezertsaksikolo]] (assisterat)
4157178
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-or}}
'''[[öken]][[stenskvätta]]'''
#{{tagg|kat=fågelarter|kat2=fåglar}} en [[art]] ''([[Oenanthe deserti]])'' inom [[fågelfamilj]]en [[flugsnappare]] ([[Muscicapidae]]); [[individ]] av arten ökenstenskvätta
====Översättningar====
{{ö-topp}}
*bokmål: {{ö|no|ørkensteinskvett}}
*engelska: {{ö+|en|desert wheatear}}
*esperanto: {{ö|eo|dezertsaksikolo}}
*estniska: {{ö|et|kõrbe-kivitäks}}
*finska: {{ö+|fi|aavikkotasku}}
*franska: {{ö+|fr|traquet du désert|m}}
*turkiska: {{ö+|tr|çöl kuyrukkakanı}}
*tyska: {{ö|de|Wüsten-Steinschmätzer}}
{{ö-botten}}
6xyhllrqjyc7blyf9r1kl2t9iyrykjy
munkorg
0
137815
4157361
4087542
2026-10-24T03:41:27Z
Tapio Toola
59668
+tr: [[köpek ağızlığı]] (assisterat)
4157361
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
{{media|German Shepherd with Muzzle cropped.JPG|En munkorg på en hund.}}
'''[[mun]][[korg]]'''
#[[anordning]] som används för att stoppa ett [[djur]] från [[bita]] någon eller något
#:{{seäven-bring|Ljudlöshet|Oförmåga|Förstummande|Fängelse|Inskränkning}}
====Översättningar====
{{ö-topp|anordning för att stoppa ett djur från att bita}}
*bokmål: {{ö|no|munnkurv|m}}
*engelska: {{ö+|en|muzzle}}
*estniska: {{ö|et|suukorv}}
*finska: {{ö+|fi|kuonokoppa}}
*franska: {{ö+|fr|muselière|f}}
*nederländska: {{ö+|nl|muilkorf}}
*polska: {{ö+|pl|kaganiec}}
*portugisiska: {{ö+|pt|focinheira|f}}
*turkiska: {{ö|tr|köpek ağızlığı}}
*tyska: {{ö+|de|Maulkorb|m}}
{{ö-botten}}
12a8nma4jh0k53gycdq6nu96274xcf2
pit
0
138285
4157175
3986148
2026-10-23T19:54:16Z
Frodlekis
762
/* Engelska */
4157175
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''pit'''
#{{böjning|sv|subst|pi}}
==Engelska==
===Substantiv===
{{en-subst}}
'''pit''' 1
#[[grop]], [[avgrund]], [[grav]], [[dike]]
#:''the '''pit''' is a fighting area for gamecocks or dogs''
#[[fallgrop]]
#:{{synonymer|[[pitfall]]}}
#djupt och smalt hål, [[schakt]]
#:{{synonymer|[[shaft]]}}
#[[gupp]]
#:{{synonymer|[[bump]]}}
#[[depå]]
#[[gruva]], [[gruvschakt]], [[gruvhål]]
#:{{synonymer|[[mine shaft]]}}
#bortre [[parkett]]
#''(med bestämd artikel)'' [[helvetet]], [[avgrunden]]
#[[koppärr]]
#:{{synonymer|[[pockmark]]}}
#{{tagg|vardagligt|språk=en}} ''(oftast i plural)'' [[armhåla]]
#[[orkesterdike]]
#{{tagg|humoristiskt|språk=en}} [[säng]]
'''pit''' 2
#ensam central [[kärna]] i en frukt (t.ex. persika eller körsbär); [[fruktkärna]]
#:{{synonymer|[[stone]], [[kernel]]}}
===Verb===
{{en-verb|fog=t}}
'''pit''' 1
#göra full av [[hål]]; göra [[gropig]]
#bli gropig
#:{{synonymer|[[stone]]}}
#placera eller begrava i en grop
#sätta i kamp eller i motsats (till varandra)
#:''a war that pitted brother against brother''
#göra ett depåstopp
'''pit''' 2
#kärna ur
==Katalanska==
===Substantiv===
{{ca-subst-m}}
'''pit''' {{m}}
#{{tagg|anatomi|språk=ca}} [[bröst]]
e5t29jcwuxjiz6gnfqr7ol37ae46x4z
fyrhjuling
0
139396
4157391
4149210
2026-10-24T05:58:37Z
Tapio Toola
59668
+tr: [[ATV]] (assisterat)
4157391
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
'''[[fyr-|fyr]][[hjul]][[-ing|ing]]'''
#{{tagg|kat=fordon}} (huvudsakligen) [[terrängmotorfordon]] med [[fyra]] [[hjul]] (använt för [[terrängkörning]])
#:{{synonymer|terränghjuling}}
#:{{hyperonymer|terrängskoter}}
#:{{seäven|[[snöskoter]], [[enhjuling]], [[tvåhjuling]], [[trehjuling]]}}
====Översättningar====
{{ö-topp|motorfordon med fyra hjul, huvudsakligen använt för terrängkörning}}
*engelska: {{ö+|en|ATV}}, {{ö+|en|all-terrain vehicle}}
*finska: {{ö+|fi|mönkijä}}
*isländska: {{ö|is|fjórhjól|n}}
*ryska: {{ö+|ru|мотовездехо́д|m}}
*turkiska: {{ö+|tr|ATV}}
{{ö-botten}}
tvpi5dnffd12qg05wmsr2uabzigg4rd
papa
0
143072
4157336
4146473
2026-10-24T01:49:21Z
Frodlekis
762
/* Bikol */
4157336
wikitext
text/x-wiki
{{se även|papá|papà|pápa|papă|păpa|Papa}}
==Tvärspråkligt==
===Interjektion===
{{interj|--}}
'''papa'''
#{{tagg|bokstavering|språk=--}} bokstaven [[P]] (gement: [[p]]) i ICAO:s [[bokstaveringsalfabet]]
#:{{seäven|Appendix:ICAO:s bokstaveringsalfabet}}
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''papa'''
#{{tagg|släktingar|språk=bcl}} [[far]], [[fader]], [[pappa]]
#:{{synonymer|[[ama]], [[tatay]], [[papay]]}}
==Bosniska==
===Substantiv===
{{subst|bs}}
'''papa''' {{m}}
#{{tagg|kat=kristendom|språk=bs}} [[påve]]
==Engelska==
===Substantiv===
{{en-subst}}
'''papa'''
#{{tagg|kat=släktingar|text=främst barnspråk|språk=en}} [[pappa]]
#:{{synonymer|[[dad]], [[daddy]]}}
#:{{besläktade ord|[[father]], [[pa]], [[pappy]], [[pater]], [[paw]], [[pop]], [[poppa]]}}
#{{tagg|kat=släktingar|vardagligt|språk=en}} [[farfar]], [[morfar]]
#{{tagg|kat=kristendom|språk=en}} [[påve]]
#:{{synonymer|[[pope]]}}
==Ewe==
===Substantiv===
{{subst|ee}}
'''papa'''
#{{tagg|kat=släktingar|språk=ee}} [[pappa]]
==Ido==
===Substantiv===
{{subst|io}}
'''papa'''
#{{tagg|kat=släktingar|språk=io}} [[pappa]]
#:{{synonymer|[[patro]]}}
==Italienska==
===Substantiv===
{{subst|it}}
'''papa''' {{m}}
#{{tagg|kat=kristendom|språk=it}} [[påve]]
#:{{synonymer|[[pontefice]]}}
#:{{seäven|[[papà]]}}
==Kroatiska==
===Substantiv===
{{subst|hr}}
'''papa''' {{m}}
#{{tagg|kat=kristendom|språk=hr}} [[påve]]
==Kurdiska==
===Substantiv===
{{subst|ku}}
'''papa''' {{m}}
#{{tagg|kat=kristendom|språk=ku}} [[påve]]
==Nederländska==
===Substantiv===
{{subst|nl}}
'''papa''' {{m}}
#{{tagg|kat=släktingar|text=främst barnspråk|språk=nl}} [[pappa]]
==Pitjantjatjara==
===Substantiv===
{{subst|pjt}}
'''papa'''
#{{tagg|kat=däggdjur|språk=pjt}} [[hund]]
==Polska==
===Substantiv===
{{subst|pl}}
'''papa''' {{f}}
#{{tagg|kat=material|språk=pl}} [[tjärpapp]]
==Portugisiska==
===Substantiv===
{{subst|pt}}
'''papa''' {{m}}
#{{tagg|kat=kristendom|språk=pt}} [[påve]]
==Quechua==
===Substantiv===
{{subst|qu}}
'''papa'''
#{{tagg|kat=grönsaker|språk=qu}} [[potatis]]
==Serbiska==
===Substantiv===
{{subst|sr}}
'''papa''' ([[папа]]) {{m}}
#{{tagg|kat=kristendom|språk=sr}} [[påve]]
==Spanska==
===Substantiv===
{{es-subst-m-s|betydelser=1}}
{{es-subst-f-s|betydelser=2}}
'''papa''' {{f}}
#{{tagg|kat=kristendom|språk=es}} [[påve]]
#:{{besläktade ord|[[antipapa]], [[papista]], [[papado]], [[papal]]}}
#:{{fraser|[[más papista que el papa]]}}
#{{tagg|latinamerikansk spanska|språk=es}} [[potatis]]
#:{{synonymer|(spansk spanska) [[patata]]}}
:{{avgränsare}}
:{{seäven|papá}}
==Swahili==
===Substantiv===
{{subst|sw}}
'''papa'''
*{{uttal|sw|region=Kenya|ljud=Sw-ke-papa.flac}}
#{{tagg|kat=fiskar|språk=sw}} [[haj]]
==Turkiska==
===Substantiv===
{{subst|tr}}
'''papa'''
#{{tagg|kat=kristendom|språk=tr}} [[påve]]
mjiv75keflrzod5zt27ayqs8j354csu
Kategori:Abchaziska
14
153125
4157220
2981066
2026-10-23T22:42:57Z
Frodlekis
762
4157220
wikitext
text/x-wiki
{{kategorinavigering|Abchaziska}}
{{faktaruta språk}}
==Källor==
<references/>
ecsd4eamb3y1pvovgg1ug1r9sbobjwa
Kategori:Groningska
14
153129
4157400
2982304
2026-10-24T11:18:31Z
Frodlekis
762
4157400
wikitext
text/x-wiki
{{kategorinavigering|Groningska}}
{{faktaruta språk}}
bv6s84ntag27fzv1lia9bh4lemxn1jb
Kategori:Arumänska
14
153146
4157250
2981356
2026-10-23T23:51:52Z
Frodlekis
762
4157250
wikitext
text/x-wiki
{{kategorinavigering|Arumänska}}
{{faktaruta språk}}
==Källor==
<references/>
dqga8ia2xk0dk740js91ffpjkb1f320
unless
0
158430
4157392
3030616
2026-10-24T06:31:31Z
Peloñe
24459
4157392
wikitext
text/x-wiki
==Engelska==
===Konjunktion===
{{konj|en}}
'''unless'''
*{{uttal|en|ipa=ənˈlɛs|ljud=en-us-unless.ogg}}
#[[såvida]] ej/inte/icke, [[om]] inte, [[så länge]] [[inte]]
#:''I won't go '''unless''' you pay me''.
#::''Jag kommer inte gå '''såvida''' du '''inte''' betalar mig''.
d5jgsckdr4dojq171wpzvfpa0xzogd0
Kategori:Fornsaxiska
14
160680
4157376
2977520
2026-10-24T04:26:37Z
Frodlekis
762
4157376
wikitext
text/x-wiki
{{kategorinavigering|Fornsaxiska}}
{{faktaruta språk}}
bkzd7dsrfcq1nknujq1ug7rex6yibsy
Kategori:Anglo-normandiska
14
171135
4157240
2981255
2026-10-23T23:21:04Z
Frodlekis
762
4157240
wikitext
text/x-wiki
{{kategorinavigering|Anglo-normandiska}}
{{faktaruta språk}}
==Källor==
<references/>
hy1yph1w2vi2soggv256799me142jba
Kategori:Adygeiska
14
283856
4157223
2981074
2026-10-23T22:55:50Z
Frodlekis
762
4157223
wikitext
text/x-wiki
{{kategorinavigering|Adygeiska}}
{{faktaruta språk}}
==Källor==
<references/>
nyk5naluc3h2wdoyghfzp5yr5kta0uo
pits
0
326528
4157177
2785982
2026-10-23T20:13:50Z
Frodlekis
762
/* Svenska */
4157177
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''pits'''
#{{böjning|sv|subst|pi}}
==Engelska==
===Substantiv===
'''pits'''
#{{böjning|en|subst|pit}}
==Katalanska==
===Substantiv===
'''pits'''
#{{böjning|ca|subst|pit}}
mier7oayaqcbn8tjea59fbex2fh4hjj
capped
0
353753
4157180
3609727
2026-10-23T20:15:41Z
LA2
544
/* Engelska */
4157180
wikitext
text/x-wiki
==Engelska==
===Adjektiv===
{{adj|en}}
'''capped'''
#[[begränsad]], som har ett [[tak]] (en övre gräns); {{avledning|en|cap|ordform=perfpart}}
#:'' The speed is still '''capped'''.''
#::''Hastigheten är fortfarande '''begränsad'''.''
===Verb===
'''capped'''
#{{böjning|en|verb|cap}}
km1jiby0omq28nvjn8sfipl01o2fnz8
pananom
0
361226
4157288
3547108
2026-10-24T01:24:52Z
Frodlekis
762
4157288
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''pananom'''
#{{tagg|kat=botanik|språk=bcl}} [[växt]]
21bz7k7x3xvrnah1zr8tu6419kh4yjf
Kategori:Central bikol/Substantiv
14
369101
4157277
2988650
2026-10-24T01:16:34Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Substantiv]] till [[Kategori:Central bikol/Substantiv]]
2988650
wikitext
text/x-wiki
{{kategorinavigering|Bikol|Substantiv|Index|nyckel=2}}
9wodi0j2397bo1u8yh1tevipstn6siz
4157279
4157277
2026-10-24T01:17:19Z
Frodlekis
762
4157279
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Substantiv|Index|nyckel=2}}
ajmi70ktfi1tfqhn06oq76lnidhgx2d
Kategori:Central bikol/Botanik
14
369160
4157306
1482674
2026-10-24T01:36:10Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Botanik]] till [[Kategori:Central bikol/Botanik]]
1482674
wikitext
text/x-wiki
{{kategorinavigering|Bikol|Botanik|Biologi}}
nxb4qx5xj30x83jyw5w1l68blbn11um
4157308
4157306
2026-10-24T01:36:21Z
Frodlekis
762
4157308
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Botanik|Biologi}}
rwhoahn4r1jigfpng6z78dg34xzr2th
Kategori:Central bikol/Alla uppslag
14
369217
4157275
2988648
2026-10-24T01:15:38Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Alla uppslag]] till [[Kategori:Central bikol/Alla uppslag]] utan att lämna en omdirigering
2988648
wikitext
text/x-wiki
{{kategorinavigering|Bikol|Alla uppslag|Index|nyckel=1}}
cf00a0ib44u19v4rk8to8v98fz5pdf5
4157285
4157275
2026-10-24T01:23:24Z
Frodlekis
762
4157285
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Alla uppslag|Index|nyckel=1}}
tbo9rqanezniyncfwjwfftvaxgbtzw8
Kategori:Central bikol/Biologi
14
369463
4157305
2988649
2026-10-24T01:35:13Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Biologi]] till [[Kategori:Central bikol/Biologi]] utan att lämna en omdirigering
2988649
wikitext
text/x-wiki
{{kategorinavigering|Bikol|Biologi|Naturvetenskap}}
7bq7ejnwpsqr6ugyyx7b8zybzwev3ov
Kategori:Central bikol/Naturvetenskap
14
369555
4157316
1483078
2026-10-24T01:40:08Z
Frodlekis
762
4157316
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Naturvetenskap|Index|nyckel=6}}
49ung740kpik9tx77f2yho69cply78q
4157317
4157316
2026-10-24T01:40:25Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Naturvetenskap]] till [[Kategori:Central bikol/Naturvetenskap]] utan att lämna en omdirigering
4157316
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Naturvetenskap|Index|nyckel=6}}
49ung740kpik9tx77f2yho69cply78q
Kategori:Fornpersiska
14
388333
4157382
2982058
2026-10-24T04:37:24Z
Frodlekis
762
4157382
wikitext
text/x-wiki
{{kategorinavigering|Fornpersiska}}
{{faktaruta språk}}
dogjr8xltpi184ieeqafndwi38coerg
Kategori:Fornkyrkoslaviska
14
395906
4157393
2982040
2026-10-24T11:01:30Z
Frodlekis
762
4157393
wikitext
text/x-wiki
{{kategorinavigering|Fornkyrkoslaviska}}
{{faktaruta språk}}
k3ne0oen3lge1tvek81edi4fduvj3eu
labyrint
0
419488
4157088
4085649
2026-10-23T12:29:00Z
~2026-56702-21
62364
+yi: [[לאַבירינט]] (assisterat)
4157088
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''labyrint'''
#[[ställe]] med [[invecklad|invecklat]] [[nät]] av [[gång]]ar; stor [[byggnad]] där det kan vara [[svår]]t att [[hitta]] [[rätt]]
#:{{etymologi|Av {{härledning|sv|grc|λαβύρινθος|tr=laburinthos}}.}}
#{{tagg|anatomi}} [[inneröra]]
====Översättningar====
{{ö-topp|ställe med invecklat nät av gångar}}
*engelska: {{ö+|en|labyrinth}}, {{ö+|en|maze}}
*finska: {{ö+|fi|labyrintti}}, {{ö+|fi|sokkelo}}
*franska: {{ö+|fr|labyrinthe|m}}
*jiddisch: {{ö|yi|לאַבירינט|m|tr=labirint}}
*katalanska: {{ö+|ca|laberint|m}}
*spanska: {{ö+|es|laberinto|m}}
*turkiska: {{ö+|tr|labirent}}
*tyska: {{ö+|de|Labyrinth|n}}
{{ö-botten}}
{{ö-topp|inneröra}}
*tyska: {{ö+|de|Labyrinth|n}}, {{ö+|de|Innenohr|n}}
{{ö-botten}}
bx2tns478rsw6zq3t3zlg7pjzlxy3x1
4157095
4157088
2026-10-23T12:34:49Z
~2026-56702-21
62364
+pl: [[labirynt]] (assisterat)
4157095
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''labyrint'''
#[[ställe]] med [[invecklad|invecklat]] [[nät]] av [[gång]]ar; stor [[byggnad]] där det kan vara [[svår]]t att [[hitta]] [[rätt]]
#:{{etymologi|Av {{härledning|sv|grc|λαβύρινθος|tr=laburinthos}}.}}
#{{tagg|anatomi}} [[inneröra]]
====Översättningar====
{{ö-topp|ställe med invecklat nät av gångar}}
*engelska: {{ö+|en|labyrinth}}, {{ö+|en|maze}}
*finska: {{ö+|fi|labyrintti}}, {{ö+|fi|sokkelo}}
*franska: {{ö+|fr|labyrinthe|m}}
*jiddisch: {{ö|yi|לאַבירינט|m|tr=labirint}}
*katalanska: {{ö+|ca|laberint|m}}
*polska: {{ö+|pl|labirynt}}
*spanska: {{ö+|es|laberinto|m}}
*turkiska: {{ö+|tr|labirent}}
*tyska: {{ö+|de|Labyrinth|n}}
{{ö-botten}}
{{ö-topp|inneröra}}
*tyska: {{ö+|de|Labyrinth|n}}, {{ö+|de|Innenohr|n}}
{{ö-botten}}
48r2gjlwl8i49ijpuez07vkivufknw8
4157097
4157095
2026-10-23T12:35:32Z
~2026-56702-21
62364
4157097
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
{{media|Labyrinth 2 (from Nordisk familjebok).png|en '''labyrint''' (1)}}
'''labyrint''' {{u}}
#[[ställe]] med [[invecklad|invecklat]] [[nät]] av [[gång]]ar; stor [[byggnad]] där det kan vara [[svår]]t att [[hitta]] [[rätt]]
#:{{etymologi|Av {{härledning|sv|grc|λαβύρινθος|tr=laburinthos}}.}}
#{{tagg|anatomi}} [[inneröra]]
====Översättningar====
{{ö-topp|ställe med invecklat nät av gångar}}
*engelska: {{ö+|en|labyrinth}}, {{ö+|en|maze}}
*finska: {{ö+|fi|labyrintti}}, {{ö+|fi|sokkelo}}
*franska: {{ö+|fr|labyrinthe|m}}
*jiddisch: {{ö|yi|לאַבירינט|m|tr=labirint}}
*katalanska: {{ö+|ca|laberint|m}}
*polska: {{ö+|pl|labirynt}}
*spanska: {{ö+|es|laberinto|m}}
*turkiska: {{ö+|tr|labirent}}
*tyska: {{ö+|de|Labyrinth|n}}
{{ö-botten}}
{{ö-topp|inneröra}}
*tyska: {{ö+|de|Labyrinth|n}}, {{ö+|de|Innenohr|n}}
{{ö-botten}}
1ggwz2vn4c4pqrtgtil0bqhzdm9d8e8
4157098
4157097
2026-10-23T12:35:55Z
~2026-56702-21
62364
4157098
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
{{media|Labyrinth 2 (from Nordisk familjebok).png|en '''labyrint''' (1)}}
'''labyrint''' {{u}}
#[[ställe]] med [[invecklad|invecklat]] [[nät]] av [[gång]]ar; stor [[byggnad]] där det kan vara [[svår]]t att [[hitta]] [[rätt]]
#{{tagg|anatomi}} [[inneröra]]
:{{avgränsare}}
:{{etymologi|Av {{härledning|sv|grc|λαβύρινθος|tr=laburinthos}}.}}
====Översättningar====
{{ö-topp|ställe med invecklat nät av gångar}}
*engelska: {{ö+|en|labyrinth}}, {{ö+|en|maze}}
*finska: {{ö+|fi|labyrintti}}, {{ö+|fi|sokkelo}}
*franska: {{ö+|fr|labyrinthe|m}}
*jiddisch: {{ö|yi|לאַבירינט|m|tr=labirint}}
*katalanska: {{ö+|ca|laberint|m}}
*polska: {{ö+|pl|labirynt}}
*spanska: {{ö+|es|laberinto|m}}
*turkiska: {{ö+|tr|labirent}}
*tyska: {{ö+|de|Labyrinth|n}}
{{ö-botten}}
{{ö-topp|inneröra}}
*tyska: {{ö+|de|Labyrinth|n}}, {{ö+|de|Innenohr|n}}
{{ö-botten}}
09a2056jt87rs1doehsjyrp2u714k6t
4157100
4157098
2026-10-23T12:37:16Z
~2026-56702-21
62364
4157100
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
{{media|Labyrinth 2 (from Nordisk familjebok).png|en '''labyrint''' (1)}}
'''labyrint''' {{u}}
#[[ställe]] med [[invecklad|invecklat]] [[nät]] av [[gång]]ar; stor [[byggnad]] där det kan vara [[svår]]t att [[hitta]] [[rätt]]
#{{tagg|anatomi}} [[inneröra]]
:{{avgränsare}}
:{{etymologi|Av {{härledning|sv|grc|λαβύρινθος|tr=laburinthos}}.}}
:{{seäven-bring|Svårhet|Hemlighet|Kroklinje|Slingring|Oordning}}
====Översättningar====
{{ö-topp|ställe med invecklat nät av gångar}}
*engelska: {{ö+|en|labyrinth}}, {{ö+|en|maze}}
*finska: {{ö+|fi|labyrintti}}, {{ö+|fi|sokkelo}}
*franska: {{ö+|fr|labyrinthe|m}}
*jiddisch: {{ö|yi|לאַבירינט|m|tr=labirint}}
*katalanska: {{ö+|ca|laberint|m}}
*polska: {{ö+|pl|labirynt}}
*spanska: {{ö+|es|laberinto|m}}
*turkiska: {{ö+|tr|labirent}}
*tyska: {{ö+|de|Labyrinth|n}}
{{ö-botten}}
{{ö-topp|inneröra}}
*tyska: {{ö+|de|Labyrinth|n}}, {{ö+|de|Innenohr|n}}
{{ö-botten}}
7mzl9qzp0vzd209ruecxewkvp5o2f6h
Kategori:Cree
14
430427
4157409
2981695
2026-10-24T11:34:13Z
Frodlekis
762
4157409
wikitext
text/x-wiki
{{kategorinavigering|Cree}}
{{faktaruta språk}}
5j6ajm3p3ozbfep0ibhsz9122hhe0le
Kategori:Chichewa
14
430429
4157406
2981694
2026-10-24T11:26:21Z
Frodlekis
762
4157406
wikitext
text/x-wiki
{{kategorinavigering|Chichewa}}
{{faktaruta språk}}
6ekwvpwhdxta1zwhqei89yj29q32do2
Kategori:Bislama
14
430432
4157342
2981524
2026-10-24T01:54:47Z
Frodlekis
762
4157342
wikitext
text/x-wiki
{{kategorinavigering|Bislama}}
{{faktaruta språk}}
swofu4xi74yr5fj41tqdgv6z176n7rx
Kategori:Central bikol
14
430434
4157274
2988647
2026-10-24T01:12:17Z
Frodlekis
762
4157274
wikitext
text/x-wiki
{{kategorinavigering|Bikol}}
{{faktaruta språk}}
29uxe406t6ihseke8293v56dqic30d8
4157280
4157274
2026-10-24T01:17:52Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol]] till [[Kategori:Central bikol]] utan att lämna en omdirigering
4157274
wikitext
text/x-wiki
{{kategorinavigering|Bikol}}
{{faktaruta språk}}
29uxe406t6ihseke8293v56dqic30d8
4157284
4157280
2026-10-24T01:23:08Z
Frodlekis
762
4157284
wikitext
text/x-wiki
{{kategorinavigering|Central bikol}}
{{faktaruta språk}}
je3pv3smrnb060kgzvijljs9cm9pes9
Kategori:Bihari
14
430436
4157273
2981515
2026-10-24T01:11:02Z
Frodlekis
762
4157273
wikitext
text/x-wiki
{{kategorinavigering|Bihari}}
{{faktaruta språk}}
sohfvy4ip5u22ccuwqrgpru7a76iytc
Kategori:Erzya
14
430440
4157388
2981850
2026-10-24T04:45:54Z
Frodlekis
762
4157388
wikitext
text/x-wiki
{{kategorinavigering|Erzya}}
{{faktaruta språk}}
o6qfcvbmbo6hqac7v06p08ec5ng0fyk
Kategori:Dinka
14
430445
4157411
2988822
2026-10-24T11:36:42Z
Frodlekis
762
4157411
wikitext
text/x-wiki
{{kategorinavigering|Dinka}}
{{faktaruta språk}}
8la8ar332trr7tye2rx8e2fgqyk9zzj
Kategori:Banjaresiska
14
430448
4157262
2981422
2026-10-24T00:29:05Z
Frodlekis
762
4157262
wikitext
text/x-wiki
{{kategorinavigering|Banjaresiska}}
{{faktaruta språk}}
fc8ilrcwl6gt8gjxg4ysfsy43d4osfe
Kategori:Baluchiska
14
430453
4157260
2981414
2026-10-24T00:19:05Z
Frodlekis
762
4157260
wikitext
text/x-wiki
{{kategorinavigering|Baluchiska}}
{{faktaruta språk}}
7q6ms06qen0rlzmft47ulhewhlnmj3x
Kategori:Akkalasamiska
14
430461
4157230
2981148
2026-10-23T23:05:28Z
Frodlekis
762
4157230
wikitext
text/x-wiki
{{kategorinavigering|Akkalasamiska}}
{{faktaruta språk}}
==Källor==
<references/>
1ncnvr8lng61wnv12cumzubvffm5ks5
Kategori:Akan
14
430463
4157228
2981145
2026-10-23T23:02:36Z
Frodlekis
762
4157228
wikitext
text/x-wiki
{{kategorinavigering|Akan}}
{{faktaruta språk}}
==Källor==
<references/>
he1hbvurkl52qc8xyyop4mxksdjfaox
Kategori:Chantiska
14
430466
4157364
2981686
2026-10-24T04:09:49Z
Frodlekis
762
4157364
wikitext
text/x-wiki
{{kategorinavigering|Chantiska}}
{{faktaruta språk}}
5x3cpg3mm8dcsale6m9y5hsbttjzt8q
Kategori:Chamorro
14
430468
4157360
2981684
2026-10-24T02:38:57Z
Frodlekis
762
4157360
wikitext
text/x-wiki
{{kategorinavigering|Chamorro}}
{{faktaruta språk}}
7glhzwyyvympqmgo8ngvzb3nfkqzoea
Kategori:Burjatiska
14
430469
4157354
2981662
2026-10-24T02:23:28Z
Frodlekis
762
4157354
wikitext
text/x-wiki
{{kategorinavigering|Burjatiska}}
{{faktaruta språk}}
jlep7549s2lym0238z46n74d887kjdz
Kategori:Bishnupriya manipuri
14
430470
4157341
2981519
2026-10-24T01:53:26Z
Frodlekis
762
4157341
wikitext
text/x-wiki
{{kategorinavigering|Bishnupriya manipuri}}
{{faktaruta språk}}
etmnigmbvbg6g3z5gq19v35zrj74wex
Kategori:Afar
14
430471
4157224
2981082
2026-10-23T22:59:38Z
Frodlekis
762
4157224
wikitext
text/x-wiki
{{kategorinavigering|Afar}}
{{faktaruta språk}}
7zxi43dgpljrjivrs4l65d00ync0823
4157225
4157224
2026-10-23T23:00:12Z
Frodlekis
762
4157225
wikitext
text/x-wiki
{{kategorinavigering|Afar}}
{{faktaruta språk}}
==Källor==
<references/>
bj5ej8yfgg7ydtfu1xk584az1i1m1nu
Kategori:Fornhögtyska
14
430481
4157404
2982034
2026-10-24T11:23:48Z
Frodlekis
762
4157404
wikitext
text/x-wiki
{{kategorinavigering|Fornhögtyska}}
{{faktaruta språk}}
km5xsh70b1freu6micmo1o6znc4z26a
Kategori:Dzongkha
14
430484
4157413
2977493
2026-10-24T11:39:24Z
Frodlekis
762
4157413
wikitext
text/x-wiki
{{kategorinavigering|Dzongkha}}
{{faktaruta språk}}
tj7vlv6nmc3a51jye8fhmtxdjwgbk0z
Kategori:Assamesiska
14
430512
4157251
2981359
2026-10-23T23:52:50Z
Frodlekis
762
4157251
wikitext
text/x-wiki
{{kategorinavigering|Assamesiska}}
{{faktaruta språk}}
==Källor==
<references/>
95v2sz1qx50ezk9vx48gbm9zlm2bh76
Kategori:Gagauziska
14
430525
4157362
2982214
2026-10-24T04:05:31Z
Frodlekis
762
4157362
wikitext
text/x-wiki
{{kategorinavigering|Gagauziska}}
{{faktaruta språk}}
meem6p6jpc0htgu3z25fub03zwngevf
Kategori:Forniriska
14
430850
4157403
2982038
2026-10-24T11:23:27Z
Frodlekis
762
4157403
wikitext
text/x-wiki
{{kategorinavigering|Forniriska}}
{{faktaruta språk}}
7zslifu9om5as35h9suif4xcqzzdf5q
Kategori:Fornkymriska
14
432433
4157386
2982039
2026-10-24T04:44:22Z
Frodlekis
762
4157386
wikitext
text/x-wiki
{{kategorinavigering|Fornkymriska}}
{{faktaruta språk}}
46oqqmcbxdhsi9zf2n7ru723hvr1nms
Kategori:Avestiska
14
432444
4157258
2981388
2026-10-24T00:17:23Z
Frodlekis
762
4157258
wikitext
text/x-wiki
{{kategorinavigering|Avestiska}}
{{faktaruta språk}}
jrm32e4ntjiqf0wv1hm9fetqqoulths
Kategori:Aleutiska
14
432451
4157234
2981225
2026-10-23T23:10:40Z
Frodlekis
762
4157234
wikitext
text/x-wiki
{{kategorinavigering|Aleutiska}}
{{faktaruta språk}}
==Källor==
<references/>
h0jqoawn94espnsvjxl2e2ccc21lksm
Kategori:Fornlågfrankiska
14
432453
4157390
1643377
2026-10-24T04:47:08Z
Frodlekis
762
4157390
wikitext
text/x-wiki
{{kategorinavigering|Fornlågfrankiska}}
{{faktaruta språk}}
80m042sjert03cgwkki8j5tpodgx0v7
Suesya
0
443591
4157322
3541889
2026-10-24T01:41:53Z
Frodlekis
762
4157322
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''Suesya'''
#{{tagg|kat=länder|språk=bcl}} [[Sverige]]
5xv1x9h2r6wkgk60sl3wvi5kfsk3wsd
Kategori:Centralnahuatl
14
446577
4157357
3145304
2026-10-24T02:30:13Z
Frodlekis
762
4157357
wikitext
text/x-wiki
{{kategorinavigering|Centralnahuatl}}
{{faktaruta språk}}
[[Kategori:Nahuatl]]
9fa2yyb0go0bs358ud088xsmilouo74
Kategori:Central bikol/Länder
14
518035
4157319
2981516
2026-10-24T01:41:22Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Länder]] till [[Kategori:Central bikol/Länder]] utan att lämna en omdirigering
2981516
wikitext
text/x-wiki
{{kategorinavigering|Bikol|Länder|Toponymer}}
4cqib9y7chu1dakuuwl1bqclni0z2rs
4157320
4157319
2026-10-24T01:41:33Z
Frodlekis
762
4157320
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Länder|Toponymer}}
581e6xc3zm6der0ey70bmu0ixpqasd3
Kategori:Fornturkiska
14
518176
4157367
2982064
2026-10-24T04:15:27Z
Frodlekis
762
4157367
wikitext
text/x-wiki
{{kategorinavigering|Fornturkiska}}
{{faktaruta språk}}
4gqmp3rspawtrii8lxml2gt1608mooi
Kategori:Central bikol/Toponymer
14
518556
4157289
2030781
2026-10-24T01:25:16Z
Frodlekis
762
4157289
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Toponymer|Geografi|Egennamn}}
h00054kjb7vtsxkucowyjl8snbig5hs
4157290
4157289
2026-10-24T01:25:36Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Toponymer]] till [[Kategori:Central bikol/Toponymer]]
4157289
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Toponymer|Geografi|Egennamn}}
h00054kjb7vtsxkucowyjl8snbig5hs
Kategori:Egyptiska
14
519374
4157414
2981765
2026-10-24T11:43:13Z
Frodlekis
762
4157414
wikitext
text/x-wiki
{{kategorinavigering|Egyptiska}}
{{faktaruta språk}}
77x3trau1cizp5yer09gzl860x8rkz1
Kategori:Central bikol/Geografi
14
519386
4157300
2034305
2026-10-24T01:32:43Z
Frodlekis
762
4157300
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Geografi|Diverse}}
0xfmru68kiqepeli9zdriu7714djlto
4157301
4157300
2026-10-24T01:32:55Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Geografi]] till [[Kategori:Central bikol/Geografi]] utan att lämna en omdirigering
4157300
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Geografi|Diverse}}
0xfmru68kiqepeli9zdriu7714djlto
Kategori:Forndanska
14
519389
4157378
2982015
2026-10-24T04:29:59Z
Frodlekis
762
4157378
wikitext
text/x-wiki
{{kategorinavigering|Forndanska}}
{{faktaruta språk}}
56agp3mdrun70dajpf405op91900mrr
Kategori:Central bikol/Egennamn
14
519397
4157313
2034317
2026-10-24T01:38:52Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Egennamn]] till [[Kategori:Central bikol/Egennamn]]
2034317
wikitext
text/x-wiki
{{kategorinavigering|Bikol|Egennamn|Index|nyckel=6}}
lyliecjbxujtxo0n7zydjzzhuzg1qaa
4157315
4157313
2026-10-24T01:39:28Z
Frodlekis
762
4157315
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Egennamn|Index|nyckel=6}}
gms0rlftie6rnd6tlzgdbdxxqjnaea6
Kategori:Central bikol/Diverse
14
520986
4157298
2040645
2026-10-24T01:32:10Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Diverse]] till [[Kategori:Central bikol/Diverse]] utan att lämna en omdirigering
2040645
wikitext
text/x-wiki
{{kategorinavigering|Bikol|Diverse|Index|nyckel=6}}
thnezum0x8w2ubfskafrf06vlncitpy
4157299
4157298
2026-10-24T01:32:22Z
Frodlekis
762
4157299
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Diverse|Index|nyckel=6}}
q4e1au8bxtkg4figafba1vc453zga70
chill
0
529950
4157139
3813818
2026-10-23T15:52:39Z
~2026-56702-21
62364
/* Svenska */
4157139
wikitext
text/x-wiki
==Svenska==
===Adjektiv===
{{sv-adj}}
'''chill'''
#{{tagg|vardagligt}} [[lugn]], inte [[jobbig]], [[skön]] att [[ha och göra med]]
#:''Min engelskalärare är fett '''chill''', hon ger oss typ aldrig läxor.''
#:{{etymologi|Av {{härledning|sv|en|chill}}.}}
#:{{besläktade ord|chilla}}
===Adverb===
{{adv|sv}}
'''chill'''
#{{tagg|vardagligt}} [[lugnt]]
#:''Här ligger jag och har det '''chill'''.''
#:''Men ta det lite '''chill''' jaow.''
#:{{etymologi|Av {{härledning|sv|en|chill}}.}}
#:{{besläktade ord|chilla}}
==Engelska==
===Substantiv===
{{en-subst}}
'''chill'''
#svagare [[kyla]]
#:{{fraser|[[wind chill]]}}
#:''There was a '''chill''' in the air.''
#::''Det var lite '''kyligt''' i luften.''
#plötslig [[kalluft]]
#känsla av [[oro]] eller [[obehag]], [[obehangskänsla]], [[oroskänsla]]
#:''Despite the heat, he felt a '''chill''' as he entered the crime scene.''
#::''Hettan till trots började han kallsvettas när han kom till brottsplatsen.''
===Adjektiv===
{{adj|en}}
'''chill''' {{peri|more|most}}
#[[småkylig]], lite [[kall]]
#{{tagg|slang|språk=en}} [[lugn]], [[avslappnad]], [[tillbakalutad]]
#{{tagg|slang|språk=en}} [[okej]], ingen fara, lugn, inga problem
#:''It's '''chill'''.''
#::''Det är '''lugnt'''.''
===Verb===
{{en-verb}}
'''chill'''
#[[kyla]]
#[[kallna]]
#{{tagg|slang|språk=en}} [[slappna av]], luta sig tillbaka
#{{tagg|slang|språk=en}} [[ta det lugnt]], [[chilla]]
#{{tagg|slang|språk=en}} [[hänga]], [[umgås]] på ett avslappnat sätt
#:{{varianter|[[chill out]]}}
#{{tagg|slang|språk=en}} [[röka på]], röka marijuana
#[[sänka]] eller [[minska]] genom att [[avskräcka]]
83n3kw0uhqrdnfl4uq3lgql9cofrs32
4157140
4157139
2026-10-23T15:53:13Z
~2026-56702-21
62364
4157140
wikitext
text/x-wiki
==Svenska==
===Adjektiv===
{{sv-adj}}
'''chill'''
#{{tagg|vardagligt}} [[lugn]], inte [[jobbig]], [[skön]] att [[ha och göra med]]
#:''Min engelskalärare är fett '''chill''', hon ger oss typ aldrig läxor.''
#:{{etymologi|{{belagt|sv|1998}}<ref>{{källa-so}}</ref> Av {{härledning|sv|en|chill}}.}}
#:{{besläktade ord|chilla}}
===Adverb===
{{adv|sv}}
'''chill'''
#{{tagg|vardagligt}} [[lugnt]]
#:''Här ligger jag och har det '''chill'''.''
#:''Men ta det lite '''chill''' jaow.''
#:{{etymologi|Av {{härledning|sv|en|chill}}.}}
#:{{besläktade ord|chilla}}
==Engelska==
===Substantiv===
{{en-subst}}
'''chill'''
#svagare [[kyla]]
#:{{fraser|[[wind chill]]}}
#:''There was a '''chill''' in the air.''
#::''Det var lite '''kyligt''' i luften.''
#plötslig [[kalluft]]
#känsla av [[oro]] eller [[obehag]], [[obehangskänsla]], [[oroskänsla]]
#:''Despite the heat, he felt a '''chill''' as he entered the crime scene.''
#::''Hettan till trots började han kallsvettas när han kom till brottsplatsen.''
===Adjektiv===
{{adj|en}}
'''chill''' {{peri|more|most}}
#[[småkylig]], lite [[kall]]
#{{tagg|slang|språk=en}} [[lugn]], [[avslappnad]], [[tillbakalutad]]
#{{tagg|slang|språk=en}} [[okej]], ingen fara, lugn, inga problem
#:''It's '''chill'''.''
#::''Det är '''lugnt'''.''
===Verb===
{{en-verb}}
'''chill'''
#[[kyla]]
#[[kallna]]
#{{tagg|slang|språk=en}} [[slappna av]], luta sig tillbaka
#{{tagg|slang|språk=en}} [[ta det lugnt]], [[chilla]]
#{{tagg|slang|språk=en}} [[hänga]], [[umgås]] på ett avslappnat sätt
#:{{varianter|[[chill out]]}}
#{{tagg|slang|språk=en}} [[röka på]], röka marijuana
#[[sänka]] eller [[minska]] genom att [[avskräcka]]
==Källor==
<references/>
lyw6iv8ekzaof8iwkekj7oppzngbpo4
4157141
4157140
2026-10-23T15:54:39Z
~2026-56702-21
62364
4157141
wikitext
text/x-wiki
==Svenska==
===Adjektiv===
{{sv-adj}}
'''chill'''
#{{tagg|vardagligt}} [[lugn]], inte [[jobbig]], [[skön]] att [[ha och göra med]]
#:''Min engelskalärare är fett '''chill''', hon ger oss typ aldrig läxor.''
#:{{etymologi|{{belagt|sv|1998}}<ref>{{källa-so}}</ref> Av {{härledning|sv|en|chill}}.}}
#:{{besläktade ord|chilla}}
===Adverb===
{{adv|sv}}
'''chill'''
#{{tagg|vardagligt}} [[lugnt]]
#:''Här ligger jag och har det '''chill'''.''
#:''Men ta det lite '''chill''' jaow.''
#:{{etymologi|Av {{härledning|sv|en|chill}}.}}
#:{{besläktade ord|chilla}}
===Substantiv===
{{sv-subst-t-0}}
'''chill''' {{n}}
#{{tagg|vardagligt}} lugn och avslappnad aktivitet
#:{{etymologi|{{belagt|sv|2005}}<ref>{{källa-so}}</ref> Av {{härledning|sv|en|chill}}.}}
==Engelska==
===Substantiv===
{{en-subst}}
'''chill'''
#svagare [[kyla]]
#:{{fraser|[[wind chill]]}}
#:''There was a '''chill''' in the air.''
#::''Det var lite '''kyligt''' i luften.''
#plötslig [[kalluft]]
#känsla av [[oro]] eller [[obehag]], [[obehangskänsla]], [[oroskänsla]]
#:''Despite the heat, he felt a '''chill''' as he entered the crime scene.''
#::''Hettan till trots började han kallsvettas när han kom till brottsplatsen.''
===Adjektiv===
{{adj|en}}
'''chill''' {{peri|more|most}}
#[[småkylig]], lite [[kall]]
#{{tagg|slang|språk=en}} [[lugn]], [[avslappnad]], [[tillbakalutad]]
#{{tagg|slang|språk=en}} [[okej]], ingen fara, lugn, inga problem
#:''It's '''chill'''.''
#::''Det är '''lugnt'''.''
===Verb===
{{en-verb}}
'''chill'''
#[[kyla]]
#[[kallna]]
#{{tagg|slang|språk=en}} [[slappna av]], luta sig tillbaka
#{{tagg|slang|språk=en}} [[ta det lugnt]], [[chilla]]
#{{tagg|slang|språk=en}} [[hänga]], [[umgås]] på ett avslappnat sätt
#:{{varianter|[[chill out]]}}
#{{tagg|slang|språk=en}} [[röka på]], röka marijuana
#[[sänka]] eller [[minska]] genom att [[avskräcka]]
==Källor==
<references/>
sf3tbhddk2hqa52u3mk4mnpkple8tqo
Kategori:Fornspanska
14
584954
4157375
2274067
2026-10-24T04:23:24Z
Frodlekis
762
4157375
wikitext
text/x-wiki
{{kategorinavigering|Fornspanska}}
{{faktaruta språk}}
eh3uvnnqp2905ai98eygrqan1yp1hmi
Kategori:Cora
14
588855
4157408
2290972
2026-10-24T11:30:01Z
Frodlekis
762
4157408
wikitext
text/x-wiki
{{kategorinavigering|Cora}}
{{faktaruta språk}}
q1uurm9xchblnsthfm94lm7e34fy0is
ökensångare
0
598048
4157152
3870212
2026-10-23T18:49:59Z
Tapio Toola
59668
+fi: [[kääpiökerttu]] (assisterat)
4157152
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-0|are=|rot=ökensångar}}
'''[[öken]][[sångare]]'''
#{{tagg|kat=fågelarter|kat2=fåglar}} en fågelart ''([[Sylvia nana]])'' inom familjen [[sylvider]] ''([[Sylviidae]])'' inom ordningen [[tättingar]] ''([[Passeriformes]])''; individ av den art
====Översättningar====
{{ö-topp|en fågelart inom familjen sylvider inom ordningen tättingar}}
*engelska: {{ö+|en|Asian desert warbler}}
*finska: {{ö+|fi|kääpiökerttu}}
*franska: {{ö|fr|fauvette naine|f}}
*nederländska: {{ö|nl|woestijngrasmus}}
*turkiska: {{ö+|tr|çöl ötleğeni}}
*tyska: {{ö|de|Wüstengrasmücke|f}}
{{ö-botten}}
muqbzzsw24jrwa9bs1vyantccbf7ouj
Kategori:Central bikol/Amerikanska delstater
14
623215
4157323
2518117
2026-10-24T01:42:42Z
Frodlekis
762
4157323
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Amerikanska delstater|Toponymer}}
t3wvirebc54c1klrloxjgzv5jsbp8yb
4157324
4157323
2026-10-24T01:42:54Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Amerikanska delstater]] till [[Kategori:Central bikol/Amerikanska delstater]] utan att lämna en omdirigering
4157323
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Amerikanska delstater|Toponymer}}
t3wvirebc54c1klrloxjgzv5jsbp8yb
Modul:lang/data
828
650602
4157282
4155339
2026-10-24T01:21:52Z
Frodlekis
762
4157282
Scribunto
text/plain
local data = {}
local u = mw.ustring.char
-- UTF-8 encoded strings for some commonly-used diacritics
local GRAVE = u(0x0300)
local ACUTE = u(0x0301)
local CIRC = u(0x0302)
local TILDE = u(0x0303)
local MACRON = u(0x0304)
local BREVE = u(0x0306)
local DOTABOVE = u(0x0307)
local DIAER = u(0x0308)
local CARON = u(0x030C)
local DGRAVE = u(0x030F)
local INVBREVE = u(0x0311)
local DOTBELOW = u(0x0323)
local RINGBELOW = u(0x0325)
local CEDILLA = u(0x0327)
local OGONEK = u(0x0328)
local RSQUO = u(0x2019)
local PSILI = u(0x1FBD)
local CORONIS = u(0x1FBF)
-- possible attributes: name, nolemma, (script), sort_rules, source, entry_name
data["--"] = {
name = "tvärspråkligt",
source = "Wiktionary"
}
data["abq"] = {
name = "abazinska",
source = "ISO 639-3"
}
data["ab"] = {
name = "abchaziska",
source = "Wiktionary",
entry_name = {
from = {GRAVE, ACUTE},
to = {}
}
}
data["abe"] = {
name = "abenakiska",
source = "ISO 639-3"
}
data["ace"] = {
name = "acehnesiska",
source = "Wikimedia"
}
data["ady"] = {
name = "adygeiska",
source = "ISO 639-3"
}
data["aa"] = {
name = "afar",
source = "Wiktionary",
sort_rules = {"t>b~", "s>b¡", "e>b°", "k>c~", "x>c¡", "i>c°", "q>d~", "r>d¡", "o>g~", "h>w~"}
}
data["af"] = {
name = "afrikaans",
source = "Wiktionary"
}
data["ain"] = {
name = "ainu",
source = "ISO 639-3"
}
data["ak"] = {
name = "akan",
source = "Wiktionary"
}
data["akk"] = {
name = "akkadiska",
source = "ISO 639-3"
}
data["sia"] = {
name = "akkalasamiska",
source = "ISO 639-3"
}
data["sq"] = {
name = "albanska",
source = "Wiktionary",
sort_rules = {"ç>c~", "dh>d~", "ë>e~", "gj>g~", "ll>l~", "nj>n~", "rr>r~", "sh>s~", "th>t~", "xh>x~", "zh>z~"}
}
data["als"] = { -- enwikt och ISO 639-3 "gsw"
name = "alemanniska",
source = "Wiktionary"
}
data["ale"] = {
name = "aleutiska",
source = "ISO 639-3"
}
data["tut"] = {
name = "altaiska",
source = "ISO 639-2"
}
data["am"] = {
name = "amhariska",
source = "Wiktionary"
}
data["xaa"] = {
name = "andalusisk arabiska",
source = "ISO 639-3"
}
data["xno"] = {
name = "anglo-normandiska",
source = "ISO 639-3"
}
data["ar"] = {
name = "arabiska",
source = "Wiktionary",
entry_name = {
from = {u(0x0671), u(0x064B), u(0x064C), u(0x064D), u(0x064E), u(0x064F), u(0x0650), u(0x0651), u(0x0652), u(0x0670), u(0x0640)},
to = {u(0x0627)}
}
}
data["an"] = {
name = "aragonska",
source = "Wiktionary"
}
data["arc"] = {
name = "arameiska",
source = "Wikimedia"
}
data["hy"] = {
name = "armeniska",
source = "Wiktionary",
entry_name = {
from = {"՞", "՜", "՛", "՟", "<sup>յ</sup>", "<sup>ի</sup>"},
to = {"", "", "", "", "յ", "ի"}
}
}
data["roa-rup"] = {
name = "arumänska",
source = "Wiktionary"
}
data["as"] = {
name = "assamesiska",
source = "Wiktionary"
}
data["ast"] = {
name = "asturiska",
source = "Wiktionary",
sort_rules = {"ñ>n~"}
}
data["av"] = {
name = "avariska",
source = "Wiktionary",
entry_name = {
from = {GRAVE, ACUTE},
to = {}
}
}
data["ave"] = {
name = "avestiska",
source = "ISO 639-3"
}
data["ay"] = {
name = "aymara",
source = "Wiktionary"
}
data["az"] = {
name = "azerbajdzjanska",
source = "Wiktionary",
sort_rules = {"ç>c~", "ə>e~", "ğ>g~", "x>h~", "ı>h¡", "q>k~", "ö>o~", "ş>s~", "ü>u~"}
}
data["ban"] = {
name = "balinesiska",
source = "ISO 639-3"
}
data["bal"] = {
name = "baluchiska",
source = "ISO 639-2"
}
data["bm"] = {
name = "bambara",
source = "Wiktionary"
}
data["bjn"] = {
name = "banjaresiska",
source = "ISO 629-3"
}
data["ba"] = {
name = "basjkiriska",
source = "Wiktionary"
}
data["eu"] = {
name = "baskiska",
source = "Wiktionary",
sort_rules = {"ñ>n~"}
}
data["bbl"] = {
name = "bats",
source = "ISO 639-3",
entry_name = {
from = {"̃", "<sup>ნ</sup>", MACRON, BREVE},
to = {"", "ნ"}
}
}
data["bar"] = {
name = "bayerska",
source = "ISO 639-3"
}
data["be"] = {
name = "belarusiska",
source = "Wiktionary",
sort_rules = {"ć>c~", "č>¡", "dz>d~", "dź>d¡", "dž>d°", "ch>h~", "ł>l~", "ń>n~", "ś>s~", "š>¡", "ŭ>u~", "ź>z~", "ž>z¡"},
entry_name = {
from = {"Ѐ", "ѐ", GRAVE, ACUTE},
to = {"Е", "е"}
}
}
data["bem"] = {
name = "bemba",
source = "ISO 639-3"
}
data["bn"] = {
name = "bengali",
source = "Wiktionary"
}
data["ber"] = {
name = "berberspråk",
source = "ISO 639-2"
}
data["bym"] = {
name = "bidjara",
source = "ISO 639-3"
}
data["bh"] = {
name = "bihari",
source = "Wiktionary"
}
data["bcl"] = {
name = "central bikol",
source = "Wikimedia"
}
data["bpy"] = {
name = "bishnupriya manipuri",
source = "Wikimedia"
}
data["bi"] = {
name = "bislama",
source = "Wiktionary"
}
data["no"] = {
name = "bokmål",
source = "Wiktionary",
sort_rules = {"æ>æ", "ä>æ", "ø>ø", "å>ø~", "œ>ø", "ö>ø"}
}
data["bs"] = {
name = "bosniska",
source = "Wiktionary",
sort_rules = {"č>c~", "ć>c¡", "dž>d~", "đ>d¡", "lj>l~", "nj>n~", "š>s~", "ž>z~", "ð>d¡"},
entry_name = {
from = {"[ȀÀȂÁĀÃ]", "[ȁàȃáāã]", "[ȄÈȆÉĒẼ]", "[ȅèȇéēẽ]", "[ȈÌȊÍĪĨ]", "[ȉìȋíīĩ]", "[ȌÒȎÓŌÕ]", "[ȍòȏóōõ]", "[ȐȒŔ]", "[ȑȓŕ]", "[ȔÙȖÚŪŨ]", "[ȕùȗúūũ]", "Ѐ", "ѐ", "[ӢЍ]", "[ӣѝ]", "[Ӯ]", "[ӯ]", GRAVE, ACUTE, DGRAVE, INVBREVE, MACRON, TILDE},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "R" , "r" , "U" , "u" , "Е", "е", "И" , "и", "У", "у" }
}
}
data["br"] = {
name = "bretonska",
source = "Wiktionary"
}
data["bug"] = {
name = "buginesiska",
source = "Wikimedia"
}
data["bg"] = {
name = "bulgariska",
source = "Wiktionary",
entry_name = {
from = {"Ѐ", "ѐ", "Ѝ", "ѝ", GRAVE, ACUTE},
to = {"Е", "е", "И", "и"}
}
}
data["btx"] = {
name = "batak karo",
source = "ISO 639-3"
}
data["bxr"] = {
name = "burjatiska",
source = "Wikimedia",
sort_rules = {"ç>c~", "ө>o~", "ş>s~", "ƶ>z~"}
}
data["my"] = {
name = "burmesiska",
source = "Wiktionary"
}
data["cps"] = {
name = "capiznon",
source = "ISO 639-3"
}
data["ceb"] = {
name = "cebuano",
source = "Wikimedia"
}
data["nhn"] = {
name = "centralnahuatl",
source = "ISO 639-3"
}
data["ch"] = {
name = "chamorro",
source = "Wiktionary"
}
data["kca"] = {
name = "chantiska",
source = "ISO 639-3",
sort_rules = {"ә>e~", "һ>h~", "ļ>l~", "ł>l¡", "ņ>n~", "ŋ>n¡", "ş>s~", "s̷>s¡", "ƶ>z~", "ƅ>ƅ"}
}
data["cbk"] = {
name = "chavacano",
source = "ISO 639-3"
}
data["chr"] = {
name = "cherokesiska",
source = "Wiktionary"
}
data["chy"] = {
name = "cheyenne",
source = "Wikimedia"
}
data["ny"] = {
name = "chichewa",
source = "Wikimedia",
entry_name = {
from = {"ŵ", "Ŵ", "á", "Á", "é", "É", "í", "Í", "ó", "Ó", "ú", "Ú", "ń", "Ń", "ḿ", "Ḿ"},
to = {"w", "W", "a", "A", "e", "E", "i", "I", "o", "O", "u", "U", "n", "N", "m", "M"}
}
}
data["chn"] = {
name = "chinook jargon",
source = "ISO 639-3"
}
data["chk"] = {
name = "chuukesiska",
source = "ISO 639-3"
}
data["cia"] = {
name = "cia-cia",
source = "ISO 639-3"
}
data["crn"] = {
name = "cora",
source = "ISO 639-3"
}
data["cr"] = {
name = "cree",
source = "Wiktionary"
}
data["dag"] = {
name = "dagbanli",
source = "ISO 639-3"
}
data["btd"] = {
name = "dairi batak",
source = "ISO 639-3"
}
data["da"] = {
name = "danska",
source = "Wiktionary",
sort_rules = {"æ>æ", "ä>æ", "ø>ø", "å>ø~", "œ>ø", "ö>ø"}
}
data["prs"] = {
name = "dari",
source = "ISO 639-3"
}
data["egy-dem"] = {
name = "demotiska",
source = "ISO 639-2 / konstruerad"
}
data["din"] = {
name = "dinka",
source = "ISO 639-3",
sort_rules = {"ä>a~", "dh>d~", "ë>e~", "ɛ>e¡", "ɛ̈>e°", "ɣ>g~", "ï>i~", "nh>n~", "ny>n¡", "ŋ>n°", "ö>o~", "ɔ>o¡", "ɔ̈>o°", "th>t~"}
}
data["dv"] = {
name = "divehi",
source = "Wikimedia"
}
data["dz"] = {
name = "dzongkha",
source = "Wiktionary"
}
data["smn"] = {
name = "enaresamiska",
source = "ISO 639-3"
}
data["en"] = {
name = "engelska",
source = "Wiktionary",
sort_rules = {} -- no special rules
}
data["egy"] = {
name = "egyptiska",
source = "ISO 639-3"
}
data["myv"] = {
name = "erzya",
source = "Wikimedia"
}
data["eo"] = {
name = "esperanto",
source = "Wiktionary",
sort_rules = {"ĉ>c~", "ĝ>g~", "ĥ>h~", "ĵ>j~", "ŝ>s~", "ŭ>u~"}
}
data["et"] = {
name = "estniska",
source = "Wiktionary",
sort_rules = {"š>s~", "z>s¡", "ž>s°", "õ>w~", "ä>w¡", "ö>w°", "ü>w²"}
}
data["ett"] = {
name = "etruskiska",
source = "ISO 639-3"
}
data["evn"] = {
name = "evenki",
source = "ISO 639-3"
}
data["ee"] = {
name = "ewe",
source = "ISO 639-3",
sort_rules = {"ɖ>d~", "dz>d~", "ɛ>e~", "ƒ>f~", "gb>g~", "ɣ>g¡", "kp>k~", "ny>n~", "ŋ>n¡", "ts>t~", "ʋ>v~"}
}
data["ext"] = {
name = "extremaduriska",
source = "ISO 639-3",
sort_rules = {"ñ>n~"}
}
data["fan"] = {
name = "fang",
source = "ISO 639-3"
}
data["phn"] = {
name = "feniciska",
source = "ISO 639-3"
}
data["fj"] = {
name = "fiji",
source = "Wiktionary"
}
data["hif"] = {
name = "fijiansk hindi",
source = "Wikimedia"
}
data["fil"] = {
name = "filipino",
source = "ISO 639-3",
sort_rules = {"ñ>n~", "ng>n¡"}
}
data["fi"] = {
name = "finska",
source = "Wiktionary",
sort_rules = {"š>s", "ž>z", "å>z~", "ä>ä", "ö>ö"},
entry_name = {
from = {"ˣ"}, -- Used to indicate gemination of the next consonant
to = {}
}
}
data["rmf"] = {
name = "finsk romani",
source = "ISO 639-3"
}
data["gmq-fda"] = { --enwikt gmq-oda
name = "forndanska",
source = "ISO 639-5 / konstruerad",
entry_name = {
from = {"Ā", "ā", "Ē", "ē", "Ī", "ī", "Ō", "ō", "Ū", "ū", "Ȳ", "ȳ", "Ǣ", "ǣ", "Ø̄", "ø̄", MACRON},
to = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "Y", "y", "Æ", "æ", "Ø", "ø"}
}
}
data["ang"] = {
name = "fornengelska",
source = "Wiktionary",
entry_name = {
from = {"[ĀÁ]", "[āá]", "[ǢǼ]", "[ǣǽ]", "Ċ", "ċ", "[ĒÉ]", "[ēé]", "Ġ", "ġ", "[ĪÍ]", "[īí]", "[ŌÓ]", "[ōó]", "[ŪÚ]", "[ūú]", "[ȲÝ]", "[ȳý]", MACRON, ACUTE, DOTABOVE},
to = {"A", "a", "Æ", "æ", "C", "c", "E", "e", "G", "g", "I", "i", "O", "o", "U", "u", "Y", "y"}
},
sort_rules = {} -- no special rules
}
data["frk"] = {
name = "fornfrankiska",
source = "ISO 639-3"
}
data["fro"] = {
name = "fornfranska",
source = "ISO 639-3"
}
data["ofs"] = {
name = "fornfrisiska",
source = "ISO 639-3",
entry_name = {
from = {"[ĀÂ]", "[āâ]", "[ĒÊ]", "[ēê]", "[ĪÎ]", "[īî]", "[ŌÔ]", "[ōô]", "[ŪÛ]", "[ūû]"},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "U" , "u"}
}
}
data["oge"] = {
name = "forngeorgiska",
source = "ISO 639-3",
entry_name = {
from = {"̂"},
to = {""}
}
}
data["goh"] = {
name = "fornhögtyska",
source = "ISO 639-3",
entry_name = {
from = {"[ĀÂ]", "[āâ]", "[ĒÊË]", "[ēêë]", "[ĪÎ]", "[īî]", "[ŌÔ]", "[ōô]", "[ŪÛ]", "[ūû]", "ʒ"},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "U" , "u" , "z" }
}
}
data["sga"] = {
name = "forniriska",
source = "ISO 639-3",
entry_name = {
from = {"ḟ", "ṡ", "Ḟ", "Ṡ", "ä", "ë", "ï", "ö", "ü", "·"},
to = {"f", "s", "F", "S", "a", "e", "i", "o", "u"}
}
}
data["owl"] = {
name = "fornkymriska",
source = "ISO 639-3"
}
data["cu"] = {
name = "fornkyrkoslaviska",
source = "Wikipedia",
entry_name = {
from = {u(0x0484)}, -- kamora
to = {}
}
}
data["odt"] = {
name = "fornlågfrankiska",
source = "ISO 639-3",
entry_name = {
from = {"[ĀÂ]", "[āâ]", "[ĒÊ]", "[ēê]", "[ĪÎ]", "[īî]", "[ŌÔ]", "[ōô]", "[ŪÛ]", "[ūû]"},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "U" , "u"}
}
}
data["non"] = {
name = "fornnordiska",
source = "ISO 639-2"
}
data["pro"] = {
name = "fornoccitanska",
source = "ISO 639-3"
}
data["peo"] = {
name = "fornpersiska",
source = "ISO 639-3"
}
data["roa-fpt"] = {
name = "fornportugisiska",
source = "ISO 639-5 / konstruerad"
}
data["osx"] = {
name = "fornsaxiska",
source = "ISO 639-3",
entry_name = {
from = {"[ĀÂ]", "[āâ]", "[ĒÊ]", "[ēê]", "[ĪÎ]", "[īî]", "[ŌÔ]", "[ōô]", "[ŪÛ]", "[ūû]"},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "U" , "u"}
}
}
data["osp"] = {
name = "fornspanska",
source = "ISO 639-3"
}
data["gmq-fsv"] = { --enwikt gmq-osw
name = "fornsvenska",
source = "ISO 639-5 / konstruerad",
sort_rules = {"þ>d~", "z>s~", "æ>y~", "ø>y¡"},
entry_name = {
from = {"Ā", "ā", "Ē", "ē", "Ī", "ī", "Ō", "ō", "Ū", "ū", "Ȳ", "ȳ", "Ǣ", "ǣ", "Ø̄", "ø̄", MACRON},
to = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "Y", "y", "Æ", "æ", "Ø", "ø"}
}
}
data["otk"] = {
name = "fornturkiska",
source = "ISO 639-3"
}
data["frp"] = {
name = "frankoprovensalska",
source = "Wikimedia"
}
data["fr"] = {
name = "franska",
source = "Wiktionary",
sort_rules = {"æ>ae", "œ>oe"}
}
data["fy"] = {
name = "frisiska",
source = "Wiktionary"
}
data["fur"] = {
name = "friuliska",
source = "ISO 639-3"
}
data["fud"] = {
name = "futuniska",
source = "ISO 639-3"
}
data["fo"] = {
name = "färöiska",
source = "Wiktionary",
sort_rules = {"á>a~", "ð>d~", "Ð>d~", "í>i~", "ó>o~", "ú>u~", "ý>y~", "æ>æ", "ø>ø"}
}
data["gag"] = {
name = "gagauziska",
source = "ISO 639-3",
sort_rules = {"ä>a~", "ç>c~", "ı>h~", "I>h~", "i>i", "İ>i", "ö>o~", "ş>s~", "ţ>t~", "ü>u~"}
}
data["gl"] = {
name = "galiciska",
source = "Wiktionary"
}
data["gez"] = {
name = "ge'ez",
source = "ISO 639-3"
}
data["ka"] = {
name = "georgiska",
source = "Wiktionary",
entry_name = {
from = {"̂"},
to = {""}
}
}
data["got"] = {
name = "gotiska",
source = "Wikimedia",
entry_name = {
from = {"Ā", "ā", "Ē", "ē", "Ī", "ī", "Ō", "ō", "Ū", "ū"},
to = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u"}
}
}
data["el"] = {
name = "grekiska",
source = "Wiktionary"
}
data["gos"] = {
name = "groningska",
source = "ISO 639-3"
}
data["kl"] = {
name = "grönländska",
source = "Wiktionary"
}
data["gnc"] = {
name = "guanche",
source = "ISO 639-3"
}
data["gn"] = {
name = "guaraní",
source = "Wiktionary",
sort_rules = {"ã>a~", "ch>a¡", "ẽ>e~", "g̃>g~", "ĩ>i~", "mb>m~", "nd>n~", "nt>n¡", "ñ>n°", "õ>o~", "rr>r~", "ũ>u~", "ỹ>y~"}
}
data["ngu"] = {
name = "guerreronahuatl",
source = "ISO 639-3",
}
data["gu"] = {
name = "gujarati",
source = "Wiktionary"
}
data["guz"] = {
name = "gusii",
source = "ISO 639-3"
}
data["h-nor"] = { -- enbart etymologi
name = "norska",
nolemma = true,
source = "ISO 639-5"
}
data["h-smi"] = { -- enbart etymologi
name = "samiska",
nolemma = true,
source = "ISO 639-5"
}
data["ht"] = {
name = "haitisk kreol",
source = "Wikimedia"
}
data["hak"] = {
name = "hakka",
source = "Wikimedia"
}
data["ha"] = {
name = "hausa",
source = "Wiktionary",
sort_rules = {"ɓ>b~", "ɗ>d~", "ƙ>k~", "sh>s~", "ts>t~", "ƴ>y~"},
entry_name = {
from = {"R̃", "r̃", "À", "à", "È", "è", "Ì", "ì", "Ò", "ò", "Ù", "ù", "Â", "â", "Ê", "ê", "Î", "î", "Ô", "ô", "Û", "û", "Ā", "ā", "Ē", "ē", "Ī", "ī", "Ō", "ō", "Ū", "ū", "Á", "á", "É", "é", "Í", "í", "Ó", "ó", "Ú", "ú", "Ā̀", "ā̀", "Ḕ", "ḕ", "Ī̀", "ī̀", "Ṑ", "ṑ", "Ū̀", "ū̀", GRAVE, ACUTE},
to = {"R", "r", "A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "A", "a", "E", "e", "I", "i", "O", "o", "U", "u"}
}
}
data["haw"] = {
name = "hawaiiska",
source = "Wikimedia",
sort_rules = {"i>e~", "o>e¡", "u>e°"}
}
data["he"] = {
name = "hebreiska",
source = "Wiktionary",
entry_name = {
from = {"[" .. u(0x0591) .. "-" .. u(0x05BD) .. u(0x05BF) .. "-" .. u(0x05C5) .. u(0x05C7) .. "]"},
to = {}
}
}
data["xed"] = {
name = "hedi",
source = "ISO 639-3"
}
data["hit"] = {
name = "hettitiska",
source = "ISO 639-3"
}
data["hil"] = {
name = "hiligaynon",
source = "ISO 639-2",
entry_name = {
from = {"Á", "á", "É", "é", "Í", "í", "Ó", "ó", "Ú", "ú", MACRON},
to = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u"}
}
}
data["hi"] = {
name = "hindi",
source = "Wiktionary"
}
data["hnd"] = {
name = "hindko",
source = "ISO 639-3"
}
data["mww"] = {
name = "hmong daw",
source = "ISO 639-3"
}
data["xhu"] = {
name = "hurritiska",
source = "ISO 639-3"
}
data["hsb"] = {
name = "högsorbiska",
source = "Wiktionary",
sort_rules = {"č>c~", "ć>c¡", "ě>e~", "ł>k~", "ń>n~", "ó>o~", "ř>r", "š>s~", "ž>z~", "ch>h"}
}
data["rmq"] = {
name = "iberisk romani",
source = "ISO 639-3"
}
data["io"] = {
name = "ido",
source = "Wiktionary"
}
data["ig"] = {
name = "igbo",
source = "Wikimedia",
sort_rules = {"gb>b~", "gh>g~", "ị>i~", "ṅ>n~", "ọ>o~", "kp>p~", "sh>sh~", "ụ>u~", "ch>z~", "gw>z¡", "kw>z°", "nw>z²", "ny>n³"}
}
data["ilo"] = {
name = "ilokano",
source = "Wikimedia",
entry_name = {
from = {"[áàâ]", "[éèê]", "[íìî]", "[óòô]", "[úùû]", ACUTE, GRAVE, CIRC},
to = {"a" , "e" , "i" , "o" , "u" }
}
}
data["id"] = {
name = "indonesiska",
source = "Wiktionary"
}
data["ia"] = {
name = "interlingua",
source = "Wiktionary"
}
data["ie"] = {
name = "interlingue",
source = "Wiktionary"
}
data["iu"] = {
name = "inuktitut",
source = "Wiktionary"
}
data["ik"] = {
name = "iñupiaq",
source = "Wiktionary"
}
data["ga"] = {
name = "iriska",
source = "Wiktionary",
sort_rules = {"á>a~", "é>e~", "í>i~", "ó>o~", "ú>u~"}
}
data["is"] = {
name = "isländska",
source = "Wiktionary",
sort_rules = {"á>a~", "ð>d~", "í>i~", "ó>o~", "ú>u~", "ý>y~", "þ>y¡", "æ>æ", "ö>ö"}
}
data["ist"] = {
name = "istriotiska",
source = "ISO 639-3"
}
data["it"] = {
name = "italienska",
source = "Wiktionary"
}
data["sah"] = {
name = "jakutiska",
source = "ISO 639-3"
}
data["ja"] = {
name = "japanska",
source = "Wiktionary"
}
data["jv"] = {
name = "javanesiska",
source = "Wiktionary",
sort_rules = {"é>e~", "è>e¡"}
}
data["yi"] = {
name = "jiddisch",
source = "Wiktionary"
}
data["kbd"] = {
name = "kabardinska",
source = "ISO 639-3"
}
data["kab"] = {
name = "kabyliska",
source = "ISO 639-3"
}
data["xal"] = {
name = "kalmuckiska",
source = "Wikimedia"
}
data["kam"] = {
name = "kamba",
source = "ISO 639-3"
}
data["xmu"] = {
name = "kammu",
source = "ISO 639-3"
}
data["kjb"] = {
name = "kanjobal",
source = "ISO 639-3"
}
data["kn"] = {
name = "kannada",
source = "Wiktionary"
}
data["yue"] = {
name = "kantonesiska",
source = "Wikimedia"
}
data["pam"] = {
name = "kapampangan",
source = "Wikimedia"
}
data["kaa"] = {
name = "karakalpakiska",
source = "ISO 639-3"
}
data["kr"] = {
name = "kanuri",
source = "Wikimedia",
entry_name = {
from = {"À", "à", "È", "è", "Ǝ̀", "ǝ̀", "Ì", "ì", "Ò", "ò", "Ù", "ù", "Â", "â", "Ê", "ê", "Ǝ̂", "ǝ̂", "Î", "î", "Ô", "ô", "Û", "û", "Ă", "ă", "Ĕ", "ĕ", "Ǝ̆", "ǝ̆", "Ĭ", "ĭ", "Ŏ", "ŏ", "Ŭ", "ŭ", "Á", "á", "É", "é", "Ǝ́", "ǝ́", "Í", "í", "Ó", "ó", "Ú", "ú", GRAVE, ACUTE},
to = {"A", "a", "E", "e", "Ǝ", "ǝ", "I", "i", "O", "o", "U", "u", "A", "a", "E", "e", "Ǝ", "ǝ", "I", "i", "O", "o", "U", "u", "A", "a", "E", "e", "Ǝ", "ǝ", "I", "i", "O", "o", "U", "u", "A", "a", "E", "e", "Ǝ", "ǝ", "I", "i", "O", "o", "U", "u"}
}
}
data["krc"] = {
name = "karatjajbalkariska",
source = "Wikimedia"
}
data["krl"] = {
name = "karelska",
source = "ISO 639-3"
}
data["ks"] = {
name = "kashmiri",
source = "Wiktionary"
}
data["csb"] = {
name = "kasjubiska",
source = "Wiktionary",
sort_rules = {"ą>a~", "ã>a¡", "é>e~", "ë>e¡", "ł>l~", "ń>n~", "ò>o~", "ó>o¡", "ô>o°", "ù>u~", "ż>z~"}
}
data["ca"] = {
name = "katalanska",
source = "Wiktionary"
}
data["kk"] = {
name = "kazakiska",
source = "Wiktionary"
}
data["kjh"] = {
name = "khakasiska",
source = "ISO 639-3"
}
data["km"] = {
name = "khmer",
source = "Wiktionary"
}
data["kzg"] = {
name = "kikai",
source = "ISO 639-3"
}
data["kg"] = {
name = "kikongo",
source = "Wikimedia"
}
data["ki"] = {
name = "kikuyu",
source = "Wikimedia"
}
data["sjd"] = {
name = "kildinsamiska",
source = "ISO 639-3"
}
data["zh"] = {
name = "kinesiska",
source = "Wiktionary"
}
data["ky"] = {
name = "kirgiziska",
source = "Wiktionary"
}
data["rn"] = {
name = "kirundi",
source = "Wiktionary"
}
data["ktu"] = {
name = "kituba",
source = "ISO 639-3"
}
data["grc"] = {
name = "klassisk grekiska",
source = "ISO 639-3",
entry_name = {
from = {"[ᾸᾹ]", "[ᾰᾱ]", "[ῘῙ]", "[ῐῑ]", "[ῨῩ]", "[ῠῡ]", "µ", "["..RSQUO..PSILI..CORONIS.."]", "["..MACRON..BREVE.."]" },
to = {"Α", "α", "Ι", "ι", "Υ", "υ", "μ", "'", ""}
}
}
data["nci"] = {
name = "klassisk nahuatl",
source = "ISO 639-3",
entry_name = {
from = {"Ā", "ā", "Ē", "ē", "Ī", "ī", "Ō", "ō", "Ū", "ū", "Ȳ", "ȳ"},
to = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "Y", "y"}
}
}
data["syc"] = {
name = "klassisk syriska",
source = "ISO 639-3",
}
data["tlh"] = {
name = "klingonska",
source = "ISO 639-3"
}
data["kpv"] = {
name = "komi",
source = "ISO 639-3"
}
data["cop"] = {
name = "koptiska",
source = "ISO 639-3",
entry_name = {
from = { "ˋ", GRAVE, MACRON, },
to = {},
}
}
data["ko"] = {
name = "koreanska",
source = "Wiktionary"
}
data["kpy"] = {
name = "korjakiska",
source = "ISO 639-3"
}
data["kw"] = {
name = "korniska",
source = "Wiktionary"
}
data["co"] = {
name = "korsikanska",
source = "Wiktionary",
sort_rules = {"chj>c~", "ghj>g~"}
}
data["avk"] = {
name = "kotava",
source = "ISO 639-3",
}
data["crh"] = {
name = "krimtatariska",
source = "Wikimedia",
sort_rules = {"ç>c~", "ı>h~", "ö>o~", "ş>s~", "ü>u~"}
}
data["jct"] = {
name = "krimtjakiska",
source = "ISO 639-3",
}
data["hr"] = {
name = "kroatiska",
source = "Wiktionary",
sort_rules = {"č>c~", "ć>c¡", "dž>d~", "đ>d¡", "lj>l~", "nj>n~", "š>s~", "ž>z~", "ð>d¡"},
entry_name = {
from = {"[ȀÀȂÁĀÃ]", "[ȁàȃáāã]", "[ȄÈȆÉĒẼ]", "[ȅèȇéēẽ]", "[ȈÌȊÍĪĨ]", "[ȉìȋíīĩ]", "[ȌÒȎÓŌÕ]", "[ȍòȏóōõ]", "[ȐȒŔ]", "[ȑȓŕ]", "[ȔÙȖÚŪŨ]", "[ȕùȗúūũ]", "Ѐ", "ѐ", "[ӢЍ]", "[ӣѝ]", "[Ӯ]", "[ӯ]", GRAVE, ACUTE, DGRAVE, INVBREVE, MACRON, TILDE},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "R" , "r" , "U" , "u" , "Е", "е", "И" , "и", "У", "у" }
}
}
data["kum"] = {
name = "kumykiska",
source = "ISO 639-3"
}
data["xug"] = {
name = "kunigami",
source = "ISO 639-3"
}
data["ku"] = {
name = "kurdiska",
source = "Wiktionary",
sort_rules = {"ç>c~", "ê>e~", "î>i~", "ş>s~", "û>u~"}
}
data["fkv"] = {
name = "kvänska",
source = "ISO 639-3"
}
data["cy"] = {
name = "kymriska",
source = "Wiktionary",
sort_rules = {"ch>c~", "dd>c~", "ff>f~", "ng>g~", "ll>l~", "ph>p~", "rh>r~"}
}
data["lad"] = {
name = "ladino",
source = "Wikimedia"
}
data["lld"] = {
name = "ladinska",
source = "ISO 639-3",
sort_rules = {"ese>e~"}
}
data["lbe"] = {
name = "lak",
source = "ISO 639-3"
}
data["lac"] = {
name = "lakandonska",
source = "ISO 639-3"
}
data["lkt"] = {
name = "lakota",
source = "ISO 639-3",
sort_rules = {"aŋ>a~", "č>b~", "čh>b¡", "č’>b°", "ǧ>g~", "ȟ>h~", "iŋ>i~", "kh>k~", "kȟ>k¡", "k’>k°", "ph>p~", "pȟ>p¡", "p’>p°", "š>s~", "th>t~", "tȟ>t¡", "t’>t°", "uŋ>u~", "ž>z~"}
}
data["lo"] = {
name = "lao",
source = "Wiktionary"
}
data["la"] = {
name = "latin",
source = "Wiktionary",
entry_name = {
from = {"[ĀĂ]", "[āă]", "[ĒĔ]", "[ēĕë]", "[ĪĬÏ]", "[īĭï]", "[ŌŎ]", "[ōŏ]", "[ŪŬÜ]", "[ūŭü]", "Ȳ", "ȳ", MACRON, BREVE, DIAER},
to = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "Y", "y"}
}
}
data["lzz"] = {
name = "laziska",
source = "ISO 639-3",
entry_name = {
from = {"̂", GRAVE, ACUTE},
to = {}
}
}
data["ltg"] = {
name = "lettgalliska",
source = "ISO 639-3",
sort_rules = {"ā>a~", "č>c~", "ē>e~", "ģ>g~", "ī>i~", "ķ>k~", "ļ>l~", "ņ>n~", "š>s~", "ū>u~", "ž>z~"}
}
data["lv"] = {
name = "lettiska",
source = "Wiktionary",
sort_rules = {"ā>a~", "č>c~", "ē>e~", "ģ>g~", "ī>i~", "ķ>k~", "ļ>l~", "ņ>n~", "š>s~", "ū>u~", "ž>z~"},
entry_name = {
-- This attempts to convert vowels with tone marks to vowels either with
-- or without macrons. Specifically, there should be no macrons if the
-- vowel is part of a diphthong (including resonant diphthongs such
-- pìrksts -> pirksts not #pīrksts). What we do is first convert the
-- vowel + tone mark to a vowel + tilde in a decomposed fashion,
-- then remove the tilde in diphthongs, then convert the remaining
-- vowel + tilde sequences to macroned vowels, then delete any other
-- tilde. We leave already-macroned vowels alone: Both e.g. ar and ār
-- occur before consonants. FIXME: This still might not be sufficient.
from = {"Ȩ", "ȩ", "[ÂÃÀ]", "[âãà]", "[ÊẼÈ]", "[êẽè]", "[ÎĨÌ]", "[îĩì]", "[ÔÕÒ]", "[ôõò]", "[ÛŨÙ]", "[ûũù]", "[ÑǸ]", "[ñǹ]", "[" .. CIRC .. TILDE ..GRAVE .."]", "([aAeEiIoOuU])" .. TILDE .."?([lrnmuiLRNMUI])" .. TILDE .. "?([^aAeEiIoOuUāĀēĒīĪūŪ])", "([aAeEiIoOuU])" .. TILDE .."?([lrnmuiLRNMUI])" .. TILDE .."?$", "([iI])" .. TILDE .. "?([eE])" .. TILDE .. "?", "A" .. TILDE, "a" .. TILDE, "E" .. TILDE, "e" .. TILDE, "I" .. TILDE, "i" .. TILDE, "U" .. TILDE, "u" .. TILDE, TILDE},
to = {"E", "e", "A" .. TILDE, "a" .. TILDE, "E" .. TILDE, "e" .. TILDE, "I" .. TILDE, "i" .. TILDE, "O", "o", "U" .. TILDE, "u" .. TILDE, "N", "n", TILDE, "%1%2%3", "%1%2", "%1%2", "Ā", "ā", "Ē", "ē", "Ī", "ī", "Ū", "ū", ""}
}
}
data["lez"] = {
name = "lezginska",
source = "ISO 639-3",
entry_name = {
from = {GRAVE, ACUTE},
to = {}
}
}
data["lij"] = {
name = "liguriska",
source = "Wikimedia"
}
data["li"] = {
name = "limburgiska",
source = "Wiktionary",
sort_rules = {"äö>a~", "è>e~", "ó>o~", "ö>o¡", "ô>o°", "q>z~", "x>z¡"}
}
data["ln"] = {
name = "lingala",
source = "Wiktionary"
}
data["lt"] = {
name = "litauiska",
source = "Wiktionary",
sort_rules = {"ą>a~", "ch>c~", "č>c¡", "ę>e~", "ė>e¡", "į>i~", "y>i¡", "š>s~", "ų>u~", "ū>u¡", "ž>z~"},
entry_name = {
from = {"[áãà]", "[ÁÃÀ]", "[éẽè]", "[ÉẼÈ]", "[íĩì]", "[ÍĨÌ]", "[ýỹ]", "[ÝỸ]", "ñ", "[óõò]", "[ÓÕÒ]", "[úũù]", "[ÚŨÙ]", ACUTE, GRAVE, TILDE},
to = {"a", "A", "e", "E", "i", "I", "y", "Y", "n", "o", "O", "u", "U"}
}
}
data["liv"] = {
name = "liviska",
source = "ISO 639-3",
sort_rules = {"ā>a~", "ä>a¡", "ǟ>a°", "ḑ>d~", "ē>e~", "ī>i~", "ļ>l~", "ņ>n~", "ō>o~", "ȯ>o¡", "ȱ>o°", "õ>o²", "ȭ>o³", "ŗ>r~", "š>s~", "ț>t~", "ū>u~", "ž>z~"}
}
data["olo"] = {
name = "livvi",
source = "ISO 639-3"
}
data["jbo"] = {
name = "lojban",
source = "Wiktionary"
}
data["lmo"] = {
name = "lombardiska",
source = "Wikimedia"
}
data["lg"] = {
name = "luganda",
source = "Wikimedia",
entry_name = {
from = {"á", "Á", "é", "É", "í", "Í", "ó", "Ó", "ú", "Ú", "ń", "Ń", "ḿ", "Ḿ", "â", "Â", "ê", "Ê", "î", "Î", "ô", "Ô", "û", "Û"},
to = {"a", "A", "e", "E", "i", "I", "o", "O", "u", "U", "n", "N", "m", "M", "a", "A", "e", "E", "i", "I", "o", "O", "u", "U"}
}
}
data["smj"] = {
name = "lulesamiska",
source = "ISO 639-3"
}
data["lb"] = {
name = "luxemburgiska",
source = "Wiktionary"
}
data["luy"] = {
name = "luhya",
source = "ISO 639-3"
}
data["sco"] = {
name = "lågskotska",
source = "Wikimedia"
}
data["dsb"] = {
name = "lågsorbiska",
source = "Wikimedia",
sort_rules = {"č>c~", "ć>c¡", "ě>e~", "ł>k~", "ń>n~", "ó>o~", "ŕ>r~", "š>s~", "ś>s¡", "ž>z~", "ź>z¡", "ch>h"}
}
data["nds"] = {
name = "lågtyska",
source = "Wiktionary"
}
data["mas"] = {
name = "maa",
source = "ISO 639-3"
}
data["mad"] = {
name = "maduresiska",
source = "ISO 639-3"
}
data["mai"] = {
name = "maithili",
source = "Wikimedia"
}
data["mak"] = {
name = "makassariska",
source = "ISO 639-3"
}
data["mk"] = {
name = "makedonska",
source = "Wiktionary",
entry_name = {
from = {ACUTE},
to = {}
}
}
data["mg"] = {
name = "malagassiska",
source = "Wiktionary"
}
data["ms"] = {
name = "malajiska",
source = "Wiktionary"
}
data["ml"] = {
name = "malayalam",
source = "Wiktionary"
}
data["mt"] = {
name = "maltesiska",
source = "Wiktionary",
sort_rules = {"ġ>f~", "għ>g~", "ħ>h~", "ie>i~", "ż>y~"}
}
data["mnc"] = {
name = "manchu",
source = "ISO 639-3"
}
data["mns"] = {
name = "mansiska",
source = "ISO 639-3"
}
data["gv"] = {
name = "manx",
source = "Wiktionary"
}
data["mi"] = {
name = "maori",
source = "Wiktionary"
}
data["arn"] = {
name = "mapudungun",
source = "Wikimedia"
}
data["mrh"] = {
name = "mara",
source = "ISO 639-3"
}
data["mr"] = {
name = "marathi",
source = "Wiktionary"
}
data["mh"] = {
name = "marshallesiska",
source = "Wiktionary"
}
data["mfe"] = {
name = "mauritisk kreol",
source = "ISO 639-3"
}
data["enm"] = {
name = "medelengelska",
source = "ISO 639-3",
entry_name = {
from = {"[ĀÁ]", "[āá]", "[ǢǼ]", "[ǣǽ]", "Ċ", "ċ", "[ĒÉĖ]", "[ēéė]", "Ġ", "ġ", "[ĪÍ]", "[īí]", "[ŌÓ]", "[ōó]", "[ŪÚ]", "[ūú]", "[ȲÝ]", "[ȳý]", MACRON, ACUTE, DOTABOVE},
to = {"A", "a", "Æ", "æ", "C", "c", "E", "e", "G", "g", "I", "i", "O", "o", "U", "u", "Y", "y"}
}
}
data["frm"] = {
name = "medelfranska",
source = "ISO 639-3"
}
data["gmh"] = {
name = "medelhögtyska",
source = "ISO 639-3",
entry_name = {
from = {"[ĀÂ]", "[āâ]", "[ĒÊË]", "[ēêë]", "[ĪÎ]", "[īî]", "[ŌÔ]", "[ōô]", "[ŪÛ]", "[ūû]"},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "U" , "u" },
}
}
data["gml"] = {
name = "medellågtyska",
source = "ISO 639-3",
entry_name = {
from = {"[ĀÂÄǞ]", "[āâäǟ]", "[ĒÊ]", "[ēê]", "[ĪÎ]", "[īî]", "[ŌÔÖȪ]", "[ōôöȫ]", "[ŪÛÜǕ]", "[ūûüǖ]", "[̂]"},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "U" , "u" , "" },
}
}
data["dum"] = {
name = "medelnederländska",
source = "ISO 639-3",
entry_name = {
from = {"[ĀÂ]", "[āâ]", "[ĒÊË]", "[ēêë]", "[ĪÎ]", "[īî]", "[ŌÔ]", "[ōô]", "[ŪÛ]", "[ūû]"},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "U" , "u"}
}
}
data["pal"] = {
name = "medelpersiska",
source = "ISO 639-3"
}
data["fit"] = {
name = "meänkieli",
source = "ISO 639-3",
sort_rules = {"š>s", "ž>z", "å>z~", "ä>ä", "ö>ö"}
}
data["min"] = {
name = "minangkabau",
source = "Wikimedia"
}
data["zh-min-nan"] = {
name = "min nan",
source = "Wiktionary"
}
data["mwl"] = {
name = "mirandesiska",
source = "ISO 629-3"
}
data["miq"] = {
name = "miskito",
source = "ISO 629-3",
entry_name = {
from = {"Â", "â", "Î", "î", "Û", "û"},
to = {"A", "a", "I", "i", "U", "u"}
}
}
data["mvi"] = {
name = "miyako",
source = "ISO 639-3"
}
data["mdf"] = {
name = "moksja",
source = "ISO 639-3"
}
data["mdh"] = {
name = "magindanao",
source = "ISO 639-3"
}
data["mo"] = {
name = "moldaviska",
source = "Wiktionary"
}
data["mn"] = {
name = "mongoliska",
source = "Wiktionary"
}
data["mos"] = {
name = "mossi",
source = "ISO 639-3"
}
data["mrw"] = {
name = "maranao",
source = "ISO 639-3"
}
data["gmy"] = {
name = "mykensk grekiska",
source = "ISO 639-3"
}
data["nah"] = {
name = "nahuatl",
source = "Wiktionary",
sort_rules = {"ch>c~", "cu>c¡", "hu>h~", "qu>q~", "tl>t~", "tz>t¡", "ā>ā", "ē>ē", "ī>ī", "ō>ō", "ll>ō~", "h>ō¡"}
}
data["pih"] = {
name = "norfuk",
source = "ISO 639-3",
sort_rules = {"aa>a~", "ee>e~", "ii>i~", "oo>o~", "uu>u~"}
}
data["na"] = {
name = "nauruanska",
source = "Wiktionary"
}
data["nv"] = {
name = "navajo",
source = "Wikimedia"
}
data["ng"] = {
name = "ndonga",
source = "Wikimedia"
}
data["nap"] = {
name = "neapolitanska",
source = "Wikimedia"
}
data["nl"] = {
name = "nederländska",
source = "Wiktionary"
}
data["ne"] = {
name = "nepali",
source = "Wiktionary"
}
data["nij"] = {
name = "ngaju dayak",
source = "ISO 639-3"
}
data["ryn"] = {
name = "nordamami",
source = "ISO 639-3"
}
data["frr"] = {
name = "nordfrisiska",
source = "ISO 639-3"
}
data["kmr"] = {
name = "nordkurdiska",
source = "ISO 639-3",
entry_name = {
from = {"'"},
to = {"’"}
}
}
data["nd"] = {
name = "nordndebele",
source = "ISO 639-1",
entry_name = {
from = {"[āàáâǎ]", "[ēèéêě]", "[īìíîǐ]", "[ōòóôǒ]", "[ūùúûǔ]", "ḿ", "[ǹńň]", MACRON, ACUTE, GRAVE, CIRC, CARON},
to = {"a" , "e" , "i" , "o" , "u" , "m", "n" }
}
}
data["se"] = {
name = "nordsamiska",
source = "Wikimedia",
sort_rules = {"á>a~", "č>c~", "đ>d~", "ŋ>n~", "š>s~", "ŧ>t~", "ž>z~", "ð>d~"},
entry_name = {
from = {"([đflmnŋrsšŧv])'%1"},
to = {"%1%1"}
}
}
data["nrm"] = {
name = "normandiska",
source = "Wiktionary"
}
data["nrn"] = {
name = "norn",
source = "ISO 639-3"
}
data["nov"] = {
name = "novial",
source = "Wikimedia"
}
data["nn"] = {
name = "nynorska",
source = "Wiktionary",
sort_rules = {"æ>æ", "ä>æ", "ø>ø", "å>ø~", "œ>ø", "ö>ø"}
}
data["aii"] = {
name = "nyöstsyriska",
source = "ISO 639-3"
}
data["oc"] = {
name = "occitanska",
source = "Wiktionary"
}
data["oj"] = {
name = "ojibwe",
source = "ISO 639-1"
}
data["ryu"] = {
name = "okinawianska",
source = "ISO 639-3"
}
data["okn"] = {
name = "okinoerabu",
source = "ISO 639-3"
}
data["or"] = {
name = "oriya",
source = "Wiktionary"
}
data["om"] = {
name = "oromo",
source = "Wiktionary"
}
data["orv"] = {
name = "fornöstslaviska",
source = "ISO 639-3",
entry_name = {
from = {u(0x0484)}, -- kamora
to = {}
}
}
data["ota"] = {
name = "osmanska",
source = "ISO 639-3"
}
data["os"] = {
name = "ossetiska",
source = "Wikimedia",
entry_name = {
from = {GRAVE, ACUTE},
to = {}
}
}
data["pau"] = {
name = "palauiska",
source = "ISO 639-3"
}
data["pi"] = {
name = "pali",
source = "Wiktionary"
}
data["pag"] = {
name = "pangasinan",
source = "ISO 639-3",
sort_rules = {"ng>n~"}
}
data["pap"] = {
name = "papiamento",
source = "Wikimedia"
}
data["ps"] = {
name = "pashto",
source = "Wiktionary"
}
data["jam"] = {
name = "patwa",
source = "ISO 639-3 (och Wikimedia)?"
}
data["pdc"] = {
name = "pennsylvaniatyska",
source = "ISO 639-3"
}
data["fa"] = {
name = "persiska",
source = "Wiktionary",
sort_rules = {"á>a~"},
entry_name = {
from = {u(0x064E), u(0x064F), u(0x0650), u(0x0651), u(0x0652)},
to = {}
}
}
data["pms"] = {
name = "piedmontesiska",
source = "Wikimedia"
}
data["pcd"] = {
name = "pikardiska",
source = "Wikimedia"
}
data["sje"] = {
name = "pitesamiska",
source = "ISO 639-3"
}
data["pjt"] = {
name = "pitjantjatjara",
source = "ISO 639-3",
sort_rules = {"ly>l~", "ḻ>l¡", "ng>n~", "ny>n¡", "ṉ>n°", "ṟ>r~", "tj>t~", "ṯ>t¡"}
}
data["pl"] = {
name = "polska",
source = "Wiktionary",
sort_rules = {"ą>a~", "ć>c~", "ę>e~", "ł>l~", "ń>n~", "ó>o~", "ś>s~", "ż>z~", "ź>z¡"}
}
data["pox"] = {
name = "polabiska",
source = "ISO 639-3"
}
data["pt"] = {
name = "portugisiska",
source = "Wiktionary"
}
data["pim"] = {
name = "powhatan",
source = "ISO 639-3"
}
data["prg"] = {
name = "preussiska",
source = "ISO 639-3"
}
data["pa"] = {
name = "punjabi",
source = "Wiktionary"
}
data["qu"] = {
name = "quechua",
source = "Wiktionary",
sort_rules = {"p>a~", "t>b~", "ch>c~", "k>d~", "q>d¡", "p'>d°", "t'>e~", "ch'>e¡", "k'>e°", "q'>f~", "ph>f¡", "th>f°", "chh>g~", "kh>g¡", "qh>g°", "s>g²", "sh>g³", "m>h~", "n>h¡", "ll>l~", "ñ>y~", "a>y¡", "i>y°", "u>y²"}
}
data["rej"] = {
name = "rejang",
source = "ISO 639-3"
}
data["rhg"] = {
name = "rohingya",
source = "ISO 639-3"
}
data["rom"] = {
name = "romani",
source = "ISO 639-2"
}
data["dru"] = {
name = "rukai",
source = "ISO 639-3"
}
data["ro"] = {
name = "rumänska",
source = "Wiktionary",
sort_rules = {"ă>a~", "â>a¡", "î>i~", "ş>s~", "ţ>t~"}
}
data["rue"] = {
name = "rusinska",
source = "ISO 639-3",
entry_name = {
from = {GRAVE, ACUTE},
to = {}
}
}
data["rw"] = {
name = "rwanda",
source = "Wiktionary"
}
data["ru"] = {
name = "ryska",
source = "Wiktionary",
entry_name = {
from = {"Ѐ", "ѐ", "Ѝ", "ѝ", GRAVE, ACUTE},
to = {"Е", "е", "И", "и"}
}
}
data["rm"] = {
name = "rätoromanska",
source = "Wiktionary"
}
data["sm"] = {
name = "samoanska",
source = "Wiktionary"
}
data["sg"] = {
name = "sango",
source = "Wiktionary"
}
data["sa"] = {
name = "sanskrit",
source = "Wiktionary"
}
data["sc"] = {
name = "sardiska",
source = "Wiktionary"
}
data["sas"] = {
name = "sasak",
source = "ISO 639-3"
}
data["stq"] = {
name = "saterfrisiska",
source = "ISO 639-3"
}
data["szl"] = {
name = "schlesiska",
source = "Wikimedia"
}
data["swg"] = {
name = "schwabiska",
source = "ISO 639-3"
}
data["sel"] = {
name = "selkupiska",
source = "ISO 639-3"
}
data["nso"] = {
name = "sepedi",
source = "ISO 639-3"
}
data["sr"] = {
name = "serbiska",
source = "Wiktionary",
sort_rules = {"č>c~", "ć>c¡", "dž>d~", "đ>d¡", "lj>l~", "nj>n~", "š>s~", "ž>z~", "ð>d¡"},
entry_name = {
from = {"[ȀÀȂÁĀÃ]", "[ȁàȃáāã]", "[ȄÈȆÉĒẼ]", "[ȅèȇéēẽ]", "[ȈÌȊÍĪĨ]", "[ȉìȋíīĩ]", "[ȌÒȎÓŌÕ]", "[ȍòȏóōõ]", "[ȐȒŔ]", "[ȑȓŕ]", "[ȔÙȖÚŪŨ]", "[ȕùȗúūũ]", "Ѐ", "ѐ", "[ӢЍ]", "[ӣѝ]", "[Ӯ]", "[ӯ]", GRAVE, ACUTE, DGRAVE, INVBREVE, MACRON, TILDE},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "R" , "r" , "U" , "u" , "Е", "е", "И" , "и", "У", "у" }
}
}
data["st"] = {
name = "sesotho",
source = "Wiktionary"
}
data["psu"] = {
name = "shauraseni",
source = "ISO 639-3"
}
data["shn"] = {
name = "shan",
source = "Wiktionary"
}
data["scz"] = {
name = "shetländska",
source = "ISO 639-3"
}
data["sn"] = {
name = "shona",
source = "Wiktionary"
}
data["scn"] = {
name = "sicilianska",
source = "Wiktionary"
}
data["sid"] = {
name = "sidamo",
source = "ISO 639-3"
}
data["sd"] = {
name = "sindhi",
source = "Wiktionary"
}
data["si"] = {
name = "singalesiska",
source = "Wiktionary"
}
data["ss"] = {
name = "siswati",
source = "Wiktionary",
entry_name = {
from = {"[āàáâǎ]", "[ēèéêě]", "[īìíîǐ]", "[ōòóôǒ]", "[ūùúûǔ]", "ḿ", "[ǹńň]", MACRON, ACUTE, GRAVE, CIRC, CARON},
to = {"a" , "e" , "i" , "o" , "u" , "m", "n" }
}
}
data["cjs"] = {
name = "sjoriska",
source = "ISO 639-3"
}
data["sms"] = {
name = "skoltsamiska",
source = "ISO 639-3",
sort_rules = {"â>a~", "č>c~", "ʒ>c¡", "ǯ>c°", "đ>d~", "ǧ>g~", "ǥ>g¡", "ǩ>k~", "ŋ>n~", "õ>o~", "š>s~", "ž>z~", "å>z¡", "ä>ä", "ð>d~"}
}
data["gd"] = {
name = "skotsk gäliska",
source = "Wiktionary"
}
data["sk"] = {
name = "slovakiska",
source = "Wiktionary",
sort_rules = {"á>a~", "ä>a¡", "č>c~", "ď>d~", "dz>d¡", "dž>d°", "é>e~", "í>i~", "ľ>l~", "ĺ>l¡", "ň>n~", "ó>o~", "ô>o¡", "ŕ>r~", "š>s~", "ť>t~", "ú>u~", "ý>y~", "ž>z~"}
}
data["sl"] = {
name = "slovenska",
source = "Wiktionary",
sort_rules = {"č>c~", "š>s~", "ž>z~"},
entry_name = {
from = {"[ÁÀÂȂȀ]", "[áàâȃȁ]", "[ÉÈÊȆȄỆẸ]", "[éèêȇȅệẹə]", "[ÍÌÎȊȈ]", "[íìîȋȉ]", "[ÓÒÔȎȌỘỌ]", "[óòôȏȍộọ]", "[ŔȒȐ]", "[ŕȓȑ]", "[ÚÙÛȖȔ]", "[úùûȗȕ]", "ł", GRAVE, ACUTE, DGRAVE, INVBREVE, CIRC, DOTBELOW},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "R" , "r" , "U" , "u" , "l"}
}
}
data["sla-usl"] = { -- enwikt sla-pro
name = "urslaviska",
source = "ISO 639-5 / konstruerad",
entry_name = {
from = {"[ÀÁÃĀȀȂ]", "[àáãāȁȃ]", "[ÈÉẼĒȄȆ]", "[èéẽēȅȇ]", "[ÌÍĨĪȈȊ]", "[ìíĩīȉȋ]", "[ÒÓÕŌȌȎ]", "[òóõōȍȏ]", "[ÙÚŨŪȔȖ]", "[ùúũūȕȗ]", "[ỲÝỸȲ]", "[ỳýỹȳ]", "[Ǭ]", "[ǭ]", GRAVE, ACUTE, TILDE, MACRON, DGRAVE, INVBREVE},
to = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "Y", "y", "Ǫ", "ǫ"}
}
}
data["so"] = {
name = "somaliska",
source = "Wiktionary",
entry_name = {
from = {"[ÁÀÂ]", "[áàâ]", "[ÉÈÊ]", "[éèê]", "[ÍÌÎ]", "[íìî]", "[ÓÒÔ]", "[óòô]", "[ÚÙÛ]", "[úùû]", "[ÝỲ]", "[ýỳ]"},
to = {"A" , "a" , "E" , "e" , "I" , "i" , "O" , "o" , "U" , "u", "Y", "y"}
}
}
data["ckb"] = {
name = "centralkurdiska",
source = "Wikimedia"
}
data["es"] = {
name = "spanska",
source = "Wiktionary",
sort_rules = {"ñ>n~"}
}
data["sux"] = {
name = "sumeriska",
source = "ISO 639-3"
}
data["su"] = {
name = "sundanesiska",
source = "Wiktionary"
}
data["sul"] = {
name = "surigaonon",
source = "ISO 639-3"
}
data["srn"] = {
name = "surinamesiska",
source = "ISO 639-3"
}
data["sva"] = {
name = "svanetiska",
source = "ISO 639-3",
}
data["sv"] = {
name = "svenska",
source = "Wiktionary",
sort_rules = {"å>z~", "ä>z¡", "ö>z°", "ü>y", "æ>z¡", "ø>z°"}
}
data["rmu"] = {
name = "svensk romani",
source = "ISO 639-3",
sort_rules = {"å>z~", "ä>z¡", "ö>z°"}
}
data["swl"] = {
name = "svenskt teckenspråk",
source = "ISO 639-3"
}
data["sw"] = {
name = "swahili",
source = "Wiktionary"
}
data["ams"] = {
name = "sydamami",
source = "ISO 639-3"
}
data["azb"] = {
name = "sydazerbajdzjanska",
source = "ISO 639-3"
}
data["sdh"] = {
name = "sydkurdiska",
source = "ISO 639-3"
}
data["nr"] = {
name = "sydndebele",
source = "ISO 639-1",
entry_name = {
from = {"[āàáâǎ]", "[ēèéêě]", "[īìíîǐ]", "[ōòóôǒ]", "[ūùúûǔ]", "ḿ", "[ǹńň]", MACRON, ACUTE, GRAVE, CIRC, CARON},
to = {"a" , "e" , "i" , "o" , "u" , "m", "n" }
}
}
data["sma"] = {
name = "sydsamiska",
source = "ISO 639-3",
sort_rules = {"ï>i~", "æ>z", "ö>z~", "å>z¡"}
}
data["tg"] = {
name = "tadzjikiska",
source = "Wiktionary",
sort_rules = {"ç>c~", "ƣ>g~", "ī>i~", "ş>s~", "ū>u~", "ƶ>z~"},
entry_name = {
from = {ACUTE},
to = {}
}
}
data["tl"] = {
name = "tagalog",
source = "Wiktionary",
sort_rules = {"ng>n~"},
entry_name = {
from = {"[áàâ]", "[éèê]", "[íìî]", "[óòô]", "[úùû]", ACUTE, GRAVE, CIRC},
to = {"a" , "e" , "i" , "o" , "u" }
}
}
data["tsg"] = {
name = "tausug",
source = "ISO 639-3"
}
data["ty"] = {
name = "tahitiska",
source = "Wikimedia"
}
data["khb"] = {
name = "tai lü",
source = "ISO 639-3"
}
data["ta"] = {
name = "tamil",
source = "Wiktionary"
}
data["tt"] = {
name = "tatariska",
source = "Wiktionary",
sort_rules = {"ä>a~", "ç>c~", "ğ>g~", "İ>i", "í>i~", "ı>i¡", "I>i¡", "ñ>n~", "ö>o~", "ş>s~", "ü>u~"}
}
data["te"] = {
name = "telugu",
source = "Wiktionary"
}
data["tio"] = {
name = "teop",
source = "ISO 639-3"
}
data["sjt"] = {
name = "tersamiska",
source = "ISO 639-3"
}
data["tet"] = {
name = "tetum",
source = "ISO 639-3",
sort_rules = {"á>a~", "é>e~", "í>i~", "ñ>n~", "ó>o~", "ú>u~"}
}
data["th"] = {
name = "thai",
source = "Wiktionary"
}
data["bo"] = {
name = "tibetanska",
source = "Wiktionary"
}
data["tig"] = {
name = "tigre",
source = "Wikimedia"
}
data["ti"] = {
name = "tigrinska",
source = "Wiktionary"
}
data["tiw"] = {
name = "tiwi",
source = "ISO 639-3"
}
data["cs"] = {
name = "tjeckiska",
source = "Wiktionary",
sort_rules = {"á>a~", "č>c~", "ď>d~", "é>e~", "ě>e¡", "ch>h~", "í>i~", "ň>n~", "ó>o~", "ř>r~", "š>s~", "ť>t~", "ú>u~", "ů>u¡", "ý>y~", "ž>z~"}
}
data["ce"] = {
name = "tjetjenska",
source = "ISO 639-1",
entry_name = {
from = {MACRON},
to = {}
}
}
data["ckt"] = {
name = "tjuktjiska",
source = "ISO 639-3"
}
data["cv"] = {
name = "tjuvasjiska",
source = "ISO 639-1"
}
data["tli"] = {
name = "tlingit",
source = "ISO 639-1"
}
data["bbc"] = {
name = "toba batak",
source = "ISO 639-3"
}
data["tpi"] = {
name = "tok pisin",
source = "Wiktionary"
}
data["tkn"] = {
name = "tokunoshima",
source = "ISO 639-3"
}
data["to"] = {
name = "tonganska",
source = "Wiktionary",
sort_rules = {"ng>n~"}
}
data["ts"] = {
name = "tsonga",
source = "Wiktionary"
}
data["tn"] = {
name = "tswana",
source = "Wiktionary"
}
data["tnq"] = { -- enbart etymologi
name = "taino",
nolemma = true,
source = "ISO 639-3"
}
data["tum"] = {
name = "tumbuka",
source = "Wikimedia"
}
data["tpn"] = {
name = "tupinambá",
source = "ISO 639-3"
}
data["tr"] = {
name = "turkiska",
source = "Wiktionary",
sort_rules = {"ç>c~", "ğ>g~", "ı>h~", "I>h~", "İ>i", "ö>o~", "ş>s~", "ü>u~"}
}
data["tk"] = {
name = "turkmeniska",
source = "Wiktionary",
sort_rules = {"ç>b~", "ä>e~", "ž>j~", "ň>n~", "ö>o~", "ş>s~", "ü>u~", "ý>y~"},
entry_name = {
from = {"ā", "ē", "ī", "ō", "ū", "ȳ", "ȫ", "ǖ", MACRON},
to = {"a", "e", "i", "o", "u", "y", "ö", "ü", ""}
}
}
data["tyv"] = {
name = "tuvinska",
source = "ISO 639-3"
}
data["tw"] = {
name = "twi",
source = "Wiktionary"
}
data["de"] = {
name = "tyska",
source = "Wiktionary",
sort_rules = {"ß>ss"}
}
data["udm"] = {
name = "udmurtiska",
source = "Wikimedia"
}
data["uga"] = {
name = "ugaritiska",
source = "ISO 639-3"
}
data["ug"] = {
name = "uiguriska",
source = "Wiktionary",
sort_rules = {"ə>a~", "p>b~", "t>b¡", "j>b°", "q>b²", "h>b³", "r>d~", "z>d¡", "ⱬ>d°", "s>d²", "x>d³", "ƣ>e~", "ķ>f~", "ng>k~", "g>k¡", "h̡>n~", "ɵ>u~", "ü>u¡", "e>v~", "i>v¡"}
}
data["uk"] = {
name = "ukrainska",
source = "Wiktionary",
entry_name = {
from = {"Ѐ", "ѐ", "Ѝ", "ѝ", GRAVE, ACUTE},
to = {"Е", "е", "И", "и"}
}
}
data["sju"] = {
name = "umesamiska",
source = "ISO 639-3"
}
data["hu"] = {
name = "ungerska",
source = "Wiktionary",
sort_rules = {"cs>c~", "dz>d~", "dzs>d¡", "gy>g~", "ly>l~", "ny>n~", "ö>o~", "sz>s~", "ty>t~", "ü>u~", "zs>z~", "ő>o~", "ű>u~"}
}
data["sqj-usq"] = {
name = "uralbanska",
source = "ISO 639-5 / konstruerad"
}
data["ur"] = {
name = "urdu",
source = "Wiktionary",
entry_name = {
from = {u(0x064B), u(0x064C), u(0x064D), u(0x064E), u(0x064F), u(0x0650), u(0x0651), u(0x0652)},
to = {}
}
}
data["gem-ugm"] = {
name = "urgermanska",
source = "ISO 639-5 / konstruerad"
}
data["gem-uno"] = {
name = "urnordiska",
source = "ISO 639-5 / konstruerad"
}
data["inc-uia"] = {
name = "urindoariska",
source = "ISO 639-5 / konstruerad"
}
data["ine-uie"] = {
name = "urindoeuropeiska",
source = "ISO 639-5 / konstruerad"
}
data["iir-uir"] = {
name = "urindoiranska",
source = "ISO 639-5 / konstruerad"
}
data["ira-uir"] = {
name = "uriranska",
source = "ISO 639-5 / konstruerad"
}
data["itc-uit"] = {
name = "uritaliska",
source = "ISO 639-5 / konstruerad"
}
data["cel-uce"] = {
name = "urkeltiska",
source = "ISO 639-5 / konstruerad"
}
data["smi-usm"] = {
name = "ursamiska",
source = "ISO 639-2 / konstruerad"
}
data["sem-use"] = {
name = "ursemitiska",
source = "ISO 639-5 / konstruerad"
}
data["trk-utr"] = {
name = "urturkiska",
source = "ISO 639-5 / konstruerad"
}
data["fiu-ufi"] = {
name = "uröstersjöfinska",
source = "ISO 639-5 / konstruerad"
}
data["uz"] = {
name = "uzbekiska",
source = "Wiktionary"
}
data["wa"] = {
name = "vallonska",
source = "Wiktionary"
}
data["ve"] = {
name = "venda",
source = "Wikipedia"
}
data["vec"] = {
name = "venetianska",
source = "Wikimedia"
}
data["vep"] = {
name = "vepsiska",
source = "ISO 639-3",
sort_rules = {"č>c~", "š>s~", "z>s¡", "ž>s°", "õ>w~", "ü>w¡", "ä>w°", "ö>w²", "'>w³"}
}
data["vi"] = {
name = "vietnamesiska",
source = "Wiktionary",
sort_rules = {"ă>a~", "â>a¡", "đ>d~", "ê>e~", "ô>o~", "ơ>o¡", "ư>u~", "ằ>a~", "ắ>a~", "ẳ>a~", "ẵ>a~", "ặ>a~", "ầ>a¡", "ấ>a¡", "ẩ>a¡", "ẫ>a¡", "ậ>a¡", "ề>e~", "ế>e~", "ể>e~", "ễ>e~", "ệ>e~", "ồ>o~", "ố>o~", "ổ>o~", "ỗ>o~", "ộ>o~", "ờ>o¡", "ớ>o¡", "ở>o¡", "ỡ>o¡", "ợ>o¡", "ừ>u~", "ứ>u~", "ử>u~", "ữ>u~", "ự>u~", "ð>d¡"}
}
data["wym"] = {
name = "vilamoviska",
source = "ISO 639-3",
sort_rules = {"ao>a~", "ć>c~", "ł>l~", "ń>n~", "ö>o~", "ś>s~", "ü>u~", "ź>z~", "ż>z¡"}
}
data["vo"] = {
name = "volapük",
source = "Wiktionary",
sort_rules = {"ä>a~", "ö>o~", "ü>u~"}
}
data["fiu-vro"] = {
name = "võro",
source = "Wikimedia"
}
data["vot"] = {
name = "votiska",
source = "ISO 639-3"
}
data["mrj"] = {
name = "västmariska",
source = "Wikimedia"
}
data["pnb"] = {
name = "västpanjabi",
source = "Wikimedia"
}
data["wls"] = {
name = "walliska",
source = "ISO 639-3"
}
data["war"] = {
name = "waray-waray",
source = "Wikimedia"
}
data["wo"] = {
name = "wolof",
source = "Wiktionary"
}
data["xh"] = {
name = "xhosa",
source = "Wiktionary",
entry_name = {
from = {"[āàáâǎ]", "[ēèéêě]", "[īìíîǐ]", "[ōòóôǒ]", "[ūùúûǔ]", "ḿ", "[ǹńň]", MACRON, ACUTE, GRAVE, CIRC, CARON},
to = {"a" , "e" , "i" , "o" , "u" , "m", "n" }
}
}
data["yka"] = {
name = "jakan",
source = "ISO 639-3"
}
data["rys"] = {
name = "yaeyama",
source = "ISO 639-3"
}
data["kdd"] = {
name = "yankunytjatjara",
source = "ISO 639-3",
sort_rules = {"ly>l~", "ḻ>l¡", "ng>n~", "ny>n¡", "ṉ>n°", "ṟ>r~", "tj>t~", "ṯ>t¡"}
}
data["ii"] = {
name = "yi",
source = "Wikimedia"
}
data["yoi"] = {
name = "yonaguni",
source = "ISO 639-3"
}
data["yox"] = {
name = "yoron",
source = "ISO 639-3"
}
data["yo"] = {
name = "yoruba",
source = "Wiktionary"
}
data["yua"] = {
name = "yukatekiska",
source = "ISO 639-3"
}
data["dje"] = {
name = "zarma",
source = "ISO 639-3"
}
data["diq"] = {
name = "zazaiska",
source = "Wikimedia"
}
data["zea"] = {
name = "zeeländska",
source = "ISO 639-3"
}
data["sgs"] = {
name = "žemaitiska",
source = "ISO 639-3"
}
data["za"] = {
name = "zhuang",
source = "Wiktionary"
}
data["zu"] = {
name = "zulu",
source = "Wiktionary",
entry_name = {
from = {"[āàáâǎ]", "[ēèéêě]", "[īìíîǐ]", "[ōòóôǒ]", "[ūùúûǔ]", "ḿ", "[ǹńň]", MACRON, ACUTE, GRAVE, CIRC, CARON},
to = {"a" , "e" , "i" , "o" , "u" , "m", "n" }
}
}
data["ovd"] = {
name = "älvdalska",
source = "ISO 639-3",
sort_rules = {"ą>a~", "ð>d~", "ę>e~", "į>i~", "ų>u~", "y̨>y~", "å>z~", "ą̊>z¡", "ä>ä", "ö>ö"}
}
data["mhr"] = {
name = "östmariska",
source = "Wikimedia"
}
local reverse_data = {}
local name = ''
for code, data_obj in pairs(data) do
name = data_obj["name"]
reverse_data[name] = code
end
return { data , reverse_data }
hnfgc6krwpcww56o9yq773dt99oredf
Kategori:Acehnesiska
14
652106
4157221
2976698
2026-10-23T22:43:44Z
Frodlekis
762
4157221
wikitext
text/x-wiki
{{kategorinavigering|Acehnesiska}}
{{faktaruta språk}}
==Källor==
<references/>
3fi7ixrgxid6oefg7cmuftblfn2gy0v
putoy
0
653177
4157337
3544829
2026-10-24T01:49:49Z
Frodlekis
762
4157337
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''putoy'''
#{{tagg|kat=anatomi|språk=bcl}} [[penis]]
okgkpazjph3rwhug5u4t68gmje8gr6r
Kategori:Fornoccitanska
14
668445
4157384
3043294
2026-10-24T04:42:10Z
Frodlekis
762
4157384
wikitext
text/x-wiki
{{kategorinavigering|Fornoccitanska}}
{{faktaruta språk}}
mk68pzu4ky2lidzutqlpxn74g9sjw5z
Ehipto
0
681497
4157318
3076448
2026-10-24T01:40:59Z
Frodlekis
762
4157318
wikitext
text/x-wiki
==Cebuano==
===Substantiv===
{{subst|ceb}}
'''Ehipto'''
#{{tagg|kat=länder|språk=ceb}} [[Egypten]]
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''Ehipto'''
#{{tagg|kat=länder|språk=bcl}} [[Egypten]]
f1a4wl284kn3tqxtl2tg4mobnwk9vmr
Kategori:Extremaduriska
14
685788
4157383
3334227
2026-10-24T04:39:35Z
Frodlekis
762
4157383
wikitext
text/x-wiki
{{kategorinavigering|Extremaduriska}}
{{faktaruta språk}}
3m9bb5h2o3q5e6e3s6d6wffgflqfdkl
Kategori:Balinesiska
14
759484
4157255
3269553
2026-10-24T00:03:12Z
Frodlekis
762
4157255
wikitext
text/x-wiki
{{kategorinavigering|Balinesiska}}
{{faktaruta språk}}
nrdv2zmcu46jmgb6wcysafz095phfp4
Kategori:Cia-cia
14
759491
4157407
3269567
2026-10-24T11:29:02Z
Frodlekis
762
4157407
wikitext
text/x-wiki
{{kategorinavigering|Cia-cia}}
{{faktaruta språk}}
at4gs5j5ny43sdnwrd6ryis2qgi21vy
bonnig
0
784539
4157143
3818595
2026-10-23T15:59:55Z
~2026-56702-21
62364
/* Svenska */
4157143
wikitext
text/x-wiki
==Svenska==
===Adjektiv===
{{sv-adj|pers=}}
'''bonnig'''
#{{tagg|nedsättande|vardagligt}} något eller någon som relaterar till [[landsbygd]]en
#{{tagg|nedsättande|vardagligt}} [[rustikt]], [[enkelt]], [[anspråkslöst]]
#{{tagg|nedsättande|vardagligt}} [[trångsynt]], [[inskränkt]]
#{{tagg|nedsättande|vardagligt}} [[sliten]], [[ovårdat]]
#{{tagg|nedsättande|vardagligt}} okunnig eller ignorant om rådande [[trend]]er, [[töntig]]
#:{{avgränsare}}
#:''"Anders är trevlig, men han kan vara ganska '''bonnig''' av sig."''
#:{{citat|år=2009|titel=Svenska turistföreningens årsbok|publ=[[w:Svenska Turistföreningen|Svenska Turistföreningen]]|När dalahästen slog igenom som nationell symbol 1939 ansågs den för '''bonnig''' och gammeldags.}}
#:{{antonymer|[[kulturell]], [[belevad]], [[världsvan]], [[prålig]]}}
e7yf5yf606j4owmwnxvdv6pq73nq4r6
Kategori:Fornsvenska/Fjärde konjugationens verb
14
808780
4157394
3367736
2026-10-24T11:05:14Z
Frodlekis
762
4157394
wikitext
text/x-wiki
{{kategorinavigering|Fornsvenska|Fjärde konjugationens verb}}
[[Kategori:Fornsvenska/Verb]]
bkvizlgutpz9dd4zgdii2sqko9mqu7l
Kategori:Akkadiska
14
809860
4157229
3370442
2026-10-23T23:04:41Z
Frodlekis
762
4157229
wikitext
text/x-wiki
{{kategorinavigering|Akkadiska}}
{{faktaruta språk}}
==Källor==
<references/>
dux3o8u0ra9wavvx0n4e9rgtcfx2amy
Kategori:Forngeorgiska
14
813299
4157385
3380026
2026-10-24T04:42:49Z
Frodlekis
762
4157385
wikitext
text/x-wiki
{{kategorinavigering|Forngeorgiska}}
{{faktaruta språk}}
ammchk3mml3klbxf9zyanny852ahcq7
אָזשענע
0
831237
4157169
3639886
2026-10-23T19:47:01Z
Frodlekis
762
4157169
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-f-s}}
'''אָזשענע''' (ozhene) {{f}}
#{{tagg|kat=frukter|språk=yi}} [[björnbär]]
#:{{synonymer|{{länk|yi| אָזשעניצע'}} (''{{tr|yi|אָזשעניצע}}'')}}
23y9rv5fwswelxj4r7v6z2thyxxgz5g
4157170
4157169
2026-10-23T19:47:17Z
Frodlekis
762
4157170
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-f-s}}
'''אָזשענע''' (ozhene) {{f}}
#{{tagg|kat=frukter|språk=yi}} [[björnbär]]
#:{{synonymer|{{länk|yi|אָזשעניצע}} (''{{tr|yi|אָזשעניצע}}'')}}
26kr5xiwb8vkkf3vvy57eyvoxazxpd0
Kategori:Guanche
14
856348
4157405
3472570
2026-10-24T11:25:13Z
Frodlekis
762
4157405
wikitext
text/x-wiki
{{kategorinavigering|Guanche}}
{{faktaruta språk}}
2ye2ims21cz4czxmnpvzm5d59c13whh
פּעליקאַן
0
887167
4157118
3607622
2026-10-23T15:10:15Z
~2026-56702-21
62364
/* Jiddisch */
4157118
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-m-en}}
'''פּעליקאַן''' (pelikan) {{m}}
#{{tagg|kat=fåglar|språk=yi}} [[pelikan]]
#:{{synonymer|{{länk|yi|קראָפּ־גאַנדז}} (''krop-gandz'')}}
mhsrx2nwpts4a2fw28twj2d1k95hh56
pagong
0
897392
4157339
3637647
2026-10-24T01:51:10Z
Frodlekis
762
4157339
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''pagong'''
#{{tagg|kat=reptiler|språk=bcl}} [[sköldpadda]]
==Tagalog==
===Substantiv===
{{subst|tl}}
'''pagong'''
#{{tagg|kat=reptiler|språk=tl}} [[sköldpadda]]
2l1qgtqnggty55jjj2esp584yd406zx
balanghayan
0
897393
4157310
3637650
2026-10-24T01:37:04Z
Frodlekis
762
/* Bikol */
4157310
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''balanghayan'''
#{{tagg|kat=lingvistik|språk=bcl}} [[grammatik]]
te1swidhlsnj5pmmbvjipj20z561xsf
Kategori:Fornöstslaviska
14
913741
4157368
3671126
2026-10-24T04:16:10Z
Frodlekis
762
4157368
wikitext
text/x-wiki
{{kategorinavigering|Fornöstslaviska}}
{{faktaruta språk}}
8mjjm0em88nrpac8shbtinq2m9do9g9
inodoro
0
914774
4157303
3673467
2026-10-24T01:34:18Z
Frodlekis
762
4157303
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''inodoro'''
#[[toalett]]
#:{{synonymer|[[kasilyasan]]}}
==Spanska==
===Substantiv===
{{es-subst-m-s}}
'''inodoro''' {{m}}
#[[toalett]]
#:{{synonymer|[[aseo]], [[baño]], [[excusado]], [[retrete]], [[servicio]], [[sanitario]]}}
f1psoxexwb1z6vp8vz3d4fzk5zppd4d
kasilyasan
0
914775
4157302
3673469
2026-10-24T01:34:09Z
Frodlekis
762
/* Bikol */
4157302
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''kasilyasan'''
*{{uttal|bcl|ljud=LL-Q33284_(bcl)-Kunokuno-kasilyasan.wav}}
#[[toalett]]
#:{{synonymer|[[inodoro]]}}
jrteg8j6bq87k2suoe6gkgdgi07p7fi
angog
0
914776
4157304
3673470
2026-10-24T01:34:38Z
Frodlekis
762
/* Bikol */
4157304
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''angog'''
*{{uttal|bcl|ljud=LL-Q33284_(bcl)-Kunokuno-angog.wav}}
#{{tagg|anatomi|språk=bcl}} [[panna]]
qy3lio7ynj6ne7jbaehj0bif19u1uxc
MediaWiki:Gadget-data-lang.json
8
934196
4157283
4155431
2026-10-24T01:22:32Z
Frodlekis
762
Uppdatera utifrån [[Wiktionary:Finesser/Uppdatera data]]
4157283
json
application/json
{
"main": {
"abq": "Abazinska",
"ab": "Abchaziska",
"abe": "Abenakiska",
"ace": "Acehnesiska",
"ady": "Adygeiska",
"aa": "Afar",
"af": "Afrikaans",
"ain": "Ainu",
"ak": "Akan",
"akk": "Akkadiska",
"sia": "Akkalasamiska",
"sq": "Albanska",
"als": "Alemanniska",
"ale": "Aleutiska",
"tut": "Altaiska",
"am": "Amhariska",
"xaa": "Andalusisk arabiska",
"xno": "Anglo-normandiska",
"ar": "Arabiska",
"an": "Aragonska",
"arc": "Arameiska",
"hy": "Armeniska",
"roa-rup": "Arumänska",
"as": "Assamesiska",
"ast": "Asturiska",
"av": "Avariska",
"ave": "Avestiska",
"ay": "Aymara",
"az": "Azerbajdzjanska",
"ban": "Balinesiska",
"bal": "Baluchiska",
"bm": "Bambara",
"bjn": "Banjaresiska",
"ba": "Basjkiriska",
"eu": "Baskiska",
"btx": "Batak karo",
"bbl": "Bats",
"bar": "Bayerska",
"be": "Belarusiska",
"bem": "Bemba",
"bn": "Bengali",
"ber": "Berberspråk",
"bym": "Bidjara",
"bh": "Bihari",
"bpy": "Bishnupriya manipuri",
"bi": "Bislama",
"no": "Bokmål",
"bs": "Bosniska",
"br": "Bretonska",
"bug": "Buginesiska",
"bg": "Bulgariska",
"bxr": "Burjatiska",
"my": "Burmesiska",
"cps": "Capiznon",
"ceb": "Cebuano",
"bcl": "Central bikol",
"ckb": "Centralkurdiska",
"nhn": "Centralnahuatl",
"ch": "Chamorro",
"kca": "Chantiska",
"cbk": "Chavacano",
"chr": "Cherokesiska",
"chy": "Cheyenne",
"ny": "Chichewa",
"chn": "Chinook jargon",
"chk": "Chuukesiska",
"cia": "Cia-cia",
"crn": "Cora",
"cr": "Cree",
"dag": "Dagbanli",
"btd": "Dairi batak",
"da": "Danska",
"prs": "Dari",
"egy-dem": "Demotiska",
"din": "Dinka",
"dv": "Divehi",
"dz": "Dzongkha",
"egy": "Egyptiska",
"smn": "Enaresamiska",
"en": "Engelska",
"myv": "Erzya",
"eo": "Esperanto",
"et": "Estniska",
"ett": "Etruskiska",
"evn": "Evenki",
"ee": "Ewe",
"ext": "Extremaduriska",
"fan": "Fang",
"phn": "Feniciska",
"fj": "Fiji",
"hif": "Fijiansk hindi",
"fil": "Filipino",
"rmf": "Finsk romani",
"fi": "Finska",
"gmq-fda": "Forndanska",
"ang": "Fornengelska",
"frk": "Fornfrankiska",
"fro": "Fornfranska",
"ofs": "Fornfrisiska",
"oge": "Forngeorgiska",
"goh": "Fornhögtyska",
"sga": "Forniriska",
"owl": "Fornkymriska",
"cu": "Fornkyrkoslaviska",
"odt": "Fornlågfrankiska",
"non": "Fornnordiska",
"pro": "Fornoccitanska",
"peo": "Fornpersiska",
"roa-fpt": "Fornportugisiska",
"osx": "Fornsaxiska",
"osp": "Fornspanska",
"gmq-fsv": "Fornsvenska",
"otk": "Fornturkiska",
"orv": "Fornöstslaviska",
"frp": "Frankoprovensalska",
"fr": "Franska",
"fy": "Frisiska",
"fur": "Friuliska",
"fud": "Futuniska",
"fo": "Färöiska",
"gag": "Gagauziska",
"gl": "Galiciska",
"gez": "Ge'ez",
"ka": "Georgiska",
"got": "Gotiska",
"el": "Grekiska",
"gos": "Groningska",
"kl": "Grönländska",
"gnc": "Guanche",
"gn": "Guaraní",
"ngu": "Guerreronahuatl",
"gu": "Gujarati",
"guz": "Gusii",
"ht": "Haitisk kreol",
"hak": "Hakka",
"ha": "Hausa",
"haw": "Hawaiiska",
"he": "Hebreiska",
"xed": "Hedi",
"hit": "Hettitiska",
"hil": "Hiligaynon",
"hi": "Hindi",
"hnd": "Hindko",
"mww": "Hmong daw",
"xhu": "Hurritiska",
"hsb": "Högsorbiska",
"rmq": "Iberisk romani",
"io": "Ido",
"ig": "Igbo",
"ilo": "Ilokano",
"id": "Indonesiska",
"ia": "Interlingua",
"ie": "Interlingue",
"iu": "Inuktitut",
"ik": "Iñupiaq",
"ga": "Iriska",
"is": "Isländska",
"ist": "Istriotiska",
"it": "Italienska",
"yka": "Jakan",
"sah": "Jakutiska",
"ja": "Japanska",
"jv": "Javanesiska",
"yi": "Jiddisch",
"kbd": "Kabardinska",
"kab": "Kabyliska",
"xal": "Kalmuckiska",
"kam": "Kamba",
"xmu": "Kammu",
"kjb": "Kanjobal",
"kn": "Kannada",
"yue": "Kantonesiska",
"kr": "Kanuri",
"pam": "Kapampangan",
"kaa": "Karakalpakiska",
"krc": "Karatjajbalkariska",
"krl": "Karelska",
"ks": "Kashmiri",
"csb": "Kasjubiska",
"ca": "Katalanska",
"kk": "Kazakiska",
"kjh": "Khakasiska",
"km": "Khmer",
"kzg": "Kikai",
"kg": "Kikongo",
"ki": "Kikuyu",
"sjd": "Kildinsamiska",
"zh": "Kinesiska",
"ky": "Kirgiziska",
"rn": "Kirundi",
"ktu": "Kituba",
"grc": "Klassisk grekiska",
"nci": "Klassisk nahuatl",
"syc": "Klassisk syriska",
"tlh": "Klingonska",
"kpv": "Komi",
"cop": "Koptiska",
"ko": "Koreanska",
"kpy": "Korjakiska",
"kw": "Korniska",
"co": "Korsikanska",
"avk": "Kotava",
"crh": "Krimtatariska",
"jct": "Krimtjakiska",
"hr": "Kroatiska",
"kum": "Kumykiska",
"xug": "Kunigami",
"ku": "Kurdiska",
"fkv": "Kvänska",
"cy": "Kymriska",
"lad": "Ladino",
"lld": "Ladinska",
"lbe": "Lak",
"lac": "Lakandonska",
"lkt": "Lakota",
"lo": "Lao",
"la": "Latin",
"lzz": "Laziska",
"ltg": "Lettgalliska",
"lv": "Lettiska",
"lez": "Lezginska",
"lij": "Liguriska",
"li": "Limburgiska",
"ln": "Lingala",
"lt": "Litauiska",
"liv": "Liviska",
"olo": "Livvi",
"jbo": "Lojban",
"lmo": "Lombardiska",
"lg": "Luganda",
"luy": "Luhya",
"smj": "Lulesamiska",
"lb": "Luxemburgiska",
"sco": "Lågskotska",
"dsb": "Lågsorbiska",
"nds": "Lågtyska",
"mas": "Maa",
"mad": "Maduresiska",
"mdh": "Magindanao",
"mai": "Maithili",
"mak": "Makassariska",
"mk": "Makedonska",
"mg": "Malagassiska",
"ms": "Malajiska",
"ml": "Malayalam",
"mt": "Maltesiska",
"mnc": "Manchu",
"mns": "Mansiska",
"gv": "Manx",
"mi": "Maori",
"arn": "Mapudungun",
"mrh": "Mara",
"mrw": "Maranao",
"mr": "Marathi",
"mh": "Marshallesiska",
"mfe": "Mauritisk kreol",
"enm": "Medelengelska",
"frm": "Medelfranska",
"gmh": "Medelhögtyska",
"gml": "Medellågtyska",
"dum": "Medelnederländska",
"pal": "Medelpersiska",
"fit": "Meänkieli",
"zh-min-nan": "Min nan",
"min": "Minangkabau",
"mwl": "Mirandesiska",
"miq": "Miskito",
"mvi": "Miyako",
"mdf": "Moksja",
"mo": "Moldaviska",
"mn": "Mongoliska",
"mos": "Mossi",
"gmy": "Mykensk grekiska",
"nah": "Nahuatl",
"na": "Nauruanska",
"nv": "Navajo",
"ng": "Ndonga",
"nap": "Neapolitanska",
"nl": "Nederländska",
"ne": "Nepali",
"nij": "Ngaju dayak",
"ryn": "Nordamami",
"frr": "Nordfrisiska",
"kmr": "Nordkurdiska",
"nd": "Nordndebele",
"se": "Nordsamiska",
"pih": "Norfuk",
"nrm": "Normandiska",
"nrn": "Norn",
"nov": "Novial",
"nn": "Nynorska",
"aii": "Nyöstsyriska",
"oc": "Occitanska",
"oj": "Ojibwe",
"ryu": "Okinawianska",
"okn": "Okinoerabu",
"or": "Oriya",
"om": "Oromo",
"ota": "Osmanska",
"os": "Ossetiska",
"pau": "Palauiska",
"pi": "Pali",
"pag": "Pangasinan",
"pap": "Papiamento",
"ps": "Pashto",
"jam": "Patwa",
"pdc": "Pennsylvaniatyska",
"fa": "Persiska",
"pms": "Piedmontesiska",
"pcd": "Pikardiska",
"sje": "Pitesamiska",
"pjt": "Pitjantjatjara",
"pox": "Polabiska",
"pl": "Polska",
"pt": "Portugisiska",
"pim": "Powhatan",
"prg": "Preussiska",
"pa": "Punjabi",
"qu": "Quechua",
"rej": "Rejang",
"rhg": "Rohingya",
"rom": "Romani",
"dru": "Rukai",
"ro": "Rumänska",
"rue": "Rusinska",
"rw": "Rwanda",
"ru": "Ryska",
"rm": "Rätoromanska",
"sm": "Samoanska",
"sg": "Sango",
"sa": "Sanskrit",
"sc": "Sardiska",
"sas": "Sasak",
"stq": "Saterfrisiska",
"szl": "Schlesiska",
"swg": "Schwabiska",
"sel": "Selkupiska",
"nso": "Sepedi",
"sr": "Serbiska",
"st": "Sesotho",
"shn": "Shan",
"psu": "Shauraseni",
"scz": "Shetländska",
"sn": "Shona",
"scn": "Sicilianska",
"sid": "Sidamo",
"sd": "Sindhi",
"si": "Singalesiska",
"ss": "Siswati",
"cjs": "Sjoriska",
"sms": "Skoltsamiska",
"gd": "Skotsk gäliska",
"sk": "Slovakiska",
"sl": "Slovenska",
"so": "Somaliska",
"es": "Spanska",
"sux": "Sumeriska",
"su": "Sundanesiska",
"sul": "Surigaonon",
"srn": "Surinamesiska",
"sva": "Svanetiska",
"rmu": "Svensk romani",
"sv": "Svenska",
"swl": "Svenskt teckenspråk",
"sw": "Swahili",
"ams": "Sydamami",
"azb": "Sydazerbajdzjanska",
"sdh": "Sydkurdiska",
"nr": "Sydndebele",
"sma": "Sydsamiska",
"tg": "Tadzjikiska",
"tl": "Tagalog",
"ty": "Tahitiska",
"khb": "Tai lü",
"ta": "Tamil",
"tt": "Tatariska",
"tsg": "Tausug",
"te": "Telugu",
"tio": "Teop",
"sjt": "Tersamiska",
"tet": "Tetum",
"th": "Thai",
"bo": "Tibetanska",
"tig": "Tigre",
"ti": "Tigrinska",
"tiw": "Tiwi",
"cs": "Tjeckiska",
"ce": "Tjetjenska",
"ckt": "Tjuktjiska",
"cv": "Tjuvasjiska",
"tli": "Tlingit",
"bbc": "Toba batak",
"tpi": "Tok pisin",
"tkn": "Tokunoshima",
"to": "Tonganska",
"ts": "Tsonga",
"tn": "Tswana",
"tum": "Tumbuka",
"tpn": "Tupinambá",
"tr": "Turkiska",
"tk": "Turkmeniska",
"tyv": "Tuvinska",
"--": "Tvärspråkligt",
"tw": "Twi",
"de": "Tyska",
"udm": "Udmurtiska",
"uga": "Ugaritiska",
"ug": "Uiguriska",
"uk": "Ukrainska",
"sju": "Umesamiska",
"hu": "Ungerska",
"sqj-usq": "Uralbanska",
"ur": "Urdu",
"gem-ugm": "Urgermanska",
"inc-uia": "Urindoariska",
"ine-uie": "Urindoeuropeiska",
"iir-uir": "Urindoiranska",
"ira-uir": "Uriranska",
"itc-uit": "Uritaliska",
"cel-uce": "Urkeltiska",
"gem-uno": "Urnordiska",
"smi-usm": "Ursamiska",
"sem-use": "Ursemitiska",
"sla-usl": "Urslaviska",
"trk-utr": "Urturkiska",
"fiu-ufi": "Uröstersjöfinska",
"uz": "Uzbekiska",
"wa": "Vallonska",
"ve": "Venda",
"vec": "Venetianska",
"vep": "Vepsiska",
"vi": "Vietnamesiska",
"wym": "Vilamoviska",
"vo": "Volapük",
"fiu-vro": "Võro",
"vot": "Votiska",
"mrj": "Västmariska",
"pnb": "Västpanjabi",
"wls": "Walliska",
"war": "Waray-waray",
"wo": "Wolof",
"xh": "Xhosa",
"rys": "Yaeyama",
"kdd": "Yankunytjatjara",
"ii": "Yi",
"yoi": "Yonaguni",
"yox": "Yoron",
"yo": "Yoruba",
"yua": "Yukatekiska",
"dje": "Zarma",
"diq": "Zazaiska",
"zea": "Zeeländska",
"sgs": "Žemaitiska",
"za": "Zhuang",
"zu": "Zulu",
"ovd": "Älvdalska",
"mhr": "Östmariska"
},
"onlyEtym": {
"h-nor": "Norska",
"h-smi": "Samiska",
"tnq": "Taino"
}
}
5ogd4dls82tiv1qqwzj015ratlyc210
pulgada
0
939853
4157338
3835469
2026-10-24T01:50:44Z
Frodlekis
762
4157338
wikitext
text/x-wiki
==Cebuano==
===Substantiv===
{{subst|ceb}}
'''pulgada'''
#{{tagg|kat=måttenheter|språk=ceb}} [[tum]]
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''pulgada'''
#{{tagg|kat=måttenheter|språk=bcl}} [[tum]]
==Galiciska==
===Substantiv===
{{gl-subst-f}}
'''pulgada''' {{f}}
#{{tagg|kat=måttenheter|språk=gl}} [[tum]]
==Spanska==
===Substantiv===
{{es-subst-f-s}}
'''pulgada''' {{f}}
#{{tagg|kat=måttenheter|språk=es}} [[tum]]
d387it2857rs5t0qeu7e2jqfdfju69f
elepante
0
942623
4157311
3856026
2026-10-24T01:37:31Z
Frodlekis
762
4157311
wikitext
text/x-wiki
==Cebuano==
===Substantiv===
{{subst|ceb}}
'''elepante'''
#{{tagg|däggdjur|språk=ceb}} [[elefant]]
#:{{synonymer|[[gadya]]}}
#:{{etymologi|Lånord från {{härledning|ceb|es|elefante}}.}}
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''elepante'''
#{{tagg|däggdjur|språk=bcl}} [[elefant]]
#:{{synonymer|[[gadya]]}}
#:{{etymologi|Lånord från {{härledning|bcl|es|elefante}}.}}
==Hiligaynon==
===Substantiv===
{{subst|hil}}
'''elepante'''
#{{tagg|däggdjur|språk=hil}} [[elefant]]
#:{{synonymer|[[gadyo]]}}
#:{{etymologi|Lånord från {{härledning|hil|es|elefante}}.}}
==Tagalog==
===Substantiv===
{{subst|tl}}
'''elepante'''
#{{tagg|däggdjur|språk=tl}} [[elefant]]
#:{{synonymer|[[gadya]] ''(ålderdomligt)''}}
#:{{etymologi|Lånord från {{härledning|tl|es|elefante}}.}}
#:{{seäven|[[bulalay]]}}
==Waray-waray==
===Substantiv===
{{subst|war}}
'''elepante'''
#{{tagg|däggdjur|språk=war}} [[elefant]]
#:{{synonymer|[[gadya]]}}
#:{{etymologi|Lånord från {{härledning|war|es|elefante}}.}}
kb232qanj7fbyrhbe4l00fb9lydezu2
gadya
0
942624
4157312
3856016
2026-10-24T01:38:19Z
Frodlekis
762
4157312
wikitext
text/x-wiki
==Cebuano==
===Substantiv===
{{subst|ceb}}
'''gadya'''
#{{tagg|däggdjur|språk=ceb}} [[elefant]]
#:{{synonymer|[[elepante]]}}
#:{{etymologi|Av {{härledning|ceb|ms|gajah}}, av {{härledning|ceb|sa|गज|tr=gaja}}.}}
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''gadya'''
#{{tagg|däggdjur|språk=bcl}} [[elefant]]
#:{{synonymer|[[elepante]]}}
#:{{etymologi|Av {{härledning|bcl|ms|gajah}}, av {{härledning|bcl|sa|गज|tr=gaja}}.}}
==Tagalog==
===Substantiv===
{{subst|tl}}
'''gadya'''
#{{tagg|ålderdomligt|däggdjur|språk=tl}} [[elefant]]
#:{{synonymer|[[elepante]]}}
#:{{etymologi|Av {{härledning|tl|ms|gajah}}, av {{härledning|tl|sa|गज|tr=gaja}}, i modernt språkbruk utfasat till förmån för ''[[elepante]]''.}}
onn9pcvcl9wa3cyxw9arqcpcqioosag
Kategori:Fornportugisiska
14
947643
4157381
3882737
2026-10-24T04:35:23Z
Frodlekis
762
4157381
wikitext
text/x-wiki
{{kategorinavigering|Fornportugisiska}}
{{faktaruta språk}}
e8jvormyn5afcksmmqqgazecvxgf2gv
gnälleröv
0
992206
4157142
3968930
2026-10-23T15:58:56Z
~2026-56702-21
62364
/* Svenska */
4157142
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
'''gnälleröv''' {{u}}
#{{tagg|skånska|nedsättande}} person som är [[gnällig]], [[jobbig]], [[irriterande]]
gbfgnlyerhppy8knyxbh19arsgso8wq
Kategori:Andalusisk arabiska
14
1010783
4157237
4009555
2026-10-23T23:16:42Z
Frodlekis
762
4157237
wikitext
text/x-wiki
{{kategorinavigering|Andalusisk arabiska}}
{{faktaruta språk}}
==Källor==
<references/>
s0k45m2len2j4l65terpppit8ibx6ig
Kategori:Chavacano
14
1010816
4157365
4009612
2026-10-24T04:11:11Z
Frodlekis
762
4157365
wikitext
text/x-wiki
{{kategorinavigering|Chavacano}}
{{faktaruta språk}}
544rcb6a9mo0pyvhi528klsvi95ahzh
bulanan
0
1012409
4157295
4013226
2026-10-24T01:29:33Z
Frodlekis
762
4157295
wikitext
text/x-wiki
==Central bikol==
===Adjektiv===
{{adj|bcl}}
'''bulanan'''
#[[månatlig]]
==Indonesiska==
===Adjektiv===
{{adj|id}}
'''bulanan'''
#[[månatlig]]
#:{{besläktade ord|[[bulan]]}}
9266coilvs895usoajys1j2xl5l5y5m
Kategori:Central bikol/Adjektiv
14
1012410
4157294
4013227
2026-10-24T01:29:15Z
Frodlekis
762
4157294
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Adjektiv|Index|nyckel=2}}
92e3lt7rrhnmwcqwp636pvvlhxiuwml
4157296
4157294
2026-10-24T01:29:45Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Adjektiv]] till [[Kategori:Central bikol/Adjektiv]]
4157294
wikitext
text/x-wiki
{{kategorinavigering|Central bikol|Adjektiv|Index|nyckel=2}}
92e3lt7rrhnmwcqwp636pvvlhxiuwml
pangngaran
0
1049063
4157340
4074080
2026-10-24T01:51:21Z
Frodlekis
762
4157340
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''pangngaran'''
#{{tagg|ordklasser|språk=bcl}} [[substantiv]]
i0h2ycb4bt7dpn1h9p23lkyjuvczdcg
apripista
0
1068297
4157191
4134305
2026-10-23T21:26:16Z
Frodlekis
762
4157191
wikitext
text/x-wiki
==Italienska==
===Substantiv===
{{it-subst-m}}
'''apripista''' {{m}}
# [[schaktmaskin]]
#:{{synonymer|[[bulldozer]]}}
thixncnmlez16sptp063kigyr2ebdwj
4157192
4157191
2026-10-23T21:27:03Z
Frodlekis
762
/* Italienska */
4157192
wikitext
text/x-wiki
==Italienska==
===Substantiv===
{{it-subst-m-0}}
'''apripista''' {{m}}
# [[schaktmaskin]]
#:{{synonymer|[[bulldozer]]}}
fuusrszo09bu2f4m7q3miqzy309tg4u
Kategori:Fijiansk hindi
14
1069619
4157379
4139376
2026-10-24T04:30:50Z
Frodlekis
762
4157379
wikitext
text/x-wiki
{{kategorinavigering|Fijiansk hindi}}
{{faktaruta språk}}
nj21u2rpd8r0ohoxnks9c1lu3oedhj8
אויטאָמאַטיש
0
1074956
4157086
4157082
2026-10-23T12:15:08Z
~2026-56702-21
62364
4157086
wikitext
text/x-wiki
==Jiddisch==
===Adjektiv===
{{yi-adj-okomp}}
'''אויטאָמאַטיש''' (oytomatish)
#[[automatisk]]
#:{{besläktade ord|{{länk|yi|אויטאָמאַטירן}} (''oytomatirn''), {{länk|yi|אויטאָמאַט}} (''oytomat''), {{länk|yi| אויטאָמאַציע}} (''oytomatsye''), {{länk|yi| אויטאָמירן}} (''oytomirn'')}}
bajw64xuyyullc1z1vh2ctzvq2azvsf
לאַבירינט
0
1074958
4157087
2026-10-23T12:28:21Z
~2026-56702-21
62364
nytt uppslag (jiddisch)
4157087
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-m-n}}
'''לאַבירינט''' (labirint) {{m}}
#[[labyrint]]
kqe5uj312jfxpo4walzudcrbfcqi33p
labirent
0
1074959
4157089
2026-10-23T12:29:23Z
~2026-56702-21
62364
nytt uppslag (turkiska)
4157089
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
{{tr-subst}}
'''labirent'''
#[[labyrint]]
hedowfjh04ugqywj39c0l6icdeah2xg
לאַבירינטן
0
1074960
4157090
2026-10-23T12:30:22Z
~2026-56702-21
62364
böjningsform av [[לאַבירינט]]
4157090
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
'''לאַבירינטן'''
#{{böjning|yi|subst|לאַבירינט}}
os4slqy60zr0viam8hr49eai3dle011
Kategori:Japanska/Uppslag med 徑 läst som キョウ (呉音)
14
1074961
4157091
2026-10-23T12:32:11Z
Kusurija
8159
Kategori
4157091
wikitext
text/x-wiki
[[Kategori:Japanska/Uppslag med 徑|キョウ]]
[[Kategori:Japanska/Uppslag med kanji läst som キョウ (呉音)|徑]]
[[Kategori:Japanska/Uppslag kanji läsning|キョウ]]
5n44t3om6nsrl91yrz3ic9br10so5of
labirentler
0
1074962
4157092
2026-10-23T12:32:42Z
~2026-56702-21
62364
böjningsform av [[labirent]]
4157092
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
'''labirentler'''
#{{böjning|tr|subst|labirent}}
g3xx4yj689d6q62zx21i0yucuj7a289
labyrinthe
0
1074963
4157093
2026-10-23T12:33:23Z
~2026-56702-21
62364
nytt uppslag (franska)
4157093
wikitext
text/x-wiki
==Franska==
===Substantiv===
{{subst|fr}}
'''labyrinthe'''
#[[labyrint]]
p5thl8lbz9ayz0d6ku5zi6l70nrslvv
4157094
4157093
2026-10-23T12:33:49Z
~2026-56702-21
62364
/* Franska */
4157094
wikitext
text/x-wiki
==Franska==
===Substantiv===
{{fr-subst-m}}
'''labyrinthe'''
#[[labyrint]]
g3mqzhs4etg1d6ej5qp615626w3cdz5
Kategori:Japanska/Uppslag med 徑
14
1074964
4157096
2026-10-23T12:34:52Z
Kusurija
8159
Kategori
4157096
wikitext
text/x-wiki
[[Kategori:Japanska/Alla uppslag|徑]]
[[Kategori:CJK/Uppslag med 徑|Japanska]]
l3hbc16ypt5a12vi1k5nm3x9ksvus3q
Kategori:CJK/Uppslag med 徑
14
1074965
4157099
2026-10-23T12:36:53Z
Kusurija
8159
Kategori
4157099
wikitext
text/x-wiki
[[Kategori:CJK/Alla uppslag|徑]]
[[Kategori:CJK radikal/Uppslag med radikal 60 彳|07]]
oeklnhvo5ae5kzmh0enc986kclmc9sn
Kategori:Japanska/Uppslag med 弶 läst som キョウ (呉音)
14
1074966
4157101
2026-10-23T12:40:13Z
Kusurija
8159
Kategori
4157101
wikitext
text/x-wiki
[[Kategori:Japanska/Uppslag med 弶|キョウ]]
[[Kategori:Japanska/Uppslag med kanji läst som キョウ (呉音)|弶]]
[[Kategori:Japanska/Uppslag kanji läsning|キョウ]]
cvwavxj663tbae6sznjsamgggpu37xx
Kategori:Japanska/Uppslag med 弶
14
1074967
4157102
2026-10-23T12:41:38Z
Kusurija
8159
Kategori
4157102
wikitext
text/x-wiki
[[Kategori:Japanska/Alla uppslag|弶]]
[[Kategori:CJK/Uppslag med 弶|Japanska]]
0bg26wclxtumblpxib0u6poly7cjttm
Kategori:CJK/Uppslag med 弶
14
1074968
4157103
2026-10-23T12:43:42Z
Kusurija
8159
Kategori
4157103
wikitext
text/x-wiki
[[Kategori:CJK/Alla uppslag|弶]]
[[Kategori:CJK radikal/Uppslag med radikal 57 弓|08]]
5x08xbx2bx112l6puqn0uerdga2zmvm
annem
0
1074969
4157104
2026-10-23T13:26:27Z
~2026-56702-21
62364
böjningsform av [[anne]]
4157104
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
'''annem'''
#{{böjning|tr|subst|anne}}
8pgxtjjkot5h4hvyfex5skxyb8a0pdk
anneler
0
1074970
4157105
2026-10-23T13:26:42Z
~2026-56702-21
62364
böjningsform av [[anne]]
4157105
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
'''anneler'''
#{{böjning|tr|subst|anne}}
86dxfb33mc5swwlqri0pxbjlob0w20s
anneyi
0
1074971
4157106
2026-10-23T13:28:37Z
~2026-56702-21
62364
böjningsform av [[anne]]
4157106
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
'''anneyi'''
#{{böjning|tr|subst|anne}}
8g7849c2trqp7z0wn59uis3mf0mwr3f
annemiz
0
1074972
4157107
2026-10-23T13:35:34Z
~2026-56702-21
62364
böjningsform av [[anne]]
4157107
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
'''annemiz'''
#{{böjning|tr|subst|anne}}
cw2u4us7c200t4njfoarpo4iyccz0pn
כירורג
0
1074973
4157113
2026-10-23T15:02:06Z
~2026-56702-21
62364
nytt uppslag (jiddisch)
4157113
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-m-n}}
'''כירורג''' (khirurg) {{m}}
#{{tagg|kat=yrken|språk=yi}}[[kirurg]]
dr2clnh08cfm7daclwtry4zez0060wq
כירורגן
0
1074974
4157114
2026-10-23T15:02:20Z
~2026-56702-21
62364
böjningsform av [[כירורג]]
4157114
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
'''כירורגן'''
#{{böjning|yi|subst|כירורג}}
dwrz2my2puj5jv9mitow1vmy3zbrerf
אָדלער
0
1074975
4157115
2026-10-23T15:06:35Z
~2026-56702-21
62364
nytt uppslag (jiddisch)
4157115
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-m-s}}
'''אָדלער''' (odler) {{m}}
#{{tagg|fåglar|språk=yi}} [[örn]]
mgdqtrd7m45ajlj4nzss7qiblu4d18g
אָדלערס
0
1074976
4157117
2026-10-23T15:07:29Z
~2026-56702-21
62364
böjningsform av [[אָדלער]]
4157117
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
'''אָדלערס'''
#{{böjning|yi|subst|אָדלער}}
e7u39crxk4ar9k816jtnjbjhmfnjs6p
פּעליקאַנען
0
1074977
4157119
2026-10-23T15:10:31Z
~2026-56702-21
62364
böjningsform av [[פּעליקאַן]]
4157119
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
'''פּעליקאַנען'''
#{{böjning|yi|subst|פּעליקאַן}}
axq2yx8oq7xql3yomzszgj7h2oiul67
מעווע
0
1074978
4157120
2026-10-23T15:12:22Z
~2026-56702-21
62364
nytt uppslag (jiddisch)
4157120
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-f-s}}
'''מעווע''' (meve) {{f}}
#{{tagg|kat=fåglar|kat2=fågelarter|språk=yi}} [[fiskmås]], [[mås]]
0ijhm9hf821uwaemhoaxn2whlo0v3oy
mahadsanid
0
1074979
4157121
2026-10-23T15:17:10Z
~2026-56702-21
62364
nytt uppslag (somaliska)
4157121
wikitext
text/x-wiki
==Somaliska==
===Interjektion===
{{interj|so}}
'''mahadsanid'''
#[[tack]]
50t1sxvnxk15fy5ibanx9cd84ikmyhs
ኣመሰገናልሎ
0
1074980
4157124
2026-10-23T15:26:54Z
~2026-56702-21
62364
nytt uppslag (amhariska)
4157124
wikitext
text/x-wiki
==Amhariska==
===Interjektion===
{{interj|am}}
'''ኣመሰገናልሎ''' (amesegenallo)
#[[tack]]
76k6is987jzt1xd3e76kkamxih7kn3t
4157125
4157124
2026-10-23T15:27:35Z
~2026-56702-21
62364
/* Amhariska */
4157125
wikitext
text/x-wiki
==Amhariska==
===Interjektion===
{{interj|am}}
'''ኣመሰገናልሎ''' ({{tr|am|ኣመሰገናልሎ}})
#[[tack]]
avtualze44fdcb0t9b4dvt4psd3rcog
Kategori:Amhariska/Interjektioner
14
1074981
4157126
2026-10-23T15:28:18Z
~2026-56702-21
62364
Ny sida
4157126
wikitext
text/x-wiki
{{kategorinavigering|Amhariska|Interjektioner|Index|nyckel=2}}
5qkvsqnl2ry3gpw9yjf4lk9cjldktb7
መልካም ልደት
0
1074982
4157127
2026-10-23T15:31:57Z
~2026-56702-21
62364
nytt uppslag (amhariska)
4157127
wikitext
text/x-wiki
==Amhariska==
===Interjektion===
{{interj|am}}
'''መልካም ልደት''' ({{tr|am|መልካም ልደት}})
#[[grattis på födelsedagen]]
1v0jkwca7xd0p962oxz2eyld6tmcb58
ልደት
0
1074983
4157129
2026-10-23T15:35:47Z
~2026-56702-21
62364
nytt uppslag (amhariska)
4157129
wikitext
text/x-wiki
==Amhariska==
===Substantiv===
{{subst|am}}
'''ልደት''' ({{tr|am|ልደት}})
#[[födelse]]
#:{{etymologi|Kognat med {{kognat|he|לידה}} och {{kognat|ar|لِدَة}}.}}
9evql7uv151dpfw5fasy7pxbzrw17h8
doğum
0
1074984
4157132
2026-10-23T15:40:43Z
~2026-56702-21
62364
översättning av [[födelse]]
4157132
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
{{tr-subst}}
'''doğum'''
#[[födelse]]
rccsiulblsy9axvt81gsi4ovnu03hdg
4157134
4157132
2026-10-23T15:41:38Z
~2026-56702-21
62364
/* Turkiska */
4157134
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
{{tr-subst}}
'''doğum'''
*{{uttal|tr|ipa=do.ˈum}}
#[[födelse]]
p6k1hiunjdg29elpds9fk0lstt4gibi
doğumlar
0
1074985
4157133
2026-10-23T15:41:20Z
~2026-56702-21
62364
böjningsform av [[doğum]]
4157133
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
'''doğumlar'''
#{{böjning|tr|subst|doğum}}
rkh26ewfwtabarfbiwf9xho8uhxiuju
doğumu
0
1074986
4157135
2026-10-23T15:41:57Z
~2026-56702-21
62364
böjningsform av [[doğum]]
4157135
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
'''doğumu'''
#{{böjning|tr|subst|doğum}}
shocaku0os3u92eqsgifhkc4f0f4pli
doğumum
0
1074987
4157136
2026-10-23T15:43:48Z
~2026-56702-21
62364
böjningsform av [[doğum]]
4157136
wikitext
text/x-wiki
==Turkiska==
===Substantiv===
'''doğumum'''
#{{böjning|tr|subst|doğum}}
28g1343eej4zltuud6csd186j98binv
מעוועס
0
1074988
4157144
2026-10-23T16:07:52Z
Frodlekis
762
böjningsform av [[מעווע]]
4157144
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
'''מעוועס'''
#{{böjning|yi|subst|מעווע}}
ijowh3xabf17wxn5xhddmulm5nlciol
በግት
0
1074989
4157146
2026-10-23T16:08:56Z
Frodlekis
762
översättning av [[tacka]]
4157146
wikitext
text/x-wiki
==Amhariska==
===Substantiv===
{{subst|am}}
'''በግት''' (bägit) {{f}}
#{{tagg|kat=djurhonor|språk=am}} [[tacka]]
mav1s1rp4gsa3kud07kk4kx50pr342s
4157147
4157146
2026-10-23T16:09:24Z
Frodlekis
762
/* Amhariska */
4157147
wikitext
text/x-wiki
==Amhariska==
===Substantiv===
{{subst|am}}
'''በግት''' (bägit) {{f}}
#{{tagg|djurhonor|språk=am}} [[tacka]]
#:{{besläktade ord|[[በግ]] (bäg)}}
h26mvuixz8rj7nu3v21gmgcc76suwqu
በግ
0
1074990
4157148
2026-10-23T16:10:04Z
Frodlekis
762
Ny sida
4157148
wikitext
text/x-wiki
==Amhariska==
===Substantiv===
{{subst|am}}
'''በግ''' (bäg) {{m}}
#{{tagg|djurhanar|språk=am}} [[bagge]]
#:{{besläktade ord|[[በግት]] (bägit)}}
ocp1b3yelawqfuhh68i84wxvu00ggvm
ላም
0
1074991
4157151
2026-10-23T16:12:35Z
Frodlekis
762
översättning av [[ko]]
4157151
wikitext
text/x-wiki
==Amhariska==
===Substantiv===
{{subst|am}}
'''ላም''' (lam)
#{{tagg|kat=djurhonor|språk=am}} [[ko]]
nobsm38pfmxhh447lb8mcnvf81tfpa1
ብህለ
0
1074992
4157153
2026-10-23T19:14:42Z
Frodlekis
762
nytt uppslag (ge'ez)
4157153
wikitext
text/x-wiki
==Ge'ez==
===Verb===
{{verb|gez}}
'''ብህለ'''
#[[säga]]
#[[tala]]
#[[mena]], uttrycka sin mening
:{{avgränsare}}
:{{etymologi|Kognat med {{kognat|sycܡܰܠܶܠ}} och {{kognat|ar|بَهَلَ}} (''bahala'').}}
1k5jci41nljiofee65vmuwbfytbtbcd
4157154
4157153
2026-10-23T19:15:02Z
Frodlekis
762
/* Ge'ez */
4157154
wikitext
text/x-wiki
==Ge'ez==
===Verb===
{{verb|gez}}
'''ብህለ''' ({{tr|gez|ብህለ}})
#[[säga]]
#[[tala]]
#[[mena]], uttrycka sin mening
:{{avgränsare}}
:{{etymologi|Kognat med {{kognat|syc|ܡܰܠܶܠ}} och {{kognat|ar|بَهَلَ}} (''bahala'').}}
23j62kjyy2j7p5u66b931rgl2dk05zz
4157155
4157154
2026-10-23T19:15:44Z
Frodlekis
762
/* Ge'ez */
4157155
wikitext
text/x-wiki
==Ge'ez==
===Verb===
{{verb|gez}}
'''ብህለ''' ({{tr|gez|ብህለ}})
#[[säga]]
#[[tala]]
#[[kalla]] (för visst namn=
#[[mena]], uttrycka sin mening
:{{avgränsare}}
:{{etymologi|Kognat med {{kognat|syc|ܡܰܠܶܠ}} och {{kognat|ar|بَهَلَ}} (''bahala'').}}
g4ph4jq6ib8r3iub6i3ilhz7ds6z3kx
4157156
4157155
2026-10-23T19:15:50Z
Frodlekis
762
/* Ge'ez */
4157156
wikitext
text/x-wiki
==Ge'ez==
===Verb===
{{verb|gez}}
'''ብህለ''' ({{tr|gez|ብህለ}})
#[[säga]]
#[[tala]]
#[[kalla]] (för visst namn)
#[[mena]], uttrycka sin mening
:{{avgränsare}}
:{{etymologi|Kognat med {{kognat|syc|ܡܰܠܶܠ}} och {{kognat|ar|بَهَلَ}} (''bahala'').}}
pl5xk5892uqnd4g22rb3i7ktdjv71d6
Kategori:Ge'ez/Alla uppslag
14
1074993
4157157
2026-10-23T19:16:22Z
Frodlekis
762
Ny sida
4157157
wikitext
text/x-wiki
{{kategorinavigering|Geez|Verb|Index|nyckel=2}}
{{kategorilistenavigering|gez}}
tdx8b5e680x23xb8uvkq67un9si22wn
4157158
4157157
2026-10-23T19:16:33Z
Frodlekis
762
4157158
wikitext
text/x-wiki
{{kategorinavigering|Ge'ez|Verb|Index|nyckel=2}}
{{kategorilistenavigering|gez}}
igah3adnb60f00y5kdl9fgx5u2uhhlg
4157160
4157158
2026-10-23T19:17:44Z
Frodlekis
762
4157160
wikitext
text/x-wiki
{{kategorinavigering|Ge'ez|Alla uppslag|Index|nyckel=1}}
{{kategorilistenavigering|gez}}
p972wiexwuvy1r7xwg3zcubo6owzdal
Kategori:Ge'ez/Verb
14
1074994
4157159
2026-10-23T19:17:12Z
Frodlekis
762
Ny sida
4157159
wikitext
text/x-wiki
{{kategorinavigering|Ge'ez|Verb|Index|nyckel=2}}
{{kategorilistenavigering|gez}}
igah3adnb60f00y5kdl9fgx5u2uhhlg
Kategori:Ge'ez
14
1074995
4157161
2026-10-23T19:19:07Z
Frodlekis
762
Ny sida
4157161
wikitext
text/x-wiki
{{kategorinavigering|Ge'ez}}
8y7dcn132l1l371o3o2fauqlt6qn0xg
4157344
4157161
2026-10-24T01:56:19Z
Frodlekis
762
4157344
wikitext
text/x-wiki
{{kategorinavigering|Ge'ez}}
{{faktaruta språk}}
fdt0yt650gaod9giue3n6ufm7ohslff
Kategori:Ge'ez/Substantiv
14
1074996
4157162
2026-10-23T19:23:02Z
Frodlekis
762
Ny sida
4157162
wikitext
text/x-wiki
{{kategorinavigering|Ge'ez|Substantiv|Index|nyckel=2}}
{{kategorilistenavigering|gez}}
8fna3svfbdrvrrvgdz2l20wxfy0t4o5
מאַלינע
0
1074997
4157163
2026-10-23T19:40:20Z
Frodlekis
762
nytt uppslag (jiddisch)
4157163
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{subst|yi}}
'''מאַלינע''' ({{tr|yi|מאַלינע}})
#[[hallon]]
d0r3o1dt6f0hc0vb8nnz38vh43qaqy0
4157164
4157163
2026-10-23T19:40:52Z
Frodlekis
762
4157164
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-f-s}}
'''מאַלינע''' ({{tr|yi|מאַלינע}}) {{f}}
#{{tagg|kat=mat|kat2=växter|språk=yi}} [[hallon]]
15lg27jrg12sakwute9q35xfn3vqry1
אָזשעניצע
0
1074998
4157167
2026-10-23T19:45:31Z
Frodlekis
762
nytt uppslag (jiddisch)
4157167
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-f-s}}
'''אָזשעניצע''' ({{tr|yi|אָזשעניצע}}) {{f}}
#{{tagg|kat=mat|kat2=växter|språk=yi}} [[björnbär]]
rbo6v84og4hb5htyq34dkrb13gp2gfk
4157168
4157167
2026-10-23T19:46:23Z
Frodlekis
762
/* Jiddisch */
4157168
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-f-s}}
'''אָזשעניצע''' ({{tr|yi|אָזשעניצע}}) {{f}}
#{{tagg|kat=mat|kat2=växter|språk=yi}} [[björnbär]]
#:{{synonymer|{{länk|yi|אָזשענע}} (''ozhene'')}}
7yuboufpdpz3oujsihpoi1jprxxinm5
4157171
4157168
2026-10-23T19:47:28Z
Frodlekis
762
4157171
wikitext
text/x-wiki
==Jiddisch==
===Substantiv===
{{yi-subst-f-s}}
'''אָזשעניצע''' ({{tr|yi|אָזשעניצע}}) {{f}}
#{{tagg|kat=frukter|kat2=växter|språk=yi}} [[björnbär]]
#:{{synonymer|{{länk|yi|אָזשענע}} (''ozhene'')}}
h649eupiga8cehogi692rge3bmm9jzo
còlit pitnegre
0
1074999
4157173
2026-10-23T19:52:48Z
Frodlekis
762
översättning av [[nunnestenskvätta]]
4157173
wikitext
text/x-wiki
==Katalanska==
===Substantiv===
{{subst|ca}}
'''[[còlit]] [[pitnegre]]''' {{m}}
#{{tagg|fåglar|språk=ca|kat=fågelarter}} [[nunnestenskvätta]]
#:{{synonymer|[[còlit de pit negre]]}}
8qsgr19xj1ipptfyfsgd5s81et8h6gn
còlit de pit negre
0
1075000
4157174
2026-10-23T19:53:18Z
Frodlekis
762
Ny sida
4157174
wikitext
text/x-wiki
==Katalanska==
===Substantiv===
{{subst|ca}}
'''[[còlit]] [[de]] [[pit]] [[negre]]''' {{m}}
#{{tagg|fåglar|språk=ca|kat=fågelarter}} [[nunnestenskvätta]]
#:{{synonymer|[[còlit pitnegre]]}}
8f2g0uwk82nuum580i4at7gcvl38e5e
dezertsaksikolo
0
1075001
4157179
2026-10-23T20:15:06Z
Frodlekis
762
översättning av [[ökenstenskvätta]]
4157179
wikitext
text/x-wiki
==Esperanto==
===Substantiv===
{{subst|eo}}
'''dezertsaksikolo'''
#{{tagg|kat=fåglar|kat2=fågelarter|språk=eo}} [[ökenstenskvätta]]
2xvu31u4wuj0dha3089ab1esqwp02vd
franbwaz
0
1075002
4157182
2026-10-23T20:17:09Z
Frodlekis
762
nytt uppslag (haitisk kreol)
4157182
wikitext
text/x-wiki
==Haitisk kreol==
===Substantiv===
{{subst|ht}}
'''franbwaz'''
#{{tagg|kat=frukter|språk=ht}} [[hallon]]
dg8capujceqlxrsc9415f26ndee45o1
4157183
4157182
2026-10-23T20:18:11Z
Frodlekis
762
4157183
wikitext
text/x-wiki
==Haitisk kreol==
===Substantiv===
{{subst|ht}}
'''franbwaz'''
#{{tagg|kat=frukter|språk=ht}} [[hallon]]
==Mauritisk kreol==
===Substantiv===
{{subst|mfe}}
'''franbwaz'''
#{{tagg|kat=frukter|språk=mfe}} [[hallon]]
han7iq9h8vpse82oqul7p32jzj11t0u
Kategori:Krimtatariska/Adjektiv
14
1075003
4157184
2026-10-23T20:30:56Z
Frodlekis
762
Ny sida
4157184
wikitext
text/x-wiki
{{kategorinavigering|Krimtatariska|Adjektiv|Index|nyckel=2}}
{{kategorilistenavigering|crh}}
id0k2zrkftgcrsv3tzb2vfdwb269v8m
absolüt
0
1075004
4157185
2026-10-23T20:32:21Z
Frodlekis
762
nytt uppslag (krimtatariska)
4157185
wikitext
text/x-wiki
==Krimtatariska==
===Adjektiv===
{{adj|crh}}
'''absolüt'''
#[[absolut]]
c54gvki1iitv44y3rs0csw4woqnp4yg
işkir
0
1075005
4157186
2026-10-23T20:33:17Z
Frodlekis
762
nytt uppslag (krimtatariska)
4157186
wikitext
text/x-wiki
==Krimtatariska==
===Adjektiv===
{{adj|crh}}
'''işkir'''
#[[idog]], hårt arbetande
ed4l8kb658dls40gxppaibl9vf1xht0
פּאַמעלעך
0
1075006
4157188
2026-10-23T20:47:07Z
Frodlekis
762
nytt uppslag (jiddisch)
4157188
wikitext
text/x-wiki
==Jiddisch==
===Adjektiv===
{{yi-adj}}
'''פּאַמעלעך''' ({{tr|yi|פּאַמעלעך}})
#[[långsam]]
===Adverb===
{{adj|yi}}
'''פּאַמעלעך''' ({{tr|yi|פּאַמעלעך}})
#[[sakta]], [[långsamt]]
fwcznd366k2w2ilzyvej9k2zi9djhav
ristoranti
0
1075007
4157190
2026-10-23T20:56:31Z
DanielParoliere
59667
/* */
4157190
wikitext
text/x-wiki
==Italienska==
===Substantiv===
'''ristoranti'''
#{{böjning|it|subst|ristorante}}
octmino7kmxyecfctepmq812cqsff7g
chillet
0
1075008
4157193
2026-10-23T21:28:30Z
Frodlekis
762
böjningsform av [[chill]]
4157193
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''chillet'''
#{{böjning|sv|subst|chill}}
hfoox3r195ljtqublv1ffr3kwz91zj8
chillets
0
1075009
4157194
2026-10-23T21:28:43Z
Frodlekis
762
böjningsform av [[chill]]
4157194
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''chillets'''
#{{böjning|sv|subst|chill}}
7fnv5ycy2qh22w3kulukg3w75xmjy33
chillens
0
1075010
4157195
2026-10-23T21:28:51Z
Frodlekis
762
böjningsform av [[chill]]
4157195
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''chillens'''
#{{böjning|sv|subst|chill}}
ii8ue5i9ads01cyvcfcfdxuykwmt932
Modul:wikidata språk
828
1075011
4157196
2026-10-23T21:32:23Z
Frodlekis
762
Ny sida
4157196
Scribunto
text/plain
local p = {}
-- Beroenden:
-- Modul:Wikidata (claim, getLabel, getParentValues)
-- Modul:lang/data (lokal kodmappning; se kommentaren i getData)
local Mwd = require('Modul:Wikidata')
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {}
data.label = Mwd.getLabel{qid, {linked = 'no'}} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
local aliases = entity.aliases and entity.aliases[lang] or {}
data.aliases = {}
for _, alias in ipairs(aliases) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription()
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
-- TODO: den katalanska Modul:llengua/taula används här för att hitta
-- en lokal Wiktionary-kod när Wikidata saknar ISO- och Wikimedia-kod.
-- På svenska Wiktionary måste motsvarande uppslag göras mot den faktiska
-- strukturen i Modul:lang/data innan denna reservlösning kan aktiveras.
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.projects = {
wikidata = qid,
wikipedia = entity:getSitelink(lang .. 'wiki'),
}
if data.code.wikimedia then
local main_page = mw.wikibase.getEntity('Q5296')
if main_page and main_page.sitelinks and main_page.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then
language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>'
end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local endonym = string.match(data.endonym, '>(.+)<') or data.endonym
local code = data.code.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. frame:expandTemplate{title = 'm', args = {code, '', endonym}}
end
local codes = ''
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then
data.code.wikimedia = nil
end
if data.code.iso6391 then
codes = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>'
if data.code.iso6393 or data.code.wikimedia then codes = codes .. ', ' end
end
if data.code.iso6393 then
codes = codes .. '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
if data.code.wikimedia then codes = codes .. ', ' end
elseif data.code.iso6392 then
codes = codes .. '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
if data.code.wikimedia then codes = codes .. ', ' end
end
if data.code.wikimedia then
codes = codes .. '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>'
end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local html = mw.html.create('table'):addClass('wikitable')
local rows = {
{'Språk', language},
{'Kod', codes},
{'Språkfamilj', data.family or ''},
{'Projekt', projects},
}
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and data.map then
tr:tag('td'):attr('rowspan', '4'):wikitext(data.map)
end
end
return html
end
function p.debug(param)
local data = getData(param[1])
return mw.dumpObject(data)
end
return p
snbcho8afzcfle23vvsfn16y2iwb0p0
4157200
4157196
2026-10-23T21:40:30Z
Frodlekis
762
4157200
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.code.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. frame:expandTemplate{title = 'm', args = {code, '', data.endonym}}
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {{'Språk', language}, {'Kod', table.concat(codes, ', ')}, {'Språkfamilj', data.family or ''}, {'Projekt', projects}}
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and data.map then tr:tag('td'):attr('rowspan', '4'):wikitext(data.map) end
end
return html
end
return p
3h2b9w0yz3zeshnsdl6wwv203x2dk1f
4157203
4157200
2026-10-23T21:46:42Z
Frodlekis
762
4157203
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.code.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {{'Språk', language}, {'Kod', table.concat(codes, ', ')}, {'Språkfamilj', data.family or ''}, {'Projekt', projects}}
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and data.map then tr:tag('td'):attr('rowspan', '4'):wikitext(data.map) end
end
return html
end
return p
tu1dw1gw92br43v20s6lrfkpos28c45
4157204
4157203
2026-10-23T21:52:40Z
Frodlekis
762
4157204
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.code.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {{'Språk', language}, {'Kod', table.concat(codes, ', ')}, {'Språkfamilj', data.family or ''}, {'Projekt', projects}}
if data.video and data.video ~= '' then rows[#rows + 1] = {'Video', data.video} end
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and data.map then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(data.map) end
end
return html
end
return p
clf1j3wmyroirmymqp0gtzrqlnl1yj0
4157206
4157204
2026-10-23T21:56:23Z
Frodlekis
762
4157206
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = Mwd.claim{item = qid, property = 'P282', editicon = 'false'}
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.code.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {{'Språk', language}, {'Skriftsystem', data.script or ''}, {'Kod', table.concat(codes, ', ')}, {'Språkfamilj', data.family or ''}, {'Projekt', projects}}
if data.video and data.video ~= '' then rows[#rows + 1] = {'Video', data.video} end
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and data.map then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(data.map) end
end
return html
end
return p
qv5noro9ccwyop8d18tqbbgcyl6z734
4157207
4157206
2026-10-23T21:59:45Z
Frodlekis
762
4157207
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = Mwd.claim{item = qid, property = 'P282', editicon = 'false'}
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.code.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {{'Språk', language}, {'Skriftsystem', data.script or ''}, {'Kod', table.concat(codes, ', ')}, {'Språkfamilj', data.family or ''}, {'Projekt', projects}}
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
mediaColumn:wikitext(data.map)
end
if data.video and data.video ~= '' then
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
mediaColumn:wikitext(data.video)
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
mt63z2cwfocapzimy2gsc25lvpzhxrl
4157208
4157207
2026-10-23T22:02:45Z
Frodlekis
762
4157208
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = Mwd.claim{item = qid, property = 'P282', editicon = 'false'}
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.code.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {{'Språk', language}, {'Skriftsystem', data.script or ''}, {'Kod', table.concat(codes, ', ')}, {'Språkfamilj', data.family or ''}, {'Projekt', projects}}
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
7z4x5bn0td3evw8z6uqkrwpfhljs99v
4157209
4157208
2026-10-23T22:12:23Z
Frodlekis
762
4157209
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property)
return mw.text.listToText(getDistinctItemLinks(entity, property))
end
local function distinctClassSummary(entity, property)
local values = getDistinctItemLinks(entity, property)
if #values == 0 then return nil end
return tostring(#values) .. (#values == 1 and ' klass: ' or ' klasser: ') .. mw.text.listToText(values)
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282')
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = Mwd.claim{item = qid, property = 'P443', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Tempus', 'P3103'},
{'Modus', 'P3161'},
{'Person', 'P5110'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2])
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Verbens konjugationsklasser', distinctClassSummary(data.entity, 'P5206'))
appendRow(rows, 'Böjningsmönster', distinctClassSummary(data.entity, 'P5913'))
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Ethnologue-status', linkedItemList(data.entity, 'P3823'))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(data.audio)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
0znu94p5svi65auk68idildh932tom7
4157210
4157209
2026-10-23T22:13:03Z
Frodlekis
762
4157210
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property)
return mw.text.listToText(getDistinctItemLinks(entity, property))
end
local function distinctClassSummary(entity, property)
local values = getDistinctItemLinks(entity, property)
if #values == 0 then return nil end
return tostring(#values) .. (#values == 1 and ' klass: ' or ' klasser: ') .. mw.text.listToText(values)
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282')
data.countries = linkedItemList(entity, 'P17')
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = Mwd.claim{item = qid, property = 'P443', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Tempus', 'P3103'},
{'Modus', 'P3161'},
{'Person', 'P5110'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2])
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Verbens konjugationsklasser', distinctClassSummary(data.entity, 'P5206'))
appendRow(rows, 'Böjningsmönster', distinctClassSummary(data.entity, 'P5913'))
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Ethnologue-status', linkedItemList(data.entity, 'P3823'))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(data.audio)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
oepngmdc1mue8u9fnsqu1beloonpxa4
4157213
4157210
2026-10-23T22:31:55Z
Frodlekis
762
4157213
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property)
return mw.text.listToText(getDistinctItemLinks(entity, property))
end
local function distinctClassSummary(entity, property)
local values = getDistinctItemLinks(entity, property)
if #values == 0 then return nil end
return tostring(#values) .. (#values == 1 and ' klass: ' or ' klasser: ') .. mw.text.listToText(values)
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
return tostring(mw.html.create('a'):attr('href', url):wikitext(label))
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282')
data.countries = linkedItemList(entity, 'P17')
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Tempus', 'P3103'},
{'Modus', 'P3161'},
{'Person', 'P5110'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2])
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Verbens konjugationsklasser', distinctClassSummary(data.entity, 'P5206'))
appendRow(rows, 'Böjningsmönster', distinctClassSummary(data.entity, 'P5913'))
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
k4ox0n3733egwq24cnf561plgf7qyzk
4157215
4157213
2026-10-23T22:37:05Z
Frodlekis
762
4157215
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property)
return mw.text.listToText(getDistinctItemLinks(entity, property))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
return tostring(mw.html.create('a'):attr('href', url):wikitext(label))
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282')
data.countries = linkedItemList(entity, 'P17')
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2])
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
t6gxavjcpssl4afqkk3bk5omqrl2nx2
4157216
4157215
2026-10-23T22:38:45Z
Frodlekis
762
4157216
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property)
return mw.text.listToText(getDistinctItemLinks(entity, property))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282')
data.countries = linkedItemList(entity, 'P17')
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2])
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
avwrqj45gbec9av2y3h250f85n2u4vy
4157217
4157216
2026-10-23T22:40:20Z
Frodlekis
762
4157217
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
if lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'}
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2])
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
5kjluiii4w9xgh519ptstm1fvk5ukb8
4157222
4157217
2026-10-23T22:54:44Z
Frodlekis
762
4157222
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
if lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2])
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
hhq4jnsfwy4eqezacuf21f4n8n81rqc
4157232
4157222
2026-10-23T23:08:03Z
Frodlekis
762
4157232
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar var ' .. data.label .. ' primärt talas'):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
fddm52yi5r4b68aspmxkex8x2dvu171
4157238
4157232
2026-10-23T23:19:31Z
Frodlekis
762
4157238
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
35cdwadxnhq0o5joudmiboesgzvmt5w
4157239
4157238
2026-10-23T23:20:16Z
Frodlekis
762
4157239
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label = Mwd.getLabel{[1] = id, linked = 'no'} or id
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
qajoovyfe7bg31ilueucdkrzmj0d768
4157242
4157239
2026-10-23T23:25:19Z
Frodlekis
762
4157242
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label
if plainLabelLanguage then
local sitelink = mw.wikibase.getSitelink(id)
label = mw.wikibase.getLabelByLang(id, plainLabelLanguage)
or (sitelink and mw.title.new(sitelink).text)
or mw.wikibase.getLabelByLang(id, 'en')
or id
else
label = Mwd.getLabel{[1] = id, linked = 'no'} or id
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
14wrw3ldmspp3cq89gfw513hnkoy3ki
4157243
4157242
2026-10-23T23:37:47Z
Frodlekis
762
4157243
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label
if plainLabelLanguage then
local sitelink = mw.wikibase.getSitelink(id)
label = mw.wikibase.getLabelByLang(id, plainLabelLanguage)
or (sitelink and mw.title.new(sitelink).text)
or mw.wikibase.getLabelByLang(id, 'en')
or id
else
label = Mwd.getLabel{[1] = id, linked = 'no'} or id
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then
rows[#rows + 1] = {label, value}
end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1',
separator = '<br />', references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'},
{'Numerus', 'P13986'},
{'Kasus', 'P2989'},
{'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
local columns = html:tag('colgroup')
columns:tag('col'):css('width', '10em'):done()
columns:tag('col'):done()
if hasMedia then columns:tag('col'):css('width', '14em'):done() end
columns:done()
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then tr:tag('td'):attr('rowspan', tostring(#rows)):wikitext(mediaContent) end
end
return html
end
return p
ad7czehlzacm4yr8delp06458pfqim3
4157244
4157243
2026-10-23T23:40:04Z
Frodlekis
762
4157244
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label
if plainLabelLanguage then
local sitelink = mw.wikibase.getSitelink(id)
label = mw.wikibase.getLabelByLang(id, plainLabelLanguage)
or (sitelink and mw.title.new(sitelink).text)
or mw.wikibase.getLabelByLang(id, 'en')
or id
else
label = Mwd.getLabel{[1] = id, linked = 'no'} or id
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
gzah5ggalax7f9muncglzk8bf7vr1tf
4157245
4157244
2026-10-23T23:41:50Z
Frodlekis
762
4157245
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label
if plainLabelLanguage then
local sitelink = mw.wikibase.getSitelink(id)
label = mw.wikibase.getLabelByLang(id, plainLabelLanguage)
or (sitelink and mw.title.new(sitelink).text)
or mw.wikibase.getLabelByLang(id, 'en')
or id
else
label = Mwd.getLabel{[1] = id, linked = 'no'} or id
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', function() return identifier end)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. '<br />Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all', 'sv')
if values ~= '' then
local line = grammar:tag('div'):css('margin', '0 0 0.2em 0')
line:tag('span'):css('font-weight', 'bold'):wikitext(field[1] .. ': '):done()
line:wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder knutna till språket på Wikidata', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
mp9fc6df6aq0v0h8z615g2uxizgnn25
4157248
4157245
2026-10-23T23:49:58Z
Frodlekis
762
4157248
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label
if plainLabelLanguage then
local sitelink = mw.wikibase.getSitelink(id)
label = mw.wikibase.getLabelByLang(id, plainLabelLanguage)
or (sitelink and mw.title.new(sitelink).text)
or mw.wikibase.getLabelByLang(id, 'en')
or id
else
label = Mwd.getLabel{[1] = id, linked = 'no'} or id
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
references = 1, onlysourced = true, editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. (data.description and ' · ' or '<br />') .. 'Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
4j6p7ja4sitne9li6karu1z683rqhco
4157253
4157248
2026-10-24T00:01:28Z
Frodlekis
762
4157253
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label
if plainLabelLanguage then
local sitelink = mw.wikibase.getSitelink(id)
label = mw.wikibase.getLabelByLang(id, plainLabelLanguage)
or (sitelink and mw.title.new(sitelink).text)
or mw.wikibase.getLabelByLang(id, 'en')
or id
else
label = Mwd.getLabel{[1] = id, linked = 'no'} or id
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function lowercaseWikilinkLabels(wikitext)
if not wikitext then return nil end
return mw.ustring.gsub(wikitext, '%[%[(.-)|(.-)%]%]', function(target, label)
return '[[' .. target .. '|' .. mw.ustring.lower(label) .. ']]'
end)
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = lowercaseWikilinkLabels(Mwd.getParentValues{item = qid, property = 'P279', uptovalueid = 'Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat = '$1', cascade = 'true', sorting = '-1', editicon = 'false'})
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. (data.description and ' · ' or '<br />') .. 'Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
l0wmpkvyew7ldg848ju01h62ds1kzpp
4157265
4157253
2026-10-24T00:41:27Z
Frodlekis
762
4157265
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local label
if plainLabelLanguage then
local sitelink = mw.wikibase.getSitelink(id)
label = mw.wikibase.getLabelByLang(id, plainLabelLanguage)
or (sitelink and mw.title.new(sitelink).text)
or mw.wikibase.getLabelByLang(id, 'en')
or id
else
label = Mwd.getLabel{[1] = id, linked = 'no'} or id
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = mw.wikibase.getSitelink(id) or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = linkedItemList(entity, 'P279', 'all')
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. (data.description and ' · ' or '<br />') .. 'Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
3wrf9k2i9muy7mvl8r8l1e2wlfp8drl
4157266
4157265
2026-10-24T00:43:14Z
Frodlekis
762
4157266
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local requestedLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, requestedLanguage)
local labelLanguage = requestedLanguage
local target = mw.wikibase.getSitelink(id)
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and requestedLanguage ~= 'en' then
label = label .. ' (en)'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
target = target or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = linkedItemList(entity, 'P279', 'all')
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then language = language .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ', ') .. ')</span>' end
if data.description then language = language .. '<br />' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
language = language .. (data.description and ' · ' or '<br />') .. 'Autoglottonym: ' .. (code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''")
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
89fjod6lvad276nkwg2c2lpsra7czds
4157269
4157266
2026-10-24T00:53:47Z
Frodlekis
762
4157269
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local requestedLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, requestedLanguage)
local labelLanguage = requestedLanguage
local target = mw.wikibase.getSitelink(id)
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and requestedLanguage ~= 'en' then
label = label .. ' (en)'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
target = target or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = linkedItemList(entity, 'P279', 'all')
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. ' Språkets inhemska namn: ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('dl'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('dt'):css('font-weight', 'bold'):wikitext(field[1]):done()
grammar:tag('dd'):css('margin-left', '1em'):css('margin-bottom', '0.3em'):wikitext(values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
hs4ukih028xmybm85bcwqzrs9m6fg8r
4157270
4157269
2026-10-24T00:56:49Z
Frodlekis
762
4157270
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local requestedLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, requestedLanguage)
local labelLanguage = requestedLanguage
local target = mw.wikibase.getSitelink(id)
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and requestedLanguage ~= 'en' then
label = label .. ' (en)'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
target = target or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = linkedItemList(entity, 'P279', 'all')
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
0fyjnomkqsx2ulnu18kqsa3lgbmqfwq
4157347
4157270
2026-10-24T02:02:41Z
Frodlekis
762
4157347
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local function isLanguageFamily(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and value.id == 'Q25295' then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageFamily(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function familyTreeMarkup(entity, path, depth)
if depth >= 20 then return '' end
local parents = familyParents(entity)
if #parents == 0 then return '' end
local rows = {'<ul style="line-height:100%; margin-left:0.45em; padding-left:0">'}
for _, parent in ipairs(parents) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
rows[#rows + 1] = '<li>' .. familyLink(parent.id)
rows[#rows + 1] = familyTreeMarkup(parent.entity, nextPath, depth + 1)
rows[#rows + 1] = '</li>'
end
end
rows[#rows + 1] = '</ul>'
return table.concat(rows)
end
local function familyTree(entity)
local tree = familyTreeMarkup(entity, {[entity.id] = true}, 0)
return tree ~= '' and tree or nil
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
6urck2n7ifkd3rqdapop7wbl6o2x7k4
4157348
4157347
2026-10-24T02:07:02Z
Frodlekis
762
4157348
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local languageTreeClasses = {
Q25295 = true, -- language family
Q34770 = true, -- language
Q33384 = true, -- dialect
Q2630831 = true, -- supradialect
Q20671152 = true, -- dialect family
Q1208380 = true, -- dialect group
Q8217193 = true, -- subdialect
}
local function isLanguageTreeNode(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and languageTreeClasses[value.id] then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageTreeNode(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function familyTreeMarkup(entity, path, depth)
if depth >= 20 then return '' end
local parents = familyParents(entity)
if #parents == 0 then return '' end
local rows = {'<ul style="line-height:100%; margin-left:0.45em; padding-left:0">'}
for _, parent in ipairs(parents) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
rows[#rows + 1] = '<li>' .. familyLink(parent.id)
rows[#rows + 1] = familyTreeMarkup(parent.entity, nextPath, depth + 1)
rows[#rows + 1] = '</li>'
end
end
rows[#rows + 1] = '</ul>'
return table.concat(rows)
end
local function familyTree(entity)
local tree = familyTreeMarkup(entity, {[entity.id] = true}, 0)
return tree ~= '' and tree or nil
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
augsv8pfhnffq1ewchqizp2tigj2b26
4157349
4157348
2026-10-24T02:08:34Z
Frodlekis
762
4157349
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local languageTreeClasses = {
Q25295 = true, -- language family
Q34770 = true, -- language
Q33742 = true, -- natural language
Q33384 = true, -- dialect
Q2630831 = true, -- supradialect
Q20671152 = true, -- dialect family
Q1208380 = true, -- dialect group
Q8217193 = true, -- subdialect
}
local function isLanguageTreeNode(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and languageTreeClasses[value.id] then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageTreeNode(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function familyTreeMarkup(entity, path)
local parents = familyParents(entity)
if #parents == 0 then return '' end
local rows = {'<ul style="line-height:100%; margin-left:0.45em; padding-left:0">'}
for _, parent in ipairs(parents) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
rows[#rows + 1] = '<li>' .. familyLink(parent.id)
rows[#rows + 1] = familyTreeMarkup(parent.entity, nextPath)
rows[#rows + 1] = '</li>'
end
end
rows[#rows + 1] = '</ul>'
return table.concat(rows)
end
local function familyTree(entity)
local tree = familyTreeMarkup(entity, {[entity.id] = true})
return tree ~= '' and tree or nil
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
quo22e34xrfikvj72ziou7jrwbeprgd
4157350
4157349
2026-10-24T02:09:57Z
Frodlekis
762
4157350
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local languageTreeClasses = {
Q25295 = true, -- language family
Q34770 = true, -- language
Q33742 = true, -- natural language
Q33384 = true, -- dialect
Q2630831 = true, -- supradialect
Q20671152 = true, -- dialect family
Q1208380 = true, -- dialect group
Q8217193 = true, -- subdialect
}
local function isLanguageTreeNode(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and languageTreeClasses[value.id] then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageTreeNode(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function longestFamilyPath(entity, path)
local best = {}
for _, parent in ipairs(familyParents(entity)) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
local candidate = {{id = parent.id}}
for _, ancestor in ipairs(longestFamilyPath(parent.entity, nextPath)) do
candidate[#candidate + 1] = ancestor
end
if #candidate > #best then best = candidate end
end
end
return best
end
local function familyTreeMarkup(path, index)
local node = path[index]
if not node then return '' end
return '<ul style="line-height:100%; margin-left:0.45em; padding-left:0"><li>'
.. familyLink(node.id) .. familyTreeMarkup(path, index + 1) .. '</li></ul>'
end
local function familyTree(entity)
local path = longestFamilyPath(entity, {[entity.id] = true})
local tree = familyTreeMarkup(path, 1)
return tree ~= '' and tree or nil
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
ka7reecemrrlcfn40ud06227xw25fcl
4157351
4157350
2026-10-24T02:12:44Z
Frodlekis
762
4157351
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local languageTreeClasses = {
Q25295 = true, -- language family
Q34770 = true, -- language
Q33742 = true, -- natural language
Q33384 = true, -- dialect
Q2630831 = true, -- supradialect
Q20671152 = true, -- dialect family
Q1208380 = true, -- dialect group
Q8217193 = true, -- subdialect
}
local function isLanguageTreeNode(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and languageTreeClasses[value.id] then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageTreeNode(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function longestFamilyPath(entity, path)
local best = {}
for _, parent in ipairs(familyParents(entity)) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
local candidate = {{id = parent.id}}
for _, ancestor in ipairs(longestFamilyPath(parent.entity, nextPath)) do
candidate[#candidate + 1] = ancestor
end
if #candidate > #best then best = candidate end
end
end
return best
end
local function familyTreeMarkup(path, index)
local node = path[index]
if not node then return '' end
return '<ul style="line-height:100%; margin-left:0.45em; padding-left:0"><li>'
.. familyLink(node.id) .. familyTreeMarkup(path, index - 1) .. '</li></ul>'
end
local function familyTree(entity)
local path = longestFamilyPath(entity, {[entity.id] = true})
local tree = familyTreeMarkup(path, #path)
return tree ~= '' and tree or nil
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
3gd2f0cam0uuxvufwowf1i58l8ok0ap
4157358
4157351
2026-10-24T02:34:05Z
Frodlekis
762
4157358
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local languageTreeClasses = {
Q25295 = true, -- language family
Q34770 = true, -- language
Q33742 = true, -- natural language
Q33384 = true, -- dialect
Q2630831 = true, -- supradialect
Q20671152 = true, -- dialect family
Q1208380 = true, -- dialect group
Q8217193 = true, -- subdialect
}
local function isLanguageTreeNode(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and languageTreeClasses[value.id] then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageTreeNode(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function longestFamilyPath(entity, path)
local best = {}
for _, parent in ipairs(familyParents(entity)) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
local candidate = {{id = parent.id}}
for _, ancestor in ipairs(longestFamilyPath(parent.entity, nextPath)) do
candidate[#candidate + 1] = ancestor
end
if #candidate > #best then best = candidate end
end
end
return best
end
local function appendFamilyPath(list, path, index)
local node = path[index]
if not node then return end
local item = list:tag('li'):wikitext(familyLink(node.id))
if index > 1 then
local childList = item:tag('ul'):css('line-height', '100%'):css('margin-left', '0.45em'):css('padding-left', '0')
appendFamilyPath(childList, path, index - 1)
end
item:done()
end
local function familyTree(entity)
local path = longestFamilyPath(entity, {[entity.id] = true})
if #path == 0 then return nil end
local tree = mw.html.create('ul'):css('line-height', '100%'):css('margin-left', '0.45em'):css('padding-left', '0')
appendFamilyPath(tree, path, #path)
return tostring(tree)
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
t5racamy1as82fqify0nfdtxtaosj7d
4157359
4157358
2026-10-24T02:37:01Z
Frodlekis
762
4157359
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local languageTreeClasses = {
Q25295 = true, -- language family
Q34770 = true, -- language
Q33742 = true, -- natural language
Q28923954 = true, -- languoid class
Q20829075 = true, -- type of language
Q20607093 = true, -- indigenous languages of a geographic region
Q20162172 = true, -- human language
Q33384 = true, -- dialect
Q2630831 = true, -- supradialect
Q20671152 = true, -- dialect family
Q1208380 = true, -- dialect group
Q8217193 = true, -- subdialect
}
local function isLanguageTreeNode(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and languageTreeClasses[value.id] then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageTreeNode(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function longestFamilyPath(entity, path)
local best = {}
for _, parent in ipairs(familyParents(entity)) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
local candidate = {{id = parent.id}}
-- Human language is the broad root used by language taxonomies;
-- continuing above it enters Wikidata's general class ontology.
if parent.id ~= 'Q20162172' then
for _, ancestor in ipairs(longestFamilyPath(parent.entity, nextPath)) do
candidate[#candidate + 1] = ancestor
end
end
if #candidate > #best then best = candidate end
end
end
return best
end
local function appendFamilyPath(list, path, index)
local node = path[index]
if not node then return end
local item = list:tag('li'):wikitext(familyLink(node.id))
if index > 1 then
local childList = item:tag('ul'):css('line-height', '100%'):css('margin-left', '0.45em'):css('padding-left', '0')
appendFamilyPath(childList, path, index - 1)
end
item:done()
end
local function familyTree(entity)
local path = longestFamilyPath(entity, {[entity.id] = true})
if #path == 0 then return nil end
local tree = mw.html.create('ul'):css('line-height', '100%'):css('margin-left', '0.45em'):css('padding-left', '0')
appendFamilyPath(tree, path, #path)
return tostring(tree)
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
afrgr695lo60n58q8xnw5yvc2ubh90h
4157363
4157359
2026-10-24T04:06:57Z
Frodlekis
762
4157363
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local languageTreeClasses = {
Q25295 = true, -- language family
Q941501 = true, -- language group
Q34770 = true, -- language
Q33742 = true, -- natural language
Q28923954 = true, -- languoid class
Q20829075 = true, -- type of language
Q20607093 = true, -- indigenous languages of a geographic region
Q20162172 = true, -- human language
Q33384 = true, -- dialect
Q2630831 = true, -- supradialect
Q20671152 = true, -- dialect family
Q1208380 = true, -- dialect group
Q8217193 = true, -- subdialect
}
local function isLanguageTreeNode(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and languageTreeClasses[value.id] then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageTreeNode(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function longestFamilyPath(entity, path)
local best = {}
for _, parent in ipairs(familyParents(entity)) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
local candidate = {{id = parent.id}}
-- Human language is the broad root used by language taxonomies;
-- continuing above it enters Wikidata's general class ontology.
if parent.id ~= 'Q20162172' then
for _, ancestor in ipairs(longestFamilyPath(parent.entity, nextPath)) do
candidate[#candidate + 1] = ancestor
end
end
if #candidate > #best then best = candidate end
end
end
return best
end
local function appendFamilyPath(list, path, index)
local node = path[index]
if not node then return end
local item = list:tag('li'):wikitext(familyLink(node.id))
if index > 1 then
local childList = item:tag('ul'):css('line-height', '100%'):css('margin-left', '0.45em'):css('padding-left', '0')
appendFamilyPath(childList, path, index - 1)
end
item:done()
end
local function familyTree(entity)
local path = longestFamilyPath(entity, {[entity.id] = true})
if #path == 0 then return nil end
local tree = mw.html.create('ul'):css('line-height', '100%'):css('margin-left', '0.45em'):css('padding-left', '0')
appendFamilyPath(tree, path, #path)
return tostring(tree)
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
ksp7omtiejmmgx8prdkceno79y2mlnv
4157366
4157363
2026-10-24T04:13:28Z
Frodlekis
762
4157366
Scribunto
text/plain
local p = {}
local Mwd = require('Modul:Wikidata')
local function getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage)
local links, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated'
and (not hasPreferred or statement.rank == 'preferred') then
seen[id] = true
local sitelink = mw.wikibase.getSitelink(id)
local labelLanguage = plainLabelLanguage or mw.language.getContentLanguage().code
local label = mw.wikibase.getLabelByLang(id, labelLanguage)
local linkedLanguage
if not label and sitelink then
label = mw.title.new(sitelink).text
elseif not label then
label = mw.wikibase.getLabelByLang(id, 'en')
if label then linkedLanguage = 'en' else label = id end
end
if linkedLanguage and labelLanguage ~= linkedLanguage then
label = label .. ' (' .. linkedLanguage .. ')'
end
if lowercaseInitial == 'all' then
label = mw.ustring.lower(label)
elseif lowercaseInitial then
label = mw.ustring.gsub(label, '^%u', mw.ustring.lower)
end
local target = sitelink or ('d:Special:EntityPage/' .. id)
links[#links + 1] = '[[' .. target .. '|' .. label .. ']]'
end
end
return links
end
local function linkedItemList(entity, property, lowercaseInitial, plainLabelLanguage)
return mw.text.listToText(getDistinctItemLinks(entity, property, lowercaseInitial, plainLabelLanguage))
end
local function familyLink(id)
local lang = mw.language.getContentLanguage().code
local target = mw.wikibase.getSitelink(id)
local label = mw.wikibase.getLabelByLang(id, lang)
local labelLanguage = lang
if not label and target then
label = mw.title.new(target).text
labelLanguage = nil
end
if not label then
label = mw.wikibase.getLabelByLang(id, 'en') or id
labelLanguage = label ~= id and 'en' or nil
end
if labelLanguage == 'en' and lang ~= 'en' then label = label .. ' (en)' end
label = mw.ustring.lower(label)
target = target or ('d:Special:EntityPage/' .. id)
return '[[' .. target .. '|' .. label .. ']]'
end
local languageTreeClasses = {
Q25295 = true, -- language family
Q941501 = true, -- language group
Q11820611 = true, -- language subfamily
Q34770 = true, -- language
Q33742 = true, -- natural language
Q28923954 = true, -- languoid class
Q20829075 = true, -- type of language
Q20607093 = true, -- indigenous languages of a geographic region
Q20162172 = true, -- human language
Q33384 = true, -- dialect
Q2630831 = true, -- supradialect
Q20671152 = true, -- dialect family
Q1208380 = true, -- dialect group
Q8217193 = true, -- subdialect
}
local function isLanguageTreeNode(entity)
for _, statement in ipairs(entity and entity.claims and entity.claims.P31 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
if statement.rank ~= 'deprecated' and type(value) == 'table' and languageTreeClasses[value.id] then return true end
end
return false
end
local function familyParents(entity)
local parents, seen = {}, {}
for _, statement in ipairs(entity and entity.claims and entity.claims.P279 or {}) do
local snak = statement.mainsnak
local value = snak and snak.datavalue and snak.datavalue.value
local id = type(value) == 'table' and value.id
if id and not seen[id] and statement.rank ~= 'deprecated' then
local parent = mw.wikibase.getEntity(id)
if isLanguageTreeNode(parent) then
seen[id] = true
parents[#parents + 1] = {id = id, entity = parent}
end
end
end
return parents
end
local function longestFamilyPath(entity, path)
local best = {}
for _, parent in ipairs(familyParents(entity)) do
if not path[parent.id] then
local nextPath = {}
for id in pairs(path) do nextPath[id] = true end
nextPath[parent.id] = true
local candidate = {{id = parent.id}}
-- Human language is the broad root used by language taxonomies;
-- continuing above it enters Wikidata's general class ontology.
if parent.id ~= 'Q20162172' then
for _, ancestor in ipairs(longestFamilyPath(parent.entity, nextPath)) do
candidate[#candidate + 1] = ancestor
end
end
if #candidate > #best then best = candidate end
end
end
return best
end
local function appendFamilyPath(list, path, index)
local node = path[index]
if not node then return end
local item = list:tag('li'):wikitext(familyLink(node.id))
if index > 1 then
local childList = item:tag('ul'):css('line-height', '100%'):css('margin-left', '0.45em'):css('padding-left', '0')
appendFamilyPath(childList, path, index - 1)
end
item:done()
end
local function familyTree(entity)
local path = longestFamilyPath(entity, {[entity.id] = true})
if #path == 0 then return nil end
local tree = mw.html.create('ul'):css('line-height', '100%'):css('margin-left', '0.45em'):css('padding-left', '0')
appendFamilyPath(tree, path, #path)
return tostring(tree)
end
local function appendRow(rows, label, value)
if value and value ~= '' then rows[#rows + 1] = {label, value} end
end
local function getIdentifierValues(entity, property)
local values, seen = {}, {}
local statements = entity.claims and entity.claims[property] or {}
for _, statement in ipairs(statements) do
local snak = statement.mainsnak
local value = snak and snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(value) == 'string' and not seen[value] and statement.rank ~= 'deprecated' then
seen[value] = true
values[#values + 1] = value
end
end
return values
end
local function makeExternalLink(url, label)
label = mw.ustring.gsub(label, '&', '&')
label = mw.ustring.gsub(label, '<', '<')
label = mw.ustring.gsub(label, '>', '>')
label = mw.ustring.gsub(label, '%[', '[')
label = mw.ustring.gsub(label, '%]', ']')
return '[' .. url .. ' ' .. label .. ']'
end
local function getExternalLinks(entity)
local links = {}
local properties = {
{property = 'P1627', label = 'Ethnologue.com', url = 'https://www.ethnologue.com/language/$1'},
{property = 'P8370', label = 'UN Thesaurus', url = 'http://metadata.un.org/thesaurus/$1'},
{property = 'P1466', label = 'WALS', url = 'https://wals.info/languoid/lect/wals_code_$1'},
}
for _, external in ipairs(properties) do
for _, identifier in ipairs(getIdentifierValues(entity, external.property)) do
local url = string.gsub(external.url, '%$1', identifier)
links[#links + 1] = makeExternalLink(url, external.label .. ' (' .. identifier .. ')')
end
end
for _, identifier in ipairs(getIdentifierValues(entity, 'P4839')) do
local url = 'https://www.wolframalpha.com/input/?i=' .. mw.uri.encode(identifier, 'QUERY')
links[#links + 1] = makeExternalLink(url, 'Wolfram Language (' .. identifier .. ')')
end
return mw.text.listToText(links)
end
local function getAutonymAudio(entity)
local statements = entity.claims and entity.claims.P1705 or {}
local hasPreferred = false
for _, statement in ipairs(statements) do
if statement.rank == 'preferred' then hasPreferred = true; break end
end
for _, statement in ipairs(statements) do
if statement.rank ~= 'deprecated' and (not hasPreferred or statement.rank == 'preferred') then
local audio = statement.qualifiers and statement.qualifiers.P443
if audio then
for _, snak in ipairs(audio) do
local filename = snak.snaktype == 'value' and snak.datavalue and snak.datavalue.value
if type(filename) == 'string' then return filename end
end
end
end
end
return nil
end
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property = 'P301', formatting = 'raw', shownovalue = 'false', editicon = 'false'}
if qid == nil then return nil end
end
local entity = mw.wikibase.getEntity(qid)
if not entity then return nil end
local data = {entity = entity}
data.label = Mwd.getLabel{[1] = qid, linked = 'no'} or qid
if not string.find(data.label, qid, 1, true) then
data.label = mw.ustring.gsub(data.label, '^%u', mw.ustring.lower)
end
data.aliases = {}
for _, alias in ipairs((entity.aliases and entity.aliases[lang]) or {}) do
data.aliases[#data.aliases + 1] = alias.value
end
data.description = entity:getDescription(lang)
if data.description then
data.description = data.description .. ' [[File:Arbcom ru editing.svg|10px|baseline|Redigera på Wikidata|link=https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' .. qid .. '/' .. lang .. ']]'
end
data.endonym = Mwd.claim{item = qid, property = 'P1705', list = 'false', editicon = 'false'}
data.script = linkedItemList(entity, 'P282', true)
data.countries = linkedItemList(entity, 'P17')
data.family = familyTree(entity)
data.code = {
iso6391 = Mwd.claim{item = qid, property = 'P218', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6392 = Mwd.claim{item = qid, property = 'P219', list = 'false', shownovalue = 'false', editicon = 'false'},
iso6393 = Mwd.claim{item = qid, property = 'P220', list = 'false', shownovalue = 'false', editicon = 'false'},
wikimedia = Mwd.claim{item = qid, property = 'P424', list = 'false', editicon = 'false'},
}
data.map = Mwd.claim{item = qid, property = 'P1846 or P242', formatting = '[[File:$1|center|200x200px]]', list = 1, editicon = 'false'}
data.video = Mwd.claim{item = qid, property = 'P10', formatting = '{{media|$1}}', list = 1, editicon = 'false'}
data.audio = getAutonymAudio(entity)
data.speakers = Mwd.claim{
item = qid, property = 'P1098', qualifier = 'P518', qualifier2 = 'P585',
formatting = 'table', rowformat = '$0 ($1; $2)$R0',
list = true, tablesort = '2', sorting = '-1', separator = '<br />',
editicon = 'false'
}
data.projects = {wikidata = qid, wikipedia = entity:getSitelink(lang .. 'wiki')}
if data.code.wikimedia then
local mainPage = mw.wikibase.getEntity('Q5296')
if mainPage and mainPage.sitelinks and mainPage.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
function p.show(frame)
local data = getData(frame.args[1])
if not data then return '' end
local language = '<span style="font-weight: bold;">' .. data.label
if #data.aliases > 0 then
language = language .. ' </span>(' .. table.concat(data.aliases, ', ') .. ')'
else
language = language .. '</span>'
end
if data.description then language = language .. ' | ' .. data.description end
if data.endonym then
local code = data.projects.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia or 'und'
local endonym = code ~= 'und' and "''" .. frame:expandTemplate{title = 'länk', args = {code, data.endonym}} .. "''" or "''" .. data.endonym .. "''"
language = language .. '<br /><b>Autoglottonym:</b> ' .. endonym
end
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then data.code.wikimedia = nil end
local codes = {}
if data.code.iso6391 then codes[#codes + 1] = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>' end
if data.code.iso6393 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
elseif data.code.iso6392 then
codes[#codes + 1] = '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
end
if data.code.wikimedia then codes[#codes + 1] = '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>' end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|Wikidataobjekt]]'
if data.projects.wikipedia then projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|Wikipediaartikel]]' end
if data.projects.wiktionary then projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|Wiktionaryversion]]' end
local rows = {}
appendRow(rows, 'Språk', language)
appendRow(rows, 'Skriftsystem', data.script)
appendRow(rows, 'Kod', #codes > 0 and table.concat(codes, ', ') or nil)
appendRow(rows, 'Språkfamilj', data.family)
local grammarFields = {
{'Grammatiskt genus', 'P5109'}, {'Numerus', 'P13986'},
{'Kasus', 'P2989'}, {'Modus', 'P3161'},
}
local grammar = mw.html.create('div'):css('margin', '0')
local grammarCount = 0
for _, field in ipairs(grammarFields) do
local values = linkedItemList(data.entity, field[2], 'all')
if values ~= '' then
grammar:tag('div'):css('margin-bottom', '0.3em'):wikitext("'''" .. field[1] .. ": '''" .. values):done()
grammarCount = grammarCount + 1
end
end
if grammarCount > 0 then appendRow(rows, 'Grammatik', tostring(grammar)) end
appendRow(rows, 'Uppskattat antal talare', data.speakers)
appendRow(rows, 'Länder', data.countries)
appendRow(rows, 'Språkvårdande organ', linkedItemList(data.entity, 'P1018', nil, 'sv'))
appendRow(rows, 'UNESCO:s språkstatus', linkedItemList(data.entity, 'P1999'))
appendRow(rows, 'Externa länkar', getExternalLinks(data.entity))
appendRow(rows, 'Projekt', projects)
local mediaColumn = mw.html.create('div')
if data.map and data.map ~= '' then
mediaColumn:wikitext(data.map)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Kartan visar den geografiska utbredningen<br />för ' .. data.label):done()
end
if data.audio and data.audio ~= '' then
mediaColumn:wikitext(frame:expandTemplate{title = 'media', args = {data.audio}})
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Ljudprov på ' .. data.label):done()
end
if data.video and data.video ~= '' then
mediaColumn:wikitext(data.video)
mediaColumn:tag('p'):css('text-align', 'center'):wikitext('Video med talare av språket ' .. data.label):done()
end
local mediaContent = tostring(mediaColumn)
local hasMedia = (data.map and data.map ~= '') or (data.audio and data.audio ~= '') or (data.video and data.video ~= '')
local html = mw.html.create('table'):addClass('wikitable')
:css('width', '100%'):css('max-width', '75em'):css('table-layout', 'fixed')
for i, row in ipairs(rows) do
local tr = html:tag('tr')
tr:tag('th'):attr('scope', 'row'):css('width', '9em'):css('text-align', 'left'):wikitext(row[1])
tr:tag('td'):css('overflow-wrap', 'anywhere'):wikitext(row[2])
if i == 1 and hasMedia then
tr:tag('td'):attr('rowspan', tostring(#rows)):css('width', '14em'):wikitext(mediaContent)
end
end
return html
end
return p
9rc8g6eqop6o0tboawp9umn5u1eq8cr
Mall:faktaruta språk
10
1075012
4157197
2026-10-23T21:33:50Z
Frodlekis
762
Ny sida
4157197
wikitext
text/x-wiki
<includeonly>{{#invoke:Wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
{{mallinfo}}
Visar en tabell med uppgifter om ett språk från Wikidata.
== Parametrar ==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas hämtas objektet från sidans egenskap P301.
== Exempel ==
<code><nowiki>{{faktaruta språk|Q1860}}</nowiki></code>
</noinclude>
pcdjy8josz3m5e4zcfrugcsflhjga2x
4157198
4157197
2026-10-23T21:33:59Z
Frodlekis
762
4157198
wikitext
text/x-wiki
<includeonly>{{#invoke:Wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
Visar en tabell med uppgifter om ett språk från Wikidata.
== Parametrar ==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas hämtas objektet från sidans egenskap P301.
== Exempel ==
<code><nowiki>{{faktaruta språk|Q1860}}</nowiki></code>
</noinclude>
rb2c2bey3hmde2whxwu8d4cpd1ywpgy
4157199
4157198
2026-10-23T21:36:01Z
Frodlekis
762
4157199
wikitext
text/x-wiki
<includeonly>{{#invoke:wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
Visar en tabell med uppgifter om ett språk från Wikidata.
== Parametrar ==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas hämtas objektet från sidans egenskap P301.
== Exempel ==
<code><nowiki>{{faktaruta språk|Q1860}}</nowiki></code>
</noinclude>
ptirt4vloglc5ou1lg76uhiisyitbnn
4157211
4157199
2026-10-23T22:14:06Z
Frodlekis
762
4157211
wikitext
text/x-wiki
<includeonly>{{#invoke:Wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
Visar en tabell med uppgifter om ett språk från Wikidata.
Uppgifter visas bara när det finns användbara värden på språkobjektet. Grammatikraden bygger på Wikidatas egenskaper för genus (P5109), numerus (P13986), kasus (P2989), tempus (P3103), modus (P3161) och person (P5110). Böjningsklasser hämtas från P5206 och P5913. Talarantal visas med tidpunkt, omfattning och källhänvisning när dessa finns.
Alla grammatiska kategorier är inte modellerade på språkobjekt. Exempelvis finns aspekt och passiv diates i första hand som egenskaper hos lexem; de visas därför inte som generella egenskaper för ett helt språk. Geografisk närvaro ska inte tolkas som officiell eller rättslig status.
==Parametrar==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas hämtas objektet från sidans egenskap P301.
==Wikidata-egenskaper==
Faktarutan använder bland annat P1705 (autoglottonym), P282 (skriftsystem), P1846/P242 (karta), P10 (video), P443 (ljud), P1098 (talarantal), P17 (länder knutna till språkobjektet), P1018 (språkvårdande organ), P1999 (UNESCO-status) och P3823 (Ethnologue-status). Länderuppgiften betyder inte att språket har officiell eller rättslig status där. Värden som saknas på Wikidata lämnas tomma.
==Exempel==
<code><nowiki>{{faktaruta språk|Q1860}}</nowiki></code>
</noinclude>
8been0znz3ogx5d910c9xiao3bicjaa
4157212
4157211
2026-10-23T22:14:31Z
Frodlekis
762
4157212
wikitext
text/x-wiki
<includeonly>{{#invoke:wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
Visar en tabell med uppgifter om ett språk från Wikidata.
Uppgifter visas bara när det finns användbara värden på språkobjektet. Grammatikraden bygger på Wikidatas egenskaper för genus (P5109), numerus (P13986), kasus (P2989), tempus (P3103), modus (P3161) och person (P5110). Böjningsklasser hämtas från P5206 och P5913. Talarantal visas med tidpunkt, omfattning och källhänvisning när dessa finns.
Alla grammatiska kategorier är inte modellerade på språkobjekt. Exempelvis finns aspekt och passiv diates i första hand som egenskaper hos lexem; de visas därför inte som generella egenskaper för ett helt språk. Geografisk närvaro ska inte tolkas som officiell eller rättslig status.
==Parametrar==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas hämtas objektet från sidans egenskap P301.
==Wikidata-egenskaper==
Faktarutan använder bland annat P1705 (autoglottonym), P282 (skriftsystem), P1846/P242 (karta), P10 (video), P443 (ljud), P1098 (talarantal), P17 (länder knutna till språkobjektet), P1018 (språkvårdande organ), P1999 (UNESCO-status) och P3823 (Ethnologue-status). Länderuppgiften betyder inte att språket har officiell eller rättslig status där. Värden som saknas på Wikidata lämnas tomma.
==Exempel==
<code><nowiki>{{faktaruta språk|Q1860}}</nowiki></code>
</noinclude>
82ubokgy27ziwm7fd7gtwh79f95z9w5
4157214
4157212
2026-10-23T22:34:24Z
Frodlekis
762
4157214
wikitext
text/x-wiki
<includeonly>{{#invoke:wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
Visar en tabell med uppgifter om ett språk från Wikidata.
Uppgifter visas bara när det finns användbara värden på språkobjektet. Grammatikraden bygger på Wikidatas egenskaper för genus (P5109), numerus (P13986), kasus (P2989), tempus (P3103), modus (P3161) och person (P5110). Böjningsklasser hämtas från P5206 och P5913. Talarantal visas med tidpunkt, omfattning och källhänvisning när dessa finns.
Alla grammatiska kategorier är inte modellerade på språkobjekt. Exempelvis finns aspekt och passiv diates i första hand som egenskaper hos lexem; de visas därför inte som generella egenskaper för ett helt språk. Geografisk närvaro ska inte tolkas som officiell eller rättslig status.
==Parametrar==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas hämtas objektet från sidans egenskap P301.
==Wikidata-egenskaper==
Faktarutan använder bland annat P1705 (autoglottonym), P282 (skriftsystem), P1846/P242 (karta), P10 (video), P1098 (talarantal), P17 (länder knutna till språkobjektet), P1018 (språkvårdande organ) och P1999 (UNESCO-status). Ljud visas endast när uttalsljudet P443 är kvalificerare på P1705-påståendet om autoglottonymen. Länderuppgiften betyder inte att språket har officiell eller rättslig status där. Värden som saknas på Wikidata lämnas tomma.
Raden '''Externa länkar''' använder Ethnologue.com:s språkkod (P1627), UN Thesaurus-ID (P8370), WALS-kod (P1466) och Wolfram Language-entitetskoder (P4839). Alla olika P4839-värden visas.
==Exempel==
<code><nowiki>{{faktaruta språk|Q1860}}</nowiki></code> ger:
{{faktaruta språk|Q1860}}
</noinclude>
ngyy2pqpkuabe4xh96nyqn9jay2z033
4157397
4157214
2026-10-24T11:09:28Z
Frodlekis
762
4157397
wikitext
text/x-wiki
<includeonly>{{#invoke:wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
Visar en tabell med uppgifter om ett språk från Wikidata.
Uppgifter visas bara när det finns användbara värden på språkobjektet. Grammatikraden bygger på Wikidatas egenskaper för genus (P5109), numerus (P13986), kasus (P2989), tempus (P3103), modus (P3161) och person (P5110). Böjningsklasser hämtas från P5206 och P5913. Talarantal visas med tidpunkt, omfattning och källhänvisning när dessa finns.
Alla grammatiska kategorier är inte modellerade på språkobjekt. Exempelvis finns aspekt och passiv diates i första hand som egenskaper hos lexem; de visas därför inte som generella egenskaper för ett helt språk. Geografisk närvaro ska inte tolkas som officiell eller rättslig status.
==Parametrar==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas hämtas objektet från sidans egenskap P301.
==Wikidata-egenskaper==
Faktarutan använder bland annat P1705 (autoglottonym), P282 (skriftsystem), P1846/P242 (karta), P10 (video), P1098 (talarantal), P17 (länder knutna till språkobjektet), P1018 (språkvårdande organ) och P1999 (UNESCO-status). Ljud visas endast när uttalsljudet P443 är kvalificerare på P1705-påståendet om autoglottonymen. Länderuppgiften betyder inte att språket har officiell eller rättslig status där. Värden som saknas på Wikidata lämnas tomma.
Raden '''Externa länkar''' använder Ethnologue.com:s språkkod (P1627), UN Thesaurus-ID (P8370), WALS-kod (P1466) och Wolfram Language-entitetskoder (P4839). Alla olika P4839-värden visas.
==Exempel==
<code><nowiki>{{faktaruta språk|Q9027}}</nowiki></code> ger:
{{faktaruta språk|Q9027}}
</noinclude>
6mhfamlq3zq7a3x3jbt23ykfuikjucx
Modul:Wikidata
828
1075013
4157201
2026-10-23T21:41:12Z
Frodlekis
762
Ny sida
4157201
Scribunto
text/plain
-- Svensk port av den katalanska Modul:Wikidata, version 20220818.
local p = {}
-- Initiering av variabler --------------------
local i18n = { -- internationalisation at [[Module:Wikidata/i18n]]
["errors"] = {
["property-not-found"] = "Egenskapen hittades inte.",
["qualifier-not-found"] = "Kvalificeraren hittades inte.",
},
["datetime"] = {
-- $1 is a placeholder for the actual number
["beforenow"] = "$1 f.Kr.", -- how to format negative numbers for precisions 0 to 5
["afternow"] = "$1 e.Kr.", -- how to format positive numbers for precisions 0 to 5
["bc"] = "$1 f.Kr.", -- how print negative years
["ad"] = "$1 e.Kr.", -- how print 1st century AD dates
[0] = "$1 miljard år", -- precision: billion years
[1] = "$100 miljoner år", -- precision: hundred million years
[2] = "$10 miljoner år", -- precision: ten million years
[3] = "$1 miljon år", -- precision: million years
[4] = "$100 000 år", -- precision: hundred thousand years; thousand separators added afterwards
[5] = "$10 000 år", -- precision: ten thousand years; thousand separators added afterwards
[6] = "$1 årtusende", -- precision: millennium
[7] = "$1 århundrade", -- precision: century
[8] = "$1-talet", -- precision: decade
-- the following use the format of #time parser function
[9] = "Y", -- precision: year,
[10] = "F Y", -- precision: month
[11] = "j F Y", -- precision: day
["hms"] = {["hours"] = "h", ["minutes"] = "m", ["seconds"] = "s"}, -- duration: xh xm xs
},
["years-old"] = {"år", "år"}, -- year(s) old, as in {{PLURAL:$1|singular|plural}}
-- two values for most languages, up to six values for some languages
-- see documentation of PLURAL magic word in your language, examples:
-- ["years-old"] = {"singular", "paucal", "plural"} in Russian and other Slavic languages
-- ["years-old"] = {"zero", "one", "two", "few 3-10", "many 11-99", "other 100-102"} in Arabic
["cite"] = { -- cite parameters
["title"] = "title",
["author"] = "author",
["date"] = "date",
["pages"] = "pages",
["language"] = "language",
-- cite web parameters
["url"] = "url",
["website"] = "website",
["access-date"] = "access-date",
["archive-url"] = "archive-url",
["archive-date"] = "archive-date",
["publisher"] = "publisher",
["quote"] = "quote",
-- cite journal parameters
["work"] = "work",
["issue"] = "issue",
["issn"] = "issn",
["doi"] = "doi"
},
-- svenska Wiktionary-inställningar
["addpencil"] = false, -- lägger till en redigeringslänk till Wikidata, planned to overwrite by Wikidata Bridge
["categorylabels"] = "", -- tomt om ingen lokal spårningskategori används
["categoryprop"] = "", -- tomt om ingen lokal spårningskategori används
["categoryref"] = "", -- tomt om ingen lokal spårningskategori används
["addfallback"] = {}, -- additional fallback language codes
["suppressids"] = {}, -- list of Qid values to suppress
["qidlabels"] = true -- show labels as Qid if no fallback translation is available
}
local cases = {} -- functions for local grammatical cases defined at [[Module:Wikidata/i18n]]
local required = ... -- variadic arguments from require function
local wiki =
{
langcode = mw.language.getContentLanguage().code,
module_title = required or mw.getCurrentFrame():getTitle()
}
local untranslated -- used in infobox modules: nil or true
local _ -- variable for unused returned values, avoiding globals
-- Modulens lokala funktioner --------------------------------------------
-- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0
local function tableMerge(t1, t2)
for k, v in pairs(t2) do
if type(v) == "table" then
if type(t1[k] or false) == "table" then
tableMerge(t1[k] or {}, t2[k] or {})
else
t1[k] = v
end
else
t1[k] = v
end
end
return t1
end
local function loadI18n(lang)
local exist, res = pcall(require, wiki.module_title .. "/i18n")
if exist and next(res) ~= nil then
tableMerge(i18n, res.i18n)
cases = res.cases
end
if lang ~= wiki.langcode then
exist, res = pcall(require, wiki.module_title .. "/i18n/" .. lang)
if exist and next(res) ~= nil then
tableMerge(i18n, res.i18n)
tableMerge(cases, res.cases)
end
end
i18n.suppress = {}
for _, id in ipairs(i18n.suppressids) do
i18n.suppress[id] = true
end
end
-- Table of language codes: requested or default and its fallbacks
local function findLang(langcode)
if mw.language.isKnownLanguageTag(langcode or '') == false then
local cframe = mw.getCurrentFrame()
local pframe = cframe:getParent()
langcode = pframe and pframe.args.lang
if mw.language.isKnownLanguageTag(langcode or '') == false then
if not mw.title.getCurrentTitle().isContentPage then
langcode = cframe:preprocess('{{int:lang}}')
end
if mw.language.isKnownLanguageTag(langcode or '') == false then
langcode = wiki.langcode
end
end
end
loadI18n(langcode)
local languages = mw.language.getFallbacksFor(langcode)
table.insert(languages, 1, langcode)
if langcode == wiki.langcode then
for _, l in ipairs(i18n.addfallback) do
table.insert(languages, l)
end
end
return languages
end
-- Argument is 'set' when it exists (not nil) or when it is not an empty string.
local function isSet(var)
return not (var == nil or (type(var) == 'string' and mw.text.trim(var) == ''))
end
-- Set local case to a label
local function case(localcase, label, ...)
if not isSet(label) then return label end
if type(localcase) == "function" then
return localcase(label)
elseif localcase == "smallcaps" then
return '<span style="font-variant: small-caps;">' .. label .. '</span>'
elseif cases[localcase] then
return cases[localcase](label, ...)
end
return label
end
-- get safely a serialized snak
local function getSnak(statement, snaks)
local ret = statement
for i, v in ipairs(snaks) do
if not ret then return end
ret = ret[v]
end
return ret
end
-- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages
local function getLabelByLangs(id, languages)
local label
local lang
for _, l in ipairs(languages) do
if l == wiki.langcode then
-- using getLabelWithLang when possible instead of getLabelByLang
label, l = mw.wikibase.getLabelWithLang(id)
else
label = mw.wikibase.getLabelByLang(id, l)
end
if label then
lang = l
break
end
end
return label, lang
end
-- getBestStatements if bestrank=true, else getAllStatements with no deprecated
local function getStatements(entityId, property, bestrank)
local claims = {}
if not (entityId and mw.ustring.match(property, "^P%d+$")) then return claims end
if bestrank then
claims = mw.wikibase.getBestStatements(entityId, property)
else
local allclaims = mw.wikibase.getAllStatements(entityId, property)
for _, c in ipairs(allclaims) do
if c.rank ~= "deprecated" then
table.insert(claims, c)
end
end
end
return claims
end
-- Is gender femenine? true or false
local function feminineGender(id)
local claims = mw.wikibase.getBestStatements(id or mw.wikibase.getEntityIdForCurrentPage(),'P21')
local gender_id = getSnak(claims, {1, "mainsnak", "datavalue", "value", "id"})
if gender_id == "Q6581072" or gender_id == "Q1052281" or gender_id == "Q43445" then -- female, transgender female, female organism
return true
end
return false
end
-- Fetch female form of label
local function feminineForm(id, lang)
local feminine_claims = getStatements(id, 'P2521')
for _, feminine_claim in ipairs(feminine_claims) do
if getSnak(feminine_claim, {'mainsnak', 'datavalue', 'value', 'language'}) == lang then
return feminine_claim.mainsnak.datavalue.value.text
end
end
end
-- Add an icon for no label in requested language
local function addLabelIcon(label_id, lang, uselang, icon)
local ret_lang, ret_icon = '', ''
if icon then
if lang and lang ~= uselang then
ret_lang = " <sup>(" .. lang .. ")</sup>"
end
if label_id and (lang == nil or lang ~= uselang) then
local namespace = ''
if string.sub(label_id, 1, 1) == 'P' then
namespace = 'Property:'
end
ret_icon = " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|"
.. mw.message.new('Translate-taction-translate'):inLanguage(uselang):plain()
.. "|link=https://www.wikidata.org/wiki/" .. namespace .. label_id .. "?uselang=" .. uselang .. "]]"
untranslated = true
end
if isSet(i18n.categorylabels) and lang ~= uselang and uselang == wiki.langcode then
ret_icon = ret_icon .. '[[' .. i18n.categorylabels .. (lang and ']]' or '/Q]]')
end
end
return ret_lang .. ret_icon
end
-- editicon values: true/false (no=false), right, void defaults to i18n.addpencil
-- labelicon only by parameter
local function setIcons(arg, parg)
local val = arg == nil and parg or arg
local edit_icon, label_icon
if not isSet(val) then
edit_icon, label_icon = i18n.addpencil, true
elseif val == false or val == "false" or val == "no" then
edit_icon, label_icon = false, false
else
edit_icon, label_icon = val, true
end
return edit_icon, label_icon
end
-- Add an icon for editing a statement with requirements for future Wikidata Bridge
local function addEditIcon(parameters)
local ret = ''
if parameters.editicon and parameters.id and parameters.property then
local bridge_flow = parameters.editbridge and ' data-bridge-edit-flow="single-best-value"' or ''
local icon_style = parameters.editicon == "right" and ' style="float: right;"' or ''
ret = ' <span class="penicon"' .. bridge_flow .. icon_style .. '>'
.. "[[File:Arbcom ru editing.svg|10px|baseline|"
.. string.gsub(mw.message.new('Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button'):inLanguage(parameters.lang[1]):plain(), '{{WBREPONAME}}', 'Wikidata')
.. "|link=https://www.wikidata.org/wiki/" .. parameters.id .. "?uselang=" .. parameters.lang[1] .. "#" .. parameters.property .. "]]"
.. "</span>"
if isSet(i18n.categoryprop) then
ret = ret .. "[[" .. string.gsub(i18n.categoryprop, '$1', parameters.property) .. "]]"
end
end
return ret
end
-- add edit icon to the last element of a table
local function addEditIconTable(thetable, parameters)
if #thetable == 0 or parameters.editicon == false then
return thetable
end
local last_element = thetable[#thetable]
local the_icon = addEditIcon(parameters)
-- add it before last html closing tags
local tags = ''
local rev_element = string.reverse(last_element)
for tag in string.gmatch(rev_element, '(>%l+/<)') do
if string.match(rev_element, '^' .. tags .. tag) then
tags = tags .. tag
else
break
end
end
local last_tags = string.reverse(tags)
local offset = string.find(last_element, last_tags .. '$')
if offset then
thetable[#thetable] = string.sub(last_element, 1, offset - 1) .. the_icon .. last_tags
else
thetable[#thetable] = last_element .. the_icon
end
return thetable
end
-- Escape Lua captures
local function captureEscapes(text)
return mw.ustring.gsub(text, "(%%%d)", "%%%1")
end
-- expandTemplate or callParserFunction
local function expandBraces(text, formatting)
if text == nil or formatting == nil then return text end
-- only expand braces if provided in argument, not included in value as in Q1164668
if mw.ustring.find(formatting, '{{', 1, true) == nil then return text end
if type(text) ~= "string" then
text = tostring(text)
end
for braces in mw.ustring.gmatch(text, "{{(.-)}}") do
local parts = mw.text.split(braces, "|")
local title_part = parts[1]
local parameters = {}
for i = 2, #parts do
local subparts = mw.ustring.find(parts[i], "=")
if subparts then
local param_name = mw.ustring.sub(parts[i], 1, subparts - 1)
local param_value = mw.ustring.sub(parts[i], subparts + 1, -1)
-- reconstruct broken links by parts
if i < #parts and mw.ustring.find(param_value, "[[", 1, true) and not mw.ustring.find(param_value, "]]", 1, true) then
parameters[param_name] = param_value
local part_next = i + 1
while parts[part_next] and mw.ustring.find(parts[part_next], "]]", 1, true) do
parameters[param_name] = parameters[param_name] .. "|" .. parts[part_next]
part_next = part_next + 1
end
else
parameters[param_name] = param_value
end
elseif not mw.ustring.find(parts[i], "]]", 1, true) then
table.insert(parameters, parts[i])
end
end
local braces_expanded
if mw.ustring.find(title_part, ":")
and mw.text.split(title_part, ":")[1] ~= mw.site.namespaces[10].name -- not a prefix Template:
then
braces_expanded = mw.getCurrentFrame():callParserFunction{name=title_part, args=parameters}
else
braces_expanded = mw.getCurrentFrame():expandTemplate{title=title_part, args=parameters}
end
braces = mw.ustring.gsub(braces, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") -- escape magic characters
braces_expanded = captureEscapes(braces_expanded)
text = mw.ustring.gsub(text, "{{" .. braces .. "}}", braces_expanded)
end
return text
end
-- format data type math
local function printDatatypeMath(data)
return mw.getCurrentFrame():callParserFunction('#tag:math', data)
end
-- format data type musical-notation
local function printDatatypeMusical(data, formatting)
local attr = {}
if formatting == 'sound' then
attr.sound = 1
end
return mw.getCurrentFrame():extensionTag('score', data, attr)
end
-- format data type string
local function printDatatypeString(data, parameters)
if mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting = a pattern
return expandBraces(mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = data}), parameters.formatting)
elseif parameters.case then
return case(parameters.case, data, parameters.lang[1], feminineGender(parameters.id))
end
local data_number = string.match(data, "^%d+")
if data_number then -- sort key by initial number and remaining string
local sortkey = string.format("%019d", data_number * 1000)
return data, sortkey .. string.sub(data, #data_number + 1)
end
return data
end
-- format data type tabular-data
local function printDatatypeTabular(data, parameters)
local icon
if parameters.formatting == 'raw' then
icon = "no-icon"
data = string.gsub(data, '^Data:', '') -- remove prefix, i.e. see Module:Tabular data
end
return printDatatypeString(data, parameters), icon
end
-- format data type url
local function printDatatypeUrl(data, parameters)
if parameters.formatting == 'weblink' then
local label_parts = mw.text.split(string.gsub(data, '/$', ''), '/')
local label = string.gsub(label_parts[3], '^www%.', '')
if #label_parts > 3 then
label = label .. '…'
end
return '[' .. data .. ' ' .. label .. ']'
end
return printDatatypeString(data, parameters)
end
-- format data type external-id
local function printDatatypeExternal(data, parameters)
if parameters.formatting == 'externalid' then
local p_stat = mw.wikibase.getBestStatements(parameters.property, 'P1630') -- formatter URL
local p_link_pattern = getSnak(p_stat, {1, "mainsnak", "datavalue", "value"})
if p_link_pattern then
local p_link = mw.ustring.gsub(p_link_pattern, '$1', {['$1'] = data})
return '[' .. p_link .. ' ' .. data .. ']'
end
end
return printDatatypeString(data, parameters)
end
-- format data type commonsMedia and geo-shape
local function printDatatypeMedia(data, parameters)
local icon
if not string.find((parameters.formatting or ''), '$1', 1, true) then
icon = "no-icon"
if not string.find(data, '^Data:') then
data = mw.uri.encode(data, 'PATH') -- encode special characters in filename
end
end
return printDatatypeString(data, parameters), icon
end
-- format data type globe-coordinate
local function printDatatypeCoordinate(data, formatting)
local function globes(globe_id)
local globes = {['Q3134']='callisto',['Q596']='ceres',['Q15040']='dione',['Q2']='earth',['Q3303']='enceladus',
['Q3143']='europa',['Q17975']='phoebe',['Q3169']='ganymede',['Q3123']='io',['Q17958']='iapetus',
['Q308']='mercury',['Q15034']='mimas',['Q405']='moon',['Q15050']='rhea',['Q15047']='tethys',
['Q111']='mars',['Q2565']='titan',['Q3359']='triton',['Q313']='venus',['Q3030']='vesta'}
return globes[globe_id]
end
local function roundPrecision(num, prec)
if prec == nil or prec <= 0 then return num end
local sig = 10^math.floor(math.log10(prec)+.5) -- significant figure from sexagesimal precision: 0.00123 -> 0.001
return math.floor(num / sig + 0.5) * sig
end
local precision = data.precision
local latitude = roundPrecision(data.latitude, precision)
local longitude = roundPrecision(data.longitude, precision)
if formatting and string.find(formatting, '$lat', 1, true) and string.find(formatting, '$lon', 1, true) then
local ret = mw.ustring.gsub(formatting, '$l[ao][tn]', {['$lat'] = latitude, ['$lon'] = longitude})
if string.find(formatting, '$globe', 1, true) then
local myglobe = 'earth'
if isSet(data.globe) then
local globenum = mw.text.split(data.globe, 'entity/')[2] -- http://www.wikidata.org/wiki/Q2
myglobe = globes(globenum) or 'earth'
end
ret = mw.ustring.gsub(ret, '$globe', myglobe)
end
return expandBraces(ret, formatting)
elseif formatting == 'latitude' then
return latitude, "no-icon"
elseif formatting == 'longitude' then
return longitude, "no-icon"
elseif formatting == 'dimension' then
return data.dimension, "no-icon"
else --default formatting='globe'
if isSet(data.globe) == false or data.globe == 'http://www.wikidata.org/entity/Q2' then
return 'earth', "no-icon"
else
local globenum = mw.text.split(data.globe, 'entity/')[2]
return globes(globenum) or globenum, "no-icon"
end
end
end
-- Local functions for data value quantity
local function unitSymbol(id, lang) -- get unit symbol or code
local unit_symbol = ''
if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then
unit_symbol = require(wiki.module_title .. "/Units").getUnit(0, '', id, true)
end
if unit_symbol == '' then
-- fetch it
local claims = mw.wikibase.getBestStatements(id, 'P5061')
if #claims > 0 then
local langclaims = {}
table.insert(lang, 'mul') -- multilingual as last try
for _, snak in ipairs(claims) do
local snak_language = getSnak(snak, {"mainsnak", "datavalue", "value", "language"})
if snak_language and not langclaims[snak_language] then -- just the first one by language
langclaims[snak_language] = snak.mainsnak.datavalue.value.text
end
end
for _, l in ipairs(lang) do
if langclaims[l] then
return langclaims[l]
end
end
end
end
return unit_symbol
end
local function getUnit(amount, id, parameters) -- get unit symbol or name
local suffix = ''
if string.sub(parameters.formatting or '', 1, 8) == "unitcode" then
-- get unit symbol
local unit_symbol = unitSymbol(id, parameters.lang)
if isSet(unit_symbol) then
if string.sub(parameters.formatting or '', -6) == "linked" then
suffix = "[[" .. (mw.wikibase.getSitelink(id) or "d:" .. id) .. "|" .. unit_symbol .. "]]"
else
suffix = unit_symbol
end
end
end
if suffix == '' then -- formatting=unit, or formatting=unitcode not found
-- get unit label
local unit_label, lang = getLabelByLangs(id, parameters.lang)
if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then
suffix = require(wiki.module_title .. "/Units").getUnit(amount, unit_label, id, false)
if string.sub(parameters.formatting or '', -6) == "linked" then
suffix = "[[" .. (mw.wikibase.getSitelink(id) or "d:" .. id) .. "|" .. suffix .. "]]"
end
else
suffix = (unit_label or id) .. addLabelIcon(id, lang, parameters.lang[1], parameters.labelicon)
end
end
if suffix ~= '' then
suffix = ' ' .. suffix
end
return suffix
end
local function roundDefPrecision(in_num, factor)
-- rounds out_num with significant figures of in_num (default precision)
local out_num = in_num * factor
if factor/60 == math.floor(factor/60) or out_num == 0 then -- sexagesimal integer or avoiding NaN
return out_num
end
-- first, count digits after decimal mark, handling cases like '12.345e6'
local exponent, prec
local integer, dot, decimals, expstr = in_num: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 = -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
-- significant figures
local in_bracket = 10^-prec -- -1 -> 10, 5 -> 0.00001
local out_bracket = in_bracket * out_num / in_num
out_bracket = 10^math.floor(math.log10(out_bracket)+.5) -- 1230 -> 1000, 0.00123 -> 0.001
-- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound)
return math.floor(out_num/out_bracket + (out_num >=0 and 1 or -1) * 0.5) * out_bracket
end
-- format data type quantity
local function printDatatypeQuantity(data, parameters)
local amount = data.amount
amount = mw.ustring.gsub(amount, "%+", "")
local suffix = ""
local conv_amount, conv_suffix
if string.sub(parameters.formatting or '', 1, 4) == "unit" or string.sub(parameters.formatting or '', 1, 8) == "duration" or parameters.convert then
local unit_id = data.unit
unit_id = mw.ustring.sub(unit_id, mw.ustring.find(unit_id, "Q"), -1)
if string.sub(unit_id, 1, 1) == "Q" then
suffix = getUnit(amount, unit_id, parameters)
local convert_to
if parameters.convert == "default" or parameters.convert == "default2" then
local exist, units = pcall(require, wiki.module_title .. "/Units")
if exist and units.convert_default and next(units.convert_default) ~= nil then
convert_to = units.convert_default[unit_id]
end
elseif string.sub(parameters.convert or '', 1, 1) == "Q" then
convert_to = parameters.convert
elseif string.sub(parameters.formatting or '', 1, 8) == "duration" then
convert_to = 'Q11574' -- seconds
end
if convert_to and convert_to ~= unit_id then
-- convert units
local conv_temp = { -- formulae for temperatures ºC, ºF, ªK: [from] = {[to] = 'formula'}
['Q25267'] = {['Q42289'] = '$1*1.8+32', ['Q11597'] = '$1+273.15'},
['Q42289'] = {['Q25267'] = '($1-32)/1.8', ['Q11597'] = '($1+459.67)*5/9'},
['Q11597'] = {['Q25267'] = '$1-273.15', ['Q42289'] = '($1-273.15)*1.8000+32.00'}
}
if conv_temp[unit_id] and conv_temp[unit_id][convert_to] then
local amount_f = mw.getCurrentFrame():callParserFunction('#expr', mw.ustring.gsub(conv_temp[unit_id][convert_to], "$1", amount))
conv_amount = math.floor(tonumber(amount_f) + 0.5)
else
local conversions = getStatements(unit_id, 'P2442') -- conversion to standard unit
table.insert(conversions, mw.wikibase.getBestStatements(unit_id, 'P2370')[1]) -- conversion to SI unit
for _, conv in ipairs(conversions) do
if conv.mainsnak.snaktype == 'value' then -- no somevalue nor novalue
if conv.mainsnak.datavalue.value.unit == "http://www.wikidata.org/entity/" .. convert_to then
conv_amount = roundDefPrecision(amount, tonumber(conv.mainsnak.datavalue.value.amount))
break
end
end
end
end
if conv_amount then
conv_suffix = getUnit(conv_amount, convert_to, parameters)
end
elseif parameters.convert == 'M' and tonumber(amount) > 10^8 then
conv_amount = math.floor(amount/10^6 + 0.5)
conv_suffix = ' M' .. string.sub(suffix, 2)
end
if conv_amount and parameters.formatting == 'raw' then
amount = conv_amount
suffix = ""
conv_amount = nil
end
end
end
local lang_obj = mw.language.new(parameters.lang[1])
local sortkey = string.format("%019d", tonumber(amount) * 1000)
if string.sub(parameters.formatting or '', 1, 8) == "duration" then
local sec = tonumber(conv_amount or amount)
if parameters.formatting == 'duration' then
return lang_obj:formatDuration(sec)
elseif parameters.formatting == 'durationm:s' then
local mm = math.floor(sec / 60)
local ss = sec - (mm * 60)
return string.format("%02d:%02d", mm, ss)
else -- durationhms or durationh:m:s
local intervals = {"hours", "minutes", "seconds"}
local sec2table = lang_obj:getDurationIntervals(sec, intervals)
sec2table["seconds"] = (sec2table["seconds"] or 0) + tonumber("." .. (tostring(sec):match("%.(%d+)") or "0")) -- add decimals
local duration = ''
for i, v in ipairs(intervals) do
if parameters.formatting == 'durationh:m:s' then
if i == 1 and sec2table[v] then
duration = duration .. sec2table[v] .. ":"
elseif i == 2 then
duration = duration .. string.format("%02d", sec2table[v] or 0) .. ":"
elseif i == 3 then
local sec_str = tostring(lang_obj:formatNum(sec2table[v] or 0))
duration = duration .. (sec2table[v] < 10 and "0" or "") .. sec_str
end
elseif sec2table[v] then
duration = duration .. lang_obj:formatNum(sec2table[v]) .. i18n.datetime.hms[v] .. (i < 3 and " " or "")
end
end
return duration
end
end
if parameters.case then
amount = case(parameters.case, amount, parameters.lang[1], feminineGender(parameters.id))
elseif parameters.formatting ~= 'raw' then
if parameters.numformat then
amount = lang_obj:formatNum(tonumber(string.format(parameters.numformat, amount)))
else
amount = lang_obj:formatNum(tonumber(amount))
end
end
if conv_amount then
local conv_sortkey = string.format("%019d", conv_amount * 1000)
conv_amount = lang_obj:formatNum(conv_amount)
if parameters.convert == 'default2' then
return conv_amount .. conv_suffix .. ' (' .. amount .. suffix .. ')', conv_sortkey
else
return conv_amount .. conv_suffix, conv_sortkey
end
elseif mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting with pattern
amount = mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = amount})
end
return amount .. suffix, sortkey
end
-- format data type time
local function printDatatypeTime(data, parameters)
-- Dates and times are stored in ISO 8601 format
local timestamp = data.time
local post_format
local calendar_add = ""
local precision = data.precision or 11
if string.sub(timestamp, 1, 1) == '-' then
post_format = i18n.datetime["bc"]
elseif string.sub(timestamp, 2, 3) == '00' then
post_format = i18n.datetime["ad"]
elseif precision > 8 then
-- calendar model
local calendar_model = {["Q12138"] = "gregorian", ["Q1985727"] = "gregorian", ["Q11184"] = "julian", ["Q1985786"] = "julian"}
local calendar_id = mw.text.split(data.calendarmodel, 'entity/')[2]
if (timestamp < "+1582-10-15T00:00:00Z" and calendar_model[calendar_id] == "gregorian")
or (timestamp > "+1582-10-04T00:00:00Z" and calendar_model[calendar_id] == "julian")
then
calendar_add = " <sup>(" .. mw.message.new('Wikibase-time-calendar-' .. calendar_model[calendar_id]):inLanguage(parameters.lang[1]):plain() .. ")</sup>"
end
end
local function formatTime(form, stamp)
local pattern
if type(form) == "function" then
pattern = form(stamp)
else
pattern = form
end
stamp = tostring(stamp)
if mw.ustring.find(pattern, "$1") then
return mw.ustring.gsub(pattern, "$1", stamp)
elseif string.sub(stamp, 1, 1) == '-' then -- formatDate() only supports years from 0
stamp = '+' .. string.sub(stamp, 2)
elseif string.sub(stamp, 1, 1) ~= '+' then -- not a valid timestamp, it is a number
stamp = string.format("%04d", stamp)
end
local ret = mw.language.new(parameters.lang[1]):formatDate(pattern, stamp)
ret = string.gsub(ret, "^(%[?%[?)0+", "%1") -- suppress leading zeros
ret = string.gsub(ret, "( %[?%[?)0+", "%1")
return ret
end
local function postFormat(t)
if post_format and mw.ustring.find(post_format, "$1") then
return mw.ustring.gsub(post_format, "$1", t)
end
return t
end
local intyear = tonumber(string.match(timestamp, "[+-](%d+)"))
local ret = ""
if precision <= 5 then -- precision is 10000 years or more
local factor = 10 ^ ((5 - precision) + 4)
local y2 = math.ceil(math.abs(intyear) / factor)
local relative = formatTime(i18n.datetime[precision], y2)
if post_format == i18n.datetime["bc"] then
ret = mw.ustring.gsub(i18n.datetime.beforenow, "$1", relative)
else
ret = mw.ustring.gsub(i18n.datetime.afternow, "$1", relative)
end
local ret_number = string.match(ret, "%d+")
if ret_number ~= nil then
ret = mw.ustring.gsub(ret, ret_number, mw.language.new(parameters.lang[1]):formatNum(tonumber(ret_number)))
end
elseif precision == 6 or precision == 7 then -- millennia or centuries
local card = math.floor((intyear - 1) / 10^(9 - precision)) + 1
ret = formatTime(i18n.datetime[precision], card)
ret = postFormat(ret)
elseif precision == 8 then -- decades
local card = math.floor(math.abs(intyear) / 10) * 10
ret = formatTime(i18n.datetime[8], card)
ret = postFormat(ret)
elseif intyear > 9999 then -- not a valid timestamp
return
elseif precision == 9 or parameters.formatting == 'Y' then -- precision is year
ret = formatTime(i18n.datetime[9], intyear)
ret = postFormat(ret) .. calendar_add
elseif precision == 10 then -- month
ret = formatTime(i18n.datetime[10], timestamp .. " + 1 day") -- formatDate yyyy-mm-00 returns the previous month
ret = postFormat(ret) .. calendar_add
else -- precision 11, day
ret = formatTime(parameters.formatting or i18n.datetime[11], timestamp)
ret = postFormat(ret) .. calendar_add
end
return ret, timestamp
end
-- format data value wikibase-entityid with data types wikibase-item or wikibase-property
local function printDatatypeEntity(data, parameters)
local entity_id = data['id']
if parameters.formatting == 'raw' then
return entity_id, entity_id
end
local entity_page = 'Special:EntityPage/' .. entity_id
local label, lang = getLabelByLangs(entity_id, parameters.lang)
local sitelink = mw.wikibase.getSitelink(entity_id)
local parameter = parameters.formatting
local labelcase = label or sitelink
if parameters.gender == 'feminineform' then
labelcase = feminineForm(entity_id, lang) or labelcase
end
if parameters.case ~= 'gender' then
labelcase = case(parameters.case, labelcase, lang, parameters.lang[1], entity_id, parameters.id)
end
if labelcase == nil and i18n.qidlabels == false then
return
end
local ret1, ret2
if parameter == 'label' then
ret1 = labelcase or entity_id
ret2 = labelcase or entity_id
elseif parameter == 'sitelink' then
ret1 = (sitelink or 'd:' .. entity_page)
ret2 = sitelink or entity_id
elseif mw.ustring.find((parameter or ''), '$1', 1, true) then -- formatting = a pattern
ret1 = mw.ustring.gsub(parameter, '$1', labelcase or entity_id)
ret1 = expandBraces(ret1, parameter)
ret2 = labelcase or entity_id
else
if parameter == "ucfirst" or parameter == "ucinternallink" then
if labelcase and lang then
labelcase = mw.language.new(lang):ucfirst(labelcase)
end
-- only first of a list, reset formatting for next ones
if parameter == "ucinterlanllink" then
parameters.formatting = 'internallink'
else
parameters.formatting = nil -- default format
end
end
if sitelink then
ret1 = '[[' .. sitelink .. '|' .. labelcase .. ']]'
ret2 = labelcase
elseif label and string.match(parameter or '', 'internallink$') and not mw.wikibase.getEntityIdForTitle(label) then
ret1 = '[[' .. label .. '|' .. labelcase .. ']]'
ret2 = labelcase
else
ret1 = '[[d:' .. entity_page .. '|<span style="color:#5f9cbb;">' .. (labelcase or entity_id) .. '</span>]]'
ret2 = labelcase or entity_id
end
end
return ret1 .. addLabelIcon(entity_id, lang, parameters.lang[1], parameters.labelicon), ret2
end
-- format data type wikibase-lexeme
local function printDatatypeLexeme(data, parameters)
local entity_id = data['id']
if parameters.formatting == 'raw' then
return entity_id, entity_id
end
local lemmas = mw.wikibase.getEntity(entity_id):getLemmas()
if parameters.list == 'lang' and lemmas[1][2] ~= parameters.lang[1] then
return
end
local ret = '[[d:Special:EntityPage/' .. entity_id .. '|<span style="color:#5f9cbb;">' .. lemmas[1][1] .. '</span>]]'
if parameters.list ~= 'lang' or (parameters.list == 'lang' and lemmas[1][2] ~= wiki.langcode) then
ret = ret .. " <sup>(" .. lemmas[1][2] .. ")</sup>"
end
return ret, entity_id
end
-- format data type monolingualtext
local function printDatatypeMonolingual(data, parameters)
-- data fields: language [string], text [string]
if parameters.list == "lang" and data["language"] ~= parameters.lang[1] then
return
elseif parameters.list == "notlang" and data["language"] == parameters.lang[1] then
return
elseif parameters.formatting == "language" or parameters.formatting == "text" then
return data[parameters.formatting]
end
local result = data["text"]
if data["language"] ~= wiki.langcode then
result = mw.ustring.gsub('<span lang="$1">$2</span>', '$[12]', {["$1"]=data["language"], ["$2"]=data["text"]})
end
if mw.ustring.find((parameters.formatting or ''), '$', 1, true) then
-- output format defined with $text, $language
result = mw.ustring.gsub(parameters.formatting, '$text', result)
result = mw.ustring.gsub(result, '$language', data["language"])
end
return result
end
local function getSnakValue(snak, parameters)
parameters.editbridge = false
if snak.snaktype == 'value' then -- see Special:ListDatatypes
-- data value string
if snak.datatype == "string" then
parameters.editbridge = true -- Wikidata Bridge currently only string values
return printDatatypeString(snak.datavalue.value, parameters)
elseif snak.datatype == "commonsMedia" or snak.datatype == "geo-shape" then
return printDatatypeMedia(snak.datavalue.value, parameters)
elseif snak.datatype == "tabular-data" then
return printDatatypeTabular(snak.datavalue.value, parameters)
elseif snak.datatype == "url" then
return printDatatypeUrl(snak.datavalue.value, parameters)
elseif snak.datatype == "external-id" then
return printDatatypeExternal(snak.datavalue.value, parameters)
elseif snak.datatype == 'math' then
return printDatatypeMath(snak.datavalue.value)
elseif snak.datatype == 'musical-notation' then
return printDatatypeMusical(snak.datavalue.value, parameters.formatting)
-- data types other than string value
elseif snak.datatype == 'wikibase-item' or snak.datatype == 'wikibase-property' then
if i18n.suppress[snak.datavalue.value.id] then
return
end
return printDatatypeEntity(snak.datavalue.value, parameters)
elseif snak.datatype == 'wikibase-lexeme' then
return printDatatypeLexeme(snak.datavalue.value, parameters)
elseif snak.datatype == 'monolingualtext' then
return printDatatypeMonolingual(snak.datavalue.value, parameters)
elseif snak.datatype == "globe-coordinate" then
return printDatatypeCoordinate(snak.datavalue.value, parameters.formatting)
elseif snak.datatype == "quantity" then
return printDatatypeQuantity(snak.datavalue.value, parameters)
elseif snak.datatype == "time" then
return printDatatypeTime(snak.datavalue.value, parameters)
end
elseif snak.snaktype == 'novalue' then
if parameters.formatting == 'raw' or parameters.shownovalue == false then return end
return mw.message.new('Wikibase-snakview-snaktypeselector-novalue'):inLanguage(parameters.lang[1]):plain()
elseif snak.snaktype == 'somevalue' then
if parameters.formatting == 'raw' then return end
return mw.message.new('Wikibase-snakview-snaktypeselector-somevalue'):inLanguage(parameters.lang[1]):plain()
end
return mw.wikibase.renderSnak(snak)
end
local function printError(key)
return '<span class="error">' .. i18n.errors[key] .. '</span>'
end
local function getQualifierSnak(claim, qualifierId, parameters)
-- a "snak" is Wikidata terminology for a typed key/value pair
-- a claim consists of a main snak holding the main information of this claim,
-- as well as a list of attribute snaks and a list of references snaks
if qualifierId then
-- search the attribute snak with the given qualifier as key
if claim.qualifiers then
local qualifier = claim.qualifiers[qualifierId]
if qualifier then
if qualifier[1].datatype == "monolingualtext" then
-- iterate over monolingualtext qualifiers to get local language
for idx in pairs(qualifier) do
if getSnak(qualifier[idx], {"datavalue", "value", "language"}) == parameters.lang[1] then
return qualifier[idx]
end
end
elseif parameters.list then
return qualifier
else
return qualifier[1]
end
end
end
return nil, printError("qualifier-not-found")
else
-- otherwise return the main snak
return claim.mainsnak
end
end
local function getValueOfClaim(claim, qualifierId, parameters)
local snak, error = getQualifierSnak(claim, qualifierId, parameters)
if not snak then
return nil, nil, error
elseif snak[1] then -- a multi qualifier
local result, sortkey = {}, {}
local maxvals = tonumber(parameters.listmax)
for idx in pairs(snak) do
result[#result + 1], sortkey[#sortkey + 1] = getSnakValue(snak[idx], parameters)
if maxvals and maxvals == #result then break end
end
return mw.text.listToText(result, parameters.qseparator, parameters.qconjunction), sortkey[1]
else -- a property or a qualifier
return getSnakValue(snak, parameters)
end
end
local function getValueOfParentClaim(claim, qualifierId, parameters)
local qids = mw.text.split(qualifierId, '/', true)
local value, sortkey, valueraw = {}, {}, {}
local parent_raw, value_text
if qids[1] == parameters.property then
parent_raw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=parameters.lang})
else
parent_raw, _, _ = getValueOfClaim(claim, qids[1], {["formatting"]="raw", ["lang"]=parameters.lang, ["list"]=true, ["qseparator"]='/', ["qconjunction"]='/'})
end
if string.sub(parent_raw or '', 1, 1) == "Q" then -- protection for 'no value'
local parent_qids = mw.text.split(parent_raw, '/', true)
for idx, p_qid in ipairs(parent_qids) do
local parent_claims = mw.wikibase.getBestStatements(p_qid, qids[2])
if parent_claims[1] then
value[idx], sortkey[idx], _ = getValueOfClaim(parent_claims[1], nil, parameters)
-- raw parent value needed for while/black lists, lang for avoiding an error on types other than entity
valueraw[idx], _, _ = getValueOfClaim(parent_claims[1], nil, {["formatting"]="raw", ["lang"]=parameters.lang})
end
end
end
if value[1] then
value_text = mw.text.listToText(value, parameters.qseparator, parameters.qconjunction)
end
return value_text, sortkey[1], valueraw[1]
end
-- see d:Help:Sources
local function getReferences(claim, parameters)
if not (parameters.references or parameters.onlysourced) then
return '', false
end
local lang = parameters.lang
local maxrefs = tonumber(parameters.references) or 1
local notproperref = {
["P143"] = true, -- imported from
["P3452"] = true, -- inferred from
["P887"] = true, -- based on heuristic
["P4656"] = true -- Wikimedia import URL
}
local result = {}
-- traverse through all references
for ref in pairs(claim.references or {}) do
local refparts
local refs = {}
local validref = true
local ref_id
-- traverse through all parts of the current reference
for snakkey, snakval in pairs(claim.references[ref].snaks or {}) do
for partkey, _ in pairs(claim.references[ref].snaks[snakkey] or {}) do
if notproperref[snakkey] then -- not a proper reference
validref = false
break
end
end
if validref then
for snakidx = 1, #snakval do
if snakidx > 1 then refparts = refparts .. ", " end
if snakval[snakidx].datatype == 'external-id' then
refparts = refparts or '' .. (getSnakValue(snakval[snakidx], {formatting='externalid', property=snakval[snakidx].property, lang=lang}) or '')
else
refparts = refparts or '' .. (getSnakValue(snakval[snakidx], {lang=lang}) or '')
end
end
refs[snakkey] = refparts
refparts = nil
if snakkey == "P248" then -- stated in
ref_id = getSnak(snakval, {1, "datavalue", "value", "id"})
end
end
end
-- fill missing values with parent item
if ref_id then
local function refParent(qid, pid, formatting)
local snak = getSnak(mw.wikibase.getBestStatements(qid, pid), {1, "mainsnak"})
return snak and getSnakValue(snak, {formatting=formatting, lang=lang})
end
refs['P50'] = refs['P50'] or refParent(ref_id, 'P50', 'label') -- author
refs['P407'] = refs['P407'] or refParent(ref_id, 'P407', 'label') -- language of work
refs['P123'] = refs['P123'] or refParent(ref_id, 'P123', 'label') -- publisher
refs['P577'] = refs['P577'] or refParent(ref_id, 'P577') -- date
refs['P1433'] = refs['P1433'] or refParent(ref_id, 'P1433', 'label') -- published in
refs['P304'] = refs['P304'] or refParent(ref_id, 'P304') -- page(s)
refs['P433'] = refs['P433'] or refParent(ref_id, 'P433') -- issue
refs['P236'] = refs['P236'] or refParent(ref_id, 'P236') -- ISSN
refs['P356'] = refs['P356'] or refParent(ref_id, 'P356') -- DOI
end
-- get title of local templates for citing references
local template_web = mw.wikibase.getSitelink('Q5637226') or ""
template_web = mw.text.split(template_web, ":")[2] -- split off namespace from front
local template_journal = mw.wikibase.getSitelink('Q5624899') or ""
template_journal = mw.text.split(template_journal, ":")[2]
local citeParams = {}
if refs['P854'] and (refs['P1476'] or refs['P248']) and template_web then
-- if both "reference URL" and "title" (or "stated in") are present, then use cite web template
citeParams[i18n['cite']['url']] = refs['P854']
if refs['P248'] and refs['P1476'] == nil then
citeParams[i18n['cite']['title']] = refs['P248']:match("^%[%[.-|(.-)%]%]")
else
citeParams[i18n['cite']['title']] = refs['P1476']
citeParams[i18n['cite']['website']] = refs['P248']
end
citeParams[i18n['cite']['author']] = refs['P50']
citeParams[i18n['cite']['language']] = refs['P407']
citeParams[i18n['cite']['publisher']] = refs['P123']
citeParams[i18n['cite']['date']] = refs['P577']
citeParams[i18n['cite']['pages']] = refs['P304']
citeParams[i18n['cite']['access-date']] = refs['P813']
citeParams[i18n['cite']['archive-url']] = refs['P1065']
citeParams[i18n['cite']['archive-date']] = refs['P2960']
citeParams[i18n['cite']['quote']] = refs['P1683']
refparts = mw.getCurrentFrame():expandTemplate{title=template_web, args=citeParams}
elseif refs['P1433'] and (refs['P1476'] or refs['P248']) and template_journal then
-- if both "published in" and "title" (or "stated in") are present, then use cite journal template
citeParams[i18n['cite']['work']] = refs['P1433']
citeParams[i18n['cite']['title']] = refs['P1476'] or refs['P248']
citeParams[i18n['cite']['author']] = refs['P50']
citeParams[i18n['cite']['date']] = refs['P577']
citeParams[i18n['cite']['issue']] = refs['P433']
citeParams[i18n['cite']['pages']] = refs['P304']
citeParams[i18n['cite']['language']] = refs['P407']
citeParams[i18n['cite']['issn']] = refs['P236']
citeParams[i18n['cite']['doi']] = refs['P356']
refparts = mw.getCurrentFrame():expandTemplate{title=template_journal, args=citeParams}
elseif validref then
-- raw ouput
local snaksorder = claim.references[ref]["snaks-order"]
local function indexed(a)
for _, b in ipairs(snaksorder) do
if b == a then return true end
end
return false
end
for k, _ in pairs(refs or {}) do
if not indexed(k) then
table.insert(snaksorder, k)
end
end
local italics = "''"
for _, k in ipairs(snaksorder) do
if refs[k] then
refparts = refparts and refparts .. " " or ""
refparts = refparts .. mw.ustring.gsub(getLabelByLangs(k, lang), "^%l", mw.ustring.upper) .. ": "
refparts = refparts .. italics .. refs[k] .. italics .. "."
italics = ""
end
end
end
if refparts then
local ref_name = claim.references[ref].hash
result[#result + 1] = mw.getCurrentFrame():extensionTag("ref", refparts, {name=ref_name})
if maxrefs and maxrefs == #result then break end
end
end
if #result > 0 then
if parameters.references then
if isSet(i18n.categoryref) then
result[#result + 1] = "[[" ..i18n.categoryref .. "]]"
end
return table.concat(result), true
else
return '', true
end
end
return '', false
end
-- Set whitelist or blacklist values
local function setWhiteOrBlackList(num_qual, args)
local lists = {['whitelist']={}, ['blacklist']={}, ['ignorevalue']={}, ['selectvalue']={}}
for i = 0, num_qual do
for k, _ in pairs(lists) do
if isSet(args[k .. i]) then
lists[k][tostring(i)] = {}
local pattern = 'Q%d+'
if string.sub(args[k .. i], 1, 1) ~= 'Q' then
pattern = '[^%p%s]+'
end
for q in string.gmatch(args[k .. i], pattern) do
lists[k][tostring(i)][q] = true
end
end
end
end
return lists['whitelist'], lists['blacklist'], lists['ignorevalue'], lists['selectvalue']
end
local function tableParameters(args, parameters, column)
local column_params = mw.clone(parameters)
column_params.formatting = args["colformat"..column]; if column_params.formatting == "" then column_params.formatting = nil end
column_params.convert = args["convert" .. column]
if args["case" .. column] then
column_params.case = args["case" .. column]
end
return column_params
end
local function getEntityId(args, pargs, unnamed)
pargs = pargs or {}
local id = args.item or args.from or (unnamed and mw.text.trim(args[1] or '') or nil)
if not isSet(id) then
id = pargs.item or pargs.from or (unnamed and mw.text.trim(pargs[1] or '') or nil)
end
if isSet(id) then
if string.find(id, ":") then -- remove prefix as Property:Pid
id = mw.text.split(id, ":")[2]
end
else
id = mw.wikibase.getEntityIdForCurrentPage()
end
return id
end
local function getArg(value, default, aliases)
if type(value) == 'boolean' then return value
elseif value == "false" or value == "no" then return false
elseif value == "true" or value == "yes" then return true
elseif value and aliases and aliases[value] then return aliases[value]
elseif isSet(value) then return value
elseif default then return default
else return nil
end
end
-- Main function claim ---------------------------------------------
-- on debug console use: =p.claim{item="Q...", property="P...", ...}
function p.claim(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local is_sandbox = isSet(pargs.sandbox)
if not required and is_sandbox then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).claim(frame)
end
--If a value is already set, use it
if isSet(args.value) then
if args.value == 'NONE' then
return
else
return args.value
end
end
-- arguments
local parameters = {}
parameters.id = getEntityId(args, pargs)
if parameters.id == nil then return end
parameters.property = string.upper(args.property or "")
local qualifierId = {}
qualifierId[1] = getArg(string.upper(args.qualifier or args.qualifier1 or ""))
local i = 2
while isSet(args["qualifier" .. i]) do
qualifierId[i] = string.upper(args["qualifier" .. i])
i = i + 1
end
parameters.formatting = getArg(args.formatting)
parameters.convert = getArg(args.convert)
parameters.numformat = getArg(args.numformat)
parameters.case = args.case
parameters.list = getArg(args.list, true, {firstrank='bestrank'})
parameters.listmax = args.listmax
parameters.listrank = getArg(args.listrank)
if type(parameters.list) == "number" then -- backwards compatibility
parameters.listmax = parameters.listmax or parameters.list
parameters.list = true
elseif parameters.list == "bestrank" then
parameters.listrank = parameters.listrank or "bestrank"
parameters.list = true
end
parameters.shownovalue = getArg(args.shownovalue, true)
parameters.separator = getArg(args.separator)
parameters.conjunction = getArg(args.conjunction, parameters.separator)
parameters.qseparator = getArg(args.qseparator, parameters.separator)
parameters.qconjunction = getArg(args.qconjunction, parameters.conjunction)
local sorting_col = args.tablesort
local sorting_up = (args.sorting or "") ~= "-1"
local rowformat = args.rowformat
parameters.references = getArg(args.references, false)
parameters.onlysourced = getArg(args.onlysourced, false)
local showerrors = args.showerrors
local default = args.default
if default then showerrors = nil end
parameters.lang = findLang(args.lang)
if parameters.formatting == "raw" then
parameters.editicon, parameters.labelicon = false, false
else
parameters.editicon, parameters.labelicon = setIcons(args.editicon, pargs.editicon) -- needs loadI18n by findLand
end
-- fetch property
local claims = {}
local bestrank = parameters.listrank == 'bestrank' and parameters.list ~= 'lang'
for p in string.gmatch(parameters.property, 'P%d+') do
claims = getStatements(parameters.id, p, bestrank)
if #claims > 0 then
parameters.property = p
break
end
end
if #claims == 0 then
local ret = showerrors and printError("property-not-found") or default
return ret, args.query == 'num' and 0 or ''
end
-- defaults for table
local preformat, postformat = "", ""
local whitelisted = false
local whitelist, blacklist, ignorevalue, selectvalue = {}, {}, {}, {}
if parameters.formatting == "table" then
parameters.separator = parameters.separator or "<br />"
parameters.conjunction = parameters.conjunction or "<br />"
parameters.qseparator = getArg(args.qseparator, mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain())
parameters.qconjunction = getArg(args.qconjunction, parameters.qseparator)
if not rowformat then
rowformat = "$0 ($1"
i = 2
while qualifierId[i] do
rowformat = rowformat .. ", $" .. i
i = i + 1
end
rowformat = rowformat .. ")"
elseif mw.ustring.find(rowformat, "^[*#]") then
parameters.separator = "</li><li>"
parameters.conjunction = "</li><li>"
if mw.ustring.match(rowformat, "^[*#]") == "*" then
preformat = "<ul><li>"
postformat = "</li></ul>"
else
preformat = "<ol><li>"
postformat = "</li></ol>"
end
rowformat = mw.ustring.gsub(rowformat, "^[*#] ?", "")
end
-- set whitelist and blacklist values
whitelist, blacklist, ignorevalue, selectvalue = setWhiteOrBlackList(#qualifierId, args)
local next = next
if next(whitelist) ~= nil then whitelisted = true end
end
-- set feminine case if gender is requested
local itemgender = args.itemgender
local idgender
if itemgender then
if string.match(itemgender, "^P%d+$") then
local snak_id = getSnak(mw.wikibase.getBestStatements(parameters.id, itemgender), {1, "mainsnak", "datavalue", "value", "id"})
if snak_id then
idgender = snak_id
end
elseif string.match(itemgender, "^Q%d+$") then
idgender = itemgender
end
end
local gender_requested = false
if parameters.case == "gender" or idgender then
gender_requested = true
elseif parameters.formatting == "table" then
for i=0, #qualifierId do
if args["case" .. i] and args["case" .. i] == "gender" then
gender_requested = true
break
end
end
end
if gender_requested then
if feminineGender(idgender or parameters.id) then
parameters.gender = "feminineform"
end
end
-- get initial sort indices
local sortindices = {}
for idx in pairs(claims) do
sortindices[#sortindices + 1] = idx
end
-- sort by claim rank
local comparator = function(a, b)
local rankmap = { deprecated = 2, normal = 1, preferred = 0 }
local ranka = rankmap[claims[a].rank or "normal"] .. string.format("%08d", a)
local rankb = rankmap[claims[b].rank or "normal"] .. string.format("%08d", b)
return ranka < rankb
end
table.sort(sortindices, comparator)
local result, result2, result_query
local error
if parameters.list or parameters.formatting == "table" then
-- convert LF to line feed, <br /> may not work on some cases
parameters.separator = parameters.separator == "LF" and "\010" or parameters.separator
parameters.conjunction = parameters.conjunction == "LF" and "\010" or parameters.conjunction
-- i18n separators
parameters.separator = parameters.separator or mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain()
parameters.conjunction = parameters.conjunction or (mw.message.new('And'):inLanguage(parameters.lang[1]):plain() .. mw.message.new('Word-separator'):inLanguage(parameters.lang[1]):plain())
-- iterate over all elements and return their value (if existing)
local value, valueq
local sortkey, sortkeyq
local values = {}
local sortkeys = {}
local refs = {}
local rowlist = {} -- rows to list with whitelist or blacklist
for idx in pairs(claims) do
local claim = claims[sortindices[idx]]
local reference = {}
if not whitelisted then rowlist[idx] = true end
if parameters.formatting == "table" then
local params = tableParameters(args, parameters, "0")
value, sortkey, error = getValueOfClaim(claim, nil, params)
if value then
values[#values + 1] = {}
sortkeys[#sortkeys + 1] = {}
refs[#refs + 1] = {}
if whitelist["0"] or blacklist["0"] then
local valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=params.lang})
if whitelist["0"] and whitelist["0"][valueraw or ""] then
rowlist[#values] = true
elseif blacklist["0"] and blacklist["0"][valueraw or ""] then
rowlist[#values] = false
end
end
for i, qual in ipairs(qualifierId) do
local j = tostring(i)
params = tableParameters(args, parameters, j)
local valueq, sortkeyq, valueraw
if qual == parameters.property then -- hack for getting the property with another formatting, i.e. colformat1=raw
valueq, sortkeyq, _ = getValueOfClaim(claim, nil, params)
else
for q in mw.text.gsplit(qual, '%s*OR%s*') do
if string.find(q, ".+/.+") then
valueq, sortkeyq, valueraw = getValueOfParentClaim(claim, q, params)
elseif string.find(q, "^/.+") then
local claim2 = getStatements(parameters.id, string.sub(q, 2), bestrank)
if #claim2 > 0 then
-- only first value of a property as alternative to a qualifier
-- multiple values may not be related to a given raw of the table
valueq, sortkeyq, _ = getValueOfClaim(claim2[1], nil, params)
end
else
valueq, sortkeyq, _ = getValueOfClaim(claim, q, params)
end
if valueq then
qual = q
break
end
end
end
values[#values]["col" .. j] = valueq
sortkeys[#sortkeys]["col" .. j] = sortkeyq or valueq
if whitelist[j] or blacklist[j] or ignorevalue[j] or selectvalue[j] then
valueq = valueraw or getValueOfClaim(claim, qual, {["formatting"]="raw", ["lang"]=params.lang})
if whitelist[j] and whitelist[j][valueq or ""] then
rowlist[#values] = true
elseif blacklist[j] and blacklist[j][valueq or ""] then
rowlist[#values] = false
elseif ignorevalue[j] and ignorevalue[j][valueq or ""] then
values[#values]["col" .. j] = nil
elseif selectvalue[j] and not selectvalue[j][valueq or ""] then
values[#values]["col" .. j] = nil
end
end
end
end
else
value, sortkey, error = getValueOfClaim(claim, qualifierId[1], parameters)
values[#values + 1] = {}
sortkeys[#sortkeys + 1] = {}
refs[#refs + 1] = {}
end
if not value and showerrors then value = error end
if value then
if (parameters.references or parameters.onlysourced) and claim.references then
reference = claim.references
end
refs[#refs]["col0"] = reference
values[#values]["col0"] = value
sortkeys[#sortkeys]["col0"] = sortkey or value
end
end
-- sort and format results
sortindices = {}
for idx in pairs(values) do
sortindices[#sortindices + 1] = idx
end
if sorting_col then
local sorting_table = mw.text.split(sorting_col, '%D+')
local comparator = function(a, b)
local valuea, valueb
local i = 1
while valuea == valueb and i <= #sorting_table do
valuea = sortkeys[a]["col" .. sorting_table[i]] or ''
valueb = sortkeys[b]["col" .. sorting_table[i]] or ''
i = i + 1
end
if sorting_up then
return valueb > valuea
end
return valueb < valuea
end
table.sort(sortindices, comparator)
end
local maxvals = tonumber(parameters.listmax)
result = {}
for idx in pairs(values) do
local valuerow = values[sortindices[idx]]
local reference, valid_ref = getReferences({["references"] = refs[sortindices[idx]]["col0"]}, parameters)
value = valuerow["col0"]
if parameters.formatting == "table" then
if not rowlist[sortindices[idx]] then
value = nil
else
local rowformatting = rowformat .. "$" -- fake end character added for easy gsub
value = mw.ustring.gsub(rowformatting, "$0", {["$0"] = value})
value = mw.ustring.gsub(value, "$R0", reference) -- add reference
for i, _ in ipairs(qualifierId) do
local valueq = valuerow["col" .. i]
if args["rowsubformat" .. i] and isSet(valueq) then
-- add fake end character $
-- gsub $i not followed by a number so $1 doesn't match $10, $11...
-- remove fake end character
valueq = captureEscapes(valueq)
valueq = mw.ustring.gsub(args["rowsubformat" .. i] .. "$", "$" .. i .. "(%D)", valueq .. "%1")
valueq = string.sub(valueq, 1, -2)
rowformatting = mw.ustring.gsub(rowformatting, "$" .. i .. "(%D)", args["rowsubformat" .. i] .. "%1")
end
valueq = valueq and captureEscapes(valueq) or ''
value = mw.ustring.gsub(value, "$" .. i .. "(%D)", valueq .. "%1")
end
value = string.sub(value, 1, -2) -- remove fake end character
value = expandBraces(value, rowformatting)
end
elseif value then
value = expandBraces(value, parameters.formatting)
value = value .. reference
end
if isSet(value) and (not parameters.onlysourced or (parameters.onlysourced and valid_ref)) then
result[#result + 1] = value
if not parameters.list or (maxvals and maxvals == #result) then
break
end
end
end
if args.query == 'num' then
result_query = #result
end
if #result > 0 then
if parameters.formatting == 'table' then
result = addEditIconTable(result, parameters) -- in a table, add edit icon on last element
end
result = preformat .. mw.text.listToText(result, parameters.separator, parameters.conjunction) .. postformat
else
result = ''
end
else
-- return first element
local claim = claims[sortindices[1]]
result, result2, error = getValueOfClaim(claim, qualifierId[1], parameters)
if result then
local ref, valid_ref = getReferences(claim, parameters)
if parameters.onlysourced and valid_ref == false then
result = nil
else
result = result .. ref
end
end
if args.query == 'num' then result_query = result and 1 or 0 end
end
if isSet(result) then
if not (parameters.formatting == 'table' or (result2 and result2 == 'no-icon')) then
-- add edit icon, except table added previously and except explicit no-icon internal flag
result = result .. addEditIcon(parameters)
end
else
if showerrors then result = error else result = default end
end
if args.query == 'untranslated' and required and not is_sandbox then
result_query = untranslated
end
return result, result_query or ''
end
-- Local functions for getParentValues -----------------------
local function uc_first(word)
if word == nil then return end
return mw.ustring.upper(mw.ustring.sub(word, 1, 1)) .. mw.ustring.sub(word, 2)
end
local function getPropertyValue(id, property, parameter, langs, labelicon, case)
local snaks = mw.wikibase.getBestStatements(id, property)
local mysnak = getSnak(snaks, {1, "mainsnak"})
if mysnak == nil then
return
end
local entity_id
local result = '-' -- default for 'no value'
if mysnak.datavalue then
entity_id = "Q" .. tostring(mysnak.datavalue.value['numeric-id'])
result, _ = getSnakValue(mysnak, {formatting=parameter, lang=langs, labelicon=labelicon, case=case})
end
return entity_id, result
end
local function getParentObjects(id,
prop_format,
label_format,
languages,
propertySupString,
propertyLabel,
propertyLink,
label_show,
labelicon0,
labelicon1,
upto_number,
upto_label,
upto_value,
last_only,
grammatical_case,
include_self)
local propertySups = mw.text.split(propertySupString, '[^P%d]')
local maxloop = 10
if upto_number then
maxloop = tonumber(upto_number)
elseif next(upto_label) or next(upto_value) then
maxloop = 50
end
local labels_filter = next(label_show)
local result = {}
local id_value = id
for iter = 1, maxloop do
local link, label, labelwicon, linktext, id_label
for _, propertySup in pairs(propertySups) do
local _id_value, _link = getPropertyValue(id_value, propertySup, prop_format, languages, labelicon1, grammatical_case)
if _id_value and _link then id_value = _id_value; link = _link break end
end
if not id_value or not link then break end
if propertyLink then
_, linktext = getPropertyValue(id_value, propertyLink, "label", languages)
if linktext then
link = mw.ustring.gsub(link, "%[%[(.*)%|.+%]%]", "[[%1|" .. linktext .. "]]")
end
end
id_label, label = getPropertyValue(id_value, propertyLabel, label_format, languages, false, "infoboxlabel")
if labelicon0 then
_, labelwicon = getPropertyValue(id_value, propertyLabel, label_format, languages, labelicon0, "infoboxlabel")
else
labelwicon = label
end
if labels_filter == nil or (label_show[id_label] or label_show[label]) then
result[#result + 1] = {labelwicon, link}
label_show[id_label or 'none'], label_show[label or 'none'] = nil, nil -- only first label found
end
if upto_label[id_label] or upto_label[label] or upto_value[id_value] then
break
end
end
if last_only then
result = {result[#result]}
end
if include_self then
local label_self, link_self
_, label_self = getPropertyValue(id, propertyLabel, label_format, languages, labelicon0, "infoboxlabel")
link_self, _ = getLabelByLangs(id, languages)
table.insert(result, 1, {label_self, link_self})
end
return result
end
local function parentObjectsToString(result,
rowformat,
cascade,
sorting)
local ret = {}
local first = 1
local last = #result
local iter = 1
if sorting == "-1" then first = #result; last = 1; iter = -1 end
for i = first, last, iter do
local rowtext = mw.ustring.gsub(rowformat, "$[01]", {["$0"] = result[i][1], ["$1"] = result[i][2]})
ret[#ret + 1] = expandBraces(rowtext, rowformat)
end
if cascade then
local direction = mw.language.new(wiki.langcode):isRTL() and "right" or "left"
local suffix = ""
for i = 1, #ret do
ret[i] = '<ul style="line-height:100%; margin-' .. direction .. ':0.45em; padding-' .. direction .. ':0;"><li>' .. ret[i]
suffix = suffix .. '</li></ul>'
end
ret[#ret] = ret[#ret] .. suffix
end
return ret
end
-- Returns pairs of parent label and property value fetching a recursive tree
function p.getParentValues(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
if not required and isSet(pargs.sandbox) then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getParentValues(frame)
end
local id = getEntityId(args, pargs)
if id == nil then return end
local languages = findLang(args.lang)
local propertySup = getArg(args.property, "P131") --administrative entity
local propertyLabel = getArg(args.label, "P31") --instance
local propertyLink = getArg(args.valuetext)
local property_format = getArg(args.formatting)
local label_format = getArg(args.labelformat, "label")
local upto_number = getArg(args.upto)
local last_only = getArg(args.last_only, false)
local editicon, labelicon = setIcons(args.editicon, pargs.editicon)
local include_self = getArg(args.include_self, false)
local case = getArg(args.case)
local upto_label = {}
for q in string.gmatch(args.uptolabelid or '', 'Q%d+') do
upto_label[q] = true
end
if type(upto_number) == 'string' then
upto_label[uc_first(upto_number)] = true
upto_number = nil
end
local upto_value = {}
for q in string.gmatch(args.uptovalueid or args.uptolinkid or '', 'Q%d+') do
upto_value[q] = true
end
local label_show = {}
for q in string.gmatch(args.showlabelid or '', 'Q%d+') do
label_show[q] = true
end
for _, v in ipairs(mw.text.split(args.labelshow or '', "/")) do
if v ~= '' then
label_show[uc_first(v)] = true
end
end
local rowformat = args.rowformat; if not isSet(rowformat) then rowformat = "$0 = $1" end
local labelicon0, labelicon1 = labelicon, labelicon
if string.find(label_format, '{{.*$0.*}}') or (string.find(rowformat, '{{.*$0.*}}') and label_format ~= 'raw') then
labelicon0 = false
end
local result = getParentObjects(id,
property_format,
label_format,
languages,
propertySup,
propertyLabel,
propertyLink,
label_show,
labelicon0,
labelicon1,
upto_number,
upto_label,
upto_value,
last_only,
case,
include_self)
if #result == 0 then return end
local separator = args.separator; if not isSet(separator) then separator = "<br />" end
local sorting = args.sorting; if sorting == "" then sorting = nil end
local cascade = (args.cascade == "true" or args.cascade == "yes")
local ret = parentObjectsToString(result,
rowformat,
cascade,
sorting)
ret = addEditIconTable(ret, {property=propertySup, editicon=editicon, id=id, lang=languages})
return mw.text.listToText(ret, separator, separator)
end
-- Link with a parent label --------------------
function p.linkWithParentLabel(frame)
local pargs = frame.args and frame:getParent().args or {}
if not required and isSet(pargs.sandbox) then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).linkWithParentLabel(frame)
end
local args = {}
if frame.args then
for k, v in pairs(frame.args) do -- metatable
args[k] = v
end
else
args = frame -- via require
end
if isSet(args.value) then
return args.value
end
-- get id value of property/qualifier
local largs = mw.clone(args)
largs.list = tonumber(args.list) and args.list or true
largs.formatting = "raw"
largs.separator = "/·/"
largs.editicon = false
local items_list, _ = p.claim(largs)
if not isSet(items_list) then return end
local items_table = mw.text.split(items_list, "/·/", true)
-- get internal link of property/qualifier
largs.formatting = "internallink"
local link_list, _ = p.claim(largs)
local link_table = mw.text.split(link_list, "/·/", true)
-- get label of parent property
local parent_claim = getSnak(getStatements(items_table[1], args.parent, true), {1, "mainsnak", "datatype"})
if parent_claim == 'monolingualtext' then
largs.formatting = nil
largs.list = 'lang'
else
largs.formatting = "label"
largs.list = false
end
largs.property = args.parent
largs.qualifier = nil
for i, v in ipairs(items_table) do
largs.item = v
local link_label, _ = p.claim(largs)
if isSet(link_label) then
link_table[i] = mw.ustring.gsub(link_table[i] or '', "%[%[(.*)%|.+%]%]", "[[%1|" .. link_label .. "]]")
end
end
args.editicon, _ = setIcons(args.editicon, pargs.editicon)
args.id = getEntityId(args, pargs)
args.lang = findLang(args.lang)
return mw.text.listToText(link_table) .. addEditIcon(args)
end
-- Calculate number of years old ----------------------------
function p.yearsOld(frame)
if not required and frame.args and isSet(frame:getParent().args.sandbox) then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).yearsOld(frame)
end
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local id = getEntityId(args, pargs)
if id == nil then return end
local lang = mw.language.new('en')
local function getBestValue(id, prop)
return getSnak(mw.wikibase.getBestStatements(id, prop), {1, "mainsnak", "datavalue", "value"})
end
local birth = getBestValue(id, 'P569')
if type(birth) ~= 'table' or birth.time == nil or birth.precision == nil or birth.precision < 8 then
return
end
local death = getBestValue(id, 'P570')
if type(death) ~= 'table' or death.time == nil or death.precision == nil then
death = {['time'] = lang:formatDate('c'), ['precision'] = 11} -- current date
elseif death.precision < 8 then
return
end
local dates = {}
dates[1] = {['min'] = {}, ['max'] = {}, ['precision'] = birth.precision}
dates[1].min.year = tonumber(mw.ustring.match(birth.time, "^[+-]?%d+"))
dates[1].min.month = tonumber(mw.ustring.match(birth.time, "\-(%d%d)\-"))
dates[1].min.day = tonumber(mw.ustring.match(birth.time, "\-(%d%d)T"))
dates[1].max = mw.clone(dates[1].min)
dates[2] = {['min'] = {}, ['max'] = {}, ['precision'] = death.precision}
dates[2].min.year = tonumber(mw.ustring.match(death.time, "^[+-]?%d+"))
dates[2].min.month = tonumber(mw.ustring.match(death.time, "\-(%d%d)\-"))
dates[2].min.day = tonumber(mw.ustring.match(death.time, "\-(%d%d)T"))
dates[2].max = mw.clone(dates[2].min)
for i, d in ipairs(dates) do
if d.precision == 10 then -- month
d.min.day = 1
local timestamp = string.format("%04d", tostring(math.abs(d.max.year)))
.. string.format("%02d", tostring(d.max.month))
.. "01"
d.max.day = tonumber(lang:formatDate("j", timestamp .. " + 1 month - 1 day"))
elseif d.precision < 10 then -- year or decade
d.min.day = 1
d.min.month = 1
d.max.day = 31
d.max.month = 12
if d.precision == 8 then -- decade
d.max.year = d.max.year + 9
end
end
end
local function age(d1, d2)
local years = d2.year - d1.year
if d2.month < d1.month or (d2.month == d1.month and d2.day < d1.day) then
years = years - 1
end
if d2.year > 0 and d1.year < 0 then
years = years - 1 -- no year 0
end
return years
end
local old_min = age(dates[1].max, dates[2].min)
local old_max = age(dates[1].min, dates[2].max)
local old, old_expr
if old_min == 0 and old_max == 0 then
old = "< 1"
old_max = 1 -- expression in singular
elseif old_min == old_max then
old = old_min
else
old = old_min .. "/" .. old_max
end
if args.formatting == 'unit' then
local langs = findLang(args.lang)
local yo
local yo_pl = {}
if langs[1] == wiki.langcode then
yo_pl = i18n["years-old"]
end
if not isSet(yo_pl[2]) then
local yo_label, _ = getLabelByLangs('Q24564698', langs)
yo_pl = {yo_label, yo_label}
end
yo = mw.language.new(langs[1]):plural(old_max, yo_pl)
if mw.ustring.find(yo, '$1', 1, true) then
old_expr = mw.ustring.gsub(yo, "$1", old)
else
old_expr = old .. ' ' .. yo
end
elseif args.formatting then
old_expr = expandBraces(mw.ustring.gsub(args.formatting, '$1', old), args.formatting)
else
old_expr = old
end
return old_expr
end
-- Gets a label in a given language (content language by default) or its fallbacks, optionnally linked.
function p.getLabel(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
if not required and isSet(pargs.sandbox) then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getLabel(frame)
end
local id = getEntityId(args, pargs, 1)
if id == nil then return end
local languages = findLang(args.lang)
local labelicon = false
if mw.wikibase.isValidEntityId(id) then
_, labelicon = setIcons(args.editicon, pargs.editicon)
end
local label_icon = ''
local label, lang
if args.label then
label = args.label
else
-- exceptions or labels fixed
local exist, labels = pcall(require, wiki.module_title .. "/labels" .. (languages[1] == wiki.langcode and '' or '/' .. languages[1]))
if exist and labels.infoboxLabelsFromId and next(labels.infoboxLabelsFromId) ~= nil then
label = labels.infoboxLabelsFromId[id]
end
if label == nil then
label, lang = getLabelByLangs(id, languages)
if label then
if isSet(args.itemgender) and feminineGender(args.itemgender) then
label = feminineForm(id, lang) or label
end
label = mw.language.new(lang):ucfirst(mw.text.nowiki(label)) -- sanitize
if args.case then
label = case(args.case, label, lang)
end
end
label_icon = addLabelIcon(id, lang, languages[1], labelicon)
end
end
local linked = args.linked
local ret2 = required and untranslated or ''
if isSet(linked) and linked ~= "no" then
local article = mw.wikibase.getSitelink(id) or ("d:Special:EntityPage/" .. id)
return "[[" .. article .. "|" .. (label or id) .. "]]" .. label_icon, ret2
else
return (label or id) .. label_icon, ret2
end
end
-- Utilities -----------------------------
-- See also module ../debug.
-- Copied from Module:Wikibase
function p.getSiteLink(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local id = getEntityId(args, pargs, 1)
if id == nil then return end
return mw.wikibase.getSitelink(id, mw.text.trim(args[2] or ''))
end
-- Helper function for the default language code used
function p.lang(frame)
local lang = frame and frame.args[1] -- nil via require
return findLang(lang)[1]
end
-- Number of statements
function p.numStatements(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local id = getEntityId(args, pargs)
if id == nil then return 0 end
local prop = mw.text.trim(args[1] or '')
local num = {}
if not isSet(prop) then
local largs = {}
for k, v in pairs(pargs) do
largs[k] = v
end
for k, v in pairs(args) do
largs[k] = v
end
largs.query = 'num'
_, num = p.claim(largs)
return num
elseif args[2] then -- qualifier
local qual = mw.text.trim(args[2])
local values = p.claim{item=id, property=prop, qualifier=qual, formatting='raw', separator='/·/'}
if values then
num = mw.text.split(values, '/·/')
end
else
num = mw.wikibase.getBestStatements(id, prop)
end
return #num
end
-- Returns true if property datavalue is found excluding novalue/somevalue
function p.validProperty(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local item = getEntityId(args, pargs)
if item == nil then return end
local property = mw.text.trim(args[1])
local prop_data = getSnak(mw.wikibase.getBestStatements(item, property), {1, "mainsnak", "datavalue"})
return prop_data and true or nil
end
function p.editAtWikidata(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local value = isSet(args[1])
if value then return end
local param = {}
param.id = getEntityId(args, pargs)
param.property = args.property
param.lang = findLang(args.lang)
param.editicon, _ = setIcons(args.editicon)
return addEditIcon(param)
end
function p.formatNum(frame)
local num = tonumber(mw.text.trim(frame.args[1]))
local lang = findLang(mw.text.trim(frame.args[2]))
return mw.language.new(lang[1]):formatNum(num)
end
return p
1zfn0twj3cx3auqh4r0zks7fg8aux8g
4157202
4157201
2026-10-23T21:41:43Z
Frodlekis
762
Frodlekis flyttade sidan [[Modul:wikidata]] till [[Modul:Wikidata]] utan att lämna en omdirigering
4157201
Scribunto
text/plain
-- Svensk port av den katalanska Modul:Wikidata, version 20220818.
local p = {}
-- Initiering av variabler --------------------
local i18n = { -- internationalisation at [[Module:Wikidata/i18n]]
["errors"] = {
["property-not-found"] = "Egenskapen hittades inte.",
["qualifier-not-found"] = "Kvalificeraren hittades inte.",
},
["datetime"] = {
-- $1 is a placeholder for the actual number
["beforenow"] = "$1 f.Kr.", -- how to format negative numbers for precisions 0 to 5
["afternow"] = "$1 e.Kr.", -- how to format positive numbers for precisions 0 to 5
["bc"] = "$1 f.Kr.", -- how print negative years
["ad"] = "$1 e.Kr.", -- how print 1st century AD dates
[0] = "$1 miljard år", -- precision: billion years
[1] = "$100 miljoner år", -- precision: hundred million years
[2] = "$10 miljoner år", -- precision: ten million years
[3] = "$1 miljon år", -- precision: million years
[4] = "$100 000 år", -- precision: hundred thousand years; thousand separators added afterwards
[5] = "$10 000 år", -- precision: ten thousand years; thousand separators added afterwards
[6] = "$1 årtusende", -- precision: millennium
[7] = "$1 århundrade", -- precision: century
[8] = "$1-talet", -- precision: decade
-- the following use the format of #time parser function
[9] = "Y", -- precision: year,
[10] = "F Y", -- precision: month
[11] = "j F Y", -- precision: day
["hms"] = {["hours"] = "h", ["minutes"] = "m", ["seconds"] = "s"}, -- duration: xh xm xs
},
["years-old"] = {"år", "år"}, -- year(s) old, as in {{PLURAL:$1|singular|plural}}
-- two values for most languages, up to six values for some languages
-- see documentation of PLURAL magic word in your language, examples:
-- ["years-old"] = {"singular", "paucal", "plural"} in Russian and other Slavic languages
-- ["years-old"] = {"zero", "one", "two", "few 3-10", "many 11-99", "other 100-102"} in Arabic
["cite"] = { -- cite parameters
["title"] = "title",
["author"] = "author",
["date"] = "date",
["pages"] = "pages",
["language"] = "language",
-- cite web parameters
["url"] = "url",
["website"] = "website",
["access-date"] = "access-date",
["archive-url"] = "archive-url",
["archive-date"] = "archive-date",
["publisher"] = "publisher",
["quote"] = "quote",
-- cite journal parameters
["work"] = "work",
["issue"] = "issue",
["issn"] = "issn",
["doi"] = "doi"
},
-- svenska Wiktionary-inställningar
["addpencil"] = false, -- lägger till en redigeringslänk till Wikidata, planned to overwrite by Wikidata Bridge
["categorylabels"] = "", -- tomt om ingen lokal spårningskategori används
["categoryprop"] = "", -- tomt om ingen lokal spårningskategori används
["categoryref"] = "", -- tomt om ingen lokal spårningskategori används
["addfallback"] = {}, -- additional fallback language codes
["suppressids"] = {}, -- list of Qid values to suppress
["qidlabels"] = true -- show labels as Qid if no fallback translation is available
}
local cases = {} -- functions for local grammatical cases defined at [[Module:Wikidata/i18n]]
local required = ... -- variadic arguments from require function
local wiki =
{
langcode = mw.language.getContentLanguage().code,
module_title = required or mw.getCurrentFrame():getTitle()
}
local untranslated -- used in infobox modules: nil or true
local _ -- variable for unused returned values, avoiding globals
-- Modulens lokala funktioner --------------------------------------------
-- Credit to http://stackoverflow.com/a/1283608/2644759, cc-by-sa 3.0
local function tableMerge(t1, t2)
for k, v in pairs(t2) do
if type(v) == "table" then
if type(t1[k] or false) == "table" then
tableMerge(t1[k] or {}, t2[k] or {})
else
t1[k] = v
end
else
t1[k] = v
end
end
return t1
end
local function loadI18n(lang)
local exist, res = pcall(require, wiki.module_title .. "/i18n")
if exist and next(res) ~= nil then
tableMerge(i18n, res.i18n)
cases = res.cases
end
if lang ~= wiki.langcode then
exist, res = pcall(require, wiki.module_title .. "/i18n/" .. lang)
if exist and next(res) ~= nil then
tableMerge(i18n, res.i18n)
tableMerge(cases, res.cases)
end
end
i18n.suppress = {}
for _, id in ipairs(i18n.suppressids) do
i18n.suppress[id] = true
end
end
-- Table of language codes: requested or default and its fallbacks
local function findLang(langcode)
if mw.language.isKnownLanguageTag(langcode or '') == false then
local cframe = mw.getCurrentFrame()
local pframe = cframe:getParent()
langcode = pframe and pframe.args.lang
if mw.language.isKnownLanguageTag(langcode or '') == false then
if not mw.title.getCurrentTitle().isContentPage then
langcode = cframe:preprocess('{{int:lang}}')
end
if mw.language.isKnownLanguageTag(langcode or '') == false then
langcode = wiki.langcode
end
end
end
loadI18n(langcode)
local languages = mw.language.getFallbacksFor(langcode)
table.insert(languages, 1, langcode)
if langcode == wiki.langcode then
for _, l in ipairs(i18n.addfallback) do
table.insert(languages, l)
end
end
return languages
end
-- Argument is 'set' when it exists (not nil) or when it is not an empty string.
local function isSet(var)
return not (var == nil or (type(var) == 'string' and mw.text.trim(var) == ''))
end
-- Set local case to a label
local function case(localcase, label, ...)
if not isSet(label) then return label end
if type(localcase) == "function" then
return localcase(label)
elseif localcase == "smallcaps" then
return '<span style="font-variant: small-caps;">' .. label .. '</span>'
elseif cases[localcase] then
return cases[localcase](label, ...)
end
return label
end
-- get safely a serialized snak
local function getSnak(statement, snaks)
local ret = statement
for i, v in ipairs(snaks) do
if not ret then return end
ret = ret[v]
end
return ret
end
-- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages
local function getLabelByLangs(id, languages)
local label
local lang
for _, l in ipairs(languages) do
if l == wiki.langcode then
-- using getLabelWithLang when possible instead of getLabelByLang
label, l = mw.wikibase.getLabelWithLang(id)
else
label = mw.wikibase.getLabelByLang(id, l)
end
if label then
lang = l
break
end
end
return label, lang
end
-- getBestStatements if bestrank=true, else getAllStatements with no deprecated
local function getStatements(entityId, property, bestrank)
local claims = {}
if not (entityId and mw.ustring.match(property, "^P%d+$")) then return claims end
if bestrank then
claims = mw.wikibase.getBestStatements(entityId, property)
else
local allclaims = mw.wikibase.getAllStatements(entityId, property)
for _, c in ipairs(allclaims) do
if c.rank ~= "deprecated" then
table.insert(claims, c)
end
end
end
return claims
end
-- Is gender femenine? true or false
local function feminineGender(id)
local claims = mw.wikibase.getBestStatements(id or mw.wikibase.getEntityIdForCurrentPage(),'P21')
local gender_id = getSnak(claims, {1, "mainsnak", "datavalue", "value", "id"})
if gender_id == "Q6581072" or gender_id == "Q1052281" or gender_id == "Q43445" then -- female, transgender female, female organism
return true
end
return false
end
-- Fetch female form of label
local function feminineForm(id, lang)
local feminine_claims = getStatements(id, 'P2521')
for _, feminine_claim in ipairs(feminine_claims) do
if getSnak(feminine_claim, {'mainsnak', 'datavalue', 'value', 'language'}) == lang then
return feminine_claim.mainsnak.datavalue.value.text
end
end
end
-- Add an icon for no label in requested language
local function addLabelIcon(label_id, lang, uselang, icon)
local ret_lang, ret_icon = '', ''
if icon then
if lang and lang ~= uselang then
ret_lang = " <sup>(" .. lang .. ")</sup>"
end
if label_id and (lang == nil or lang ~= uselang) then
local namespace = ''
if string.sub(label_id, 1, 1) == 'P' then
namespace = 'Property:'
end
ret_icon = " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|"
.. mw.message.new('Translate-taction-translate'):inLanguage(uselang):plain()
.. "|link=https://www.wikidata.org/wiki/" .. namespace .. label_id .. "?uselang=" .. uselang .. "]]"
untranslated = true
end
if isSet(i18n.categorylabels) and lang ~= uselang and uselang == wiki.langcode then
ret_icon = ret_icon .. '[[' .. i18n.categorylabels .. (lang and ']]' or '/Q]]')
end
end
return ret_lang .. ret_icon
end
-- editicon values: true/false (no=false), right, void defaults to i18n.addpencil
-- labelicon only by parameter
local function setIcons(arg, parg)
local val = arg == nil and parg or arg
local edit_icon, label_icon
if not isSet(val) then
edit_icon, label_icon = i18n.addpencil, true
elseif val == false or val == "false" or val == "no" then
edit_icon, label_icon = false, false
else
edit_icon, label_icon = val, true
end
return edit_icon, label_icon
end
-- Add an icon for editing a statement with requirements for future Wikidata Bridge
local function addEditIcon(parameters)
local ret = ''
if parameters.editicon and parameters.id and parameters.property then
local bridge_flow = parameters.editbridge and ' data-bridge-edit-flow="single-best-value"' or ''
local icon_style = parameters.editicon == "right" and ' style="float: right;"' or ''
ret = ' <span class="penicon"' .. bridge_flow .. icon_style .. '>'
.. "[[File:Arbcom ru editing.svg|10px|baseline|"
.. string.gsub(mw.message.new('Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button'):inLanguage(parameters.lang[1]):plain(), '{{WBREPONAME}}', 'Wikidata')
.. "|link=https://www.wikidata.org/wiki/" .. parameters.id .. "?uselang=" .. parameters.lang[1] .. "#" .. parameters.property .. "]]"
.. "</span>"
if isSet(i18n.categoryprop) then
ret = ret .. "[[" .. string.gsub(i18n.categoryprop, '$1', parameters.property) .. "]]"
end
end
return ret
end
-- add edit icon to the last element of a table
local function addEditIconTable(thetable, parameters)
if #thetable == 0 or parameters.editicon == false then
return thetable
end
local last_element = thetable[#thetable]
local the_icon = addEditIcon(parameters)
-- add it before last html closing tags
local tags = ''
local rev_element = string.reverse(last_element)
for tag in string.gmatch(rev_element, '(>%l+/<)') do
if string.match(rev_element, '^' .. tags .. tag) then
tags = tags .. tag
else
break
end
end
local last_tags = string.reverse(tags)
local offset = string.find(last_element, last_tags .. '$')
if offset then
thetable[#thetable] = string.sub(last_element, 1, offset - 1) .. the_icon .. last_tags
else
thetable[#thetable] = last_element .. the_icon
end
return thetable
end
-- Escape Lua captures
local function captureEscapes(text)
return mw.ustring.gsub(text, "(%%%d)", "%%%1")
end
-- expandTemplate or callParserFunction
local function expandBraces(text, formatting)
if text == nil or formatting == nil then return text end
-- only expand braces if provided in argument, not included in value as in Q1164668
if mw.ustring.find(formatting, '{{', 1, true) == nil then return text end
if type(text) ~= "string" then
text = tostring(text)
end
for braces in mw.ustring.gmatch(text, "{{(.-)}}") do
local parts = mw.text.split(braces, "|")
local title_part = parts[1]
local parameters = {}
for i = 2, #parts do
local subparts = mw.ustring.find(parts[i], "=")
if subparts then
local param_name = mw.ustring.sub(parts[i], 1, subparts - 1)
local param_value = mw.ustring.sub(parts[i], subparts + 1, -1)
-- reconstruct broken links by parts
if i < #parts and mw.ustring.find(param_value, "[[", 1, true) and not mw.ustring.find(param_value, "]]", 1, true) then
parameters[param_name] = param_value
local part_next = i + 1
while parts[part_next] and mw.ustring.find(parts[part_next], "]]", 1, true) do
parameters[param_name] = parameters[param_name] .. "|" .. parts[part_next]
part_next = part_next + 1
end
else
parameters[param_name] = param_value
end
elseif not mw.ustring.find(parts[i], "]]", 1, true) then
table.insert(parameters, parts[i])
end
end
local braces_expanded
if mw.ustring.find(title_part, ":")
and mw.text.split(title_part, ":")[1] ~= mw.site.namespaces[10].name -- not a prefix Template:
then
braces_expanded = mw.getCurrentFrame():callParserFunction{name=title_part, args=parameters}
else
braces_expanded = mw.getCurrentFrame():expandTemplate{title=title_part, args=parameters}
end
braces = mw.ustring.gsub(braces, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") -- escape magic characters
braces_expanded = captureEscapes(braces_expanded)
text = mw.ustring.gsub(text, "{{" .. braces .. "}}", braces_expanded)
end
return text
end
-- format data type math
local function printDatatypeMath(data)
return mw.getCurrentFrame():callParserFunction('#tag:math', data)
end
-- format data type musical-notation
local function printDatatypeMusical(data, formatting)
local attr = {}
if formatting == 'sound' then
attr.sound = 1
end
return mw.getCurrentFrame():extensionTag('score', data, attr)
end
-- format data type string
local function printDatatypeString(data, parameters)
if mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting = a pattern
return expandBraces(mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = data}), parameters.formatting)
elseif parameters.case then
return case(parameters.case, data, parameters.lang[1], feminineGender(parameters.id))
end
local data_number = string.match(data, "^%d+")
if data_number then -- sort key by initial number and remaining string
local sortkey = string.format("%019d", data_number * 1000)
return data, sortkey .. string.sub(data, #data_number + 1)
end
return data
end
-- format data type tabular-data
local function printDatatypeTabular(data, parameters)
local icon
if parameters.formatting == 'raw' then
icon = "no-icon"
data = string.gsub(data, '^Data:', '') -- remove prefix, i.e. see Module:Tabular data
end
return printDatatypeString(data, parameters), icon
end
-- format data type url
local function printDatatypeUrl(data, parameters)
if parameters.formatting == 'weblink' then
local label_parts = mw.text.split(string.gsub(data, '/$', ''), '/')
local label = string.gsub(label_parts[3], '^www%.', '')
if #label_parts > 3 then
label = label .. '…'
end
return '[' .. data .. ' ' .. label .. ']'
end
return printDatatypeString(data, parameters)
end
-- format data type external-id
local function printDatatypeExternal(data, parameters)
if parameters.formatting == 'externalid' then
local p_stat = mw.wikibase.getBestStatements(parameters.property, 'P1630') -- formatter URL
local p_link_pattern = getSnak(p_stat, {1, "mainsnak", "datavalue", "value"})
if p_link_pattern then
local p_link = mw.ustring.gsub(p_link_pattern, '$1', {['$1'] = data})
return '[' .. p_link .. ' ' .. data .. ']'
end
end
return printDatatypeString(data, parameters)
end
-- format data type commonsMedia and geo-shape
local function printDatatypeMedia(data, parameters)
local icon
if not string.find((parameters.formatting or ''), '$1', 1, true) then
icon = "no-icon"
if not string.find(data, '^Data:') then
data = mw.uri.encode(data, 'PATH') -- encode special characters in filename
end
end
return printDatatypeString(data, parameters), icon
end
-- format data type globe-coordinate
local function printDatatypeCoordinate(data, formatting)
local function globes(globe_id)
local globes = {['Q3134']='callisto',['Q596']='ceres',['Q15040']='dione',['Q2']='earth',['Q3303']='enceladus',
['Q3143']='europa',['Q17975']='phoebe',['Q3169']='ganymede',['Q3123']='io',['Q17958']='iapetus',
['Q308']='mercury',['Q15034']='mimas',['Q405']='moon',['Q15050']='rhea',['Q15047']='tethys',
['Q111']='mars',['Q2565']='titan',['Q3359']='triton',['Q313']='venus',['Q3030']='vesta'}
return globes[globe_id]
end
local function roundPrecision(num, prec)
if prec == nil or prec <= 0 then return num end
local sig = 10^math.floor(math.log10(prec)+.5) -- significant figure from sexagesimal precision: 0.00123 -> 0.001
return math.floor(num / sig + 0.5) * sig
end
local precision = data.precision
local latitude = roundPrecision(data.latitude, precision)
local longitude = roundPrecision(data.longitude, precision)
if formatting and string.find(formatting, '$lat', 1, true) and string.find(formatting, '$lon', 1, true) then
local ret = mw.ustring.gsub(formatting, '$l[ao][tn]', {['$lat'] = latitude, ['$lon'] = longitude})
if string.find(formatting, '$globe', 1, true) then
local myglobe = 'earth'
if isSet(data.globe) then
local globenum = mw.text.split(data.globe, 'entity/')[2] -- http://www.wikidata.org/wiki/Q2
myglobe = globes(globenum) or 'earth'
end
ret = mw.ustring.gsub(ret, '$globe', myglobe)
end
return expandBraces(ret, formatting)
elseif formatting == 'latitude' then
return latitude, "no-icon"
elseif formatting == 'longitude' then
return longitude, "no-icon"
elseif formatting == 'dimension' then
return data.dimension, "no-icon"
else --default formatting='globe'
if isSet(data.globe) == false or data.globe == 'http://www.wikidata.org/entity/Q2' then
return 'earth', "no-icon"
else
local globenum = mw.text.split(data.globe, 'entity/')[2]
return globes(globenum) or globenum, "no-icon"
end
end
end
-- Local functions for data value quantity
local function unitSymbol(id, lang) -- get unit symbol or code
local unit_symbol = ''
if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then
unit_symbol = require(wiki.module_title .. "/Units").getUnit(0, '', id, true)
end
if unit_symbol == '' then
-- fetch it
local claims = mw.wikibase.getBestStatements(id, 'P5061')
if #claims > 0 then
local langclaims = {}
table.insert(lang, 'mul') -- multilingual as last try
for _, snak in ipairs(claims) do
local snak_language = getSnak(snak, {"mainsnak", "datavalue", "value", "language"})
if snak_language and not langclaims[snak_language] then -- just the first one by language
langclaims[snak_language] = snak.mainsnak.datavalue.value.text
end
end
for _, l in ipairs(lang) do
if langclaims[l] then
return langclaims[l]
end
end
end
end
return unit_symbol
end
local function getUnit(amount, id, parameters) -- get unit symbol or name
local suffix = ''
if string.sub(parameters.formatting or '', 1, 8) == "unitcode" then
-- get unit symbol
local unit_symbol = unitSymbol(id, parameters.lang)
if isSet(unit_symbol) then
if string.sub(parameters.formatting or '', -6) == "linked" then
suffix = "[[" .. (mw.wikibase.getSitelink(id) or "d:" .. id) .. "|" .. unit_symbol .. "]]"
else
suffix = unit_symbol
end
end
end
if suffix == '' then -- formatting=unit, or formatting=unitcode not found
-- get unit label
local unit_label, lang = getLabelByLangs(id, parameters.lang)
if lang == wiki.langcode and pcall(require, wiki.module_title .. "/Units") then
suffix = require(wiki.module_title .. "/Units").getUnit(amount, unit_label, id, false)
if string.sub(parameters.formatting or '', -6) == "linked" then
suffix = "[[" .. (mw.wikibase.getSitelink(id) or "d:" .. id) .. "|" .. suffix .. "]]"
end
else
suffix = (unit_label or id) .. addLabelIcon(id, lang, parameters.lang[1], parameters.labelicon)
end
end
if suffix ~= '' then
suffix = ' ' .. suffix
end
return suffix
end
local function roundDefPrecision(in_num, factor)
-- rounds out_num with significant figures of in_num (default precision)
local out_num = in_num * factor
if factor/60 == math.floor(factor/60) or out_num == 0 then -- sexagesimal integer or avoiding NaN
return out_num
end
-- first, count digits after decimal mark, handling cases like '12.345e6'
local exponent, prec
local integer, dot, decimals, expstr = in_num: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 = -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
-- significant figures
local in_bracket = 10^-prec -- -1 -> 10, 5 -> 0.00001
local out_bracket = in_bracket * out_num / in_num
out_bracket = 10^math.floor(math.log10(out_bracket)+.5) -- 1230 -> 1000, 0.00123 -> 0.001
-- round it (credit to Luc Bloom from http://lua-users.org/wiki/SimpleRound)
return math.floor(out_num/out_bracket + (out_num >=0 and 1 or -1) * 0.5) * out_bracket
end
-- format data type quantity
local function printDatatypeQuantity(data, parameters)
local amount = data.amount
amount = mw.ustring.gsub(amount, "%+", "")
local suffix = ""
local conv_amount, conv_suffix
if string.sub(parameters.formatting or '', 1, 4) == "unit" or string.sub(parameters.formatting or '', 1, 8) == "duration" or parameters.convert then
local unit_id = data.unit
unit_id = mw.ustring.sub(unit_id, mw.ustring.find(unit_id, "Q"), -1)
if string.sub(unit_id, 1, 1) == "Q" then
suffix = getUnit(amount, unit_id, parameters)
local convert_to
if parameters.convert == "default" or parameters.convert == "default2" then
local exist, units = pcall(require, wiki.module_title .. "/Units")
if exist and units.convert_default and next(units.convert_default) ~= nil then
convert_to = units.convert_default[unit_id]
end
elseif string.sub(parameters.convert or '', 1, 1) == "Q" then
convert_to = parameters.convert
elseif string.sub(parameters.formatting or '', 1, 8) == "duration" then
convert_to = 'Q11574' -- seconds
end
if convert_to and convert_to ~= unit_id then
-- convert units
local conv_temp = { -- formulae for temperatures ºC, ºF, ªK: [from] = {[to] = 'formula'}
['Q25267'] = {['Q42289'] = '$1*1.8+32', ['Q11597'] = '$1+273.15'},
['Q42289'] = {['Q25267'] = '($1-32)/1.8', ['Q11597'] = '($1+459.67)*5/9'},
['Q11597'] = {['Q25267'] = '$1-273.15', ['Q42289'] = '($1-273.15)*1.8000+32.00'}
}
if conv_temp[unit_id] and conv_temp[unit_id][convert_to] then
local amount_f = mw.getCurrentFrame():callParserFunction('#expr', mw.ustring.gsub(conv_temp[unit_id][convert_to], "$1", amount))
conv_amount = math.floor(tonumber(amount_f) + 0.5)
else
local conversions = getStatements(unit_id, 'P2442') -- conversion to standard unit
table.insert(conversions, mw.wikibase.getBestStatements(unit_id, 'P2370')[1]) -- conversion to SI unit
for _, conv in ipairs(conversions) do
if conv.mainsnak.snaktype == 'value' then -- no somevalue nor novalue
if conv.mainsnak.datavalue.value.unit == "http://www.wikidata.org/entity/" .. convert_to then
conv_amount = roundDefPrecision(amount, tonumber(conv.mainsnak.datavalue.value.amount))
break
end
end
end
end
if conv_amount then
conv_suffix = getUnit(conv_amount, convert_to, parameters)
end
elseif parameters.convert == 'M' and tonumber(amount) > 10^8 then
conv_amount = math.floor(amount/10^6 + 0.5)
conv_suffix = ' M' .. string.sub(suffix, 2)
end
if conv_amount and parameters.formatting == 'raw' then
amount = conv_amount
suffix = ""
conv_amount = nil
end
end
end
local lang_obj = mw.language.new(parameters.lang[1])
local sortkey = string.format("%019d", tonumber(amount) * 1000)
if string.sub(parameters.formatting or '', 1, 8) == "duration" then
local sec = tonumber(conv_amount or amount)
if parameters.formatting == 'duration' then
return lang_obj:formatDuration(sec)
elseif parameters.formatting == 'durationm:s' then
local mm = math.floor(sec / 60)
local ss = sec - (mm * 60)
return string.format("%02d:%02d", mm, ss)
else -- durationhms or durationh:m:s
local intervals = {"hours", "minutes", "seconds"}
local sec2table = lang_obj:getDurationIntervals(sec, intervals)
sec2table["seconds"] = (sec2table["seconds"] or 0) + tonumber("." .. (tostring(sec):match("%.(%d+)") or "0")) -- add decimals
local duration = ''
for i, v in ipairs(intervals) do
if parameters.formatting == 'durationh:m:s' then
if i == 1 and sec2table[v] then
duration = duration .. sec2table[v] .. ":"
elseif i == 2 then
duration = duration .. string.format("%02d", sec2table[v] or 0) .. ":"
elseif i == 3 then
local sec_str = tostring(lang_obj:formatNum(sec2table[v] or 0))
duration = duration .. (sec2table[v] < 10 and "0" or "") .. sec_str
end
elseif sec2table[v] then
duration = duration .. lang_obj:formatNum(sec2table[v]) .. i18n.datetime.hms[v] .. (i < 3 and " " or "")
end
end
return duration
end
end
if parameters.case then
amount = case(parameters.case, amount, parameters.lang[1], feminineGender(parameters.id))
elseif parameters.formatting ~= 'raw' then
if parameters.numformat then
amount = lang_obj:formatNum(tonumber(string.format(parameters.numformat, amount)))
else
amount = lang_obj:formatNum(tonumber(amount))
end
end
if conv_amount then
local conv_sortkey = string.format("%019d", conv_amount * 1000)
conv_amount = lang_obj:formatNum(conv_amount)
if parameters.convert == 'default2' then
return conv_amount .. conv_suffix .. ' (' .. amount .. suffix .. ')', conv_sortkey
else
return conv_amount .. conv_suffix, conv_sortkey
end
elseif mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting with pattern
amount = mw.ustring.gsub(parameters.formatting, '$1', {['$1'] = amount})
end
return amount .. suffix, sortkey
end
-- format data type time
local function printDatatypeTime(data, parameters)
-- Dates and times are stored in ISO 8601 format
local timestamp = data.time
local post_format
local calendar_add = ""
local precision = data.precision or 11
if string.sub(timestamp, 1, 1) == '-' then
post_format = i18n.datetime["bc"]
elseif string.sub(timestamp, 2, 3) == '00' then
post_format = i18n.datetime["ad"]
elseif precision > 8 then
-- calendar model
local calendar_model = {["Q12138"] = "gregorian", ["Q1985727"] = "gregorian", ["Q11184"] = "julian", ["Q1985786"] = "julian"}
local calendar_id = mw.text.split(data.calendarmodel, 'entity/')[2]
if (timestamp < "+1582-10-15T00:00:00Z" and calendar_model[calendar_id] == "gregorian")
or (timestamp > "+1582-10-04T00:00:00Z" and calendar_model[calendar_id] == "julian")
then
calendar_add = " <sup>(" .. mw.message.new('Wikibase-time-calendar-' .. calendar_model[calendar_id]):inLanguage(parameters.lang[1]):plain() .. ")</sup>"
end
end
local function formatTime(form, stamp)
local pattern
if type(form) == "function" then
pattern = form(stamp)
else
pattern = form
end
stamp = tostring(stamp)
if mw.ustring.find(pattern, "$1") then
return mw.ustring.gsub(pattern, "$1", stamp)
elseif string.sub(stamp, 1, 1) == '-' then -- formatDate() only supports years from 0
stamp = '+' .. string.sub(stamp, 2)
elseif string.sub(stamp, 1, 1) ~= '+' then -- not a valid timestamp, it is a number
stamp = string.format("%04d", stamp)
end
local ret = mw.language.new(parameters.lang[1]):formatDate(pattern, stamp)
ret = string.gsub(ret, "^(%[?%[?)0+", "%1") -- suppress leading zeros
ret = string.gsub(ret, "( %[?%[?)0+", "%1")
return ret
end
local function postFormat(t)
if post_format and mw.ustring.find(post_format, "$1") then
return mw.ustring.gsub(post_format, "$1", t)
end
return t
end
local intyear = tonumber(string.match(timestamp, "[+-](%d+)"))
local ret = ""
if precision <= 5 then -- precision is 10000 years or more
local factor = 10 ^ ((5 - precision) + 4)
local y2 = math.ceil(math.abs(intyear) / factor)
local relative = formatTime(i18n.datetime[precision], y2)
if post_format == i18n.datetime["bc"] then
ret = mw.ustring.gsub(i18n.datetime.beforenow, "$1", relative)
else
ret = mw.ustring.gsub(i18n.datetime.afternow, "$1", relative)
end
local ret_number = string.match(ret, "%d+")
if ret_number ~= nil then
ret = mw.ustring.gsub(ret, ret_number, mw.language.new(parameters.lang[1]):formatNum(tonumber(ret_number)))
end
elseif precision == 6 or precision == 7 then -- millennia or centuries
local card = math.floor((intyear - 1) / 10^(9 - precision)) + 1
ret = formatTime(i18n.datetime[precision], card)
ret = postFormat(ret)
elseif precision == 8 then -- decades
local card = math.floor(math.abs(intyear) / 10) * 10
ret = formatTime(i18n.datetime[8], card)
ret = postFormat(ret)
elseif intyear > 9999 then -- not a valid timestamp
return
elseif precision == 9 or parameters.formatting == 'Y' then -- precision is year
ret = formatTime(i18n.datetime[9], intyear)
ret = postFormat(ret) .. calendar_add
elseif precision == 10 then -- month
ret = formatTime(i18n.datetime[10], timestamp .. " + 1 day") -- formatDate yyyy-mm-00 returns the previous month
ret = postFormat(ret) .. calendar_add
else -- precision 11, day
ret = formatTime(parameters.formatting or i18n.datetime[11], timestamp)
ret = postFormat(ret) .. calendar_add
end
return ret, timestamp
end
-- format data value wikibase-entityid with data types wikibase-item or wikibase-property
local function printDatatypeEntity(data, parameters)
local entity_id = data['id']
if parameters.formatting == 'raw' then
return entity_id, entity_id
end
local entity_page = 'Special:EntityPage/' .. entity_id
local label, lang = getLabelByLangs(entity_id, parameters.lang)
local sitelink = mw.wikibase.getSitelink(entity_id)
local parameter = parameters.formatting
local labelcase = label or sitelink
if parameters.gender == 'feminineform' then
labelcase = feminineForm(entity_id, lang) or labelcase
end
if parameters.case ~= 'gender' then
labelcase = case(parameters.case, labelcase, lang, parameters.lang[1], entity_id, parameters.id)
end
if labelcase == nil and i18n.qidlabels == false then
return
end
local ret1, ret2
if parameter == 'label' then
ret1 = labelcase or entity_id
ret2 = labelcase or entity_id
elseif parameter == 'sitelink' then
ret1 = (sitelink or 'd:' .. entity_page)
ret2 = sitelink or entity_id
elseif mw.ustring.find((parameter or ''), '$1', 1, true) then -- formatting = a pattern
ret1 = mw.ustring.gsub(parameter, '$1', labelcase or entity_id)
ret1 = expandBraces(ret1, parameter)
ret2 = labelcase or entity_id
else
if parameter == "ucfirst" or parameter == "ucinternallink" then
if labelcase and lang then
labelcase = mw.language.new(lang):ucfirst(labelcase)
end
-- only first of a list, reset formatting for next ones
if parameter == "ucinterlanllink" then
parameters.formatting = 'internallink'
else
parameters.formatting = nil -- default format
end
end
if sitelink then
ret1 = '[[' .. sitelink .. '|' .. labelcase .. ']]'
ret2 = labelcase
elseif label and string.match(parameter or '', 'internallink$') and not mw.wikibase.getEntityIdForTitle(label) then
ret1 = '[[' .. label .. '|' .. labelcase .. ']]'
ret2 = labelcase
else
ret1 = '[[d:' .. entity_page .. '|<span style="color:#5f9cbb;">' .. (labelcase or entity_id) .. '</span>]]'
ret2 = labelcase or entity_id
end
end
return ret1 .. addLabelIcon(entity_id, lang, parameters.lang[1], parameters.labelicon), ret2
end
-- format data type wikibase-lexeme
local function printDatatypeLexeme(data, parameters)
local entity_id = data['id']
if parameters.formatting == 'raw' then
return entity_id, entity_id
end
local lemmas = mw.wikibase.getEntity(entity_id):getLemmas()
if parameters.list == 'lang' and lemmas[1][2] ~= parameters.lang[1] then
return
end
local ret = '[[d:Special:EntityPage/' .. entity_id .. '|<span style="color:#5f9cbb;">' .. lemmas[1][1] .. '</span>]]'
if parameters.list ~= 'lang' or (parameters.list == 'lang' and lemmas[1][2] ~= wiki.langcode) then
ret = ret .. " <sup>(" .. lemmas[1][2] .. ")</sup>"
end
return ret, entity_id
end
-- format data type monolingualtext
local function printDatatypeMonolingual(data, parameters)
-- data fields: language [string], text [string]
if parameters.list == "lang" and data["language"] ~= parameters.lang[1] then
return
elseif parameters.list == "notlang" and data["language"] == parameters.lang[1] then
return
elseif parameters.formatting == "language" or parameters.formatting == "text" then
return data[parameters.formatting]
end
local result = data["text"]
if data["language"] ~= wiki.langcode then
result = mw.ustring.gsub('<span lang="$1">$2</span>', '$[12]', {["$1"]=data["language"], ["$2"]=data["text"]})
end
if mw.ustring.find((parameters.formatting or ''), '$', 1, true) then
-- output format defined with $text, $language
result = mw.ustring.gsub(parameters.formatting, '$text', result)
result = mw.ustring.gsub(result, '$language', data["language"])
end
return result
end
local function getSnakValue(snak, parameters)
parameters.editbridge = false
if snak.snaktype == 'value' then -- see Special:ListDatatypes
-- data value string
if snak.datatype == "string" then
parameters.editbridge = true -- Wikidata Bridge currently only string values
return printDatatypeString(snak.datavalue.value, parameters)
elseif snak.datatype == "commonsMedia" or snak.datatype == "geo-shape" then
return printDatatypeMedia(snak.datavalue.value, parameters)
elseif snak.datatype == "tabular-data" then
return printDatatypeTabular(snak.datavalue.value, parameters)
elseif snak.datatype == "url" then
return printDatatypeUrl(snak.datavalue.value, parameters)
elseif snak.datatype == "external-id" then
return printDatatypeExternal(snak.datavalue.value, parameters)
elseif snak.datatype == 'math' then
return printDatatypeMath(snak.datavalue.value)
elseif snak.datatype == 'musical-notation' then
return printDatatypeMusical(snak.datavalue.value, parameters.formatting)
-- data types other than string value
elseif snak.datatype == 'wikibase-item' or snak.datatype == 'wikibase-property' then
if i18n.suppress[snak.datavalue.value.id] then
return
end
return printDatatypeEntity(snak.datavalue.value, parameters)
elseif snak.datatype == 'wikibase-lexeme' then
return printDatatypeLexeme(snak.datavalue.value, parameters)
elseif snak.datatype == 'monolingualtext' then
return printDatatypeMonolingual(snak.datavalue.value, parameters)
elseif snak.datatype == "globe-coordinate" then
return printDatatypeCoordinate(snak.datavalue.value, parameters.formatting)
elseif snak.datatype == "quantity" then
return printDatatypeQuantity(snak.datavalue.value, parameters)
elseif snak.datatype == "time" then
return printDatatypeTime(snak.datavalue.value, parameters)
end
elseif snak.snaktype == 'novalue' then
if parameters.formatting == 'raw' or parameters.shownovalue == false then return end
return mw.message.new('Wikibase-snakview-snaktypeselector-novalue'):inLanguage(parameters.lang[1]):plain()
elseif snak.snaktype == 'somevalue' then
if parameters.formatting == 'raw' then return end
return mw.message.new('Wikibase-snakview-snaktypeselector-somevalue'):inLanguage(parameters.lang[1]):plain()
end
return mw.wikibase.renderSnak(snak)
end
local function printError(key)
return '<span class="error">' .. i18n.errors[key] .. '</span>'
end
local function getQualifierSnak(claim, qualifierId, parameters)
-- a "snak" is Wikidata terminology for a typed key/value pair
-- a claim consists of a main snak holding the main information of this claim,
-- as well as a list of attribute snaks and a list of references snaks
if qualifierId then
-- search the attribute snak with the given qualifier as key
if claim.qualifiers then
local qualifier = claim.qualifiers[qualifierId]
if qualifier then
if qualifier[1].datatype == "monolingualtext" then
-- iterate over monolingualtext qualifiers to get local language
for idx in pairs(qualifier) do
if getSnak(qualifier[idx], {"datavalue", "value", "language"}) == parameters.lang[1] then
return qualifier[idx]
end
end
elseif parameters.list then
return qualifier
else
return qualifier[1]
end
end
end
return nil, printError("qualifier-not-found")
else
-- otherwise return the main snak
return claim.mainsnak
end
end
local function getValueOfClaim(claim, qualifierId, parameters)
local snak, error = getQualifierSnak(claim, qualifierId, parameters)
if not snak then
return nil, nil, error
elseif snak[1] then -- a multi qualifier
local result, sortkey = {}, {}
local maxvals = tonumber(parameters.listmax)
for idx in pairs(snak) do
result[#result + 1], sortkey[#sortkey + 1] = getSnakValue(snak[idx], parameters)
if maxvals and maxvals == #result then break end
end
return mw.text.listToText(result, parameters.qseparator, parameters.qconjunction), sortkey[1]
else -- a property or a qualifier
return getSnakValue(snak, parameters)
end
end
local function getValueOfParentClaim(claim, qualifierId, parameters)
local qids = mw.text.split(qualifierId, '/', true)
local value, sortkey, valueraw = {}, {}, {}
local parent_raw, value_text
if qids[1] == parameters.property then
parent_raw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=parameters.lang})
else
parent_raw, _, _ = getValueOfClaim(claim, qids[1], {["formatting"]="raw", ["lang"]=parameters.lang, ["list"]=true, ["qseparator"]='/', ["qconjunction"]='/'})
end
if string.sub(parent_raw or '', 1, 1) == "Q" then -- protection for 'no value'
local parent_qids = mw.text.split(parent_raw, '/', true)
for idx, p_qid in ipairs(parent_qids) do
local parent_claims = mw.wikibase.getBestStatements(p_qid, qids[2])
if parent_claims[1] then
value[idx], sortkey[idx], _ = getValueOfClaim(parent_claims[1], nil, parameters)
-- raw parent value needed for while/black lists, lang for avoiding an error on types other than entity
valueraw[idx], _, _ = getValueOfClaim(parent_claims[1], nil, {["formatting"]="raw", ["lang"]=parameters.lang})
end
end
end
if value[1] then
value_text = mw.text.listToText(value, parameters.qseparator, parameters.qconjunction)
end
return value_text, sortkey[1], valueraw[1]
end
-- see d:Help:Sources
local function getReferences(claim, parameters)
if not (parameters.references or parameters.onlysourced) then
return '', false
end
local lang = parameters.lang
local maxrefs = tonumber(parameters.references) or 1
local notproperref = {
["P143"] = true, -- imported from
["P3452"] = true, -- inferred from
["P887"] = true, -- based on heuristic
["P4656"] = true -- Wikimedia import URL
}
local result = {}
-- traverse through all references
for ref in pairs(claim.references or {}) do
local refparts
local refs = {}
local validref = true
local ref_id
-- traverse through all parts of the current reference
for snakkey, snakval in pairs(claim.references[ref].snaks or {}) do
for partkey, _ in pairs(claim.references[ref].snaks[snakkey] or {}) do
if notproperref[snakkey] then -- not a proper reference
validref = false
break
end
end
if validref then
for snakidx = 1, #snakval do
if snakidx > 1 then refparts = refparts .. ", " end
if snakval[snakidx].datatype == 'external-id' then
refparts = refparts or '' .. (getSnakValue(snakval[snakidx], {formatting='externalid', property=snakval[snakidx].property, lang=lang}) or '')
else
refparts = refparts or '' .. (getSnakValue(snakval[snakidx], {lang=lang}) or '')
end
end
refs[snakkey] = refparts
refparts = nil
if snakkey == "P248" then -- stated in
ref_id = getSnak(snakval, {1, "datavalue", "value", "id"})
end
end
end
-- fill missing values with parent item
if ref_id then
local function refParent(qid, pid, formatting)
local snak = getSnak(mw.wikibase.getBestStatements(qid, pid), {1, "mainsnak"})
return snak and getSnakValue(snak, {formatting=formatting, lang=lang})
end
refs['P50'] = refs['P50'] or refParent(ref_id, 'P50', 'label') -- author
refs['P407'] = refs['P407'] or refParent(ref_id, 'P407', 'label') -- language of work
refs['P123'] = refs['P123'] or refParent(ref_id, 'P123', 'label') -- publisher
refs['P577'] = refs['P577'] or refParent(ref_id, 'P577') -- date
refs['P1433'] = refs['P1433'] or refParent(ref_id, 'P1433', 'label') -- published in
refs['P304'] = refs['P304'] or refParent(ref_id, 'P304') -- page(s)
refs['P433'] = refs['P433'] or refParent(ref_id, 'P433') -- issue
refs['P236'] = refs['P236'] or refParent(ref_id, 'P236') -- ISSN
refs['P356'] = refs['P356'] or refParent(ref_id, 'P356') -- DOI
end
-- get title of local templates for citing references
local template_web = mw.wikibase.getSitelink('Q5637226') or ""
template_web = mw.text.split(template_web, ":")[2] -- split off namespace from front
local template_journal = mw.wikibase.getSitelink('Q5624899') or ""
template_journal = mw.text.split(template_journal, ":")[2]
local citeParams = {}
if refs['P854'] and (refs['P1476'] or refs['P248']) and template_web then
-- if both "reference URL" and "title" (or "stated in") are present, then use cite web template
citeParams[i18n['cite']['url']] = refs['P854']
if refs['P248'] and refs['P1476'] == nil then
citeParams[i18n['cite']['title']] = refs['P248']:match("^%[%[.-|(.-)%]%]")
else
citeParams[i18n['cite']['title']] = refs['P1476']
citeParams[i18n['cite']['website']] = refs['P248']
end
citeParams[i18n['cite']['author']] = refs['P50']
citeParams[i18n['cite']['language']] = refs['P407']
citeParams[i18n['cite']['publisher']] = refs['P123']
citeParams[i18n['cite']['date']] = refs['P577']
citeParams[i18n['cite']['pages']] = refs['P304']
citeParams[i18n['cite']['access-date']] = refs['P813']
citeParams[i18n['cite']['archive-url']] = refs['P1065']
citeParams[i18n['cite']['archive-date']] = refs['P2960']
citeParams[i18n['cite']['quote']] = refs['P1683']
refparts = mw.getCurrentFrame():expandTemplate{title=template_web, args=citeParams}
elseif refs['P1433'] and (refs['P1476'] or refs['P248']) and template_journal then
-- if both "published in" and "title" (or "stated in") are present, then use cite journal template
citeParams[i18n['cite']['work']] = refs['P1433']
citeParams[i18n['cite']['title']] = refs['P1476'] or refs['P248']
citeParams[i18n['cite']['author']] = refs['P50']
citeParams[i18n['cite']['date']] = refs['P577']
citeParams[i18n['cite']['issue']] = refs['P433']
citeParams[i18n['cite']['pages']] = refs['P304']
citeParams[i18n['cite']['language']] = refs['P407']
citeParams[i18n['cite']['issn']] = refs['P236']
citeParams[i18n['cite']['doi']] = refs['P356']
refparts = mw.getCurrentFrame():expandTemplate{title=template_journal, args=citeParams}
elseif validref then
-- raw ouput
local snaksorder = claim.references[ref]["snaks-order"]
local function indexed(a)
for _, b in ipairs(snaksorder) do
if b == a then return true end
end
return false
end
for k, _ in pairs(refs or {}) do
if not indexed(k) then
table.insert(snaksorder, k)
end
end
local italics = "''"
for _, k in ipairs(snaksorder) do
if refs[k] then
refparts = refparts and refparts .. " " or ""
refparts = refparts .. mw.ustring.gsub(getLabelByLangs(k, lang), "^%l", mw.ustring.upper) .. ": "
refparts = refparts .. italics .. refs[k] .. italics .. "."
italics = ""
end
end
end
if refparts then
local ref_name = claim.references[ref].hash
result[#result + 1] = mw.getCurrentFrame():extensionTag("ref", refparts, {name=ref_name})
if maxrefs and maxrefs == #result then break end
end
end
if #result > 0 then
if parameters.references then
if isSet(i18n.categoryref) then
result[#result + 1] = "[[" ..i18n.categoryref .. "]]"
end
return table.concat(result), true
else
return '', true
end
end
return '', false
end
-- Set whitelist or blacklist values
local function setWhiteOrBlackList(num_qual, args)
local lists = {['whitelist']={}, ['blacklist']={}, ['ignorevalue']={}, ['selectvalue']={}}
for i = 0, num_qual do
for k, _ in pairs(lists) do
if isSet(args[k .. i]) then
lists[k][tostring(i)] = {}
local pattern = 'Q%d+'
if string.sub(args[k .. i], 1, 1) ~= 'Q' then
pattern = '[^%p%s]+'
end
for q in string.gmatch(args[k .. i], pattern) do
lists[k][tostring(i)][q] = true
end
end
end
end
return lists['whitelist'], lists['blacklist'], lists['ignorevalue'], lists['selectvalue']
end
local function tableParameters(args, parameters, column)
local column_params = mw.clone(parameters)
column_params.formatting = args["colformat"..column]; if column_params.formatting == "" then column_params.formatting = nil end
column_params.convert = args["convert" .. column]
if args["case" .. column] then
column_params.case = args["case" .. column]
end
return column_params
end
local function getEntityId(args, pargs, unnamed)
pargs = pargs or {}
local id = args.item or args.from or (unnamed and mw.text.trim(args[1] or '') or nil)
if not isSet(id) then
id = pargs.item or pargs.from or (unnamed and mw.text.trim(pargs[1] or '') or nil)
end
if isSet(id) then
if string.find(id, ":") then -- remove prefix as Property:Pid
id = mw.text.split(id, ":")[2]
end
else
id = mw.wikibase.getEntityIdForCurrentPage()
end
return id
end
local function getArg(value, default, aliases)
if type(value) == 'boolean' then return value
elseif value == "false" or value == "no" then return false
elseif value == "true" or value == "yes" then return true
elseif value and aliases and aliases[value] then return aliases[value]
elseif isSet(value) then return value
elseif default then return default
else return nil
end
end
-- Main function claim ---------------------------------------------
-- on debug console use: =p.claim{item="Q...", property="P...", ...}
function p.claim(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local is_sandbox = isSet(pargs.sandbox)
if not required and is_sandbox then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).claim(frame)
end
--If a value is already set, use it
if isSet(args.value) then
if args.value == 'NONE' then
return
else
return args.value
end
end
-- arguments
local parameters = {}
parameters.id = getEntityId(args, pargs)
if parameters.id == nil then return end
parameters.property = string.upper(args.property or "")
local qualifierId = {}
qualifierId[1] = getArg(string.upper(args.qualifier or args.qualifier1 or ""))
local i = 2
while isSet(args["qualifier" .. i]) do
qualifierId[i] = string.upper(args["qualifier" .. i])
i = i + 1
end
parameters.formatting = getArg(args.formatting)
parameters.convert = getArg(args.convert)
parameters.numformat = getArg(args.numformat)
parameters.case = args.case
parameters.list = getArg(args.list, true, {firstrank='bestrank'})
parameters.listmax = args.listmax
parameters.listrank = getArg(args.listrank)
if type(parameters.list) == "number" then -- backwards compatibility
parameters.listmax = parameters.listmax or parameters.list
parameters.list = true
elseif parameters.list == "bestrank" then
parameters.listrank = parameters.listrank or "bestrank"
parameters.list = true
end
parameters.shownovalue = getArg(args.shownovalue, true)
parameters.separator = getArg(args.separator)
parameters.conjunction = getArg(args.conjunction, parameters.separator)
parameters.qseparator = getArg(args.qseparator, parameters.separator)
parameters.qconjunction = getArg(args.qconjunction, parameters.conjunction)
local sorting_col = args.tablesort
local sorting_up = (args.sorting or "") ~= "-1"
local rowformat = args.rowformat
parameters.references = getArg(args.references, false)
parameters.onlysourced = getArg(args.onlysourced, false)
local showerrors = args.showerrors
local default = args.default
if default then showerrors = nil end
parameters.lang = findLang(args.lang)
if parameters.formatting == "raw" then
parameters.editicon, parameters.labelicon = false, false
else
parameters.editicon, parameters.labelicon = setIcons(args.editicon, pargs.editicon) -- needs loadI18n by findLand
end
-- fetch property
local claims = {}
local bestrank = parameters.listrank == 'bestrank' and parameters.list ~= 'lang'
for p in string.gmatch(parameters.property, 'P%d+') do
claims = getStatements(parameters.id, p, bestrank)
if #claims > 0 then
parameters.property = p
break
end
end
if #claims == 0 then
local ret = showerrors and printError("property-not-found") or default
return ret, args.query == 'num' and 0 or ''
end
-- defaults for table
local preformat, postformat = "", ""
local whitelisted = false
local whitelist, blacklist, ignorevalue, selectvalue = {}, {}, {}, {}
if parameters.formatting == "table" then
parameters.separator = parameters.separator or "<br />"
parameters.conjunction = parameters.conjunction or "<br />"
parameters.qseparator = getArg(args.qseparator, mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain())
parameters.qconjunction = getArg(args.qconjunction, parameters.qseparator)
if not rowformat then
rowformat = "$0 ($1"
i = 2
while qualifierId[i] do
rowformat = rowformat .. ", $" .. i
i = i + 1
end
rowformat = rowformat .. ")"
elseif mw.ustring.find(rowformat, "^[*#]") then
parameters.separator = "</li><li>"
parameters.conjunction = "</li><li>"
if mw.ustring.match(rowformat, "^[*#]") == "*" then
preformat = "<ul><li>"
postformat = "</li></ul>"
else
preformat = "<ol><li>"
postformat = "</li></ol>"
end
rowformat = mw.ustring.gsub(rowformat, "^[*#] ?", "")
end
-- set whitelist and blacklist values
whitelist, blacklist, ignorevalue, selectvalue = setWhiteOrBlackList(#qualifierId, args)
local next = next
if next(whitelist) ~= nil then whitelisted = true end
end
-- set feminine case if gender is requested
local itemgender = args.itemgender
local idgender
if itemgender then
if string.match(itemgender, "^P%d+$") then
local snak_id = getSnak(mw.wikibase.getBestStatements(parameters.id, itemgender), {1, "mainsnak", "datavalue", "value", "id"})
if snak_id then
idgender = snak_id
end
elseif string.match(itemgender, "^Q%d+$") then
idgender = itemgender
end
end
local gender_requested = false
if parameters.case == "gender" or idgender then
gender_requested = true
elseif parameters.formatting == "table" then
for i=0, #qualifierId do
if args["case" .. i] and args["case" .. i] == "gender" then
gender_requested = true
break
end
end
end
if gender_requested then
if feminineGender(idgender or parameters.id) then
parameters.gender = "feminineform"
end
end
-- get initial sort indices
local sortindices = {}
for idx in pairs(claims) do
sortindices[#sortindices + 1] = idx
end
-- sort by claim rank
local comparator = function(a, b)
local rankmap = { deprecated = 2, normal = 1, preferred = 0 }
local ranka = rankmap[claims[a].rank or "normal"] .. string.format("%08d", a)
local rankb = rankmap[claims[b].rank or "normal"] .. string.format("%08d", b)
return ranka < rankb
end
table.sort(sortindices, comparator)
local result, result2, result_query
local error
if parameters.list or parameters.formatting == "table" then
-- convert LF to line feed, <br /> may not work on some cases
parameters.separator = parameters.separator == "LF" and "\010" or parameters.separator
parameters.conjunction = parameters.conjunction == "LF" and "\010" or parameters.conjunction
-- i18n separators
parameters.separator = parameters.separator or mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain()
parameters.conjunction = parameters.conjunction or (mw.message.new('And'):inLanguage(parameters.lang[1]):plain() .. mw.message.new('Word-separator'):inLanguage(parameters.lang[1]):plain())
-- iterate over all elements and return their value (if existing)
local value, valueq
local sortkey, sortkeyq
local values = {}
local sortkeys = {}
local refs = {}
local rowlist = {} -- rows to list with whitelist or blacklist
for idx in pairs(claims) do
local claim = claims[sortindices[idx]]
local reference = {}
if not whitelisted then rowlist[idx] = true end
if parameters.formatting == "table" then
local params = tableParameters(args, parameters, "0")
value, sortkey, error = getValueOfClaim(claim, nil, params)
if value then
values[#values + 1] = {}
sortkeys[#sortkeys + 1] = {}
refs[#refs + 1] = {}
if whitelist["0"] or blacklist["0"] then
local valueraw, _, _ = getValueOfClaim(claim, nil, {["formatting"]="raw", ["lang"]=params.lang})
if whitelist["0"] and whitelist["0"][valueraw or ""] then
rowlist[#values] = true
elseif blacklist["0"] and blacklist["0"][valueraw or ""] then
rowlist[#values] = false
end
end
for i, qual in ipairs(qualifierId) do
local j = tostring(i)
params = tableParameters(args, parameters, j)
local valueq, sortkeyq, valueraw
if qual == parameters.property then -- hack for getting the property with another formatting, i.e. colformat1=raw
valueq, sortkeyq, _ = getValueOfClaim(claim, nil, params)
else
for q in mw.text.gsplit(qual, '%s*OR%s*') do
if string.find(q, ".+/.+") then
valueq, sortkeyq, valueraw = getValueOfParentClaim(claim, q, params)
elseif string.find(q, "^/.+") then
local claim2 = getStatements(parameters.id, string.sub(q, 2), bestrank)
if #claim2 > 0 then
-- only first value of a property as alternative to a qualifier
-- multiple values may not be related to a given raw of the table
valueq, sortkeyq, _ = getValueOfClaim(claim2[1], nil, params)
end
else
valueq, sortkeyq, _ = getValueOfClaim(claim, q, params)
end
if valueq then
qual = q
break
end
end
end
values[#values]["col" .. j] = valueq
sortkeys[#sortkeys]["col" .. j] = sortkeyq or valueq
if whitelist[j] or blacklist[j] or ignorevalue[j] or selectvalue[j] then
valueq = valueraw or getValueOfClaim(claim, qual, {["formatting"]="raw", ["lang"]=params.lang})
if whitelist[j] and whitelist[j][valueq or ""] then
rowlist[#values] = true
elseif blacklist[j] and blacklist[j][valueq or ""] then
rowlist[#values] = false
elseif ignorevalue[j] and ignorevalue[j][valueq or ""] then
values[#values]["col" .. j] = nil
elseif selectvalue[j] and not selectvalue[j][valueq or ""] then
values[#values]["col" .. j] = nil
end
end
end
end
else
value, sortkey, error = getValueOfClaim(claim, qualifierId[1], parameters)
values[#values + 1] = {}
sortkeys[#sortkeys + 1] = {}
refs[#refs + 1] = {}
end
if not value and showerrors then value = error end
if value then
if (parameters.references or parameters.onlysourced) and claim.references then
reference = claim.references
end
refs[#refs]["col0"] = reference
values[#values]["col0"] = value
sortkeys[#sortkeys]["col0"] = sortkey or value
end
end
-- sort and format results
sortindices = {}
for idx in pairs(values) do
sortindices[#sortindices + 1] = idx
end
if sorting_col then
local sorting_table = mw.text.split(sorting_col, '%D+')
local comparator = function(a, b)
local valuea, valueb
local i = 1
while valuea == valueb and i <= #sorting_table do
valuea = sortkeys[a]["col" .. sorting_table[i]] or ''
valueb = sortkeys[b]["col" .. sorting_table[i]] or ''
i = i + 1
end
if sorting_up then
return valueb > valuea
end
return valueb < valuea
end
table.sort(sortindices, comparator)
end
local maxvals = tonumber(parameters.listmax)
result = {}
for idx in pairs(values) do
local valuerow = values[sortindices[idx]]
local reference, valid_ref = getReferences({["references"] = refs[sortindices[idx]]["col0"]}, parameters)
value = valuerow["col0"]
if parameters.formatting == "table" then
if not rowlist[sortindices[idx]] then
value = nil
else
local rowformatting = rowformat .. "$" -- fake end character added for easy gsub
value = mw.ustring.gsub(rowformatting, "$0", {["$0"] = value})
value = mw.ustring.gsub(value, "$R0", reference) -- add reference
for i, _ in ipairs(qualifierId) do
local valueq = valuerow["col" .. i]
if args["rowsubformat" .. i] and isSet(valueq) then
-- add fake end character $
-- gsub $i not followed by a number so $1 doesn't match $10, $11...
-- remove fake end character
valueq = captureEscapes(valueq)
valueq = mw.ustring.gsub(args["rowsubformat" .. i] .. "$", "$" .. i .. "(%D)", valueq .. "%1")
valueq = string.sub(valueq, 1, -2)
rowformatting = mw.ustring.gsub(rowformatting, "$" .. i .. "(%D)", args["rowsubformat" .. i] .. "%1")
end
valueq = valueq and captureEscapes(valueq) or ''
value = mw.ustring.gsub(value, "$" .. i .. "(%D)", valueq .. "%1")
end
value = string.sub(value, 1, -2) -- remove fake end character
value = expandBraces(value, rowformatting)
end
elseif value then
value = expandBraces(value, parameters.formatting)
value = value .. reference
end
if isSet(value) and (not parameters.onlysourced or (parameters.onlysourced and valid_ref)) then
result[#result + 1] = value
if not parameters.list or (maxvals and maxvals == #result) then
break
end
end
end
if args.query == 'num' then
result_query = #result
end
if #result > 0 then
if parameters.formatting == 'table' then
result = addEditIconTable(result, parameters) -- in a table, add edit icon on last element
end
result = preformat .. mw.text.listToText(result, parameters.separator, parameters.conjunction) .. postformat
else
result = ''
end
else
-- return first element
local claim = claims[sortindices[1]]
result, result2, error = getValueOfClaim(claim, qualifierId[1], parameters)
if result then
local ref, valid_ref = getReferences(claim, parameters)
if parameters.onlysourced and valid_ref == false then
result = nil
else
result = result .. ref
end
end
if args.query == 'num' then result_query = result and 1 or 0 end
end
if isSet(result) then
if not (parameters.formatting == 'table' or (result2 and result2 == 'no-icon')) then
-- add edit icon, except table added previously and except explicit no-icon internal flag
result = result .. addEditIcon(parameters)
end
else
if showerrors then result = error else result = default end
end
if args.query == 'untranslated' and required and not is_sandbox then
result_query = untranslated
end
return result, result_query or ''
end
-- Local functions for getParentValues -----------------------
local function uc_first(word)
if word == nil then return end
return mw.ustring.upper(mw.ustring.sub(word, 1, 1)) .. mw.ustring.sub(word, 2)
end
local function getPropertyValue(id, property, parameter, langs, labelicon, case)
local snaks = mw.wikibase.getBestStatements(id, property)
local mysnak = getSnak(snaks, {1, "mainsnak"})
if mysnak == nil then
return
end
local entity_id
local result = '-' -- default for 'no value'
if mysnak.datavalue then
entity_id = "Q" .. tostring(mysnak.datavalue.value['numeric-id'])
result, _ = getSnakValue(mysnak, {formatting=parameter, lang=langs, labelicon=labelicon, case=case})
end
return entity_id, result
end
local function getParentObjects(id,
prop_format,
label_format,
languages,
propertySupString,
propertyLabel,
propertyLink,
label_show,
labelicon0,
labelicon1,
upto_number,
upto_label,
upto_value,
last_only,
grammatical_case,
include_self)
local propertySups = mw.text.split(propertySupString, '[^P%d]')
local maxloop = 10
if upto_number then
maxloop = tonumber(upto_number)
elseif next(upto_label) or next(upto_value) then
maxloop = 50
end
local labels_filter = next(label_show)
local result = {}
local id_value = id
for iter = 1, maxloop do
local link, label, labelwicon, linktext, id_label
for _, propertySup in pairs(propertySups) do
local _id_value, _link = getPropertyValue(id_value, propertySup, prop_format, languages, labelicon1, grammatical_case)
if _id_value and _link then id_value = _id_value; link = _link break end
end
if not id_value or not link then break end
if propertyLink then
_, linktext = getPropertyValue(id_value, propertyLink, "label", languages)
if linktext then
link = mw.ustring.gsub(link, "%[%[(.*)%|.+%]%]", "[[%1|" .. linktext .. "]]")
end
end
id_label, label = getPropertyValue(id_value, propertyLabel, label_format, languages, false, "infoboxlabel")
if labelicon0 then
_, labelwicon = getPropertyValue(id_value, propertyLabel, label_format, languages, labelicon0, "infoboxlabel")
else
labelwicon = label
end
if labels_filter == nil or (label_show[id_label] or label_show[label]) then
result[#result + 1] = {labelwicon, link}
label_show[id_label or 'none'], label_show[label or 'none'] = nil, nil -- only first label found
end
if upto_label[id_label] or upto_label[label] or upto_value[id_value] then
break
end
end
if last_only then
result = {result[#result]}
end
if include_self then
local label_self, link_self
_, label_self = getPropertyValue(id, propertyLabel, label_format, languages, labelicon0, "infoboxlabel")
link_self, _ = getLabelByLangs(id, languages)
table.insert(result, 1, {label_self, link_self})
end
return result
end
local function parentObjectsToString(result,
rowformat,
cascade,
sorting)
local ret = {}
local first = 1
local last = #result
local iter = 1
if sorting == "-1" then first = #result; last = 1; iter = -1 end
for i = first, last, iter do
local rowtext = mw.ustring.gsub(rowformat, "$[01]", {["$0"] = result[i][1], ["$1"] = result[i][2]})
ret[#ret + 1] = expandBraces(rowtext, rowformat)
end
if cascade then
local direction = mw.language.new(wiki.langcode):isRTL() and "right" or "left"
local suffix = ""
for i = 1, #ret do
ret[i] = '<ul style="line-height:100%; margin-' .. direction .. ':0.45em; padding-' .. direction .. ':0;"><li>' .. ret[i]
suffix = suffix .. '</li></ul>'
end
ret[#ret] = ret[#ret] .. suffix
end
return ret
end
-- Returns pairs of parent label and property value fetching a recursive tree
function p.getParentValues(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
if not required and isSet(pargs.sandbox) then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getParentValues(frame)
end
local id = getEntityId(args, pargs)
if id == nil then return end
local languages = findLang(args.lang)
local propertySup = getArg(args.property, "P131") --administrative entity
local propertyLabel = getArg(args.label, "P31") --instance
local propertyLink = getArg(args.valuetext)
local property_format = getArg(args.formatting)
local label_format = getArg(args.labelformat, "label")
local upto_number = getArg(args.upto)
local last_only = getArg(args.last_only, false)
local editicon, labelicon = setIcons(args.editicon, pargs.editicon)
local include_self = getArg(args.include_self, false)
local case = getArg(args.case)
local upto_label = {}
for q in string.gmatch(args.uptolabelid or '', 'Q%d+') do
upto_label[q] = true
end
if type(upto_number) == 'string' then
upto_label[uc_first(upto_number)] = true
upto_number = nil
end
local upto_value = {}
for q in string.gmatch(args.uptovalueid or args.uptolinkid or '', 'Q%d+') do
upto_value[q] = true
end
local label_show = {}
for q in string.gmatch(args.showlabelid or '', 'Q%d+') do
label_show[q] = true
end
for _, v in ipairs(mw.text.split(args.labelshow or '', "/")) do
if v ~= '' then
label_show[uc_first(v)] = true
end
end
local rowformat = args.rowformat; if not isSet(rowformat) then rowformat = "$0 = $1" end
local labelicon0, labelicon1 = labelicon, labelicon
if string.find(label_format, '{{.*$0.*}}') or (string.find(rowformat, '{{.*$0.*}}') and label_format ~= 'raw') then
labelicon0 = false
end
local result = getParentObjects(id,
property_format,
label_format,
languages,
propertySup,
propertyLabel,
propertyLink,
label_show,
labelicon0,
labelicon1,
upto_number,
upto_label,
upto_value,
last_only,
case,
include_self)
if #result == 0 then return end
local separator = args.separator; if not isSet(separator) then separator = "<br />" end
local sorting = args.sorting; if sorting == "" then sorting = nil end
local cascade = (args.cascade == "true" or args.cascade == "yes")
local ret = parentObjectsToString(result,
rowformat,
cascade,
sorting)
ret = addEditIconTable(ret, {property=propertySup, editicon=editicon, id=id, lang=languages})
return mw.text.listToText(ret, separator, separator)
end
-- Link with a parent label --------------------
function p.linkWithParentLabel(frame)
local pargs = frame.args and frame:getParent().args or {}
if not required and isSet(pargs.sandbox) then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).linkWithParentLabel(frame)
end
local args = {}
if frame.args then
for k, v in pairs(frame.args) do -- metatable
args[k] = v
end
else
args = frame -- via require
end
if isSet(args.value) then
return args.value
end
-- get id value of property/qualifier
local largs = mw.clone(args)
largs.list = tonumber(args.list) and args.list or true
largs.formatting = "raw"
largs.separator = "/·/"
largs.editicon = false
local items_list, _ = p.claim(largs)
if not isSet(items_list) then return end
local items_table = mw.text.split(items_list, "/·/", true)
-- get internal link of property/qualifier
largs.formatting = "internallink"
local link_list, _ = p.claim(largs)
local link_table = mw.text.split(link_list, "/·/", true)
-- get label of parent property
local parent_claim = getSnak(getStatements(items_table[1], args.parent, true), {1, "mainsnak", "datatype"})
if parent_claim == 'monolingualtext' then
largs.formatting = nil
largs.list = 'lang'
else
largs.formatting = "label"
largs.list = false
end
largs.property = args.parent
largs.qualifier = nil
for i, v in ipairs(items_table) do
largs.item = v
local link_label, _ = p.claim(largs)
if isSet(link_label) then
link_table[i] = mw.ustring.gsub(link_table[i] or '', "%[%[(.*)%|.+%]%]", "[[%1|" .. link_label .. "]]")
end
end
args.editicon, _ = setIcons(args.editicon, pargs.editicon)
args.id = getEntityId(args, pargs)
args.lang = findLang(args.lang)
return mw.text.listToText(link_table) .. addEditIcon(args)
end
-- Calculate number of years old ----------------------------
function p.yearsOld(frame)
if not required and frame.args and isSet(frame:getParent().args.sandbox) then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).yearsOld(frame)
end
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local id = getEntityId(args, pargs)
if id == nil then return end
local lang = mw.language.new('en')
local function getBestValue(id, prop)
return getSnak(mw.wikibase.getBestStatements(id, prop), {1, "mainsnak", "datavalue", "value"})
end
local birth = getBestValue(id, 'P569')
if type(birth) ~= 'table' or birth.time == nil or birth.precision == nil or birth.precision < 8 then
return
end
local death = getBestValue(id, 'P570')
if type(death) ~= 'table' or death.time == nil or death.precision == nil then
death = {['time'] = lang:formatDate('c'), ['precision'] = 11} -- current date
elseif death.precision < 8 then
return
end
local dates = {}
dates[1] = {['min'] = {}, ['max'] = {}, ['precision'] = birth.precision}
dates[1].min.year = tonumber(mw.ustring.match(birth.time, "^[+-]?%d+"))
dates[1].min.month = tonumber(mw.ustring.match(birth.time, "\-(%d%d)\-"))
dates[1].min.day = tonumber(mw.ustring.match(birth.time, "\-(%d%d)T"))
dates[1].max = mw.clone(dates[1].min)
dates[2] = {['min'] = {}, ['max'] = {}, ['precision'] = death.precision}
dates[2].min.year = tonumber(mw.ustring.match(death.time, "^[+-]?%d+"))
dates[2].min.month = tonumber(mw.ustring.match(death.time, "\-(%d%d)\-"))
dates[2].min.day = tonumber(mw.ustring.match(death.time, "\-(%d%d)T"))
dates[2].max = mw.clone(dates[2].min)
for i, d in ipairs(dates) do
if d.precision == 10 then -- month
d.min.day = 1
local timestamp = string.format("%04d", tostring(math.abs(d.max.year)))
.. string.format("%02d", tostring(d.max.month))
.. "01"
d.max.day = tonumber(lang:formatDate("j", timestamp .. " + 1 month - 1 day"))
elseif d.precision < 10 then -- year or decade
d.min.day = 1
d.min.month = 1
d.max.day = 31
d.max.month = 12
if d.precision == 8 then -- decade
d.max.year = d.max.year + 9
end
end
end
local function age(d1, d2)
local years = d2.year - d1.year
if d2.month < d1.month or (d2.month == d1.month and d2.day < d1.day) then
years = years - 1
end
if d2.year > 0 and d1.year < 0 then
years = years - 1 -- no year 0
end
return years
end
local old_min = age(dates[1].max, dates[2].min)
local old_max = age(dates[1].min, dates[2].max)
local old, old_expr
if old_min == 0 and old_max == 0 then
old = "< 1"
old_max = 1 -- expression in singular
elseif old_min == old_max then
old = old_min
else
old = old_min .. "/" .. old_max
end
if args.formatting == 'unit' then
local langs = findLang(args.lang)
local yo
local yo_pl = {}
if langs[1] == wiki.langcode then
yo_pl = i18n["years-old"]
end
if not isSet(yo_pl[2]) then
local yo_label, _ = getLabelByLangs('Q24564698', langs)
yo_pl = {yo_label, yo_label}
end
yo = mw.language.new(langs[1]):plural(old_max, yo_pl)
if mw.ustring.find(yo, '$1', 1, true) then
old_expr = mw.ustring.gsub(yo, "$1", old)
else
old_expr = old .. ' ' .. yo
end
elseif args.formatting then
old_expr = expandBraces(mw.ustring.gsub(args.formatting, '$1', old), args.formatting)
else
old_expr = old
end
return old_expr
end
-- Gets a label in a given language (content language by default) or its fallbacks, optionnally linked.
function p.getLabel(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
if not required and isSet(pargs.sandbox) then
return require(wiki.module_title .. "/" .. mw.message.new('Sandboxlink-subpage-name'):inLanguage(wiki.langcode):plain()).getLabel(frame)
end
local id = getEntityId(args, pargs, 1)
if id == nil then return end
local languages = findLang(args.lang)
local labelicon = false
if mw.wikibase.isValidEntityId(id) then
_, labelicon = setIcons(args.editicon, pargs.editicon)
end
local label_icon = ''
local label, lang
if args.label then
label = args.label
else
-- exceptions or labels fixed
local exist, labels = pcall(require, wiki.module_title .. "/labels" .. (languages[1] == wiki.langcode and '' or '/' .. languages[1]))
if exist and labels.infoboxLabelsFromId and next(labels.infoboxLabelsFromId) ~= nil then
label = labels.infoboxLabelsFromId[id]
end
if label == nil then
label, lang = getLabelByLangs(id, languages)
if label then
if isSet(args.itemgender) and feminineGender(args.itemgender) then
label = feminineForm(id, lang) or label
end
label = mw.language.new(lang):ucfirst(mw.text.nowiki(label)) -- sanitize
if args.case then
label = case(args.case, label, lang)
end
end
label_icon = addLabelIcon(id, lang, languages[1], labelicon)
end
end
local linked = args.linked
local ret2 = required and untranslated or ''
if isSet(linked) and linked ~= "no" then
local article = mw.wikibase.getSitelink(id) or ("d:Special:EntityPage/" .. id)
return "[[" .. article .. "|" .. (label or id) .. "]]" .. label_icon, ret2
else
return (label or id) .. label_icon, ret2
end
end
-- Utilities -----------------------------
-- See also module ../debug.
-- Copied from Module:Wikibase
function p.getSiteLink(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local id = getEntityId(args, pargs, 1)
if id == nil then return end
return mw.wikibase.getSitelink(id, mw.text.trim(args[2] or ''))
end
-- Helper function for the default language code used
function p.lang(frame)
local lang = frame and frame.args[1] -- nil via require
return findLang(lang)[1]
end
-- Number of statements
function p.numStatements(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local id = getEntityId(args, pargs)
if id == nil then return 0 end
local prop = mw.text.trim(args[1] or '')
local num = {}
if not isSet(prop) then
local largs = {}
for k, v in pairs(pargs) do
largs[k] = v
end
for k, v in pairs(args) do
largs[k] = v
end
largs.query = 'num'
_, num = p.claim(largs)
return num
elseif args[2] then -- qualifier
local qual = mw.text.trim(args[2])
local values = p.claim{item=id, property=prop, qualifier=qual, formatting='raw', separator='/·/'}
if values then
num = mw.text.split(values, '/·/')
end
else
num = mw.wikibase.getBestStatements(id, prop)
end
return #num
end
-- Returns true if property datavalue is found excluding novalue/somevalue
function p.validProperty(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local item = getEntityId(args, pargs)
if item == nil then return end
local property = mw.text.trim(args[1])
local prop_data = getSnak(mw.wikibase.getBestStatements(item, property), {1, "mainsnak", "datavalue"})
return prop_data and true or nil
end
function p.editAtWikidata(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
local value = isSet(args[1])
if value then return end
local param = {}
param.id = getEntityId(args, pargs)
param.property = args.property
param.lang = findLang(args.lang)
param.editicon, _ = setIcons(args.editicon)
return addEditIcon(param)
end
function p.formatNum(frame)
local num = tonumber(mw.text.trim(frame.args[1]))
local lang = findLang(mw.text.trim(frame.args[2]))
return mw.language.new(lang[1]):formatNum(num)
end
return p
1zfn0twj3cx3auqh4r0zks7fg8aux8g
Kategori:Bikol/Toponymer
14
1075015
4157291
2026-10-24T01:25:36Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Toponymer]] till [[Kategori:Central bikol/Toponymer]]
4157291
wikitext
text/x-wiki
#OMDIRIGERING [[:Kategori:Central bikol/Toponymer]]
a819csf88my5h6gvh3lcohciltfzxo9
Kategori:Bikol/Botanik
14
1075017
4157307
2026-10-24T01:36:10Z
Frodlekis
762
Frodlekis flyttade sidan [[Kategori:Bikol/Botanik]] till [[Kategori:Central bikol/Botanik]]
4157307
wikitext
text/x-wiki
#OMDIRIGERING [[:Kategori:Central bikol/Botanik]]
6lb2gm1ccnqbncsvwggjwvzrxusr0e5
kalayo
0
1075019
4157330
2026-10-24T01:45:58Z
Frodlekis
762
nytt uppslag (central bikol)
4157330
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''kalayo'''
#[[eld]]
o0ztm9ndyojsg1w6koi2t50aprsy672
4157331
4157330
2026-10-24T01:46:35Z
Frodlekis
762
/* Central bikol */
4157331
wikitext
text/x-wiki
==Central bikol==
===Substantiv===
{{subst|bcl}}
'''kalayo'''
#[[eld]]
#:{{synonymer|[[laad]]}}
jvkkq8jtf1psgocaw10hpmjm7fe76lm
Kategori:Fjärde konjugationens verb
14
1075020
4157395
2026-10-24T11:06:09Z
Frodlekis
762
Ny sida
4157395
wikitext
text/x-wiki
{{kategorinavigering||Fjärde konjugationens verb|Verb}}
Kategorin är avsedd för fjärde [[konjugation]]ens verb.
8xxswezj5s2h2w4tys1ub3frriusyjx