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
änka
0
2769
4157532
4150668
2026-10-24T20:42:04Z
Vavřinec N.
43546
+cs: [[vdova]] (assisterat)
4157532
wikitext
text/x-wiki
{{se även|-anka|Anka|anka|änka}}
==Svenska==
===Substantiv===
{{sv-subst-n-or}}
'''änka'''
#[[kvinna]], vars äktenskapspartner [[avlida|avlidit]], och som inte är [[omgift]]
#:{{sammansättningar|{{länk|sv|adelsänka, bagaränka, borgaränka, dominikanänka, fabrikörsänka, frälseänka, församlingsänka, gräsänka, inhysesänka, klockaränka, krigsänka, officersänka, paradisänka, professorsänka, prostänka, prästänka, rikänka, rådmansänka, slaktaränka, soldatänka, sportänka, svart änka, torparänka, traktörsänka, undantagsänka, änkebidrag, änkebiskopinna, änkeblomster, änkebok, änkebrud, änkebränning, änkedok, änkedrottning, änkedräkt, änkefond, änkefriherrinna, änkefru, änkefurstinna, änkefördel, änkeförmån, änkegenant, änkegrevinna, änkehem, änkehertiginna, änkehjälp, änkehus, änkehustru, änkekarl, änkekassa, änkekejsarinna, änkekränkning, änkelek, änkelektorska, änkelista, änkemadam, änkeman, änkemedel, änkemössa, änkenåd, änkepastorska, änkepengar, änkepension, änkepensionering, änkepensionär, änkeprinsessa, änkeprofessorska, änkeprostinna, änkerätt, änkeskrud, änkeslabb, änkesnibb, änkeson, änkesorg, änkespannmål, änkestol, änkestånd, änkestöt, änkesäng, änkesäte, änketid, änketunna, änkeunderhåll, änkeunderstöd, änkeverkstad, änkeår}}}}
#:{{besläktade ord|{{länk|sv|änkedom, änkeskap, änkling}}}}
#{{tagg|typografi}} ofullständig textrad eller ett ensamt ord som hamnar på en ny sida
#:{{synonymer|[[horunge]], dubbel [[ensamrad]]}}
====Översättningar====
{{ö-topp|kvinna vars äktenskapspartner har avlidit}}
*bokmål: {{ö+|no|enke|f}}
*danska: {{ö+|da|enke|u}}
*engelska: {{ö+|en|widow}}
*finska: {{ö+|fi|leski}}
*franska: {{ö+|fr|veuve|f}}
*färöiska: {{ö|fo|einkja|f}}
*isländska: {{ö+|is|ekkja}}
*italienska: {{ö+|it|vedova|f}}
*klassisk grekiska: {{ö|grc|χήρα}}
*kroatiska: {{ö|hr|udovica|f}}
*latin: {{ö|la|vidua}}
*mirandesiska: {{ö|mwl|biúba|f}}
*nederländska: {{ö+|nl|weduwe|f}}
*nynorska: {{ö|nn|enkje|f}}
*occitanska: {{ö+|oc|veusa}}
*polska: {{ö+|pl|wdowa|f}}
*portugisiska: {{ö+|pt|viúva}}
*ryska: {{ö+|ru|вдова|f}}
*spanska: {{ö+|es|viuda|f}}
*tjeckiska: {{ö+|cs|vdova|f}}
*turkiska: {{ö+|tr|dul}}
*tyska: {{ö+|de|Witwe|f}}
*älvdalska: {{ö|ovd|aintşa|f}}
{{ö-botten}}
{{ö-topp|typografi}}
*tyska: {{ö+|de|Hurenkind|f}}
{{ö-botten}}
6kof1vain04sx8xwaalss4xuufj4q04
båt
0
7873
4157559
4087482
2026-10-24T20:57:40Z
Vavřinec N.
43546
+cs: [[loď]] (assisterat)
4157559
wikitext
text/x-wiki
{{wikipedia}}
{{se även|bat|bát}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
{{media|TCRT Express Boat Minnehaha.jpg|Båt}}
'''båt'''
*{{uttal|sv|ipa=boːt|ljud=Sv-båt.ogg}}
#{{tagg|kat=sjöfart}} mindre [[fartyg]]
#:{{sammansättningar|[[båtbygge]], [[båtdäck]], [[båthus]], [[båtfolk]], [[båtfärd]], [[båtförbindelse]], [[båthamn]], [[båtmotor]], [[båtsäsong]], [[båttillbehör]], [[båttur]], [[båtägare]], [[motorbåt]]}}
#:{{hyponymer|[[barkbåt]], [[bevakningsbåt]], [[bogserbåt]], [[fiskebåt]], [[gummibåt]], [[husbåt]], [[jolle]], [[kajak]], [[kanot]], [[livbåt]], [[livräddningsbåt]], [[motorbåt]], [[patrullbåt]], [[roddbåt]], [[segelbåt]], [[skeppsbåt]], [[skuta]], [[stridsbåt]], [[taxibåt]], [[torpedbåt]], [[trampbåt]], [[ubåt]], [[undervattensbåt]], [[ångbåt]]}}
#:{{fraser|[[ge på båten]], [[sitta i samma båt]]}}
#:{{seäven|[[flotte]]}}
#:{{etymologi|Av {{härledning|sv|gmq-fsv|bater}}, av {{härledning|sv|non|bátr}}.}}
#:{{grammatik|Båt är ett av de få inanimata substantiv (alltså de som inte syftar på en person eller ett djur) på svenska som kan användas med femininumformen av pronomen. Alltså kan ''[[hon]]'', ''henne'' och ''hennes'' användas när de syftas på en båt. Det är ungefär lika vanligt och accepterat som att använda pronomenen ''den'' och ''dess'' när man talar om en båt. Detta kallas [[personifiering]], själva ordet ”båt” i sig är inte feminint.}}
====Översättningar====
{{ö-topp|transportmedel}}
*arabiska: {{ö+|ar|قَارِب|m|tr=qārib}}
*bokmål: {{ö+|no|båt|m}}
*danska: {{ö+|da|båd|u}}
*engelska: {{ö+|en|boat}}
*esperanto: {{ö+|eo|boato}}, {{ö+|eo|sxipeto}}
*finska: {{ö+|fi|vene}}, {{ö+|fi|laiva}}
*fornnordiska: {{ö|non|bátr}}
*franska: {{ö+|fr|bateau|m}}
*färöiska: {{ö+|fo|bátur}}
*frisiska: {{ö+|fy|boat}}
*hebreiska: {{ö+|he|סִירָה|f|tr=sirá}}
*indonesiska: {{ö+|id|perahu}}
*isländska: {{ö+|is|bátur}}, {{ö+|is|fley|n}}
*italienska: {{ö+|it|barca}}
*kroatiska: {{ö+|hr|brod|m}}
*litauiska: {{ö|lt|valtis|m}}
*lulesamiska: {{ö|smj|vanntsa}}
*malajiska: {{ö+|ms|perahu}}
*nederländska: {{ö+|nl|boot|u}}
*nordsamiska: {{ö|se|fanas}}
*nynorska: {{ö+|nn|båt|m}}
*polska: {{ö+|pl|łódź|f}}
*portugisiska: {{ö+|pt|barco}}
*ryska: {{ö+|ru|лодка}}
*spanska: {{ö+|es|barco|m}}
*sydsamiska: {{ö|sma|vïnhtse}}
*tjeckiska: {{ö+|cs|loď|f}}
*tyska: {{ö+|de|Boot}}
*vallonska: {{ö+|wa|batea}}
{{ö-botten}}
==Bokmål==
===Substantiv===
{{no-subst-m-er}}
'''båt''' {{m}}
#[[#Svenska|båt]]
==Danska==
===Substantiv===
{{da-subst-t-0|rot=bått}}
'''båt''' {{n}}
#[[tut]]; ljudet av signalhornet på en bil
#:{{synonymer|[[dyt]]}}
#:{{jämför|[[båd]]}}
==Nynorska==
===Substantiv===
{{nn-subst-m}}
'''båt''' {{m}}
#[[#Svenska|båt]]
bd0gkf7edsgo7ntwgtcvolg2bx15xju
båge
0
8065
4157554
4099993
2026-10-24T20:54:00Z
Vavřinec N.
43546
+cs: [[oblouk]] (assisterat)
4157554
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
{{media|Circle slices (mul).svg|cirkelns '''båge''' är markerat i rött}}
'''båge'''
*{{uttal|sv|ljud=Sv-en_båge.ogg}}
#{{tagg|geometri}} del av ([[rand]]en av en) [[cirkel]]
#:{{synonymer|[[cirkelbåge]]}}
#{{tagg|geometri}} del av en [[kurva]]
#{{tagg|kat=vapen}} [[vapen]], som består av en böjd elastisk stav och en sträng, för att skjuta pilar
#:{{etymologi|Av fornsvenka ''boghi''. Gemensamt germanskt ord, från [[böja]].}}
#:{{synonymer|pilbåge}}
#:{{jämför|armborst}}
#{{tagg|slang}} [[motorcykel]]
#{{tagg|text=i plural}} strukturen runt [[lins]]erna i [[glasögon]]
#:{{synonymer|[[glasögoninfattning]]}}
:{{avgränsare}}
:{{besläktade ord|[[bågig]], [[bågna]], [[bög]], [[böj]], [[böja]]}}
:{{sammansättningar|[[armbåge]], [[båglängd]], [[ostbåge]], [[pilbåge]], [[regnbåge]]}}
:{{seäven-bring|Vapen|Omväg|Elasticitet|Snedd|Fördjupning|Utsvällning|Krökning}}
:{{jämför|[[bogey]], [[boggi]], [[boogie-woogie]]}}
====Översättningar====
{{ö-topp|del av cirkel}}
*bokmål: {{ö+|no|bue|m}}
*danska: {{ö|da|bue|u}}
*engelska: {{ö+|en|arc}}
*finska: {{ö+|fi|kaari}}
*franska: {{ö+|fr|arc|m}}
*isländska: {{ö+|is|bogi|m}}, {{ö+|is|bugða|f}}
*italienska: {{ö+|it|arco|m}}
*latin: {{ö+|la|arcu}}, {{ö+|la|arcus}}
*nederländska: {{ö+|nl|boog|m}}
*polska: {{ö+|pl|łuk|m}}
*portugisiska: {{ö+|pt|arco|m}}
*ryska: {{ö+|ru|дуга|f}}
*spanska: {{ö+|es|arco|m}}
*tjeckiska: {{ö+|cs|oblouk|m}}
*tyska: {{ö+|de|Bogen|m}}, {{ö|de|Arkus|m}}
{{ö-botten}}
{{ö-topp|del av kurva}}
*bokmål: {{ö+|no|bue|m}}
*danska: {{ö|da|bue|u}}
*engelska: {{ö+|en|arc}}
*finska: {{ö+|fi|kaarre}}
*franska: {{ö+|fr|arc|m}}
*isländska: {{ö+|is|bogi|m}}
*italienska: {{ö+|it|arco|m}}
*latin: {{ö+|la|arcu}}, {{ö+|la|arcus}}
*nederländska: {{ö+|nl|boog|m}}
*polska: {{ö+|pl|łuk|m}}
*portugisiska: {{ö+|pt|arco|m}}
*spanska: {{ö+|es|arco|m}}
*tyska: {{ö+|de|Bogen|m}}, {{ö|de|Arkus|m}}
{{ö-botten}}
{{ö-se|vapen|pilbåge}}
{{ö-topp|slangord för motorcykel}}
*danska: {{ö+|da|motorcykel}}
*finska: {{ö+|fi|prätkä}}
{{ö-botten}}
{{ö-topp|strukturen runt linserna i glasögon}}
*danska: {{ö|da|brillestang}}
*finska: {{ö+|fi|sanka}}, {{ö|fi|pokat|p|not=vardagligt}}, {{ö|fi|silmälasinkehykset|p}}, {{ö+|fi|kehykset}}
*tyska: {{ö+|de|Fassung|f}}, {{ö+|de|Brillenfassung|f}}
{{ö-botten}}
8rsnldnoh0cyzajarfs2a9om34pkibw
4157555
4157554
2026-10-24T20:54:22Z
Vavřinec N.
43546
+cs: [[oblouk]] (assisterat)
4157555
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
{{media|Circle slices (mul).svg|cirkelns '''båge''' är markerat i rött}}
'''båge'''
*{{uttal|sv|ljud=Sv-en_båge.ogg}}
#{{tagg|geometri}} del av ([[rand]]en av en) [[cirkel]]
#:{{synonymer|[[cirkelbåge]]}}
#{{tagg|geometri}} del av en [[kurva]]
#{{tagg|kat=vapen}} [[vapen]], som består av en böjd elastisk stav och en sträng, för att skjuta pilar
#:{{etymologi|Av fornsvenka ''boghi''. Gemensamt germanskt ord, från [[böja]].}}
#:{{synonymer|pilbåge}}
#:{{jämför|armborst}}
#{{tagg|slang}} [[motorcykel]]
#{{tagg|text=i plural}} strukturen runt [[lins]]erna i [[glasögon]]
#:{{synonymer|[[glasögoninfattning]]}}
:{{avgränsare}}
:{{besläktade ord|[[bågig]], [[bågna]], [[bög]], [[böj]], [[böja]]}}
:{{sammansättningar|[[armbåge]], [[båglängd]], [[ostbåge]], [[pilbåge]], [[regnbåge]]}}
:{{seäven-bring|Vapen|Omväg|Elasticitet|Snedd|Fördjupning|Utsvällning|Krökning}}
:{{jämför|[[bogey]], [[boggi]], [[boogie-woogie]]}}
====Översättningar====
{{ö-topp|del av cirkel}}
*bokmål: {{ö+|no|bue|m}}
*danska: {{ö|da|bue|u}}
*engelska: {{ö+|en|arc}}
*finska: {{ö+|fi|kaari}}
*franska: {{ö+|fr|arc|m}}
*isländska: {{ö+|is|bogi|m}}, {{ö+|is|bugða|f}}
*italienska: {{ö+|it|arco|m}}
*latin: {{ö+|la|arcu}}, {{ö+|la|arcus}}
*nederländska: {{ö+|nl|boog|m}}
*polska: {{ö+|pl|łuk|m}}
*portugisiska: {{ö+|pt|arco|m}}
*ryska: {{ö+|ru|дуга|f}}
*spanska: {{ö+|es|arco|m}}
*tjeckiska: {{ö+|cs|oblouk|m}}
*tyska: {{ö+|de|Bogen|m}}, {{ö|de|Arkus|m}}
{{ö-botten}}
{{ö-topp|del av kurva}}
*bokmål: {{ö+|no|bue|m}}
*danska: {{ö|da|bue|u}}
*engelska: {{ö+|en|arc}}
*finska: {{ö+|fi|kaarre}}
*franska: {{ö+|fr|arc|m}}
*isländska: {{ö+|is|bogi|m}}
*italienska: {{ö+|it|arco|m}}
*latin: {{ö+|la|arcu}}, {{ö+|la|arcus}}
*nederländska: {{ö+|nl|boog|m}}
*polska: {{ö+|pl|łuk|m}}
*portugisiska: {{ö+|pt|arco|m}}
*spanska: {{ö+|es|arco|m}}
*tjeckiska: {{ö+|cs|oblouk|m}}
*tyska: {{ö+|de|Bogen|m}}, {{ö|de|Arkus|m}}
{{ö-botten}}
{{ö-se|vapen|pilbåge}}
{{ö-topp|slangord för motorcykel}}
*danska: {{ö+|da|motorcykel}}
*finska: {{ö+|fi|prätkä}}
{{ö-botten}}
{{ö-topp|strukturen runt linserna i glasögon}}
*danska: {{ö|da|brillestang}}
*finska: {{ö+|fi|sanka}}, {{ö|fi|pokat|p|not=vardagligt}}, {{ö|fi|silmälasinkehykset|p}}, {{ö+|fi|kehykset}}
*tyska: {{ö+|de|Fassung|f}}, {{ö+|de|Brillenfassung|f}}
{{ö-botten}}
8zkoq1x6h48hhkpnseh55u5bmxa1ftu
bana
0
9023
4157557
4150502
2026-10-24T20:55:16Z
Vavřinec N.
43546
+cs: [[dráha]] (assisterat)
4157557
wikitext
text/x-wiki
{{wikipedia|[[w:Bana|Bana]], [[w:Bana_(järnväg)|Bana_(järnväg)]]}}
==Svenska==
===Substantiv===
{{sv-subst-n-or|förled=ban-, bane}}
'''bana'''
#{{tagg|text=generellt}} [[väg]] som någon eller något [[färdas]] (på), både konkret och bildligt
#:''Det tar över 365 dygn för jorden att färdas ett varv i sin '''bana''' runt solen.''
#:''Hon började sin politiska '''bana''' som centerpartist.''
#:{{sammansättningar|[[bangång]], [[bangående]], [[bergbana]], [[cirkelbana]], [[cykelbana]], [[gondolbana]], [[gångbana]], [[halkbana]], [[körbana]], [[linbana]], [[omloppsbana]], [[tunnelbana]], [[tunnelbanevagn]]}}
#{{tagg|järnväg|text=oftast i sammansättningar}} enskild (längre och namngiven) [[järnvägssträcka]], i vissa fall även inklusive mindre sidolinjer
#:''Roslags'''banan''' är den enda kvarvarande smalspåriga järnvägen i Sverige''.
#{{tagg|järnväg|text=oftast i sammansättningar}} [[järnväg]]
#:{{sammansättningar|[[bangård]], [[bibana]], [[banmotor]], [[huvudbana]], [[höghastighetsbana]], [[lokalbana]], [[sidobana]], [[stambana]], [[tunnelbana]], [[tvärbana]], [[tågbana]]}}
#{{tagg|sport}} område där en sport eller annan [[tävling]] äger rum
#:''Löparna springer ut på '''banan'''.
#:{{sammansättningar|[[bilbana]], [[crossbana]], [[golfbana]], [[isbana]], [[löparbana]], [[racerbana]], [[tennisbana]]}}
#:{{synonymer|[[plan]], [[plats]]}}
#:{{användning|Används för sporter där deltagarna strävar efter att röra sig snabbast mot målet, liksom några andra där deltagarna och en boll rör sig kors och tvärs, men inte för alla sådana. Så går det till exempel inte att säga [[fotbollsbana]] om området där fotboll spelas.}}
#{{tagg|datorspel}} spelplan i datorspel, särskild spelplan i datorspel
#:''Jag har redan kommit till '''bana''' 5!''
#:''Spelet lanseras med 13 '''banor''' med fler planerade för framtida [[w:Expansionspaket|expansionspaket]].''
#:{{jämför|nivå}}
#{{tagg|algebra|text=till ett element s ∈ S när G verkar på S}} mängden <math>\{ gs: g \in G \}</math>
#{{tagg|matematik}} mängden av punkter som en fix initialpunkt avbildas på vid olika tidpunkter under ett [[flöde]] eller under iterationerna av ett diskret dynamiskt system
#:'''''Banan''' till en godtycklig initialpunkt är tät i enhetscirkeln under en irrationell rotation, och periodisk under en rationell rotation.''
====Översättningar====
{{ö-topp|väg någon eller något färdas}}
*bokmål: {{ö+|no|bane|m}}
*danska: {{ö|da|bane|u}}
*engelska: {{ö+|en|path}}
*finska: {{ö+|fi|rata}}, {{ö+|fi|reitti}}, {{ö+|fi|tie}}, {{ö+|fi|ura}}, {{ö+|fi|polku}}
*nederländska: {{ö+|nl|baan|u}}, {{ö+|nl|weg|m}}
*tjeckiska: {{ö+|cs|dráha|f}}, {{ö+|cs|trať|f}}, {{ö+|cs|dráha|f}}
*tyska: {{ö+|de|Bahn|f}}, {{ö+|de|Laufbahn|f}}
{{ö-botten}}
{{ö-topp|område där en sport eller annan tävling äger rum}}
*bokmål: {{ö+|no|bane|m}}
*danska: {{ö|da|bane|u}}
*engelska: {{ö+|en|track}}
*finska: {{ö+|fi|rata}}
*nederländska: {{ö+|nl|baan|u}}
*tjeckiska: {{ö+|cs|dráha|f}}, {{ö+|cs|trať}}
*tyska: {{ö+|de|Bahn|f}}
{{ö-botten}}
{{ö-topp|datorspel}}
*engelska: {{ö+|en|level}}, {{ö+|en|map}}, {{ö+|en|track}}
{{ö-botten}}
{{ö-topp|(algebra)}}
*bokmål: {{ö+|no|bane|m}}
*engelska: {{ö+|en|orbit}}
{{ö-botten}}
{{ö-topp|(matematik) flöde eller dynamiska system}}
*bokmål: {{ö+|no|bane|m}}
*engelska: {{ö+|en|orbit}}
{{ö-botten}}
===Verb===
{{sv-verb-ar|rot=ban|perfpart=}}
'''bana'''
#[[bereda]] [[väg]] för någon eller något, både konkret och bildligt
#:''Bönderna '''banade''' väg för greven och hans följe.''
#:''Fredsvillkoren efter första världskriget '''banade''' väg för Hitler.''
====Översättningar====
{{ö-topp|bereda väg för någon eller något, både konkret och bildligt}}
*bokmål: {{ö+|no|bane}}
*engelska: {{ö+|en|pave}}
*finska: {{ö+|fi|raivata tietä}}, {{ö|fi|tehdä tietä}}
*italienska: {{ö|it|spianare la strada}}
*portugisiska: {{ö+|pt|pavimentar}}
{{ö-botten}}
==Isländska==
===Verb===
{{verb|is}}
'''bana'''
#[[dräpa]]
9l3qwnspecyqfz3odixjfx7n8l243j5
4157558
4157557
2026-10-24T20:55:37Z
Vavřinec N.
43546
revert
4157558
wikitext
text/x-wiki
{{wikipedia|[[w:Bana|Bana]], [[w:Bana_(järnväg)|Bana_(järnväg)]]}}
==Svenska==
===Substantiv===
{{sv-subst-n-or|förled=ban-, bane}}
'''bana'''
#{{tagg|text=generellt}} [[väg]] som någon eller något [[färdas]] (på), både konkret och bildligt
#:''Det tar över 365 dygn för jorden att färdas ett varv i sin '''bana''' runt solen.''
#:''Hon började sin politiska '''bana''' som centerpartist.''
#:{{sammansättningar|[[bangång]], [[bangående]], [[bergbana]], [[cirkelbana]], [[cykelbana]], [[gondolbana]], [[gångbana]], [[halkbana]], [[körbana]], [[linbana]], [[omloppsbana]], [[tunnelbana]], [[tunnelbanevagn]]}}
#{{tagg|järnväg|text=oftast i sammansättningar}} enskild (längre och namngiven) [[järnvägssträcka]], i vissa fall även inklusive mindre sidolinjer
#:''Roslags'''banan''' är den enda kvarvarande smalspåriga järnvägen i Sverige''.
#{{tagg|järnväg|text=oftast i sammansättningar}} [[järnväg]]
#:{{sammansättningar|[[bangård]], [[bibana]], [[banmotor]], [[huvudbana]], [[höghastighetsbana]], [[lokalbana]], [[sidobana]], [[stambana]], [[tunnelbana]], [[tvärbana]], [[tågbana]]}}
#{{tagg|sport}} område där en sport eller annan [[tävling]] äger rum
#:''Löparna springer ut på '''banan'''.
#:{{sammansättningar|[[bilbana]], [[crossbana]], [[golfbana]], [[isbana]], [[löparbana]], [[racerbana]], [[tennisbana]]}}
#:{{synonymer|[[plan]], [[plats]]}}
#:{{användning|Används för sporter där deltagarna strävar efter att röra sig snabbast mot målet, liksom några andra där deltagarna och en boll rör sig kors och tvärs, men inte för alla sådana. Så går det till exempel inte att säga [[fotbollsbana]] om området där fotboll spelas.}}
#{{tagg|datorspel}} spelplan i datorspel, särskild spelplan i datorspel
#:''Jag har redan kommit till '''bana''' 5!''
#:''Spelet lanseras med 13 '''banor''' med fler planerade för framtida [[w:Expansionspaket|expansionspaket]].''
#:{{jämför|nivå}}
#{{tagg|algebra|text=till ett element s ∈ S när G verkar på S}} mängden <math>\{ gs: g \in G \}</math>
#{{tagg|matematik}} mängden av punkter som en fix initialpunkt avbildas på vid olika tidpunkter under ett [[flöde]] eller under iterationerna av ett diskret dynamiskt system
#:'''''Banan''' till en godtycklig initialpunkt är tät i enhetscirkeln under en irrationell rotation, och periodisk under en rationell rotation.''
====Översättningar====
{{ö-topp|väg någon eller något färdas}}
*bokmål: {{ö+|no|bane|m}}
*danska: {{ö|da|bane|u}}
*engelska: {{ö+|en|path}}
*finska: {{ö+|fi|rata}}, {{ö+|fi|reitti}}, {{ö+|fi|tie}}, {{ö+|fi|ura}}, {{ö+|fi|polku}}
*nederländska: {{ö+|nl|baan|u}}, {{ö+|nl|weg|m}}
*tjeckiska: {{ö+|cs|dráha|f}}, {{ö+|cs|trať|f}}
*tyska: {{ö+|de|Bahn|f}}, {{ö+|de|Laufbahn|f}}
{{ö-botten}}
{{ö-topp|område där en sport eller annan tävling äger rum}}
*bokmål: {{ö+|no|bane|m}}
*danska: {{ö|da|bane|u}}
*engelska: {{ö+|en|track}}
*finska: {{ö+|fi|rata}}
*nederländska: {{ö+|nl|baan|u}}
*tjeckiska: {{ö+|cs|dráha|f}}, {{ö+|cs|trať}}
*tyska: {{ö+|de|Bahn|f}}
{{ö-botten}}
{{ö-topp|datorspel}}
*engelska: {{ö+|en|level}}, {{ö+|en|map}}, {{ö+|en|track}}
{{ö-botten}}
{{ö-topp|(algebra)}}
*bokmål: {{ö+|no|bane|m}}
*engelska: {{ö+|en|orbit}}
{{ö-botten}}
{{ö-topp|(matematik) flöde eller dynamiska system}}
*bokmål: {{ö+|no|bane|m}}
*engelska: {{ö+|en|orbit}}
{{ö-botten}}
===Verb===
{{sv-verb-ar|rot=ban|perfpart=}}
'''bana'''
#[[bereda]] [[väg]] för någon eller något, både konkret och bildligt
#:''Bönderna '''banade''' väg för greven och hans följe.''
#:''Fredsvillkoren efter första världskriget '''banade''' väg för Hitler.''
====Översättningar====
{{ö-topp|bereda väg för någon eller något, både konkret och bildligt}}
*bokmål: {{ö+|no|bane}}
*engelska: {{ö+|en|pave}}
*finska: {{ö+|fi|raivata tietä}}, {{ö|fi|tehdä tietä}}
*italienska: {{ö|it|spianare la strada}}
*portugisiska: {{ö+|pt|pavimentar}}
{{ö-botten}}
==Isländska==
===Verb===
{{verb|is}}
'''bana'''
#[[dräpa]]
19gyh1poz376f4jvgb867anhsicdkbn
buss
0
9160
4157572
4131118
2026-10-24T21:06:46Z
Vavřinec N.
43546
+cs: [[sběrnice]] (assisterat)
4157572
wikitext
text/x-wiki
{{wikipedia}}
{{saknad-betydelse|sv|interjektion|uppmaning/kommando till hund; alt. "buss på".}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
{{media|Bergkvarabuss i Lund 2005-05-01.jpg|buss i staden Lund}}
'''buss'''
#{{tagg|fordon|kollektivtrafik|kat=kortformer}} större vägfordon som transporterar främst personer; (formellt enligt lag) [[bil]] med fler än åtta passagerarplatser (utöver föraren)
#:{{konstr|åka buss, på bussen, i bussen}}
#:{{hyperonymer|[[fordon]], [[bil]]}}
#:{{etymologi|kortform av [[omnibus]]}}
#:{{besläktade ord|[[bussa]]}}
#:{{hyponymer|''(…buss) enligt drivteknologi'' [[batteribuss]], [[biogasbuss]], [[bränslecellbuss]], [[duobuss]], [[elbuss]], [[gasbuss]], [[naturgasbuss]], [[trolleybuss]], [[trådbuss]]}}
#:{{hyponymer|''(…buss) övriga'' [[bokbuss]], [[charterbuss]], [[dragspelsbuss]], [[ersättningsbuss]], [[expressbuss]], [[flygbuss]], [[landsvägsbuss]], [[ledbuss]], [[lokalbuss]], [[låggolvsbuss]], [[långfärdsbuss]], [[matarbuss]], [[minibuss]], [[nattbuss]], [[olycksbuss]], [[rälsbuss]], [[skolbuss]], [[snabbuss]], [[stadsbuss]], [[turistbuss]], [[turnébuss]], [[utflyktsbuss]]}}
#:{{sammansättningar|''(buss…)'' [[bussbiljett]], [[bussbolag]], [[bussbransch]], [[busscharter]], [[busschaufför]], [[bussdepå]], [[bussficka]], [[bussfil]], [[bussfärd]], [[bussförare]], [[bussförbindelse]], [[bussgata]], [[bussgods]], [[busshållplats]], [[busskarta]], [[busskort]], [[busskur]], [[busskörkort]], [[busslast]], [[busslinje]], [[bussolycka]], [[bussresa]], [[busstation]], [[bussterminal]], [[busstid]], [[busstidtabell]]}}
#:{{fraser|[[parkera bussen]]}}
#:{{grammatik|För att beskriva personer som sitter inom en buss passagerarutrymme används både "på bussen" och "i bussen", det förra vanligare än det senare.}}
#{{tagg|data}} [[databuss]]; flera parallella ledningar som bildar en huvudväg för signaler mellan olika delar i ett datorsystem
#ett stycke tuggtobak
#{{tagg|ålderdomligt}} man som tillhör (ofta underordnad) grupp förenad genom sysselsättning eller dylikt, vanligtvis soldater
#:''Karl XII:s käcka '''bussar''' kämpade tappert.''
#{{tagg|bildligt|kat=datorspel|kat2=luftfart|kat3=slang|text=flygspel, slang}} spelbart (av spelare kontrollerat) flygplan eller dylikt som manövrerar segt likt en buss
#:''Flyg inte det där planet, det är en '''buss'''.''
#:''Det här planet flyger som en '''buss'''.''
#:{{hyponymer|[[flygande buss]]}}
#:{{etymologi|Av {{härledning|sv|en|bus}} och ''[[flying bus]]'' i samma betydelse.}}
====Översättningar====
{{ö-topp|bil med fler än åtta passagerarplatser}}
*arabiska: {{ö|ar|حَافِلَة|f|tr=ḥaafila}}
*bokmål: {{ö+|no|buss|m}}
*danska: {{ö+|da|bus|u}}
*engelska: {{ö+|en|bus}}
*esperanto: {{ö+|eo|buso}}
*finska: {{ö+|fi|linja-auto}}, {{ö+|fi|bussi}}
*franska: {{ö+|fr|autobus|m}}, {{ö+|fr|bus|m}}, {{ö+|fr|car|m|not=bara sittplatser}}
*georgiska: {{ö+|ka|ავტობუსი}}
*grönländska: {{ö|kl|bussi}}
*hebreiska: {{ö+|he|אוֹטוֹבּוּס|m|tr=otobus}}
*indonesiska: {{ö+|id|bus}}
*isländska: {{ö+|is|strætisvagn|m}}, {{ö|is|áætlunarbíll|m}}, {{ö|is|almenningsvagn|m}}, {{ö|is|fólksflutningabíll|m}}, {{ö+|is|hópferðabíll|m}}
*japanska: {{ö+|ja|バス}} (''{{ö|ja|basu}}'')
*jiddisch: {{ö|yi|אויטאָבוס}}
*ladino: {{ö|lad|otobus|m}}
*lulesamiska: {{ö|smj|bussa}}
*nederländska: {{ö+|nl|bus}}
*nordsamiska: {{ö|se|busse}}
*polska: {{ö+|pl|autobus}}, {{ö+|pl|autokar}}
*portugisiska: {{ö+|pt|autocarro}}, {{ö+|pt|ônibus}}
*ryska: {{ö+|ru|автобус|m}}
*spanska: {{ö+|es|autobús|m}}
*swahili: {{ö+|sw|basi}}
*sydsamiska: {{ö|sma|busse}}
*tjeckiska: {{ö+|cs|autobus|m}}
*turkiska: {{ö+|tr|otobüs}}
*tyska: {{ö+|de|Autobus|m}}, {{ö+|de|Bus|m}}, {{ö+|de|Omnibus|m}}
{{ö-botten}}
{{ö-topp|ledningar i ett datorsystem}}
*bokmål: {{ö+|no|buss|m}}
*engelska: {{ö+|en|bus}}
*finska: {{ö+|fi|väylä}}
*franska: {{ö+|fr|faisceau|m}}
*japanska: {{ö+|ja|バス|tr=basu}}
*ryska: {{ö+|ru|шина|f|tr=šína}}
*tjeckiska: {{ö+|cs|sběrnice|f}}
*turkiska: {{ö+|tr|veriyolu}}
*tyska: {{ö+|de|Bus}}, {{ö+|de|Datenbus}}
{{ö-botten}}
==Danska==
===Verb===
'''buss'''
#{{böjning|da|verb|busse}}
==Estniska==
===Substantiv===
{{subst|et}}
'''buss'''
#{{tagg|fordon|kollektivtrafik|språk=et}} [[#Svenska|buss]]
#:{{synonymer|[[autobuss]]}}
==Skoltsamiska==
===Substantiv===
{{subst|sms}}
'''buss'''
#{{tagg|fordon|kollektivtrafik|språk=sms}} [[#Svenska|buss]]
2ap8rze0hiuklxau0ols776rxyz628n
axel
0
9910
4157550
4150533
2026-10-24T20:51:10Z
Vavřinec N.
43546
+cs: [[rameno]] (assisterat)
4157550
wikitext
text/x-wiki
{{se även|Axel}}
{{wikipedia|Axel (kroppsdel)}}
{{wikipedia|Axel (mekanik)}}
{{wikipedia|Hjulaxel (tåg)}}
{{wikipedia|Drivaxel}}
{{wikipedia|Axelmakterna}}
{{wikipedia|Axel (konståkning)}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar|fog=|pluralrot=axl}}
{{media|Gray326.png|vänster '''axel''' (kroppsdel) framifrån|Rollingstock axle.jpg|järnvägshjulpar med axel ('''hjulaxel''')|Cardan-joint intermediate-shaft topview animated.gif|kardanaxel ('''drivaxel''')}}
'''axel'''
*{{uttal|sv|ipa=ˈak.sɛl|region=Enligt SAOB ska ordet ha akut accent ak<sup>4</sup>sel<sup>1</sup> i betydelse 1, grav accent ak<sup>3</sup>sel<sup>2</sup> i övriga betydelser, snarlikt tomten/tomten och anden/anden.}}
#{{tagg|anatomi}} en kroppsdel; ovan- och yttersidan av [[arm]]ens fäste i [[torso]]n
#:''Jag har så ont i '''axeln'''.''
#:{{synonymer|[[skuldra]], [[ärdä]] ''(orsamål)''}}
#:{{besläktade ord|[[axla]]}}
#:{{sammansättningar|[[axelband]], [[axelbred]], [[axelbredd]], [[axelhåla]], [[axelklaff]], [[axellång]], [[axelrem]], [[axelryckning]], [[axelsjal]], [[axelschal]], [[axelvadd]], [[axelväska]]}}
#:{{fraser|[[se över axeln]]}}
#{{tagg|mekanik}} hjulaxel; stångliknande maskindel som [[hjul]] (eller något annat) [[rotera]]r runt
#:{{jämför|[[pivot]], [[pivå]], [[vridningsaxel]], [[axeltapp]], [[svängtapp]]}}
#:{{sammansättningar|[[axelbrott]], [[hjulaxel]], [[pendelaxel]], [[bakaxel]], [[vridningsaxel]], [[axeltapp]]}}
#{{tagg|mekanik|text=kort för}} drivaxel; långsträckt, [[rotera]]nde maskindel för överföring av mekanisk effekt (i form av [[rotationsfrekvens]] och [[vridmoment]])
#:{{sammansättningar|[[drivaxel]], [[kardanaxel]], [[axelkoppling]]}}
#{{tagg|text=abstrakt}} tänkt [[mittlinje]] kring vilken något [[rotera]]r eller ([[symmetrisk]]t) grupperar sig
#:{{sammansättningar|[[blomaxel]], [[jordaxel]], [[symmetriaxel]]}}
#{{tagg|matematik|text=kort för}} koordinataxel; rät [[linje]] utifrån vilken man definierar [[koordinat]]er
#:{{sammansättningar|[[koordinataxel]], [[x-axel]], [[y-axel]], [[z-axel]]}}
#{{tagg|politik|historia}} Axeln Rom-Berlin-Tokyo; [[allians]]en mellan [[axelmakterna]] under [[andra världskriget]]; utvidgat även andra föraktade allianser
#:{{sammansättningar|[[axelmakt]], [[axelmakterna]]}}
#:{{fraser|[[ondskans axelmakter]]}}
#{{tagg|sport|text=skridskoåkning}} hopp inom [[konståkning]] på [[skridsko]] där konståkaren hoppar upp framåt, och därför roterar ett halvt varv längre än andra hopp, d.v.s. ett (eller flera) och ett halvt varv i luften
#:''Han gjorde en perfekt trippel '''axel'''.''
#:{{sammansättningar|[[axelhoppet]]}}
#:{{etymologi|Eponym efter den norske konståkaren [[w:Axel R. Paulsen|Axel R. Paulsen]] (1885-1939).}}
:{{avgränsare}}
:{{besläktade ord|[[axial]], [[axiell]]}}
====Översättningar====
{{ö-topp|(anatomi) kroppsdel}}
*bokmål: {{ö+|no|skulder}}, {{ö+|no|aksel|f}}
*danska: {{ö+|da|skulder|u}}
*engelska: {{ö+|en|shoulder}}
*finska: {{ö+|fi|olka}}, {{ö+|fi|olkapää}}
*franska: {{ö+|fr|épaule|f}}
*frisiska: {{ö+|fy|skouder|n}}
*italienska: {{ö+|it|spalla|f}}
*japanska: {{ö+|ja|肩|tr=かた, kata}}
*jiddisch: {{ö|yi|אַקסל|tr=aksl}}
*katalanska: {{ö+|ca|espatlla}}
*nederländska: {{ö+|nl|schouder|m}}
*norn: {{ö|nrn|akkel}}
*nynorska: {{ö|nn|skulder|f}}, {{ö|nn|aksel|f}}
*polska: {{ö+|pl|bark|m}}, {{ö+|pl|ramię|n}}, {{ö|pl|obręcz barkowa|f|not=fackspråk}}
*portugisiska: {{ö+|pt|ombro|m}}
*ryska: {{ö+|ru|плечо|n}}
*spanska: {{ö+|es|hombro|m}}
*tjeckiska: {{ö+|cs|rameno|n}}
*tyska: {{ö+|de|Schulter}}, {{ö+|de|Achsel|f}}
{{ö-botten}}
{{ö-topp|(mekanik) hjulaxel}}
*alemanniska: {{ö|als|Achs}}
*belarusiska: {{ö|be|вось|f}}
*bokmål: {{ö+|no|aksel}}, {{ö+|no|aksling|m}}
*danska: {{ö+|da|aksel|u}}
*engelska: {{ö+|en|axle}}
*finska: {{ö+|fi|akseli}}
*franska: {{ö+|fr|essieu|m}}
*nederländska: {{ö+|nl|as|m}}
*nynorska: {{ö|nn|aksel|m}}, {{ö|nn|aksling|m}}
*polska: {{ö+|pl|oś|f}}
*portugisiska: {{ö+|pt|eixo|m}}
*ryska: {{ö+|ru|ось|f}}
*spanska: {{ö+|es|eje|m}}
*turkiska: {{ö+|tr|dingil}}
*tyska: {{ö+|de|Achse|f}}
*ukrainska: {{ö|uk|вісь|f}}
{{ö-botten}}
{{ö-topp|(mekanik) drivaxel}}
*danska: {{ö+|da|aksel|u}}
*engelska: {{ö+|en|shaft}}, {{ö+|en|drive shaft}}
*finska: {{ö+|fi|kardaaniakseli}}, {{ö+|fi|vetoakseli}}
*franska: {{ö+|fr|axe|m}}
*nederländska: {{ö+|nl|as|m}}, {{ö+|nl|drijfas|m}}
*polska: {{ö+|pl|wał|m}}
*portugisiska: {{ö|pt|veio de transmissão|m}}
*ryska: {{ö+|ru|ось|f}}
*spanska: {{ö+|es|eje|m}}
*tyska: {{ö+|de|Welle|f}}
{{ö-botten}}
{{ö-topp|(abstrakt) tänkt linje}}
*bokmål: {{ö+|no|akse|m}}
*engelska: {{ö+|en|axis}}
*nederländska: {{ö+|nl|as}}
*nynorska: {{ö|nn|akse|m}}
*polska: {{ö+|pl|oś|f}}
*portugisiska: {{ö+|pt|eixo|m}}
*ryska: {{ö+|ru|ось|f}}
*tyska: {{ö+|de|Achse|f}}
{{ö-botten}}
{{ö-topp|(matematik) koordinataxel}}
*bokmål: {{ö+|no|akse|m}}
*danska: {{ö+|da|akse|u}}
*engelska: {{ö+|en|axis}}
*franska: {{ö+|fr|axe|m}}
*nederländska: {{ö+|nl|as}}
*polska: {{ö+|pl|oś|f}}
*portugisiska: {{ö+|pt|eixo|m}}
*spanska: {{ö+|es|eje|m}}
*tyska: {{ö+|de|Achse|f}}
{{ö-botten}}
{{ö-topp|(historia) Axeln Rom-Berlin-Tokyo}}
*engelska: {{ö+|en|Axis}}
*finska: {{ö+|fi|akseli}}
*nederländska: {{ö|nl|Asmogendheden|p}}
*polska: {{ö|pl|Oś|f}}
*tyska: {{ö+|de|Achse|f}}
{{ö-botten}}
{{ö-topp|(sport) konståkningshopp}}
*engelska: {{ö+|en|Axel}}
*nederländska: {{ö+|nl|axel}}
*polska: {{ö+|pl|Axel|m}}
*tyska: {{ö+|de|Axel|m}}
{{ö-botten}}
f1shdo5qdkfay9afw3b57re5wlh5bt0
4157551
4157550
2026-10-24T20:51:31Z
Vavřinec N.
43546
+cs: [[osa]] (assisterat)
4157551
wikitext
text/x-wiki
{{se även|Axel}}
{{wikipedia|Axel (kroppsdel)}}
{{wikipedia|Axel (mekanik)}}
{{wikipedia|Hjulaxel (tåg)}}
{{wikipedia|Drivaxel}}
{{wikipedia|Axelmakterna}}
{{wikipedia|Axel (konståkning)}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar|fog=|pluralrot=axl}}
{{media|Gray326.png|vänster '''axel''' (kroppsdel) framifrån|Rollingstock axle.jpg|järnvägshjulpar med axel ('''hjulaxel''')|Cardan-joint intermediate-shaft topview animated.gif|kardanaxel ('''drivaxel''')}}
'''axel'''
*{{uttal|sv|ipa=ˈak.sɛl|region=Enligt SAOB ska ordet ha akut accent ak<sup>4</sup>sel<sup>1</sup> i betydelse 1, grav accent ak<sup>3</sup>sel<sup>2</sup> i övriga betydelser, snarlikt tomten/tomten och anden/anden.}}
#{{tagg|anatomi}} en kroppsdel; ovan- och yttersidan av [[arm]]ens fäste i [[torso]]n
#:''Jag har så ont i '''axeln'''.''
#:{{synonymer|[[skuldra]], [[ärdä]] ''(orsamål)''}}
#:{{besläktade ord|[[axla]]}}
#:{{sammansättningar|[[axelband]], [[axelbred]], [[axelbredd]], [[axelhåla]], [[axelklaff]], [[axellång]], [[axelrem]], [[axelryckning]], [[axelsjal]], [[axelschal]], [[axelvadd]], [[axelväska]]}}
#:{{fraser|[[se över axeln]]}}
#{{tagg|mekanik}} hjulaxel; stångliknande maskindel som [[hjul]] (eller något annat) [[rotera]]r runt
#:{{jämför|[[pivot]], [[pivå]], [[vridningsaxel]], [[axeltapp]], [[svängtapp]]}}
#:{{sammansättningar|[[axelbrott]], [[hjulaxel]], [[pendelaxel]], [[bakaxel]], [[vridningsaxel]], [[axeltapp]]}}
#{{tagg|mekanik|text=kort för}} drivaxel; långsträckt, [[rotera]]nde maskindel för överföring av mekanisk effekt (i form av [[rotationsfrekvens]] och [[vridmoment]])
#:{{sammansättningar|[[drivaxel]], [[kardanaxel]], [[axelkoppling]]}}
#{{tagg|text=abstrakt}} tänkt [[mittlinje]] kring vilken något [[rotera]]r eller ([[symmetrisk]]t) grupperar sig
#:{{sammansättningar|[[blomaxel]], [[jordaxel]], [[symmetriaxel]]}}
#{{tagg|matematik|text=kort för}} koordinataxel; rät [[linje]] utifrån vilken man definierar [[koordinat]]er
#:{{sammansättningar|[[koordinataxel]], [[x-axel]], [[y-axel]], [[z-axel]]}}
#{{tagg|politik|historia}} Axeln Rom-Berlin-Tokyo; [[allians]]en mellan [[axelmakterna]] under [[andra världskriget]]; utvidgat även andra föraktade allianser
#:{{sammansättningar|[[axelmakt]], [[axelmakterna]]}}
#:{{fraser|[[ondskans axelmakter]]}}
#{{tagg|sport|text=skridskoåkning}} hopp inom [[konståkning]] på [[skridsko]] där konståkaren hoppar upp framåt, och därför roterar ett halvt varv längre än andra hopp, d.v.s. ett (eller flera) och ett halvt varv i luften
#:''Han gjorde en perfekt trippel '''axel'''.''
#:{{sammansättningar|[[axelhoppet]]}}
#:{{etymologi|Eponym efter den norske konståkaren [[w:Axel R. Paulsen|Axel R. Paulsen]] (1885-1939).}}
:{{avgränsare}}
:{{besläktade ord|[[axial]], [[axiell]]}}
====Översättningar====
{{ö-topp|(anatomi) kroppsdel}}
*bokmål: {{ö+|no|skulder}}, {{ö+|no|aksel|f}}
*danska: {{ö+|da|skulder|u}}
*engelska: {{ö+|en|shoulder}}
*finska: {{ö+|fi|olka}}, {{ö+|fi|olkapää}}
*franska: {{ö+|fr|épaule|f}}
*frisiska: {{ö+|fy|skouder|n}}
*italienska: {{ö+|it|spalla|f}}
*japanska: {{ö+|ja|肩|tr=かた, kata}}
*jiddisch: {{ö|yi|אַקסל|tr=aksl}}
*katalanska: {{ö+|ca|espatlla}}
*nederländska: {{ö+|nl|schouder|m}}
*norn: {{ö|nrn|akkel}}
*nynorska: {{ö|nn|skulder|f}}, {{ö|nn|aksel|f}}
*polska: {{ö+|pl|bark|m}}, {{ö+|pl|ramię|n}}, {{ö|pl|obręcz barkowa|f|not=fackspråk}}
*portugisiska: {{ö+|pt|ombro|m}}
*ryska: {{ö+|ru|плечо|n}}
*spanska: {{ö+|es|hombro|m}}
*tjeckiska: {{ö+|cs|rameno|n}}
*tyska: {{ö+|de|Schulter}}, {{ö+|de|Achsel|f}}
{{ö-botten}}
{{ö-topp|(mekanik) hjulaxel}}
*alemanniska: {{ö|als|Achs}}
*belarusiska: {{ö|be|вось|f}}
*bokmål: {{ö+|no|aksel}}, {{ö+|no|aksling|m}}
*danska: {{ö+|da|aksel|u}}
*engelska: {{ö+|en|axle}}
*finska: {{ö+|fi|akseli}}
*franska: {{ö+|fr|essieu|m}}
*nederländska: {{ö+|nl|as|m}}
*nynorska: {{ö|nn|aksel|m}}, {{ö|nn|aksling|m}}
*polska: {{ö+|pl|oś|f}}
*portugisiska: {{ö+|pt|eixo|m}}
*ryska: {{ö+|ru|ось|f}}
*spanska: {{ö+|es|eje|m}}
*turkiska: {{ö+|tr|dingil}}
*tyska: {{ö+|de|Achse|f}}
*ukrainska: {{ö|uk|вісь|f}}
{{ö-botten}}
{{ö-topp|(mekanik) drivaxel}}
*danska: {{ö+|da|aksel|u}}
*engelska: {{ö+|en|shaft}}, {{ö+|en|drive shaft}}
*finska: {{ö+|fi|kardaaniakseli}}, {{ö+|fi|vetoakseli}}
*franska: {{ö+|fr|axe|m}}
*nederländska: {{ö+|nl|as|m}}, {{ö+|nl|drijfas|m}}
*polska: {{ö+|pl|wał|m}}
*portugisiska: {{ö|pt|veio de transmissão|m}}
*ryska: {{ö+|ru|ось|f}}
*spanska: {{ö+|es|eje|m}}
*tyska: {{ö+|de|Welle|f}}
{{ö-botten}}
{{ö-topp|(abstrakt) tänkt linje}}
*bokmål: {{ö+|no|akse|m}}
*engelska: {{ö+|en|axis}}
*nederländska: {{ö+|nl|as}}
*nynorska: {{ö|nn|akse|m}}
*polska: {{ö+|pl|oś|f}}
*portugisiska: {{ö+|pt|eixo|m}}
*ryska: {{ö+|ru|ось|f}}
*tyska: {{ö+|de|Achse|f}}
{{ö-botten}}
{{ö-topp|(matematik) koordinataxel}}
*bokmål: {{ö+|no|akse|m}}
*danska: {{ö+|da|akse|u}}
*engelska: {{ö+|en|axis}}
*franska: {{ö+|fr|axe|m}}
*nederländska: {{ö+|nl|as}}
*polska: {{ö+|pl|oś|f}}
*portugisiska: {{ö+|pt|eixo|m}}
*spanska: {{ö+|es|eje|m}}
*tjeckiska: {{ö+|cs|osa|f}}
*tyska: {{ö+|de|Achse|f}}
{{ö-botten}}
{{ö-topp|(historia) Axeln Rom-Berlin-Tokyo}}
*engelska: {{ö+|en|Axis}}
*finska: {{ö+|fi|akseli}}
*nederländska: {{ö|nl|Asmogendheden|p}}
*polska: {{ö|pl|Oś|f}}
*tyska: {{ö+|de|Achse|f}}
{{ö-botten}}
{{ö-topp|(sport) konståkningshopp}}
*engelska: {{ö+|en|Axel}}
*nederländska: {{ö+|nl|axel}}
*polska: {{ö+|pl|Axel|m}}
*tyska: {{ö+|de|Axel|m}}
{{ö-botten}}
faobtfpu9mufa6t6k31zytnj9naf9us
bröd
0
14422
4157568
4127363
2026-10-24T21:04:12Z
Vavřinec N.
43546
+cs: [[chléb]] (assisterat)
4157568
wikitext
text/x-wiki
{{wikipedia}}
{{se även|brød}}
==Svenska==
===Substantiv===
{{sv-subst-t-0}}
{{media|Mixed_bread_loaves.jpg|Bröd}}
'''bröd'''
*{{uttal|sv|ljud=sv-bröd.ogg|ipa=brøː(d)|enkel=brö:(d)}}
#{{tagg|kat=mat}} baslivsmedel oftast [[baka]]t av [[mjöl]] på en någon form av säd, vanligtvis med tillsats av [[jäst]]
#:'''''Brödet''' fick jäsa innan det bakades i ugnen.''
#:{{konstr|[[korv med bröd]], kaffe och bröd}}
#allmänt om [[livsmedel]]; [[brödföda]]
#:''Giv oss vårt dagliga '''bröd'''.''
:{{avgränsare}}
:{{varianter|[[brö]] ''(talspråkligt)''}}
:{{hyponymer|{{länk|sv|barkbröd, bondbröd, formbröd, franskbröd, fullkornsbröd, kaffebröd, knäckebröd, kuvertbröd, matbröd, paltbröd, rågbröd, skådebröd, småbröd, ströbröd, surdegsbröd, tunnbröd, vetebröd, vörtbröd, wienerbröd}}}}
:{{sammansättningar|{{länk|sv|brödbagge, brödbak, brödbit, brödfrukt, brödföda, brödkaka, brödkavel, brödkniv, brödkorg, brödpudding, brödrost, brödsbrytelse, brödskiva, brödskriveri, brödsmula, brödspade, brödstil, brödtext, brödticka, brödtärning}}}}
:{{fraser|[[Den enes bröd är den andres död.]], [[I brist på bröd äter man limpa.]]}}
:{{grammatik|Talspråkligt förekommer ibland böjningarna [[bröt]]([[bröts|s]]), [[brön]]([[bröns|s]]) och [[bröna]]([[brönas|s]]). Se vidare ''[[brö]]''. Jämför ''[[träd]]''.}}
:{{etymologi|{{belagt|sv|1200|t}}<ref>{{källa-so}}</ref> Som {{härledning|sv|gmq-fsv|brøþ}}, besläktat med verbet ''[[brygga#Verb|brygga]]''. Jämför engelska ''[[bread]]'', tyska ''[[Brot]]''. Ursprungligen troligtvis ”något jäst”.}}
:{{seäven|[[kavring]], [[kuse]], [[lev]], [[limpa]]}}
====Översättningar====
{{ö-topp|livsmedel bakat på mjöl}}
*afrikaans: {{ö+|af|brood}}
*albanska: {{ö+|sq|bukë|f}}
*arabiska: {{ö+|ar|خُبْز|m|tr=khubz}}
*aragonska: {{ö|an|pan|m}}
*armeniska: {{ö+|hy|հաց}} (hats)
*baskiska: {{ö+|eu|ogi}}
*belarusiska: {{ö+|be|хлеб|m}}
*bokmål: {{ö+|no|brød|n}}
*bosniska: {{ö|bs|hljeb|m}}
*bretonska: {{ö+|br|bara}}
*bulgariska: {{ö+|bg|хляб|m}} (chljab)
*danska: {{ö+|da|brød|n}}
*engelska: {{ö+|en|bread}}
*esperanto: {{ö+|eo|pano}}
*estniska: {{ö+|et|leib}}
*ewe: {{ö|ee|abolo}}
*finska: {{ö+|fi|leipä}}
*franska: {{ö+|fr|pain|m}}
*friuliska: {{ö|fur|pan|m}}
*färöiska: {{ö+|fo|breyð}}
*galiciska: {{ö+|gl|pan|m}}
*grekiska: {{ö+|el|ψωμί|n|tr=psomí}}, {{ö+|el|άρτος|m|tr=ártos}}
*grönländska: {{ö|kl|iffiaq}}
*hebreiska: {{ö+|he|לחם|m}} (lekhem)
*ido: {{ö+|io|pano}}
*indonesiska: {{ö+|id|roti}}
*interlingua: {{ö+|ia|pan}}
*inuktitut: {{ö|iu|ᕿᖂᔭᖅ}} (qiquujaq)
*iriska: {{ö+|ga|arán|m}}
*isländska: {{ö+|is|brauð}}
*italienska: {{ö+|it|pane|m}}
*japanska: {{ö+|ja|パン}} (''{{ö+|ja|pan}}'')
*katalanska: {{ö+|ca|pa|m}}
*kinesiska: {{ö+|zh|麵包}} (miànbāo)
*koreanska: {{ö+|ko|빵}} (ppang)
*krimtatariska: {{ö|crh|ötmek}}
*lakota: {{ö|lkt|aǧúyapi}}
*latin: {{ö+|la|panis|m}}
*lettiska: {{ö+|lv|maize}}
*litauiska: {{ö+|lt|duona|f}}
*malajiska: {{ö+|ms|roti}}
*maltesiska: {{ö|mt|ħobża|f}}
*manx: {{ö+|gv|arran|m}}
*marathi: {{ö|mr|रोटी}} (rotī), {{ö|mr|भाकरी}} (bhākrī), {{ö+|mr|पाव}} (pāv)
*nederländska: {{ö+|nl|brood|n}}
*nynorska: {{ö|nn|brød|n}}
*polska: {{ö+|pl|chleb|m}}
*portugisiska: {{ö+|pt|pão|m}}
*rumänska: {{ö+|ro|pâine|f}}
*rwanda: {{ö|rw|gati}}
*ryska: {{ö+|ru|хлеб|m}} (chleb)
*sanskrit: {{ö+|sa|पूपः}} (pūpaḥ)
*slovakiska: {{ö+|sk|chlieb|m}}
*slovenska: {{ö+|sl|kruh|m}}
*somaliska: {{ö+|so|rooti}}
*spanska: {{ö+|es|pan|m}}
*swahili: {{ö+|sw|mkate}}
*sydsamiska: {{ö|sma|laejpie}}
*tagalog: {{ö+|tl|tinapay}}
*tetum: {{ö|tet|paun}}
*thai: {{ö+|th|ขนมปัง}} (kànŏm bpang)
*tjeckiska: {{ö+|cs|chléb|m}}
*turkiska: {{ö+|tr|ekmek}}
*tyska: {{ö+|de|Brot|n}}
*ukrainska: {{ö+|uk|хліб|m}} (chlib)
*ungerska: {{ö+|hu|kenyér}}
*vepsiska: {{ö|vep|leib}}
{{ö-botten}}
==Källor==
<references/>
fqoyk5e4j3ogthmykq8fi2zjwwulwfm
4157569
4157568
2026-10-24T21:04:22Z
Vavřinec N.
43546
+cs: [[chleba]] (assisterat)
4157569
wikitext
text/x-wiki
{{wikipedia}}
{{se även|brød}}
==Svenska==
===Substantiv===
{{sv-subst-t-0}}
{{media|Mixed_bread_loaves.jpg|Bröd}}
'''bröd'''
*{{uttal|sv|ljud=sv-bröd.ogg|ipa=brøː(d)|enkel=brö:(d)}}
#{{tagg|kat=mat}} baslivsmedel oftast [[baka]]t av [[mjöl]] på en någon form av säd, vanligtvis med tillsats av [[jäst]]
#:'''''Brödet''' fick jäsa innan det bakades i ugnen.''
#:{{konstr|[[korv med bröd]], kaffe och bröd}}
#allmänt om [[livsmedel]]; [[brödföda]]
#:''Giv oss vårt dagliga '''bröd'''.''
:{{avgränsare}}
:{{varianter|[[brö]] ''(talspråkligt)''}}
:{{hyponymer|{{länk|sv|barkbröd, bondbröd, formbröd, franskbröd, fullkornsbröd, kaffebröd, knäckebröd, kuvertbröd, matbröd, paltbröd, rågbröd, skådebröd, småbröd, ströbröd, surdegsbröd, tunnbröd, vetebröd, vörtbröd, wienerbröd}}}}
:{{sammansättningar|{{länk|sv|brödbagge, brödbak, brödbit, brödfrukt, brödföda, brödkaka, brödkavel, brödkniv, brödkorg, brödpudding, brödrost, brödsbrytelse, brödskiva, brödskriveri, brödsmula, brödspade, brödstil, brödtext, brödticka, brödtärning}}}}
:{{fraser|[[Den enes bröd är den andres död.]], [[I brist på bröd äter man limpa.]]}}
:{{grammatik|Talspråkligt förekommer ibland böjningarna [[bröt]]([[bröts|s]]), [[brön]]([[bröns|s]]) och [[bröna]]([[brönas|s]]). Se vidare ''[[brö]]''. Jämför ''[[träd]]''.}}
:{{etymologi|{{belagt|sv|1200|t}}<ref>{{källa-so}}</ref> Som {{härledning|sv|gmq-fsv|brøþ}}, besläktat med verbet ''[[brygga#Verb|brygga]]''. Jämför engelska ''[[bread]]'', tyska ''[[Brot]]''. Ursprungligen troligtvis ”något jäst”.}}
:{{seäven|[[kavring]], [[kuse]], [[lev]], [[limpa]]}}
====Översättningar====
{{ö-topp|livsmedel bakat på mjöl}}
*afrikaans: {{ö+|af|brood}}
*albanska: {{ö+|sq|bukë|f}}
*arabiska: {{ö+|ar|خُبْز|m|tr=khubz}}
*aragonska: {{ö|an|pan|m}}
*armeniska: {{ö+|hy|հաց}} (hats)
*baskiska: {{ö+|eu|ogi}}
*belarusiska: {{ö+|be|хлеб|m}}
*bokmål: {{ö+|no|brød|n}}
*bosniska: {{ö|bs|hljeb|m}}
*bretonska: {{ö+|br|bara}}
*bulgariska: {{ö+|bg|хляб|m}} (chljab)
*danska: {{ö+|da|brød|n}}
*engelska: {{ö+|en|bread}}
*esperanto: {{ö+|eo|pano}}
*estniska: {{ö+|et|leib}}
*ewe: {{ö|ee|abolo}}
*finska: {{ö+|fi|leipä}}
*franska: {{ö+|fr|pain|m}}
*friuliska: {{ö|fur|pan|m}}
*färöiska: {{ö+|fo|breyð}}
*galiciska: {{ö+|gl|pan|m}}
*grekiska: {{ö+|el|ψωμί|n|tr=psomí}}, {{ö+|el|άρτος|m|tr=ártos}}
*grönländska: {{ö|kl|iffiaq}}
*hebreiska: {{ö+|he|לחם|m}} (lekhem)
*ido: {{ö+|io|pano}}
*indonesiska: {{ö+|id|roti}}
*interlingua: {{ö+|ia|pan}}
*inuktitut: {{ö|iu|ᕿᖂᔭᖅ}} (qiquujaq)
*iriska: {{ö+|ga|arán|m}}
*isländska: {{ö+|is|brauð}}
*italienska: {{ö+|it|pane|m}}
*japanska: {{ö+|ja|パン}} (''{{ö+|ja|pan}}'')
*katalanska: {{ö+|ca|pa|m}}
*kinesiska: {{ö+|zh|麵包}} (miànbāo)
*koreanska: {{ö+|ko|빵}} (ppang)
*krimtatariska: {{ö|crh|ötmek}}
*lakota: {{ö|lkt|aǧúyapi}}
*latin: {{ö+|la|panis|m}}
*lettiska: {{ö+|lv|maize}}
*litauiska: {{ö+|lt|duona|f}}
*malajiska: {{ö+|ms|roti}}
*maltesiska: {{ö|mt|ħobża|f}}
*manx: {{ö+|gv|arran|m}}
*marathi: {{ö|mr|रोटी}} (rotī), {{ö|mr|भाकरी}} (bhākrī), {{ö+|mr|पाव}} (pāv)
*nederländska: {{ö+|nl|brood|n}}
*nynorska: {{ö|nn|brød|n}}
*polska: {{ö+|pl|chleb|m}}
*portugisiska: {{ö+|pt|pão|m}}
*rumänska: {{ö+|ro|pâine|f}}
*rwanda: {{ö|rw|gati}}
*ryska: {{ö+|ru|хлеб|m}} (chleb)
*sanskrit: {{ö+|sa|पूपः}} (pūpaḥ)
*slovakiska: {{ö+|sk|chlieb|m}}
*slovenska: {{ö+|sl|kruh|m}}
*somaliska: {{ö+|so|rooti}}
*spanska: {{ö+|es|pan|m}}
*swahili: {{ö+|sw|mkate}}
*sydsamiska: {{ö|sma|laejpie}}
*tagalog: {{ö+|tl|tinapay}}
*tetum: {{ö|tet|paun}}
*thai: {{ö+|th|ขนมปัง}} (kànŏm bpang)
*tjeckiska: {{ö+|cs|chléb|m}}, {{ö+|cs|chleba|m}}
*turkiska: {{ö+|tr|ekmek}}
*tyska: {{ö+|de|Brot|n}}
*ukrainska: {{ö+|uk|хліб|m}} (chlib)
*ungerska: {{ö+|hu|kenyér}}
*vepsiska: {{ö|vep|leib}}
{{ö-botten}}
==Källor==
<references/>
ngd681mecrdpo24mlxrxsp63twdnfit
ängel
0
16455
4157531
4134998
2026-10-24T20:41:23Z
Vavřinec N.
43546
+cs: [[anděl]] (assisterat)
4157531
wikitext
text/x-wiki
{{se även|angel|ángel|Ángel}}
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar|pluralrot=ängl|fog=}}
'''ängel''' {{u}}
#{{tagg|religion}} [[sändebud]] för [[gudom]]
#:''Gud skickade en '''ängel''' till jorden.''
#:{{hyponymer|[[kerub]], [[seraf]]}}
#{{tagg|överfört}} särskilt [[god]] och [[hjälpsam]] människa
#:''Hon är en '''ängel''', jag vet inte hur jag skulle klarat det här utan henne.''
:{{avgränsare}}
:{{antonymer|[[demon]]}}
:{{etymologi|Av {{härledning|sv|gmq-fsv|ængil}}.}}
:{{sammansättningar|[[dödsängel]], [[havsängel]], [[skyddsängel]], [[änglabarn]], [[änglahår]], [[änglakör]], [[änglalik]], [[änglaspel]], [[änglatrumpet]], [[änglavakt]], [[ärkeängel]]}}
:{{seäven-bring|Ängel|Kärlek|Hedersman|Skönhet|Behag|Botemedel}}
====Översättningar====
{{ö-topp|gudomligt sändebud}}
*arabiska: {{ö|ar|ملاك}}
*belarusiska: {{ö|be|анёл|m}}, {{ö|be|а́нгел|m}}
*bokmål: {{ö+|no|engel|m}}
*danska: {{ö+|da|engel}}
*engelska: {{ö+|en|angel}}
*esperanto: {{ö|eo|anĝelo}}
*estniska: {{ö+|et|ingel}}
*finska: {{ö+|fi|enkeli}}
*franska: {{ö+|fr|ange|m}}
*frisiska: {{ö|fy|ingel}}
*grekiska: (angelos klassisk, ibland modern), {{ö+|el|άγγελος|m}} (angelos, modern)
*hebreiska: {{ö+|he|מַלְאָךְ|m}} (mal'akh), {{ö+|he|כְּרוּב|m}} (khrub)
*indonesiska: {{ö+|id|malaikat}}
*interlingua: {{ö|ia|angelo}}
*isländska: {{ö+|is|engill|m}}
*italienska: {{ö+|it|angelo}}
*japanska: {{ö+|ja|天使}} (てんし, tenshi)
*kinesiska: {{ö+|zh|天使}} (tiānshǐ)
*koreanska: {{ö+|ko|천사}} [天使] (cheonsa)
*latin: {{ö+|la|angelus|m}}
*nederländska: {{ö+|nl|engel|m}}
*polska: {{ö+|pl|anioł|m}}
*portugisiska: {{ö+|pt|anjo|m}}
*ryska: {{ö+|ru|ангел}}
*spanska: {{ö+|es|ángel|m}}
*sydsamiska: {{ö|sma|engkele}}
*tjeckiska: {{ö+|cs|anděl|m}}
*turkiska: {{ö+|tr|melek}}
*tyska: {{ö+|de|Engel|m}}
*ukrainska: {{ö+|uk|а́нгел|m}}
*ungerska: {{ö+|hu|angyal}}
*älvdalska: {{ö|ovd|ainggel|m}}
{{ö-botten}}
0hjgn5enhay6scd69j3967qmhjykroe
arbete
0
17468
4157539
4005603
2026-10-24T20:46:32Z
Vavřinec N.
43546
+cs: [[práce]] (assisterat)
4157539
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-n|förled=arbets}}
'''arbete'''
#{{tagg|fysik}} en [[fysik]]alisk [[storhet]] som ofta mäts i SI-enheten [[joule]]; förbrukad [[energi]], produkt av [[kraft]] och [[sträcka]]
#sysselsättning som kräver ansträngning och medför förväntan om resultat
#:{{etymologi|Av {{härledning|sv|gmq-fsv|arbeide, arbeyd, arbede, arbeyte, arbeyt, arbete, ærbete, arbet}}, av {{härledning|sv|gml|arbeit}}.}}
#:{{synonymer|[[arbet]] ''(poetiskt)'', [[jobb]], [[kneg]]}}
#:{{antonymer|[[vila]], [[maskning]]}}
#:{{besläktade ord|[[arbeta]], [[arbetare]], [[arbeterska]], [[arbetning]], [[arbetsform]], [[arbetsfri]], [[arbetsfrihet]], [[arbetsför]], [[arbetsförhet]], [[arbetslös]], [[arbetslöshet]], [[arbetsam]], [[arbetsamhet]], [[arvode]]}}
#:{{sammansättningar|[[arbetsansökan]], [[arbetsbelastning]], [[arbetserfarenhet]], [[arbetsförmedling]], [[arbetsgivare]], [[arbetsgrupp]], [[arbetsintervju]], [[arbetsklimat]], [[arbetskläder]], [[arbetsliv]], [[arbetslivserfarenhet]], [[arbetsmarknad]], [[arbetsmoment]], [[arbetsoförmögen]], [[arbetsplats]], [[arbetsrum]], [[arbetsskada]], [[arbetsskicklighet]], [[arbetssko]], [[arbetsskygg]], [[arbetstempo]], [[arbetstid]], [[arbetstillfälle]], [[arbetstillstånd]], [[arbetstimme]], [[arbetsuppgift]], [[barnarbete]], [[beredskapsarbete]], [[dagsarbete]], [[deltidsarbete]], [[dubbelarbete]], [[efterarbete]], [[extraarbete]], [[forskningsarbete]], [[förarbete]], [[förvärvsarbete]], [[grupparbete]], [[hemarbete]], [[kontorsarbete]], [[kroppsarbete]], [[kvinnoarbete]], [[kvällsarbete]], [[köksarbete]], [[lagarbete]], [[lönearbete]], [[medarbete]], [[morgonarbete]], [[motarbete]], [[nattarbete]], [[närarbete]], [[pappersarbete]], [[samarbete]], [[samlingsarbete]], [[själsarbete]], [[slavarbete]], [[skogsarbete]], [[söndagsarbete]], [[tankearbete]], [[timarbete]], [[trälarbete]], [[vardagsarbete]], [[vinterarbete]], [[vårarbete]], [[årsarbete]], [[övertidsarbete]]}}
#{{tagg|kat=konst}} [[konstnärligt]] [[verk]]
====Översättningar====
{{ö-topp|fysikalisk storhet}}
*albanska: {{ö+|sq|punë}}
*danska: {{ö+|da|arbejde|n}}
*engelska: {{ö+|en|work}}
*finska: {{ö+|fi|työ}}
*franska: {{ö+|fr|travail|m}}
*nederländska: {{ö+|nl|arbeid}}
*portugisiska: {{ö+|pt|trabalho}}
*tjeckiska: {{ö+|cs|práce|f}}
*tyska: {{ö+|de|Arbeit|f}} <sup>7</sup>
{{ö-botten}}
{{ö-topp|sysselsättning}}
*albanska: {{ö+|sq|punë}}, {{ö+|sq|veprimtari}}
*arabiska: {{ö+|ar|عَمَل|m|tr=ʕamal}}
*belarusiska: {{ö+|be|праца|f}}
*bosniska: {{ö|bs|posao|m}}
*bretonska: {{ö+|br|labour}}
*danska: {{ö+|da|job|n}}, {{ö+|da|arbejde|n}}
*engelska: {{ö+|en|job}}, {{ö+|en|work}}, {{ö+|en|labour}}, {{ö+|en|labor}}
*esperanto: {{ö+|eo|laboro}}
*finska: {{ö+|fi|työ}}
*franska: {{ö+|fr|travail|m}}, {{ö+|fr|boulot|m}}, {{ö+|fr|emploi|m}}
*färöiska: {{ö+|fo|arbeiði|n}}
*hebreiska: {{ö+|he|עֲבוֹדָה|f|tr=avodá}}
*indonesiska: {{ö+|id|kerja}}
*italienska: {{ö+|it|lavoro}}
*japanska: {{ö+|ja|仕事}} ({{ö+|ja|しごと}}, ''shigoto''), {{ö+|ja|働き}} ({{ö+|ja|はたらき}}, ''{{ö|ja|hataraki}}'')
*nederländska: {{ö+|nl|werk|n}}
*nordsamiska: {{ö|se|bargu}}
*polska: {{ö+|pl|praca|f}}, {{ö+|pl|robota|f}}
*portugisiska: {{ö+|pt|trabalho}}
*ryska: {{ö+|ru|работа|f}}, {{ö+|ru|труд|m}}
*spanska: {{ö+|es|trabajo|m}}
*tyska: {{ö+|de|Arbeit|f}}
*ukrainska: {{ö+|uk|робота|f}}, {{ö+|uk|праця|f}}
{{ö-botten}}
{{ö-topp|konstnärligt verk}}
*nederländska: {{ö+|nl|werk|n}}
*tyska: {{ö+|de|Arbeit|f}}, {{ö+|de|Werk|n}}
{{ö-botten}}
jm7ntgjjynv1twzfvs940t1k85slzeo
4157540
4157539
2026-10-24T20:46:39Z
Vavřinec N.
43546
+cs: [[práce]] (assisterat)
4157540
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-n|förled=arbets}}
'''arbete'''
#{{tagg|fysik}} en [[fysik]]alisk [[storhet]] som ofta mäts i SI-enheten [[joule]]; förbrukad [[energi]], produkt av [[kraft]] och [[sträcka]]
#sysselsättning som kräver ansträngning och medför förväntan om resultat
#:{{etymologi|Av {{härledning|sv|gmq-fsv|arbeide, arbeyd, arbede, arbeyte, arbeyt, arbete, ærbete, arbet}}, av {{härledning|sv|gml|arbeit}}.}}
#:{{synonymer|[[arbet]] ''(poetiskt)'', [[jobb]], [[kneg]]}}
#:{{antonymer|[[vila]], [[maskning]]}}
#:{{besläktade ord|[[arbeta]], [[arbetare]], [[arbeterska]], [[arbetning]], [[arbetsform]], [[arbetsfri]], [[arbetsfrihet]], [[arbetsför]], [[arbetsförhet]], [[arbetslös]], [[arbetslöshet]], [[arbetsam]], [[arbetsamhet]], [[arvode]]}}
#:{{sammansättningar|[[arbetsansökan]], [[arbetsbelastning]], [[arbetserfarenhet]], [[arbetsförmedling]], [[arbetsgivare]], [[arbetsgrupp]], [[arbetsintervju]], [[arbetsklimat]], [[arbetskläder]], [[arbetsliv]], [[arbetslivserfarenhet]], [[arbetsmarknad]], [[arbetsmoment]], [[arbetsoförmögen]], [[arbetsplats]], [[arbetsrum]], [[arbetsskada]], [[arbetsskicklighet]], [[arbetssko]], [[arbetsskygg]], [[arbetstempo]], [[arbetstid]], [[arbetstillfälle]], [[arbetstillstånd]], [[arbetstimme]], [[arbetsuppgift]], [[barnarbete]], [[beredskapsarbete]], [[dagsarbete]], [[deltidsarbete]], [[dubbelarbete]], [[efterarbete]], [[extraarbete]], [[forskningsarbete]], [[förarbete]], [[förvärvsarbete]], [[grupparbete]], [[hemarbete]], [[kontorsarbete]], [[kroppsarbete]], [[kvinnoarbete]], [[kvällsarbete]], [[köksarbete]], [[lagarbete]], [[lönearbete]], [[medarbete]], [[morgonarbete]], [[motarbete]], [[nattarbete]], [[närarbete]], [[pappersarbete]], [[samarbete]], [[samlingsarbete]], [[själsarbete]], [[slavarbete]], [[skogsarbete]], [[söndagsarbete]], [[tankearbete]], [[timarbete]], [[trälarbete]], [[vardagsarbete]], [[vinterarbete]], [[vårarbete]], [[årsarbete]], [[övertidsarbete]]}}
#{{tagg|kat=konst}} [[konstnärligt]] [[verk]]
====Översättningar====
{{ö-topp|fysikalisk storhet}}
*albanska: {{ö+|sq|punë}}
*danska: {{ö+|da|arbejde|n}}
*engelska: {{ö+|en|work}}
*finska: {{ö+|fi|työ}}
*franska: {{ö+|fr|travail|m}}
*nederländska: {{ö+|nl|arbeid}}
*portugisiska: {{ö+|pt|trabalho}}
*tjeckiska: {{ö+|cs|práce|f}}
*tyska: {{ö+|de|Arbeit|f}} <sup>7</sup>
{{ö-botten}}
{{ö-topp|sysselsättning}}
*albanska: {{ö+|sq|punë}}, {{ö+|sq|veprimtari}}
*arabiska: {{ö+|ar|عَمَل|m|tr=ʕamal}}
*belarusiska: {{ö+|be|праца|f}}
*bosniska: {{ö|bs|posao|m}}
*bretonska: {{ö+|br|labour}}
*danska: {{ö+|da|job|n}}, {{ö+|da|arbejde|n}}
*engelska: {{ö+|en|job}}, {{ö+|en|work}}, {{ö+|en|labour}}, {{ö+|en|labor}}
*esperanto: {{ö+|eo|laboro}}
*finska: {{ö+|fi|työ}}
*franska: {{ö+|fr|travail|m}}, {{ö+|fr|boulot|m}}, {{ö+|fr|emploi|m}}
*färöiska: {{ö+|fo|arbeiði|n}}
*hebreiska: {{ö+|he|עֲבוֹדָה|f|tr=avodá}}
*indonesiska: {{ö+|id|kerja}}
*italienska: {{ö+|it|lavoro}}
*japanska: {{ö+|ja|仕事}} ({{ö+|ja|しごと}}, ''shigoto''), {{ö+|ja|働き}} ({{ö+|ja|はたらき}}, ''{{ö|ja|hataraki}}'')
*nederländska: {{ö+|nl|werk|n}}
*nordsamiska: {{ö|se|bargu}}
*polska: {{ö+|pl|praca|f}}, {{ö+|pl|robota|f}}
*portugisiska: {{ö+|pt|trabalho}}
*ryska: {{ö+|ru|работа|f}}, {{ö+|ru|труд|m}}
*spanska: {{ö+|es|trabajo|m}}
*tjeckiska: {{ö+|cs|práce|f}}
*tyska: {{ö+|de|Arbeit|f}}
*ukrainska: {{ö+|uk|робота|f}}, {{ö+|uk|праця|f}}
{{ö-botten}}
{{ö-topp|konstnärligt verk}}
*nederländska: {{ö+|nl|werk|n}}
*tyska: {{ö+|de|Arbeit|f}}, {{ö+|de|Werk|n}}
{{ö-botten}}
5d3wybdecwzzn6gnsikj22jwh3t2zcb
4157541
4157540
2026-10-24T20:46:49Z
Vavřinec N.
43546
+cs: [[práce]] (assisterat)
4157541
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-n|förled=arbets}}
'''arbete'''
#{{tagg|fysik}} en [[fysik]]alisk [[storhet]] som ofta mäts i SI-enheten [[joule]]; förbrukad [[energi]], produkt av [[kraft]] och [[sträcka]]
#sysselsättning som kräver ansträngning och medför förväntan om resultat
#:{{etymologi|Av {{härledning|sv|gmq-fsv|arbeide, arbeyd, arbede, arbeyte, arbeyt, arbete, ærbete, arbet}}, av {{härledning|sv|gml|arbeit}}.}}
#:{{synonymer|[[arbet]] ''(poetiskt)'', [[jobb]], [[kneg]]}}
#:{{antonymer|[[vila]], [[maskning]]}}
#:{{besläktade ord|[[arbeta]], [[arbetare]], [[arbeterska]], [[arbetning]], [[arbetsform]], [[arbetsfri]], [[arbetsfrihet]], [[arbetsför]], [[arbetsförhet]], [[arbetslös]], [[arbetslöshet]], [[arbetsam]], [[arbetsamhet]], [[arvode]]}}
#:{{sammansättningar|[[arbetsansökan]], [[arbetsbelastning]], [[arbetserfarenhet]], [[arbetsförmedling]], [[arbetsgivare]], [[arbetsgrupp]], [[arbetsintervju]], [[arbetsklimat]], [[arbetskläder]], [[arbetsliv]], [[arbetslivserfarenhet]], [[arbetsmarknad]], [[arbetsmoment]], [[arbetsoförmögen]], [[arbetsplats]], [[arbetsrum]], [[arbetsskada]], [[arbetsskicklighet]], [[arbetssko]], [[arbetsskygg]], [[arbetstempo]], [[arbetstid]], [[arbetstillfälle]], [[arbetstillstånd]], [[arbetstimme]], [[arbetsuppgift]], [[barnarbete]], [[beredskapsarbete]], [[dagsarbete]], [[deltidsarbete]], [[dubbelarbete]], [[efterarbete]], [[extraarbete]], [[forskningsarbete]], [[förarbete]], [[förvärvsarbete]], [[grupparbete]], [[hemarbete]], [[kontorsarbete]], [[kroppsarbete]], [[kvinnoarbete]], [[kvällsarbete]], [[köksarbete]], [[lagarbete]], [[lönearbete]], [[medarbete]], [[morgonarbete]], [[motarbete]], [[nattarbete]], [[närarbete]], [[pappersarbete]], [[samarbete]], [[samlingsarbete]], [[själsarbete]], [[slavarbete]], [[skogsarbete]], [[söndagsarbete]], [[tankearbete]], [[timarbete]], [[trälarbete]], [[vardagsarbete]], [[vinterarbete]], [[vårarbete]], [[årsarbete]], [[övertidsarbete]]}}
#{{tagg|kat=konst}} [[konstnärligt]] [[verk]]
====Översättningar====
{{ö-topp|fysikalisk storhet}}
*albanska: {{ö+|sq|punë}}
*danska: {{ö+|da|arbejde|n}}
*engelska: {{ö+|en|work}}
*finska: {{ö+|fi|työ}}
*franska: {{ö+|fr|travail|m}}
*nederländska: {{ö+|nl|arbeid}}
*portugisiska: {{ö+|pt|trabalho}}
*tjeckiska: {{ö+|cs|práce|f}}
*tyska: {{ö+|de|Arbeit|f}} <sup>7</sup>
{{ö-botten}}
{{ö-topp|sysselsättning}}
*albanska: {{ö+|sq|punë}}, {{ö+|sq|veprimtari}}
*arabiska: {{ö+|ar|عَمَل|m|tr=ʕamal}}
*belarusiska: {{ö+|be|праца|f}}
*bosniska: {{ö|bs|posao|m}}
*bretonska: {{ö+|br|labour}}
*danska: {{ö+|da|job|n}}, {{ö+|da|arbejde|n}}
*engelska: {{ö+|en|job}}, {{ö+|en|work}}, {{ö+|en|labour}}, {{ö+|en|labor}}
*esperanto: {{ö+|eo|laboro}}
*finska: {{ö+|fi|työ}}
*franska: {{ö+|fr|travail|m}}, {{ö+|fr|boulot|m}}, {{ö+|fr|emploi|m}}
*färöiska: {{ö+|fo|arbeiði|n}}
*hebreiska: {{ö+|he|עֲבוֹדָה|f|tr=avodá}}
*indonesiska: {{ö+|id|kerja}}
*italienska: {{ö+|it|lavoro}}
*japanska: {{ö+|ja|仕事}} ({{ö+|ja|しごと}}, ''shigoto''), {{ö+|ja|働き}} ({{ö+|ja|はたらき}}, ''{{ö|ja|hataraki}}'')
*nederländska: {{ö+|nl|werk|n}}
*nordsamiska: {{ö|se|bargu}}
*polska: {{ö+|pl|praca|f}}, {{ö+|pl|robota|f}}
*portugisiska: {{ö+|pt|trabalho}}
*ryska: {{ö+|ru|работа|f}}, {{ö+|ru|труд|m}}
*spanska: {{ö+|es|trabajo|m}}
*tjeckiska: {{ö+|cs|práce|f}}
*tyska: {{ö+|de|Arbeit|f}}
*ukrainska: {{ö+|uk|робота|f}}, {{ö+|uk|праця|f}}
{{ö-botten}}
{{ö-topp|konstnärligt verk}}
*nederländska: {{ö+|nl|werk|n}}
*tjeckiska: {{ö+|cs|práce|f}}
*tyska: {{ö+|de|Arbeit|f}}, {{ö+|de|Werk|n}}
{{ö-botten}}
jri6vqo77k89j0xvo51arjqpz00h30r
4157542
4157541
2026-10-24T20:46:56Z
Vavřinec N.
43546
+cs: [[dílo]] (assisterat)
4157542
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-n|förled=arbets}}
'''arbete'''
#{{tagg|fysik}} en [[fysik]]alisk [[storhet]] som ofta mäts i SI-enheten [[joule]]; förbrukad [[energi]], produkt av [[kraft]] och [[sträcka]]
#sysselsättning som kräver ansträngning och medför förväntan om resultat
#:{{etymologi|Av {{härledning|sv|gmq-fsv|arbeide, arbeyd, arbede, arbeyte, arbeyt, arbete, ærbete, arbet}}, av {{härledning|sv|gml|arbeit}}.}}
#:{{synonymer|[[arbet]] ''(poetiskt)'', [[jobb]], [[kneg]]}}
#:{{antonymer|[[vila]], [[maskning]]}}
#:{{besläktade ord|[[arbeta]], [[arbetare]], [[arbeterska]], [[arbetning]], [[arbetsform]], [[arbetsfri]], [[arbetsfrihet]], [[arbetsför]], [[arbetsförhet]], [[arbetslös]], [[arbetslöshet]], [[arbetsam]], [[arbetsamhet]], [[arvode]]}}
#:{{sammansättningar|[[arbetsansökan]], [[arbetsbelastning]], [[arbetserfarenhet]], [[arbetsförmedling]], [[arbetsgivare]], [[arbetsgrupp]], [[arbetsintervju]], [[arbetsklimat]], [[arbetskläder]], [[arbetsliv]], [[arbetslivserfarenhet]], [[arbetsmarknad]], [[arbetsmoment]], [[arbetsoförmögen]], [[arbetsplats]], [[arbetsrum]], [[arbetsskada]], [[arbetsskicklighet]], [[arbetssko]], [[arbetsskygg]], [[arbetstempo]], [[arbetstid]], [[arbetstillfälle]], [[arbetstillstånd]], [[arbetstimme]], [[arbetsuppgift]], [[barnarbete]], [[beredskapsarbete]], [[dagsarbete]], [[deltidsarbete]], [[dubbelarbete]], [[efterarbete]], [[extraarbete]], [[forskningsarbete]], [[förarbete]], [[förvärvsarbete]], [[grupparbete]], [[hemarbete]], [[kontorsarbete]], [[kroppsarbete]], [[kvinnoarbete]], [[kvällsarbete]], [[köksarbete]], [[lagarbete]], [[lönearbete]], [[medarbete]], [[morgonarbete]], [[motarbete]], [[nattarbete]], [[närarbete]], [[pappersarbete]], [[samarbete]], [[samlingsarbete]], [[själsarbete]], [[slavarbete]], [[skogsarbete]], [[söndagsarbete]], [[tankearbete]], [[timarbete]], [[trälarbete]], [[vardagsarbete]], [[vinterarbete]], [[vårarbete]], [[årsarbete]], [[övertidsarbete]]}}
#{{tagg|kat=konst}} [[konstnärligt]] [[verk]]
====Översättningar====
{{ö-topp|fysikalisk storhet}}
*albanska: {{ö+|sq|punë}}
*danska: {{ö+|da|arbejde|n}}
*engelska: {{ö+|en|work}}
*finska: {{ö+|fi|työ}}
*franska: {{ö+|fr|travail|m}}
*nederländska: {{ö+|nl|arbeid}}
*portugisiska: {{ö+|pt|trabalho}}
*tjeckiska: {{ö+|cs|práce|f}}
*tyska: {{ö+|de|Arbeit|f}} <sup>7</sup>
{{ö-botten}}
{{ö-topp|sysselsättning}}
*albanska: {{ö+|sq|punë}}, {{ö+|sq|veprimtari}}
*arabiska: {{ö+|ar|عَمَل|m|tr=ʕamal}}
*belarusiska: {{ö+|be|праца|f}}
*bosniska: {{ö|bs|posao|m}}
*bretonska: {{ö+|br|labour}}
*danska: {{ö+|da|job|n}}, {{ö+|da|arbejde|n}}
*engelska: {{ö+|en|job}}, {{ö+|en|work}}, {{ö+|en|labour}}, {{ö+|en|labor}}
*esperanto: {{ö+|eo|laboro}}
*finska: {{ö+|fi|työ}}
*franska: {{ö+|fr|travail|m}}, {{ö+|fr|boulot|m}}, {{ö+|fr|emploi|m}}
*färöiska: {{ö+|fo|arbeiði|n}}
*hebreiska: {{ö+|he|עֲבוֹדָה|f|tr=avodá}}
*indonesiska: {{ö+|id|kerja}}
*italienska: {{ö+|it|lavoro}}
*japanska: {{ö+|ja|仕事}} ({{ö+|ja|しごと}}, ''shigoto''), {{ö+|ja|働き}} ({{ö+|ja|はたらき}}, ''{{ö|ja|hataraki}}'')
*nederländska: {{ö+|nl|werk|n}}
*nordsamiska: {{ö|se|bargu}}
*polska: {{ö+|pl|praca|f}}, {{ö+|pl|robota|f}}
*portugisiska: {{ö+|pt|trabalho}}
*ryska: {{ö+|ru|работа|f}}, {{ö+|ru|труд|m}}
*spanska: {{ö+|es|trabajo|m}}
*tjeckiska: {{ö+|cs|práce|f}}
*tyska: {{ö+|de|Arbeit|f}}
*ukrainska: {{ö+|uk|робота|f}}, {{ö+|uk|праця|f}}
{{ö-botten}}
{{ö-topp|konstnärligt verk}}
*nederländska: {{ö+|nl|werk|n}}
*tjeckiska: {{ö+|cs|práce|f}}, {{ö+|cs|dílo|n}}
*tyska: {{ö+|de|Arbeit|f}}, {{ö+|de|Werk|n}}
{{ö-botten}}
5gh61x8htugwtehrb03jtxf8jqq44ed
brev
0
17595
4157567
4102993
2026-10-24T21:03:36Z
Vavřinec N.
43546
+cs: [[dopis]] (assisterat)
4157567
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-0}}
'''brev'''
*{{uttal|sv|ipa=breːv}}
#{{tagg|kommunikation}} skriven text oftast förpackad i ett [[kuvert]] avsedd att skickas till annan person eller organisation
#:''Hon skickade ett '''brev''' om dagen till sin pojkvän.''
#:''De fick tidningen att publicera deras öppna '''brev''' ställt till dem som skulle fatta beslut i frågan.''
#:''Hon räknade med att föreståndarinnan skulle se hennes långa '''brev''' om hon lade det på bordet i vardagsrummet.''
#:{{sammansättningar|[[adelsbrev]], [[affärsbrev]], [[aktiebrev]], [[amerikabrev]], [[ansökningsbrev]], [[assbrev]], [[assuransbrev]], [[avlatsbrev]], [[avskedsbrev]], [[bannbrev]], [[beundrarbrev]], [[borgarbrev]], [[brevbomb]], [[brevbärare]], [[brevduva]], [[brevhemlighet]], [[brevhuvud]], [[brevlåda]], [[brevskrivare]], [[cirkulärbrev]], [[brevduva]], [[brevledes]], [[brevpapper]], [[brevporto]], [[brevskrivare]], [[brevskriverska]], [[brevskörd]], [[brevvåg]], [[brevvän]], [[brevväxla]], [[burbrev]], [[chifferbrev]], [[doktorsbrev]], [[donationsbrev]], [[e-brev]], [[ekonomibrev]], [[expressbrev]], [[fejdebrev]], [[fideikommissbrev]], [[flygbrev]], [[flygpostbrev]], [[fraktbrev]], [[frejdebrev]], [[friarbrev]], [[fribrev]], [[frälsebrev]], [[följebrev]], [[förmaningsbrev]], [[förstadagsbrev]], [[försäkringsbrev]], [[gesällbrev]], [[gratulationsbrev]], [[gåvobrev]], [[hatbrev]], [[hotbrev]], [[hotelsebrev]], [[inbjudningsbrev]], [[informationsbrev]], [[inkassobrev]], [[inrikesbrev]], [[insändarbrev]], [[introduktionsbrev]], [[julbrev]], [[kallelsebrev]], [[kedjebrev]], [[klagobrev]], [[knappnålsbrev]], [[kondoleansbrev]], [[kortbrev]], [[kravbrev]], [[kreditbrev]], [[kreditivbrev]], [[kungabrev]], [[kurirbrev]], [[kursbrev]], [[kärleksbrev]], [[köpebrev]], [[lejdebrev]], [[livförsäkringsbrev]], [[ljudbrev]], [[läsarbrev]], [[lyssnarbrev]], [[lärbrev]], [[marknadsbrev]], [[massbrev]], [[medborgarbrev]], [[militärbrev]], [[månadsbrev]], [[mästerbrev]], [[nålbrev]], [[nyhetsbrev]], [[pantbrev]], [[pappersbrev]], [[pardonsbrev]], [[patentbrev]], [[pensionsbrev]], [[pergamentsbrev]], [[postbrev]], [[posterestantebrev]], [[privatbrev]], [[privilegiebrev]], [[protestbrev]], [[pulverbrev]], [[påminnelsebrev]], [[påskbrev]], [[påvebrev]], [[refuseringsbrev]], [[regleringsbrev]], [[rekbrev]], [[reklambrev]], [[rekommendationsbrev]], [[resebrev]], [[rimbrev]], [[salubrev]], [[självmordsbrev]], [[sjökaptensbrev]], [[skaldebrev]], [[skepparbrev]], [[skuldebrev]], [[smädebrev]], [[spambrev]], [[sorgebrev]], [[stadfästelsebrev]], [[standardbrev]], [[studiebrev]], [[styrmansbrev]], [[svarsbrev]], [[säljbrev]], [[sändebrev]], [[tackberev]], [[telegrambrev]], [[tiggarbrev]], [[tjänstebrev]], [[uppföljningsbrev]], [[uppsägningsbrev]], [[utnämningsbrev]], [[utpressningsbrev]], [[valbrev]], [[varningsbrev]], [[veckobrev]], [[välkomstbrev]], [[värdebrev]], [[överlåtelsebrev]]}}
#:{{fraser|[[komma som ett brev på posten]]}}
#{{tagg|kommunikation|postväsen}} [[försändelse]] inom en viss mått- och viktgräns
:{{avgränsare}}
:{{etymologi|{{belagt|sv|1400|t}}<ref>{{källa-so}}</ref> Före 1906 stavat ''[[bref]]'', av {{härledning|sv|gmq-fsv|bref}}, från {{härledning|sv|la|breve|brev, kort skrivelse}}, av ''[[brevis]]'', "kort".<ref>Nationalencyklopedins ordbok, "brev", läst 2008-09-06.</ref> Jämför tyska ''[[Brief]]'', "brev", och engelska ''[[brief]]'', "kortvarig", "sammandrag", historiskt även "påvebrev". Det latinska ordet kommer av urindoeuropeiska ''[[*bregh-]]'', "skära", "slå" (jämför grekiska ''brachys'' (varav svenska ''[[braky-]]''/''[[brachy-]]''), "kort", och fornkyrkoslaviska ''bruzeja'', "grund", "rev").<ref>{{källa-etymonline|brief|datum=2008-09-06}}</ref>}}
====Översättningar====
{{ö-topp|skrivet meddelande}}
*belarusiska: {{ö|be|ліст|m}}
*bokmål: {{ö+|no|brev}}
*danska: {{ö+|da|brev|n}}
*engelska: {{ö+|en|letter}}
*esperanto: {{ö+|eo|letero}}
*estniska: {{ö+|et|kiri}}
*finska: {{ö+|fi|kirje}}
*franska: {{ö+|fr|lettre|f}}
*indonesiska: {{ö+|id|surat}}
*isländska: {{ö+|is|bréf}}
*japanska: {{ö+|ja|手紙|tr=てがみ, ''tegami''}}
*italienska: {{ö+|it|lettera}}
*kvänska: {{ö|fkv|preevi}}
*luhya: {{ö|luy|ebarua}}
*nederländska: {{ö+|nl|brief}}
*polska: {{ö+|pl|list}}
*ryska: {{ö+|ru|письмо|n}}
*spanska: {{ö+|es|carta|f}}
*swahili: {{ö+|sw|barua}}
*tjeckiska: {{ö+|cs|dopis|m}}
*turkiska: {{ö+|tr|mektup}}, {{ö+|tr|name}}
*tyska: {{ö+|de|Brief|m}}
*ukrainska: {{ö|uk|лист|m}}
{{ö-botten}}
==Bokmål==
===Substantiv===
{{subst|no}}
'''brev'''
#[[brev#Svenska|brev]], skriven text
==Danska==
===Substantiv===
{{subst|da}}
'''brev'''
#[[brev#Svenska|brev]], skriven text
==Källor==
<references/>
12i4q079fdtw9svrrbk3qfj06qyhc2p
måne
0
19402
4157691
4113438
2026-10-25T10:51:57Z
Tapio Toola
59668
+tr: [[uydu]] (assisterat)
4157691
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
'''måne'''
#{{tagg|astronomi}} [[himlakropp]] som kretsar kring en [[planet]] eller en [[asteroid]] i ett [[planetsystem]]; "[[månen]]" i bestämd form avser vanligtvis [[jorden]]s måne [[Luna]]
#:''Jorden har endast en '''måne'''.''
#:{{etymologi|{{belagt|sv|1400|t}}<ref>{{källa-so}}</ref> Av {{härledning|sv|gmq-fsv|māne}}, av {{härledning|sv|non|máni}}, av urnordiska ''[[*ᛗᚨᚾᛟ]]'' (''*mano''), av {{härledning|sv|gem-ugm|*mēnô}}, av {{härledning|sv|ine-uie|*mḗh₁n̥s|måne, månad}}.}}
#:{{synonymer|[[naturlig satellit]], [[drabant]], [[tungel]], [[☾]], [[☽]]}}
#:{{användning|Refereras ibland till med pronomenet ''[[han]]''}}
#:{{sammansättningar|[[augustimåne]], [[blodmåne]], [[fullmåne]], [[halvmåne]], [[mikromåne]], [[månbana]], [[månbelyst]], [[månben]], [[månblek]], [[månblind]], [[månbrygga]], [[månbävning]], [[måndag]], [[måndager]], [[måndimma]], [[måndygn]], [[månfarare]], [[månfarkost]], [[månfas]], [[månfläck]], [[månfärd]], [[månförmörkelse]], [[mångata]], [[mångubbe]], [[mångud]], [[mångudinna]], [[mångård]], [[månhalva]], [[månhorn]], [[månhus]], [[månkalv]], [[månklar]], [[månkrater]], [[månkult]], [[månlanda]], [[månlandning]], [[månlandskap]], [[månljus]], [[månlös]], [[månmånad]], [[månnatt]], [[månnedgång]], [[månraket]], [[månregnbåge]], [[månros]], [[månruta]], [[månräckare]], [[månskalv]], [[månskifte]], [[månskimmer]], [[månskiva]], [[månsken]], [[månskugga]], [[månskäl]], [[månskära]], [[månsond]], [[månsten]], [[månstrimma]], [[månuppgång]], [[månur]], [[månvarv]], [[månviol]], [[månyta]], [[månår]], [[nymåne]], [[supermåne]], [[svartmåne]]}}
#:{{fraser|[[maj, maj, måne, jag kan lura dig till Skåne!]]}}
#:{{seäven-bring|Ljuskälla|Ljus|Värld}}
#[[kal]] (halvmåneformad) del av [[hjässan]] omsluten av områden med tätare hårväxt; vanlig hos (äldre) män
#:{{seäven|[[kal fläck]]}}
====Översättningar====
{{ö-topp|himlakropp}}
*amhariska: {{ö+|am|ጨረቃ}}
*arabiska: {{ö+|ar|قَمَر|m|tr=qamar}}
*aragonska: {{ö|an|Luna}}
*armeniska: {{ö+|hy|լուսին|tr=lusin|sc=Armn}}
*asturiska: {{ö+|ast|Lluna|f}}
*baskiska: {{ö|eu|ilargi}}
*bokmål: {{ö+|no|måne|m}}
*bosniska: {{ö|bs|mjesec}}
*burmesiska: {{ö+|my|လ|tr=la.}}
*danska: {{ö+|da|måne|u}}
*enaresamiska: {{ö|smn|máánu}}
*engelska: {{ö+|en|moon}}
*extremaduriska: {{ö|ext|Luna}}
*finska: {{ö+|fi|kuu}}
*franska: {{ö+|fr|lune|f}}
*georgiska: {{ö+|ka|მთვარე|tr=mt‘vare|sc=Geor}}
*haitisk kreol: {{ö|ht|lin}}
*hebreiska: {{ö+|he|יָרֵחַ|tr=yaréakh}}
*inuktitut: {{ö+|iu|ᑕᖅᑭᖅ|tr=taqkiq}}
*iriska: {{ö+|ga|gealach|f}}
*isländska: {{ö+|is|tungl|n}}, {{ö+|is|máni|m}}
*italienska: {{ö+|it|luna|f}}
*japanska: {{ö+|ja|月}} ({{ö+|ja|つき}}, ''{{ö|ja|tsuki}}'')
*jiddisch: {{ö|yi|לבֿנה|f|tr=levone}}
*kanjobal: {{ö|kjb|xajaw}}
*kildinsamiska: {{ö|sjd|ма̄нн|tr=mānn}}
*kinesiska:
**kantonesiska: {{ö|yue|月亮|tr=jyut6 loeng6}}, {{ö|yue|月球|tr=jyut6 kau4}}, {{ö+|yue|月|tr=jyut6}}
**mandarin: {{ö+|zh|月亮|tr=yuèliàng, yuèliang}}, {{ö+|zh|月球|tr=yuèqiú}}, {{ö+|zh|月|tr=yuè}}, {{ö+|zh|太陰}}/{{ö+|zh|太阴|tr=tàiyīn}}
*belarusiska: {{ö+|be|месяц|m}}, {{ö+|be|спадарожнік|m}}, {{ö|be|сатэліт|m}}
*koreanska: {{ö+|ko|달|tr=dal|sc=Kore}}
*kroatiska: {{ö+|hr|mjesec|m}}
*latin: {{ö+|la|luna|f}}
*lettiska: {{ö+|lv|mēness|m}}
*lulesamiska: {{ö|smj|mánno}}
*malagassiska: {{ö+|mg|volana}}
*nordsamiska: {{ö|se|mánnu}}
*nynorska: {{ö+|nn|måne|m}}
*pashto: {{ö+|ps|سپوږمۍ|f}}
*polska: {{ö+|pl|księżyc|m}}
*portugisiska: {{ö+|pt|lua|f}}
*rumänska: {{ö+|ro|lună|f}}
*ryska: {{ö+|ru|спутник|m|tr=spútnik}}, {{ö+|ru|месяц|m}}
*skoltsamiska: {{ö|sms|mään}}
*spanska: {{ö+|es|luna|f}}
*sydsamiska: {{ö|sma|maanoe}}, {{ö|sma|aske}}
*tersamiska: {{ö|sjt|manna}}
*tigrinska: {{ö|ti|ወርሒ}}
*turkiska: {{ö+|tr|ay}}, {{ö+|tr|uydu}}
*turkmeniska: {{ö+|tk|aý}}
*twi: {{ö|tw|ɔbosome}}
*tyska: {{ö+|de|Mond|m}}
*ukrainska: {{ö+|uk|місяць|m}}, {{ö+|uk|супутник|m}}, {{ö+|uk|сателіт|m}}
*umesamiska: {{ö|sju|mánnuo}}
*urdu: {{ö|ur|چاند|tr=cānd}}
*uzbekiska: {{ö+|uz|oy}}
*älvdalska: {{ö|ovd|tunggel}}
{{ö-botten}}
{{ö-topp|kal del av hjässan omsluten av områden med tätare hårväxt}}
*bokmål: {{ö+|no|måne|m}}
*danska: {{ö+|da|måne|u}}
*nynorska: {{ö+|nn|måne|m}}
*spanska: {{ö+|es|calva|f}}
{{ö-botten}}
==Bokmål==
===Substantiv===
{{no-subst-m-er|rot=mån}}
'''måne''' {{m}}
#{{tagg|kat=astronomi|språk=no}} [[#Svenska|måne]]
==Danska==
===Substantiv===
{{da-subst-n-r}}
'''måne''' {{u}}
#{{tagg|kat=astronomi|språk=da}} [[#Svensk|måne]]
#:{{sammansättningar|[[fuldmåne]], [[nymåne]]}}
==Nynorska==
===Substantiv===
{{nn-subst-m|rot=mån}}
'''måne''' {{m}}
#{{tagg|kat=astronomi|språk=nn}} [[#Svenska|måne]]
==Källor==
<references/>
kpvg0ljf7pal9sh5hzd8z0ruhkk56gt
björk
0
21752
4157562
4113054
2026-10-24T21:00:11Z
Vavřinec N.
43546
+cs: [[bříza]] (assisterat)
4157562
wikitext
text/x-wiki
{{se även|bjørk}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
'''björk'''
#{{tagg|kat=träd}} exemplar eller [[trädslag]] i [[släkte]]t [[björkar]] ''([[Betula]])''
#:{{citat|år=1920|förf=M. Brenner|titel=[http://www.archive.org/stream/meddelandenafsoc4647soci/meddelandenafsoc4647soci_djvu.txt Meddelanden af Societas pro Fauna et Flora Fennica]|Under snösmältningens förlopp blev bland växterna '''björken''' den första förkunnaren av vårens ankomst.}}
#:{{etymologi|{{belagt|sv|1312}}<ref>{{källa-so}}</ref> Av {{härledning|sv|gmq-fsv|biork, biærk}}, belags i ortsnamn från tidigt 1300-tal, med former som biark-, biærk-, av {{härledning|sv|gem-ugm|*birkijǭ}}, med urindoeuropeiskt ursprung {{härledning|sv|ine-uie|*bʰerHǵs}}.}}
#:{{hyponymer|[[dvärgbjörk]], [[fjällbjörk]], [[everestbjörk]], [[glasbjörk]], [[gulbjörk]], [[jättebjörk]], [[kamtjatkabjörk]], [[kinesisk björk]], [[kopparbjörk]], [[krypbjörk]], [[körsbärsbjörk]], [[manchurisk björk]], [[ornäsbjörk]], [[pappersbjörk]], [[räffelbjörk]], [[svartbjörk]], [[vårtbjörk]]}}
#:{{sammansättningar|[[björkdunge]], [[björklund]], [[björklöv]], [[björkskott]], [[björksly]], [[björkträd]], [[björkvidja]], [[björkväxter]], [[fransbjörk]], [[kärrbjörk]], [[masurbjörk]]}}
====Översättningar====
{{ö-topp|lövträd}}
*albanska: {{ö|sq|mështeknë}}, {{ö+|sq|baloshe}}
*alemanniska: {{ö|als|Birke}}
*arabiska: {{ö|ar|بَتُولَا|f}}, {{ö|ar|سَنْدَر|m}}
*asturiska: {{ö|ast|abeduriu}}
*belarusiska: {{ö|be|бяроза|f}}
*bokmål: {{ö+|no|bjørk|f}}, {{ö+|no|bjerk|f}}
*danska: {{ö|da|birk}}
*engelska: {{ö+|en|birch}}
*esperanto: {{ö+|eo|betulo}}
*finska: {{ö+|fi|koivu}}
*franska: {{ö+|fr|bouleau|m}}
*isländska: {{ö+|is|björk|f}}
*italienska: {{ö+|it|betulla|f}}
*japanska: {{ö+|ja|白樺|tr=しらかば, ''shirakaba''}}
*jiddisch: {{ö|yi|בערעזע|f|tr=bereze}}
*kinesiska: {{ö+|zh|白桦}}
*latin: {{ö|la|betula|f}}, {{ö+|la|betulla|f}}
*nederländska: {{ö+|nl|berk|m}}
*nynorska: {{ö+|nn|bjørk|f}}
*polska: {{ö+|pl|brzoza}}
*portugisiska: {{ö+|pt|bétula|f}}
*ryska: {{ö+|ru|берёза|f}}
*spanska: {{ö+|es|abedul|m}}
*sydsamiska: {{ö|sma|såekie}}
*tjeckiska: {{ö+|cs|bříza|f}}
*turkiska: {{ö|tr|huş ağacı}}, {{ö+|tr|huş}}
*tyska: {{ö+|de|Birke|f}}
*ukrainska: {{ö+|uk|береза|f}}
{{ö-botten}}
==Isländska==
===Substantiv===
{{is-subst|genus=femininum|björk|björkin|bjarkir|bjarkirnar|björk|björkina|bjarkir|bjarkirnar|björk|björkinni|björkum|björkunum|bjarkar|bjarkarinnar|bjarka|bjarkanna}}
'''björk'''
#{{tagg|träd|språk=is}} [[#Svenska|björk]]
==Källor==
<references/>
dtdchwh4cswz7oocn5h2gmhagv2yb3h
bakterie
0
21909
4157556
4128993
2026-10-24T20:54:55Z
Vavřinec N.
43546
+cs: [[bakterie]] (assisterat)
4157556
wikitext
text/x-wiki
{{wikipedia|bakterie}}
{{se även|Bakterie}}
==Svenska==
===Substantiv===
{{sv-subst-n-r}}
'''bakterie'''
#{{tagg|biologi|kat=riken och domäner}} [[prokaryot]] (utan [[cellkärna]]) [[encellig]] [[organism]] som utgör en av tre [[domän]]er
#:{{diverse|Oftast i plural "bakterier". Nyligen har en del av organismer flyttat från domänen "bakterier" till en nyskapad domän "[[arké]]er".}}
#:''Endast vissa '''bakterier''' är farliga för människor.''
#:{{besläktade ord|[[bakteriell]], [[bakteriologisk]]}}
#:{{sammansättningar|[[agarbakterie]], [[arkebakterie]], [[baktericid]], [[bakterieart]], [[bakteriedödande]], [[bakteriefilter]], [[bakterieflora]], [[bakterieform]], [[bakteriefärgning]], [[bakterieförband]], [[bakteriegrumling]], [[bakteriehärd]], [[bakterieinfektion]], [[bakterieinjektion]], [[bakteriekoloni]], [[bakteriekostym]], [[bakteriekultur]], [[bakterielära]], [[bakteriemi]], [[bakterienäringsvätska]], [[bakteriepreparat]], [[bakterietät]], [[bakterievätska]], [[bakteriofag]], [[bakteriolys]], [[bakterios]], [[bakteriostas]], [[bakteriostat]], [[bakteriostatisk]], [[bakteriuri]], [[cyanobakterie]], [[fotobakterie]], [[gelatinbakterie]], [[järnbakterie]], [[kapselbakterie]], [[kastningsbakterie]], [[kolibakterie]], [[kulbakterie]], [[lysbakterie]], [[metanbakterie]], [[mjölksyrabakterie]], [[nitratbakterie]], [[parabakterie]], [[rosbakterie]], [[skruvbakterie]], [[stavbakterie]], [[svavelbakterie]], [[vörtbakterie]], [[zoogloeabakterie]], [[ättiksyrabakterie]]}}
#:{{fraser|[[anaerob bakterie]]}}
#:{{synonymer|[[bacill]] ''(vardagligt)'', [[eubakterie]] ''(ålderdomligt)'', [[klyvsvamp]] ''(ålderdomligt)''}}
====Översättningar====
{{ö-topp|prokaryot encellig organism}}
*afrikaans: {{ö+|af|bakterie}}
*albanska: {{ö+|sq|bakter}}, {{ö+|sq|mikrob}}
*engelska: {{ö+|en|bacterium}}
*esperanto: {{ö|eo|bakterio}}
*finska: {{ö+|fi|bakteeri}}
*franska: {{ö+|fr|bactérie|f}}
*frisiska: {{ö|fy|baktearje}}
*friuliska: {{ö|fur|baktearje}}
*grekiska: {{ö+|el|μικρόβια}}
*ido: {{ö+|io|bakterio}}
*isländska: {{ö+|is|gerill|m}}, {{ö+|is|baktería|f}}
*italienska: {{ö+|it|batterio}}
*japanska: {{ö+|ja|黴菌}} ({{ö|ja|ばいきん}}, ''baikin'')
*katalanska: {{ö+|ca|bacteri}}
*kinesiska: {{ö+|zh|细菌}} (förenklad), {{ö+|zh|細菌}} (traditionell)
*kurdiska: {{ö+|ku|bakterî}}
*malajiska: {{ö+|ms|bakteria}}
*nederländska: {{ö+|nl|bacterie}}
*papiamento: {{ö|pap|bakteria}}
*polska: {{ö+|pl|bakteria|f}}
*portugisiska: {{ö+|pt|bactéria}}
*ryska: {{ö+|ru|бактерия}}
*spanska: {{ö+|es|bacteria|f}}
*tjeckiska: {{ö+|cs|bakterie|f}}
*turkiska: {{ö+|tr|bakteri}}
*tyska: {{ö+|de|Bakterie|f}}, {{ö+|de|Bakterium|n}}
*ungerska: {{ö+|hu|baktérium}}
{{ö-botten}}
==Afrikaans==
===Substantiv===
{{subst|af}}
'''bakterie'''
#[[bakterie#Svenska|bakterie]]
==Danska==
===Substantiv===
{{da-subst-n-r}}
'''bakterie'''
#[[#Svenska|bakterie]]
#:{{besläktade ord|[[bakteriel]]}}
3cl42nhpwm1chdx6oehslxl6ioo2p7m
dans
0
22067
4157573
4099329
2026-10-24T21:10:43Z
Vavřinec N.
43546
+cs: [[tanec]] (assisterat)
4157573
wikitext
text/x-wiki
{{se även|Dans}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''dans''' {{u}}
*{{uttal|sv|ljud=Sv-dans.ogg}}
#{{tagg|kat=dans}} aktiveteten att [[dansa]]
#:''Tycker du om '''dans'''?''
#:{{etymologi|Av {{härledning|sv|gmq-fsv|danz}}, belagt i språket från 1385, till verbet ''[[dansa]]''.}}
#:{{sammansättningar|[[dansbana]], [[dansband]], [[danselev]], [[dansensemble]], [[dansestet]], [[dansfattning]], [[dansgrupp]], [[dansklass]], [[danskompani]], [[danskonst]], [[danskurs]], [[danslek]], [[danslektion]], [[danslärare]], [[danssal]], [[danspar]], [[danssteg]], [[dansstil]], [[danssko]], [[dansskola]], [[danssport]], [[dansstil]], [[danssällskap]], [[dansterapeut]], [[danstillställning]], [[danstradition]], [[dansundervisning]], [[dansutbildning]], [[danstyp]], [[danstävling]], [[dansyrke]], [[folkdans]], [[fridans]], [[fuldans]], [[gruppdans]], [[hyllningsdans]], [[jazzdans]], [[kordans]], [[lindans]], [[krigsdans]], [[magdans]], [[maskindans]], [[idaliskdans]], [[oxdans]], [[pardans]], [[regndans]], [[ringdans]], [[skoldans]], [[slutdans]], [[solodans]], [[steppdans]], [[sällskapsdans]], [[trandans]], [[tävlingsdans]], [[uppvisningsdans]], [[älvdans]]}}
#:{{fraser|(gå) [[som en dans]]}}
#en viss typ av dans, exempelvis med specifika [[rörelse]]r och till en speciell typ av [[musik]]
#ett tillfälle där dans utövas
#{{böjning|sv|subst|da}}
#{{böjning|sv|subst|dan}}
:{{avgränsare}}
:{{besläktade ord|[[dansa]], [[dansande]], [[dansant]], [[dansare]], [[danserska]], [[dansör]], [[dansös]], [[omdansning]]}}
:{{seäven-bring|Förlustelse|Glädjeyttring|Teater|Svängning|Hoppning|Rörelse}}
:{{anagram|sand}}
====Översättningar====
{{ö-topp|aktivitet}}
*arabiska: {{ö|ar|رقص|m}} (raqS)
*armeniska: {{ö+|hy|պար}} (par)
*belarusiska: {{ö|be|та́нец|m}}
*bokmål: {{ö+|no|dans}}
*bulgariska: {{ö+|bg|танц|m}}
*danska: {{ö+|da|dans}}
*engelska: {{ö+|en|dance}}, {{ö+|en|dancing}}
*esperanto: {{ö+|eo|danco}}
*finska: {{ö+|fi|tanssi}}
*franska: {{ö+|fr|danse|f}}
*färöiska: {{ö|fo|dansur|m}}
*hawaiiska: {{ö|haw|hulahula}}
*hebreiska: {{ö+|he|ריקוד|m}} (riqud)
*ido: {{ö+|io|danso}}
*indonesiska: {{ö+|id|tari}}, {{ö+|id|dansa}}
*isländska: {{ö+|is|dans|m}}
*japanska: {{ö+|ja|ダンス}} (''{{ö|ja|dansu}}''), {{ö+|ja|踊り|tr=おどり, odori}}
*jiddisch: {{ö|yi|טאַנץ|m|tr=tants}}
*lettiska: {{ö|lv|deja}}
*luxemburgiska: {{ö|lb|Danz}}
*makedonska: {{ö|mk|танц|m}}
*malajiska: {{ö|ms|tari}}
*nynorska: {{ö|nn|dans}}
*persiska: {{ö+|fa|رقص|tr=raqs}}
*polska: {{ö+|pl|taniec|m}}, {{ö+|pl|tan|m}}
*portugisiska: {{ö+|pt|dança|f}}
*rumänska: {{ö+|ro|dans|n}}
*ryska: {{ö+|ru|танец|m}} (tánets)
*swahili: {{ö+|sw|densi}}
*tjeckiska: {{ö+|cs|tanec|m}}
*turkiska: {{ö+|tr|dans}}
*tyska: {{ö+|de|Tanz|m}}
*ukrainska: {{ö|uk|та́нець|m}}, {{ö|uk|та́нок|m}}, {{ö|uk|тан|m}}
*ungerska: {{ö+|hu|tánc}}
{{ö-botten}}
{{ö-topp|typ}}
*armeniska: {{ö+|hy|պար}} (par)
*bokmål: {{ö+|no|dans}}
*danska: {{ö+|da|dans}}
*engelska: {{ö+|en|dance}}
*esperanto: {{ö+|eo|danco}}
*finska: {{ö+|fi|tanssi}}
*franska: {{ö+|fr|danse|f}}
*isländska: {{ö+|is|dans|m}}
*japanska: {{ö+|ja|ダンス}} (''{{ö|ja|dansu}}'')
*nynorska: {{ö|nn|dans}}
*portugisiska: {{ö+|pt|dança|f}}
*rumänska: {{ö+|ro|dans|n}}
*tyska: {{ö+|de|Tanz|m}}
*ungerska: {{ö+|hu|tánc}}
{{ö-botten}}
{{ö-topp|tillfälle}}
*bokmål: {{ö+|no|dans}}
*danska: {{ö+|da|dans}}
*engelska: {{ö+|en|dance}}
*finska: {{ö+|fi|tanssit}}
*franska: {{ö+|fr|danse|f}}
*isländska: {{ö+|is|dans|m}}
*japanska: {{ö+|ja|ダンス}} (''{{ö|ja|dansu}}'')
*nynorska: {{ö|nn|dans}}
*portugisiska: {{ö+|pt|dança|f}}
*tyska: {{ö+|de|Tanz|m}}
{{ö-botten}}
{{ö-topp-granska}}
*italienska: {{ö+|it|ballo}}, {{ö+|it|danza}}
*polska: {{ö+|pl|taniec}}
{{ö-botten}}
==Bokmål==
===Substantiv===
{{subst|no}}
'''dans''' {{m}}
#{{tagg|kat=samhälle och kultur|språk=no}} [[#Svenska|dans]]
#:{{sammansättningar|[[dansegulv]], [[dansegolv]], [[folkedans]], [[magedans]]}}
#:{{besläktade ord|[[danse]], [[danser]], [[danserinne]]}}
==Danska==
===Substantiv===
{{da-subst-n-er}}
'''dans''' {{u}}
#{{tagg|kat=samhälle och kultur|språk=da}} [[#Svenska|dans]]
==Franska==
===Preposition===
{{prep|fr}}
'''dans'''
*{{uttal|fr|ipa=dɑ̃}}
#[[i]], [[inuti]]
==Isländska==
===Substantiv===
{{subst|is}}
'''dans'''
#[[#Svenska|dans]]
==Nederländska==
===Verb===
{{verb|nl}}
'''dans'''
#[[dansa]]
==Nynorska==
===Substantiv===
{{nn-subst-m}}
'''dans''' {{m}}
#{{tagg|kat=samhälle och kultur|språk=nn}} [[#Svenska|dans]]
gflhiamqx5f9d3dukj3zucvan2ohtut
aminosyra
0
22090
4157530
4143522
2026-10-24T20:40:16Z
Vavřinec N.
43546
+cs: [[aminokyselina]] (assisterat)
4157530
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-or}}
'''aminosyra'''
#{{tagg|biokemi}} ämne som både är en [[karboxylsyra]] och en [[amin]]
====Översättningar====
{{ö-topp|ämne som både är en karboxylsyra och en amin}}
*danska: {{ö+|da|aminosyre}}
*engelska: {{ö+|en|amino acid}}
*finska: {{ö+|fi|aminohappo}}
*franska: {{ö+|fr|acide aminé|m}}
*isländska: {{ö|is|amínósýra|f}}
*katalanska: {{ö|ca|aminoàcid}}
*kurdiska: {{ö|ku|asîda amînî}}
*polska: {{ö+|pl|aminokwas}}
*portugisiska: {{ö+|pt|aminoácido}}
*tjeckiska: {{ö+|cs|aminokyselina|f}}
*turkiska: {{ö+|tr|amino asit}}
*tyska: {{ö+|de|Aminosäure|f}}
{{ö-botten}}
==Bokmål==
===Substantiv===
'''aminosyra'''
#{{böjning|no|subst|aminosyre}}
==Nynorska==
===Substantiv===
'''aminosyra'''
#{{böjning|nn|subst|aminosyre}}
kb81gz5kdcktfdu5a4qy5alitgjzikf
användare
0
24832
4157535
3888711
2026-10-24T20:43:12Z
Vavřinec N.
43546
+cs: [[uživatelka]] (assisterat)
4157535
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-0|rot=användar|are=}}
'''[[använda|använd]][[-are|are]]'''
#person eller föremål {{?|exempel behövs}} som [[använda|använder]] något
#:''Flera '''användare''' har klagat på gränssnittet.''
#:{{sammansättningar|[[användarlicens]], [[användarkonto]], [[användarnamn]], [[användarprofil]], [[användarruta]], [[användarsida]], [[användarvänlig]], [[internetanvändare]], [[slutanvändare]]}}
====Översättningar====
{{ö-topp|person eller föremål som använder något}}
*afrikaans: {{ö+|af|gebruiker}}
*bokmål: {{ö+|no|bruker|m}}
*bosniska: {{ö|bs|korisnik}}
*danska: {{ö+|da|bruger}}
*engelska: {{ö+|en|user}}
*finska: {{ö+|fi|käyttäjä}}
*franska: {{ö+|fr|utilisateur|m}}
*grekiska: {{ö+|el|χρήστης|m|tr=khrístis|skrift=Grek}}
*indonesiska: {{ö+|id|pengguna}}
*isländska: {{ö+|is|notandi|m}}
*japanska: {{ö+|ja|利用者}} ({{ö|ja|りようしゃ}}, ''{{ö|ja|riyousha}}''), {{ö+|ja|使用者|tr=しようしゃ, shiyōsha}}, {{ö+|ja|ユーザー|tr=yūzā}}
*jiddisch: {{ö|yi|באַניצער|m|tr=banitser}}
*kurdiska: {{ö+|ku|bikarhêner}}, {{ö+|ku|bikarîner}}, {{ö+|ku|bikarber}}
*ladino: {{ö|lad|usador|m}}, {{ö|lad|usadora|f}}
*livvi: {{ö|olo|käyttäi}}
*lågskotska: {{ö|sco|uiser}}
*nederländska: {{ö+|nl|gebruiker}}
*nynorska: {{ö|nn|brukar}}
*persiska: {{ö+|fa|کاربر|tr=kârbar}}
*polska: {{ö+|pl|użytkownik|m}}, {{ö+|pl|użytkowniczka|f}}
*portugisiska: {{ö+|pt|usuário}}
*rumänska: {{ö+|ro|utilizator|m}}
*ryska: {{ö+|ru|пользователь|m}}
*rätoromanska: {{ö|rm|utilisader}}
*slovenska: {{ö+|sl|uporabnik|m}}
*spanska: {{ö+|es|usuario|m}}
*swahili: {{ö+|sw|mtumiaji}}
*tjeckiska: {{ö+|cs|uživatel|m}}, {{ö+|cs|uživatelka|f}}
*turkiska: {{ö+|tr|kullanıcı}}
*tyska: {{ö+|de|Benutzer|m}}, {{ö+|de|Benutzerin|f}}, {{ö+|de|Anwender|m}}, {{ö+|de|Anwenderin|f}}, {{ö+|de|User|m}}, {{ö+|de|Userin|f}}
{{ö-botten}}
s56m8ajaa172xvi5lpbo4sb39cmkjdr
bostad
0
25252
4157566
4134881
2026-10-24T21:03:19Z
Vavřinec N.
43546
+cs: [[byt]] (assisterat)
4157566
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-er|pluralrot=bostäd}}
'''bostad'''
#{{tagg|sociologi|byggnadsteknik|kat=ä-omljud}} hus eller lägenhet som man bor i
#:{{besläktade ord|[[bo]], [[bod]], [[boende]], [[bonde]], [[bur]], [[bygga]]}}
#:{{jämför|[[boende]]}}
#:{{sammansättningar|[[arbetarbostad]], [[bokal]], [[bostadkomplex]], [[bostadsadress]], [[bostadsannons]], [[bostadsbidrag]], [[bostadsbolag]], [[bostadsbrist]], [[bostadsbyte]], [[bostadsdomstol]], [[bostadsförmedling]], [[bostadsförmån]], [[bostadsförvaltning]], [[bostadsgata]], [[bostadshus]], [[bostadskooperation]], [[bostadskostnad]], [[bostadskris]], [[bostadskvarter]], [[bostadskö]], [[bostadslån]], [[bostadslänga]], [[bostadslös]], [[bostadsmarknad]], [[bostadsmiljö]], [[bostadsminister]], [[bostadsnämnd]], [[bostadsområde]], [[bostadsort]], [[bostadsplanering]], [[bostadspolitik]], [[bostadsprogram]], [[bostadsränta]], [[bostadsrätt]], [[bostadssegregation]], [[bostadssektor]], [[bostadssituation]], [[bostadssparande]], [[bostadsstandard]], [[bostadsstiftelse]], [[bostadsstyrelse]], [[bostadsstöd]], [[bostadssubvention]], [[bostadssökande]], [[bostadstillägg]], [[bostadsutskott]], [[bostadsyta]], [[bostadsägare]], [[gruppbostad]], [[hyresbostad]], [[privatbostad]], [[servicebostad]], [[tjänstebostad]]}}
#:{{etymologi|Av ''[[bo]]'' + ''[[stad]]'', i betydelsen plats, jämför ''[[eldstad]]''.}}
#{{tagg|detaljplan}} [[kvartersmark]] reserverat för [[varaktig]]t [[boende]] och komplementerande element
#:{{synonymer|B}}
#:{{hyponymer|[[enbostadshus]], [[flerbostadshus]], [[fritidshus]], [[förskola]], [[garage]], [[gruppbostad]], [[gästlägenhet]], [[gäststuga]], [[lekplats]], [[miljöhus]], [[parkering]], [[seniorbostad]], [[sommarstuga]], [[studentbostad]], [[träningsbostad]], [[tvåbostadshus]], [[tvättstuga]], [[vårdbostad]]}}
#:{{seäven|[[tillfällig vistelse]], [[vård]]}}
====Översättningar====
{{ö-topp|hus eller lägenhet som man bor i}}
*bokmål: {{ö+|no|bolig}}
*bosniska: {{ö|bs|stan|m}}
*danska: {{ö+|da|bolig}}
*engelska: {{ö+|en|dwelling}}; ''(hem)'' {{ö+|en|home}}; ''(lägenhet)'' {{ö+|en|flat|not=brittisk engelska}}, {{ö+|en|apartment|not=amerikansk engelska}}
*esperanto: {{ö|eo|apartemento}}
*finska: {{ö+|fi|asunto}}
*franska: {{ö+|fr|logement|m}}
*italienska: {{ö+|it|abitazione|f}}, {{ö+|it|appartamento|m}}, {{ö+|it|casa|f}}
*japanska: {{ö+|ja|住居}}
*nederländska: {{ö+|nl|woning|f}}
*polska: {{ö+|pl|mieszkanie|n}}
*portugisiska: {{ö+|pt|residência|f}}, {{ö+|pt|casa|f}}
*spanska: {{ö+|es|vivienda|f}}
*tjeckiska: {{ö+|cs|byt|m}}
*turkiska: {{ö+|tr|daire}}, {{ö+|tr|konut}}
*tyska: {{ö+|de|Wohnung|f}}, {{ö|de|Wohnstätte|f}}
{{ö-botten}}
6tdjsoxglt84kbttqwhdbic4h288jot
artikel
0
32566
4157543
4094540
2026-10-24T20:48:08Z
Vavřinec N.
43546
+cs: [[článek]] (assisterat)
4157543
wikitext
text/x-wiki
{{se även|Artikel}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar|pluralrot=artikl|fog=}}
'''artikel'''
#{{tagg|massmedia}} (kortare) text i ett ämne (i t ex en tidning eller tidskrift) eller beskrivningen av ett uppslagsord (i t ex ett uppslagsverk)
#:''Vi har redan över 3'000'000 '''artiklar''' på svensk Wikipedia.''
#:{{sammansättningar|[[artikelförfattare]], [[debattartikel]], [[nyhetsartikel]], [[tidningsartikel]], [[tidskriftsartikel]]}}
#:{{jämför|[[essä]], [[feature]], [[intervju]], [[kria]], [[krönika]], [[kåseri]], [[ledare]], [[notis]], [[pek]], [[rapport]], [[recension]], [[referat]], [[resebrev]], [[reportage]], [[skildring]], [[spalt]], [[stycke]], [[text]], [[uppsats]], [[översikt]]}}
#{{tagg|juridik}} paragraf eller stycke (ofta inom EU-lagstiftning, internationella [[fördrag]] och dylikt)
#:''Politisk representation genom ett demokratiskt styrelseskick är en grundläggande rättighet enligt '''artikel''' 21 i FN:s allmänna deklaration om de mänskliga rättigheterna.''
#:{{jämför|[[avdelning]], [[avsnitt]], [[del]], [[lärosats]], [[moment]], [[passus]], [[punkt]], [[sektion]]}}
#ord eller del i ett ord (suffix) som markerar bestämd eller obestämd form av ett substantiv
#:''I svenskan är de bestämda '''artiklarna''' "den", "det" och "de".''
#:''De obestämda '''artiklarna''' är "en" och "ett".''
#{{tagg|handel}} föremål som är utbjudet till försäljning (och som oftast förekommer i flera, likadana exemplar)
#:''Den nya affären som öppnade igår påstår sig ha 12'000 '''artiklar''' i lager.''
#:{{jämför|[[gods]], [[persedel]], [[sak]], [[vara]], [[varuslag]], [[varusort]]}}
====Översättningar====
{{ö-topp|text i en tidning eller dylikt}}
*arabiska: {{ö|ar|مَقَالَة|f|tr=maqāla}}
*belarusiska: {{ö|be|арты́кул|m}}
*bokmål: {{ö+|no|artikkel|m}}
*bosniska: {{ö|bs|članak|m}}
*bulgariska: {{ö+|bg|статия́|f}}
*danska: {{ö+|da|artikel|u}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*estniska: {{ö+|et|artikkel}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*hebreiska: {{ö+|he|מַאֲמָר|m|tr=ma`amár}}
*isländska: {{ö+|is|grein|f}}
*italienska: {{ö+|it|articolo|m}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*katalanska: {{ö+|ca|article|m}}
*kroatiska: {{ö+|hr|članak|m}}
*makedonska: {{ö|mk|статија|f}}
*polska: {{ö+|pl|artykuł|m}}
*portugisiska: {{ö+|pt|artigo|m}}
*rumänska: {{ö+|ro|articol|n}}
*ryska: {{ö+|ru|статья́|f}}
*serbiska: {{ö+|sr|чланак|m}}
*slovakiska: {{ö|sk|článok|m}}
*slovenska: {{ö+|sl|članek|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel|m}}
*ukrainska: {{ö+|uk|стаття́|f}}
*ungerska: {{ö+|hu|újságcikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
{{ö-topp|paragraf i lag o dyl}}
*engelska: {{ö+|en|article}}, {{ö+|en|clause}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikla}}
*franska: {{ö+|fr|article|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Paragraf}}
*ungerska: {{ö+|hu|cikkely}}, {{ö+|hu|paragrafus}}
{{ö-botten}}
{{ö-topp|ord eller suffix}}
*armeniska: {{ö+|hy|հոդ}} (hod)
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*grönländska: {{ö|kl|ilisarsiniut}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*spanska: {{ö+|es|artículo|m}}
*tyska: {{ö+|de|Artikel}}
*ungerska: {{ö+|hu|névelő}}
{{ö-botten}}
{{ö-topp|föremål som är utbjudet till försäljning}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artiklo}}
*finska: {{ö+|fi|artikkeli}}, {{ö+|fi|myyntiartikkeli}}
*franska: {{ö+|fr|article|m}}, {{ö+|fr|objet|m}}
*japanska: {{ö+|ja|品}} ({{ö+|ja|ひん}}, ''{{ö+|ja|hin}}'')
*spanska: {{ö+|es|artículo|m}}, {{ö+|es|objeto|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Ware|f}}
*ungerska: {{ö+|hu|árucikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
4bpxodogr2fza9c4kncp7wk1ufa4wo9
4157544
4157543
2026-10-24T20:48:44Z
Vavřinec N.
43546
+cs: [[artikl]] (assisterat)
4157544
wikitext
text/x-wiki
{{se även|Artikel}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar|pluralrot=artikl|fog=}}
'''artikel'''
#{{tagg|massmedia}} (kortare) text i ett ämne (i t ex en tidning eller tidskrift) eller beskrivningen av ett uppslagsord (i t ex ett uppslagsverk)
#:''Vi har redan över 3'000'000 '''artiklar''' på svensk Wikipedia.''
#:{{sammansättningar|[[artikelförfattare]], [[debattartikel]], [[nyhetsartikel]], [[tidningsartikel]], [[tidskriftsartikel]]}}
#:{{jämför|[[essä]], [[feature]], [[intervju]], [[kria]], [[krönika]], [[kåseri]], [[ledare]], [[notis]], [[pek]], [[rapport]], [[recension]], [[referat]], [[resebrev]], [[reportage]], [[skildring]], [[spalt]], [[stycke]], [[text]], [[uppsats]], [[översikt]]}}
#{{tagg|juridik}} paragraf eller stycke (ofta inom EU-lagstiftning, internationella [[fördrag]] och dylikt)
#:''Politisk representation genom ett demokratiskt styrelseskick är en grundläggande rättighet enligt '''artikel''' 21 i FN:s allmänna deklaration om de mänskliga rättigheterna.''
#:{{jämför|[[avdelning]], [[avsnitt]], [[del]], [[lärosats]], [[moment]], [[passus]], [[punkt]], [[sektion]]}}
#ord eller del i ett ord (suffix) som markerar bestämd eller obestämd form av ett substantiv
#:''I svenskan är de bestämda '''artiklarna''' "den", "det" och "de".''
#:''De obestämda '''artiklarna''' är "en" och "ett".''
#{{tagg|handel}} föremål som är utbjudet till försäljning (och som oftast förekommer i flera, likadana exemplar)
#:''Den nya affären som öppnade igår påstår sig ha 12'000 '''artiklar''' i lager.''
#:{{jämför|[[gods]], [[persedel]], [[sak]], [[vara]], [[varuslag]], [[varusort]]}}
====Översättningar====
{{ö-topp|text i en tidning eller dylikt}}
*arabiska: {{ö|ar|مَقَالَة|f|tr=maqāla}}
*belarusiska: {{ö|be|арты́кул|m}}
*bokmål: {{ö+|no|artikkel|m}}
*bosniska: {{ö|bs|članak|m}}
*bulgariska: {{ö+|bg|статия́|f}}
*danska: {{ö+|da|artikel|u}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*estniska: {{ö+|et|artikkel}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*hebreiska: {{ö+|he|מַאֲמָר|m|tr=ma`amár}}
*isländska: {{ö+|is|grein|f}}
*italienska: {{ö+|it|articolo|m}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*katalanska: {{ö+|ca|article|m}}
*kroatiska: {{ö+|hr|članak|m}}
*makedonska: {{ö|mk|статија|f}}
*polska: {{ö+|pl|artykuł|m}}
*portugisiska: {{ö+|pt|artigo|m}}
*rumänska: {{ö+|ro|articol|n}}
*ryska: {{ö+|ru|статья́|f}}
*serbiska: {{ö+|sr|чланак|m}}
*slovakiska: {{ö|sk|článok|m}}
*slovenska: {{ö+|sl|članek|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel|m}}
*ukrainska: {{ö+|uk|стаття́|f}}
*ungerska: {{ö+|hu|újságcikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
{{ö-topp|paragraf i lag o dyl}}
*engelska: {{ö+|en|article}}, {{ö+|en|clause}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikla}}
*franska: {{ö+|fr|article|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Paragraf}}
*ungerska: {{ö+|hu|cikkely}}, {{ö+|hu|paragrafus}}
{{ö-botten}}
{{ö-topp|ord eller suffix}}
*armeniska: {{ö+|hy|հոդ}} (hod)
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*grönländska: {{ö|kl|ilisarsiniut}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*spanska: {{ö+|es|artículo|m}}
*tyska: {{ö+|de|Artikel}}
*ungerska: {{ö+|hu|névelő}}
{{ö-botten}}
{{ö-topp|föremål som är utbjudet till försäljning}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artiklo}}
*finska: {{ö+|fi|artikkeli}}, {{ö+|fi|myyntiartikkeli}}
*franska: {{ö+|fr|article|m}}, {{ö+|fr|objet|m}}
*japanska: {{ö+|ja|品}} ({{ö+|ja|ひん}}, ''{{ö+|ja|hin}}'')
*spanska: {{ö+|es|artículo|m}}, {{ö+|es|objeto|m}}
*tjeckiska: {{ö+|cs|artikl|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Ware|f}}
*ungerska: {{ö+|hu|árucikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
cvzqof301kk8g877ya7nwc2jzjs6ysr
4157545
4157544
2026-10-24T20:48:51Z
Vavřinec N.
43546
+cs: [[zboží]] (assisterat)
4157545
wikitext
text/x-wiki
{{se även|Artikel}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar|pluralrot=artikl|fog=}}
'''artikel'''
#{{tagg|massmedia}} (kortare) text i ett ämne (i t ex en tidning eller tidskrift) eller beskrivningen av ett uppslagsord (i t ex ett uppslagsverk)
#:''Vi har redan över 3'000'000 '''artiklar''' på svensk Wikipedia.''
#:{{sammansättningar|[[artikelförfattare]], [[debattartikel]], [[nyhetsartikel]], [[tidningsartikel]], [[tidskriftsartikel]]}}
#:{{jämför|[[essä]], [[feature]], [[intervju]], [[kria]], [[krönika]], [[kåseri]], [[ledare]], [[notis]], [[pek]], [[rapport]], [[recension]], [[referat]], [[resebrev]], [[reportage]], [[skildring]], [[spalt]], [[stycke]], [[text]], [[uppsats]], [[översikt]]}}
#{{tagg|juridik}} paragraf eller stycke (ofta inom EU-lagstiftning, internationella [[fördrag]] och dylikt)
#:''Politisk representation genom ett demokratiskt styrelseskick är en grundläggande rättighet enligt '''artikel''' 21 i FN:s allmänna deklaration om de mänskliga rättigheterna.''
#:{{jämför|[[avdelning]], [[avsnitt]], [[del]], [[lärosats]], [[moment]], [[passus]], [[punkt]], [[sektion]]}}
#ord eller del i ett ord (suffix) som markerar bestämd eller obestämd form av ett substantiv
#:''I svenskan är de bestämda '''artiklarna''' "den", "det" och "de".''
#:''De obestämda '''artiklarna''' är "en" och "ett".''
#{{tagg|handel}} föremål som är utbjudet till försäljning (och som oftast förekommer i flera, likadana exemplar)
#:''Den nya affären som öppnade igår påstår sig ha 12'000 '''artiklar''' i lager.''
#:{{jämför|[[gods]], [[persedel]], [[sak]], [[vara]], [[varuslag]], [[varusort]]}}
====Översättningar====
{{ö-topp|text i en tidning eller dylikt}}
*arabiska: {{ö|ar|مَقَالَة|f|tr=maqāla}}
*belarusiska: {{ö|be|арты́кул|m}}
*bokmål: {{ö+|no|artikkel|m}}
*bosniska: {{ö|bs|članak|m}}
*bulgariska: {{ö+|bg|статия́|f}}
*danska: {{ö+|da|artikel|u}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*estniska: {{ö+|et|artikkel}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*hebreiska: {{ö+|he|מַאֲמָר|m|tr=ma`amár}}
*isländska: {{ö+|is|grein|f}}
*italienska: {{ö+|it|articolo|m}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*katalanska: {{ö+|ca|article|m}}
*kroatiska: {{ö+|hr|članak|m}}
*makedonska: {{ö|mk|статија|f}}
*polska: {{ö+|pl|artykuł|m}}
*portugisiska: {{ö+|pt|artigo|m}}
*rumänska: {{ö+|ro|articol|n}}
*ryska: {{ö+|ru|статья́|f}}
*serbiska: {{ö+|sr|чланак|m}}
*slovakiska: {{ö|sk|článok|m}}
*slovenska: {{ö+|sl|članek|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel|m}}
*ukrainska: {{ö+|uk|стаття́|f}}
*ungerska: {{ö+|hu|újságcikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
{{ö-topp|paragraf i lag o dyl}}
*engelska: {{ö+|en|article}}, {{ö+|en|clause}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikla}}
*franska: {{ö+|fr|article|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Paragraf}}
*ungerska: {{ö+|hu|cikkely}}, {{ö+|hu|paragrafus}}
{{ö-botten}}
{{ö-topp|ord eller suffix}}
*armeniska: {{ö+|hy|հոդ}} (hod)
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*grönländska: {{ö|kl|ilisarsiniut}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*spanska: {{ö+|es|artículo|m}}
*tyska: {{ö+|de|Artikel}}
*ungerska: {{ö+|hu|névelő}}
{{ö-botten}}
{{ö-topp|föremål som är utbjudet till försäljning}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artiklo}}
*finska: {{ö+|fi|artikkeli}}, {{ö+|fi|myyntiartikkeli}}
*franska: {{ö+|fr|article|m}}, {{ö+|fr|objet|m}}
*japanska: {{ö+|ja|品}} ({{ö+|ja|ひん}}, ''{{ö+|ja|hin}}'')
*spanska: {{ö+|es|artículo|m}}, {{ö+|es|objeto|m}}
*tjeckiska: {{ö+|cs|artikl|m}}, {{ö+|cs|zboží|n}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Ware|f}}
*ungerska: {{ö+|hu|árucikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
5r9bxuo2e5esk2zw9bt1b5xk29gtyh8
4157546
4157545
2026-10-24T20:48:59Z
Vavřinec N.
43546
+cs: [[výrobek]] (assisterat)
4157546
wikitext
text/x-wiki
{{se även|Artikel}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar|pluralrot=artikl|fog=}}
'''artikel'''
#{{tagg|massmedia}} (kortare) text i ett ämne (i t ex en tidning eller tidskrift) eller beskrivningen av ett uppslagsord (i t ex ett uppslagsverk)
#:''Vi har redan över 3'000'000 '''artiklar''' på svensk Wikipedia.''
#:{{sammansättningar|[[artikelförfattare]], [[debattartikel]], [[nyhetsartikel]], [[tidningsartikel]], [[tidskriftsartikel]]}}
#:{{jämför|[[essä]], [[feature]], [[intervju]], [[kria]], [[krönika]], [[kåseri]], [[ledare]], [[notis]], [[pek]], [[rapport]], [[recension]], [[referat]], [[resebrev]], [[reportage]], [[skildring]], [[spalt]], [[stycke]], [[text]], [[uppsats]], [[översikt]]}}
#{{tagg|juridik}} paragraf eller stycke (ofta inom EU-lagstiftning, internationella [[fördrag]] och dylikt)
#:''Politisk representation genom ett demokratiskt styrelseskick är en grundläggande rättighet enligt '''artikel''' 21 i FN:s allmänna deklaration om de mänskliga rättigheterna.''
#:{{jämför|[[avdelning]], [[avsnitt]], [[del]], [[lärosats]], [[moment]], [[passus]], [[punkt]], [[sektion]]}}
#ord eller del i ett ord (suffix) som markerar bestämd eller obestämd form av ett substantiv
#:''I svenskan är de bestämda '''artiklarna''' "den", "det" och "de".''
#:''De obestämda '''artiklarna''' är "en" och "ett".''
#{{tagg|handel}} föremål som är utbjudet till försäljning (och som oftast förekommer i flera, likadana exemplar)
#:''Den nya affären som öppnade igår påstår sig ha 12'000 '''artiklar''' i lager.''
#:{{jämför|[[gods]], [[persedel]], [[sak]], [[vara]], [[varuslag]], [[varusort]]}}
====Översättningar====
{{ö-topp|text i en tidning eller dylikt}}
*arabiska: {{ö|ar|مَقَالَة|f|tr=maqāla}}
*belarusiska: {{ö|be|арты́кул|m}}
*bokmål: {{ö+|no|artikkel|m}}
*bosniska: {{ö|bs|članak|m}}
*bulgariska: {{ö+|bg|статия́|f}}
*danska: {{ö+|da|artikel|u}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*estniska: {{ö+|et|artikkel}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*hebreiska: {{ö+|he|מַאֲמָר|m|tr=ma`amár}}
*isländska: {{ö+|is|grein|f}}
*italienska: {{ö+|it|articolo|m}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*katalanska: {{ö+|ca|article|m}}
*kroatiska: {{ö+|hr|članak|m}}
*makedonska: {{ö|mk|статија|f}}
*polska: {{ö+|pl|artykuł|m}}
*portugisiska: {{ö+|pt|artigo|m}}
*rumänska: {{ö+|ro|articol|n}}
*ryska: {{ö+|ru|статья́|f}}
*serbiska: {{ö+|sr|чланак|m}}
*slovakiska: {{ö|sk|článok|m}}
*slovenska: {{ö+|sl|članek|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel|m}}
*ukrainska: {{ö+|uk|стаття́|f}}
*ungerska: {{ö+|hu|újságcikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
{{ö-topp|paragraf i lag o dyl}}
*engelska: {{ö+|en|article}}, {{ö+|en|clause}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikla}}
*franska: {{ö+|fr|article|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Paragraf}}
*ungerska: {{ö+|hu|cikkely}}, {{ö+|hu|paragrafus}}
{{ö-botten}}
{{ö-topp|ord eller suffix}}
*armeniska: {{ö+|hy|հոդ}} (hod)
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*grönländska: {{ö|kl|ilisarsiniut}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*spanska: {{ö+|es|artículo|m}}
*tyska: {{ö+|de|Artikel}}
*ungerska: {{ö+|hu|névelő}}
{{ö-botten}}
{{ö-topp|föremål som är utbjudet till försäljning}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artiklo}}
*finska: {{ö+|fi|artikkeli}}, {{ö+|fi|myyntiartikkeli}}
*franska: {{ö+|fr|article|m}}, {{ö+|fr|objet|m}}
*japanska: {{ö+|ja|品}} ({{ö+|ja|ひん}}, ''{{ö+|ja|hin}}'')
*spanska: {{ö+|es|artículo|m}}, {{ö+|es|objeto|m}}
*tjeckiska: {{ö+|cs|artikl|m}}, {{ö+|cs|zboží|n}}, {{ö+|cs|výrobek|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Ware|f}}
*ungerska: {{ö+|hu|árucikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
leyb8ea22l6mhuy97ebbfnc7vlub19z
4157547
4157546
2026-10-24T20:49:07Z
Vavřinec N.
43546
+cs: [[člen]] (assisterat)
4157547
wikitext
text/x-wiki
{{se även|Artikel}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar|pluralrot=artikl|fog=}}
'''artikel'''
#{{tagg|massmedia}} (kortare) text i ett ämne (i t ex en tidning eller tidskrift) eller beskrivningen av ett uppslagsord (i t ex ett uppslagsverk)
#:''Vi har redan över 3'000'000 '''artiklar''' på svensk Wikipedia.''
#:{{sammansättningar|[[artikelförfattare]], [[debattartikel]], [[nyhetsartikel]], [[tidningsartikel]], [[tidskriftsartikel]]}}
#:{{jämför|[[essä]], [[feature]], [[intervju]], [[kria]], [[krönika]], [[kåseri]], [[ledare]], [[notis]], [[pek]], [[rapport]], [[recension]], [[referat]], [[resebrev]], [[reportage]], [[skildring]], [[spalt]], [[stycke]], [[text]], [[uppsats]], [[översikt]]}}
#{{tagg|juridik}} paragraf eller stycke (ofta inom EU-lagstiftning, internationella [[fördrag]] och dylikt)
#:''Politisk representation genom ett demokratiskt styrelseskick är en grundläggande rättighet enligt '''artikel''' 21 i FN:s allmänna deklaration om de mänskliga rättigheterna.''
#:{{jämför|[[avdelning]], [[avsnitt]], [[del]], [[lärosats]], [[moment]], [[passus]], [[punkt]], [[sektion]]}}
#ord eller del i ett ord (suffix) som markerar bestämd eller obestämd form av ett substantiv
#:''I svenskan är de bestämda '''artiklarna''' "den", "det" och "de".''
#:''De obestämda '''artiklarna''' är "en" och "ett".''
#{{tagg|handel}} föremål som är utbjudet till försäljning (och som oftast förekommer i flera, likadana exemplar)
#:''Den nya affären som öppnade igår påstår sig ha 12'000 '''artiklar''' i lager.''
#:{{jämför|[[gods]], [[persedel]], [[sak]], [[vara]], [[varuslag]], [[varusort]]}}
====Översättningar====
{{ö-topp|text i en tidning eller dylikt}}
*arabiska: {{ö|ar|مَقَالَة|f|tr=maqāla}}
*belarusiska: {{ö|be|арты́кул|m}}
*bokmål: {{ö+|no|artikkel|m}}
*bosniska: {{ö|bs|članak|m}}
*bulgariska: {{ö+|bg|статия́|f}}
*danska: {{ö+|da|artikel|u}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*estniska: {{ö+|et|artikkel}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*hebreiska: {{ö+|he|מַאֲמָר|m|tr=ma`amár}}
*isländska: {{ö+|is|grein|f}}
*italienska: {{ö+|it|articolo|m}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*katalanska: {{ö+|ca|article|m}}
*kroatiska: {{ö+|hr|članak|m}}
*makedonska: {{ö|mk|статија|f}}
*polska: {{ö+|pl|artykuł|m}}
*portugisiska: {{ö+|pt|artigo|m}}
*rumänska: {{ö+|ro|articol|n}}
*ryska: {{ö+|ru|статья́|f}}
*serbiska: {{ö+|sr|чланак|m}}
*slovakiska: {{ö|sk|článok|m}}
*slovenska: {{ö+|sl|članek|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel|m}}
*ukrainska: {{ö+|uk|стаття́|f}}
*ungerska: {{ö+|hu|újságcikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
{{ö-topp|paragraf i lag o dyl}}
*engelska: {{ö+|en|article}}, {{ö+|en|clause}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikla}}
*franska: {{ö+|fr|article|m}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|článek|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Paragraf}}
*ungerska: {{ö+|hu|cikkely}}, {{ö+|hu|paragrafus}}
{{ö-botten}}
{{ö-topp|ord eller suffix}}
*armeniska: {{ö+|hy|հոդ}} (hod)
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artikolo}}
*finska: {{ö+|fi|artikkeli}}
*franska: {{ö+|fr|article|m}}
*grönländska: {{ö|kl|ilisarsiniut}}
*jiddisch: {{ö|yi|אַרטיקל|m|tr=artikl}}
*spanska: {{ö+|es|artículo|m}}
*tjeckiska: {{ö+|cs|člen|m}}
*tyska: {{ö+|de|Artikel}}
*ungerska: {{ö+|hu|névelő}}
{{ö-botten}}
{{ö-topp|föremål som är utbjudet till försäljning}}
*engelska: {{ö+|en|article}}
*esperanto: {{ö+|eo|artiklo}}
*finska: {{ö+|fi|artikkeli}}, {{ö+|fi|myyntiartikkeli}}
*franska: {{ö+|fr|article|m}}, {{ö+|fr|objet|m}}
*japanska: {{ö+|ja|品}} ({{ö+|ja|ひん}}, ''{{ö+|ja|hin}}'')
*spanska: {{ö+|es|artículo|m}}, {{ö+|es|objeto|m}}
*tjeckiska: {{ö+|cs|artikl|m}}, {{ö+|cs|zboží|n}}, {{ö+|cs|výrobek|m}}
*tyska: {{ö+|de|Artikel}}, {{ö+|de|Ware|f}}
*ungerska: {{ö+|hu|árucikk}}, {{ö+|hu|cikk}}
{{ö-botten}}
7awq7nw1l7gtp3jrcx0lqnsu82webjb
tenta
0
52284
4157574
3884400
2026-10-24T22:13:10Z
Icelk
40532
lägg till extenta som sammansättning
4157574
wikitext
text/x-wiki
==Svenska==
===Verb===
{{sv-verb-ar|rot=tent|perfpart=}}
'''tenta'''
#{{tagg|utbildningsväsende|vardagligt|text=kort för}} [[tentera]]; skriva en [[tentamen]]
#:{{konstr|tenta något, [[tenta av]] något, [[tenta upp]] något, tenta någon gång}}
#:''"Jag kan tyvärr inte prata just nu, för jag ska '''tenta''' av min mattekurs imorgon", sa den desperata studenten nervöst och sänkte åter huvudet i kurslitteraturen.''
====Översättningar====
{{ö-topp|kort för tentera}}
*tyska: [[Prüfung]] [[ablegen]]
{{ö-botten}}
===Substantiv===
{{sv-subst-n-or}}
'''tenta'''
#{{tagg|utbildningsväsende|vardagligt|text=kort för}} [[tentamen]]
#:{{konstr|skriva en tenta, göra en tenta, klara en tenta, kugga (på) en tenta, ha (en) tenta i något (ämne), ha tenta på något (material att studera in), spika en tenta}}
#:'''''Tentan''' hölls i universitets största sal, där 700 elever och 10 provvakter fick plats.''
#:{{sammansättningar|[[extenta]], [[grupptenta]], [[hemtenta]], [[omtenta]], [[resttenta]], [[salstenta]], [[tentaplugg]], [[tentarättare]], [[tentasal]], [[tentavakt]]}}
#:{{besläktade ord|[[tentand]], [[tentamen]]}}
#:{{seäven|[[munta]], [[dugga]]}}
====Översättningar====
{{ö-topp|tentamen}}
*tyska: {{ö+|de|Prüfung|f}}, {{ö+|de|Test|m}}
{{ö-botten}}
==Franska==
===Verb===
'''tenta'''
#{{böjning|fr|verb|tenter}}
i76m6odfqf39gx7jt907jpefrpyzoh7
änkling
0
52683
4157534
3861558
2026-10-24T20:42:45Z
Vavřinec N.
43546
+cs: [[vdovec]] (assisterat)
4157534
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
'''änkling'''
#[[man]], vars äktenskapspartner [[avlida|avlidit]], och som inte är [[omgift]]
#:{{synonymer|[[änkeman]]}}
#:{{besläktade ord|[[änka]]}}
#:{{sammansättningar|[[gräsänkling]]}}
====Översättningar====
{{ö-topp|man vars äktenskapspartner har avlidit}}
*bokmål: {{ö+|no|enkemann|m}}
*danska: {{ö+|da|enkemand|u}}
*engelska: {{ö+|en|widower}}
*finska: {{ö+|fi|leski}}, {{ö+|fi|leskimies}}
*franska: {{ö+|fr|veuf|m}}
*färöiska: {{ö|fo|einkjumaður|m}}
*isländska: {{ö+|is|ekkill|m}}, {{ö|is|ekkjumaður}}
*italienska: {{ö+|it|vedovo|m}}
*nederländska: {{ö+|nl|weduwnaar|m}}
*nynorska: {{ö|nn|enkjemann|m}}, {{ö|nn|enkemann|m}}
*polska: {{ö+|pl|wdowiec|m}}
*portugisiska: {{ö+|pt|viúvo|m}}
*spanska: {{ö+|es|viudo|m}}
*tjeckiska: {{ö+|cs|vdovec|m}}
*turkiska: {{ö+|tr|dul}}
*tyska: {{ö+|de|Witwer|m}}
*älvdalska: {{ö|ovd|ainklingg|m}}
{{ö-botten}}
2ls8aawq4cqecqrwk8e02h7tbokrdqe
apotek
0
59867
4157537
3872828
2026-10-24T20:44:18Z
Vavřinec N.
43546
+cs: [[lékárna]] (assisterat)
4157537
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-0}}
{{media|Apotek 1, Frölunda Torg.jpg|ett '''apotek''' som säljer läkemedel}}
'''apotek'''
#[[butik]] i vilken [[läkemedel]] säljes
#:''Jag ska gå till '''apoteket'''.''
#:{{synonymer|[[läkemedelsbutik]]/[[läkemedelsaffär]], [[droghandel]] ''(ålderdomligt)'', [[medikamentsförråd]]}}
#:{{jämför|[[farmaci]]}}
#:{{sammansättningar|[[apoteksbiträde]], [[apotekskedja]], [[apotekstekniker]]}}
#:{{etymologi|Av {{härledning|sv|grc|ἀποθήκη|tr=apothḗkē|lager/-byggnad, handel}}}}
#:{{besläktade ord|[[apotekare]], [[butik]], [[boutique]]}}
#{{tagg|kat=fackspråk|text=restaurang}} en [[uppsättning]] av [[salt]] och [[peppar]], kan i vissa fall bestå av andra [[kryddor]]
====Översättningar====
{{ö-topp|butik där läkemedel säljs}}
*albanska: {{ö+|sq|barnatore}}, {{ö+|sq|farmaci}}
*arabiska: {{ö|ar|صَيْدَلِيَّة|f|tr=ṣaydaliyya}}
*armeniska: {{ö+|hy|դեղատուն|tr=dełatun}}
*azerbajdzjanska: {{ö+|az|aptek}}, {{ö|az|əczaxana}}
*baskiska: {{ö|eu|farmazia}}
*belarusiska: {{ö|be|аптэка|f}}
*bengali: {{ö+|bn|ফার্মেসি|tr=pharmeśi}}
*bokmål: {{ö+|no|apotek|n}}
*danska: {{ö+|da|apotek|n}}
*engelska: {{ö+|en|pharmacy}}, {{ö+|en|drugstore|not=amerikansk engelska}}, {{ö+|en|apothecary}}, {{ö+|en|chemist's}}
*finska: {{ö+|fi|apteekki}}
*franska: {{ö+|fr|pharmacie|f}}
*färöiska: {{ö|fo|apotek|n}}
*grönländska: {{ö|kl|nakorsaataarniarfik}}
*hebreiska: {{ö+|he|בֵּית מִרְקַחַת|m|tr=beyt mirkakhat}}
*isländska: {{ö+|is|apótek|n}}, {{ö+|is|lyfjabúð|f}}
*italienska: {{ö+|it|farmacia|f}}
*japanska: {{ö+|ja|薬局|tr=yakkyoku}}, {{ö|ja|やっきょく}}, {{ö|ja|薬屋|tr=kusuriya}}, {{ö+|ja|くすりや}}
*jiddisch: {{ö|yi|אַפּטייק|f|tr=apteyk}}
*katalanska: {{ö+|ca|farmàcia}}
*koreanska: {{ö+|ko|약국|tr=yakguk}}, {{ö+|ko|藥局}}
*kurdiska: {{ö+|ku|dermanxane|f}}, {{ö+|ku|eczaxane|f}}, {{ö+|ku|îlacxane|f}}
*nederländska: {{ö+|nl|apotheek|mf}}
*nynorska: {{ö|nn|apotek|n}}
*persiska: {{ö+|fa|داروخانه|tr=dâru-xâne}}
*polska: {{ö+|pl|apteka|f}}
*portugisiska: {{ö+|pt|farmácia}}
*ryska: {{ö+|ru|аптека|f}}
*slovenska: {{ö+|sl|lekarna}}
*spanska: {{ö+|es|farmacia|f}}
*tatariska: {{ö|tt|daruxanä}}
*thai: {{ö|th|ร้านขายยา|tr=ráan-kǎai-yaa}}
*tibetanska: {{ö|bo|སྨན་ཚོང་ཁང|tr=sman tshong khang}}
*tjeckiska: {{ö+|cs|apatyka}}, {{ö+|cs|lékárna|f}}
*turkiska: {{ö+|tr|eczane}}
*turkmeniska: {{ö|tk|daruxanä}}
*tyska: {{ö+|de|Apotheke|f}}
*ukrainska: {{ö+|uk|аптека|f}}
*uzbekiska: {{ö+|uz|apteka}}, {{ö+|uz|dorixona}}
{{ö-botten}}
==Bokmål==
===Substantiv===
{{no-subst|apotek|apoteket|[[apotek]], [[apoteker]]|[[apoteka]], [[apotekene]]|7=[[apoteks]], [[apotekers]]|8=[[apotekas]], [[apotekenes]]|genus=neutrum}}
'''apotek''' {{n}}
#[[#Svenska|apotek]]
==Danska==
===Substantiv===
{{da-subst-t|apotek|apoteket|apoteker|apotekerne}}
'''apotek''' {{n}}
#[[#Svenska|apotek]]
==Färöiska==
===Substantiv===
{{fo-subst|apotek|apotekið|apotek|apotekini|apotek|apotekið|apotek|apotekini|apoteki|apotekinum|apotekum|apotekunum|apoteks|apoteksins|apoteka|apotekanna|genus=neutrum}}
'''apotek''' {{n}}
#[[#Svenska|apotek]]
==Nynorska==
===Substantiv===
{{subst|nn}}
'''apotek''' {{n}}
#[[#Svenska|apotek]]
4qhyx071mq5udkp53l4kmaxo5ubqd6l
4157538
4157537
2026-10-24T20:45:05Z
Vavřinec N.
43546
tjeck.
4157538
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-0}}
{{media|Apotek 1, Frölunda Torg.jpg|ett '''apotek''' som säljer läkemedel}}
'''apotek'''
#[[butik]] i vilken [[läkemedel]] säljes
#:''Jag ska gå till '''apoteket'''.''
#:{{synonymer|[[läkemedelsbutik]]/[[läkemedelsaffär]], [[droghandel]] ''(ålderdomligt)'', [[medikamentsförråd]]}}
#:{{jämför|[[farmaci]]}}
#:{{sammansättningar|[[apoteksbiträde]], [[apotekskedja]], [[apotekstekniker]]}}
#:{{etymologi|Av {{härledning|sv|grc|ἀποθήκη|tr=apothḗkē|lager/-byggnad, handel}}}}
#:{{besläktade ord|[[apotekare]], [[butik]], [[boutique]]}}
#{{tagg|kat=fackspråk|text=restaurang}} en [[uppsättning]] av [[salt]] och [[peppar]], kan i vissa fall bestå av andra [[kryddor]]
====Översättningar====
{{ö-topp|butik där läkemedel säljs}}
*albanska: {{ö+|sq|barnatore}}, {{ö+|sq|farmaci}}
*arabiska: {{ö|ar|صَيْدَلِيَّة|f|tr=ṣaydaliyya}}
*armeniska: {{ö+|hy|դեղատուն|tr=dełatun}}
*azerbajdzjanska: {{ö+|az|aptek}}, {{ö|az|əczaxana}}
*baskiska: {{ö|eu|farmazia}}
*belarusiska: {{ö|be|аптэка|f}}
*bengali: {{ö+|bn|ফার্মেসি|tr=pharmeśi}}
*bokmål: {{ö+|no|apotek|n}}
*danska: {{ö+|da|apotek|n}}
*engelska: {{ö+|en|pharmacy}}, {{ö+|en|drugstore|not=amerikansk engelska}}, {{ö+|en|apothecary}}, {{ö+|en|chemist's}}
*finska: {{ö+|fi|apteekki}}
*franska: {{ö+|fr|pharmacie|f}}
*färöiska: {{ö|fo|apotek|n}}
*grönländska: {{ö|kl|nakorsaataarniarfik}}
*hebreiska: {{ö+|he|בֵּית מִרְקַחַת|m|tr=beyt mirkakhat}}
*isländska: {{ö+|is|apótek|n}}, {{ö+|is|lyfjabúð|f}}
*italienska: {{ö+|it|farmacia|f}}
*japanska: {{ö+|ja|薬局|tr=yakkyoku}}, {{ö|ja|やっきょく}}, {{ö|ja|薬屋|tr=kusuriya}}, {{ö+|ja|くすりや}}
*jiddisch: {{ö|yi|אַפּטייק|f|tr=apteyk}}
*katalanska: {{ö+|ca|farmàcia}}
*koreanska: {{ö+|ko|약국|tr=yakguk}}, {{ö+|ko|藥局}}
*kurdiska: {{ö+|ku|dermanxane|f}}, {{ö+|ku|eczaxane|f}}, {{ö+|ku|îlacxane|f}}
*nederländska: {{ö+|nl|apotheek|mf}}
*nynorska: {{ö|nn|apotek|n}}
*persiska: {{ö+|fa|داروخانه|tr=dâru-xâne}}
*polska: {{ö+|pl|apteka|f}}
*portugisiska: {{ö+|pt|farmácia}}
*ryska: {{ö+|ru|аптека|f}}
*slovenska: {{ö+|sl|lekarna}}
*spanska: {{ö+|es|farmacia|f}}
*tatariska: {{ö|tt|daruxanä}}
*thai: {{ö|th|ร้านขายยา|tr=ráan-kǎai-yaa}}
*tibetanska: {{ö|bo|སྨན་ཚོང་ཁང|tr=sman tshong khang}}
*tjeckiska: {{ö+|cs|lékárna|f}}, {{ö+|cs|apatyka|f}}
*turkiska: {{ö+|tr|eczane}}
*turkmeniska: {{ö|tk|daruxanä}}
*tyska: {{ö+|de|Apotheke|f}}
*ukrainska: {{ö+|uk|аптека|f}}
*uzbekiska: {{ö+|uz|apteka}}, {{ö+|uz|dorixona}}
{{ö-botten}}
==Bokmål==
===Substantiv===
{{no-subst|apotek|apoteket|[[apotek]], [[apoteker]]|[[apoteka]], [[apotekene]]|7=[[apoteks]], [[apotekers]]|8=[[apotekas]], [[apotekenes]]|genus=neutrum}}
'''apotek''' {{n}}
#[[#Svenska|apotek]]
==Danska==
===Substantiv===
{{da-subst-t|apotek|apoteket|apoteker|apotekerne}}
'''apotek''' {{n}}
#[[#Svenska|apotek]]
==Färöiska==
===Substantiv===
{{fo-subst|apotek|apotekið|apotek|apotekini|apotek|apotekið|apotek|apotekini|apoteki|apotekinum|apotekum|apotekunum|apoteks|apoteksins|apoteka|apotekanna|genus=neutrum}}
'''apotek''' {{n}}
#[[#Svenska|apotek]]
==Nynorska==
===Substantiv===
{{subst|nn}}
'''apotek''' {{n}}
#[[#Svenska|apotek]]
1ffj5zrnrnjr0qll1udmq87k4uhqdjw
bröstmjölk
0
60239
4157571
4101581
2026-10-24T21:05:38Z
Vavřinec N.
43546
+cs: [[mateřské mléko]] (assisterat)
4157571
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-oräkn}}
'''[[bröst]][[mjölk]]'''
#{{tagg|kat=mat}} [[mjölk]] från en [[kvinna]]s [[bröst]] (som hon producerar för att [[amma]] sitt eller sina [[barn]])
#:{{synonymer|[[di]], [[modersmjölk]]}}
#:{{etymologi|{{belagt|sv|1759}}<ref>{{källa-so}}</ref>}}
====Översättningar====
{{ö-topp}}
*bokmål: {{ö|no|brystmelk|m}}
*danska: {{ö|da|brystmælk}}
*finska: {{ö+|fi|rintamaito}}
*franska: {{ö+|fr|lait}}
*isländska: {{ö|is|brjóstamjólk|f}}
*japanska: {{ö+|ja|母乳|tr=ぼにゅう, bonyū}}
*tjeckiska: {{ö+|cs|mateřské mléko|n}}
*tyska: {{ö+|de|Muttermilch|f}}
{{ö-botten}}
==Källor==
<references/>
h9zkxpl95m6zvgqw8z690mfbrub23dc
bordell
0
60743
4157563
3862203
2026-10-24T21:02:32Z
Vavřinec N.
43546
+cs: [[bordel]] (assisterat)
4157563
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''bordell'''
#{{tagg|prostitution}} arbetsplats för [[prostituerad]]e; horhus
#:''I Tyskland finns det '''bordeller''' för där är det legalt med prostitution.''
#:{{synonymer|[[horhus]], [[glädjehus]], [[skökohus]]}}
#:{{etymologi|Av {{härledning|sv|fr|bordel}}.}}
#:{{sammansättningar|[[bordellmamma]]}}
====Översättningar====
{{ö-topp|horhus}}
*afrikaans: {{ö+|af|bordeel}}
*azerbajdzjanska: {{ö|az|fahişəxana}}
*baskiska: {{ö+|eu|putetxe}}
*bokmål: {{ö|no|bordell|n}}, {{ö|no|horehus|n}}
*danska: {{ö|da|bordel|n}}, {{ö+|da|horehus|n}}
*engelska: {{ö+|en|brothel}}, {{ö+|en|whorehouse}}, {{ö+|en|bawdy-house}}, {{ö+|en|bordello}}
*esperanto: {{ö+|eo|bordelo}}
*estniska: {{ö+|et|bordell}}, {{ö|et|lõbumaja}}
*finska: {{ö+|fi|bordelli}}, {{ö+|fi|ilotalo}}
*franska: {{ö+|fr|bordel|m}}, {{ö+|fr|maison close|f}}, {{ö+|fr|lupanar|f}}, {{ö+|fr|maison de plaisir|f}}
*galiciska: {{ö+|gl|casa de putas|f}}, {{ö+|gl|prostíbulo|m}}, {{ö+|gl|bordel|m}}
*hebreiska: {{ö+|he|בֵּית בֹּשֶׁת|tr=bet boshet}}
*indonesiska: {{ö+|id|bordil}}
*isländska: {{ö|is|hóruhús|n}}, {{ö|is|vændishús|n}}, {{ö|is|pútnahús|n}}
*jiddisch: {{ö|yi|שאַנדהויז|n|tr=shandhoyz}}
*katalanska: {{ö+|ca|bordell}}, {{ö+|ca|prostíbul|m}}
*klassisk nahuatl: {{ö|nci|ahuiyanicalli}}
*maltesiska: {{ö|mt|burdell|m}}
*nederländska: {{ö+|nl|bordeel}}, {{ö+|nl|hoerenkast}}
*polska: {{ö+|pl|burdel|m}}
*portugisiska: {{ö+|pt|bordel}}, {{ö+|pt|prostíbulo|m}}
*rumänska: {{ö+|ro|bordel}}, {{ö+|ro|lupanar}}
*ryska: {{ö+|ru|бордель|m}}
*slovakiska: {{ö|sk|bordel|m}}, {{ö|sk|nevestinec|m}}, {{ö|sk|verejný dom|m}}
*slovenska: {{ö+|sl|bordel|m}}, {{ö|sl|javna hiša|f}}
*spanska: {{ö+|es|casa de citas|f}}, {{ö+|es|bulín|m|not=Peru}}, {{ö+|es|burdel|m}}, {{ö+|es|lupanar|m}}, {{ö+|es|prostíbulo|m}}, {{ö+|es|mancebía|f}}, {{ö+|es|casa de putas|f}}, {{ö|es|bayú|m}}
*swahili: {{ö|sw|danguro}}, {{ö|sw|madanguro}}, {{ö|sw|madangro}}, {{ö|sw|dangro}}
*tjeckiska: {{ö+|cs|bordel|m}}
*turkiska: {{ö+|tr|genelev}}, {{ö+|tr|kerhane}}, {{ö+|tr|umumhane}}
*tyska: {{ö+|de|Bordell|n}}, {{ö+|de|Puff|m}}, {{ö+|de|Freudenhaus|n}}
{{ö-botten}}
c66ijz3vm2qwqnws825ovw0j86bsiwu
äventyr
0
66160
4157548
4153745
2026-10-24T20:50:02Z
Vavřinec N.
43546
+cs: [[dobrodružství]] (assisterat)
4157548
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-0}}
'''äventyr'''
#[[farofylld|farofyllt]], [[våghalsig]]t och [[djärv]]t [[företag]] ([[handling]])
#[[spännande]] och [[ovanlig]] [[upplevelse]]
#[[kortvarig]]t [[kärleksförhållande]] med en oftast [[tillfällig]] [[partner]]
#:{{seäven|[[affär]], [[eskapad]]}}
:{{avgränsare}}
:{{besläktade ord|[[äventyra]], [[äventyrare]], [[äventyrerska]], [[äventyrlig]]}}
:{{sammansättningar|[[äventyrsfilm]], [[äventyrsroman]]}}
:{{fraser|[[till äventyrs]]}}
:{{seäven-bring|Hot|Oförvägenhet|Tvång|Försök|Fara|Slump|Skildring|Fantasi|Prövning|Oberäknelighet|Tidsförhållande}}
====Översättningar====
{{ö-topp|farlig upplevelse}}
*afrikaans: {{ö|af|avontuur}}
*bokmål: {{ö+|no|eventyr|n}}
*danska: {{ö+|da|eventyr|n}}
*engelska: {{ö+|en|adventure}}
*finska: {{ö+|fi|seikkailu}}
*franska: {{ö+|fr|aventure|f}}
*färöiska: {{ö|fo|ævintýr}}
*japanska: {{ö+|ja|冒険|tr=''bouken''}}
*kroatiska: {{ö|hr|avantura}}
*kurdiska: {{ö+|ku|macera}}
*mirandesiska: {{ö|mwl|abintura|f}}
*nederländska: {{ö+|nl|avontuur|n}}
*nynorska: {{ö|nn|eventyr|n}}
*polska: {{ö+|pl|przygoda|f}}
*portugisiska: {{ö+|pt|aventura|f}}
*ryska: {{ö+|ru|приключение|tr=prikljutjenije}}, {{ö+|ru|авантюра|f|tr=avantiura}}
*tjeckiska: {{ö+|cs|dobrodružství|n}}
*turkiska: {{ö+|tr|macera}}
*tyska: {{ö+|de|Abenteuer|n}}
*ukrainska: {{ö|uk|пригода|f|tr=pryhoda}}, {{ö+|uk|авантюра|f|tr=avantiura}}
{{ö-botten}}
7x8922kdov9j8h0wbssmpmw5w3jl1ow
Wiktionary:Teknikvinden
4
70631
4157667
4157187
2026-10-25T02:11:16Z
Taylor 49
27466
: [[:Kategori:Sidor med för många resurskrävande parserfunktioner]] ~~~~
4157667
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)
: [[:Kategori:Sidor med för många resurskrävande parserfunktioner]] [[Användare:Taylor 49|Taylor 49]] ([[Användardiskussion:Taylor 49|diskussion]]) 25 oktober 2026 kl. 03.11 (CET)
6e8os7utrgelllg3kgnpcyk07rq8971
begravning
0
78208
4157560
4141835
2026-10-24T20:57:57Z
Vavřinec N.
43546
+cs: [[pohřeb]] (assisterat)
4157560
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-ar}}
'''[[begrava|begrav]][[-ning|ning]]'''
*{{uttal|sv|ipa=begˈrɑːvniŋ}}
#{{tagg|kat=begravning}} (ofta religiös) ceremoni i anslutning till en människas [[bortgång]]
#:''Kommer du på '''begravningen'''?''
#det att gräva ner en [[död]] [[människa]] eller dött djur i jorden, det att [[begrava]]
:{{avgränsare}}
:{{synonymer|[[gravsättning]], [[jordafärd]], [[likbegängelse]] ''(poetiskt)''}}
:{{besläktade ord|[[begrava]]}}
:{{sammansättningar|[[begravningsakt]], [[begravningsavgift]], [[begravningsbyrå]], [[begravningsceremoni]], [[begravningsentreprenör]], [[begravningsfölje]], [[begravningsgudstjänst]], [[begravningskaffe]], [[begravningsplats]], [[begravningsrit]], [[brandbegravning]]}}
====Översättningar====
{{ö-topp|ceremoni}}
*bokmål: {{ö+|no|begravelse}}
*danska: {{ö+|da|begravelse|u}}
*engelska: {{ö+|en|funeral}}
*esperanto: {{ö|eo|entombigo}}
*finsk romani: {{ö|rmf|limori}}
*finska: {{ö+|fi|hautajaiset|p}}
*franska: {{ö+|fr|enterrement}}
*indonesiska: {{ö+|id|pemakaman}}
*latin: {{ö+|la|funus|n}}
*lulesamiska: {{ö|smj|hávddádus}}
*nederländska: {{ö+|nl|begrafenis}}
*polska: {{ö+|pl|pogrzeb|m}}
*portugisiska: {{ö+|pt|funeral|m}}
*ryska: {{ö+|ru|похороны}}
*spanska: {{ö+|es|funeral|m}}, {{ö+|es|entierro|m}}, {{ö+|es|funerales|m|p}}, {{ö+|es|sepelio|m}}, {{ö+|es|exequias|f|p}}, {{ö+|es|pompas|f|p}}
*tjeckiska: {{ö+|cs|pohřeb|m}}
*tyska: {{ö+|de|Begräbnis|n}}, {{ö+|de|Beerdigung|f}}, {{ö+|de|Bestattung|f}}, {{ö+|de|Trauerfeier|f}}, {{ö+|de|Beisetzung|f}}
*vilamoviska: {{ö|wym|bygrytnys|n}}
{{ö-botten}}
{{ö-topp|det att gräva ner av människa eller djur}}
*danska: {{ö+|da|begravelse|u}}
*engelska: {{ö+|en|burial}}
*finska: {{ö+|fi|hautaaminen}}
*portugisiska: {{ö+|pt|enterro|m}}
*tyska: {{ö+|de|Begräbnis|n}}, {{ö+|de|Beerdigung|f}}, {{ö+|de|Bestattung|f}}
{{ö-botten}}
4u95xqedmxk2kwnkyni5fcv3hv7timu
Kategori:Esperanto
14
108286
4157419
2981853
2026-10-24T12:05:17Z
Frodlekis
762
4157419
wikitext
text/x-wiki
{{kategorinavigering|Esperanto}}
{{faktaruta språk}}
mmxdyt7my2xmgqx16eetj81whecc55b
Kategori:Estniska
14
108287
4157430
2981905
2026-10-24T12:22:02Z
Frodlekis
762
4157430
wikitext
text/x-wiki
{{kategorinavigering|Estniska}}
{{faktaruta språk}}
gqt1y4iawdyv19a5coyx7xnzxbl5gvj
Kategori:Fiji
14
108289
4157427
2981949
2026-10-24T12:15:49Z
Frodlekis
762
4157427
wikitext
text/x-wiki
{{kategorinavigering|Fiji}}
{{faktaruta språk}}
m1ax98t9jkel3ivsc6o0zerqqg5ucve
Kategori:Fornengelska
14
108290
4157422
2982016
2026-10-24T12:09:00Z
Frodlekis
762
4157422
wikitext
text/x-wiki
{{kategorinavigering|Fornengelska}}
{{faktaruta språk}}
etu0zby7xnc4bcasrcmqs9kg4cboqwz
Kategori:Gujarati
14
108303
4157418
2982326
2026-10-24T12:04:27Z
Frodlekis
762
4157418
wikitext
text/x-wiki
{{kategorinavigering|Gujarati}}
{{faktaruta språk}}
43h27z4xzz5abiz1uzqaygxnaqtb6jm
Kategori:Hausa
14
108304
4157431
2982340
2026-10-24T12:23:37Z
Frodlekis
762
4157431
wikitext
text/x-wiki
{{kategorinavigering|Hausa}}
{{faktaruta språk}}
516cdkefv6rpeny1o0sq8pkdx2abgxp
Kategori:Hawaiiska
14
108305
4157432
2982343
2026-10-24T12:32:48Z
Frodlekis
762
4157432
wikitext
text/x-wiki
{{kategorinavigering|Hawaiiska}}
{{faktaruta språk}}
0gfo2p6445o89splvzm3xvfvzuavnd8
Kategori:Hebreiska
14
108306
4157434
2982354
2026-10-24T12:37:39Z
Frodlekis
762
4157434
wikitext
text/x-wiki
{{kategorinavigering|Hebreiska}}
{{faktaruta språk}}
ojiqrwub7s5kq9t2ychc3qqj95v539m
Kategori:Hindi
14
108307
4157439
2982377
2026-10-24T12:43:07Z
Frodlekis
762
4157439
wikitext
text/x-wiki
{{kategorinavigering|Hindi}}
{{faktaruta språk}}
5uo4egstn49b6ir7l94iulr8vpv876v
Kategori:Ido
14
108308
4157447
2982415
2026-10-24T12:56:14Z
Frodlekis
762
4157447
wikitext
text/x-wiki
{{kategorinavigering|Ido}}
{{faktaruta språk}}
t6lj4l0ut9rf3iwd1f2lojnkzauvrri
Kategori:Indonesiska
14
108309
4157460
2982444
2026-10-24T14:31:11Z
Frodlekis
762
4157460
wikitext
text/x-wiki
{{kategorinavigering|Indonesiska}}
{{faktaruta språk}}
hw0nf5soj3sd9psagixocufka01d19f
Kategori:Interlingua
14
108310
4157462
2982471
2026-10-24T14:34:15Z
Frodlekis
762
4157462
wikitext
text/x-wiki
{{kategorinavigering|Interlingua}}
{{faktaruta språk}}
m8ki04y4i1bgmp3l7wmbwkxalxpuo44
Kategori:Inuktitut
14
108311
4157464
2982490
2026-10-24T14:35:48Z
Frodlekis
762
4157464
wikitext
text/x-wiki
{{kategorinavigering|Inuktitut}}
{{faktaruta språk}}
8x1krb8uezlgip19dxel5ioc5hai6xs
Kategori:Iriska
14
108312
4157457
2982494
2026-10-24T13:05:14Z
Frodlekis
762
4157457
wikitext
text/x-wiki
{{kategorinavigering|Iriska}}
{{faktaruta språk}}
cel7e41boqac0oou56r9i6qaoazqok8
Kategori:Isländska
14
108313
4157456
2982519
2026-10-24T13:04:41Z
Frodlekis
762
4157456
wikitext
text/x-wiki
{{kategorinavigering|Isländska}}
{{faktaruta språk}}
j9o45r88abvz3mmzcs5jv6a20zvzx0p
Kategori:Italienska
14
108314
4157455
2982564
2026-10-24T13:03:40Z
Frodlekis
762
4157455
wikitext
text/x-wiki
{{kategorinavigering|Italienska}}
{{faktaruta språk}}
qy5azsj1u6qhw6v57wr1sbm1osuff2e
Kategori:Japanska
14
108315
4157452
2982623
2026-10-24T13:00:34Z
Frodlekis
762
4157452
wikitext
text/x-wiki
{{kategorinavigering|Japanska}}
{{faktaruta språk}}
lv2dsu3g411hor697ag563bjk0mjxfg
Kategori:Javanesiska
14
108316
4157451
2982667
2026-10-24T12:59:30Z
Frodlekis
762
4157451
wikitext
text/x-wiki
{{kategorinavigering|Javanesiska}}
{{faktaruta språk}}
201ttrf8rmbajzcqzaab7y7uvjximxk
Kategori:Jiddisch
14
108317
4157435
2982675
2026-10-24T12:38:11Z
Frodlekis
762
4157435
wikitext
text/x-wiki
{{kategorinavigering|Jiddisch}}
{{faktaruta språk}}
irzu2gihehejeao3far1s34dao6yzc5
Kategori:Kabardinska
14
108318
4157465
2982700
2026-10-24T14:36:27Z
Frodlekis
762
4157465
wikitext
text/x-wiki
{{kategorinavigering|Kabardinska}}
{{faktaruta språk}}
h21q4vk9bmozaoz4pzoioc7o01bna3z
Kategori:Kammu
14
108319
4157469
2989412
2026-10-24T14:41:36Z
Frodlekis
762
4157469
wikitext
text/x-wiki
{{kategorinavigering|Kammu}}
{{faktaruta språk}}
ieravjv9zq4xsdvs3bqps7q2eg83ovs
4157470
4157469
2026-10-24T14:45:55Z
Frodlekis
762
4157470
wikitext
text/x-wiki
{{kategorinavigering|Kammu}}
{{faktaruta språk|Q6359779}}
mzq1iqdsqj6yhkcfyea3rqnbdpyjwcx
Kategori:Kannada
14
108320
4157472
2976015
2026-10-24T14:48:59Z
Frodlekis
762
4157472
wikitext
text/x-wiki
{{kategorinavigering|Kannada}}
{{faktaruta språk}}
5v2s6liavei8qnwtdz8j0fe25z70af3
Kategori:Karakalpakiska
14
108321
4157474
2982733
2026-10-24T14:51:35Z
Frodlekis
762
4157474
wikitext
text/x-wiki
{{kategorinavigering|Karakalpakiska}}
{{faktaruta språk}}
frbboz79r8cbr7b06gdujrwjx9duar9
Kategori:Kashmiri
14
108322
4157478
2982746
2026-10-24T14:54:28Z
Frodlekis
762
4157478
wikitext
text/x-wiki
{{kategorinavigering|Kashmiri}}
{{faktaruta språk}}
jzd0xa3e8mbkhvqms1qjitavutmmi6m
Kategori:Katalanska
14
108323
4157480
2976541
2026-10-24T14:56:10Z
Frodlekis
762
4157480
wikitext
text/x-wiki
{{kategorinavigering|Katalanska}}
{{faktaruta språk}}
pivkrgxbmwl054042voenbetgbfos64
Kategori:Kazakiska
14
108325
4157481
2982799
2026-10-24T14:56:47Z
Frodlekis
762
4157481
wikitext
text/x-wiki
{{kategorinavigering|Kazakiska}}
{{faktaruta språk}}
3ciuerj1aq43dbp9oz46pahsiarf1ok
Kategori:Khmer
14
108326
4157483
2976536
2026-10-24T14:58:26Z
Frodlekis
762
4157483
wikitext
text/x-wiki
{{kategorinavigering|Khmer}}
{{faktaruta språk}}
ktdjhkirlb7zsw9urh6mkz98ewxvvwl
Kategori:Kinesiska
14
108327
4157487
2976858
2026-10-24T15:02:15Z
Frodlekis
762
4157487
wikitext
text/x-wiki
{{kategorinavigering|Kinesiska}}
{{faktaruta språk}}
k51rgwf8k36ymem6urmk9d9gzi5e5ul
Kategori:Kirgiziska
14
108328
4157488
2982846
2026-10-24T15:02:32Z
Frodlekis
762
4157488
wikitext
text/x-wiki
{{kategorinavigering|Kirgiziska}}
{{faktaruta språk}}
r81pp1rrq8u7rbblynk0tyknm6c21gd
Kategori:Klingonska
14
108329
4157449
2982862
2026-10-24T12:57:49Z
Frodlekis
762
4157449
wikitext
text/x-wiki
{{kategorinavigering|Klingonska}}
{{faktaruta språk}}
njisyla7molabhlfr4e27j76l3ma7j8
Kategori:Koreanska
14
108331
4157512
2976516
2026-10-24T16:01:36Z
Frodlekis
762
4157512
wikitext
text/x-wiki
{{kategorinavigering|Koreanska}}
{{faktaruta språk}}
7thrzjaabxi2nq981enzqwj46bc5qf1
Kategori:Korniska
14
108332
4157516
2982896
2026-10-24T16:05:57Z
Frodlekis
762
4157516
wikitext
text/x-wiki
{{kategorinavigering|Korniska}}
{{faktaruta språk}}
fbsb1192av7xxklzpjz2yr7d5tkqya2
Kategori:Korsikanska
14
108333
4157517
2982909
2026-10-24T16:06:23Z
Frodlekis
762
4157517
wikitext
text/x-wiki
{{kategorinavigering|Korsikanska}}
{{faktaruta språk}}
b48t4n2shr8od13jxhzy5gfyqasnnvi
Kategori:Kroatiska
14
108334
4157520
2982933
2026-10-24T16:08:51Z
Frodlekis
762
4157520
wikitext
text/x-wiki
{{kategorinavigering|Kroatiska}}
{{faktaruta språk}}
r1fkejv6pmf4smswj9qo6oozdvxtvx8
Kategori:Kurdiska
14
108335
4157508
2976838
2026-10-24T16:00:01Z
Frodlekis
762
4157508
wikitext
text/x-wiki
{{kategorinavigering|Kurdiska}}
{{faktaruta språk}}
ts37ixx7pwsdhx43mcn3iqctmk31oeh
Kategori:Kymriska
14
108336
4157511
2982989
2026-10-24T16:01:11Z
Frodlekis
762
4157511
wikitext
text/x-wiki
{{kategorinavigering|Kymriska}}
{{faktaruta språk}}
1ebrnxeb0fw4wcchvfooglj2hkqztfb
Kategori:Lak
14
108337
4157523
2983032
2026-10-24T16:10:55Z
Frodlekis
762
4157523
wikitext
text/x-wiki
{{kategorinavigering|Lak}}
{{faktaruta språk}}
jzzyzpnvl1in53twuhqmfhi0nls5j4y
Kategori:Latin
14
108338
4157505
2983046
2026-10-24T15:58:39Z
Frodlekis
762
4157505
wikitext
text/x-wiki
{{kategorinavigering|Latin}}
{{faktaruta språk}}
qabiy1t1n52yxyg2u6r42gxz3vbfb4f
Kategori:Lettiska
14
108339
4157504
2983097
2026-10-24T15:58:05Z
Frodlekis
762
4157504
wikitext
text/x-wiki
{{kategorinavigering|Lettiska}}
{{faktaruta språk}}
nady7flfxq75x1u7yto8z5525g6r0sv
Kategori:Lezginska
14
108340
4157529
2983137
2026-10-24T17:25:32Z
Frodlekis
762
4157529
wikitext
text/x-wiki
{{kategorinavigering|Lezginska}}
{{faktaruta språk}}
9uogcn61avb865310qgt1ukf3g516wl
Kategori:Liguriska
14
108341
4157575
2983139
2026-10-24T23:49:08Z
Frodlekis
762
4157575
wikitext
text/x-wiki
{{kategorinavigering|Liguriska}}
{{faktaruta språk}}
ku3fsiuxyvo8kryaqxtukdifxzelmhu
Kategori:Limburgiska
14
108342
4157576
2983145
2026-10-24T23:49:44Z
Frodlekis
762
4157576
wikitext
text/x-wiki
{{kategorinavigering|Limburgiska}}
{{faktaruta språk}}
1epjwhqpwn97ke01jyurp1k20e5ab40
Kategori:Litauiska
14
108343
4157578
2983174
2026-10-24T23:50:54Z
Frodlekis
762
4157578
wikitext
text/x-wiki
{{kategorinavigering|Litauiska}}
{{faktaruta språk}}
i3x0bfg2lj44g7voq40gbsvym2x70ti
Kategori:Luxemburgiska
14
108344
4157586
2983225
2026-10-25T00:03:27Z
Frodlekis
762
4157586
wikitext
text/x-wiki
{{kategorinavigering|Luxemburgiska}}
{{faktaruta språk}}
hsxcqx10sgs8srpxqs3d0853s65xfwn
Kategori:Lågtyska
14
108345
4157592
2983263
2026-10-25T00:13:07Z
Frodlekis
762
4157592
wikitext
text/x-wiki
{{kategorinavigering|Lågtyska}}
{{faktaruta språk}}
75j4o71q9n126j6f84n6dpz7fngolex
Kategori:Makedonska
14
108346
4157596
2983279
2026-10-25T00:21:59Z
Frodlekis
762
4157596
wikitext
text/x-wiki
{{kategorinavigering|Makedonska}}
{{faktaruta språk}}
5tys4f28mg9qjmgfok2kvzf7mhdzp2j
Kategori:Malajiska
14
108347
4157598
2983301
2026-10-25T00:26:32Z
Frodlekis
762
4157598
wikitext
text/x-wiki
{{kategorinavigering|Malajiska}}
{{faktaruta språk}}
k8fb5lqgljybwx2xt56avycdnmwxu6a
Kategori:Malayalam
14
108348
4157599
2983317
2026-10-25T00:29:11Z
Frodlekis
762
4157599
wikitext
text/x-wiki
{{kategorinavigering|Malayalam}}
{{faktaruta språk}}
gv3ddi535nzuwoiidl0no2b2e9hpjgo
Kategori:Maltesiska
14
108349
4157600
2983322
2026-10-25T00:30:23Z
Frodlekis
762
4157600
wikitext
text/x-wiki
{{kategorinavigering|Maltesiska}}
{{faktaruta språk}}
0op9665osxyar5k2ndu9t6c7eb478wc
Kategori:Manx
14
108350
4157602
2983336
2026-10-25T00:34:21Z
Frodlekis
762
4157602
wikitext
text/x-wiki
{{kategorinavigering|Manx}}
{{faktaruta språk}}
0kxk8s4zzx263uxiu9hm17ynnef4d12
Kategori:Maori
14
108351
4157603
2983344
2026-10-25T00:35:25Z
Frodlekis
762
4157603
wikitext
text/x-wiki
{{kategorinavigering|Maori}}
{{faktaruta språk}}
iqs8ld7gy9ukpr9naynzway1z66xquw
Kategori:Marathi
14
108352
4157606
2983354
2026-10-25T00:38:41Z
Frodlekis
762
4157606
wikitext
text/x-wiki
{{kategorinavigering|Marathi}}
{{faktaruta språk}}
3qlzrcg2xrd72667ylyl3g6lhq8mjt4
Kategori:Marshallesiska
14
108353
4157607
2983359
2026-10-25T00:38:48Z
Frodlekis
762
4157607
wikitext
text/x-wiki
{{kategorinavigering|Marshallesiska}}
{{faktaruta språk}}
s2voadc64dvshlh1yk48j4ovme9u08x
Kategori:Min nan
14
108354
4157615
2983379
2026-10-25T00:45:14Z
Frodlekis
762
4157615
wikitext
text/x-wiki
{{kategorinavigering|Min nan}}
{{faktaruta språk}}
fjmi3r1xiy5vkeyr09tejo02ebnrcqz
Kategori:Mongoliska
14
108355
4157621
2983393
2026-10-25T00:52:19Z
Frodlekis
762
4157621
wikitext
text/x-wiki
{{kategorinavigering|Mongoliska}}
{{faktaruta språk}}
kvdi4tqx8vz028gmlj52dlbprb02t6x
Kategori:Nahuatl
14
108356
4157624
2983414
2026-10-25T00:56:55Z
Frodlekis
762
4157624
wikitext
text/x-wiki
{{kategorinavigering|Nahuatl}}
{{faktaruta språk}}
5wqmydgh278ejr60xks7jr42ro0934g
Kategori:Norfuk
14
108357
4157500
3251090
2026-10-24T15:54:04Z
Frodlekis
762
4157500
wikitext
text/x-wiki
{{kategorinavigering|Norfuk}}
{{faktaruta språk}}
aohwkqiak9gp0jkx1zubda6d4fituyx
Kategori:Nederländska
14
108359
4157629
2983438
2026-10-25T01:03:07Z
Frodlekis
762
4157629
wikitext
text/x-wiki
{{kategorinavigering|Nederländska}}
{{faktaruta språk}}
ejl0dmfawyqno7ybwd255orknugawi7
Kategori:Nordsamiska
14
108360
4157496
2983499
2026-10-24T15:51:41Z
Frodlekis
762
4157496
wikitext
text/x-wiki
{{kategorinavigering|Nordsamiska}}
{{faktaruta språk}}
rmxtn63u0j958mythbuqslvevmcqvd3
Kategori:Filipino
14
112474
4157426
2981955
2026-10-24T12:14:51Z
Frodlekis
762
4157426
wikitext
text/x-wiki
{{kategorinavigering|Filipino}}
{{faktaruta språk}}
81lq2vueoodw66c9k3j3ej2wf4q2mu7
Kategori:Krimtatariska
14
112475
4157519
2982923
2026-10-24T16:08:29Z
Frodlekis
762
4157519
wikitext
text/x-wiki
{{kategorinavigering|Krimtatariska}}
{{faktaruta språk}}
sw5dv4zpp5spz35xrv5avoko9704vqe
Kategori:Älvdalska
14
112476
4157527
2985186
2026-10-24T16:14:20Z
Frodlekis
762
4157527
wikitext
text/x-wiki
{{kategorinavigering|Älvdalska}}
{{faktaruta språk}}
0243sh9epo581qmfvh2fhflbrh86fxo
Kategori:Liviska
14
112477
4157579
2983207
2026-10-24T23:52:04Z
Frodlekis
762
4157579
wikitext
text/x-wiki
{{kategorinavigering|Liviska}}
{{faktaruta språk}}
d7lkbprmsw9bzcus91147diw2nlhqw1
Kategori:Igbo
14
112478
4157458
2982439
2026-10-24T13:07:17Z
Frodlekis
762
4157458
wikitext
text/x-wiki
{{kategorinavigering|Igbo}}
{{faktaruta språk}}
tuwrfkefq6dpiqfgcclznvk3rq7jdlp
Kategori:Kasjubiska
14
112480
4157479
2982748
2026-10-24T14:55:19Z
Frodlekis
762
4157479
wikitext
text/x-wiki
{{kategorinavigering|Kasjubiska}}
{{faktaruta språk}}
3aif8b0qk8g60v4nuzo13fcd8rxop0z
Kategori:Lågsorbiska
14
112482
4157591
2983257
2026-10-25T00:12:18Z
Frodlekis
762
4157591
wikitext
text/x-wiki
{{kategorinavigering|Lågsorbiska}}
{{faktaruta språk}}
22ms4bsj2vtqt942i1gbmjpr3krk50d
Kategori:Lågskotska
14
112484
4157590
2983247
2026-10-25T00:11:58Z
Frodlekis
762
4157590
wikitext
text/x-wiki
{{kategorinavigering|Lågskotska}}
{{faktaruta språk}}
45vi6fy9xo1ismei3xs72zr7uaql9lc
Kategori:Kabyliska
14
112487
4157466
2982704
2026-10-24T14:38:00Z
Frodlekis
762
4157466
wikitext
text/x-wiki
{{kategorinavigering|Kabyliska}}
{{faktaruta språk}}
2c76af4d4gzgkycmoa797jjz01kq85h
Kategori:Kikongo
14
112491
4157485
2982818
2026-10-24T15:00:11Z
Frodlekis
762
4157485
wikitext
text/x-wiki
{{kategorinavigering|Kikongo}}
{{faktaruta språk}}
6ey77ycghycedc9xjh1235vb1w1yjka
Kategori:Lojban
14
112493
4157581
2983214
2026-10-24T23:54:36Z
Frodlekis
762
4157581
wikitext
text/x-wiki
{{kategorinavigering|Lojban}}
{{faktaruta språk}}
fm5h3vxvtq1buyhh2q6qlgphz062gan
Kategori:Hakka
14
112496
4157425
2976840
2026-10-24T12:13:46Z
Frodlekis
762
4157425
wikitext
text/x-wiki
{{kategorinavigering|Hakka}}
{{faktaruta språk}}
6x0u7bztg5l67cnspxug75yctpwqf3q
Kategori:Lao
14
112497
4157514
2983038
2026-10-24T16:02:48Z
Frodlekis
762
4157514
wikitext
text/x-wiki
{{kategorinavigering|Lao}}
{{faktaruta språk}}
aculc2i9fpag25kv1njp6g29hj13294
Kategori:Ladino
14
112499
4157509
2983021
2026-10-24T16:00:26Z
Frodlekis
762
4157509
wikitext
text/x-wiki
{{kategorinavigering|Ladino}}
{{faktaruta språk}}
58fx4gv0z0svmtqvbqekc22me2x7mvw
Kategori:Lingala
14
114859
4157577
2983167
2026-10-24T23:50:21Z
Frodlekis
762
4157577
wikitext
text/x-wiki
{{kategorinavigering|Lingala}}
{{faktaruta språk}}
jnknvjpo58gcdeb4yu03xsctocjpoic
Kategori:Mapudungun
14
118225
4157604
2983352
2026-10-25T00:36:47Z
Frodlekis
762
4157604
wikitext
text/x-wiki
{{kategorinavigering|Mapudungun}}
{{faktaruta språk}}
b4i7s8lqdq0ja1povac22msv9djp7wl
Kategori:Miskito
14
119909
4157617
2989871
2026-10-25T00:45:23Z
Frodlekis
762
4157617
wikitext
text/x-wiki
{{kategorinavigering|Miskito}}
{{faktaruta språk}}
nj6pb07qhc03jyvsv2izeh4rho5pft5
bindeord
0
127406
4157561
3820421
2026-10-24T20:59:37Z
Vavřinec N.
43546
+cs: [[spojka]] (assisterat)
4157561
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-0}}
'''[[binda#Verb|binde]][[ord]]''' {{n}}
#{{tagg|lingvistik|kat=ordklasser}} ord som binder samman; [[konjunktion]]
#:{{jämför|[[fogeord]]}}
====Översättningar====
{{ö-topp|ord som binder samman}}
*nederländska: {{ö+|nl|voegwoord}}
*spanska: {{ö|es|conector|m}}, {{ö+|es|conjunción|f}}
*tjeckiska: {{ö+|cs|spojka|f}}
*tyska: {{ö+|de|Bindewort|n}}, {{ö+|de|Konjunktion|f}}
{{ö-botten}}
==Danska==
===Substantiv===
{{subst|da}}
'''bindeord'''
#{{tagg|lingvistik|kat=ordklasser|språk=da}} [[konjunktion]]
44rfogc1gvcps9tj8lob7kxusxdthrn
Kategori:Meänkieli
14
128511
4157614
2983376
2026-10-25T00:44:25Z
Frodlekis
762
4157614
wikitext
text/x-wiki
{{kategorinavigering|Meänkieli}}
{{faktaruta språk}}
7ixy354twitl71jgb981rybaslmz7pd
Kategori:Haitisk kreol
14
128971
4157424
2982330
2026-10-24T12:11:04Z
Frodlekis
762
4157424
wikitext
text/x-wiki
{{kategorinavigering|Haitisk kreol}}
{{faktaruta språk}}
rb3uz62zx21897zn28dztnguuuv3pi4
Kategori:Zulu
14
129132
4157528
2985181
2026-10-24T16:14:57Z
Frodlekis
762
4157528
wikitext
text/x-wiki
{{kategorinavigering|Zulu}}
{{faktaruta språk}}
df21r6uqhwik0hl9khc4h4mzeckidkf
Kategori:Klassisk grekiska
14
129165
4157492
2976011
2026-10-24T15:48:19Z
Frodlekis
762
4157492
wikitext
text/x-wiki
{{kategorinavigering|Klassisk grekiska}}
{{faktaruta språk}}
cbhksoepih07sdyspicv72kxbc24ayi
Kategori:Normandiska
14
129173
4157501
2983511
2026-10-24T15:55:52Z
Frodlekis
762
4157501
wikitext
text/x-wiki
{{kategorinavigering|Normandiska}}
{{faktaruta språk}}
9258ns3vvdey9ngezc749lssyq98la8
Kategori:Medelnederländska
14
132131
4157613
2983371
2026-10-25T00:40:33Z
Frodlekis
762
4157613
wikitext
text/x-wiki
{{kategorinavigering|Medelnederländska}}
{{faktaruta språk}}
s9voh2xb8mlp6dc1cgngdrnv872qacc
Kategori:Jakutiska
14
132500
4157453
2982618
2026-10-24T13:00:52Z
Frodlekis
762
4157453
wikitext
text/x-wiki
{{kategorinavigering|Jakutiska}}
{{faktaruta språk}}
6prm6nmesc1f5eou1mlgmcn3d0fwb7x
avrinningsområde
0
139827
4157549
3785172
2026-10-24T20:50:27Z
Vavřinec N.
43546
+cs: [[povodí]] (assisterat)
4157549
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-n}}
'''[[avrinning]]s[[område]]'''
#{{tagg|hydrologi|naturgeografi}} det [[geografisk]]a [[område]], vars [[regnvatten]] och [[källsprång]] via olika [[vattendrag]] [[mynna]]r i samma [[älv]]
#:{{citat|publ=[[w:Blekinge Läns Tidning|Blekinge Läns Tidning]]|titel=[http://www.bltsydostran.se/opinion/eu-maste-radda-ostersjon(2414264).gm EU måste rädda Östersjön]|år=2009|datum=20 apr|84 miljoner människor i fjorton länder bor i '''avrinningsområdet''' till Östersjön, ett '''avrinningsområde''' som är fyra gånger större än själva havet.}}
====Översättningar====
{{ö-topp|}}
*bokmål: {{ö|no|nedbørfelt}}
*finska: {{ö+|fi|vesistöalue}}, {{ö+|fi|valuma-alue}}
*franska: {{ö+|fr|bassin versant|m}}
*tjeckiska: {{ö+|cs|povodí|n}}
*tyska: {{ö+|de|Abflussgebiet|n}}
{{ö-botten}}
05gs8t5mknyrsqyjfnulveglutu5a7h
borgenär
0
140283
4157564
4147888
2026-10-24T21:02:56Z
Vavřinec N.
43546
+cs: [[věřitel]] (assisterat)
4157564
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''borgenär'''
#den som har en [[fordran]] på någon; person som har ett krav på att få betalt
#:{{synonymer|[[fordringsägare]], [[kreditgivare]], [[kreditor]], [[långivare]]}}
#:{{antonymer|[[gäldenär]]}}
#:{{etymologi|{{belagt|sv|1678}}<ref>2026: {{källa-so}}</ref>}}
#:{{seäven|[[borgensman]]}}
====Översättningar====
{{ö-topp|fordringsägare}}
*danska: {{ö|da|kreditor}}, {{ö|da|fordringshaver}}
*engelska: {{ö+|en|creditor}}
*finska: {{ö+|fi|velkoja}}
*franska: {{ö+|fr|créancier|m}}, {{ö+|fr|créancière|f}}
*polska: {{ö+|pl|wierzyciel|m}}
*tjeckiska: {{ö+|cs|věřitel|m}}
*tyska: {{ö+|de|Gläubiger|m}}, {{ö|de|Gläubigerin|f}}
{{ö-botten}}
==Källor==
<references/>
0e1ronzyf1gecp22nwi9rach4ujo0bq
4157565
4157564
2026-10-24T21:03:03Z
Vavřinec N.
43546
+cs: [[věřitelka]] (assisterat)
4157565
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''borgenär'''
#den som har en [[fordran]] på någon; person som har ett krav på att få betalt
#:{{synonymer|[[fordringsägare]], [[kreditgivare]], [[kreditor]], [[långivare]]}}
#:{{antonymer|[[gäldenär]]}}
#:{{etymologi|{{belagt|sv|1678}}<ref>2026: {{källa-so}}</ref>}}
#:{{seäven|[[borgensman]]}}
====Översättningar====
{{ö-topp|fordringsägare}}
*danska: {{ö|da|kreditor}}, {{ö|da|fordringshaver}}
*engelska: {{ö+|en|creditor}}
*finska: {{ö+|fi|velkoja}}
*franska: {{ö+|fr|créancier|m}}, {{ö+|fr|créancière|f}}
*polska: {{ö+|pl|wierzyciel|m}}
*tjeckiska: {{ö+|cs|věřitel|m}}, {{ö|cs|věřitelka|f}}
*tyska: {{ö+|de|Gläubiger|m}}, {{ö|de|Gläubigerin|f}}
{{ö-botten}}
==Källor==
<references/>
0cwinshz2k2is4s4a6034wuvjfzmay1
Kategori:Lulesamiska
14
147748
4157585
2983221
2026-10-25T00:03:06Z
Frodlekis
762
4157585
wikitext
text/x-wiki
{{kategorinavigering|Lulesamiska}}
{{faktaruta språk}}
ijxukghw1bkh8jxrstymxftrfb1kx4l
Kategori:Mirandesiska
14
148622
4157616
2983383
2026-10-25T00:45:19Z
Frodlekis
762
4157616
wikitext
text/x-wiki
{{kategorinavigering|Mirandesiska}}
{{faktaruta språk}}
85reqwtis3wnb89l8lq0ttmnfjyvnxl
Kategori:Lakota
14
148829
4157515
2983037
2026-10-24T16:03:31Z
Frodlekis
762
4157515
wikitext
text/x-wiki
{{kategorinavigering|Lakota}}
{{faktaruta språk}}
1z7b6mdidc5zgpyyqw448nrcu6dlv4f
apostrof
0
151855
4157536
4055083
2026-10-24T20:43:34Z
Vavřinec N.
43546
+cs: [[apostrof]] (assisterat)
4157536
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-er}}
'''apostrof'''
#{{tagg|kat=typografi}} skrivtecknet [[']], [[utelämningstecken]]
#:{{synonymer|[[apostroftecken]]}}
#högtidligt [[tilltal]], högtidlig [[hänvändelse]]
:{{avgränsare}}
:{{besläktade ord|[[apostrofera]]}}
====Översättningar====
{{ö-topp|skrivtecknet}}
*engelska: {{ö+|en|apostrophe}}
*finska: {{ö+|fi|heittomerkki}}
*franska: {{ö+|fr|apostrophe|m}}
*grönländska: {{ö|kl|inangiisoq}}
*polska: {{ö+|pl|apostrof|m}}
*tjeckiska: {{ö+|cs|apostrof|m}}
*turkiska: {{ö+|tr|kesme işareti}}
*tyska: {{ö+|de|Apostroph|n}}, {{ö+|de|Auslassungszeichen|n}}
{{ö-botten}}
==Polska==
===Substantiv===
{{pl-subst-m|apostrof|apostrofy|apostrofu|apostrofów|apostrofowi|apostrofom|apostrof|apostrofy|apostrofem|apostrofami|apostrofie|apostrofach|apostrofie|apostrofy}}
'''apostrof''' {{m}}
#[[#Svenska|apostrof]], skrivtecknet [[']]
#:{{etymologi|Från franska [[apostrophe]].<ref>[http://usjp.pwn.pl/haslo.php?id=1810235 Uniwersalny słownik języka polskiego]</ref>}}
==Källor==
<references/>
9ja4vtdofdv8iji4dxld5kclu5f5afg
Kategori:Kapampangan
14
153128
4157473
2982726
2026-10-24T14:50:51Z
Frodlekis
762
4157473
wikitext
text/x-wiki
{{kategorinavigering|Kapampangan}}
{{faktaruta språk}}
60flwhpy4kmcfapboaexfpltu2yswpu
Kategori:Interlingue
14
153145
4157463
2982483
2026-10-24T14:35:24Z
Frodlekis
762
4157463
wikitext
text/x-wiki
{{kategorinavigering|Interlingue}}
{{faktaruta språk}}
9bqm5m7g0t2kqtip59j72ethiyligrj
Kategori:Navajo
14
153148
4157626
2983429
2026-10-25T01:00:16Z
Frodlekis
762
4157626
wikitext
text/x-wiki
{{kategorinavigering|Navajo}}
{{faktaruta språk}}
jndzme9hai3gfmkxxfxcc9jihu5vna0
Kategori:Högsorbiska
14
153149
4157445
2982406
2026-10-24T12:54:24Z
Frodlekis
762
4157445
wikitext
text/x-wiki
{{kategorinavigering|Högsorbiska}}
{{faktaruta språk}}
2qyjkty5iwpf2ft3zj9uhh9fjoa2434
Kategori:Hessiska
14
153282
4157436
2982374
2026-10-24T12:40:39Z
Frodlekis
762
4157436
wikitext
text/x-wiki
{{kategorinavigering|Hessiska|Dialektalt}}
tv4oljebq9s3rqz9fnss7lzponf8oqf
Kategori:Lågsaxiska
14
153283
4157587
805731
2026-10-25T00:09:24Z
Frodlekis
762
4157587
wikitext
text/x-wiki
{{kategorinavigering|Lågsaxiska}}
{{faktaruta språk}}
kpny8azqyk3h5p146zmlmvdkewhw2re
4157588
4157587
2026-10-25T00:11:03Z
Frodlekis
762
4157588
wikitext
text/x-wiki
{{kategorinavigering|Tyska|Lågsaxiska|Regionalt}}
19k8hljzlfs0bwlroq2m6mlni8msuz2
4157589
4157588
2026-10-25T00:11:34Z
Frodlekis
762
4157589
wikitext
text/x-wiki
{{kategorinavigering||Lågsaxiska|Regionalt}}
jkol397ood3qwhhpx3nqbw081fllulk
bägare
0
156423
4157552
4115693
2026-10-24T20:53:19Z
Vavřinec N.
43546
+cs: [[pohár]] (assisterat)
4157552
wikitext
text/x-wiki
{{se även|bagare}}
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-0|rot=bägar|are=|förled=bägar}}
'''bägare'''
#[[typ]] av [[dryckeskärl]], vanligen av [[cylindrisk]] form utan fot och handtag
#:''Töm din '''bägare'''.''
#:{{sammansättningar|[[dubbelbägare]], [[glasbägare]], [[guldbägare]], [[silverbägare]]}}
#:{{fraser|[[droppen som fick bägaren att rinna över]]}}
#en [[behållare]], oftast av kartong, i vilken [[glass]] kan avnjutas
#:''Glassen kan du få i '''bägare''' eller våffla.''
#:{{synonymer|glassbägare}}
#:{{jämför|[[våffelstrut]]}}
:{{avgränsare}}
:{{etymologi|Av {{härledning|sv|gmq-fsv|bikare}}, av {{härledning|sv|non|bikarr}}, av sen{{härledning|sv|la|bīcārium}}.}}
====Översättningar====
{{ö-topp|vätskebehållare}}
*bokmål: {{ö|no|beger|n}}
*danska: {{ö|da|bæger|n}}
*engelska: {{ö+|en|beaker}}, {{ö+|en|mug}}, {{ö+|en|cup}}
*finska: {{ö|fi|pikari}}
*franska: {{ö+|fr|coupe|f}}
*isländska: {{ö+|is|bikar|m}}, {{ö|is|fantur|m}}
*nederländska: {{ö+|nl|beker}}
*nynorska: {{ö|nn|beger|n}}
*polska: {{ö+|pl|kubek|m}}, {{ö+|pl|puchar|m}}, {{ö+|pl|kielich|m}}
*tjeckiska: {{ö+|cs|pohár|m}}
*tyska: {{ö+|de|Becher|m}}
{{ö-botten}}
{{ö-topp|behållare, oftast av kartong, i vilken glass kan avnjutas}}
*italienska: {{ö|it|coppetta}}
*ryska: {{ö+|ru|стака́нчик|m}}
*tyska: {{ö+|de|Becher|m}}
{{ö-botten}}
d9kl71nl1ib82pu6ncdskactg4zvyd8
4157553
4157552
2026-10-24T20:53:26Z
Vavřinec N.
43546
+cs: [[kalich]] (assisterat)
4157553
wikitext
text/x-wiki
{{se även|bagare}}
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-n-0|rot=bägar|are=|förled=bägar}}
'''bägare'''
#[[typ]] av [[dryckeskärl]], vanligen av [[cylindrisk]] form utan fot och handtag
#:''Töm din '''bägare'''.''
#:{{sammansättningar|[[dubbelbägare]], [[glasbägare]], [[guldbägare]], [[silverbägare]]}}
#:{{fraser|[[droppen som fick bägaren att rinna över]]}}
#en [[behållare]], oftast av kartong, i vilken [[glass]] kan avnjutas
#:''Glassen kan du få i '''bägare''' eller våffla.''
#:{{synonymer|glassbägare}}
#:{{jämför|[[våffelstrut]]}}
:{{avgränsare}}
:{{etymologi|Av {{härledning|sv|gmq-fsv|bikare}}, av {{härledning|sv|non|bikarr}}, av sen{{härledning|sv|la|bīcārium}}.}}
====Översättningar====
{{ö-topp|vätskebehållare}}
*bokmål: {{ö|no|beger|n}}
*danska: {{ö|da|bæger|n}}
*engelska: {{ö+|en|beaker}}, {{ö+|en|mug}}, {{ö+|en|cup}}
*finska: {{ö|fi|pikari}}
*franska: {{ö+|fr|coupe|f}}
*isländska: {{ö+|is|bikar|m}}, {{ö|is|fantur|m}}
*nederländska: {{ö+|nl|beker}}
*nynorska: {{ö|nn|beger|n}}
*polska: {{ö+|pl|kubek|m}}, {{ö+|pl|puchar|m}}, {{ö+|pl|kielich|m}}
*tjeckiska: {{ö+|cs|pohár|m}}, {{ö+|cs|kalich|m}}
*tyska: {{ö+|de|Becher|m}}
{{ö-botten}}
{{ö-topp|behållare, oftast av kartong, i vilken glass kan avnjutas}}
*italienska: {{ö|it|coppetta}}
*ryska: {{ö+|ru|стака́нчик|m}}
*tyska: {{ö+|de|Becher|m}}
{{ö-botten}}
layno1qws5xxqvdm4mn7maz19pxe46k
Kategori:Fornfranska
14
159748
4157421
2982031
2026-10-24T12:07:54Z
Frodlekis
762
4157421
wikitext
text/x-wiki
{{kategorinavigering|Fornfranska}}
{{faktaruta språk}}
gn7rlntxy0fs6fvwl75nip9lmrovutl
Kategori:Nepali
14
168420
4157630
2983494
2026-10-25T01:04:30Z
Frodlekis
762
4157630
wikitext
text/x-wiki
{{kategorinavigering|Nepali}}
{{faktaruta språk}}
3s18b095ga0uwytthjadxrg7ngaewxx
Kategori:Finsk romani
14
171252
4157423
2981960
2026-10-24T12:10:23Z
Frodlekis
762
4157423
wikitext
text/x-wiki
{{kategorinavigering|Finsk romani}}
{{faktaruta språk}}
1sl160he4gp455rcfg2g9252wcdt36h
brosk
0
174450
4157570
3887037
2026-10-24T21:05:02Z
Vavřinec N.
43546
+cs: [[chrupavka]] (assisterat)
4157570
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-oräkn|betydelser=1.}}
{{sv-subst-t-0|betydelser=2.}}
'''brosk'''
*{{uttal|sv|ipa=brɔsk}}
#{{tagg|anatomi}} typ av [[vävnad]], mjukare än [[ben]], som tillsammans med andra sorters vävnad bygger upp och ger stöd åt en organism
#{{tagg|anatomi}} sammanhängande bit brosk (1.)
====Översättningar====
{{ö-topp|typ av vävnad}}
*bokmål: {{ö+|no|brusk|m}}
*danska: {{ö|da|brusk|u}}
*engelska: {{ö+|en|cartilage}}
*finska: {{ö+|fi|rusto}}
*franska: {{ö+|fr|cartilage|m}}
*isländska: {{ö+|is|brjósk|n}}
*nynorska: {{ö|nn|brusk|m}}
*portugisiska: {{ö+|pt|cartilagem|f}}
*spanska: {{ö+|es|cartílago|m}}, {{ö+|es|ternilla|f}}
*tjeckiska: {{ö+|cs|chrupavka|f}}
*turkiska: {{ö+|tr|kıkırdak}}
*tyska: {{ö+|de|Knorpel|m}}
{{ö-botten}}
575d591qjl908io84ehxf3nhalczmwm
lustrum
0
186565
4157461
3725627
2026-10-24T14:32:46Z
Thuresson
165
exempel
4157461
wikitext
text/x-wiki
{{wikipedia}}
{{se även|Lustrum}}
==Svenska==
===Substantiv===
{{subst|sv}}
'''lustrum''' ''oböjligt''
#{{tagg|historia}} [[reningsoffer]] i antikens Rom, ofta om den reningsceremoni som utfördes av [[censor]]erna vid deras ämbetstids slut, vilket i regel inträffade vart femte år
#{{tagg|kat=tidsuttryck}} femårsperiod
#:{{citat|förf=[[w:Carl Forsstrand|Carl Forsstrand]]|titel=Linné i Stockholm|år=1915|övers=|Äfven när Linnæus ej hade tid att lämna sitt hem i Uppsala eller på Hammarby, hvilken gård han inköpte år 1758 och där han med förkärlek uppehöll sig de senare '''lustren''' af sitt lif och så ofta föreläsningarna och de andra göromålen i lärdomsstaden medgåfvo, ägnade han mycket arbete åt höga vederbörandes intressen.}}
#:{{citat|titel=Om vänskapens lycka i levande brev|år=1986|datum=29 oktober|förf=[[:w:Knut Ahnlund|Knut Ahnlund]]|publ=Svenska Dagbladet|Under en tid stod Hedenius honom mycket nära, senare fjärmades de från varandra för att slutligen under Tingstens sista år åter finna varandra. I det '''lustrum''' som denna skildring omfattar är vänskapen på avklingande, avlöst av kyla och distans.}}
#:{{synonymer|[[kvinkvennium]]}}
:{{avgränsare}}
:{{etymologi|Först belagt i svenska år 1775. Av latinets ''[[#Latin|lustrum]]'', bildat av ''[[lavare#Latin|lavare]]'' (”tvätta”).<ref>Nationalencyklopedins Ordbok på Internet (kräver inloggning): ”lustrum”. Läst 24 januari 2012.</ref>}}
:{{grammatik|I de båda moderna lexikonen SAOL och Nationalencyklopedins Ordbok står det att ordet är oböjligt. Under SAOB:s uppslag ”lustrum”, skrivet 1941, står böjningsmönstret -ret, -rer (med den alternativa latinska pluralisändelsen -ra) angivet.}}
:{{besläktade ord|[[lustralisk]], [[lustration]]}}
====Översättningar====
{{ö-topp|reningsoffer i antikens Rom}}
*tyska: {{ö+|de|Lustrum|n}}
{{ö-botten}}
{{ö-topp|femårsperiod}}
*bokmål: {{ö|no|lustrum|n}}
*danska: {{ö|da|lustrum|n}}
*engelska: {{ö+|en|lustrum}}
*spanska: {{ö+|es|lustro|m}}
*tyska: {{ö+|de|Lustrum|n}}
{{ö-botten}}
==Källor==
<references/>
06im39hf8a6di2dylms0o90cu1kflub
Kategori:Norn
14
293454
4157499
2983513
2026-10-24T15:53:37Z
Frodlekis
762
4157499
wikitext
text/x-wiki
{{kategorinavigering|Norn}}
{{faktaruta språk}}
f71xaedeg7vde1gwwhwonvmniwipg2x
Kategori:Nordndebele
14
393100
4157497
2989927
2026-10-24T15:52:24Z
Frodlekis
762
4157497
wikitext
text/x-wiki
{{kategorinavigering|Nordndebele}}
{{faktaruta språk}}
k9zcgn2kr4m56e4xhqje69voweelksh
Kategori:Manchu
14
397666
4157601
2983334
2026-10-25T00:31:43Z
Frodlekis
762
4157601
wikitext
text/x-wiki
{{kategorinavigering|Manchu}}
{{faktaruta språk}}
qo8sp6xeje7f58s982m3jcqbw1ijd4v
ankel
0
413139
4157533
4092547
2026-10-24T20:42:23Z
Vavřinec N.
43546
+cs: [[kotník]] (assisterat)
4157533
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-n-ar|fog=|pluralrot=ankl}}
'''ankel'''
{{media|Ankle.jpg|'''ankel'''}}
#{{tagg|anatomi}} [[vrist]], [[fotknöl]]
#:{{etymologi|Av {{härledning|sv|gmq-fsv|ankol}}.}}
====Översättningar====
{{ö-topp|vrist, fotknöl}}
*engelska: {{ö+|en|ankle}}
*franska: {{ö+|fr|cheville|f}}
*ryska: {{ö+|ru|лоды́жка|f}}
*tjeckiska: {{ö+|cs|kotník|m}}
*tyska: {{ö+|de|Knöchel|m}}
*älvdalska: {{ö|ovd|okkel|m}}
{{ö-botten}}
==Frisiska==
===Substantiv===
{{fy-subst|genus=neutrum|2=ankels}}
'''ankel''' {{n}}
*{{uttal|fy|ipa=ˈaŋkl}}
#{{tagg|kat=anatomi|språk=fy}} [[fotled]]
5ifva2qbyksekfju51polpe007kjmp2
Kategori:Karelska
14
430431
4157477
2982742
2026-10-24T14:53:32Z
Frodlekis
762
4157477
wikitext
text/x-wiki
{{kategorinavigering|Karelska}}
{{faktaruta språk}}
p200yuoai29eyr4c5hi3tgxj4d0wl79
Kategori:Hmong daw
14
430438
4157442
2982398
2026-10-24T12:48:40Z
Frodlekis
762
4157442
wikitext
text/x-wiki
{{kategorinavigering|Hmong daw}}
{{faktaruta språk}}
mi6ctllqvbisxrsqogsjbz78j4pv5sz
4157443
4157442
2026-10-24T12:50:17Z
Frodlekis
762
4157443
wikitext
text/x-wiki
{{kategorinavigering|Hmong daw}}
{{faktaruta språk|Q22911602}}
tk7phz40t7i8qa7l0qyyojf758by280
Kategori:Kirundi
14
430441
4157490
2982852
2026-10-24T15:45:13Z
Frodlekis
762
4157490
wikitext
text/x-wiki
{{kategorinavigering|Kirundi}}
{{faktaruta språk}}
ml779sw149fxhrujmnb75if564zi8rf
Kategori:Kildinsamiska
14
430446
4157450
2982825
2026-10-24T12:59:06Z
Frodlekis
762
4157450
wikitext
text/x-wiki
{{kategorinavigering|Kildinsamiska}}
{{faktaruta språk}}
524xf4pstvug5h5tpm3tczjjtkg13km
Kategori:Ladinska
14
430450
4157510
2983030
2026-10-24T16:00:56Z
Frodlekis
762
4157510
wikitext
text/x-wiki
{{kategorinavigering|Ladinska}}
{{faktaruta språk}}
1kev5vxlqdd4m5kr6heuxlgapseo59x
Kategori:Hiligaynon
14
430451
4157438
2982375
2026-10-24T12:42:29Z
Frodlekis
762
4157438
wikitext
text/x-wiki
{{kategorinavigering|Hiligaynon}}
{{faktaruta språk}}
nu8lx19o9nclvosca7x6ys6wywik4qi
Kategori:Luganda
14
430455
4157583
2983220
2026-10-25T00:00:09Z
Frodlekis
762
4157583
wikitext
text/x-wiki
{{kategorinavigering|Luganda}}
{{faktaruta språk}}
onf4jf6voi0lbqn4okfiphgbx9kbl6z
Kategori:Kumykiska
14
430465
4157521
4015880
2026-10-24T16:09:22Z
Frodlekis
762
4157521
wikitext
text/x-wiki
{{kategorinavigering|Kumykiska}}
{{faktaruta språk}}
lja7x69k0gshzbylfaj9l92qd2bqdlu
Kategori:Ndonga
14
430474
4157627
2983432
2026-10-25T01:00:50Z
Frodlekis
762
4157627
wikitext
text/x-wiki
{{kategorinavigering|Ndonga}}
{{faktaruta språk}}
3edk9tyh913jphxvf483kbc4c4qb3sc
Kategori:Malagassiska
14
430477
4157597
2983297
2026-10-25T00:25:28Z
Frodlekis
762
4157597
wikitext
text/x-wiki
{{kategorinavigering|Malagassiska}}
{{faktaruta språk}}
fxc8lkbuc26bpfrr16ls11k1yy7w4jd
Kategori:Moldaviska
14
430482
4157620
2983391
2026-10-25T00:51:23Z
Frodlekis
762
4157620
wikitext
text/x-wiki
{{kategorinavigering|Moldaviska}}
{{faktaruta språk}}
e56nl65xh9xxnxrnf8184hofrl2yxfw
Kategori:Moksja
14
430485
4157619
2983389
2026-10-25T00:50:25Z
Frodlekis
762
4157619
wikitext
text/x-wiki
{{kategorinavigering|Moksja}}
{{faktaruta språk}}
c23hju0oqunftima6cepvzxx1ovexlv
Kategori:Medellågtyska
14
430500
4157612
2983369
2026-10-25T00:40:28Z
Frodlekis
762
4157612
wikitext
text/x-wiki
{{kategorinavigering|Medellågtyska}}
{{faktaruta språk}}
nz3kncbvhtp6kzas6t4wwpej1acdsfh
Kategori:Iñupiaq
14
430514
4157454
2982616
2026-10-24T13:02:19Z
Frodlekis
762
4157454
wikitext
text/x-wiki
{{kategorinavigering|Iñupiaq}}
{{faktaruta språk}}
0caksred6g68yz2attjonlelc8jxeem
Kategori:Neapolitanska
14
430523
4157628
2983434
2026-10-25T01:02:33Z
Frodlekis
762
4157628
wikitext
text/x-wiki
{{kategorinavigering|Neapolitanska}}
{{faktaruta språk}}
sezq8gdt852pd057jb82i4chzdsuyaw
Kategori:Komi
14
432391
4157506
2982865
2026-10-24T15:59:08Z
Frodlekis
762
4157506
wikitext
text/x-wiki
{{kategorinavigering|Komi}}
{{faktaruta språk}}
8kpa094x29zw24sgknfjtzkk4by62zs
Kategori:Khakasiska
14
432432
4157482
2982814
2026-10-24T14:57:21Z
Frodlekis
762
4157482
wikitext
text/x-wiki
{{kategorinavigering|Khakasiska}}
{{faktaruta språk}}
e3uoh1adsk12cwyg4ph8vgzuyybpex1
Kategori:Medelhögtyska
14
432440
4157611
2983368
2026-10-25T00:40:23Z
Frodlekis
762
4157611
wikitext
text/x-wiki
{{kategorinavigering|Medelhögtyska}}
{{faktaruta språk}}
1bdh24znr9ckchjayrvkdh6rvevtebf
Kategori:Medelfranska
14
432441
4157610
2983366
2026-10-25T00:40:18Z
Frodlekis
762
4157610
wikitext
text/x-wiki
{{kategorinavigering|Medelfranska}}
{{faktaruta språk}}
bwl6v40zfxmqvrvz1ej3u4llmtktvc2
Kategori:Medelengelska
14
432442
4157609
2983364
2026-10-25T00:40:12Z
Frodlekis
762
4157609
wikitext
text/x-wiki
{{kategorinavigering|Medelengelska}}
{{faktaruta språk}}
izlrkb1xxqgz0rhpjf60ju5f9x3wf2k
Kategori:Maa
14
432447
4157593
1643371
2026-10-25T00:14:01Z
Frodlekis
762
4157593
wikitext
text/x-wiki
{{kategorinavigering|Maa}}
{{faktaruta språk}}
4oqz34m5hirw9qpssgkgw38s95w3n52
Kategori:Kalmuckiska
14
434055
4157467
2982711
2026-10-24T14:39:08Z
Frodlekis
762
4157467
wikitext
text/x-wiki
{{kategorinavigering|Kalmuckiska}}
{{faktaruta språk}}
dl5gl2oy0o6kqm9y1p03je3ya8yh83y
Kategori:Östmariska
14
437419
4157526
2985190
2026-10-24T16:13:43Z
Frodlekis
762
4157526
wikitext
text/x-wiki
{{kategorinavigering|Östmariska}}
{{faktaruta språk}}
6blfezpxxuee0wyivfeqbe12rt47wob
Kategori:Lombardiska
14
437420
4157582
2983218
2026-10-24T23:58:40Z
Frodlekis
762
4157582
wikitext
text/x-wiki
{{kategorinavigering|Lombardiska}}
{{faktaruta språk}}
5wseaje8sntzwh8jmx2hqmjwozhkkar
Kategori:Karatjajbalkariska
14
437421
4157476
2982740
2026-10-24T14:52:29Z
Frodlekis
762
4157476
wikitext
text/x-wiki
{{kategorinavigering|Karatjajbalkariska}}
{{faktaruta språk}}
18xboetmba7a9s9me97diktbb5u4yii
Kategori:Klassisk nahuatl
14
442699
4157493
2982859
2026-10-24T15:49:05Z
Frodlekis
762
4157493
wikitext
text/x-wiki
{{kategorinavigering|Klassisk nahuatl}}
{{faktaruta språk}}
[[Kategori:Nahuatl]]
oc5mm5x0zy2l6cq780w0myiql52pbhz
Kategori:Lakandonska
14
449975
4157524
2983036
2026-10-24T16:11:08Z
Frodlekis
762
4157524
wikitext
text/x-wiki
{{kategorinavigering|Lakandonska}}
{{faktaruta språk}}
lu0bktw1z2vcich2wxaijb9o53ie3n6
Kategori:Kanjobal
14
449980
4157471
2989413
2026-10-24T14:47:01Z
Frodlekis
762
4157471
wikitext
text/x-wiki
{{kategorinavigering|Kanjobal}}
{{faktaruta språk}}
pnumv4rergy8h94ea2nm9aojefnjllh
Kategori:Kikuyu
14
451238
4157486
2982823
2026-10-24T15:01:16Z
Frodlekis
762
4157486
wikitext
text/x-wiki
{{kategorinavigering|Kikuyu}}
{{faktaruta språk}}
tcd363kit4rcg7eomo6z4ochslsv6uw
Kategori:Makassariska
14
518440
4157595
2983278
2026-10-25T00:19:21Z
Frodlekis
762
4157595
wikitext
text/x-wiki
{{kategorinavigering|Makassariska}}
{{faktaruta språk}}
hg46agk50w2ufj8n9yc9gortdwo0npt
Kategori:Mossi
14
518445
4157622
3125486
2026-10-25T00:53:27Z
Frodlekis
762
4157622
wikitext
text/x-wiki
{{kategorinavigering|Mossi}}
{{faktaruta språk}}
5ro0hfsv28a4vqzlsygf1hyywwu5gxe
Kategori:Kamba
14
518449
4157468
2982715
2026-10-24T14:40:29Z
Frodlekis
762
4157468
wikitext
text/x-wiki
{{kategorinavigering|Kamba}}
{{faktaruta språk}}
lll1iekkq23uet5vyr832p7eteuzk1p
Kategori:Ilokano
14
518452
4157459
2982441
2026-10-24T13:09:02Z
Frodlekis
762
4157459
wikitext
text/x-wiki
{{kategorinavigering|Ilokano}}
{{faktaruta språk}}
lyp8dc7iln3h4x6z0wcjv8nvlzltqa2
Kategori:Koptiska
14
519363
4157507
2982867
2026-10-24T15:59:30Z
Frodlekis
762
4157507
wikitext
text/x-wiki
{{kategorinavigering|Koptiska}}
{{faktaruta språk}}
7saa34c0n9d5wj4ngops3azsgybgfmi
Kategori:Laziska
14
574273
4157489
2215941
2026-10-24T15:03:17Z
Frodlekis
762
4157489
wikitext
text/x-wiki
{{kategorinavigering|Laziska}}
{{faktaruta språk}}
36cktr3czqot8w63jz62b5govqya3qu
svineri
0
627970
4157677
3874166
2026-10-25T09:20:02Z
LA2
544
/* Svenska */
4157677
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-er|et=}}
'''[[svina|svin]][[-eri|eri]]'''
#det att [[bete]] sig som ett [[svin]]
#:{{besläktade ord|[[svin]], [[svinaktig]], [[svinig]]}}
#[[hänsynslöst]] [[smuts]]a ner
#:svineriet på de offentliga toaletterna
#:{{besläktade ord|[[svina]]}}
#{{tagg|jordbruk|ålderdomligt}} [[svingård]]
#:{{jämför|[[hönseri]]}}
====Översättningar====
{{ö-topp|det att bete sig som ett svin}}
*danska: {{ö|da|svineri}}
*franska: {{ö|fr|coup dégueulasse|m}}
*polska: {{ö+|pl|świństwo}}
*tyska: {{ö+|de|Schweinerei|f}}
{{ö-botten}}
{{ö-topp|svingård}}
*danska: {{ö|da|svineri}}
*tyska: {{ö+|de|Schweinerei}}
{{ö-botten}}
==Danska==
===Substantiv===
{{subst|da}}
'''svineri'''
#[[#Svenska|svineri]]
aothf2uug3p01mpj29wq9a87dh2rsrt
4157678
4157677
2026-10-25T09:21:31Z
LA2
544
+no: [[svineri]]; +nn: [[svineri]] (assisterat)
4157678
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-er|et=}}
'''[[svina|svin]][[-eri|eri]]'''
#det att [[bete]] sig som ett [[svin]]
#:{{besläktade ord|[[svin]], [[svinaktig]], [[svinig]]}}
#[[hänsynslöst]] [[smuts]]a ner
#:svineriet på de offentliga toaletterna
#:{{besläktade ord|[[svina]]}}
#{{tagg|jordbruk|ålderdomligt}} [[svingård]]
#:{{jämför|[[hönseri]]}}
====Översättningar====
{{ö-topp|det att bete sig som ett svin}}
*bokmål: {{ö|no|svineri|n}}
*danska: {{ö|da|svineri}}
*franska: {{ö|fr|coup dégueulasse|m}}
*nynorska: {{ö|nn|svineri|n}}
*polska: {{ö+|pl|świństwo}}
*tyska: {{ö+|de|Schweinerei|f}}
{{ö-botten}}
{{ö-topp|svingård}}
*danska: {{ö|da|svineri}}
*tyska: {{ö+|de|Schweinerei}}
{{ö-botten}}
==Danska==
===Substantiv===
{{subst|da}}
'''svineri'''
#[[#Svenska|svineri]]
4mscd0139hq3l5vvr6yr2uog7w12jyj
4157679
4157678
2026-10-25T09:25:44Z
LA2
544
4157679
wikitext
text/x-wiki
==Svenska==
===Substantiv===
{{sv-subst-t-er|et=}}
'''[[svina|svin]][[-eri|eri]]'''
#det att [[bete]] sig som ett [[svin]]
#:{{besläktade ord|[[svin]], [[svinaktig]], [[svinig]]}}
#[[hänsynslöst]] [[smuts]]a ner
#:svineriet på de offentliga toaletterna
#:{{besläktade ord|[[svina]]}}
#{{tagg|jordbruk|ålderdomligt}} [[svingård]]
#:{{jämför|[[hönseri]]}}
====Översättningar====
{{ö-topp|det att bete sig som ett svin}}
*bokmål: {{ö|no|svineri|n}}
*danska: {{ö|da|svineri}}
*franska: {{ö|fr|coup dégueulasse|m}}
*nynorska: {{ö|nn|svineri|n}}
*polska: {{ö+|pl|świństwo}}
*tyska: {{ö+|de|Schweinerei|f}}
{{ö-botten}}
{{ö-topp|svingård}}
*danska: {{ö|da|svineri}}
*tyska: {{ö+|de|Schweinerei}}
{{ö-botten}}
==Bokmål==
===Substantiv===
{{no-subst-n-2}}
'''[[svine|svin]][[-eri|eri]]''' {{n}}
#[[#Svenska|svineri]] (smutsa ner)
#:{{synonymer|[[griseri]], [[søl]]}}
==Danska==
===Substantiv===
{{da-subst-t-er}}
'''[[svine|svin]][[-eri|eri]]''' {{n}}
#[[#Svenska|svineri]] (smutsa ner)
==Nynorska==
===Substantiv===
{{nn-subst-n}}
'''[[svine|svin]][[-eri|eri]]''' {{n}}
#[[#Svenska|svineri]] (smutsa ner)
#:{{synonymer|[[griseri]], [[søl]]}}
5w7z221kt748ub7rdzx9o0cfwead6kc
Kategori:Nordkurdiska
14
628331
4157495
2983498
2026-10-24T15:51:12Z
Frodlekis
762
4157495
wikitext
text/x-wiki
{{kategorinavigering|Nordkurdiska}}
{{faktaruta språk}}
5oxmvf3u667jh93dfqcrh2ohmy5k7ym
історія
0
646514
4157635
3736531
2026-10-25T01:44:45Z
LA2
544
4157635
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
{{uk-subst|істо́рія|істо́рії
|істо́рії|істо́рій
|істо́рії|істо́ріям
|істо́рію|істо́рії
|істо́рією|істо́ріями
|істо́рії|істо́ріях
|істо́ріє|істо́рії}}
'''істо́рія''' (istoriya) {{f}}
#{{tagg|kat=vetenskaper|språk=uk}} [[historia]]
#:{{uk-besläktade-istorija}}
lynnjxx0ek3pg4uvs0900geaoacci4t
історик
0
649823
4157647
3736675
2026-10-25T01:50:11Z
LA2
544
4157647
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
{{uk-subst|істо́рик|істо́рики
|істо́рика|істо́риків
|істо́рикові, істо́рику|істо́рикам
|істо́рика|істо́риків
|істо́риком|істо́риками
|істо́рикові, істо́рику|істо́риках
|істо́рику|істо́рики}}
'''істо́рик''' {{m}}
#{{tagg|kat=historia|kat2=forskare|språk=uk}} [[historiker]]
#:{{uk-besläktade-istorija}}
tf9yrcevjw5oxowaq18x7t8dqrzaoh2
klona
0
650914
4157475
4001532
2026-10-24T14:51:51Z
Tapio Toola
59668
+tr: [[klonlamak]]; +fi: [[kloonata]] (assisterat)
4157475
wikitext
text/x-wiki
==Svenska==
===Verb===
{{sv-verb-ar|perfpart=}}
'''[[klon]][[-a|a]]'''
#{{tagg|biologi}} [[skapa]] en [[klon]]; en genetisk kopia av en annan individ
#:{{besläktade ord|[[klon]], [[kloning]]}}
====Översättningar====
{{ö-topp|skapa en klon}}
*asturiska: {{ö|ast|clonar}}
*bokmål: {{ö|no|klone}}
*engelska: {{ö+|en|clone}}
*finska: {{ö+|fi|kloonata}}
*franska: {{ö+|fr|cloner}}
*italienska: {{ö+|it|clonare}}
*katalanska: {{ö+|ca|clonar}}
*nederländska: {{ö+|nl|klonen}}, {{ö+|nl|kloneren}}
*portugisiska: {{ö+|pt|clonar}}
*spanska: {{ö+|es|clonar}}
*turkiska: {{ö+|tr|klonlamak}}
*tyska: {{ö+|de|klonen}}
{{ö-botten}}
sn4eqranojgoqdoqn4byeeruyfladei
Kategori:Hurritiska
14
652116
4157444
2976708
2026-10-24T12:51:43Z
Frodlekis
762
4157444
wikitext
text/x-wiki
{{kategorinavigering|Hurritiska}}
{{faktaruta språk}}
rge4fbspg9e3u5ue1ntw9dzapv4v0j9
Kategori:Nordfrisiska
14
657794
4157498
2995015
2026-10-24T15:53:18Z
Frodlekis
762
4157498
wikitext
text/x-wiki
{{kategorinavigering|Nordfrisiska}}
{{faktaruta språk}}
5e7xc8jhec7epx4ogiegxr5a6razx51
Kategori:Lettgalliska
14
657908
4157503
2995202
2026-10-24T15:57:37Z
Frodlekis
762
4157503
wikitext
text/x-wiki
{{kategorinavigering|Lettgalliska}}
{{faktaruta språk}}
gz00sk5gay2p3ia8d9lh19lc2p0ne4q
Kategori:Žemaitiska
14
657974
4157525
2995308
2026-10-24T16:12:36Z
Frodlekis
762
4157525
wikitext
text/x-wiki
{{kategorinavigering|Žemaitiska}}
{{faktaruta språk}}
farj96m9zibpg4bqax2uiius2969xne
Kategori:Mykensk grekiska
14
659837
4157623
2999342
2026-10-25T00:56:25Z
Frodlekis
762
4157623
wikitext
text/x-wiki
{{kategorinavigering|Mykensk grekiska}}
{{faktaruta språk}}
slaf053i6m1mu8goekc2c3ua6m9nuh9
svineriet
0
660019
4157681
2999687
2026-10-25T09:26:38Z
LA2
544
4157681
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''svineriet'''
#{{böjning|sv|subst|svineri}}
==Bokmål==
===Substantiv===
'''svineriet'''
#{{böjning|no|subst|svineri}}
==Danska==
===Substantiv===
'''svineriet'''
#{{böjning|da|subst|svineri}}
==Nynorska==
===Substantiv===
'''svineriet'''
#{{böjning|nn|subst|svineri}}
6gfzwb8yqo3jwklm79ijs0lr84tm6s0
svinerier
0
660020
4157682
2999688
2026-10-25T09:27:13Z
LA2
544
4157682
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''svinerier'''
#{{böjning|sv|subst|svineri}}
==Bokmål==
===Substantiv===
'''svinerier'''
#{{böjning|no|subst|svineri}}
==Danska==
===Substantiv===
'''svinerier'''
#{{böjning|da|subst|svineri}}
l61do0blnmrjo20bcdfny7zi8zl32op
svineris
0
660022
4157683
2999690
2026-10-25T09:27:28Z
LA2
544
4157683
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''svineris'''
#{{böjning|sv|subst|svineri}}
==Bokmål==
===Substantiv===
'''svineris'''
#{{böjning|no|subst|svineri}}
==Danska==
===Substantiv===
'''svineris'''
#{{böjning|da|subst|svineri}}
m97wxi3jn4wzxd6pv9qpmr0abjwr052
svineriets
0
660023
4157684
2999691
2026-10-25T09:27:42Z
LA2
544
4157684
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''svineriets'''
#{{böjning|sv|subst|svineri}}
==Bokmål==
===Substantiv===
'''svineriets'''
#{{böjning|no|subst|svineri}}
==Danska==
===Substantiv===
'''svineriets'''
#{{böjning|da|subst|svineri}}
r3gbsa8heh52jauiwaczl4x0ll9x64c
svineriers
0
660024
4157685
2999692
2026-10-25T09:27:54Z
LA2
544
4157685
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''svineriers'''
#{{böjning|sv|subst|svineri}}
==Bokmål==
===Substantiv===
'''svineriers'''
#{{böjning|no|subst|svineri}}
==Danska==
===Substantiv===
'''svineriers'''
#{{böjning|da|subst|svineri}}
qla0xvoc5u3xqem1vpnlwi3nj0d9q1v
Kategori:Luhya
14
705696
4157584
3139647
2026-10-25T00:01:32Z
Frodlekis
762
4157584
wikitext
text/x-wiki
{{kategorinavigering|Luhya}}
{{faktaruta språk}}
8yqbuxeugm3zado2orrc1l1dpboq80u
Kategori:Kvänska
14
759864
4157448
3270183
2026-10-24T12:56:53Z
Frodlekis
762
4157448
wikitext
text/x-wiki
{{kategorinavigering|Kvänska}}
{{faktaruta språk}}
lo3udcp0c6a9eerqnrkv9d9uez3qmzo
Kategori:Korjakiska
14
794145
4157513
3335773
2026-10-24T16:02:07Z
Frodlekis
762
4157513
wikitext
text/x-wiki
{{kategorinavigering|Korjakiska}}
{{faktaruta språk}}
1yuslv2p4pt9xziiuz9l08g9cimq8gj
Kategori:Feniciska
14
811191
4157428
3373792
2026-10-24T12:19:25Z
Frodlekis
762
4157428
wikitext
text/x-wiki
{{kategorinavigering|Feniciska}}
{{faktaruta språk}}
5y7mhu62b5zsog7kkrdqwlaczr9q32w
Kategori:Nauruanska
14
812810
4157625
3378690
2026-10-25T00:57:51Z
Frodlekis
762
4157625
wikitext
text/x-wiki
{{kategorinavigering|Nauruanska}}
{{faktaruta språk}}
ey9a8fewivnrcet1ijtbu7k7wo77sgo
Kategori:Livvi
14
819363
4157580
3399946
2026-10-24T23:53:05Z
Frodlekis
762
4157580
wikitext
text/x-wiki
{{kategorinavigering|Livvi}}
{{faktaruta språk}}
2sn1u5th3rfgui4rrinvhghktpkmpq5
Kategori:Guerreronahuatl
14
830005
4157417
3422094
2026-10-24T12:03:15Z
Frodlekis
762
4157417
wikitext
text/x-wiki
{{kategorinavigering|Guerreronahuatl}}
{{faktaruta språk}}
[[Kategori:Nahuatl]]
g4hw1akz18sa73mli47gv9il6dasv3j
Kategori:Fornfrisiska
14
834687
4157420
3434813
2026-10-24T12:07:41Z
Frodlekis
762
4157420
wikitext
text/x-wiki
{{kategorinavigering|Fornfrisiska}}
{{faktaruta språk}}
ky9sru56haxq0su4sn6sdw1p8zk4b9r
Kategori:Maranao
14
897039
4157605
3636600
2026-10-25T00:37:49Z
Frodlekis
762
4157605
wikitext
text/x-wiki
{{kategorinavigering|Maranao}}
{{faktaruta språk}}
b0ih0m8queuwqhxwx4163wt43os6tsi
Kategori:Magindanao
14
897048
4157594
3636621
2026-10-25T00:17:54Z
Frodlekis
762
4157594
wikitext
text/x-wiki
{{kategorinavigering|Magindanao}}
{{faktaruta språk}}
dl3d81f8pa9y628q0lxi6kwghss0z7w
Kategori:Mauritisk kreol
14
897526
4157608
3638215
2026-10-25T00:38:54Z
Frodlekis
762
4157608
wikitext
text/x-wiki
{{kategorinavigering|Mauritisk kreol}}
{{faktaruta språk}}
g6udbu7nj5nzy6s45lu7qforszenqel
істеричний
0
909522
4157662
3680049
2026-10-25T01:58:21Z
LA2
544
4157662
wikitext
text/x-wiki
==Ukrainska==
===Adjektiv===
{{uk-adj|істери́чн|ий}}
'''істери́чний''' (isterýčnyj)
#[[hysterisk]]
#:{{uk-besläktade-isterija}}
teud2s7pk9h54qrqxy0mccjzew5mj4k
історичний
0
909523
4157636
3680064
2026-10-25T01:45:19Z
LA2
544
4157636
wikitext
text/x-wiki
==Ukrainska==
===Adjektiv===
{{uk-adj|істори́чн|ий}}
'''істори́чний''' (istorýčnyj)
#[[historisk]]
#:{{uk-besläktade-istorija}}
1dqbdrm88vzs5eu8j4i3fq7tzf39c8k
Kategori:Hettitiska
14
940665
4157437
3837559
2026-10-24T12:41:11Z
Frodlekis
762
4157437
wikitext
text/x-wiki
{{kategorinavigering|Hettitiska}}
{{faktaruta språk}}
kakp5bpbl79gcoto5rozxxjjb0sc2xa
Kategori:Kotava
14
970766
4157518
3926604
2026-10-24T16:08:06Z
Frodlekis
762
4157518
wikitext
text/x-wiki
{{kategorinavigering|Kotava}}
{{faktaruta språk}}
iimx0jik1yehf1ancmso53fwxgz2x4y
Kategori:Kikai
14
985550
4157484
3955851
2026-10-24T14:59:01Z
Frodlekis
762
4157484
wikitext
text/x-wiki
{{kategorinavigering|Kikai}}
{{faktaruta språk}}
94ew58m67hnn1kgfnzr0qo0ddnti61j
Kategori:Miyako
14
985551
4157618
3955852
2026-10-25T00:45:28Z
Frodlekis
762
4157618
wikitext
text/x-wiki
{{kategorinavigering|Miyako}}
{{faktaruta språk}}
tclkv01lv48fbl4ad2b4ki1f6iop2n5
Kategori:Kunigami
14
985554
4157522
3955855
2026-10-24T16:09:48Z
Frodlekis
762
4157522
wikitext
text/x-wiki
{{kategorinavigering|Kunigami}}
{{faktaruta språk}}
bpd5sxeqmhjmyqow8ihynpeviv0bvx9
Kategori:Nordamami
14
985559
4157502
3955860
2026-10-24T15:56:22Z
Frodlekis
762
4157502
wikitext
text/x-wiki
{{kategorinavigering|Nordamami}}
{{faktaruta språk}}
jn9skjwa8or2unv47xpdus07myz45ah
Kategori:Etruskiska
14
992487
4157429
3969474
2026-10-24T12:20:27Z
Frodlekis
762
4157429
wikitext
text/x-wiki
{{kategorinavigering|Etruskiska}}
{{faktaruta språk}}
973rlzcjssqxgk3kszzatgbltqoiq8x
Kategori:Klassisk syriska
14
1009717
4157494
4006870
2026-10-24T15:49:29Z
Frodlekis
762
4157494
wikitext
text/x-wiki
{{kategorinavigering|Klassisk syriska}}
{{faktaruta språk}}
ch1d8s4gtxvujxltabq8li1u4tcb0fz
Kategori:Iberisk romani
14
1010788
4157446
4009564
2026-10-24T12:55:06Z
Frodlekis
762
4157446
wikitext
text/x-wiki
{{kategorinavigering|Iberisk romani}}
{{faktaruta språk}}
3ydu95tc2g61is1rvxldshxxeav79i4
Kategori:Hindko
14
1010839
4157440
4009643
2026-10-24T12:43:30Z
Frodlekis
762
4157440
wikitext
text/x-wiki
{{kategorinavigering|Hindko}}
{{faktaruta språk}}
011948ruj5gkjcjojtp99101qv38tc6
Kategori:Kituba
14
1018146
4157491
4026026
2026-10-24T15:46:13Z
Frodlekis
762
4157491
wikitext
text/x-wiki
{{kategorinavigering|Kituba}}
{{faktaruta språk}}
sirkfpdbe3vxz44sdy6ih20inf1h1nv
Modul:wikidata språk
828
1075011
4157433
4157366
2026-10-24T12:36:58Z
Frodlekis
762
4157433
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
Q17376908 = true, -- languoid
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
byq8s2gxepf8bna9vhnd3fvirm3qezl
4157441
4157433
2026-10-24T12:46:36Z
Frodlekis
762
4157441
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
Q16173659 = true, -- language group
Q215844 = true, -- dialect continuum
Q11820611 = true, -- language subfamily
Q17376908 = true, -- languoid
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
qx3klfkcbvqkmulkqnb01k93xn3fvf8
4157633
4157441
2026-10-25T01:42:10Z
Taylor 49
27466
-- called from [[Mall:faktaruta språk]] -- depends on [[Modul:Wikidata]]
4157633
Scribunto
text/plain
-- called from [[Mall:faktaruta språk]]
-- depends on [[Modul:Wikidata]]
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
Q16173659 = true, -- language group
Q215844 = true, -- dialect continuum
Q11820611 = true, -- language subfamily
Q17376908 = true, -- languoid
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
kswjagv59jq9auvjzkxg6df6clqa57w
4157645
4157633
2026-10-25T01:47:27Z
Taylor 49
27466
alla moduler börjar med gemen
4157645
Scribunto
text/plain
-- called from [[Mall:faktaruta språk]]
-- depends on [[Modul:wikidata]]
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
Q16173659 = true, -- language group
Q215844 = true, -- dialect continuum
Q11820611 = true, -- language subfamily
Q17376908 = true, -- languoid
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
380rawasc6tw59v68m6yghvaekbhrnb
Mall:faktaruta språk
10
1075012
4157631
4157397
2026-10-25T01:39:08Z
Taylor 49
27466
Q
4157631
wikitext
text/x-wiki
<includeonly>{{#invoke:wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
== Syfte ==
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.
== Användning ==
Alla underkategorier i [[:Kategori:Sorterat efter språk]].
==Parametrar==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas då hämtas egenskap P301 ("category's main topic") från wikidataobjektet som är kopplat till sidan.
==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 och självtest ==
{{hr3}}
<pre>{{faktaruta språk|Q9027}}</pre>
{{faktaruta språk|Q9027}}
{{hr3}}
== Behövda resurser ==
* [[Modul:wikidata språk]]
* [[Modul:Wikidata]]
* WikiData
</noinclude>
qt5vxvl9abmkyy06euhk2dhjdhil38z
4157632
4157631
2026-10-25T01:40:14Z
Taylor 49
27466
+katt
4157632
wikitext
text/x-wiki
<includeonly>{{#invoke:wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
== Syfte ==
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.
== Användning ==
Alla underkategorier i [[:Kategori:Sorterat efter språk]].
==Parametrar==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas då hämtas egenskap P301 ("category's main topic") från wikidataobjektet som är kopplat till sidan.
==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 och självtest ==
{{hr3}}
<pre>{{faktaruta språk|Q9027}}</pre>
{{faktaruta språk|Q9027}}
{{hr3}}
== Behövda resurser ==
* [[Modul:wikidata språk]]
* [[Modul:Wikidata]]
* WikiData
[[Kategori:Wiktionary:Mallar]]
</noinclude>
8diptx0oqz42frxm4ht63rboaef7av9
4157658
4157632
2026-10-25T01:54:08Z
Taylor 49
27466
== Behövda resurser == * [[Modul:wikidata språk]] * [[Modul:wikidata]] * WikiData [[Kategori:Wiktionary:Mallar]] </noinclude>
4157658
wikitext
text/x-wiki
<includeonly>{{#invoke:wikidata språk|show|{{{1|}}}}}</includeonly><noinclude>
== Syfte ==
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.
== Användning ==
Alla underkategorier i [[:Kategori:Sorterat efter språk]].
==Parametrar==
* '''1''' – Wikidataobjektets Q-nummer. Om parametern utelämnas då hämtas egenskap P301 ("category's main topic") från wikidataobjektet som är kopplat till sidan.
==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 och självtest ==
{{hr3}}
<pre>{{faktaruta språk|Q9027}}</pre>
{{faktaruta språk|Q9027}}
{{hr3}}
== Behövda resurser ==
* [[Modul:wikidata språk]]
* [[Modul:wikidata]]
* WikiData
[[Kategori:Wiktionary:Mallar]]
</noinclude>
6b3i0ik7ymr6vifmlx8htg53qq4iesb
Modul:wikidata
828
1075013
4157646
4157202
2026-10-25T01:47:49Z
Taylor 49
27466
Taylor 49 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
4157657
4157646
2026-10-25T01:52:32Z
Taylor 49
27466
local i18n = { -- internationalisation NOT active "Module:Wikidata/i18n"
4157657
Scribunto
text/plain
-- Svensk port av den katalanska Modul:Wikidata, version 20220818.
local p = {}
-- Initiering av variabler --------------------
local i18n = { -- internationalisation NOT active "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
5elt379j6xnwinmu40j0mn5uqj3or8u
4157660
4157657
2026-10-25T01:57:22Z
Taylor 49
27466
local cases = {} -- functions for local grammatical cases NOT active "Module:Wikidata/i18n"
4157660
Scribunto
text/plain
-- Svensk port av den katalanska Modul:Wikidata, version 20220818.
local p = {}
-- Initiering av variabler --------------------
local i18n = { -- internationalisation NOT active "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 NOT active "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
p09n3qpyx7sv1qj4zg7oj86yplu7vsq
Mall:uk-besläktade-istorija
10
1075021
4157634
2026-10-25T01:43:54Z
LA2
544
Ny sida
4157634
wikitext
text/x-wiki
{{besläktade-xx|uk|istorija|істори́зм, істо́рик, істори́чний, істори́чність, істо́рійка, істо́рія}}<noinclude>
[[Kategori:Wiktionary:Mallar för ukrainska besläktade ord]]</noinclude>
98z85dvjsha8m4x54l51irfmy0brmar
історії
0
1075022
4157637
2026-10-25T01:45:44Z
LA2
544
böjningsform av [[історія]]
4157637
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рії'''
#{{böjning|uk|subst|історія}}
84awxk91ncutqrvyvdxmuo5eecremc2
історій
0
1075023
4157638
2026-10-25T01:45:46Z
LA2
544
böjningsform av [[історія]]
4157638
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рій'''
#{{böjning|uk|subst|історія}}
6vy12uqgxbplzlia1lk5v7hicgdjwdi
історіям
0
1075024
4157639
2026-10-25T01:45:49Z
LA2
544
böjningsform av [[історія]]
4157639
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́ріям'''
#{{böjning|uk|subst|історія}}
qekviytx5ntguthbzc2wm577qplvllo
історію
0
1075025
4157640
2026-10-25T01:45:51Z
LA2
544
böjningsform av [[історія]]
4157640
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рію'''
#{{böjning|uk|subst|історія}}
fof63sejei6r79lq63e4fbsajie8mof
історіями
0
1075026
4157641
2026-10-25T01:45:53Z
LA2
544
böjningsform av [[історія]]
4157641
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́ріями'''
#{{böjning|uk|subst|історія}}
kl8rygnoop79fh2802g05xhq009xzkl
історією
0
1075027
4157642
2026-10-25T01:45:55Z
LA2
544
böjningsform av [[історія]]
4157642
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рією'''
#{{böjning|uk|subst|історія}}
k8rpaxqkdcd9culuz4s0looz13fzevj
історіях
0
1075028
4157643
2026-10-25T01:45:57Z
LA2
544
böjningsform av [[історія]]
4157643
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́ріях'''
#{{böjning|uk|subst|історія}}
qfibz16dz42wqxmrcd6a9a1bawzh5zi
історіє
0
1075029
4157644
2026-10-25T01:46:00Z
LA2
544
böjningsform av [[історія]]
4157644
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́ріє'''
#{{böjning|uk|subst|історія}}
400cfurf2qbqiz1f13a7aik9r8jsgv0
історики
0
1075030
4157648
2026-10-25T01:50:31Z
LA2
544
böjningsform av [[історик]]
4157648
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рики'''
#{{böjning|uk|subst|історик}}
rlb46rip0aoqarddqfcwrco0bu51syg
історика
0
1075031
4157649
2026-10-25T01:50:33Z
LA2
544
böjningsform av [[історик]]
4157649
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рика'''
#{{böjning|uk|subst|історик}}
7xruhhb6slyi5w04omw2iek2qk1yl7e
істориків
0
1075032
4157650
2026-10-25T01:50:36Z
LA2
544
böjningsform av [[історик]]
4157650
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́риків'''
#{{böjning|uk|subst|історик}}
lwvhpk3l9tjnvjlikbjlm0zz5se3866
історикові
0
1075033
4157651
2026-10-25T01:50:38Z
LA2
544
böjningsform av [[історик]]
4157651
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рикові'''
#{{böjning|uk|subst|історик}}
om9twlrf4vrf06lmcbf5nov8hj2fq6y
історику
0
1075034
4157652
2026-10-25T01:50:40Z
LA2
544
böjningsform av [[історик]]
4157652
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рику'''
#{{böjning|uk|subst|історик}}
k8zfwh6hfz3x99wgvrumm4fh5melb2c
історикам
0
1075035
4157653
2026-10-25T01:50:42Z
LA2
544
böjningsform av [[історик]]
4157653
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́рикам'''
#{{böjning|uk|subst|історик}}
evnsxf9ojlw8s859pjo2ra6pp205y82
істориком
0
1075036
4157654
2026-10-25T01:50:45Z
LA2
544
böjningsform av [[історик]]
4157654
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́риком'''
#{{böjning|uk|subst|історик}}
ex6ogbzk2x6gtqu6kf3qbbj4m1euqzq
істориками
0
1075037
4157655
2026-10-25T01:50:47Z
LA2
544
böjningsform av [[історик]]
4157655
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́риками'''
#{{böjning|uk|subst|історик}}
mv1ygx3tmoh6xe0nyu1vltzm9m2g0q7
істориках
0
1075038
4157656
2026-10-25T01:50:49Z
LA2
544
böjningsform av [[історик]]
4157656
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істо́риках'''
#{{böjning|uk|subst|історик}}
qbkxh8sm0jhnu83wgw61prup5rzydvh
Mall:uk-besläktade-isterija
10
1075039
4157659
2026-10-25T01:57:14Z
LA2
544
Ny sida
4157659
wikitext
text/x-wiki
{{besläktade-xx|uk|isterija|істе́рик, істе́рика, істери́чка, істери́чний, істери́чність, істери́чно, істері́я}}<noinclude>
[[Kategori:Wiktionary:Mallar för ukrainska besläktade ord]]</noinclude>
k4kc91npjq5iqi6d9pmsocm0b4gg8mc
істерія
0
1075040
4157661
2026-10-25T01:57:51Z
LA2
544
nytt uppslag (ukrainska)
4157661
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
{{uk-subst|істері́я|-
|істері́ї|-
|істері́ї|-
|істері́ю|-
|істері́єю|-
|істері́ї|-
|істері́є|-}}
'''істері́я''' {{f}}
#[[hysteri]]
#:{{uk-besläktade-isterija}}
#:{{jämför|[[історія]]}}
bjubcevizm5b73d3xs14qls8v2yg166
істерії
0
1075041
4157663
2026-10-25T01:59:13Z
LA2
544
böjningsform av [[істерія]]
4157663
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істері́ї'''
#{{böjning|uk|subst|істерія}}
trwvyl19vvrux02ccjo36ruydd7hspb
істерію
0
1075042
4157664
2026-10-25T01:59:17Z
LA2
544
böjningsform av [[істерія]]
4157664
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істері́ю'''
#{{böjning|uk|subst|істерія}}
eozm303g8zy8zudfpz3skusb2jwj7un
істерією
0
1075043
4157665
2026-10-25T01:59:19Z
LA2
544
böjningsform av [[істерія]]
4157665
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істері́єю'''
#{{böjning|uk|subst|істерія}}
ld3s15e6k2brxc79w176wlufyfxqhll
істеріє
0
1075044
4157666
2026-10-25T01:59:22Z
LA2
544
böjningsform av [[істерія]]
4157666
wikitext
text/x-wiki
==Ukrainska==
===Substantiv===
'''істері́є'''
#{{böjning|uk|subst|істерія}}
4f83yh3068lsxbemh54eiscr4o0j9mq
Diskussion:madman
1
1075045
4157668
2026-10-25T07:06:48Z
R. Henrik Nilsson
44622
/* "manmen" > "madmen" ? */ nytt avsnitt
4157668
wikitext
text/x-wiki
== "manmen" > "madmen" ? ==
Det ser lite skumt ut att detta ord blir "manmen" i plural. Jag skulle gissat på "madmen", vilket mycket riktigt är vad som anges på engelska Wiktionary. [[Användare:R. Henrik Nilsson|R. Henrik Nilsson]] ([[Användardiskussion:R. Henrik Nilsson|diskussion]]) 25 oktober 2026 kl. 08.06 (CET)
84ejwv5ej56olb0wm1alzstzyg0d91k
hönseri
0
1075046
4157669
2026-10-25T09:18:49Z
LA2
544
nytt uppslag (svenska)
4157669
wikitext
text/x-wiki
{{wikipedia}}
==Svenska==
===Substantiv===
{{sv-subst-t-er}}
'''[[höns]][[-eri|eri]]''' {{n}}
#{{tagg|jordbruk}} [[anläggning]] för [[hönsuppfödning]]
#:{{sammansättningar|{{länk|sv|avelshönseri, kontrollhönseri, stamhönseri}}}}
#:{{jämför|[[kläckeri]], [[svineri]]}}
7tcicwkp0cqayo20uvc76obhhi4orye
hönseriet
0
1075047
4157670
2026-10-25T09:19:02Z
LA2
544
böjningsform av [[hönseri]]
4157670
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''hönseriet'''
#{{böjning|sv|subst|hönseri}}
m2r51s7fulvjr5i7vm086b8xp61q7rq
hönserier
0
1075048
4157671
2026-10-25T09:19:05Z
LA2
544
böjningsform av [[hönseri]]
4157671
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''hönserier'''
#{{böjning|sv|subst|hönseri}}
gphyl268wb69utgzk4hiv2twuy30jg7
hönserierna
0
1075049
4157672
2026-10-25T09:19:07Z
LA2
544
böjningsform av [[hönseri]]
4157672
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''hönserierna'''
#{{böjning|sv|subst|hönseri}}
ikj7ouwtgff5tbzw34u7klp1zim3mct
hönseris
0
1075050
4157673
2026-10-25T09:19:10Z
LA2
544
böjningsform av [[hönseri]]
4157673
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''hönseris'''
#{{böjning|sv|subst|hönseri}}
478svdo2nfflzsf7ifhp64fgeeowl8d
hönseriets
0
1075051
4157674
2026-10-25T09:19:12Z
LA2
544
böjningsform av [[hönseri]]
4157674
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''hönseriets'''
#{{böjning|sv|subst|hönseri}}
3o7nu802ns4xo4k360vfoj53a6oxdqh
hönseriers
0
1075052
4157675
2026-10-25T09:19:15Z
LA2
544
böjningsform av [[hönseri]]
4157675
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''hönseriers'''
#{{böjning|sv|subst|hönseri}}
8145k0l32rgsy5t2bnlbowv6hdvvgi5
hönseriernas
0
1075053
4157676
2026-10-25T09:19:18Z
LA2
544
böjningsform av [[hönseri]]
4157676
wikitext
text/x-wiki
==Svenska==
===Substantiv===
'''hönseriernas'''
#{{böjning|sv|subst|hönseri}}
hwe306es3dx7sfq0x404vlo61nz7co9
svineria
0
1075054
4157680
2026-10-25T09:25:54Z
LA2
544
böjningsform av [[svineri]]
4157680
wikitext
text/x-wiki
==Bokmål==
===Substantiv===
'''svineria'''
#{{böjning|no|subst|svineri}}
==Nynorska==
===Substantiv===
'''svineria'''
#{{böjning|nn|subst|svineri}}
511416o0w5lo0i1ckhwvg782gdh91tm
svineriene
0
1075055
4157686
2026-10-25T09:28:12Z
LA2
544
böjningsform av [[svineri]]
4157686
wikitext
text/x-wiki
==Bokmål==
===Substantiv===
'''svineriene'''
#{{böjning|no|subst|svineri}}
jjckpxzwj8o6hv6c3l5ays0ukuz9nli
svinerienes
0
1075056
4157687
2026-10-25T09:28:14Z
LA2
544
böjningsform av [[svineri]]
4157687
wikitext
text/x-wiki
==Bokmål==
===Substantiv===
'''svinerienes'''
#{{böjning|no|subst|svineri}}
8d2n1ffwwgk1br18hkdytgxj12oeakh
svinerias
0
1075057
4157688
2026-10-25T09:28:16Z
LA2
544
böjningsform av [[svineri]]
4157688
wikitext
text/x-wiki
==Bokmål==
===Substantiv===
'''svinerias'''
#{{böjning|no|subst|svineri}}
g4ld3csl0akl50ck5bqpmg5g3ug4mx0
svinerierne
0
1075058
4157689
2026-10-25T09:28:19Z
LA2
544
böjningsform av [[svineri]]
4157689
wikitext
text/x-wiki
==Danska==
===Substantiv===
'''svinerierne'''
#{{böjning|da|subst|svineri}}
9bz8dqggik8aleppkjqbmwszuw1lfwu
svineriernes
0
1075059
4157690
2026-10-25T09:28:21Z
LA2
544
böjningsform av [[svineri]]
4157690
wikitext
text/x-wiki
==Danska==
===Substantiv===
'''svineriernes'''
#{{böjning|da|subst|svineri}}
q3jfnw3rsap65euoty90moxk1msz7u5