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&section=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 &quot;h3&quot; missing for entry_type = &quot;translation&quot;.</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, '&', '&amp;') label = mw.ustring.gsub(label, '<', '&lt;') label = mw.ustring.gsub(label, '>', '&gt;') label = mw.ustring.gsub(label, '%[', '&#91;') label = mw.ustring.gsub(label, '%]', '&#93;') 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 .. '&nbsp;</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, '&', '&amp;') label = mw.ustring.gsub(label, '<', '&lt;') label = mw.ustring.gsub(label, '>', '&gt;') label = mw.ustring.gsub(label, '%[', '&#91;') label = mw.ustring.gsub(label, '%]', '&#93;') 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 .. '&nbsp;</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, '&', '&amp;') label = mw.ustring.gsub(label, '<', '&lt;') label = mw.ustring.gsub(label, '>', '&gt;') label = mw.ustring.gsub(label, '%[', '&#91;') label = mw.ustring.gsub(label, '%]', '&#93;') 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 .. '&nbsp;</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, '&', '&amp;') label = mw.ustring.gsub(label, '<', '&lt;') label = mw.ustring.gsub(label, '>', '&gt;') label = mw.ustring.gsub(label, '%[', '&#91;') label = mw.ustring.gsub(label, '%]', '&#93;') 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 .. '&nbsp;</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 .. '&nbsp;' .. 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 .. '&nbsp;' .. 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 .. '&nbsp;' .. 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